diff options
author | Anders Broman <anders.broman@ericsson.com> | 2006-09-19 20:25:57 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2006-09-19 20:25:57 +0000 |
commit | 93ea6fac36c0b29fb146c7ee6aea6d5ffe6f5c87 (patch) | |
tree | f13e49c0aeb56881a4d02ccea0e5e0fe90d61ef0 /asn1/gsmmap | |
parent | 133e4593848998530a99eb43ebceddbbe61a7ed8 (diff) |
From Graham Addis:
In dissect_geographical_description the longitude is multiplied by 260
and should be by 360(degrees).
Also it would be good to display to 5 decimal places.
svn path=/trunk/; revision=19260
Diffstat (limited to 'asn1/gsmmap')
-rw-r--r-- | asn1/gsmmap/packet-gsm_map-template.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/asn1/gsmmap/packet-gsm_map-template.c b/asn1/gsmmap/packet-gsm_map-template.c index 393a792d94..92f6cf5865 100644 --- a/asn1/gsmmap/packet-gsm_map-template.c +++ b/asn1/gsmmap/packet-gsm_map-template.c @@ -160,6 +160,7 @@ static dissector_handle_t data_handle; static dissector_handle_t ranap_handle; /* Preferenc settings default */ +gboolean old_gsm_map_version = FALSE; #define MAX_SSN 254 static range_t *global_ssn_range; static range_t *ssn_range; @@ -441,14 +442,14 @@ dissect_geographical_description(tvbuff_t *tvb, packet_info *pinfo, proto_tree * value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff; /* convert degrees (X/0x7fffff) * 90 = degrees */ lat_item = proto_tree_add_item(tree, hf_geo_loc_deg_of_lat, tvb, offset, 3, FALSE); - proto_item_append_text(lat_item,"(%.2f degrees)", (((double)value32/8388607) * 90)); + proto_item_append_text(lat_item,"(%.5f degrees)", (((double)value32/8388607) * 90)); if (length<7) return; offset = offset + 3; value32 = tvb_get_ntoh24(tvb,offset)&0x7fffff; long_item = proto_tree_add_item(tree, hf_geo_loc_deg_of_long, tvb, offset, 3, FALSE); /* (X/0xffffff) *360 = degrees */ - proto_item_append_text(long_item,"(%.2f degrees)", (((double)value32/16777215) * 260)); + proto_item_append_text(long_item,"(%.5f degrees)", (((double)value32/16777215) * 360)); offset = offset + 3; if(type_of_shape==2){ /* Ellipsoid Point with uncertainty Circle */ @@ -919,7 +920,7 @@ static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tv offset=dissect_gsm_map_ProcessGroupCallSignallingArg(FALSE, tvb, offset, pinfo, tree, -1); break; case 43: /*checkIMEI*/ - if (application_context_version < 3 ){ + if ((application_context_version < 3 )&&(old_gsm_map_version == TRUE)){ offset = dissect_gsm_map_IMEI(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_imei); }else{ offset=dissect_gsm_map_CheckIMEIArgV3(FALSE, tvb, offset, pinfo, tree, hf_gsm_map_CheckIMEIArg); @@ -2261,6 +2262,12 @@ void proto_register_gsm_map(void) { prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs", "TCAP Subsystem numbers used for GSM MAP", &global_ssn_range, MAX_SSN); + prefs_register_bool_preference(gsm_map_module, "old_gsm_map_version", + "To decode older gsm map versions", + "Forces the decoding to decode according to older " + "incompatable gsm map version", + &old_gsm_map_version); + } |