diff options
Diffstat (limited to 'epan/dissectors/asn1/ulp/packet-ulp-template.c')
-rw-r--r-- | epan/dissectors/asn1/ulp/packet-ulp-template.c | 123 |
1 files changed, 61 insertions, 62 deletions
diff --git a/epan/dissectors/asn1/ulp/packet-ulp-template.c b/epan/dissectors/asn1/ulp/packet-ulp-template.c index 8e0355ed1f..bae4941971 100644 --- a/epan/dissectors/asn1/ulp/packet-ulp-template.c +++ b/epan/dissectors/asn1/ulp/packet-ulp-template.c @@ -44,7 +44,7 @@ static dissector_handle_t lpp_handle; #define ULP_PORT 7275 /* Initialize the protocol and registered fields */ -static int proto_ulp = -1; +static int proto_ulp; #define ULP_HEADER_SIZE 2 @@ -52,22 +52,23 @@ static int proto_ulp = -1; static gboolean ulp_desegment = TRUE; #include "packet-ulp-hf.c" -static int hf_ulp_mobile_directory_number = -1; -static int hf_ulp_ganssTimeModels_bit0 = -1; -static int hf_ulp_ganssTimeModels_bit1 = -1; -static int hf_ulp_ganssTimeModels_bit2 = -1; -static int hf_ulp_ganssTimeModels_bit3 = -1; -static int hf_ulp_ganssTimeModels_bit4 = -1; -static int hf_ulp_ganssTimeModels_spare = -1; +static int hf_ulp_mobile_directory_number; +static int hf_ulp_ganssTimeModels_bit0; +static int hf_ulp_ganssTimeModels_bit1; +static int hf_ulp_ganssTimeModels_bit2; +static int hf_ulp_ganssTimeModels_bit3; +static int hf_ulp_ganssTimeModels_bit4; +static int hf_ulp_ganssTimeModels_spare; /* Initialize the subtree pointers */ -static gint ett_ulp = -1; -static gint ett_ulp_setid = -1; -static gint ett_ulp_thirdPartyId = -1; -static gint ett_ulp_ganssTimeModels = -1; +static gint ett_ulp; +static gint ett_ulp_setid; +static gint ett_ulp_thirdPartyId; +static gint ett_ulp_ganssTimeModels; #include "packet-ulp-ett.c" static dissector_handle_t ulp_tcp_handle; +static dissector_handle_t ulp_pdu_handle; static const value_string ulp_ganss_id_vals[] = { { 0, "Galileo"}, @@ -91,18 +92,18 @@ static void ulp_ganssDataBitInterval_fmt(gchar *s, guint32 v) { if (v == 15) { - g_snprintf(s, ITEM_LABEL_LENGTH, "Time interval is not specified (15)"); + snprintf(s, ITEM_LABEL_LENGTH, "Time interval is not specified (15)"); } else { double interval = (0.1*pow(2, (double)v)); - g_snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", interval, v); + snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", interval, v); } } static void ulp_ExtendedEphemeris_validity_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%uh (%u)", 4*v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%uh (%u)", 4*v, v); } static void @@ -110,7 +111,7 @@ ulp_PositionEstimate_latitude_fmt(gchar *s, guint32 v) { double latitude = ((double)v*90)/pow(2,23); - g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", latitude, v); + snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", latitude, v); } static void @@ -118,18 +119,18 @@ ulp_PositionEstimate_longitude_fmt(gchar *s, guint32 v) { double longitude = ((double)(gint32)v*360)/pow(2,24); - g_snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v); + snprintf(s, ITEM_LABEL_LENGTH, "%g degrees (%u)", longitude, v); } static void ulp_NMRelement_rxLev_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev < -110dBm (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "RxLev < -110dBm (0)"); } else if (v == 63) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev >= -48dBm (63)"); + snprintf(s, ITEM_LABEL_LENGTH, "RxLev >= -48dBm (63)"); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RxLev < %ddBm (%u)", -111+v, -110+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RxLev < %ddBm (%u)", -111+v, -110+v, v); } } @@ -137,13 +138,13 @@ static void ulp_UTRA_CarrierRSSI_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100dBm (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100dBm (0)"); } else if (v == 76) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI >= -25dBm (76)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSSI >= -25dBm (76)"); } else if (v > 76) { - g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSSI < %ddBm (%u)", -101+v, -100+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSSI < %ddBm (%u)", -101+v, -100+v, v); } } @@ -151,13 +152,13 @@ static void ulp_PrimaryCCPCH_RSCP_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP < -115dBm (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSCP < -115dBm (0)"); } else if (v == 91) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP >= -25dBm (91)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSCP >= -25dBm (91)"); } else if (v > 91) { - g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSCP < %ddBm (%u)", -116+v, -115+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSCP < %ddBm (%u)", -116+v, -115+v, v); } } @@ -165,13 +166,13 @@ static void ulp_CPICH_Ec_N0_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 < -24dB (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 < -24dB (0)"); } else if (v == 49) { - g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 >= 0dB (49)"); + snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 >= 0dB (49)"); } else if (v > 49) { - g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= CPICH Ec/N0 < %.1fdB (%u)", -24.5+((float)v/2), -24+((float)v/2), v); + snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= CPICH Ec/N0 < %.1fdB (%u)", -24.5+((float)v/2), -24+((float)v/2), v); } } @@ -179,15 +180,15 @@ static void ulp_CPICH_RSCP_fmt(gchar *s, guint32 v) { if (v == 123) { - g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP < -120dBm (123)"); + snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP < -120dBm (123)"); } else if (v > 123) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= CPICH RSCP < %ddBm (%u)", -244+v, -243+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= CPICH RSCP < %ddBm (%u)", -244+v, -243+v, v); } else if (v == 91) { - g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP >= -25dBm (91)"); + snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP >= -25dBm (91)"); } else if (v < 91) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < CPICH RSCP <= %ddBm (%u)", -116+v, -115+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm < CPICH RSCP <= %ddBm (%u)", -116+v, -115+v, v); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); } } @@ -197,9 +198,9 @@ ulp_QoP_horacc_fmt(gchar *s, guint32 v) double uncertainty = 10*(pow(1.1, (double)v)-1); if (uncertainty < 1000) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v); + snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%fkm (%u)", uncertainty/1000, v); + snprintf(s, ITEM_LABEL_LENGTH, "%fkm (%u)", uncertainty/1000, v); } } @@ -208,13 +209,13 @@ ulp_QoP_veracc_fmt(gchar *s, guint32 v) { double uncertainty = 45*(pow(1.025, (double)v)-1); - g_snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v); + snprintf(s, ITEM_LABEL_LENGTH, "%fm (%u)", uncertainty, v); } static void ulp_QoP_delay_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", pow(2, (double)v), v); + snprintf(s, ITEM_LABEL_LENGTH, "%gs (%u)", pow(2, (double)v), v); } static const true_false_string ulp_vertical_dir_val = { @@ -225,18 +226,18 @@ static const true_false_string ulp_vertical_dir_val = { static void ulp_RelativeTime_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.2fs (%u)", 0.01*v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%.2fs (%u)", 0.01*v, v); } static void ulp_RSRP_Range_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSRP < -140dBm (0)"); } else if (v == 97) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP >= -44dBm (97)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSRP >= -44dBm (97)"); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSRP < %ddBm (%u)", -141+v, -140+v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= RSRP < %ddBm (%u)", -141+v, -140+v, v); } } @@ -244,36 +245,36 @@ static void ulp_RSRQ_Range_fmt(gchar *s, guint32 v) { if (v == 0) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)"); } else if (v == 64) { - g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ >= -3dB (34)"); + snprintf(s, ITEM_LABEL_LENGTH, "RSRQ >= -3dB (34)"); } else { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RSRQ < %.1fdB (%u)", -20+((float)v/2), -19.5+((float)v/2), v); + snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= RSRQ < %.1fdB (%u)", -20+((float)v/2), -19.5+((float)v/2), v); } } static void ulp_SignalDelta_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%sdB (%u)", v ? "0.5" : "0", v); + snprintf(s, ITEM_LABEL_LENGTH, "%sdB (%u)", v ? "0.5" : "0", v); } static void ulp_locationAccuracy_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%u)", 0.1*v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%.1fm (%u)", 0.1*v, v); } static void ulp_WimaxRTD_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.01*v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.01*v, v); } static void ulp_WimaxNMR_rssi_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.2fdBm (%u)", -103.75+(0.25*v), v); + snprintf(s, ITEM_LABEL_LENGTH, "%.2fdBm (%u)", -103.75+(0.25*v), v); } static void @@ -281,7 +282,7 @@ ulp_UTRAN_gpsReferenceTimeUncertainty_fmt(gchar *s, guint32 v) { double uncertainty = 0.0022*(pow(1.18, (double)v)-1); - g_snprintf(s, ITEM_LABEL_LENGTH, "%fus (%u)", uncertainty, v); + snprintf(s, ITEM_LABEL_LENGTH, "%fus (%u)", uncertainty, v); } static const value_string ulp_ganss_time_id_vals[] = { @@ -295,13 +296,13 @@ static const value_string ulp_ganss_time_id_vals[] = { static void ulp_utran_GANSSTimingOfCell_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.25*v, v); + snprintf(s, ITEM_LABEL_LENGTH, "%.2fus (%u)", 0.25*v, v); } static void ulp_Coordinate_latitude_fmt(gchar *s, guint32 v) { - g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)", + snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)", ((float)v/8388607.0)*90, v); } @@ -310,7 +311,7 @@ ulp_Coordinate_longitude_fmt(gchar *s, guint32 v) { gint32 longitude = (gint32) v; - g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)", + snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)", ((float)longitude/8388608.0)*180, longitude); } @@ -403,6 +404,7 @@ void proto_register_ulp(void) { /* Register protocol */ proto_ulp = proto_register_protocol(PNAME, PSNAME, PFNAME); ulp_tcp_handle = register_dissector("ulp", dissect_ulp_tcp, proto_ulp); + ulp_pdu_handle = register_dissector("ulp.pdu", dissect_ULP_PDU_PDU, proto_ulp); /* Register fields and subtrees */ proto_register_field_array(proto_ulp, hf, array_length(hf)); @@ -422,15 +424,12 @@ void proto_register_ulp(void) { void proto_reg_handoff_ulp(void) { - dissector_handle_t ulp_udp_handle; - - dissector_add_string("media_type","application/oma-supl-ulp", ulp_tcp_handle); - dissector_add_string("media_type","application/vnd.omaloc-supl-init", ulp_tcp_handle); - ulp_udp_handle = create_dissector_handle(dissect_ULP_PDU_PDU, proto_ulp); rrlp_handle = find_dissector_add_dependency("rrlp", proto_ulp); lpp_handle = find_dissector_add_dependency("lpp", proto_ulp); + dissector_add_string("media_type","application/oma-supl-ulp", ulp_pdu_handle); + dissector_add_string("media_type","application/vnd.omaloc-supl-init", ulp_pdu_handle); dissector_add_uint_with_preference("tcp.port", ULP_PORT, ulp_tcp_handle); - dissector_add_uint_with_preference("udp.port", ULP_PORT, ulp_udp_handle); + dissector_add_uint_with_preference("udp.port", ULP_PORT, ulp_pdu_handle); } |