Diff between 6eb6dd6555905afa500e990844197f7accfa6f0b and 8dc8425d82ac97f195c95445844b987e6e96d42c

Changed Files

File Additions Deletions Status
tools/parser/lmp.c +145 -3 modified

Full Patch

diff --git a/tools/parser/lmp.c b/tools/parser/lmp.c
index 6e73e91..514d282 100644
--- a/tools/parser/lmp.c
+++ b/tools/parser/lmp.c
@@ -369,6 +369,14 @@ static inline void not_accepted_dump(int level, struct frame *frm)
 	printf("error code 0x%2.2x\n", error);
 }
 
+static inline void clkoffset_dump(int level, struct frame *frm)
+{
+	uint16_t clkoffset = LMP_U16(frm);
+
+	p_indent(level, frm);
+	printf("clock offset 0x%4.4x\n", clkoffset);
+}
+
 static inline void detach_dump(int level, struct frame *frm)
 {
 	uint8_t error = LMP_U8(frm);
@@ -422,6 +430,66 @@ static inline void auth_resp_dump(int level, struct frame *frm)
 	printf("\n");
 }
 
+static inline void encryption_mode_req_dump(int level, struct frame *frm)
+{
+	uint8_t mode = LMP_U8(frm);
+
+	p_indent(level, frm);
+	printf("encryption mode %d\n", mode);
+}
+
+static inline void encryption_key_size_req_dump(int level, struct frame *frm)
+{
+	uint8_t keysize = LMP_U8(frm);
+
+	p_indent(level, frm);
+	printf("key size %d\n", keysize);
+}
+
+static inline void switch_req_dump(int level, struct frame *frm)
+{
+	uint32_t instant = LMP_U32(frm);
+
+	p_indent(level, frm);
+	printf("switch instant 0x%04x\n", instant);
+}
+
+static inline void hold_dump(int level, struct frame *frm)
+{
+	uint16_t time = LMP_U16(frm);
+	uint32_t instant = LMP_U32(frm);
+
+	p_indent(level, frm);
+	printf("hold time 0x%4.4x\n", time);
+
+	p_indent(level, frm);
+	printf("hold instant 0x%04x\n", instant);
+}
+
+static inline void sniff_req_dump(int level, struct frame *frm)
+{
+	uint8_t flags = LMP_U8(frm);
+	uint16_t dsniff = LMP_U16(frm);
+	uint16_t tsniff = LMP_U16(frm);
+	uint16_t attempt = LMP_U16(frm);
+	uint16_t timeout = LMP_U16(frm);
+
+	p_indent(level, frm);
+	printf("timing control flags 0x%2.2x\n", flags);
+
+	p_indent(level, frm);
+	printf("D_sniff %d\n", dsniff);
+
+	p_indent(level, frm);
+	printf("T_sniff %d\n", tsniff);
+
+	p_indent(level, frm);
+	printf("sniff attempt %d\n", attempt);
+
+	p_indent(level, frm);
+	printf("sniff timeout %d\n", timeout);
+}
+
 static inline void power_req_dump(int level, struct frame *frm)
 {
 	uint8_t val = LMP_U8(frm);
@@ -591,6 +659,18 @@ static inline void features_ext_dump(int level, struct frame *frm)
 	printf("\n");
 }
 
+static inline void quality_of_service_dump(int level, struct frame *frm)
+{
+	uint16_t interval = LMP_U16(frm);
+	uint8_t nbc = LMP_U8(frm);
+
+	p_indent(level, frm);
+	printf("poll interval %d\n", interval);
+
+	p_indent(level, frm);
+	printf("N_BC %d\n", nbc);
+}
+
 static inline void max_slots_dump(int level, struct frame *frm)
 {
 	uint8_t slots = LMP_U8(frm);
@@ -611,6 +691,20 @@ static inline void timing_accuracy_dump(int level, struct frame *frm)
 	printf("jitter %d\n", jitter);
 }
 
+static inline void slot_offset_dump(int level, struct frame *frm)
+{
+	uint16_t offset = LMP_U16(frm);
+	char addr[18];
+
+	ba2str((bdaddr_t *) frm->ptr, addr);
+
+	p_indent(level, frm);
+	printf("slot offset %d\n", offset);
+
+	p_indent(level, frm);
+	printf("BD_ADDR %s\n", addr);
+}
+
 static inline void page_mode_dump(int level, struct frame *frm)
 {
 	uint8_t scheme = LMP_U8(frm);
@@ -623,6 +717,22 @@ static inline void page_mode_dump(int level, struct frame *frm)
 	printf("page scheme settings %d\n", settings);
 }
 
+static inline void supervision_timeout_dump(int level, struct frame *frm)
+{
+	uint16_t timeout = LMP_U16(frm);
+
+	p_indent(level, frm);
+	printf("supervision timeout %d\n", timeout);
+}
+
+static inline void encryption_key_size_mask_res(int level, struct frame *frm)
+{
+	uint16_t mask = LMP_U16(frm);
+
+	p_indent(level, frm);
+	printf("key size mask 0x%4.4x\n", mask);
+}
+
 static inline void packet_type_table_dump(int level, struct frame *frm)
 {
 	uint8_t type = LMP_U8(frm);
@@ -719,6 +829,9 @@ void lmp_dump(int level, struct frame *frm)
 	case 4:
 		not_accepted_dump(level + 1, frm);
 		return;
+	case 6:
+		clkoffset_dump(level + 1, frm);
+		return;
 	case 7:
 		detach_dump(level + 1, frm);
 		return;
@@ -746,6 +859,22 @@ void lmp_dump(int level, struct frame *frm)
 	case 14:
 		key_dump(level + 1, frm);
 		return;
+	case 15:
+		encryption_mode_req_dump(level + 1, frm);
+		return;
+	case 16:
+		encryption_key_size_req_dump(level + 1, frm);
+		return;
+	case 19:
+		switch_req_dump(level + 1, frm);
+		return;
+	case 20:
+	case 21:
+		hold_dump(level + 1, frm);
+		return;
+	case 23:
+		sniff_req_dump(level + 1, frm);
+		return;
 	case 31:
 	case 32:
 		power_req_dump(level + 1, frm);
@@ -761,6 +890,10 @@ void lmp_dump(int level, struct frame *frm)
 	case 40:
 		features_dump(level + 1, frm);
 		return;
+	case 41:
+	case 42:
+		quality_of_service_dump(level + 1, frm);
+		return;
 	case 45:
 	case 46:
 		max_slots_dump(level + 1, frm);
@@ -768,10 +901,22 @@ void lmp_dump(int level, struct frame *frm)
 	case 48:
 		timing_accuracy_dump(level + 1, frm);
 		return;
+	case 52:
+		slot_offset_dump(level + 1, frm);
+		return;
 	case 53:
 	case 54:
 		page_mode_dump(level + 1, frm);
 		return;
+	case 55:
+		supervision_timeout_dump(level + 1, frm);
+		return;
+	case 59:
+		encryption_key_size_mask_res(level + 1, frm);
+		return;
+	case 60:
+		set_afh_dump(level + 1, frm);
+		return;
 	case 5:
 	case 18:
 	case 24:
@@ -785,9 +930,6 @@ void lmp_dump(int level, struct frame *frm)
 	case 56:
 	case 58:
 		return;
-	case 60:
-		set_afh_dump(level + 1, frm);
-		return;
 	case 127 + (1 << 7):
 		accepted_ext_dump(level + 1, frm);
 		return;