Update IS-801 Request Pseudorange Measurement; Rename

'spare bits' to 'reserved bits'

svn path=/trunk/; revision=31707
This commit is contained in:
Gerasimos Dimitriadis 2010-01-27 22:36:29 +00:00
parent 1146a40844
commit 85fb36759b
1 changed files with 56 additions and 48 deletions

View File

@ -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);
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;
}
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);
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 }
},
};