diff options
author | Rubin Gerritsen <rubin.gerritsen@nordicsemi.no> | 2023-01-06 21:36:05 +0100 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2023-01-07 08:30:14 +0000 |
commit | 751d8361236c361739065c007a84ec8e2028c946 (patch) | |
tree | f385fe61c2316e952fdfea9980ee596b270f2525 | |
parent | b857c3189a7764df7ad2ddf67ea75c8399309d65 (diff) |
btle: Add control proc enum to make code self-documenting
Previously hardcoded integers were used in control procedure
dissection. This resulted in hard to read code.
Signed-off-by: Rubin Gerritsen <rubin.gerritsen@nordicsemi.no>
-rw-r--r-- | epan/dissectors/packet-btle.c | 296 |
1 files changed, 172 insertions, 124 deletions
diff --git a/epan/dissectors/packet-btle.c b/epan/dissectors/packet-btle.c index 6e0d3748ad..661b1488f1 100644 --- a/epan/dissectors/packet-btle.c +++ b/epan/dissectors/packet-btle.c @@ -739,49 +739,95 @@ static const value_string llid_broadcastiso_codes_vals[] = { }; static value_string_ext llid_broadcastiso_codes_vals_ext = VALUE_STRING_EXT_INIT(llid_broadcastiso_codes_vals); +typedef enum +{ + LL_CTRL_OPCODE_CONNECTION_UPDATE_IND = 0x00, + LL_CTRL_OPCODE_CHANNEL_MAP_IND = 0x01, + LL_CTRL_OPCODE_TERMINATE_IND = 0x02, + LL_CTRL_OPCODE_ENC_REQ = 0x03, + LL_CTRL_OPCODE_ENC_RSP = 0x04, + LL_CTRL_OPCODE_START_ENC_REQ = 0x05, + LL_CTRL_OPCODE_START_ENC_RSP = 0x06, + LL_CTRL_OPCODE_UNKNOWN_RSP = 0x07, + LL_CTRL_OPCODE_FEATURE_REQ = 0x08, + LL_CTRL_OPCODE_FEATURE_RSP = 0x09, + LL_CTRL_OPCODE_PAUSE_ENC_REQ = 0x0A, + LL_CTRL_OPCODE_PAUSE_ENC_RSP = 0x0B, + LL_CTRL_OPCODE_VERSION_IND = 0x0C, + LL_CTRL_OPCODE_REJECT_IND = 0x0D, + LL_CTRL_OPCODE_SLAVE_FEATURE_REQ = 0x0E, + LL_CTRL_OPCODE_CONNECTION_PARAM_REQ = 0x0F, + LL_CTRL_OPCODE_CONNECTION_PARAM_RSP = 0x10, + LL_CTRL_OPCODE_REJECT_EXT_IND = 0x11, + LL_CTRL_OPCODE_PING_REQ = 0x12, + LL_CTRL_OPCODE_PING_RSP = 0x13, + LL_CTRL_OPCODE_LENGTH_REQ = 0x14, + LL_CTRL_OPCODE_LENGTH_RSP = 0x15, + LL_CTRL_OPCODE_PHY_REQ = 0x16, + LL_CTRL_OPCODE_PHY_RSP = 0x17, + LL_CTRL_OPCODE_PHY_UPDATE_IND = 0x18, + LL_CTRL_OPCODE_MIN_USED_CHANNELS_IND = 0x19, + LL_CTRL_OPCODE_CTE_REQ = 0x1A, + LL_CTRL_OPCODE_CTE_RSP = 0x1B, + LL_CTRL_OPCODE_PERIODIC_SYNC_IND = 0x1C, + LL_CTRL_OPCODE_CLOCK_ACCURACY_REQ = 0x1D, + LL_CTRL_OPCODE_CLOCK_ACCURACY_RSP = 0x1E, + LL_CTRL_OPCODE_CIS_REQ = 0x1F, + LL_CTRL_OPCODE_CIS_RSP = 0x20, + LL_CTRL_OPCODE_CIS_IND = 0x21, + LL_CTRL_OPCODE_CIS_TERMINATE_IND = 0x22, + LL_CTRL_OPCODE_POWER_CONTROL_REQ = 0x23, + LL_CTRL_OPCODE_POWER_CONTROL_RSP = 0x24, + LL_CTRL_OPCODE_POWER_CHANGE_IND = 0x25, + LL_CTRL_OPCODE_SUBRATE_REQ = 0x26, + LL_CTRL_OPCODE_SUBRATE_IND = 0x27, + LL_CTRL_OPCODE_CHANNEL_REPORTING_IND = 0x28, + LL_CTRL_OPCODE_CHANNEL_STATUS_IND = 0x29, +} ll_ctrl_proc_opcodes_t; + static const value_string control_opcode_vals[] = { - { 0x00, "LL_CONNECTION_UPDATE_IND" }, - { 0x01, "LL_CHANNEL_MAP_IND" }, - { 0x02, "LL_TERMINATE_IND" }, - { 0x03, "LL_ENC_REQ" }, - { 0x04, "LL_ENC_RSP" }, - { 0x05, "LL_START_ENC_REQ" }, - { 0x06, "LL_START_ENC_RSP" }, - { 0x07, "LL_UNKNOWN_RSP" }, - { 0x08, "LL_FEATURE_REQ" }, - { 0x09, "LL_FEATURE_RSP" }, - { 0x0A, "LL_PAUSE_ENC_REQ" }, - { 0x0B, "LL_PAUSE_ENC_RSP" }, - { 0x0C, "LL_VERSION_IND" }, - { 0x0D, "LL_REJECT_IND" }, - { 0x0E, "LL_SLAVE_FEATURE_REQ" }, - { 0x0F, "LL_CONNECTION_PARAM_REQ" }, - { 0x10, "LL_CONNECTION_PARAM_RSP" }, - { 0x11, "LL_REJECT_EXT_IND" }, - { 0x12, "LL_PING_REQ" }, - { 0x13, "LL_PING_RSP" }, - { 0x14, "LL_LENGTH_REQ" }, - { 0x15, "LL_LENGTH_RSP" }, - { 0x16, "LL_PHY_REQ" }, - { 0x17, "LL_PHY_RSP" }, - { 0x18, "LL_PHY_UPDATE_IND" }, - { 0x19, "LL_MIN_USED_CHANNELS_IND" }, - { 0x1A, "LL_CTE_REQ" }, - { 0x1B, "LL_CTE_RSP" }, - { 0x1C, "LL_PERIODIC_SYNC_IND" }, - { 0x1D, "LL_CLOCK_ACCURACY_REQ" }, - { 0x1E, "LL_CLOCK_ACCURACY_RSP" }, - { 0x1F, "LL_CIS_REQ" }, - { 0x20, "LL_CIS_RSP" }, - { 0x21, "LL_CIS_IND" }, - { 0x22, "LL_CIS_TERMINATE_IND" }, - { 0x23, "LL_POWER_CONTROL_REQ" }, - { 0x24, "LL_POWER_CONTROL_RSP" }, - { 0x25, "LL_POWER_CHANGE_IND" }, - { 0x26, "LL_SUBRATE_REQ" }, - { 0x27, "LL_SUBRATE_IND" }, - { 0x28, "LL_CHANNEL_REPORTING_IND" }, - { 0x29, "LL_CHANNEL_STATUS_IND" }, + { LL_CTRL_OPCODE_CONNECTION_UPDATE_IND, "LL_CONNECTION_UPDATE_IND" }, + { LL_CTRL_OPCODE_CHANNEL_MAP_IND, "LL_CHANNEL_MAP_IND" }, + { LL_CTRL_OPCODE_ENC_REQ, "LL_TERMINATE_IND" }, + { LL_CTRL_OPCODE_ENC_REQ, "LL_ENC_REQ" }, + { LL_CTRL_OPCODE_ENC_RSP, "LL_ENC_RSP" }, + { LL_CTRL_OPCODE_START_ENC_REQ, "LL_START_ENC_REQ" }, + { LL_CTRL_OPCODE_START_ENC_RSP, "LL_START_ENC_RSP" }, + { LL_CTRL_OPCODE_UNKNOWN_RSP, "LL_UNKNOWN_RSP" }, + { LL_CTRL_OPCODE_FEATURE_REQ, "LL_FEATURE_REQ" }, + { LL_CTRL_OPCODE_FEATURE_RSP, "LL_FEATURE_RSP" }, + { LL_CTRL_OPCODE_PAUSE_ENC_REQ, "LL_PAUSE_ENC_REQ" }, + { LL_CTRL_OPCODE_PAUSE_ENC_RSP, "LL_PAUSE_ENC_RSP" }, + { LL_CTRL_OPCODE_VERSION_IND, "LL_VERSION_IND" }, + { LL_CTRL_OPCODE_REJECT_IND, "LL_REJECT_IND" }, + { LL_CTRL_OPCODE_SLAVE_FEATURE_REQ, "LL_SLAVE_FEATURE_REQ" }, + { LL_CTRL_OPCODE_CONNECTION_PARAM_REQ, "LL_CONNECTION_PARAM_REQ" }, + { LL_CTRL_OPCODE_CONNECTION_PARAM_RSP, "LL_CONNECTION_PARAM_RSP" }, + { LL_CTRL_OPCODE_REJECT_EXT_IND, "LL_REJECT_EXT_IND" }, + { LL_CTRL_OPCODE_PING_REQ, "LL_PING_REQ" }, + { LL_CTRL_OPCODE_PING_RSP, "LL_PING_RSP" }, + { LL_CTRL_OPCODE_LENGTH_REQ, "LL_LENGTH_REQ" }, + { LL_CTRL_OPCODE_LENGTH_RSP, "LL_LENGTH_RSP" }, + { LL_CTRL_OPCODE_PHY_REQ, "LL_PHY_REQ" }, + { LL_CTRL_OPCODE_PHY_RSP, "LL_PHY_RSP" }, + { LL_CTRL_OPCODE_PHY_UPDATE_IND, "LL_PHY_UPDATE_IND" }, + { LL_CTRL_OPCODE_MIN_USED_CHANNELS_IND, "LL_MIN_USED_CHANNELS_IND" }, + { LL_CTRL_OPCODE_CTE_REQ, "LL_CTE_REQ" }, + { LL_CTRL_OPCODE_CTE_RSP, "LL_CTE_RSP" }, + { LL_CTRL_OPCODE_PERIODIC_SYNC_IND, "LL_PERIODIC_SYNC_IND" }, + { LL_CTRL_OPCODE_CLOCK_ACCURACY_REQ, "LL_CLOCK_ACCURACY_REQ" }, + { LL_CTRL_OPCODE_CLOCK_ACCURACY_RSP, "LL_CLOCK_ACCURACY_RSP" }, + { LL_CTRL_OPCODE_CIS_REQ, "LL_CIS_REQ" }, + { LL_CTRL_OPCODE_CIS_RSP, "LL_CIS_RSP" }, + { LL_CTRL_OPCODE_CIS_IND, "LL_CIS_IND" }, + { LL_CTRL_OPCODE_CIS_TERMINATE_IND, "LL_CIS_TERMINATE_IND" }, + { LL_CTRL_OPCODE_POWER_CONTROL_REQ, "LL_POWER_CONTROL_REQ" }, + { LL_CTRL_OPCODE_POWER_CONTROL_RSP, "LL_POWER_CONTROL_RSP" }, + { LL_CTRL_OPCODE_POWER_CHANGE_IND, "LL_POWER_CHANGE_IND" }, + { LL_CTRL_OPCODE_SUBRATE_REQ, "LL_SUBRATE_REQ" }, + { LL_CTRL_OPCODE_SUBRATE_IND, "LL_SUBRATE_IND" }, + { LL_CTRL_OPCODE_CHANNEL_REPORTING_IND, "LL_CHANNEL_REPORTING_IND" }, + { LL_CTRL_OPCODE_CHANNEL_STATUS_IND, "LL_CHANNEL_STATUS_IND" }, { 0, NULL } }; static value_string_ext control_opcode_vals_ext = VALUE_STRING_EXT_INIT(control_opcode_vals); @@ -1497,10 +1543,10 @@ control_proc_contains_instant(guint8 proc_opcode) { switch (proc_opcode) { - case 0x00: /* LL_CONNECTION_UPDATE_IND */ - case 0x01: /* LL_CHANNEL_MAP_UPDATE_IND */ - case 0x0F: /* LL_CONNECTION_PARAM_REQ */ - case 0x16: /* LL_PHY_REQ */ + case LL_CTRL_OPCODE_CONNECTION_UPDATE_IND: + case LL_CTRL_OPCODE_CHANNEL_MAP_IND: + case LL_CTRL_OPCODE_CONNECTION_PARAM_REQ: + case LL_CTRL_OPCODE_PHY_REQ: return TRUE; default: return FALSE; @@ -1626,7 +1672,9 @@ static void control_proc_add_frame(tvbuff_t *tvb, !control_proc_is_complete(pinfo->num, control_proc_other_direction) && control_proc_contains_instant(last_control_proc_info->proc_opcode) && control_proc_contains_instant(control_proc_other_direction->proc_opcode)) { - if (direction == BTLE_DIR_MASTER_SLAVE && opcode != 0x0D && opcode != 0x11) { + if (direction == BTLE_DIR_MASTER_SLAVE && + opcode != LL_CTRL_OPCODE_REJECT_IND && + opcode != LL_CTRL_OPCODE_REJECT_EXT_IND) { /* Continuing a control procedure when the peer has initiated an incompatible control procedure. * The central should have aborted the peripheral initiated procedure. * See Core_V5.2, Vol 6, Part B, Section 5.3. @@ -2956,7 +3004,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) val_to_str_ext_const(control_opcode, &control_opcode_vals_ext, "Unknown")); switch (control_opcode) { - case 0x00: /* LL_CONNECTION_UPDATE_IND */ + case LL_CTRL_OPCODE_CONNECTION_UPDATE_IND: item = proto_tree_add_item_ret_uint(btle_tree, hf_control_window_size, tvb, offset, 1, ENC_LITTLE_ENDIAN, &item_value); proto_item_append_text(item, " (%g msec)", item_value*1.25); offset += 1; @@ -3016,7 +3064,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_MASTER_SLAVE) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x0F, 2)) { + LL_CTRL_OPCODE_CONNECTION_PARAM_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3027,7 +3075,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 2); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_SLAVE_MASTER], - 0x0F, 1)) { + LL_CTRL_OPCODE_CONNECTION_PARAM_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3060,7 +3108,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x01: /* LL_CHANNEL_MAP_REQ */ + case LL_CTRL_OPCODE_CHANNEL_MAP_IND: sub_item = proto_tree_add_item(btle_tree, hf_control_channel_map, tvb, offset, 5, ENC_NA); sub_tree = proto_item_add_subtree(sub_item, ett_channel_map); @@ -3077,7 +3125,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_MASTER_SLAVE) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_SLAVE_MASTER], - 0x19, 1)) { + LL_CTRL_OPCODE_MIN_USED_CHANNELS_IND, 1)) { control_proc_add_frame_with_instant(tvb, pinfo, btle_tree, @@ -3111,7 +3159,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x02: /* LL_TERMINATE_IND */ + case LL_CTRL_OPCODE_TERMINATE_IND: proto_tree_add_item(btle_tree, hf_control_error_code, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -3119,7 +3167,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) * of one packet which may be sent at any time, */ break; - case 0x03: /* LL_ENC_REQ */ + case LL_CTRL_OPCODE_ENC_REQ: proto_tree_add_item(btle_tree, hf_control_random_number, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; @@ -3145,7 +3193,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x04: /* LL_ENC_RSP */ + case LL_CTRL_OPCODE_ENC_RSP: proto_tree_add_item(btle_tree, hf_control_slave_session_key_diversifier, tvb, offset, 8, ENC_LITTLE_ENDIAN); offset += 8; @@ -3157,7 +3205,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_SLAVE_MASTER) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x3, 1)) { + LL_CTRL_OPCODE_ENC_REQ, 1)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3175,14 +3223,14 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x05: /* LL_START_ENC_REQ */ + case LL_CTRL_OPCODE_START_ENC_REQ: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { /* The LL_START_ENC_REQ can only be sent from slave to master. */ if (direction == BTLE_DIR_SLAVE_MASTER) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x3, 2)) { + LL_CTRL_OPCODE_ENC_REQ, 2)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3201,14 +3249,14 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; - case 0x06: /* LL_START_ENC_RSP */ + case LL_CTRL_OPCODE_START_ENC_RSP: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { /* This is either frame 4 or 5 of the procedure */ if (direction == BTLE_DIR_MASTER_SLAVE && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x3, 3)) { + LL_CTRL_OPCODE_ENC_REQ, 3)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3220,7 +3268,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } else if (direction == BTLE_DIR_SLAVE_MASTER && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x3, 4)) { + LL_CTRL_OPCODE_ENC_REQ, 4)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3236,7 +3284,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; - case 0x07: /* LL_UNKNOWN_RSP */ + case LL_CTRL_OPCODE_UNKNOWN_RSP: proto_tree_add_item(btle_tree, hf_control_unknown_type, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -3261,7 +3309,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x08: /* LL_FEATURE_REQ */ + case LL_CTRL_OPCODE_FEATURE_REQ: offset = dissect_feature_set(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { /* The LL_FEATURE_REQ can only be sent from master to slave. */ @@ -3276,15 +3324,15 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x09: /* LL_FEATURE_RSP */ + case LL_CTRL_OPCODE_FEATURE_RSP: offset = dissect_feature_set(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x08, 1) || + LL_CTRL_OPCODE_FEATURE_REQ, 1) || control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x0E, 1)) { + LL_CTRL_OPCODE_SLAVE_FEATURE_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3299,7 +3347,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0A: /* LL_PAUSE_ENC_REQ */ + case LL_CTRL_OPCODE_PAUSE_ENC_REQ: if (tvb_reported_length_remaining(tvb, offset) > 3) { proto_tree_add_expert(btle_tree, pinfo, &ei_unknown_data, tvb, offset, tvb_reported_length_remaining(tvb, offset) - 3); offset += tvb_reported_length_remaining(tvb, offset) - 3; @@ -3318,14 +3366,14 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0B: /* LL_PAUSE_ENC_RSP */ + case LL_CTRL_OPCODE_PAUSE_ENC_RSP: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (direction == BTLE_DIR_SLAVE_MASTER && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x0A, 1)) { + LL_CTRL_OPCODE_PAUSE_ENC_REQ, 1)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3337,7 +3385,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } else if (direction == BTLE_DIR_MASTER_SLAVE && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x0A, 2)) { + LL_CTRL_OPCODE_PAUSE_ENC_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3352,7 +3400,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0C: /* LL_VERSION_IND */ + case LL_CTRL_OPCODE_VERSION_IND: proto_tree_add_item(btle_tree, hf_control_version_number, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -3367,7 +3415,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) * We first check if it is a response. */ if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x0C, 1)) { + LL_CTRL_OPCODE_VERSION_IND, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3385,7 +3433,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0D: /* LL_REJECT_IND */ + case LL_CTRL_OPCODE_REJECT_IND: proto_tree_add_item(btle_tree, hf_control_error_code, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -3396,7 +3444,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_SLAVE_MASTER) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x03, 1)) { + LL_CTRL_OPCODE_ENC_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3407,7 +3455,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x03, 2)) { + LL_CTRL_OPCODE_ENC_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3425,7 +3473,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0E: /* LL_SLAVE_FEATURE_REQ */ + case LL_CTRL_OPCODE_SLAVE_FEATURE_REQ: offset = dissect_feature_set(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { /* The LL_SLAVE_FEATURE_REQ can only be sent from slave to master. */ @@ -3440,7 +3488,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x0F: /* LL_CONNECTION_PARAM_REQ */ + case LL_CTRL_OPCODE_CONNECTION_PARAM_REQ: offset = dissect_conn_param_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (direction != BTLE_DIR_UNKNOWN) { @@ -3452,7 +3500,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x10: /* LL_CONNECTION_PARAM_RSP */ + case LL_CTRL_OPCODE_CONNECTION_PARAM_RSP: offset = dissect_conn_param_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { @@ -3461,7 +3509,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_SLAVE_MASTER) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x0F, 1)) { + LL_CTRL_OPCODE_CONNECTION_PARAM_REQ, 1)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3479,7 +3527,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x11: /* LL_REJECT_EXT_IND */ + case LL_CTRL_OPCODE_REJECT_EXT_IND: proto_tree_add_item(btle_tree, hf_control_reject_opcode, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; @@ -3502,7 +3550,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_SLAVE_MASTER && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x03, 1)) { + LL_CTRL_OPCODE_ENC_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3514,7 +3562,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } else if (direction == BTLE_DIR_SLAVE_MASTER && control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x03, 2)) { + LL_CTRL_OPCODE_ENC_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3525,7 +3573,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 2); } else if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x0F, 1)) { + LL_CTRL_OPCODE_CONNECTION_PARAM_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3536,7 +3584,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x16, 1)) { + LL_CTRL_OPCODE_PHY_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3547,7 +3595,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x1A, 1)) { + LL_CTRL_OPCODE_CTE_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3558,7 +3606,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x1F, 1)) { + LL_CTRL_OPCODE_CIS_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3569,7 +3617,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x1F, 2)) { + LL_CTRL_OPCODE_CIS_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3580,7 +3628,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 2); } else if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x23, 1)) { + LL_CTRL_OPCODE_POWER_CONTROL_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3591,7 +3639,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) 1); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_SLAVE_MASTER], - 0x26, 1)) { + LL_CTRL_OPCODE_SUBRATE_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3606,7 +3654,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x12: /* LL_PING_REQ */ + case LL_CTRL_OPCODE_PING_REQ: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_start(tvb, pinfo, btle_tree, control_proc_item, @@ -3615,12 +3663,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) control_opcode); } break; - case 0x13: /* LL_PING_RSP */ + case LL_CTRL_OPCODE_PING_RSP: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x12, 1)) { + LL_CTRL_OPCODE_PING_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3635,7 +3683,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x14: /* LL_LENGTH_REQ */ + case LL_CTRL_OPCODE_LENGTH_REQ: dissect_length_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_start(tvb, pinfo, btle_tree, control_proc_item, @@ -3645,12 +3693,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x15: /* LL_LENGTH_RSP */ + case LL_CTRL_OPCODE_LENGTH_RSP: dissect_length_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x14, 1)) { + LL_CTRL_OPCODE_LENGTH_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3664,7 +3712,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x16: /* LL_PHY_REQ */ + case LL_CTRL_OPCODE_PHY_REQ: dissect_phy_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_start(tvb, pinfo, btle_tree, control_proc_item, @@ -3674,14 +3722,14 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x17: /* LL_PHY_RSP */ + case LL_CTRL_OPCODE_PHY_RSP: dissect_phy_req_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { /* The LL_PHY_RSP can only be sent from slave to master. */ if (direction == BTLE_DIR_SLAVE_MASTER) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x16, 1)) { + LL_CTRL_OPCODE_PHY_REQ, 1)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3699,7 +3747,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } break; - case 0x18: /* LL_PHY_UPDATE_IND */ + case LL_CTRL_OPCODE_PHY_UPDATE_IND: { guint64 phy_c_to_p, phy_p_to_c; @@ -3730,7 +3778,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (direction == BTLE_DIR_MASTER_SLAVE) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x16, 2)) { + LL_CTRL_OPCODE_PHY_REQ, 2)) { control_proc_add_frame_with_instant(tvb, pinfo, btle_tree, @@ -3743,7 +3791,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) item_value); } else if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_SLAVE_MASTER], - 0x16, 1)){ + LL_CTRL_OPCODE_PHY_REQ, 1)){ control_proc_add_frame_with_instant(tvb, pinfo, btle_tree, @@ -3764,7 +3812,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) break; } - case 0x19: /* LL_MIN_USED_CHANNELS_IND */ + case LL_CTRL_OPCODE_MIN_USED_CHANNELS_IND: proto_tree_add_bitmask(btle_tree, tvb, offset, hf_control_phys, ett_phys, hfx_control_phys, ENC_NA); offset += 1; @@ -3789,7 +3837,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x1A: /* LL_CTE_REQ */ + case LL_CTRL_OPCODE_CTE_REQ: proto_tree_add_bitmask(btle_tree, tvb, offset, hf_control_phys, ett_cte, hfx_control_cte, ENC_NA); offset += 1; if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { @@ -3799,12 +3847,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) control_opcode); } break; - case 0x1B: /* LL_CTE_RSP */ + case LL_CTRL_OPCODE_CTE_RSP: offset = dissect_ctrl_pdu_without_data(tvb, pinfo, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x1A, 1)) { + LL_CTRL_OPCODE_CTE_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3818,7 +3866,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x1C: /* LL_PERIODIC_SYNC_IND */ + case LL_CTRL_OPCODE_PERIODIC_SYNC_IND: offset = dissect_periodic_sync_ind(tvb, btle_tree, offset, pinfo, interface_id, adapter_id); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_info_t *proc_info; @@ -3833,7 +3881,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x1D: /* LL_CLOCK_ACCURACY_REQ */ + case LL_CTRL_OPCODE_CLOCK_ACCURACY_REQ: proto_tree_add_item(btle_tree, hf_control_sleep_clock_accuracy, tvb, offset, 1, ENC_NA); offset += 1; if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { @@ -3843,13 +3891,13 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) control_opcode); } break; - case 0x1E: /* LL_CLOCK_ACCURACY_RSP */ + case LL_CTRL_OPCODE_CLOCK_ACCURACY_RSP: proto_tree_add_item(btle_tree, hf_control_sleep_clock_accuracy, tvb, offset, 1, ENC_NA); offset += 1; if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x1D, 1)) { + LL_CTRL_OPCODE_CLOCK_ACCURACY_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3863,7 +3911,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x1F: /* LL_CIS_REQ */ + case LL_CTRL_OPCODE_CIS_REQ: offset = dissect_cis_req(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (direction == BTLE_DIR_MASTER_SLAVE) { @@ -3876,12 +3924,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x20: /* LL_CIS_RSP */ + case LL_CTRL_OPCODE_CIS_RSP: offset = dissect_cis_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x1F, 1)) { + LL_CTRL_OPCODE_CIS_REQ, 1)) { control_proc_add_frame(tvb, pinfo, btle_tree, @@ -3895,7 +3943,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x21: /* LL_CIS_IND */ + case LL_CTRL_OPCODE_CIS_IND: if (!pinfo->fd->visited) { connection_info_t *nconnection_info; connection_parameter_info_t *connection_parameter_info; @@ -3943,7 +3991,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_MASTER_SLAVE], - 0x1F, 2)) { + LL_CTRL_OPCODE_CIS_REQ, 2)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -3957,7 +4005,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x22: /* LL_CIS_TERMINATE_IND */ + case LL_CTRL_OPCODE_CIS_TERMINATE_IND: offset = dissect_cis_terminate_ind(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_info_t *proc_info; @@ -3972,7 +4020,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x23: /* LL_POWER_CONTROL_REQ */ + case LL_CTRL_OPCODE_POWER_CONTROL_REQ: offset = dissect_power_control_req(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_start(tvb, pinfo, btle_tree, control_proc_item, @@ -3981,12 +4029,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) control_opcode); } break; - case 0x24: /* LL_POWER_CONTROL_RSP */ + case LL_CTRL_OPCODE_POWER_CONTROL_RSP: offset = dissect_power_control_rsp(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { if (control_proc_can_add_frame(pinfo, last_control_proc[other_direction], - 0x23, 1)) { + LL_CTRL_OPCODE_POWER_CONTROL_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -4000,7 +4048,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x25: /* LL_POWER_CHANGE_IND */ + case LL_CTRL_OPCODE_POWER_CHANGE_IND: offset = dissect_power_control_ind(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit && direction != BTLE_DIR_UNKNOWN) { control_proc_info_t *proc_info; @@ -4015,7 +4063,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x26: /* LL_SUBRATE_REQ */ + case LL_CTRL_OPCODE_SUBRATE_REQ: offset = dissect_subrate_req(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (direction == BTLE_DIR_SLAVE_MASTER) { @@ -4028,12 +4076,12 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x27: /* LL_SUBRATE_IND */ + case LL_CTRL_OPCODE_SUBRATE_IND: offset = dissect_subrate_ind(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (control_proc_can_add_frame(pinfo, last_control_proc[BTLE_DIR_SLAVE_MASTER], - 0x26, 1)) { + LL_CTRL_OPCODE_SUBRATE_REQ, 1)) { control_proc_add_last_frame(tvb, pinfo, btle_tree, @@ -4058,7 +4106,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x28: /* LL_CHANNEL_REPORTING_IND */ + case LL_CTRL_OPCODE_CHANNEL_REPORTING_IND: offset = dissect_channel_reporting_ind(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (direction == BTLE_DIR_MASTER_SLAVE) { @@ -4077,7 +4125,7 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) } } break; - case 0x29: /* LL_CHANNEL_STATUS_IND */ + case LL_CTRL_OPCODE_CHANNEL_STATUS_IND: offset = dissect_channel_status_ind(tvb, btle_tree, offset); if (connection_info && !btle_frame_info->retransmit) { if (direction == BTLE_DIR_SLAVE_MASTER) { |