aboutsummaryrefslogtreecommitdiffstats
path: root/asn1/gsmmap
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2006-09-19 20:25:57 +0000
committerAnders Broman <anders.broman@ericsson.com>2006-09-19 20:25:57 +0000
commit93ea6fac36c0b29fb146c7ee6aea6d5ffe6f5c87 (patch)
treef13e49c0aeb56881a4d02ccea0e5e0fe90d61ef0 /asn1/gsmmap
parent133e4593848998530a99eb43ebceddbbe61a7ed8 (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.c13
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);
+
}