Diff between 87303e70fe7ff87dc91ce2e1e80a23b83fe3e4f9 and 3f3024d24a4abdd3e1f63587d5233cfde2d59064

Changed Files

File Additions Deletions Status
tools/parser/avdtp.c +29 -0 modified

Full Patch

diff --git a/tools/parser/avdtp.c b/tools/parser/avdtp.c
index 22c128a..7c134bb 100644
--- a/tools/parser/avdtp.c
+++ b/tools/parser/avdtp.c
@@ -61,6 +61,10 @@ static char *si2str(uint8_t si)
 		return "Abort";
 	case 0x0b:
 		return "Security";
+	case 0x0c:
+		return "All Capabilities";
+	case 0x0d:
+		return "Delay Report";
 	default:
 		return "Unknown";
 	}
@@ -166,6 +170,8 @@ static char *cat2str(uint8_t cat)
 		return "Multiplexing";
 	case 7:
 		return "Media Codec";
+	case 8:
+		return "Delay Reporting";
 	default:
 		return "Reserved";
 	}
@@ -420,6 +426,25 @@ static inline void security(int level, uint8_t hdr, struct frame *frm)
 	}
 }
 
+static inline void delay_report(int level, uint8_t hdr, struct frame *frm)
+{
+	uint8_t seid;
+	uint16_t delay;
+
+	switch (hdr & 0x03) {
+	case 0x00:
+		p_indent(level, frm);
+		seid = get_u8(frm);
+		delay = get_u16(frm);
+		printf("ACP SEID %d delay %u.%ums\n", seid >> 2,
+						delay / 10, delay % 10);
+		break;
+	case 0x03:
+		errorcode(level, frm);
+		break;
+	}
+}
+
 void avdtp_dump(int level, struct frame *frm)
 {
 	uint8_t hdr, sid, nsp, type;
@@ -442,6 +467,7 @@ void avdtp_dump(int level, struct frame *frm)
 			discover(level + 1, hdr, frm);
 			break;
 		case 0x02:
+		case 0x0c:
 			get_capabilities(level + 1, hdr, frm);
 			break;
 		case 0x03:
@@ -471,6 +497,9 @@ void avdtp_dump(int level, struct frame *frm)
 		case 0x0b:
 			security(level + 1, hdr, frm);
 			break;
+		case 0x0d:
+			delay_report(level + 1, hdr, frm);
+			break;
 		}
 
 		break;