Add decoding support for extended inquiry commands and events
diff --git a/parser/hci.c b/parser/hci.c
index 80c12a0..037b8a2 100644
--- a/parser/hci.c
+++ b/parser/hci.c
@@ -94,9 +94,11 @@
"Unknown",
"Unknown",
"Synchronous Connect Complete",
- "Synchronous Connect Changed"
+ "Synchronous Connect Changed",
+ "Unknown",
+ "Extended Inquiry Result",
};
-#define EVENT_NUM 43
+#define EVENT_NUM 45
static char *cmd_linkctl_str[] = {
"Unknown",
@@ -141,7 +143,7 @@
"Unknown",
"Setup Synchronous Connection",
"Accept Synchronous Connection",
- "Reject Synchronous Connection"
+ "Reject Synchronous Connection",
};
#define CMD_LINKCTL_NUM 42
@@ -162,7 +164,7 @@
"Write Link Policy Settings",
"Read Default Link Policy Settings",
"Write Default Link Policy Settings",
- "Flow Specification"
+ "Flow Specification",
};
#define CMD_LINKPOL_NUM 16
@@ -240,9 +242,12 @@
"Read Page Scan Type",
"Write Page Scan Type",
"Read AFH Channel Assessment Mode",
- "Write AFH Channel Assessment Mode"
+ "Write AFH Channel Assessment Mode",
+ "Unknown",
+ "Read Extended Inquiry Response",
+ "Write Extended Inquiry Response",
};
-#define CMD_HOSTCTL_NUM 73
+#define CMD_HOSTCTL_NUM 76
static char *cmd_info_str[] = {
"Unknown",
@@ -254,7 +259,7 @@
"Unknown",
"Read Country Code",
"Unknown",
- "Read BD ADDR"
+ "Read BD ADDR",
};
#define CMD_INFO_NUM 9
@@ -266,7 +271,7 @@
"Unknown",
"Read RSSI",
"Read AFH Channel Map",
- "Read Clock"
+ "Read Clock",
};
#define CMD_STATUS_NUM 7
@@ -324,7 +329,7 @@
"Role Switch Pending",
"Reserved",
"Reserved Slot Violation",
- "Role Switch Failed"
+ "Role Switch Failed",
};
#define ERROR_CODE_NUM 53
@@ -844,6 +849,14 @@
btohs(cp->handle), btohs(cp->link_sup_to));
}
+static inline void write_ext_inquiry_response_dump(int level, struct frame *frm)
+{
+ write_ext_inquiry_response_cp *cp = frm->ptr;
+
+ p_indent(level, frm);
+ printf("fec 0x%2.2x\n", cp->fec);
+}
+
static inline void request_transmit_power_level_dump(int level, struct frame *frm)
{
read_transmit_power_level_cp *cp = frm->ptr;
@@ -1048,6 +1061,9 @@
case OCF_WRITE_LINK_SUPERVISION_TIMEOUT:
write_link_supervision_timeout_dump(level + 1, frm);
return;
+ case OCF_WRITE_EXT_INQUIRY_RESPONSE:
+ write_ext_inquiry_response_dump(level + 1, frm);
+ return;
}
break;
@@ -1358,6 +1374,19 @@
}
}
+static inline void read_ext_inquiry_response_dump(int level, struct frame *frm)
+{
+ read_ext_inquiry_response_rp *rp = frm->ptr;
+
+ p_indent(level, frm);
+ printf("status 0x%2.2x fec 0x%2.2x\n", rp->status, rp->fec);
+
+ if (rp->status > 0) {
+ p_indent(level, frm);
+ printf("Error: %s\n", status2str(rp->status));
+ }
+}
+
static inline void read_local_version_dump(int level, struct frame *frm)
{
read_local_version_rp *rp = frm->ptr;
@@ -1635,6 +1664,9 @@
case OCF_READ_TRANSMIT_POWER_LEVEL:
read_transmit_power_level_dump(level, frm);
return;
+ case OCF_READ_EXT_INQUIRY_RESPONSE:
+ read_ext_inquiry_response_dump(level, frm);
+ return;
case OCF_FLUSH:
case OCF_WRITE_LINK_SUPERVISION_TIMEOUT:
generic_response_dump(level, frm);
@@ -1659,6 +1691,7 @@
case OCF_WRITE_INQUIRY_MODE:
case OCF_WRITE_AFH_MODE:
case OCF_SET_AFH_CLASSIFICATION:
+ case OCF_WRITE_EXT_INQUIRY_RESPONSE:
status_response_dump(level, frm);
return;
}