diff options
author | AndersBroman <anders.broman@ericsson.com> | 2017-10-27 15:47:42 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2017-10-27 14:36:12 +0000 |
commit | bb7511bccf5427a25dc26b14ba7fe76d464e8e2f (patch) | |
tree | 139aecfa1adcb6ffa25ae6c821590d133f98202a /epan/dissectors/packet-gsm_bssmap_le.c | |
parent | 4ee492e9109c95171bd425b4ac327c613ce56f00 (diff) |
[BSSMAP-LE] Add dissection of 10.18 Location Type.
Change-Id: I54900e13eca61cd1f190934a77cb0e704c877dfe
Reviewed-on: https://code.wireshark.org/review/24103
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gsm_bssmap_le.c')
-rw-r--r-- | epan/dissectors/packet-gsm_bssmap_le.c | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/epan/dissectors/packet-gsm_bssmap_le.c b/epan/dissectors/packet-gsm_bssmap_le.c index 3c68904d77..86cb2bd16e 100644 --- a/epan/dissectors/packet-gsm_bssmap_le.c +++ b/epan/dissectors/packet-gsm_bssmap_le.c @@ -176,6 +176,25 @@ static const value_string bssmap_le_response_time_definitions_vals[] = { { 0, NULL} }; +static const value_string bssmap_le_loc_inf_vals[] = { + { 0, "Current Geographic Location" }, + { 1, "Location Assistance Information for the target MS" }, + { 2, "Deciphering keys for broadcast assistance data for the target MS" }, + { 0, NULL } +}; + +static const value_string bssmap_le_pos_method_vals[] = { + { 0, "Reserved" }, + { 1, "Mobile Assisted E-OTD" }, + { 2, "Mobile Based E-OTD" }, + { 3, "Assisted GPS" }, + { 4, "Assisted GANSS " }, + { 5, "Assisted GPS and Assisted GANSS" }, + { 0, NULL } +}; + + + /* Initialize the protocol and registered fields */ static int proto_bssmap_le = -1; int hf_gsm_bssmap_le_elem_id = -1; @@ -214,6 +233,8 @@ static int hf_gsm_bssmap_le_vertical_accuracy = -1; static int hf_gsm_bssmap_le_response_time_category = -1; static int hf_gsm_bssmap_le_apdu = -1; static int hf_gsm_bssmap_le_message_elements = -1; +static int hf_gsm_bssmap_le_location_inf = -1; +static int hf_gsm_bssmap_le_pos_method = -1; /* Initialize the subtree pointers */ @@ -554,6 +575,25 @@ de_bmaple_lcs_qos(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint /* * 10.18 Location Type */ +static guint16 +de_bmaple_location_type(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len, gchar *add_string _U_, int string_len _U_) +{ + guint32 curr_offset; + + curr_offset = offset; + + /* Location information (octet 3) */ + proto_tree_add_item(tree, hf_gsm_bssmap_le_location_inf, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + curr_offset++; + if (len == 1) { + return len; + } + /* Positioning Method (octet 4) */ + proto_tree_add_item(tree, hf_gsm_bssmap_le_pos_method, tvb, curr_offset, 1, ENC_BIG_ENDIAN); + curr_offset++; + + return(curr_offset - offset); +} /* * 10.19 Network Element Identity */ @@ -714,7 +754,7 @@ guint16 (*bssmap_le_elem_fcn[])(tvbuff_t *tvb, proto_tree *tree, packet_info *pi /* NOTE: The null types below are defined elsewhere. i.e in packet-gsm_a_bssmap.c */ de_bmaple_lcs_qos, /* 10.16 LCS QoS */ NULL, /* LCS Priority */ - NULL, /* 10.18 Location Type */ + de_bmaple_location_type, /* 10.18 Location Type */ be_ganss_loc_type, /* GANSS Location Type */ NULL, /* 10.9 Geographic Location */ de_bmaple_pos_dta, /* 10.20 Positioning Data */ @@ -1172,6 +1212,16 @@ proto_register_gsm_bssmap_le(void) FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL} }, + { &hf_gsm_bssmap_le_location_inf, + { "Location Information", "gsm_bssmap_le.location_inf", + FT_UINT8, BASE_HEX, VALS(bssmap_le_loc_inf_vals), 0x0, + NULL, HFILL } + }, + { &hf_gsm_bssmap_le_pos_method, + { "Positioning Method", "gsm_bssmap_le.pos_method", + FT_UINT8, BASE_HEX, VALS(bssmap_le_pos_method_vals), 0x0, + NULL, HFILL } + }, }; expert_module_t* expert_gsm_a_bssmap_le; |