Bluetooth: Ubertooth: Update to the latest firmware

Changelog:
- add some assign numbers
- implement new type of usb_rx_packet: LE_PROMISC

Change-Id: Iffe01a50f873221c695f16a76c1954d6c82d73df
Reviewed-on: https://code.wireshark.org/review/5289
Petri-Dish: Michal Labedzki <michal.labedzki@tieto.com>
Reviewed-by: Michal Orynicz <michal.orynicz@tieto.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michal Labedzki <michal.labedzki@tieto.com>
This commit is contained in:
Michal Labedzki 2014-11-12 12:00:46 +01:00
parent 9952e7c331
commit d7cc1413ee
1 changed files with 82 additions and 3 deletions

View File

@ -90,6 +90,10 @@ static int hf_clock_offset = -1;
static int hf_afh_map = -1;
static int hf_bdaddr = -1;
static int hf_usb_rx_packet = -1;
static int hf_state = -1;
static int hf_crc_init = -1;
static int hf_hop_interval = -1;
static int hf_hop_increment = -1;
static int hf_usb_rx_packet_channel = -1;
static int hf_spectrum_entry = -1;
static int hf_frequency = -1;
@ -401,6 +405,7 @@ static const value_string command_vals[] = {
{ 54, "BTLE Slave" },
{ 55, "Get Compile Info" },
{ 56, "BTLE Set Target" },
{ 57, "BTLE Phy" },
{ 0x00, NULL }
};
static value_string_ext(command_vals_ext) = VALUE_STRING_EXT_INIT(command_vals);
@ -432,10 +437,20 @@ static const value_string packet_type_vals[] = {
{ 0x01, "LE" },
{ 0x02, "Message" },
{ 0x03, "Keep Alive" },
{ 0x04, "Spectrum Analyze"},
{ 0x05, "LE Promiscuous" },
{ 0x00, NULL }
};
static value_string_ext(packet_type_vals_ext) = VALUE_STRING_EXT_INIT(packet_type_vals);
static const value_string usb_rx_packet_state_vals[] = {
{ 0x00, "Access Address" },
{ 0x01, "CRC Init" },
{ 0x02, "Hop Interval" },
{ 0x03, "Hop Increment" },
{ 0x00, NULL }
};
static const value_string modulation_vals[] = {
{ 0x00, "Basic Rate" },
{ 0x01, "Low Energy" },
@ -1170,21 +1185,65 @@ static gint
dissect_usb_rx_packet(proto_tree *main_tree, proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint offset, gint16 command)
{
proto_item *sub_item;
proto_item *sub_tree;
proto_tree *sub_tree;
proto_item *p_item;
proto_item *data_item;
proto_item *data_tree;
proto_tree *data_tree;
proto_item *entry_item;
proto_item *entry_tree;
proto_tree *entry_tree;
gint i_spec;
gint length;
tvbuff_t *next_tvb;
guint8 packet_type;
guint32 start_offset;
sub_item = proto_tree_add_item(tree, hf_usb_rx_packet, tvb, offset, 64, ENC_NA);
sub_tree = proto_item_add_subtree(sub_item, ett_usb_rx_packet);
start_offset = offset;
proto_tree_add_item(sub_tree, hf_packet_type, tvb, offset, 1, ENC_NA);
packet_type = tvb_get_guint8(tvb, offset);
offset += 1;
if (packet_type == 0x05) { /* LE_PROMISC */
guint8 state;
proto_tree_add_item(sub_tree, hf_state, tvb, offset, 1, ENC_NA);
state = tvb_get_guint8(tvb, offset);
col_append_fstr(pinfo->cinfo, COL_INFO, " LE Promiscuous - %s", val_to_str_const(state, usb_rx_packet_state_vals, "Unknown"));
offset += 1;
switch (state) {
case 0: /* Access Address */
proto_tree_add_item(sub_tree, hf_access_address, tvb, offset, 4, ENC_LITTLE_ENDIAN);
col_append_fstr(pinfo->cinfo, COL_INFO, " 0x%04x", tvb_get_letohl(tvb, offset));
offset += 4;
break;
case 1: /* CRC Init */
proto_tree_add_item(sub_tree, hf_crc_init, tvb, offset, 4, ENC_LITTLE_ENDIAN);
col_append_fstr(pinfo->cinfo, COL_INFO, " 0x%04x", tvb_get_letohl(tvb, offset));
offset += 4;
break;
case 2: /* Hop Interval */
p_item = proto_tree_add_item(sub_tree, hf_hop_interval, tvb, offset, 2, ENC_LITTLE_ENDIAN);
proto_item_append_text(p_item, " (%f ms), ", tvb_get_letohs(tvb, offset) * 1.25);
col_append_fstr(pinfo->cinfo, COL_INFO, " %f ms", tvb_get_letohs(tvb, offset) * 1.25);
offset += 2;
break;
case 3: /* Hop Increment */
proto_tree_add_item(sub_tree, hf_hop_increment, tvb, offset, 1, ENC_NA);
col_append_fstr(pinfo->cinfo, COL_INFO, " %u", tvb_get_guint8(tvb, offset));
offset += 1;
break;
}
proto_tree_add_item(sub_tree, hf_reserved, tvb, offset, 64 - (offset - start_offset), ENC_NA);
offset += 64 - (offset - start_offset);
return offset;
}
proto_tree_add_item(sub_tree, hf_chip_status_reserved, tvb, offset, 1, ENC_NA);
proto_tree_add_item(sub_tree, hf_chip_status_rssi_trigger, tvb, offset, 1, ENC_NA);
proto_tree_add_item(sub_tree, hf_chip_status_cs_trigger, tvb, offset, 1, ENC_NA);
@ -1973,6 +2032,26 @@ proto_register_ubertooth(void)
FT_UINT8, BASE_HEX | BASE_EXT_STRING, &packet_type_vals_ext, 0x00,
NULL, HFILL }
},
{ &hf_state,
{ "State", "ubertooth.state",
FT_UINT8, BASE_HEX, VALS(usb_rx_packet_state_vals), 0x00,
NULL, HFILL }
},
{ &hf_crc_init,
{ "CRC Init", "ubertooth.crc_init",
FT_UINT32, BASE_HEX, NULL, 0x00,
NULL, HFILL }
},
{ &hf_hop_interval,
{ "Hop Interval", "ubertooth.hop_interval",
FT_UINT16, BASE_DEC, NULL, 0x00,
"Hop Interval in unit 1.25ms", HFILL }
},
{ &hf_hop_increment,
{ "Hop Increment", "ubertooth.hop_increment",
FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
{ &hf_chip_status_reserved,
{ "Reserved", "ubertooth.status.resered",
FT_BOOLEAN, 8, NULL, 0xE0,