aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-ansi_801.c
diff options
context:
space:
mode:
authorGerasimos Dimitriadis <dimeg@intracom.gr>2010-01-27 22:36:29 +0000
committerGerasimos Dimitriadis <dimeg@intracom.gr>2010-01-27 22:36:29 +0000
commit85fb36759b7e5eca99b8a54f9d3f644bb0261746 (patch)
tree755bbeb1c5a52553d59da3b3c9ce5b43c681c4fa /epan/dissectors/packet-ansi_801.c
parent1146a408442885f5685227ef58e3fb29df7ab685 (diff)
Update IS-801 Request Pseudorange Measurement; Rename
'spare bits' to 'reserved bits' svn path=/trunk/; revision=31707
Diffstat (limited to 'epan/dissectors/packet-ansi_801.c')
-rw-r--r--epan/dissectors/packet-ansi_801.c104
1 files changed, 56 insertions, 48 deletions
diff --git a/epan/dissectors/packet-ansi_801.c b/epan/dissectors/packet-ansi_801.c
index 06f7812409..8789836e20 100644
--- a/epan/dissectors/packet-ansi_801.c
+++ b/epan/dissectors/packet-ansi_801.c
@@ -92,7 +92,7 @@ static int hf_ansi_801_clock_drift = -1;
static int hf_ansi_801_height_incl = -1;
static int hf_ansi_801_height = -1;
static int hf_ansi_801_loc_uncrtnty_v = -1;
-static int hf_ansi_801_spare_bits = -1;
+static int hf_ansi_801_reserved_bits = -1;
static int hf_ansi_801_bad_sv_present = -1;
static int hf_ansi_801_num_bad_sv = -1;
@@ -102,6 +102,11 @@ static int hf_ansi_801_add_dopp_req = -1;
static int hf_ansi_801_code_ph_par_req = -1;
static int hf_ansi_801_az_el_req = -1;
+static int hf_ansi_801_pref_resp_qual = -1;
+static int hf_ansi_801_num_fixes = -1;
+static int hf_ansi_801_t_betw_fixes = -1;
+static int hf_ansi_801_offset_req = -1;
+
static char bigbuf[1024];
static dissector_handle_t data_handle;
static packet_info *g_pinfo;
@@ -207,61 +212,44 @@ static const value_string rev_req_type_strings[] = {
#define NUM_REV_REQ_TYPE (sizeof(rev_req_type_strings)/sizeof(value_string))
static gint ett_rev_req_type[NUM_REV_REQ_TYPE];
-
static void
for_req_pseudo_meas(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset)
{
- guint32 value;
- guint32 saved_offset;
+ guint32 bit_offset, spare_bits;
+ guint32 saved_offset, value;
SHORT_DATA_CHECK(len, 3);
-
saved_offset = offset;
+ bit_offset = offset << 3;
- value = tvb_get_ntoh24(tvb, offset);
+ /* PREF_RESP_QUAL */
+ proto_tree_add_bits_item(tree, hf_ansi_801_pref_resp_qual, tvb, bit_offset, 3, FALSE);
+ bit_offset += 3;
- other_decode_bitfield_value(bigbuf, value >> 16, 0xe0, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Preferred response quality, %u",
- bigbuf,
- (value & 0xe00000) >> 21);
+ /* NUM_FIXES */
+ value = tvb_get_bits8(tvb, bit_offset, 8) + 1;
+ proto_tree_add_uint_bits_format_value(tree, hf_ansi_801_num_fixes, tvb, bit_offset, 8, value, "%u", value);
+ bit_offset += 8;
- other_decode_bitfield_value(bigbuf, value >> 16, 0x1f, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Number of fixes (MSB), %u",
- bigbuf,
- (value & 0x1fe000) >> 13);
+ /* T_BETW_FIXES */
+ value = tvb_get_bits8(tvb, bit_offset, 8);
+ proto_tree_add_uint_bits_format_value(tree, hf_ansi_801_t_betw_fixes, tvb, bit_offset, 8, value, "%u seconds", value);
+ bit_offset += 8;
- other_decode_bitfield_value(bigbuf, value >> 8, 0xe0, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Number of fixes (LSB)",
- bigbuf);
+ /* OFFSET_REQ */
+ proto_tree_add_bits_item(tree, hf_ansi_801_offset_req, tvb, bit_offset++, 1, FALSE);
- other_decode_bitfield_value(bigbuf, value >> 8, 0x1f, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Time between fixes (MSB), %u",
- bigbuf,
- (value & 0x001fe0) >> 5);
-
- other_decode_bitfield_value(bigbuf, value, 0xe0, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Time between fixes (LSB)",
- bigbuf);
-
- other_decode_bitfield_value(bigbuf, value, 0x10, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Offset %srequested",
- bigbuf,
- (value & 0x10) ? "" : "not ");
-
- other_decode_bitfield_value(bigbuf, value, 0x0f, 8);
- proto_tree_add_text(tree, tvb, offset, 1,
- "%s : Reserved",
- bigbuf);
+ if(bit_offset & 0x07)
+ {
+ spare_bits = 8 - (bit_offset & 0x07);
+ proto_tree_add_bits_item(tree, hf_ansi_801_reserved_bits, tvb, bit_offset, spare_bits, FALSE);
+ bit_offset += spare_bits;
+ }
- offset += 3;
+ offset = bit_offset >> 3;
EXTRANEOUS_DATA_CHECK(len, offset - saved_offset);
+
}
static void
@@ -911,7 +899,7 @@ pr_loc_response(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset)
if(bit_offset & 0x07)
{
spare_bits = 8 - (bit_offset & 0x07);
- proto_tree_add_bits_item(tree, hf_ansi_801_spare_bits, tvb, bit_offset, spare_bits, FALSE);
+ proto_tree_add_bits_item(tree, hf_ansi_801_reserved_bits, tvb, bit_offset, spare_bits, FALSE);
bit_offset += spare_bits;
}
@@ -962,7 +950,7 @@ for_pr_gps_sat_health(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset
if(bit_offset & 0x07)
{
spare_bits = 8 - (bit_offset & 0x07);
- proto_tree_add_bits_item(tree, hf_ansi_801_spare_bits, tvb, bit_offset, spare_bits, FALSE);
+ proto_tree_add_bits_item(tree, hf_ansi_801_reserved_bits, tvb, bit_offset, spare_bits, FALSE);
bit_offset += spare_bits;
}
@@ -985,7 +973,7 @@ rev_req_gps_acq_ass(tvbuff_t *tvb, proto_tree *tree, guint len, guint32 offset)
proto_tree_add_bits_item(tree, hf_ansi_801_add_dopp_req, tvb, bit_offset++, 1, FALSE);
proto_tree_add_bits_item(tree, hf_ansi_801_code_ph_par_req, tvb, bit_offset++, 1, FALSE);
proto_tree_add_bits_item(tree, hf_ansi_801_az_el_req, tvb, bit_offset++, 1, FALSE);
- proto_tree_add_bits_item(tree, hf_ansi_801_spare_bits, tvb, bit_offset, 4, FALSE);
+ proto_tree_add_bits_item(tree, hf_ansi_801_reserved_bits, tvb, bit_offset, 4, FALSE);
offset++;
EXTRANEOUS_DATA_CHECK(len, offset - saved_offset);
@@ -2309,8 +2297,8 @@ proto_register_ansi_801(void)
FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
- { &hf_ansi_801_spare_bits,
- { "Spare bit(s)","ansi_801.spare_bits",
+ { &hf_ansi_801_reserved_bits,
+ { "Reserved bit(s)","ansi_801.reerved_bits",
FT_UINT8,BASE_DEC, NULL, 0x0,
NULL, HFILL }
},
@@ -2325,7 +2313,7 @@ proto_register_ansi_801(void)
NULL, HFILL }
},
{ &hf_ansi_801_bad_sv_prn_num,
- { "Satellite PRN number", "ansi_801.bad_sv_prn_num",
+ { "Satellite PRN number (SV_PRN_NUM)", "ansi_801.bad_sv_prn_num",
FT_UINT8, BASE_DEC, NULL, 0x00,
NULL, HFILL }
},
@@ -2349,6 +2337,26 @@ proto_register_ansi_801(void)
FT_BOOLEAN, 8, NULL, 0x00,
NULL, HFILL }
},
+ { &hf_ansi_801_pref_resp_qual,
+ { "Preferred response quality (PREF_RESP_QUAL)", "ansi_801.pref_resp_qual",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_ansi_801_num_fixes,
+ { "Number of fixes (NUM_FIXES)", "ansi_801.num_fixes",
+ FT_UINT16, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_ansi_801_t_betw_fixes,
+ { "Time between fixes (T_BETW_FIXES)", "ansi_801.t_betw_fixes",
+ FT_UINT8, BASE_DEC, NULL, 0x00,
+ NULL, HFILL }
+ },
+ { &hf_ansi_801_offset_req,
+ { "Offset requested (OFFSET_REQ)", "ansi_801.offset_req",
+ FT_BOOLEAN, 8, NULL, 0x00,
+ NULL, HFILL }
+ },
};