Remove unneeded #includes and do other minor cleanup.

svn path=/trunk/; revision=38259
This commit is contained in:
Bill Meier 2011-07-29 16:07:00 +00:00
parent 12592dab19
commit cccda1f981
7 changed files with 266 additions and 248 deletions

View File

@ -30,13 +30,9 @@
#endif
#include <glib.h>
#include <string.h>
#include <epan/packet.h>
#include <epan/ptvcursor.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/dissectors/packet-ppi-geolocation-common.h>
#include "packet-ppi-geolocation-common.h"
enum ppi_antenna_type {
PPI_ANTENNA_ANTFLAGS = 0, /* Various flags about the antenna in use, Polarity, etc */
@ -57,9 +53,6 @@ enum ppi_antenna_type {
#define PPI_ANTENNA_MAXTAGLEN 187 /* increase as fields are added */
/* protocol */
static int proto_ppi_antenna = -1;
@ -111,13 +104,11 @@ static gint ett_ppi_antennaflags= -1;
static void
dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* The fixed values up front */
guint32 version;
guint length;
guint length_remaining;
gint length_remaining;
proto_tree *ppi_antenna_tree = NULL;
proto_tree *present_tree = NULL;
@ -140,12 +131,11 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
int offset = 0;
/* Clear out stuff in the info column */
if (check_col(pinfo->cinfo,COL_INFO)) {
col_clear(pinfo->cinfo,COL_INFO);
}
/* pull out the first three fields of the BASE-GEOTAG-HEADER */
version = tvb_get_guint8(tvb, offset);
length = tvb_get_letohs(tvb, offset+2);
length = tvb_get_letohs(tvb, offset+2);
present = tvb_get_letohl(tvb, offset+4);
/* Setup basic column info */
@ -164,7 +154,7 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
proto_tree_add_uint(ppi_antenna_tree, hf_ppi_antenna_version,
tvb, offset, 1, version);
proto_tree_add_item(ppi_antenna_tree, hf_ppi_antenna_pad,
tvb, offset + 1, 1, FALSE);
tvb, offset + 1, 1, ENC_NA);
ti = proto_tree_add_uint(ppi_antenna_tree, hf_ppi_antenna_length,
tvb, offset + 2, 2, length);
}
@ -201,19 +191,19 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
pt = proto_tree_add_uint(ppi_antenna_tree, hf_ppi_antenna_present, tvb, offset + 4, 4, present);
present_tree = proto_item_add_subtree(pt, ett_ppi_antenna_present);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_flags, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_gaindb, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_horizbw, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_vertbw, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_pgain, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_beamid, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_serialnum, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_modelname, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_descstr, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_appspecific_num, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_appspecific_data, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_flags, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_gaindb, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_horizbw, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_vertbw, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_pgain, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_beamid, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_serialnum, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_modelname, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_descstr, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_appspecific_num, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_appspecific_data, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_ext, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_antenna_present_ext, tvb, 4, 4, ENC_LITTLE_ENDIAN);
}
offset += PPI_GEOBASE_MIN_HEADER_LEN;
length_remaining -= PPI_GEOBASE_MIN_HEADER_LEN;
@ -234,13 +224,13 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/*Add antenna_flags bitfields here */
antennaflags_tree= proto_item_add_subtree(my_pt, ett_ppi_antennaflags);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_mimo, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_horizpol, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_vertpol, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_circpol_l, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_circpol_r, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_steer_elec, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_steer_mech, tvb, offset, 4, TRUE);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_mimo, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_horizpol, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_vertpol, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_circpol_l, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_circpol_r, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_steer_elec, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(antennaflags_tree, hf_ppi_antennaflags_steer_mech, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
offset+=4;
length_remaining-=4;
@ -261,7 +251,7 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_hbw = tvb_get_letohl(tvb, offset);
horizbw = fixed3_6_to_gdouble(t_hbw);
horizbw = ppi_fixed3_6_to_gdouble(t_hbw);
if (tree) {
proto_tree_add_double(ppi_antenna_tree, hf_ppi_antenna_horizbw, tvb, offset, 4, horizbw);
proto_item_append_text(antenna_line, " HorizBw: %f", horizbw);
@ -273,7 +263,7 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_vbw = tvb_get_letohl(tvb, offset);
vertbw = fixed3_6_to_gdouble(t_vbw);
vertbw = ppi_fixed3_6_to_gdouble(t_vbw);
if (tree) {
proto_tree_add_double(ppi_antenna_tree, hf_ppi_antenna_vertbw, tvb, offset, 4, vertbw);
}
@ -284,7 +274,7 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_pgain = tvb_get_letohl(tvb, offset);
pgain = fixed3_6_to_gdouble(t_pgain);
pgain = ppi_fixed3_6_to_gdouble(t_pgain);
if (tree) {
proto_tree_add_double(ppi_antenna_tree, hf_ppi_antenna_pgain, tvb, offset, 4, pgain);
}
@ -349,7 +339,7 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 60)
break;
if (tree) {
proto_tree_add_item(ppi_antenna_tree, hf_ppi_antenna_appspecific_data, tvb, offset, 60, FALSE);
proto_tree_add_item(ppi_antenna_tree, hf_ppi_antenna_appspecific_data, tvb, offset, 60, ENC_NA);
}
offset+=60;
length_remaining-=60;
@ -359,7 +349,8 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
* This indicates a field whose size we do not
* know, so we cannot proceed.
*/
proto_tree_add_text(ppi_antenna_tree, tvb, offset, 0, "Error: PPI-ANTENNA: unknown bit (%d) set in present field.\n", bit);
proto_tree_add_text(ppi_antenna_tree, tvb, offset, 0,
"Error: PPI-ANTENNA: unknown bit (%d) set in present field.\n", bit);
next_present = 0;
continue;
}
@ -370,7 +361,6 @@ void dissect_ppi_antenna(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
void
proto_register_ppi_antenna(void) {
/* The following array initializes those header fields declared above to the values displayed */
static hf_register_info hf[] = {
{ &hf_ppi_antenna_version,
{ "Header revision", "ppi_antenna.version",
@ -404,7 +394,7 @@ proto_register_ppi_antenna(void) {
#define PPI_ANTENNA_MASK_MODELSTR 0x08000000 /* 27 */
#define PPI_ANTENNA_MASK_DESCSTR 0x10000000 /* 28 */
#define PPI_ANTENNA_MASK_APPID 0x20000000 /* 29 */
#define PPI_ANTENNA_MASK_APPDATA 0x40000000 /* 30 */
#define PPI_ANTENNA_MASK_APPDATA 0x40000000 /* 30 */
#define PPI_ANTENNA_MASK_EXT 0x80000000 /* 31 */
/*This second set is for the AntennaFlags bitfield. */
@ -522,20 +512,20 @@ proto_register_ppi_antenna(void) {
{ &hf_ppi_antenna_pgain,
{ "Precision Gain (dBi)", "ppi_antenna.pgain",
FT_DOUBLE, BASE_NONE, NULL, 0x0,
"Precision Gain", HFILL } },
NULL, HFILL } },
{ &hf_ppi_antenna_beamid,
{ "BeamID", "ppi_antenna.beamid",
FT_UINT16, BASE_HEX, NULL, 0x0,
"Beam ID", HFILL } },
NULL, HFILL } },
{ &hf_ppi_antenna_serialnum,
{ "SerialNumber", "ppi_antenna.serialnum",
FT_STRING, BASE_NONE, NULL, 0x0,
"Serial number", HFILL } } ,
NULL, HFILL } } ,
{ &hf_ppi_antenna_modelname,
{ "ModelName", "ppi_antenna.modelname",
FT_STRING, BASE_NONE, NULL, 0x0,
"Model name", HFILL } } ,
NULL, HFILL } } ,
{ &hf_ppi_antenna_descstr,
{ "Description", "ppi_antenna.descr",
FT_STRING, BASE_NONE, NULL, 0x0,
@ -543,11 +533,11 @@ proto_register_ppi_antenna(void) {
{ &hf_ppi_antenna_appspecific_num,
{ "Application Specific id", "ppi_antenna.appid",
FT_UINT32, BASE_HEX, NULL, 0x0,
"Application-specific identifier", HFILL } },
NULL, HFILL } },
{ &hf_ppi_antenna_appspecific_data,
{ "Application specific data", "ppi_antenna.appdata",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Application-specific data", HFILL } },
NULL, HFILL } },
};
static gint *ett[] = {
&ett_ppi_antenna,
@ -561,3 +551,16 @@ proto_register_ppi_antenna(void) {
register_dissector("ppi_antenna", dissect_ppi_antenna, proto_ppi_antenna);
}
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab
* :indentSize=4:tabSize=8:noTabs=true:
*/

View File

@ -23,13 +23,14 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include <glib.h>
#include "packet-ppi-geolocation-common.h"
/*
* input: a unsigned 32-bit (native endian) value between 0 and 3600000000 (inclusive)
* output: a signed floating point value betwen -180.0000000 and + 180.0000000, inclusive)
*/
gdouble fixed3_7_to_gdouble(guint32 in) {
gdouble ppi_fixed3_7_to_gdouble(guint32 in) {
gint32 remapped_in = in - (180 * 10000000);
gdouble ret = (gdouble) ((gdouble) remapped_in / 10000000);
return ret;
@ -39,7 +40,7 @@ gdouble fixed3_7_to_gdouble(guint32 in) {
* output: a positive floating point value between 000.0000000 and 999.9999999
*/
gdouble fixed3_6_to_gdouble(guint32 in) {
gdouble ppi_fixed3_6_to_gdouble(guint32 in) {
gdouble ret = (gdouble) in / 1000000.0;
return ret;
@ -48,13 +49,13 @@ gdouble fixed3_6_to_gdouble(guint32 in) {
* input: a native 32 bit unsigned value between 0 and 3600000000
* output: a signed floating point value between -180000.0000 and +180000.0000
*/
gdouble fixed6_4_to_gdouble(guint32 in) {
gdouble ppi_fixed6_4_to_gdouble(guint32 in) {
gint32 remapped_in = in - (180000 * 10000);
gdouble ret = (gdouble) ((gdouble) remapped_in / 10000);
return ret;
}
gdouble ns_counter_to_gdouble(guint32 in) {
gdouble ppi_ns_counter_to_gdouble(guint32 in) {
gdouble ret;
ret = (gdouble) in / 1000000000;
return ret;

View File

@ -25,7 +25,6 @@
#ifndef __PPI_GEOLOCATION_COMMON_H
#define __PPI_GEOLOCATION_COMMON_H
#include <glib.h>
/*
* Declarations from shared PPI-GEOLOCATION functions.
@ -59,14 +58,14 @@
* the fixedX_Y fixed point values into 'native' gdoubles for displaying.
* Documentation on these formats can be found in the PPI-GEOLOCATION specification
*/
gdouble fixed3_7_to_gdouble(guint32 in);
gdouble fixed3_6_to_gdouble(guint32 in);
gdouble fixed6_4_to_gdouble(guint32 in);
gdouble ppi_fixed3_7_to_gdouble(guint32 in);
gdouble ppi_fixed3_6_to_gdouble(guint32 in);
gdouble ppi_fixed6_4_to_gdouble(guint32 in);
/*
* Some values are encoded as 32-bit unsigned nano-second counters.
* Usually we want to display these values as doubles.
*/
gdouble ns_counter_to_gdouble(guint32 in);
gdouble ppi_ns_counter_to_gdouble(guint32 in);
typedef enum {

View File

@ -30,12 +30,8 @@
#endif
#include <glib.h>
#include <string.h>
#include <epan/packet.h>
#include <epan/ptvcursor.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/dissectors/packet-ppi-geolocation-common.h>
#include "packet-ppi-geolocation-common.h"
enum ppi_geotagging_type {
PPI_GEOTAG_GPSFLAGS = 0,
@ -126,12 +122,10 @@ static gint ett_ppi_gps_present = -1;
static gint ett_ppi_gps_gpsflags_flags= -1;
static void
dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* These are locals used for processing the current tvb */
guint length;
guint length_remaining;
gint length_remaining;
int offset = 0;
proto_tree *ppi_gps_tree = NULL;
@ -162,11 +156,11 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
gps_timestamp.secs = gps_timestamp.nsecs = already_processed_fractime = 0;
/* Clear out stuff in the info column */
if (check_col(pinfo->cinfo,COL_INFO))
col_clear(pinfo->cinfo,COL_INFO);
col_clear(pinfo->cinfo,COL_INFO);
/* pull out the first three fields of the BASE-GEOTAG-HEADER */
version = tvb_get_guint8(tvb, offset);
length = tvb_get_letohs(tvb, offset+2);
length = tvb_get_letohs(tvb, offset+2);
present = tvb_get_letohl(tvb, offset+4);
/* Setup basic column info */
@ -179,7 +173,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
gps_line = ti; /*we will make this more useful if we hit lon/lat later */
ppi_gps_tree= proto_item_add_subtree(ti, ett_ppi_gps);
proto_tree_add_uint(ppi_gps_tree, hf_ppi_gps_version, tvb, offset, 1, version);
proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_pad, tvb, offset + 1, 1, FALSE);
proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_pad, tvb, offset + 1, 1, ENC_NA);
ti = proto_tree_add_uint(ppi_gps_tree, hf_ppi_gps_length, tvb, offset + 2, 2, length);
}
@ -215,20 +209,20 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
pt = proto_tree_add_uint(ppi_gps_tree, hf_ppi_gps_present, tvb, offset + 4, 4, present);
present_tree = proto_item_add_subtree(pt, ett_ppi_gps_present);
proto_tree_add_item(present_tree, hf_ppi_gps_present_gpsflags_flags, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_lat, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_lon, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_alt, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_alt_gnd, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_gpstime, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_fractime, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_eph, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_epv, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_ept, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_descr, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_appspecific_num, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_appspecific_data, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_ext, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_gps_present_gpsflags_flags, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_lat, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_lon, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_alt, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_alt_gnd, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_gpstime, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_fractime, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_eph, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_epv, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_ept, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_descr, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_appspecific_num, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_appspecific_data, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_gps_present_ext, tvb, 4, 4, ENC_LITTLE_ENDIAN);
}
offset += PPI_GEOBASE_MIN_HEADER_LEN;
length_remaining -= PPI_GEOBASE_MIN_HEADER_LEN;
@ -250,15 +244,15 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* then we add a subtree */
gpsflags_flags_tree = proto_item_add_subtree(my_pt, ett_ppi_gps_gpsflags_flags);
/* to pin the individual bits on */
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag0_nofix, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag1_gpsfix, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag2_diffgps, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag3_PPS, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag4_RTK, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag5_floatRTK, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag6_dead_reck, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag7_manual, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag8_sim, tvb, offset, 4, TRUE);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag0_nofix, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag1_gpsfix, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag2_diffgps, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag3_PPS, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag4_RTK, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag5_floatRTK, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag6_dead_reck, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag7_manual, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(gpsflags_flags_tree, hf_ppi_gps_gpsflags_flag8_sim, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
offset+=4;
length_remaining-=4;
@ -267,7 +261,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_lat = tvb_get_letohl(tvb, offset);
lat = fixed3_7_to_gdouble(t_lat);
lat = ppi_fixed3_7_to_gdouble(t_lat);
if (tree)
{
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_lat, tvb, offset, 4, lat);
@ -280,7 +274,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_lon = tvb_get_letohl(tvb, offset);
lon = fixed3_7_to_gdouble(t_lon);
lon = ppi_fixed3_7_to_gdouble(t_lon);
if (tree)
{
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_lon, tvb, offset, 4, lon);
@ -293,7 +287,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_alt = tvb_get_letohl(tvb, offset);
alt = fixed6_4_to_gdouble(t_alt);
alt = ppi_fixed6_4_to_gdouble(t_alt);
if (tree)
{
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_alt, tvb, offset, 4, alt);
@ -306,7 +300,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_alt_gnd = tvb_get_letohl(tvb, offset);
alt_gnd = fixed6_4_to_gdouble(t_alt_gnd);
alt_gnd = ppi_fixed6_4_to_gdouble(t_alt_gnd);
if (tree)
{
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_alt_gnd, tvb, offset, 4, alt_gnd);
@ -347,7 +341,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_herr = tvb_get_letohl(tvb, offset);
eph = fixed3_6_to_gdouble(t_herr);
eph = ppi_fixed3_6_to_gdouble(t_herr);
if (tree)
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_eph, tvb, offset, 4, eph);
offset+=4;
@ -357,7 +351,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_verr = tvb_get_letohl(tvb, offset);
epv = fixed3_6_to_gdouble(t_verr);
epv = ppi_fixed3_6_to_gdouble(t_verr);
if (tree)
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_epv, tvb, offset, 4, epv);
offset+=4;
@ -367,7 +361,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
t_terr = tvb_get_letohl(tvb, offset);
ept = ns_counter_to_gdouble(t_terr);
ept = ppi_ns_counter_to_gdouble(t_terr);
if (tree)
proto_tree_add_double(ppi_gps_tree, hf_ppi_gps_ept, tvb, offset, 4, ept);
offset+=4;
@ -378,7 +372,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
break;
if (tree)
{
/* proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_descstr, tvb, offset, 32, FALSE); */
/* proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_descstr, tvb, offset, 32, ENC_NA); */
curr_str = tvb_format_stringzpad(tvb, offset, 32); /* need to append_text this */
proto_tree_add_string(ppi_gps_tree, hf_ppi_gps_descstr, tvb, offset, 32, curr_str);
proto_item_append_text(gps_line, " (%s)", curr_str);
@ -400,7 +394,7 @@ void dissect_ppi_gps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 60)
break;
if (tree) {
proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_appspecific_data, tvb, offset, 60, FALSE);
proto_tree_add_item(ppi_gps_tree, hf_ppi_gps_appspecific_data, tvb, offset, 60, ENC_NA);
}
offset+=60;
length_remaining-=60;
@ -426,9 +420,9 @@ proto_register_ppi_gps(void) {
/* The following array initializes those header fields declared above to the values displayed */
static hf_register_info hf[] = {
{ &hf_ppi_gps_version,
{ "Header revision", "ppi_gps.version",
FT_UINT8, BASE_DEC, NULL, 0x0,
"Version of ppi_gps header format", HFILL } },
{ "Header revision", "ppi_gps.version",
FT_UINT8, BASE_DEC, NULL, 0x0,
"Version of ppi_gps header format", HFILL } },
{ &hf_ppi_gps_pad,
{ "Header pad", "ppi_gps.pad",
FT_UINT8, BASE_DEC, NULL, 0x0,
@ -564,7 +558,7 @@ proto_register_ppi_gps(void) {
{ &hf_ppi_gps_appspecific_num,
{ "Application Specific id", "ppi_gps.appid",
FT_UINT32, BASE_HEX, NULL, 0x0,
"Application-specific identifier", HFILL } },
NULL, HFILL } },
{ &hf_ppi_gps_appspecific_data,
{ "Application specific data", "ppi_gps.appdata",
FT_BYTES, BASE_NONE, NULL, 0x0,
@ -591,7 +585,7 @@ proto_register_ppi_gps(void) {
{ &hf_ppi_gps_gpsflags_flag2_diffgps, /* Differential GPS fix available */
{ "Differential GPS provided fix", "ppi_gps.gpsflagss.diffgps",
FT_BOOLEAN, 32, NULL, PPI_GPS_GPSFLAGS_FLAG2_DIFFGPS,
"DGPS provided fix", HFILL } },
NULL, HFILL } },
{ &hf_ppi_gps_gpsflags_flag3_PPS, /* PPS fix */
{ "PPS fix", "ppi_gps.gpsflagss.pps",
FT_BOOLEAN, 32, NULL, PPI_GPS_GPSFLAGS_FLAG3_PPS,

View File

@ -30,13 +30,9 @@
#endif
#include <glib.h>
#include <string.h>
#include <epan/packet.h>
#include <epan/ptvcursor.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/dissectors/packet-ppi-geolocation-common.h>
#include "packet-ppi-geolocation-common.h"
enum ppi_sensor_type {
PPI_SENSOR_SENSORTYPE = 0, /* Velocity, Acceleration, etc */
@ -136,12 +132,9 @@ static int hf_ppi_sensor_present_ext = -1;
static gint ett_ppi_sensor = -1;
static gint ett_ppi_sensor_present = -1;
static void
dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* used with ScaleFactor */
gdouble base_10_expt(int power)
static gdouble
base_10_expt(int power)
{
gdouble ret = 1;
int provide_frac = 0;
@ -165,7 +158,9 @@ gdouble base_10_expt(int power)
else
return (1.0/ret);
}
void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
static void
dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
/* The fixed values up front */
guint32 version;
guint length;
@ -311,7 +306,7 @@ void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
val_t = tvb_get_letohl(tvb, offset);
c_val = fixed6_4_to_gdouble(val_t);
c_val = ppi_fixed6_4_to_gdouble(val_t);
if (tree) {
my_pt = proto_tree_add_double(ppi_sensor_tree, hf_ppi_sensor_val_x, tvb, offset, 4, c_val);
proto_item_append_text (my_pt, " %s", unit_str);
@ -325,7 +320,7 @@ void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
val_t = tvb_get_letohl(tvb, offset);
c_val = fixed6_4_to_gdouble(val_t);
c_val = ppi_fixed6_4_to_gdouble(val_t);
if (tree) {
my_pt = proto_tree_add_double(ppi_sensor_tree, hf_ppi_sensor_val_y, tvb, offset, 4, c_val);
proto_item_append_text (my_pt, " %s", unit_str);
@ -340,7 +335,7 @@ void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
val_t = tvb_get_letohl(tvb, offset);
c_val = fixed6_4_to_gdouble(val_t);
c_val = ppi_fixed6_4_to_gdouble(val_t);
if (tree) {
my_pt = proto_tree_add_double(ppi_sensor_tree, hf_ppi_sensor_val_z, tvb, offset, 4, c_val);
proto_item_append_text (my_pt, " %s", unit_str);
@ -354,7 +349,7 @@ void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
val_t = tvb_get_letohl(tvb, offset);
c_val = fixed6_4_to_gdouble(val_t);
c_val = ppi_fixed6_4_to_gdouble(val_t);
if (tree) {
my_pt = proto_tree_add_double(ppi_sensor_tree, hf_ppi_sensor_val_t, tvb, offset, 4, c_val);
proto_item_append_text (my_pt, " %s", unit_str);
@ -368,7 +363,7 @@ void dissect_ppi_sensor(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
if (length_remaining < 4)
break;
val_t = tvb_get_letohl(tvb, offset);
c_val = fixed6_4_to_gdouble(val_t);
c_val = ppi_fixed6_4_to_gdouble(val_t);
if (tree) {
my_pt = proto_tree_add_double(ppi_sensor_tree, hf_ppi_sensor_val_e, tvb, offset, 4, c_val);
proto_item_append_text (my_pt, " %s", unit_str);
@ -563,3 +558,18 @@ proto_register_ppi_sensor(void) {
register_dissector("ppi_sensor", dissect_ppi_sensor, proto_ppi_sensor);
}
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab
* :indentSize=4:tabSize=8:noTabs=true:
*/

View File

@ -36,12 +36,8 @@
#endif
#include <glib.h>
#include <string.h>
#include <epan/packet.h>
#include <epan/ptvcursor.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include "packet-ppi-geolocation-common.h"
enum ppi_vector_type {
@ -148,11 +144,11 @@ enum ppi_vector_type {
/* Values for the two-bit RelativeTo subfield of vflags */
static const value_string relativeto_string[] = {
{ 0x00, "Forward"},
{ 0x01, "Earth"},
{ 0x02, "Current"},
{ 0x03, "Reserved"},
{ 0x00, NULL}
{ 0x00, "Forward"},
{ 0x01, "Earth"},
{ 0x02, "Current"},
{ 0x03, "Reserved"},
{ 0x00, NULL}
};
@ -272,8 +268,6 @@ static gint ett_ppi_vector_present = -1;
static gint ett_ppi_vectorflags= -1;
static gint ett_ppi_vectorchars= -1;
static void dissect_ppi_vector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
/* We want to abbreviate this field into a single line. Does so without any string maniuplation */
static void
@ -292,7 +286,7 @@ annotate_vector_chars(guint32 chars, proto_tree *my_pt)
}
static void
dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_tree *ppi_vector_tree)
dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, gint length_remaining, proto_tree *ppi_vector_tree)
{
proto_tree *vectorflags_tree = NULL;
proto_tree *vectorchars_tree = NULL;
@ -308,7 +302,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
gdouble vel_r, vel_f, vel_u, vel_t;
gdouble acc_r, acc_f, acc_u, acc_t = 0;
gdouble err_rot, err_off, err_vel, err_acc;
guint32 appsecific_num; /* appdata parser should add a subtree based on this value */
guint32 appsecific_num; /* appdata parser should add a subtree based on this value */
guint32 flags=0, chars=0;
/* temporary, conversion values */
@ -321,30 +315,30 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
tvb, offset + 4, 4, present);
present_tree = proto_item_add_subtree(pt, ett_ppi_vector_present);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vflags, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vchars, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_x, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_y, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_z, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_r, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_f, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_u, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_r, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_f, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_u, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_t, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_r, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_f, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_u, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_t, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_rot, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_off, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_vel, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_acc, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_descstr, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_presenappsecific_num, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_appspecific_data, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_ext, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vflags, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vchars, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_x, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_y, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_z, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_r, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_f, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_u, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_r, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_f, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_u, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vel_t, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_r, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_f, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_u, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_acc_t, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_rot, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_off, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_vel, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_acc, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_descstr, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_presenappsecific_num, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_appspecific_data, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_ext, tvb, 4, 4, ENC_LITTLE_ENDIAN);
}
offset += PPI_GEOBASE_MIN_HEADER_LEN;
length_remaining -= PPI_GEOBASE_MIN_HEADER_LEN;
@ -365,9 +359,9 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
my_pt = proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_vflags, tvb, offset , 4, flags);
vectorflags_tree= proto_item_add_subtree(my_pt, ett_ppi_vectorflags);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_defines_forward, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_rots_absolute, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_offsets_from_gps, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_defines_forward, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_rots_absolute, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_offsets_from_gps, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
offset+=4;
length_remaining-=4;
@ -380,14 +374,14 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
my_pt = proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_vchars, tvb, offset , 4, chars);
vectorchars_tree= proto_item_add_subtree(my_pt, ett_ppi_vectorchars);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_antenna, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_dir_of_travel, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_front_of_veh, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_gps_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_ins_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_compass_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_accelerometer_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_human_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_antenna, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_dir_of_travel, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_front_of_veh, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_gps_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_ins_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_compass_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_accelerometer_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_human_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
}
offset+=4;
length_remaining-=4;
@ -396,7 +390,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_x = fixed3_6_to_gdouble(t_val);
rot_x = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_x, tvb, offset, 4, rot_x);
if (flags & PPI_VECTOR_VFLAGS_ROTS_ABSOLUTE)
@ -411,7 +405,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_y = fixed3_6_to_gdouble(t_val);
rot_y = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_y, tvb, offset, 4, rot_y);
if (flags & PPI_VECTOR_VFLAGS_ROTS_ABSOLUTE)
@ -426,7 +420,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_z = fixed3_6_to_gdouble(t_val);
rot_z = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_z, tvb, offset, 4, rot_z);
if (flags & PPI_VECTOR_VFLAGS_ROTS_ABSOLUTE)
@ -441,7 +435,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_r = fixed6_4_to_gdouble(t_val);
off_r = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_r, tvb, offset, 4, off_r);
if (flags & PPI_VECTOR_VFLAGS_OFFSETS_FROM_GPS)
@ -456,7 +450,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_f = fixed6_4_to_gdouble(t_val);
off_f = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_f, tvb, offset, 4, off_f);
if (flags & PPI_VECTOR_VFLAGS_OFFSETS_FROM_GPS)
@ -471,7 +465,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_u = fixed6_4_to_gdouble(t_val);
off_u = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_u, tvb, offset, 4, off_u);
if (flags & PPI_VECTOR_VFLAGS_OFFSETS_FROM_GPS)
@ -486,7 +480,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
vel_r = fixed6_4_to_gdouble(t_val);
vel_r = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_vel_r, tvb, offset, 4, vel_r);
proto_item_append_text(ti, " m/s");
@ -498,7 +492,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
vel_f = fixed6_4_to_gdouble(t_val);
vel_f = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_vel_f, tvb, offset, 4, vel_f);
proto_item_append_text(ti, " m/s");
@ -510,7 +504,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
vel_u = fixed6_4_to_gdouble(t_val);
vel_u = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_vel_u, tvb, offset, 4, vel_u);
proto_item_append_text(ti, " m/s");
@ -522,7 +516,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
vel_t = fixed6_4_to_gdouble(t_val);
vel_t = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_vel_t, tvb, offset, 4, vel_t);
proto_item_append_text(ti, " m/s");
@ -534,7 +528,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
acc_r = fixed6_4_to_gdouble(t_val);
acc_r = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_acc_r, tvb, offset, 4, acc_r);
proto_item_append_text(ti, " (m/s)/s");
@ -546,7 +540,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
acc_f = fixed6_4_to_gdouble(t_val);
acc_f = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_acc_f, tvb, offset, 4, acc_f);
proto_item_append_text(ti, " (m/s)/s");
@ -558,7 +552,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
acc_u = fixed6_4_to_gdouble(t_val);
acc_u = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_acc_u, tvb, offset, 4, acc_u);
proto_item_append_text(ti, " (m/s)/s");
@ -570,7 +564,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
acc_t = fixed6_4_to_gdouble(t_val);
acc_t = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_acc_t, tvb, offset, 4, acc_t);
proto_item_append_text(ti, " (m/s)/s");
@ -581,8 +575,8 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_ROT:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_rot = fixed3_6_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_rot = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_rot, tvb, offset, 4, err_rot);
proto_item_append_text(ti, " degrees");
@ -593,8 +587,8 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_OFF:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_off = fixed6_4_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_off = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_off, tvb, offset, 4, err_off);
proto_item_append_text(ti, " meters");
@ -605,8 +599,8 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_VEL:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_vel = fixed6_4_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_vel = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_vel, tvb, offset, 4, err_vel);
proto_item_append_text(ti, "m/s");
@ -617,8 +611,8 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_ACC:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_acc = fixed6_4_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_acc = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_acc, tvb, offset, 4, err_acc);
proto_item_append_text(ti, " (m/s)/s");
@ -647,7 +641,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 60)
break;
if (ppi_vector_tree) {
proto_tree_add_item(ppi_vector_tree, hf_ppi_vector_appspecific_data, tvb, offset, 60, FALSE);
proto_tree_add_item(ppi_vector_tree, hf_ppi_vector_appspecific_data, tvb, offset, 60, ENC_NA);
}
offset+=60;
length_remaining-=60;
@ -667,7 +661,7 @@ dissect_ppi_vector_v1(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
}
static void
dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_tree *ppi_vector_tree, proto_item *vector_line)
dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, gint length_remaining, proto_tree *ppi_vector_tree, proto_item *vector_line)
{
proto_tree *vectorflags_tree = NULL;
proto_tree *vectorchars_tree = NULL;
@ -702,20 +696,20 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
tvb, offset + 4, 4, present);
present_tree = proto_item_add_subtree(pt, ett_ppi_vector_present);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vflags, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vchars, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_x, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_y, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_z, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_x, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_y, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_z, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_rot, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_off, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_descstr, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_presenappsecific_num, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_appspecific_data, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_ext, tvb, 4, 4, TRUE);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vflags, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_vchars, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_x, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_y, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_val_z, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_x, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_y, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_off_z, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_rot, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_err_off, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_descstr, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_presenappsecific_num, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_appspecific_data, tvb, 4, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(present_tree, hf_ppi_vector_present_ext, tvb, 4, 4, ENC_LITTLE_ENDIAN);
}
offset += PPI_GEOBASE_MIN_HEADER_LEN;
length_remaining -= PPI_GEOBASE_MIN_HEADER_LEN;
@ -774,8 +768,8 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
my_pt = proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_vflags, tvb, offset , 4, flags);
vectorflags_tree= proto_item_add_subtree(my_pt, ett_ppi_vectorflags);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_defines_forward, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_relative_to, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_defines_forward, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorflags_tree, hf_ppi_vector_vflags_relative_to, tvb, offset, 4, ENC_LITTLE_ENDIAN);
if (flags & PPI_VECTOR_VFLAGS_DEFINES_FORWARD)
proto_item_append_text(vectorflags_tree, " (Forward)");
@ -793,16 +787,16 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
my_pt = proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_vchars, tvb, offset , 4, chars);
vectorchars_tree= proto_item_add_subtree(my_pt, ett_ppi_vectorchars);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_antenna, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_dir_of_travel, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_front_of_veh, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_angle_of_arrival, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_transmitter_pos, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_gps_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_ins_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_compass_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_accelerometer_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_human_derived, tvb, offset, 4, TRUE);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_antenna, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_dir_of_travel, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_front_of_veh, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_angle_of_arrival, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_transmitter_pos, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_gps_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_ins_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_compass_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_accelerometer_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
proto_tree_add_item(vectorchars_tree, hf_ppi_vector_vchars_human_derived, tvb, offset, 4, ENC_LITTLE_ENDIAN);
annotate_vector_chars(chars, my_pt);
}
@ -813,7 +807,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_x = fixed3_6_to_gdouble(t_val);
rot_x = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_x, tvb, offset, 4, rot_x);
proto_item_append_text(ti, " Degrees RelativeTo: %s", relativeto_str);
@ -826,7 +820,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_y = fixed3_6_to_gdouble(t_val);
rot_y = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_y, tvb, offset, 4, rot_y);
proto_item_append_text(ti, " Degrees RelativeTo: %s", relativeto_str);
@ -839,7 +833,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
rot_z = fixed3_6_to_gdouble(t_val);
rot_z = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_rot_z, tvb, offset, 4, rot_z);
proto_item_append_text(ti, " Degrees RelativeTo: %s", relativeto_str);
@ -852,7 +846,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_x = fixed6_4_to_gdouble(t_val);
off_x = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_x, tvb, offset, 4, off_x);
proto_item_append_text(ti, " Meters RelativeTo: %s", relativeto_str);
@ -865,7 +859,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_y = fixed6_4_to_gdouble(t_val);
off_y = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_y, tvb, offset, 4, off_y);
proto_item_append_text(ti, " Meters RelativeTo: %s", relativeto_str);
@ -878,7 +872,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
off_z = fixed6_4_to_gdouble(t_val);
off_z = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_off_z, tvb, offset, 4, off_z);
proto_item_append_text(ti, " Meters RelativeTo: %s", relativeto_str);
@ -890,8 +884,8 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_ROT:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_rot = fixed3_6_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_rot = ppi_fixed3_6_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_rot, tvb, offset, 4, err_rot);
proto_item_append_text(ti, " Degrees");
@ -902,8 +896,8 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
case PPI_VECTOR_ERR_OFF:
if (length_remaining < 4)
break;
t_val = tvb_get_letohl(tvb, offset);
err_off = fixed6_4_to_gdouble(t_val);
t_val = tvb_get_letohl(tvb, offset);
err_off = ppi_fixed6_4_to_gdouble(t_val);
if (ppi_vector_tree) {
ti = proto_tree_add_double(ppi_vector_tree, hf_ppi_vector_err_off, tvb, offset, 4, err_off);
proto_item_append_text(ti, " Meters");
@ -939,7 +933,7 @@ dissect_ppi_vector_v2(tvbuff_t *tvb, int offset, guint length_remaining, proto_t
if (length_remaining < 60)
break;
if (ppi_vector_tree) {
proto_tree_add_item(ppi_vector_tree, hf_ppi_vector_appspecific_data, tvb, offset, 60, FALSE);
proto_tree_add_item(ppi_vector_tree, hf_ppi_vector_appspecific_data, tvb, offset, 60, ENC_NA);
}
offset+=60;
length_remaining-=60;
@ -965,7 +959,7 @@ dissect_ppi_vector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *ppi_vector_tree = NULL;
proto_item *ti = NULL;
proto_item *vector_line = NULL;
guint length_remaining;
gint length_remaining;
int offset = 0;
/* values actually read out, for displaying */
@ -973,12 +967,11 @@ dissect_ppi_vector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint length;
/* Clear out stuff in the info column */
if (check_col(pinfo->cinfo,COL_INFO)) {
col_clear(pinfo->cinfo,COL_INFO);
}
/* pull out the first three fields of the BASE-GEOTAG-HEADER */
version = tvb_get_guint8(tvb, offset);
length = tvb_get_letohs(tvb, offset+2);
length = tvb_get_letohs(tvb, offset+2);
/* Setup basic column info */
if (check_col(pinfo->cinfo, COL_INFO))
@ -993,7 +986,7 @@ dissect_ppi_vector(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_version,
tvb, offset, 1, version);
proto_tree_add_item(ppi_vector_tree, hf_ppi_vector_pad,
tvb, offset + 1, 1, FALSE);
tvb, offset + 1, 1, ENC_NA);
ti = proto_tree_add_uint(ppi_vector_tree, hf_ppi_vector_length,
tvb, offset + 2, 2, length);
}
@ -1055,7 +1048,8 @@ proto_register_ppi_vector(void)
"Length of header including version, pad, length and data fields", HFILL } },
{ &hf_ppi_vector_present,
{ "Present", "ppi_vector.present",
FT_UINT32, BASE_HEX, NULL, 0x0, "Bitmask indicating which fields are present", HFILL } },
FT_UINT32, BASE_HEX, NULL, 0x0,
"Bitmask indicating which fields are present", HFILL } },
/* Boolean 'present' flags */
{ &hf_ppi_vector_present_vflags,
@ -1202,10 +1196,12 @@ proto_register_ppi_vector(void)
/* This setups the "Vector fflags" hex dropydown thing */
{ &hf_ppi_vector_vflags,
{ "Vector flags", "ppi_vector.vector_flags",
FT_UINT32, BASE_HEX, NULL, 0x0, "Bitmask indicating coordinate sys, among others, etc", HFILL } },
FT_UINT32, BASE_HEX, NULL, 0x0,
"Bitmask indicating coordinate sys, among others, etc", HFILL } },
{ &hf_ppi_vector_vchars,
{ "Vector chars", "ppi_vector.vector_chars",
FT_UINT32, BASE_HEX, NULL, 0x0, "Bitmask indicating if vector tracks antenna, vehicle, motion, etc", HFILL } },
FT_UINT32, BASE_HEX, NULL, 0x0,
"Bitmask indicating if vector tracks antenna, vehicle, motion, etc", HFILL } },
{ &hf_ppi_vector_rot_x,
{ "Pitch ", "ppi_vector.pitch", /*extra spaces intentional. casuses field values to align*/
FT_DOUBLE, BASE_NONE, NULL, 0x0,
@ -1398,3 +1394,18 @@ proto_register_ppi_vector(void)
register_dissector("ppi_vector", dissect_ppi_vector, proto_ppi_vector);
}
/*
* Editor modelines
*
* Local Variables:
* c-basic-offset: 4
* tab-width: 8
* indent-tabs-mode: nil
* End:
*
* ex: set shiftwidth=4 tabstop=8 expandtab
* :indentSize=4:tabSize=8:noTabs=true:
*/

View File

@ -55,7 +55,6 @@
#include <epan/ptvcursor.h>
#include <epan/prefs.h>
#include <epan/reassemble.h>
#include <epan/range.h>
#include <epan/frequency-utils.h>
/* Needed for wtap_pcap_encap_to_wtap_encap(). */
@ -372,9 +371,6 @@ static GHashTable *ampdu_reassembled_table = NULL;
static gboolean ppi_ampdu_reassemble = TRUE;
static void
dissect_ppi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
void
capture_ppi(const guchar *pd, int len, packet_counts *ld)
{
@ -421,7 +417,8 @@ capture_ppi(const guchar *pd, int len, packet_counts *ld)
ld->other++;
}
static void ptvcursor_add_invalid_check(ptvcursor_t *csr, int hf, gint len, guint64 invalid_val) {
static void
ptvcursor_add_invalid_check(ptvcursor_t *csr, int hf, gint len, guint64 invalid_val) {
proto_item *ti;
guint64 val = invalid_val;
@ -596,7 +593,8 @@ dissect_80211n_mac(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
ptvcursor_free(csr);
}
static void dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int data_len, guint32 *n_mac_flags, guint32 *ampdu_id)
static void
dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int data_len, guint32 *n_mac_flags, guint32 *ampdu_id)
{
proto_tree *ftree = NULL;
proto_item *ti = NULL;
@ -669,7 +667,8 @@ static void dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree
ptvcursor_free(csr);
}
static void dissect_aggregation_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
static void
dissect_aggregation_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
{
proto_tree *ftree = tree;
proto_item *ti = NULL;
@ -691,7 +690,8 @@ static void dissect_aggregation_extension(tvbuff_t *tvb, packet_info *pinfo _U_,
ptvcursor_free(csr);
}
static void dissect_8023_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
static void
dissect_8023_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
{
proto_tree *ftree = tree;
proto_item *ti = NULL;