aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBalint Reczey <balint@balintreczey.hu>2016-06-20 23:18:46 +0200
committerBalint Reczey <balint@balintreczey.hu>2016-07-21 11:30:54 +0000
commit1e19f55f0c44b850bc6304be28d5b272a3553204 (patch)
treebe2535bf92ba8ab5da53cadfb3be3c9c8374ae61
parentd2727ec8a2bc0524e6e1ea5a1992bed153b1488c (diff)
Constify a few value_strings which were generated at run-time
Change-Id: Idc479a89a34fd21b743faee07020be284f828e2c Reviewed-on: https://code.wireshark.org/review/16298 Petri-Dish: Balint Reczey <balint@balintreczey.hu> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Balint Reczey <balint@balintreczey.hu>
-rw-r--r--epan/dissectors/packet-bthci_cmd.c578
-rw-r--r--epan/dissectors/packet-bthci_vendor.c87
2 files changed, 327 insertions, 338 deletions
diff --git a/epan/dissectors/packet-bthci_cmd.c b/epan/dissectors/packet-bthci_cmd.c
index f17167ccc5..8105c10009 100644
--- a/epan/dissectors/packet-bthci_cmd.c
+++ b/epan/dissectors/packet-bthci_cmd.c
@@ -602,301 +602,334 @@ static const value_string bthci_cmd_ogf_vals[] = {
};
value_string_ext bthci_cmd_ogf_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ogf_vals);
+# define LINK_CONTROL_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Inquiry" }, \
+ { (base) | 0x002, "Inquiry Cancel" }, \
+ { (base) | 0x003, "Periodic Inquiry Mode" }, \
+ { (base) | 0x004, "Exit Periodic Inquiry Mode" }, \
+ { (base) | 0x005, "Create Connection" }, \
+ { (base) | 0x006, "Disconnect" }, \
+ { (base) | 0x007, "Add SCO Connection" }, \
+ { (base) | 0x008, "Create Connection Cancel" }, \
+ { (base) | 0x009, "Accept Connection Request" }, \
+ { (base) | 0x00A, "Reject Connection Request" }, \
+ { (base) | 0x00B, "Link Key Request Reply" }, \
+ { (base) | 0x00C, "Link Key Request Negative Reply" }, \
+ { (base) | 0x00D, "PIN Code Request Reply" }, \
+ { (base) | 0x00E, "PIN Code Request Negative Reply" }, \
+ { (base) | 0x00F, "Change Connection Packet Type" }, \
+ { (base) | 0x011, "Authentication Requested" }, \
+ { (base) | 0x013, "Set Connection Encryption" }, \
+ { (base) | 0x015, "Change Connection Link Key" }, \
+ { (base) | 0x017, "Master Link Key" }, \
+ { (base) | 0x019, "Remote Name Request" }, \
+ { (base) | 0x01A, "Remote Name Request Cancel" }, \
+ { (base) | 0x01B, "Read Remote Supported Features" }, \
+ { (base) | 0x01C, "Read Remote Extended Features" }, \
+ { (base) | 0x01D, "Read Remote Version Information" }, \
+ { (base) | 0x01F, "Read Clock offset" }, \
+ { (base) | 0x020, "Read LMP Handle" }, \
+ { (base) | 0x028, "Setup Synchronous Connection" }, \
+ { (base) | 0x029, "Accept Synchronous Connection Request" }, \
+ { (base) | 0x02A, "Reject Synchronous Connection Request" }, \
+ { (base) | 0x02B, "IO Capability Request Reply" }, \
+ { (base) | 0x02C, "User Confirmation Request Reply" }, \
+ { (base) | 0x02D, "User Confirmation Request Negative Reply" }, \
+ { (base) | 0x02E, "User Passkey Request Reply" }, \
+ { (base) | 0x02F, "User Passkey Request Negative Reply" }, \
+ { (base) | 0x030, "Remote OOB Data Request Reply" }, \
+ { (base) | 0x033, "Remote OOB Data Request Negative Reply" }, \
+ { (base) | 0x034, "IO Capability Request Negative Reply" }, \
+ { (base) | 0x035, "Create Physical Link" }, \
+ { (base) | 0x036, "Accept Physical Link" }, \
+ { (base) | 0x037, "Disconnect Physical Link" }, \
+ { (base) | 0x038, "Create Logical Link" }, \
+ { (base) | 0x039, "Accept Logical Link" }, \
+ { (base) | 0x03A, "Disconnect Logical Link" }, \
+ { (base) | 0x03B, "Logical Link Cancel" }, \
+ { (base) | 0x03C, "Flow Spec Modify" }, \
+/* Bluetooth Core Specification Addendum 2 */ \
+ { (base) | 0x03D, "Enhanced Setup Synchronous Connection" }, \
+ { (base) | 0x03E, "Enhanced Accept Synchronous Connection Request" }, \
+/* Bluetooth Core Specification Addendum 4 */ \
+ { (base) | 0x03F, "Truncated Page" }, \
+ { (base) | 0x040, "Truncated Page Cancel" }, \
+ { (base) | 0x041, "Set Connectionless Slave Broadcast" }, \
+ { (base) | 0x042, "Set Connectionless Slave Broadcast Receive" }, \
+ { (base) | 0x043, "Start Synchronization Train" }, \
+ { (base) | 0x044, "Receive Synchronization Train" }
+
static const value_string bthci_cmd_ocf_link_control_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Inquiry" },
- { 0x002, "Inquiry Cancel" },
- { 0x003, "Periodic Inquiry Mode" },
- { 0x004, "Exit Periodic Inquiry Mode" },
- { 0x005, "Create Connection" },
- { 0x006, "Disconnect" },
- { 0x007, "Add SCO Connection" },
- { 0x008, "Create Connection Cancel" },
- { 0x009, "Accept Connection Request" },
- { 0x00A, "Reject Connection Request" },
- { 0x00B, "Link Key Request Reply" },
- { 0x00C, "Link Key Request Negative Reply" },
- { 0x00D, "PIN Code Request Reply" },
- { 0x00E, "PIN Code Request Negative Reply" },
- { 0x00F, "Change Connection Packet Type" },
- { 0x011, "Authentication Requested" },
- { 0x013, "Set Connection Encryption" },
- { 0x015, "Change Connection Link Key" },
- { 0x017, "Master Link Key" },
- { 0x019, "Remote Name Request" },
- { 0x01A, "Remote Name Request Cancel" },
- { 0x01B, "Read Remote Supported Features" },
- { 0x01C, "Read Remote Extended Features" },
- { 0x01D, "Read Remote Version Information" },
- { 0x01F, "Read Clock offset" },
- { 0x020, "Read LMP Handle" },
- { 0x028, "Setup Synchronous Connection" },
- { 0x029, "Accept Synchronous Connection Request" },
- { 0x02A, "Reject Synchronous Connection Request" },
- { 0x02B, "IO Capability Request Reply" },
- { 0x02C, "User Confirmation Request Reply" },
- { 0x02D, "User Confirmation Request Negative Reply" },
- { 0x02E, "User Passkey Request Reply" },
- { 0x02F, "User Passkey Request Negative Reply" },
- { 0x030, "Remote OOB Data Request Reply" },
- { 0x033, "Remote OOB Data Request Negative Reply" },
- { 0x034, "IO Capability Request Negative Reply" },
- { 0x035, "Create Physical Link" },
- { 0x036, "Accept Physical Link" },
- { 0x037, "Disconnect Physical Link" },
- { 0x038, "Create Logical Link" },
- { 0x039, "Accept Logical Link" },
- { 0x03A, "Disconnect Logical Link" },
- { 0x03B, "Logical Link Cancel" },
- { 0x03C, "Flow Spec Modify" },
-/* Bluetooth Core Specification Addendum 2 */
- { 0x03D, "Enhanced Setup Synchronous Connection" },
- { 0x03E, "Enhanced Accept Synchronous Connection Request" },
-/* Bluetooth Core Specification Addendum 4 */
- { 0x03F, "Truncated Page" },
- { 0x040, "Truncated Page Cancel" },
- { 0x041, "Set Connectionless Slave Broadcast" },
- { 0x042, "Set Connectionless Slave Broadcast Receive" },
- { 0x043, "Start Synchronization Train" },
- { 0x044, "Receive Synchronization Train" },
+ LINK_CONTROL_VALS(0x0), \
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_link_control_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_link_control_vals);
+#define LINK_POLICY_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Hold Mode" }, \
+ { (base) | 0x003, "Sniff Mode" }, \
+ { (base) | 0x004, "Exit Sniff Mode" }, \
+ { (base) | 0x005, "Park Mode" }, \
+ { (base) | 0x006, "Exit Park Mode" }, \
+ { (base) | 0x007, "QoS Setup" }, \
+ { (base) | 0x009, "Role Discovery" }, \
+ { (base) | 0x00b, "Switch Role" }, \
+ { (base) | 0x00c, "Read Link Policy Settings" }, \
+ { (base) | 0x00d, "Write Link Policy Settings" }, \
+ { (base) | 0x00e, "Read Default Link Policy Settings" }, \
+ { (base) | 0x00f, "Write Default Link Policy Settings" }, \
+ { (base) | 0x010, "Flow Specification" }, \
+ { (base) | 0x011, "Sniff Subrating" }
+
static const value_string bthci_cmd_ocf_link_policy_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Hold Mode" },
- { 0x003, "Sniff Mode" },
- { 0x004, "Exit Sniff Mode" },
- { 0x005, "Park Mode" },
- { 0x006, "Exit Park Mode" },
- { 0x007, "QoS Setup" },
- { 0x009, "Role Discovery" },
- { 0x00b, "Switch Role" },
- { 0x00c, "Read Link Policy Settings" },
- { 0x00d, "Write Link Policy Settings" },
- { 0x00e, "Read Default Link Policy Settings" },
- { 0x00f, "Write Default Link Policy Settings" },
- { 0x010, "Flow Specification" },
- { 0x011, "Sniff Subrating" },
+LINK_POLICY_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_link_policy_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_link_policy_vals);
+#define HOST_CONTROLLER_AND_BASEBAND_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Set Event Mask" }, \
+ { (base) | 0x003, "Reset" }, \
+ { (base) | 0x005, "Set Event Filter" }, \
+ { (base) | 0x008, "Flush" }, \
+ { (base) | 0x009, "Read PIN Type" }, \
+ { (base) | 0x00A, "Write PIN Type" }, \
+ { (base) | 0x00B, "Create New Unit Key" }, \
+ { (base) | 0x00D, "Read Stored Link Key" }, \
+ { (base) | 0x011, "Write Stored Link Key" }, \
+ { (base) | 0x012, "Delete Stored Link Key" }, \
+ { (base) | 0x013, "Change Local Name" }, \
+ { (base) | 0x014, "Read Local Name" }, \
+ { (base) | 0x015, "Read Connection Accept Timeout" }, \
+ { (base) | 0x016, "Write Connection Accept Timeout" }, \
+ { (base) | 0x017, "Read Page Timeout" }, \
+ { (base) | 0x018, "Write Page Timeout" }, \
+ { (base) | 0x019, "Read Scan Enable" }, \
+ { (base) | 0x01A, "Write Scan Enable" }, \
+ { (base) | 0x01B, "Read Page Scan Activity" }, \
+ { (base) | 0x01C, "Write Page Scan Activity" }, \
+ { (base) | 0x01D, "Read Inquiry Scan Activity" }, \
+ { (base) | 0x01E, "Write Inquiry Scan Activity" }, \
+ { (base) | 0x01F, "Read Authentication Enable" }, \
+ { (base) | 0x020, "Write Authentication Enable" }, \
+ { (base) | 0x021, "Read Encryption Mode" }, \
+ { (base) | 0x022, "Write Encryption Mode" }, \
+ { (base) | 0x023, "Read Class of Device" }, \
+ { (base) | 0x024, "Write Class of Device" }, \
+ { (base) | 0x025, "Read Voice Setting" }, \
+ { (base) | 0x026, "Write Voice Setting" }, \
+ { (base) | 0x027, "Read Automatic Flush Timeout" }, \
+ { (base) | 0x028, "Write Automatic Flush Timeout" }, \
+ { (base) | 0x029, "Read Num Broadcast Retransmissions" }, \
+ { (base) | 0x02A, "Write Num Broadcast Retransmissions" }, \
+ { (base) | 0x02B, "Read Hold Mode Activity" }, \
+ { (base) | 0x02C, "Write Hold Mode Activity" }, \
+ { (base) | 0x02D, "Read Tx Power Level" }, \
+ { (base) | 0x02E, "Read SCO Flow Control Enable" }, \
+ { (base) | 0x02F, "Write SCO Flow Control Enable" }, \
+ { (base) | 0x031, "Set Host Controller To Host Flow Control" }, \
+ { (base) | 0x033, "Host Buffer Size" }, \
+ { (base) | 0x035, "Host Number of Completed Packets" }, \
+ { (base) | 0x036, "Read Link Supervision Timeout" }, \
+ { (base) | 0x037, "Write Link Supervision Timeout" }, \
+ { (base) | 0x038, "Read Number of Supported IAC" }, \
+ { (base) | 0x039, "Read Current IAC LAP" }, \
+ { (base) | 0x03A, "Write Current IAC LAP" }, \
+ { (base) | 0x03B, "Read Page Scan Period Mode" }, \
+ { (base) | 0x03C, "Write Page Scan Period Mode" }, \
+ { (base) | 0x03D, "Read Page Scan Mode" }, \
+ { (base) | 0x03E, "Write Page Scan Mode" }, \
+ { (base) | 0x03F, "Set AFH Host Channel Classification" }, \
+ { (base) | 0x042, "Read Inquiry Scan Type" }, \
+ { (base) | 0x043, "Write Inquiry Scan Type" }, \
+ { (base) | 0x044, "Read Inquiry Mode" }, \
+ { (base) | 0x045, "Write Inquiry Mode" }, \
+ { (base) | 0x046, "Read Page Scan Type" }, \
+ { (base) | 0x047, "Write Page Scan Type" }, \
+ { (base) | 0x048, "Read AFH Channel Assessment Mode" }, \
+ { (base) | 0x049, "Write AFH Channel Assessment Mode" }, \
+ { (base) | 0x051, "Read Extended Inquiry Response" }, \
+ { (base) | 0x052, "Write Extended Inquiry Response" }, \
+ { (base) | 0x053, "Refresh Encryption Key" }, \
+ { (base) | 0x055, "Read Simple Pairing Mode" }, \
+ { (base) | 0x056, "Write Simple Pairing Mode" }, \
+ { (base) | 0x057, "Read Local OOB Data" }, \
+ { (base) | 0x058, "Read Inquiry Response Tx Power Level" }, \
+ { (base) | 0x059, "Write Inquiry Tx Power Level" }, \
+ { (base) | 0x05A, "Read Default Erroneous Data Reporting" }, \
+ { (base) | 0x05B, "Write Default Erroneous Data Reporting" }, \
+ { (base) | 0x05F, "Enhanced Flush" }, \
+ { (base) | 0x060, "Send Keypress Notification" }, \
+ { (base) | 0x061, "Read Logical Link Accept Timeout" }, \
+ { (base) | 0x062, "Write Logical Link Accept Timeout" }, \
+ { (base) | 0x063, "Set Event Mask Page 2" }, \
+ { (base) | 0x064, "Read Location Data" }, \
+ { (base) | 0x065, "Write Location Data" }, \
+ { (base) | 0x066, "Read Flow Control Mode" }, \
+ { (base) | 0x067, "Write Flow Control Mode" }, \
+ { (base) | 0x068, "Read Enhanced Transmit Power Level" }, \
+ { (base) | 0x069, "Read Best Effort Flush Timeout" }, \
+ { (base) | 0x06A, "Write Best Effort Flush Timeout" }, \
+ { (base) | 0x06B, "Short Range Mode" }, \
+ { (base) | 0x06C, "Read LE Host Supported" }, \
+ { (base) | 0x06D, "Write LE Host Supported" }, \
+/* Bluetooth Core Specification Addendum 3 */ \
+ { (base) | 0x06E, "Set MWS Channel Parameters"}, \
+ { (base) | 0x06F, "Set External Frame Configuration"}, \
+ { (base) | 0x070, "Set MWS Signaling"}, \
+ { (base) | 0x071, "Set MWS Transport Layer"}, \
+ { (base) | 0x072, "Set MWS Scan Frequency Table"}, \
+ { (base) | 0x073, "Set MWS Pattern Configuration"}, \
+/* Bluetooth Core Specification Addendum 4 */ \
+ { (base) | 0x074, "Set Reserved LT_ADDR" }, \
+ { (base) | 0x075, "Delete Reserved LT_ADDR" }, \
+ { (base) | 0x076, "Set Connectionless Slave Broadcast Data" }, \
+ { (base) | 0x077, "Read Synchronization Train Parameters" }, \
+ { (base) | 0x078, "Write Synchronization Train Parameters" }
+
static const value_string bthci_cmd_ocf_host_controller_and_baseband_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Set Event Mask" },
- { 0x003, "Reset" },
- { 0x005, "Set Event Filter" },
- { 0x008, "Flush" },
- { 0x009, "Read PIN Type" },
- { 0x00A, "Write PIN Type" },
- { 0x00B, "Create New Unit Key" },
- { 0x00D, "Read Stored Link Key" },
- { 0x011, "Write Stored Link Key" },
- { 0x012, "Delete Stored Link Key" },
- { 0x013, "Change Local Name" },
- { 0x014, "Read Local Name" },
- { 0x015, "Read Connection Accept Timeout" },
- { 0x016, "Write Connection Accept Timeout" },
- { 0x017, "Read Page Timeout" },
- { 0x018, "Write Page Timeout" },
- { 0x019, "Read Scan Enable" },
- { 0x01A, "Write Scan Enable" },
- { 0x01B, "Read Page Scan Activity" },
- { 0x01C, "Write Page Scan Activity" },
- { 0x01D, "Read Inquiry Scan Activity" },
- { 0x01E, "Write Inquiry Scan Activity" },
- { 0x01F, "Read Authentication Enable" },
- { 0x020, "Write Authentication Enable" },
- { 0x021, "Read Encryption Mode" },
- { 0x022, "Write Encryption Mode" },
- { 0x023, "Read Class of Device" },
- { 0x024, "Write Class of Device" },
- { 0x025, "Read Voice Setting" },
- { 0x026, "Write Voice Setting" },
- { 0x027, "Read Automatic Flush Timeout" },
- { 0x028, "Write Automatic Flush Timeout" },
- { 0x029, "Read Num Broadcast Retransmissions" },
- { 0x02A, "Write Num Broadcast Retransmissions" },
- { 0x02B, "Read Hold Mode Activity" },
- { 0x02C, "Write Hold Mode Activity" },
- { 0x02D, "Read Tx Power Level" },
- { 0x02E, "Read SCO Flow Control Enable" },
- { 0x02F, "Write SCO Flow Control Enable" },
- { 0x031, "Set Host Controller To Host Flow Control" },
- { 0x033, "Host Buffer Size" },
- { 0x035, "Host Number of Completed Packets" },
- { 0x036, "Read Link Supervision Timeout" },
- { 0x037, "Write Link Supervision Timeout" },
- { 0x038, "Read Number of Supported IAC" },
- { 0x039, "Read Current IAC LAP" },
- { 0x03A, "Write Current IAC LAP" },
- { 0x03B, "Read Page Scan Period Mode" },
- { 0x03C, "Write Page Scan Period Mode" },
- { 0x03D, "Read Page Scan Mode" },
- { 0x03E, "Write Page Scan Mode" },
- { 0x03F, "Set AFH Host Channel Classification" },
- { 0x042, "Read Inquiry Scan Type" },
- { 0x043, "Write Inquiry Scan Type" },
- { 0x044, "Read Inquiry Mode" },
- { 0x045, "Write Inquiry Mode" },
- { 0x046, "Read Page Scan Type" },
- { 0x047, "Write Page Scan Type" },
- { 0x048, "Read AFH Channel Assessment Mode" },
- { 0x049, "Write AFH Channel Assessment Mode" },
- { 0x051, "Read Extended Inquiry Response" },
- { 0x052, "Write Extended Inquiry Response" },
- { 0x053, "Refresh Encryption Key" },
- { 0x055, "Read Simple Pairing Mode" },
- { 0x056, "Write Simple Pairing Mode" },
- { 0x057, "Read Local OOB Data" },
- { 0x058, "Read Inquiry Response Tx Power Level" },
- { 0x059, "Write Inquiry Tx Power Level" },
- { 0x05A, "Read Default Erroneous Data Reporting" },
- { 0x05B, "Write Default Erroneous Data Reporting" },
- { 0x05F, "Enhanced Flush" },
- { 0x060, "Send Keypress Notification" },
- { 0x061, "Read Logical Link Accept Timeout" },
- { 0x062, "Write Logical Link Accept Timeout" },
- { 0x063, "Set Event Mask Page 2" },
- { 0x064, "Read Location Data" },
- { 0x065, "Write Location Data" },
- { 0x066, "Read Flow Control Mode" },
- { 0x067, "Write Flow Control Mode" },
- { 0x068, "Read Enhanced Transmit Power Level" },
- { 0x069, "Read Best Effort Flush Timeout" },
- { 0x06A, "Write Best Effort Flush Timeout" },
- { 0x06B, "Short Range Mode" },
- { 0x06C, "Read LE Host Supported" },
- { 0x06D, "Write LE Host Supported" },
-/* Bluetooth Core Specification Addendum 3 */
- { 0x06E, "Set MWS Channel Parameters"},
- { 0x06F, "Set External Frame Configuration"},
- { 0x070, "Set MWS Signaling"},
- { 0x071, "Set MWS Transport Layer"},
- { 0x072, "Set MWS Scan Frequency Table"},
- { 0x073, "Set MWS Pattern Configuration"},
-/* Bluetooth Core Specification Addendum 4 */
- { 0x074, "Set Reserved LT_ADDR" },
- { 0x075, "Delete Reserved LT_ADDR" },
- { 0x076, "Set Connectionless Slave Broadcast Data" },
- { 0x077, "Read Synchronization Train Parameters" },
- { 0x078, "Write Synchronization Train Parameters" },
+ HOST_CONTROLLER_AND_BASEBAND_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_host_controller_and_baseband_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_host_controller_and_baseband_vals);
+#define INFORMATIONAL_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Read Local Version Information" }, \
+ { (base) | 0x002, "Read Local Supported Commands" }, \
+ { (base) | 0x003, "Read Local Supported Features" }, \
+ { (base) | 0x004, "Read Local Extended Features" }, \
+ { (base) | 0x005, "Read Buffer Size" }, \
+ { (base) | 0x007, "Read Country Code" }, \
+ { (base) | 0x009, "Read BD ADDR" }, \
+ { (base) | 0x00A, "Read Data Block Size" }, \
+/* Bluetooth Core Specification Addendum 2 */ \
+ { (base) | 0x00B, "Read Local Supported Codecs" }
+
static const value_string bthci_cmd_ocf_informational_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Read Local Version Information" },
- { 0x002, "Read Local Supported Commands" },
- { 0x003, "Read Local Supported Features" },
- { 0x004, "Read Local Extended Features" },
- { 0x005, "Read Buffer Size" },
- { 0x007, "Read Country Code" },
- { 0x009, "Read BD ADDR" },
- { 0x00A, "Read Data Block Size" },
-/* Bluetooth Core Specification Addendum 2 */
- { 0x00B, "Read Local Supported Codecs" },
+ INFORMATIONAL_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_informational_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_informational_vals);
+#define STATUS_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Read Failed Contact Counter" }, \
+ { (base) | 0x002, "Reset Failed Contact Counter" }, \
+ { (base) | 0x003, "Read Link Quality" }, \
+ { (base) | 0x005, "Read RSSI" }, \
+ { (base) | 0x006, "Read AFH Channel Map" }, \
+ { (base) | 0x007, "Read Clock" }, \
+ { (base) | 0x008, "Read Encryption Key Size" }, \
+ { (base) | 0x009, "Read Local AMP Info" }, \
+ { (base) | 0x00A, "Read Local AMP Assoc" }, \
+ { (base) | 0x00B, "Write Remote AMP Assoc" }, \
+/* Bluetooth Core Specification Addendum 3 */ \
+ { (base) | 0x00C, "Get MWS Transport Layer Configuration" }, \
+/* Bluetooth Core Specification Addendum 4 */ \
+ { (base) | 0x00D, "Set Triggered Clock Capture" }
+
static const value_string bthci_cmd_ocf_status_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Read Failed Contact Counter" },
- { 0x002, "Reset Failed Contact Counter" },
- { 0x003, "Read Link Quality" },
- { 0x005, "Read RSSI" },
- { 0x006, "Read AFH Channel Map" },
- { 0x007, "Read Clock" },
- { 0x008, "Read Encryption Key Size" },
- { 0x009, "Read Local AMP Info" },
- { 0x00A, "Read Local AMP Assoc" },
- { 0x00B, "Write Remote AMP Assoc" },
-/* Bluetooth Core Specification Addendum 3 */
- { 0x00C, "Get MWS Transport Layer Configuration" },
-/* Bluetooth Core Specification Addendum 4 */
- { 0x00D, "Set Triggered Clock Capture" },
+ STATUS_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_status_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_status_vals);
+#define TESTING_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "Read Loopback Mode" }, \
+ { (base) | 0x002, "Write Loopback Mode" }, \
+ { (base) | 0x003, "Enable Device Under Test Mode" }, \
+ { (base) | 0x004, "Write Simple Pairing Debug Mode" }, \
+ { (base) | 0x007, "Enable AMP Receiver Reports" }, \
+ { (base) | 0x008, "AMP Test End" }, \
+ { (base) | 0x009, "AMP Test" }
+
static const value_string bthci_cmd_ocf_testing_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "Read Loopback Mode" },
- { 0x002, "Write Loopback Mode" },
- { 0x003, "Enable Device Under Test Mode" },
- { 0x004, "Write Simple Pairing Debug Mode" },
- { 0x007, "Enable AMP Receiver Reports" },
- { 0x008, "AMP Test End" },
- { 0x009, "AMP Test" },
+ TESTING_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_testing_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_testing_vals);
+#define LOW_ENERGY_VALS(base)\
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x001, "LE Set Event Mask" }, \
+ { (base) | 0x002, "LE Read Buffer Size" }, \
+ { (base) | 0x003, "LE Read Local Supported Features" }, \
+ { (base) | 0x005, "LE Set Random Address" }, \
+ { (base) | 0x006, "LE Set Advertising Parameters" }, \
+ { (base) | 0x007, "LE Read Advertising Channel Tx Power" }, \
+ { (base) | 0x008, "LE Set Advertising Data" }, \
+ { (base) | 0x009, "LE Set Scan Response Data" }, \
+ { (base) | 0x00A, "LE Set Advertise Enable" }, \
+ { (base) | 0x00B, "LE Set Scan Parameters" }, \
+ { (base) | 0x00C, "LE Set Scan Enable" }, \
+ { (base) | 0x00D, "LE Create Connection" }, \
+ { (base) | 0x00E, "LE Create Connection Cancel" }, \
+ { (base) | 0x00F, "LE Read White List Size" }, \
+ { (base) | 0x010, "LE Clear White List" }, \
+ { (base) | 0x011, "LE Add Device To White List" }, \
+ { (base) | 0x012, "LE Remove Device From White List" }, \
+ { (base) | 0x013, "LE Connection Update" }, \
+ { (base) | 0x014, "LE Set Host Channel Classification" }, \
+ { (base) | 0x015, "LE Read Channel Map" }, \
+ { (base) | 0x016, "LE Read Remote Used Features" }, \
+ { (base) | 0x017, "LE Encrypt" }, \
+ { (base) | 0x018, "LE Rand" }, \
+ { (base) | 0x019, "LE Start Encryption" }, \
+ { (base) | 0x01A, "LE Long Term Key Request Reply" }, \
+ { (base) | 0x01B, "LE Long Term Key Request Negative Reply" }, \
+ { (base) | 0x01C, "LE Read Supported States" }, \
+ { (base) | 0x01D, "LE Receiver Test" }, \
+ { (base) | 0x01E, "LE Transmitter Test" }, \
+ { (base) | 0x01F, "LE Test End" }, \
+ { (base) | 0x020, "LE Remote Connection Parameter Request Reply" }, \
+ { (base) | 0x021, "LE Remote Connection Parameter Request Negative Reply" }, \
+ { (base) | 0x022, "LE Set Data Length" }, \
+ { (base) | 0x023, "LE Read Suggested Default Data Length" }, \
+ { (base) | 0x024, "LE Write Suggested Default Data Length" }, \
+ { (base) | 0x025, "LE Read Local P-256 Public Key" }, \
+ { (base) | 0x026, "LE Generate DHKey" }, \
+ { (base) | 0x027, "LE Add Device to Resolving List" }, \
+ { (base) | 0x028, "LE Remove Device From Resolving List" }, \
+ { (base) | 0x029, "LE Clear Resolving List" }, \
+ { (base) | 0x02A, "LE Read Resolving List Size" }, \
+ { (base) | 0x02B, "LE Read Peer Resolvable Address" }, \
+ { (base) | 0x02C, "LE Read Local Resolvable Address" }, \
+ { (base) | 0x02D, "LE Set Address Resolution Enable" }, \
+ { (base) | 0x02E, "LE Set Resolvable Private Address Timeout" }, \
+ { (base) | 0x02F, "LE Read Maximum Data Length" }
+
static const value_string bthci_cmd_ocf_low_energy_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x001, "LE Set Event Mask" },
- { 0x002, "LE Read Buffer Size" },
- { 0x003, "LE Read Local Supported Features" },
- { 0x005, "LE Set Random Address" },
- { 0x006, "LE Set Advertising Parameters" },
- { 0x007, "LE Read Advertising Channel Tx Power" },
- { 0x008, "LE Set Advertising Data" },
- { 0x009, "LE Set Scan Response Data" },
- { 0x00A, "LE Set Advertise Enable" },
- { 0x00B, "LE Set Scan Parameters" },
- { 0x00C, "LE Set Scan Enable" },
- { 0x00D, "LE Create Connection" },
- { 0x00E, "LE Create Connection Cancel" },
- { 0x00F, "LE Read White List Size" },
- { 0x010, "LE Clear White List" },
- { 0x011, "LE Add Device To White List" },
- { 0x012, "LE Remove Device From White List" },
- { 0x013, "LE Connection Update" },
- { 0x014, "LE Set Host Channel Classification" },
- { 0x015, "LE Read Channel Map" },
- { 0x016, "LE Read Remote Used Features" },
- { 0x017, "LE Encrypt" },
- { 0x018, "LE Rand" },
- { 0x019, "LE Start Encryption" },
- { 0x01A, "LE Long Term Key Request Reply" },
- { 0x01B, "LE Long Term Key Request Negative Reply" },
- { 0x01C, "LE Read Supported States" },
- { 0x01D, "LE Receiver Test" },
- { 0x01E, "LE Transmitter Test" },
- { 0x01F, "LE Test End" },
- { 0x020, "LE Remote Connection Parameter Request Reply" },
- { 0x021, "LE Remote Connection Parameter Request Negative Reply" },
- { 0x022, "LE Set Data Length" },
- { 0x023, "LE Read Suggested Default Data Length" },
- { 0x024, "LE Write Suggested Default Data Length" },
- { 0x025, "LE Read Local P-256 Public Key" },
- { 0x026, "LE Generate DHKey" },
- { 0x027, "LE Add Device to Resolving List" },
- { 0x028, "LE Remove Device From Resolving List" },
- { 0x029, "LE Clear Resolving List" },
- { 0x02A, "LE Read Resolving List Size" },
- { 0x02B, "LE Read Peer Resolvable Address" },
- { 0x02C, "LE Read Local Resolvable Address" },
- { 0x02D, "LE Set Address Resolution Enable" },
- { 0x02E, "LE Set Resolvable Private Address Timeout" },
- { 0x02F, "LE Read Maximum Data Length" },
+ LOW_ENERGY_VALS(0x0),
{ 0, NULL }
};
+
value_string_ext bthci_cmd_ocf_low_energy_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_ocf_low_energy_vals);
-static value_string bthci_cmd_opcode_vals[array_length(bthci_cmd_ocf_link_control_vals) - 1 +
- array_length(bthci_cmd_ocf_link_policy_vals) - 1 +
- array_length(bthci_cmd_ocf_host_controller_and_baseband_vals) - 1 +
- array_length(bthci_cmd_ocf_informational_vals) - 1 +
- array_length(bthci_cmd_ocf_status_vals) - 1 +
- array_length(bthci_cmd_ocf_testing_vals) - 1 +
- array_length(bthci_cmd_ocf_low_energy_vals) - 1 + 2];
+static const value_string bthci_cmd_opcode_vals[] = {
+ {0x0, "No Operation"},
+ LINK_CONTROL_VALS(0x01 << 10),
+ LINK_POLICY_VALS(0x02 << 10),
+ HOST_CONTROLLER_AND_BASEBAND_VALS(0x03 << 10),
+ INFORMATIONAL_VALS(0x04 << 10),
+ STATUS_VALS(0x05 << 10),
+ TESTING_VALS(0x06 << 10),
+ LOW_ENERGY_VALS(0x08 << 10),
+ { 0, NULL }
+};
+
value_string_ext bthci_cmd_opcode_vals_ext = VALUE_STRING_EXT_INIT(bthci_cmd_opcode_vals);
static const value_string bthci_cmd_status_vals[] = {
@@ -3473,9 +3506,6 @@ proto_register_bthci_cmd(void)
{
module_t *module;
expert_module_t *expert_bthci_cmd;
- guint i_opcode = 0;
- guint i_array;
- guint i_string_array;
/* Setup list of header fields See Section 1.6.1 for details*/
static hf_register_info hf[] = {
@@ -4970,32 +5000,6 @@ proto_register_bthci_cmd(void)
static decode_as_t bthci_cmd_vendor_da = {"bthci_evt", "Vendor", "bthci_cmd.vendor", 1, 0, &bthci_cmd_vendor_da_values, NULL, NULL,
decode_as_default_populate_list, decode_as_default_reset, decode_as_default_change, NULL};
- /* Dynamically fill "bthci_cmd_opcode_vals" */
- static const struct _opcode_value_string_arrays {
- guint ogf;
- const value_string *string_array;
- guint length;
- } opcode_value_string_arrays[] = {
- { 0x01, bthci_cmd_ocf_link_control_vals, array_length(bthci_cmd_ocf_link_control_vals) },
- { 0x02, bthci_cmd_ocf_link_policy_vals, array_length(bthci_cmd_ocf_link_policy_vals) },
- { 0x03, bthci_cmd_ocf_host_controller_and_baseband_vals, array_length(bthci_cmd_ocf_host_controller_and_baseband_vals) },
- { 0x04, bthci_cmd_ocf_informational_vals, array_length(bthci_cmd_ocf_informational_vals) },
- { 0x05, bthci_cmd_ocf_status_vals, array_length(bthci_cmd_ocf_status_vals) },
- { 0x06, bthci_cmd_ocf_testing_vals, array_length(bthci_cmd_ocf_testing_vals) },
- { 0x08, bthci_cmd_ocf_low_energy_vals, array_length(bthci_cmd_ocf_low_energy_vals) },
- };
-
- bthci_cmd_opcode_vals[i_opcode].value = 0;
- bthci_cmd_opcode_vals[i_opcode].strptr = "No Operation";
- i_opcode += 1;
- for (i_array = 0; i_array < array_length(opcode_value_string_arrays); i_array += 1) {
- for (i_string_array = 0; i_string_array < opcode_value_string_arrays[i_array].length - 1; i_string_array += 1) {
- bthci_cmd_opcode_vals[i_opcode].value = opcode_value_string_arrays[i_array].string_array[i_string_array].value | (opcode_value_string_arrays[i_array].ogf << 10);
- bthci_cmd_opcode_vals[i_opcode].strptr = opcode_value_string_arrays[i_array].string_array[i_string_array].strptr;
- i_opcode += 1;
- }
- }
-
proto_bthci_cmd = proto_register_protocol("Bluetooth HCI Command", "HCI_CMD", "bthci_cmd");
bthci_cmd_handle = register_dissector("bthci_cmd", dissect_bthci_cmd, proto_bthci_cmd);
diff --git a/epan/dissectors/packet-bthci_vendor.c b/epan/dissectors/packet-bthci_vendor.c
index 8fac0a95e8..3f320dacd6 100644
--- a/epan/dissectors/packet-bthci_vendor.c
+++ b/epan/dissectors/packet-bthci_vendor.c
@@ -145,42 +145,48 @@ static expert_field ei_unexpected_data = EI_INIT;
static dissector_handle_t bthci_vendor_broadcom_handle;
static dissector_handle_t btcommon_ad_handle;
-static const value_string opcode_ocf_vals[] = {
-/* Bluetooth Core 4.0 */
- { 0x0001, "Write BD ADDR" },
- { 0x0018, "Update Baudrate" },
- { 0x001C, "Write SCO PCM INT Parameter" },
- { 0x001E, "Write PCM Data Format Parameter" },
- { 0x0027, "Write Sleep Mode" },
- { 0x002E, "Download MiniDriver" },
- { 0x003B, "Enable USB HID Emulation" },
- { 0x0045, "Write UART Clock Setting" },
- { 0x004C, "Write Firmware" }, /* Unknown name, but it is part of firmware,
+# define OPCODE_VALS(base) \
+/* Bluetooth Core 4.0 */ \
+ { (base) | 0x0001, "Write BD ADDR" }, \
+ { (base) | 0x0018, "Update Baudrate" }, \
+ { (base) | 0x001C, "Write SCO PCM INT Parameter" }, \
+ { (base) | 0x001E, "Write PCM Data Format Parameter" }, \
+ { (base) | 0x0027, "Write Sleep Mode" }, \
+ { (base) | 0x002E, "Download MiniDriver" }, \
+ { (base) | 0x003B, "Enable USB HID Emulation" }, \
+ { (base) | 0x0045, "Write UART Clock Setting" }, \
+ { (base) | 0x004C, "Write Firmware" }, /* Unknown name, but it is part of firmware,
which is set of this command and one
"Launch RAM" at the end of file.
Procedure of load firmware seems to be
- initiated by command "Download MiniDriver" */
- { 0x004E, "Launch RAM" },
- { 0x0057, "Set ACL Priority" },
- { 0x005A, "Read VID PID" },
- { 0x006D, "Write I2S PCM Interface Parameter" },
- { 0x0079, "Read Verbose Config Version Info" },
- { 0x007E, "Enable WBS" },
- { 0x0102, "Enable WBS Modified" },
- { 0x0111, "Set ConnectionLess Broadcast Stream" },
- { 0x0112, "Receive ConnectionLess Broadcast Stream" },
- { 0x0113, "Write ConnectionLess Broadcast Stream Data" },
- { 0x0114, "ConnectionLess Broadcast Stream Flush" },
- { 0x0153, "LE Get Vendor Capabilities" },
- { 0x0154, "LE Multi Adveritising" },
- { 0x0156, "LE Batch Scan" },
- { 0x0157, "LE Advertising Filter" },
- { 0x0158, "LE Tracking Advertising" },
- { 0x0159, "LE Energy Info" },
+ initiated by command "Download MiniDriver" */ \
+ { (base) | 0x004E, "Launch RAM" }, \
+ { (base) | 0x0057, "Set ACL Priority" }, \
+ { (base) | 0x005A, "Read VID PID" }, \
+ { (base) | 0x006D, "Write I2S PCM Interface Parameter" }, \
+ { (base) | 0x0079, "Read Verbose Config Version Info" }, \
+ { (base) | 0x007E, "Enable WBS" }, \
+ { (base) | 0x0102, "Enable WBS Modified" }, \
+ { (base) | 0x0111, "Set ConnectionLess Broadcast Stream" }, \
+ { (base) | 0x0112, "Receive ConnectionLess Broadcast Stream" }, \
+ { (base) | 0x0113, "Write ConnectionLess Broadcast Stream Data" }, \
+ { (base) | 0x0114, "ConnectionLess Broadcast Stream Flush" }, \
+ { (base) | 0x0153, "LE Get Vendor Capabilities" }, \
+ { (base) | 0x0154, "LE Multi Adveritising" }, \
+ { (base) | 0x0156, "LE Batch Scan" }, \
+ { (base) | 0x0157, "LE Advertising Filter" }, \
+ { (base) | 0x0158, "LE Tracking Advertising" }, \
+ { (base) | 0x0159, "LE Energy Info" }
+
+static const value_string opcode_ocf_vals[] = {
+ OPCODE_VALS(0x0),
{ 0, NULL }
};
-static value_string opcode_vals[array_length(opcode_ocf_vals)];
+static const value_string opcode_vals[] = {
+ OPCODE_VALS(0x3F << 10),
+ { 0, NULL }
+};
static const value_string le_subcode_advertising_filter_vals[] = {
{ 0x00, "Enable" },
@@ -1058,9 +1064,6 @@ dissect_bthci_vendor_broadcom(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tre
void
proto_register_bthci_vendor_broadcom(void)
{
- guint i_opcode = 0;
- guint i_array;
- guint i_string_array;
expert_module_t *expert_module;
static hf_register_info hf[] = {
@@ -1533,24 +1536,6 @@ proto_register_bthci_vendor_broadcom(void)
{ &ei_unexpected_data, { "bthci_vendor.broadcom.unexpected_data", PI_PROTOCOL, PI_WARN, "Unexpected data", EXPFILL }},
};
- static const struct _opcode_value_string_arrays {
- guint ogf;
- const value_string *string_array;
- guint length;
- } opcode_value_string_arrays[] = {
- { 0x3F, opcode_ocf_vals, array_length(opcode_vals) },
- };
-
- for (i_array = 0; i_array < array_length(opcode_value_string_arrays); i_array += 1) {
- for (i_string_array = 0; i_string_array < opcode_value_string_arrays[i_array].length - 1; i_string_array += 1) {
- opcode_vals[i_opcode].value = opcode_value_string_arrays[i_array].string_array[i_string_array].value | (opcode_value_string_arrays[i_array].ogf << 10);
- opcode_vals[i_opcode].strptr = opcode_value_string_arrays[i_array].string_array[i_string_array].strptr;
- i_opcode += 1;
- }
- }
- opcode_vals[i_opcode].value = 0;
- opcode_vals[i_opcode].strptr = NULL;
-
proto_bthci_vendor_broadcom = proto_register_protocol("Bluetooth Broadcom HCI",
"HCI BROADCOM", "bthci_vendor.broadcom");