diff options
author | Sylvain Munaut <tnt@246tNt.com> | 2015-01-02 14:38:25 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-01-04 10:14:39 +0000 |
commit | a16ac8f306adca88308c74c5b4ab3e2ff8fd5215 (patch) | |
tree | 9376861c37f880703ccc48b8e0ebd31757a06eaf /epan | |
parent | 7c9d6ff73a40e3ebdf00650283ea87a66d1312ee (diff) |
gmr1_rach: Use FT_INT24 instead of FT_UINT24 for latitude/longitude
No need to do sign extension manually, the core code now supports
signed integers with bitmask and it will do the sign extension.
Not sure if that was always the code, but it works now.
This also have the advantage that the real value 'seen' by wireshark
when applying filters is the real signed value.
Change-Id: I47e2357e5556160a00110ad63e3342879769a0b9
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Reviewed-on: https://code.wireshark.org/review/6288
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/dissectors/packet-gmr1_rach.c | 20 |
1 files changed, 5 insertions, 15 deletions
diff --git a/epan/dissectors/packet-gmr1_rach.c b/epan/dissectors/packet-gmr1_rach.c index 641a294628..292e1c03a1 100644 --- a/epan/dissectors/packet-gmr1_rach.c +++ b/epan/dissectors/packet-gmr1_rach.c @@ -223,12 +223,7 @@ static const value_string rach_gps_pos_cpi_vals[] = { static void rach_gps_pos_lat_fmt(gchar *s, guint32 v) { - gint32 sv; - - if (v & (1<<18)) - v |= 0xfff80000; - - sv = v; + gint32 sv = v; g_snprintf(s, ITEM_LABEL_LENGTH, "%.5f %s (%d)", abs(sv) / 2912.7f, sv < 0 ? "S" : "N", sv); @@ -237,12 +232,7 @@ rach_gps_pos_lat_fmt(gchar *s, guint32 v) static void rach_gps_pos_long_fmt(gchar *s, guint32 v) { - gint32 sv; - - if (v & (1<<19)) - v |= 0xfff00000; - - sv = v; + gint32 sv = v; g_snprintf(s, ITEM_LABEL_LENGTH, "%.5f %s (%d)", abs(sv) / 2912.70555f, sv < 0 ? "W" : "E", sv); @@ -260,7 +250,7 @@ dissect_gmr1_rach_gps_pos(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, pro /* Check for NULL */ lat = (tvb_get_ntohl(tvb, offset) >> 4) & 0x7ffff; if (lat == 0x40000) { - proto_tree_add_uint_format(tree, hf_rach_gps_pos_lat, tvb, offset, 5, 0x40000, "NULL GPS Position"); + proto_tree_add_int_format(tree, hf_rach_gps_pos_lat, tvb, offset, 5, 0x40000, "NULL GPS Position"); return; } @@ -593,12 +583,12 @@ proto_register_gmr1_rach(void) }, { &hf_rach_gps_pos_lat, { "Latitude", "gmr1.rach.gps_pos.latitude", - FT_UINT24, BASE_CUSTOM, rach_gps_pos_lat_fmt, 0x7ffff0, + FT_INT24, BASE_CUSTOM, rach_gps_pos_lat_fmt, 0x7ffff0, NULL, HFILL } }, { &hf_rach_gps_pos_long, { "Longitude", "gmr1.rach.gps_pos.longitude", - FT_UINT24, BASE_CUSTOM, rach_gps_pos_long_fmt, 0x0fffff, + FT_INT24, BASE_CUSTOM, rach_gps_pos_long_fmt, 0x0fffff, NULL, HFILL } }, { &hf_rach_mes_pwr_class, |