diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-12-13 20:14:22 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-12-13 21:57:48 +0000 |
commit | 5cbdea74edb1f5cab3b1bb550c79b91466ede5d5 (patch) | |
tree | 62f92e6b45f2248107aabaf91796695c451da22d | |
parent | b0caa0616bc2991468f0119573b9c509edf4287f (diff) |
ULP: prettify dissection
Bug: 11039
Change-Id: I1d39367818a0039bc3100cd464baa6268c8863dd
Reviewed-on: https://code.wireshark.org/review/12603
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
-rw-r--r-- | asn1/ulp/packet-ulp-template.c | 294 | ||||
-rw-r--r-- | asn1/ulp/ulp.cnf | 661 | ||||
-rw-r--r-- | epan/dissectors/packet-ulp.c | 1843 |
3 files changed, 2514 insertions, 284 deletions
diff --git a/asn1/ulp/packet-ulp-template.c b/asn1/ulp/packet-ulp-template.c index 13512f845a..4e35e33a3b 100644 --- a/asn1/ulp/packet-ulp-template.c +++ b/asn1/ulp/packet-ulp-template.c @@ -26,6 +26,8 @@ #include "config.h" +#include "math.h" + #include <epan/packet.h> #include <epan/prefs.h> #include <epan/asn1.h> @@ -62,16 +64,281 @@ 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; /* 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; #include "packet-ulp-ett.c" +static const value_string ulp_ganss_id_vals[] = { + { 0, "Galileo"}, + { 1, "SBAS"}, + { 2, "Modernized GPS"}, + { 3, "QZSS"}, + { 4, "GLONASS"}, + { 5, "BDS"}, + { 0, NULL}, +}; + +static const value_string ulp_ganss_sbas_id_vals[] = { + { 0, "WAAS"}, + { 1, "EGNOS"}, + { 2, "MSAS"}, + { 3, "GAGAN"}, + { 0, NULL}, +}; + +static void +ulp_ganssDataBitInterval_fmt(gchar *s, guint32 v) +{ + if (v == 15) { + g_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, "%g s (%u)", interval, v); + } +} + +static void +ulp_ExtendedEphemeris_validity_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%u h (%u)", 4*v, v); +} + +static void +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); +} + +static void +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); +} + +static void +ulp_NMRelement_rxLev_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev < -110 dBm (0)"); + } else if (v == 63) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev >= -48 dBm (63)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RxLev < %d dBm (%u)", -111+v, -110+v, v); + } +} + +static void +ulp_UTRA_CarrierRSSI_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100 dBm (0)"); + } else if (v == 76) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI >= -25 dBm (76)"); + } else if (v > 76) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSSI < %d dBm (%u)", -101+v, -100+v, v); + } +} + +static void +ulp_PrimaryCCPCH_RSCP_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP < -115 dBm (0)"); + } else if (v == 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP >= -25 dBm (91)"); + } else if (v > 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSCP < %d dBm (%u)", -116+v, -115+v, v); + } +} + +static void +ulp_CPICH_Ec_N0_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 < -24 dB (0)"); + } else if (v == 49) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 >= 0 dB (49)"); + } else if (v > 49) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f dB <= CPICH Ec/N0 < %.1f dB (%u)", -24.5+((float)v/2), -24+((float)v/2), v); + } +} + +static void +ulp_CPICH_RSCP_fmt(gchar *s, guint32 v) +{ + if (v == 123) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP < -120 dBm (123)"); + } else if (v > 123) { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= CPICH RSCP < %d dBm (%u)", -244+v, -243+v, v); + } else if (v == 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP >= -25 dBm (91)"); + } else if (v < 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm < CPICH RSCP <= %d dBm (%u)", -116+v, -115+v, v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } +} + +static void +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, "%f m (%u)", uncertainty, v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%f km (%u)", uncertainty/1000, v); + } +} + +static void +ulp_QoP_veracc_fmt(gchar *s, guint32 v) +{ + double uncertainty = 45*(pow(1.025, (double)v)-1); + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f m (%u)", uncertainty, v); +} + +static void +ulp_QoP_delay_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%u)", pow(2, (double)v), v); +} + +static const true_false_string ulp_vertical_dir_val = { + "Downward", + "Upward" +}; + +static void +ulp_RelativeTime_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f s (%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 < -140 dBm (0)"); + } else if (v == 97) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP >= -44 dBm (97)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSRP < %d dBm (%u)", -141+v, -140+v, v); + } +} + +static void +ulp_RSRQ_Range_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)"); + } else if (v == 64) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ >= -3 dB (34)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f dB <= RSRQ < %.1f dB (%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, "%s dB (%u)", v ? "0.5" : "0", v); +} + +static void +ulp_locationAccuracy_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f m (%u)", 0.1*v, v); +} + +static void +ulp_WimaxRTD_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f us (%u)", 0.01*v, v); +} + +static void +ulp_WimaxNMR_rssi_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f dBm (%u)", -103.75+(0.25*v), v); +} + +static void +ulp_UTRAN_gpsReferenceTimeUncertainty_fmt(gchar *s, guint32 v) +{ + double uncertainty = 0.0022*(pow(1.18, (double)v)-1); + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f us (%u)", uncertainty, v); +} + +static const value_string ulp_ganss_time_id_vals[] = { + { 0, "Galileo"}, + { 1, "QZSS"}, + { 2, "GLONASS"}, + { 3, "BDS"}, + { 0, NULL}, +}; + +static void +ulp_utran_GANSSTimingOfCell_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f us (%u)", 0.25*v, v); +} + +static void +ulp_Coordinate_latitude_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)", + ((float)v/8388607.0)*90, v); +} + +static void +ulp_Coordinate_longitude_fmt(gchar *s, guint32 v) +{ + gint32 longitude = (gint32) v; + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)", + ((float)longitude/8388608.0)*180, longitude); +} + /* Include constants */ #include "packet-ulp-val.h" +typedef struct +{ + guint8 notif_enc_type; + guint8 ganss_req_gen_data_ganss_id; +} ulp_private_data_t; + +static ulp_private_data_t* ulp_get_private_data(asn1_ctx_t *actx) +{ + if (actx->private_data == NULL) { + actx->private_data = wmem_new0(wmem_packet_scope(), ulp_private_data_t); + } + return (ulp_private_data_t*)actx->private_data; +} #include "packet-ulp-fn.c" @@ -103,7 +370,31 @@ void proto_register_ulp(void) { { &hf_ulp_mobile_directory_number, { "Mobile Directory Number", "ulp.mobile_directory_number", FT_STRING, BASE_NONE, NULL, 0, - NULL, HFILL }} + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit0, + { "GPS", "ulp.ganssTimeModels.gps", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit1, + { "Galileo", "ulp.ganssTimeModels.galileo", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit2, + { "QZSS", "ulp.ganssTimeModels.qzss", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit3, + { "GLONASS", "ulp.ganssTimeModels.glonass", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit4, + { "BDS", "ulp.ganssTimeModels.bds", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_spare, + { "Spare", "ulp.ganssTimeModels.spare", + FT_UINT16, BASE_HEX, NULL, 0x07ff, + NULL, HFILL }}, }; /* List of subtrees */ @@ -111,6 +402,7 @@ void proto_register_ulp(void) { &ett_ulp, &ett_ulp_setid, &ett_ulp_thirdPartyId, + &ett_ulp_ganssTimeModels, #include "packet-ulp-ettarr.c" }; diff --git a/asn1/ulp/ulp.cnf b/asn1/ulp/ulp.cnf index 55fec09162..05d8550c14 100644 --- a/asn1/ulp/ulp.cnf +++ b/asn1/ulp/ulp.cnf @@ -11,7 +11,6 @@ UNALIGNED ULP-PDU #.END - #.TYPE_RENAME FrequencyInfo/modeSpecificInfo FrequencySpecificInfo #.END @@ -22,6 +21,8 @@ FrequencyInfo/modeSpecificInfo/fdd fdd_fr FrequencyInfo/modeSpecificInfo/tdd tdd_fr SlpSessionID/sessionID sessionSlpID SETId/min minsi +Coordinate/latitude CoordinateLatitude +Coordinate/longitude CoordinateLongitude #.END #.FN_HDR ULP-PDU @@ -49,6 +50,91 @@ guint32 UlpMessage; #.END +#.FN_BODY Notification + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + + ulp_priv->notif_enc_type = -1; +%(DEFAULT_BODY)s + +#.FN_BODY EncodingType VAL_PTR=&val + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + +%(DEFAULT_BODY)s + ulp_priv->notif_enc_type = (guint8) val; + +#.FN_BODY Notification/requestorId VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + switch(ulp_priv->notif_enc_type) { + case 0: /* UCS-2 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + ENC_UCS_2|ENC_BIG_ENDIAN); + break; + case 1: /* GSM 7bits */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case 2: /* UTF-8 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA); + break; + default: + actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + tvb_bytes_to_str(wmem_packet_scope(), val_tvb, 0, + tvb_reported_length(val_tvb))); + break; + } + } + +#.TYPE_ATTR +Notification/requestorId TYPE=FT_STRING DISPLAY=STR_UNICODE + +#.FN_BODY Notification/clientName VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + switch(ulp_priv->notif_enc_type) { + case 0: /* UCS-2 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + ENC_UCS_2|ENC_BIG_ENDIAN); + break; + case 1: /* GSM 7bits */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case 2: /* UTF-8 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA); + break; + default: + actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + tvb_bytes_to_str(wmem_packet_scope(), val_tvb, 0, + tvb_reported_length(val_tvb))); + break; + } + } + +#.TYPE_ATTR +Notification/clientName TYPE=FT_STRING DISPLAY=STR_UNICODE + +#.FN_BODY NavigationModel/gpsToe +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " hr"); + +#.FN_BODY NavigationModel/toeLimit +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " hr"); + #.FN_BODY PosPayLoad/rrlpPayload VAL_PTR = &rrlp_tvb tvbuff_t *rrlp_tvb; @@ -58,6 +144,153 @@ guint32 UlpMessage; call_dissector(rrlp_handle, rrlp_tvb, %(ACTX)s->pinfo, tree); } +#.FN_BODY PeriodicParams/intervalBetweenFixes +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY PeriodicParams/startTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY AreaEventParams/startTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY AreaEventParams/stopTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY RepeatedReportingParams/minimumIntervalTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY WLANAreaId/apMACAddress VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + +#.TYPE_ATTR +WLANAreaId/apMACAddress TYPE=FT_ETHER + +#.TYPE_ATTR +GANSSSignalsDescription/ganssId STRINGS=VALS(ulp_ganss_id_vals) + +#.FN_BODY TimeStamp/relativeTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY ReportingCriteria/minTimeInterval +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY TimeWindow/startTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " min"); + +#.FN_BODY TimeWindow/stopTime +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " min"); + +#.TYPE_ATTR +GANSSPositionMethod/ganssId STRINGS=VALS(ulp_ganss_id_vals) + +#.FN_BODY GANSSPositionMethod/ganssSBASid VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA); + } + +#.TYPE_ATTR +GANSSPositionMethod/ganssSBASid TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(ulp_ganss_sbas_id_vals) + +#.FN_BODY GanssReqGenericData/ganssId VAL_PTR=&val + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + +%(DEFAULT_BODY)s + ulp_priv->ganss_req_gen_data_ganss_id = (guint8) val; + +#.TYPE_ATTR +GanssReqGenericData/ganssId STRINGS=VALS(ulp_ganss_id_vals) + +#.FN_BODY GanssReqGenericData/ganssSBASid VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA); + } + +#.TYPE_ATTR +GanssReqGenericData/ganssSBASid TYPE=FT_UINT8 DISPLAY=BASE_DEC STRINGS=VALS(ulp_ganss_sbas_id_vals) + +#.FN_BODY GanssReqGenericData/ganssTimeModels VAL_PTR=&val_tvb + tvbuff_t *val_tvb; +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_ulp_ganssTimeModels); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit0, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit1, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit2, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit3, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit4, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_spare, val_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +#.FN_BODY GanssNavigationModelData/ganssWeek + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + +%(DEFAULT_BODY)s + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " wk"); + } else { + proto_item_append_text(actx->created_item, " d"); + } + +#.FN_BODY GanssNavigationModelData/ganssToe VAL_PTR=&val + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + +%(DEFAULT_BODY)s + +#.FN_FTR GanssNavigationModelData/ganssToe + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " h"); + } else { + proto_item_set_text(actx->created_item, "%u min (%u)", 15*val, val); + } + +#.FN_BODY GanssNavigationModelData/t-toeLimit VAL_PTR=&val + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + +%(DEFAULT_BODY)s + +#.FN_FTR GanssNavigationModelData/t-toeLimit + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " h"); + } else { + proto_item_set_text(actx->created_item, "%u min (%u)", 30*val, val); + } + +#.FN_BODY GanssDataBits/ganssTODmin +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.TYPE_ATTR +ReqDataBitAssistanceList/ganssDataBitInterval DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_ganssDataBitInterval_fmt) + +#.TYPE_ATTR +ExtendedEphemeris/validity DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_ExtendedEphemeris_validity_fmt) + #.FN_BODY Ver2-PosPayLoad-extension/lPPPayload/_item VAL_PTR = &lpp_tvb tvbuff_t *lpp_tvb; @@ -97,6 +330,397 @@ guint32 UlpMessage; dissect_e212_imsi(imsi_tvb, actx->pinfo, subtree, 0, 8, FALSE); } +#.TYPE_ATTR +IPAddress/ipv4Address TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL +IPAddress/ipv6Address TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL + +#.TYPE_ATTR +PositionEstimate/latitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_PositionEstimate_latitude_fmt) + +#.TYPE_ATTR +PositionEstimate/longitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_PositionEstimate_longitude_fmt) + +#.TYPE_ATTR +PositionEstimate/uncertainty/uncertaintySemiMajor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_horacc_fmt) + +#.TYPE_ATTR +PositionEstimate/uncertainty/uncertaintySemiMinor DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_horacc_fmt) + +#.FN_BODY PositionEstimate/uncertainty/orientationMajorAxis +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " degrees"); + +#.FN_FTR PositionEstimate/confidence + proto_item_append_text(actx->created_item, "%%"); + +#.FN_BODY AltitudeInfo/altitude +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " m"); + +#.TYPE_ATTR +AltitudeInfo/altUncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_veracc_fmt) + +#.TYPE_ATTR +NMRelement/rxLev DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_NMRelement_rxLev_fmt) + +#.TYPE_ATTR +UTRA-CarrierRSSI DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_UTRA_CarrierRSSI_fmt) + +#.TYPE_ATTR +PrimaryCCPCH-RSCP DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_PrimaryCCPCH_RSCP_fmt) + +#.TYPE_ATTR +CPICH-Ec-N0 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_CPICH_Ec_N0_fmt) + +#.TYPE_ATTR +CPICH-RSCP DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_CPICH_RSCP_fmt) + +#.TYPE_ATTR +QoP/horacc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_horacc_fmt) + +#.TYPE_ATTR +QoP/veracc DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_veracc_fmt) + +#.FN_BODY QoP/maxLocAge +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.TYPE_ATTR +QoP/delay DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_QoP_delay_fmt) + +#.FN_BODY Horvel/bearing VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + +#.TYPE_ATTR +Horvel/bearing TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horvel/horspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horvel/horspeed TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horandvervel/verdirect VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA); + } + +#.TYPE_ATTR +Horandvervel/verdirect TYPE=FT_BOOLEAN STRINGS=TFS(&ulp_vertical_dir_val) + +#.FN_BODY Horandvervel/bearing VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + +#.TYPE_ATTR +Horandvervel/bearing TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horandvervel/horspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandvervel/horspeed TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horandvervel/verspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandvervel/verspeed TYPE=FT_UINT8 DISPLAY=BASE_DEC + +#.FN_BODY Horveluncert/bearing VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + +#.TYPE_ATTR +Horveluncert/bearing TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horveluncert/horspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horveluncert/horspeed TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horveluncert/uncertspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horveluncert/uncertspeed TYPE=FT_UINT8 DISPLAY=BASE_DEC + +#.FN_BODY Horandveruncert/verdirect VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA); + } + +#.TYPE_ATTR +Horandveruncert/verdirect TYPE=FT_BOOLEAN STRINGS=TFS(&ulp_vertical_dir_val) + +#.FN_BODY Horandveruncert/bearing VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + +#.TYPE_ATTR +Horandveruncert/bearing TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horandveruncert/horspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandveruncert/horspeed TYPE=FT_UINT16 DISPLAY=BASE_DEC + +#.FN_BODY Horandveruncert/verspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandveruncert/verspeed TYPE=FT_UINT8 DISPLAY=BASE_DEC + +#.FN_BODY Horandveruncert/horuncertspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandveruncert/horuncertspeed TYPE=FT_UINT8 DISPLAY=BASE_DEC + +#.FN_BODY Horandveruncert/veruncertspeed VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + +#.TYPE_ATTR +Horandveruncert/veruncertspeed TYPE=FT_UINT8 DISPLAY=BASE_DEC + +#.TYPE_ATTR +RelativeTime DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_RelativeTime_fmt) + +#.FN_BODY SupportedWLANApData/apMACAddress VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + +#.TYPE_ATTR +SupportedWLANApData/apMACAddress TYPE=FT_ETHER + +#.TYPE_ATTR +RSRP-Range DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_RSRP_Range_fmt) + +#.TYPE_ATTR +RSRQ-Range DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_RSRQ_Range_fmt) + +#.FN_BODY WlanAPInformation/apMACAddress VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + +#.TYPE_ATTR +WlanAPInformation/apMACAddress TYPE=FT_ETHER + +#.FN_BODY WlanAPInformation/apTransmitPower +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBm"); + +#.FN_BODY WlanAPInformation/apAntennaGain +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBi"); + +#.FN_BODY WlanAPInformation/apSignaltoNoise +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dB"); + +#.FN_BODY WlanAPInformation/apSignalStrength +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBm"); + +#.FN_BODY WlanAPInformation/setTransmitPower +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBm"); + +#.FN_BODY WlanAPInformation/setAntennaGain +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBi"); + +#.FN_BODY WlanAPInformation/setSignaltoNoise +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dB"); + +#.FN_BODY WlanAPInformation/setSignalStrength +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dBm"); + +#.TYPE_ATTR +WlanAPInformation/apSignalStrengthDelta DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_SignalDelta_fmt) + +#.TYPE_ATTR +WlanAPInformation/apSignaltoNoiseDelta DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_SignalDelta_fmt) + +#.TYPE_ATTR +WlanAPInformation/setSignalStrengthDelta DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_SignalDelta_fmt) + +#.TYPE_ATTR +WlanAPInformation/setSignaltoNoiseDelta DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_SignalDelta_fmt) + +#.FN_BODY WlanAPInformation/apSSID VAL_PTR=&ssid_tvb HF_INDEX=-1 + tvbuff_t *ssid_tvb; + +%(DEFAULT_BODY)s + if (ssid_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA); + } + +#.TYPE_ATTR +WlanAPInformation/apSSID TYPE=FT_STRING DISPLAY=STR_ASCII + +#.FN_BODY WlanAPInformation/setMACAddress VAL_PTR=&val_tvb HF_INDEX=-1 + tvbuff_t *val_tvb; + +%(DEFAULT_BODY)s + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + +#.TYPE_ATTR +WlanAPInformation/setMACAddress TYPE=FT_ETHER + +#.TYPE_ATTR +LocationData/locationAccuracy DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_locationAccuracy_fmt) + +#.TYPE_ATTR +WimaxRTD/rtd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxRTD_fmt) + +#.TYPE_ATTR +WimaxRTD/rTDstd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxRTD_fmt) + +#.TYPE_ATTR +WimaxNMR/relDelay DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxRTD_fmt) + +#.TYPE_ATTR +WimaxNMR/relDelaystd DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxRTD_fmt) + +#.TYPE_ATTR +WimaxNMR/rssi DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxNMR_rssi_fmt) + +#.FN_BODY WimaxNMR/rSSIstd +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dB"); + +#.TYPE_ATTR +WimaxNMR/bSTxPower DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_WimaxNMR_rssi_fmt) + +#.FN_BODY WimaxNMR/cinr +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dB"); + +#.FN_BODY WimaxNMR/cINRstd +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " dB"); + +#.TYPE_ATTR +UTRAN-GPSReferenceTimeAssistance/gpsReferenceTimeUncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt) + +#.TYPE_ATTR +UTRAN-GPSReferenceTimeResult/gpsReferenceTimeUncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt) + +#.TYPE_ATTR +UTRAN-GANSSReferenceTimeAssistance/ganssTimeID STRINGS=VALS(ulp_ganss_time_id_vals) + +#.FN_BODY UTRAN-GANSSReferenceTime/ganssTOD +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.TYPE_ATTR +UTRAN-GANSSReferenceTime/utran-GANSSTimingOfCell DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_utran_GANSSTimingOfCell_fmt) + +#.TYPE_ATTR +UTRAN-GANSSReferenceTime/ganss-TODUncertainty DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt) + +#.TYPE_ATTR +UTRAN-GANSSReferenceTimeResult/ganssTimeID STRINGS=VALS(ulp_ganss_time_id_vals) + +#.TYPE_ATTR +SET-GANSSReferenceTime/ganss-TODUncertainty ulp_UTRAN_gpsReferenceTimeUncertainty_fmtulp_UTRAN_gpsReferenceTimeUncertainty_fmt) + #.FN_BODY ThirdPartyID/msisdn VAL_PTR=&msisdn_tvb tvbuff_t *msisdn_tvb; %(DEFAULT_BODY)s @@ -133,7 +757,38 @@ guint32 UlpMessage; 1, 255, FALSE, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./-_~%%#", 69, NULL); +#.FN_BODY ReportingCap/minInt +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " s"); + +#.FN_BODY ReportingCap/maxInt +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " min"); + #.TYPE_ATTR -IPAddress/ipv4Address TYPE = FT_IPv4 DISPLAY = BASE_NONE STRINGS = NULL -IPAddress/ipv6Address TYPE = FT_IPv6 DISPLAY = BASE_NONE STRINGS = NULL +Coordinate/latitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_Coordinate_latitude_fmt) + +#.TYPE_ATTR +Coordinate/longitude DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(ulp_Coordinate_longitude_fmt) + +#.FN_BODY CircularArea/radius +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " m"); + +#.FN_BODY EllipticalArea/semiMajor +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " m"); + +#.FN_BODY EllipticalArea/semiMinor +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " m"); + +#.FN_BODY EllipticalArea/angle +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " degrees"); + +#.FN_BODY PolygonArea/polygonHysteresis +%(DEFAULT_BODY)s + proto_item_append_text(actx->created_item, " m"); + #.END diff --git a/epan/dissectors/packet-ulp.c b/epan/dissectors/packet-ulp.c index deadc125eb..976ca6d250 100644 --- a/epan/dissectors/packet-ulp.c +++ b/epan/dissectors/packet-ulp.c @@ -34,6 +34,8 @@ #include "config.h" +#include "math.h" + #include <epan/packet.h> #include <epan/prefs.h> #include <epan/asn1.h> @@ -101,9 +103,9 @@ static int hf_ulp_keyIdentity = -1; /* KeyIdentity */ static int hf_ulp_ver2_SUPL_INIT_extension = -1; /* Ver2_SUPL_INIT_extension */ static int hf_ulp_notificationType = -1; /* NotificationType */ static int hf_ulp_encodingType = -1; /* EncodingType */ -static int hf_ulp_requestorId = -1; /* OCTET_STRING_SIZE_1_maxReqLength */ +static int hf_ulp_requestorId = -1; /* T_requestorId */ static int hf_ulp_requestorIdType = -1; /* FormatIndicator */ -static int hf_ulp_clientName = -1; /* OCTET_STRING_SIZE_1_maxClientLength */ +static int hf_ulp_clientName = -1; /* T_clientName */ static int hf_ulp_clientNameType = -1; /* FormatIndicator */ static int hf_ulp_ver2_Notification_extension = -1; /* Ver2_Notification_extension */ static int hf_ulp_sETCapabilities = -1; /* SETCapabilities */ @@ -147,9 +149,9 @@ static int hf_ulp_navigationModelRequested = -1; /* BOOLEAN */ static int hf_ulp_navigationModelData = -1; /* NavigationModel */ static int hf_ulp_ver2_RequestedAssistData_extension = -1; /* Ver2_RequestedAssistData_extension */ static int hf_ulp_gpsWeek = -1; /* INTEGER_0_1023 */ -static int hf_ulp_gpsToe = -1; /* INTEGER_0_167 */ +static int hf_ulp_gpsToe = -1; /* T_gpsToe */ static int hf_ulp_nsat = -1; /* INTEGER_0_31 */ -static int hf_ulp_toeLimit = -1; /* INTEGER_0_10 */ +static int hf_ulp_toeLimit = -1; /* T_toeLimit */ static int hf_ulp_satInfo = -1; /* SatelliteInfo */ static int hf_ulp_SatelliteInfo_item = -1; /* SatelliteInfoElement */ static int hf_ulp_satId = -1; /* INTEGER_0_63 */ @@ -178,16 +180,17 @@ static int hf_ulp_causeCode = -1; /* CauseCode */ static int hf_ulp_periodicParams = -1; /* PeriodicParams */ static int hf_ulp_areaEventParams = -1; /* AreaEventParams */ static int hf_ulp_numberOfFixes = -1; /* INTEGER_1_8639999 */ -static int hf_ulp_intervalBetweenFixes = -1; /* INTEGER_1_8639999 */ -static int hf_ulp_startTime = -1; /* INTEGER_0_2678400 */ +static int hf_ulp_intervalBetweenFixes = -1; /* T_intervalBetweenFixes */ +static int hf_ulp_startTime = -1; /* T_startTime */ static int hf_ulp_areaEventType = -1; /* AreaEventType */ static int hf_ulp_locationEstimate = -1; /* BOOLEAN */ static int hf_ulp_repeatedReportingParams = -1; /* RepeatedReportingParams */ -static int hf_ulp_stopTime = -1; /* INTEGER_0_11318399 */ +static int hf_ulp_startTime_01 = -1; /* T_startTime_01 */ +static int hf_ulp_stopTime = -1; /* T_stopTime */ static int hf_ulp_geographicTargetAreaList = -1; /* GeographicTargetAreaList */ static int hf_ulp_areaIdLists = -1; /* SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList */ static int hf_ulp_areaIdLists_item = -1; /* AreaIdList */ -static int hf_ulp_minimumIntervalTime = -1; /* INTEGER_1_604800 */ +static int hf_ulp_minimumIntervalTime = -1; /* T_minimumIntervalTime */ static int hf_ulp_maximumNumberOfReports = -1; /* INTEGER_1_1024 */ static int hf_ulp_GeographicTargetAreaList_item = -1; /* GeographicTargetArea */ static int hf_ulp_circularArea = -1; /* CircularArea */ @@ -215,7 +218,7 @@ static int hf_ulp_refNID = -1; /* INTEGER_0_32767 */ static int hf_ulp_refBASEID = -1; /* INTEGER_0_65535 */ static int hf_ulp_refSECTORID = -1; /* BIT_STRING_SIZE_128 */ static int hf_ulp_refCI_01 = -1; /* BIT_STRING_SIZE_29 */ -static int hf_ulp_apMACAddress = -1; /* BIT_STRING_SIZE_48 */ +static int hf_ulp_apMACAddress = -1; /* T_apMACAddress */ static int hf_ulp_bsID_MSB = -1; /* BIT_STRING_SIZE_24 */ static int hf_ulp_bsID_LSB = -1; /* BIT_STRING_SIZE_24 */ static int hf_ulp_GeoAreaMappingList_item = -1; /* GeoAreaIndex */ @@ -245,7 +248,7 @@ static int hf_ulp_GANSSsignalsInfo_item = -1; /* GANSSSignalsDescription */ static int hf_ulp_ganssId = -1; /* INTEGER_0_15 */ static int hf_ulp_gANSSSignals = -1; /* GANSSSignals */ static int hf_ulp_absoluteTime = -1; /* UTCTime */ -static int hf_ulp_relativeTime = -1; /* INTEGER_0_31536000 */ +static int hf_ulp_relativeTime = -1; /* T_relativeTime */ static int hf_ulp_notificationMode = -1; /* NotificationMode */ static int hf_ulp_e_SLPAddress = -1; /* SLPAddress */ static int hf_ulp_historicReporting = -1; /* HistoricReporting */ @@ -255,9 +258,9 @@ static int hf_ulp_allowedReportingType = -1; /* AllowedReportingType */ static int hf_ulp_reportingCriteria = -1; /* ReportingCriteria */ static int hf_ulp_timeWindow = -1; /* TimeWindow */ static int hf_ulp_maxNumberofReports = -1; /* INTEGER_1_65536 */ -static int hf_ulp_minTimeInterval = -1; /* INTEGER_1_86400 */ -static int hf_ulp_startTime_01 = -1; /* INTEGER_M525600_M1 */ -static int hf_ulp_stopTime_01 = -1; /* INTEGER_M525599_0 */ +static int hf_ulp_minTimeInterval = -1; /* T_minTimeInterval */ +static int hf_ulp_startTime_02 = -1; /* T_startTime_02 */ +static int hf_ulp_stopTime_01 = -1; /* T_stopTime_01 */ static int hf_ulp_protlevel = -1; /* ProtLevel */ static int hf_ulp_basicProtectionParams = -1; /* BasicProtectionParams */ static int hf_ulp_keyIdentifier = -1; /* OCTET_STRING_SIZE_8 */ @@ -311,7 +314,7 @@ static int hf_ulp_internalEditLevel = -1; /* INTEGER_0_255 */ static int hf_ulp_minorVersionField = -1; /* INTEGER_0_255 */ static int hf_ulp_gANSSPositionMethods = -1; /* GANSSPositionMethods */ static int hf_ulp_GANSSPositionMethods_item = -1; /* GANSSPositionMethod */ -static int hf_ulp_ganssSBASid = -1; /* BIT_STRING_SIZE_3 */ +static int hf_ulp_ganssSBASid = -1; /* T_ganssSBASid */ static int hf_ulp_gANSSPositioningMethodTypes = -1; /* GANSSPositioningMethodTypes */ static int hf_ulp_setAssisted = -1; /* BOOLEAN */ static int hf_ulp_setBased = -1; /* BOOLEAN */ @@ -327,11 +330,13 @@ static int hf_ulp_ganssAdditionalIonosphericModelForDataID11 = -1; /* BOOLEAN * static int hf_ulp_ganssEarthOrientationParameters = -1; /* BOOLEAN */ static int hf_ulp_ganssAdditionalIonosphericModelForDataID01 = -1; /* BOOLEAN */ static int hf_ulp_GanssRequestedGenericAssistanceDataList_item = -1; /* GanssReqGenericData */ +static int hf_ulp_ganssId_01 = -1; /* T_ganssId */ +static int hf_ulp_ganssSBASid_01 = -1; /* T_ganssSBASid_01 */ static int hf_ulp_ganssRealTimeIntegrity = -1; /* BOOLEAN */ static int hf_ulp_ganssDifferentialCorrection = -1; /* DGANSS_Sig_Id_Req */ static int hf_ulp_ganssAlmanac = -1; /* BOOLEAN */ static int hf_ulp_ganssNavigationModelData = -1; /* GanssNavigationModelData */ -static int hf_ulp_ganssTimeModels = -1; /* BIT_STRING_SIZE_16 */ +static int hf_ulp_ganssTimeModels = -1; /* T_ganssTimeModels */ static int hf_ulp_ganssReferenceMeasurementInfo = -1; /* BOOLEAN */ static int hf_ulp_ganssDataBits = -1; /* GanssDataBits */ static int hf_ulp_ganssUTCModel = -1; /* BOOLEAN */ @@ -341,13 +346,13 @@ static int hf_ulp_ganssExtendedEphemeris = -1; /* ExtendedEphemeris */ static int hf_ulp_ganssExtendedEphemerisCheck = -1; /* GanssExtendedEphCheck */ static int hf_ulp_bds_DifferentialCorrection = -1; /* BDS_Sig_Id_Req */ static int hf_ulp_bds_GridModelReq = -1; /* BOOLEAN */ -static int hf_ulp_ganssWeek = -1; /* INTEGER_0_4095 */ -static int hf_ulp_ganssToe = -1; /* INTEGER_0_167 */ -static int hf_ulp_t_toeLimit = -1; /* INTEGER_0_15 */ +static int hf_ulp_ganssWeek = -1; /* T_ganssWeek */ +static int hf_ulp_ganssToe = -1; /* T_ganssToe */ +static int hf_ulp_t_toeLimit = -1; /* T_t_toeLimit */ static int hf_ulp_satellitesListRelatedDataList = -1; /* SatellitesListRelatedDataList */ static int hf_ulp_SatellitesListRelatedDataList_item = -1; /* SatellitesListRelatedData */ static int hf_ulp_iod = -1; /* INTEGER_0_1023 */ -static int hf_ulp_ganssTODmin = -1; /* INTEGER_0_59 */ +static int hf_ulp_ganssTODmin = -1; /* T_ganssTODmin */ static int hf_ulp_reqDataBitAssistanceList = -1; /* ReqDataBitAssistanceList */ static int hf_ulp_gnssSignals = -1; /* GANSSSignals */ static int hf_ulp_ganssDataBitInterval = -1; /* INTEGER_0_15 */ @@ -402,11 +407,11 @@ static int hf_ulp_longitude = -1; /* INTEGER_M8388608_8388607 */ static int hf_ulp_uncertainty = -1; /* T_uncertainty */ static int hf_ulp_uncertaintySemiMajor = -1; /* INTEGER_0_127 */ static int hf_ulp_uncertaintySemiMinor = -1; /* INTEGER_0_127 */ -static int hf_ulp_orientationMajorAxis = -1; /* INTEGER_0_180 */ -static int hf_ulp_confidence = -1; /* INTEGER_0_100 */ +static int hf_ulp_orientationMajorAxis = -1; /* T_orientationMajorAxis */ +static int hf_ulp_confidence = -1; /* T_confidence */ static int hf_ulp_altitudeInfo = -1; /* AltitudeInfo */ static int hf_ulp_altitudeDirection = -1; /* T_altitudeDirection */ -static int hf_ulp_altitude = -1; /* INTEGER_0_32767 */ +static int hf_ulp_altitude = -1; /* T_altitude */ static int hf_ulp_altUncertainty = -1; /* INTEGER_0_127 */ static int hf_ulp_refNID_01 = -1; /* INTEGER_0_65535 */ static int hf_ulp_refSID_01 = -1; /* INTEGER_0_32767 */ @@ -454,19 +459,27 @@ static int hf_ulp_timeslotISCP_List = -1; /* TimeslotISCP_List */ static int hf_ulp_TimeslotISCP_List_item = -1; /* TimeslotISCP */ static int hf_ulp_horacc = -1; /* INTEGER_0_127 */ static int hf_ulp_veracc = -1; /* INTEGER_0_127 */ -static int hf_ulp_maxLocAge = -1; /* INTEGER_0_65535 */ +static int hf_ulp_maxLocAge = -1; /* T_maxLocAge */ static int hf_ulp_delay = -1; /* INTEGER_0_7 */ static int hf_ulp_horvel = -1; /* Horvel */ static int hf_ulp_horandvervel = -1; /* Horandvervel */ static int hf_ulp_horveluncert = -1; /* Horveluncert */ static int hf_ulp_horandveruncert = -1; /* Horandveruncert */ -static int hf_ulp_bearing = -1; /* BIT_STRING_SIZE_9 */ -static int hf_ulp_horspeed = -1; /* BIT_STRING_SIZE_16 */ -static int hf_ulp_verdirect = -1; /* BIT_STRING_SIZE_1 */ -static int hf_ulp_verspeed = -1; /* BIT_STRING_SIZE_8 */ -static int hf_ulp_uncertspeed = -1; /* BIT_STRING_SIZE_8 */ -static int hf_ulp_horuncertspeed = -1; /* BIT_STRING_SIZE_8 */ -static int hf_ulp_veruncertspeed = -1; /* BIT_STRING_SIZE_8 */ +static int hf_ulp_bearing = -1; /* T_bearing */ +static int hf_ulp_horspeed = -1; /* T_horspeed */ +static int hf_ulp_verdirect = -1; /* T_verdirect */ +static int hf_ulp_bearing_01 = -1; /* T_bearing_01 */ +static int hf_ulp_horspeed_01 = -1; /* T_horspeed_01 */ +static int hf_ulp_verspeed = -1; /* T_verspeed */ +static int hf_ulp_bearing_02 = -1; /* T_bearing_02 */ +static int hf_ulp_horspeed_02 = -1; /* T_horspeed_02 */ +static int hf_ulp_uncertspeed = -1; /* T_uncertspeed */ +static int hf_ulp_verdirect_01 = -1; /* T_verdirect_01 */ +static int hf_ulp_bearing_03 = -1; /* T_bearing_03 */ +static int hf_ulp_horspeed_03 = -1; /* T_horspeed_03 */ +static int hf_ulp_verspeed_01 = -1; /* T_verspeed_01 */ +static int hf_ulp_horuncertspeed = -1; /* T_horuncertspeed */ +static int hf_ulp_veruncertspeed = -1; /* T_veruncertspeed */ static int hf_ulp_MultipleLocationIds_item = -1; /* LocationIdData */ static int hf_ulp_relativetimestamp = -1; /* RelativeTime */ static int hf_ulp_servingFlag = -1; /* BOOLEAN */ @@ -525,6 +538,7 @@ static int hf_ulp_ch11 = -1; /* BOOLEAN */ static int hf_ulp_ch12 = -1; /* BOOLEAN */ static int hf_ulp_ch13 = -1; /* BOOLEAN */ static int hf_ulp_ch14 = -1; /* BOOLEAN */ +static int hf_ulp_apMACAddress_01 = -1; /* T_apMACAddress_01 */ static int hf_ulp_apDevType_01 = -1; /* T_apDevType */ static int hf_ulp_mrl = -1; /* BOOLEAN */ static int hf_ulp_hrpdCell = -1; /* HrpdCellInformation */ @@ -551,17 +565,18 @@ static int hf_ulp_mcc = -1; /* MCC */ static int hf_ulp_mnc = -1; /* MNC */ static int hf_ulp_MCC_item = -1; /* MCC_MNC_Digit */ static int hf_ulp_MNC_item = -1; /* MCC_MNC_Digit */ -static int hf_ulp_apTransmitPower = -1; /* INTEGER_M127_128 */ -static int hf_ulp_apAntennaGain = -1; /* INTEGER_M127_128 */ -static int hf_ulp_apSignaltoNoise = -1; /* INTEGER_M127_128 */ +static int hf_ulp_apMACAddress_02 = -1; /* T_apMACAddress_02 */ +static int hf_ulp_apTransmitPower = -1; /* T_apTransmitPower */ +static int hf_ulp_apAntennaGain = -1; /* T_apAntennaGain */ +static int hf_ulp_apSignaltoNoise = -1; /* T_apSignaltoNoise */ static int hf_ulp_apDeviceType = -1; /* T_apDeviceType */ -static int hf_ulp_apSignalStrength = -1; /* INTEGER_M127_128 */ +static int hf_ulp_apSignalStrength = -1; /* T_apSignalStrength */ static int hf_ulp_apChannelFrequency = -1; /* INTEGER_0_256 */ static int hf_ulp_apRoundTripDelay = -1; /* RTD */ -static int hf_ulp_setTransmitPower = -1; /* INTEGER_M127_128 */ -static int hf_ulp_setAntennaGain = -1; /* INTEGER_M127_128 */ -static int hf_ulp_setSignaltoNoise = -1; /* INTEGER_M127_128 */ -static int hf_ulp_setSignalStrength = -1; /* INTEGER_M127_128 */ +static int hf_ulp_setTransmitPower = -1; /* T_setTransmitPower */ +static int hf_ulp_setAntennaGain = -1; /* T_setAntennaGain */ +static int hf_ulp_setSignaltoNoise = -1; /* T_setSignaltoNoise */ +static int hf_ulp_setSignalStrength = -1; /* T_setSignalStrength */ static int hf_ulp_apReportedLocation = -1; /* ReportedLocation */ static int hf_ulp_apRepLocation = -1; /* RepLocation */ static int hf_ulp_apSignalStrengthDelta = -1; /* INTEGER_0_1 */ @@ -569,9 +584,9 @@ static int hf_ulp_apSignaltoNoiseDelta = -1; /* INTEGER_0_1 */ static int hf_ulp_setSignalStrengthDelta = -1; /* INTEGER_0_1 */ static int hf_ulp_setSignaltoNoiseDelta = -1; /* INTEGER_0_1 */ static int hf_ulp_operatingClass = -1; /* INTEGER_0_255 */ -static int hf_ulp_apSSID = -1; /* OCTET_STRING_SIZE_1_32 */ +static int hf_ulp_apSSID = -1; /* T_apSSID */ static int hf_ulp_apPHYType = -1; /* T_apPHYType */ -static int hf_ulp_setMACAddress = -1; /* BIT_STRING_SIZE_48 */ +static int hf_ulp_setMACAddress = -1; /* T_setMACAddress */ static int hf_ulp_rTDValue = -1; /* INTEGER_0_16777216 */ static int hf_ulp_rTDUnits = -1; /* RTDUnits */ static int hf_ulp_rTDAccuracy = -1; /* INTEGER_0_255 */ @@ -598,10 +613,10 @@ static int hf_ulp_WimaxNMRList_item = -1; /* WimaxNMR */ static int hf_ulp_relDelay = -1; /* INTEGER_M32768_32767 */ static int hf_ulp_relDelaystd = -1; /* INTEGER_0_1023 */ static int hf_ulp_rssi = -1; /* INTEGER_0_255 */ -static int hf_ulp_rSSIstd = -1; /* INTEGER_0_63 */ +static int hf_ulp_rSSIstd = -1; /* T_rSSIstd */ static int hf_ulp_bSTxPower = -1; /* INTEGER_0_255 */ -static int hf_ulp_cinr = -1; /* INTEGER_0_255 */ -static int hf_ulp_cINRstd = -1; /* INTEGER_0_63 */ +static int hf_ulp_cinr = -1; /* T_cinr */ +static int hf_ulp_cINRstd = -1; /* T_cINRstd */ static int hf_ulp_bSLocation = -1; /* ReportedLocation */ static int hf_ulp_utran_GPSReferenceTime = -1; /* UTRAN_GPSReferenceTime */ static int hf_ulp_gpsReferenceTimeUncertainty = -1; /* INTEGER_0_127 */ @@ -624,7 +639,7 @@ static int hf_ulp_ganssDay = -1; /* INTEGER_0_8191 */ static int hf_ulp_ganssTimeID = -1; /* INTEGER_0_15 */ static int hf_ulp_utran_GANSSReferenceTime = -1; /* UTRAN_GANSSReferenceTime */ static int hf_ulp_utranGANSSDriftRate = -1; /* UTRANGANSSDriftRate */ -static int hf_ulp_ganssTOD = -1; /* INTEGER_0_86399 */ +static int hf_ulp_ganssTOD = -1; /* T_ganssTOD */ static int hf_ulp_utran_GANSSTimingOfCell = -1; /* INTEGER_0_3999999 */ static int hf_ulp_modeSpecificInfo_03 = -1; /* T_modeSpecificInfo_03 */ static int hf_ulp_fdd_03 = -1; /* T_fdd_03 */ @@ -657,8 +672,8 @@ static int hf_ulp_uri = -1; /* T_uri */ static int hf_ulp_appProvider = -1; /* IA5String_SIZE_1_24 */ static int hf_ulp_appName = -1; /* IA5String_SIZE_1_32 */ static int hf_ulp_appVersion = -1; /* IA5String_SIZE_1_8 */ -static int hf_ulp_minInt = -1; /* INTEGER_1_3600 */ -static int hf_ulp_maxInt = -1; /* INTEGER_1_1440 */ +static int hf_ulp_minInt = -1; /* T_minInt */ +static int hf_ulp_maxInt = -1; /* T_maxInt */ static int hf_ulp_repMode_01 = -1; /* RepMode */ static int hf_ulp_batchRepCap = -1; /* BatchRepCap */ static int hf_ulp_realtime = -1; /* BOOLEAN */ @@ -669,19 +684,21 @@ static int hf_ulp_report_measurements = -1; /* BOOLEAN */ static int hf_ulp_max_num_positions = -1; /* INTEGER_1_1024 */ static int hf_ulp_max_num_measurements = -1; /* INTEGER_1_1024 */ static int hf_ulp_latitudeSign_01 = -1; /* T_latitudeSign_01 */ +static int hf_ulp_CoordinateLatitude = -1; /* INTEGER_0_8388607 */ +static int hf_ulp_CoordinateLongitude = -1; /* INTEGER_M8388608_8388607 */ static int hf_ulp_coordinate = -1; /* Coordinate */ -static int hf_ulp_radius = -1; /* INTEGER_1_1000000 */ +static int hf_ulp_radius = -1; /* T_radius */ static int hf_ulp_radius_min = -1; /* INTEGER_1_1000000 */ static int hf_ulp_radius_max = -1; /* INTEGER_1_1500000 */ -static int hf_ulp_semiMajor = -1; /* INTEGER_1_1000000 */ +static int hf_ulp_semiMajor = -1; /* T_semiMajor */ static int hf_ulp_semiMajor_min = -1; /* INTEGER_1_1000000 */ static int hf_ulp_semiMajor_max = -1; /* INTEGER_1_1500000 */ -static int hf_ulp_semiMinor = -1; /* INTEGER_1_1000000 */ +static int hf_ulp_semiMinor = -1; /* T_semiMinor */ static int hf_ulp_semiMinor_min = -1; /* INTEGER_1_1000000 */ static int hf_ulp_semiMinor_max = -1; /* INTEGER_1_1500000 */ -static int hf_ulp_angle = -1; /* INTEGER_0_179 */ +static int hf_ulp_angle = -1; /* T_angle */ static int hf_ulp_polygonDescription = -1; /* PolygonDescription */ -static int hf_ulp_polygonHysteresis = -1; /* INTEGER_1_100000 */ +static int hf_ulp_polygonHysteresis = -1; /* T_polygonHysteresis */ static int hf_ulp_PolygonDescription_item = -1; /* Coordinate */ /* named bits */ static int hf_ulp_GANSSSignals_signal1 = -1; @@ -694,13 +711,20 @@ static int hf_ulp_GANSSSignals_signal7 = -1; static int hf_ulp_GANSSSignals_signal8 = -1; /*--- End of included file: packet-ulp-hf.c ---*/ -#line 64 "../../asn1/ulp/packet-ulp-template.c" +#line 66 "../../asn1/ulp/packet-ulp-template.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; /* 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; /*--- Included file: packet-ulp-ett.c ---*/ #line 1 "../../asn1/ulp/packet-ulp-ett.c" @@ -918,7 +942,252 @@ static gint ett_ulp_PolygonArea = -1; static gint ett_ulp_PolygonDescription = -1; /*--- End of included file: packet-ulp-ett.c ---*/ -#line 71 "../../asn1/ulp/packet-ulp-template.c" +#line 80 "../../asn1/ulp/packet-ulp-template.c" + +static const value_string ulp_ganss_id_vals[] = { + { 0, "Galileo"}, + { 1, "SBAS"}, + { 2, "Modernized GPS"}, + { 3, "QZSS"}, + { 4, "GLONASS"}, + { 5, "BDS"}, + { 0, NULL}, +}; + +static const value_string ulp_ganss_sbas_id_vals[] = { + { 0, "WAAS"}, + { 1, "EGNOS"}, + { 2, "MSAS"}, + { 3, "GAGAN"}, + { 0, NULL}, +}; + +static void +ulp_ganssDataBitInterval_fmt(gchar *s, guint32 v) +{ + if (v == 15) { + g_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, "%g s (%u)", interval, v); + } +} + +static void +ulp_ExtendedEphemeris_validity_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%u h (%u)", 4*v, v); +} + +static void +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); +} + +static void +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); +} + +static void +ulp_NMRelement_rxLev_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev < -110 dBm (0)"); + } else if (v == 63) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RxLev >= -48 dBm (63)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RxLev < %d dBm (%u)", -111+v, -110+v, v); + } +} + +static void +ulp_UTRA_CarrierRSSI_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI < -100 dBm (0)"); + } else if (v == 76) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSSI >= -25 dBm (76)"); + } else if (v > 76) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSSI < %d dBm (%u)", -101+v, -100+v, v); + } +} + +static void +ulp_PrimaryCCPCH_RSCP_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP < -115 dBm (0)"); + } else if (v == 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSCP >= -25 dBm (91)"); + } else if (v > 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSCP < %d dBm (%u)", -116+v, -115+v, v); + } +} + +static void +ulp_CPICH_Ec_N0_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 < -24 dB (0)"); + } else if (v == 49) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH Ec/N0 >= 0 dB (49)"); + } else if (v > 49) { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f dB <= CPICH Ec/N0 < %.1f dB (%u)", -24.5+((float)v/2), -24+((float)v/2), v); + } +} + +static void +ulp_CPICH_RSCP_fmt(gchar *s, guint32 v) +{ + if (v == 123) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP < -120 dBm (123)"); + } else if (v > 123) { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= CPICH RSCP < %d dBm (%u)", -244+v, -243+v, v); + } else if (v == 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "CPICH RSCP >= -25 dBm (91)"); + } else if (v < 91) { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm < CPICH RSCP <= %d dBm (%u)", -116+v, -115+v, v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "Spare (%u)", v); + } +} + +static void +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, "%f m (%u)", uncertainty, v); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%f km (%u)", uncertainty/1000, v); + } +} + +static void +ulp_QoP_veracc_fmt(gchar *s, guint32 v) +{ + double uncertainty = 45*(pow(1.025, (double)v)-1); + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f m (%u)", uncertainty, v); +} + +static void +ulp_QoP_delay_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%g s (%u)", pow(2, (double)v), v); +} + +static const true_false_string ulp_vertical_dir_val = { + "Downward", + "Upward" +}; + +static void +ulp_RelativeTime_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f s (%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 < -140 dBm (0)"); + } else if (v == 97) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRP >= -44 dBm (97)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%d dBm <= RSRP < %d dBm (%u)", -141+v, -140+v, v); + } +} + +static void +ulp_RSRQ_Range_fmt(gchar *s, guint32 v) +{ + if (v == 0) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ < -19.5dB (0)"); + } else if (v == 64) { + g_snprintf(s, ITEM_LABEL_LENGTH, "RSRQ >= -3 dB (34)"); + } else { + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f dB <= RSRQ < %.1f dB (%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, "%s dB (%u)", v ? "0.5" : "0", v); +} + +static void +ulp_locationAccuracy_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.1f m (%u)", 0.1*v, v); +} + +static void +ulp_WimaxRTD_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f us (%u)", 0.01*v, v); +} + +static void +ulp_WimaxNMR_rssi_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f dBm (%u)", -103.75+(0.25*v), v); +} + +static void +ulp_UTRAN_gpsReferenceTimeUncertainty_fmt(gchar *s, guint32 v) +{ + double uncertainty = 0.0022*(pow(1.18, (double)v)-1); + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f us (%u)", uncertainty, v); +} + +static const value_string ulp_ganss_time_id_vals[] = { + { 0, "Galileo"}, + { 1, "QZSS"}, + { 2, "GLONASS"}, + { 3, "BDS"}, + { 0, NULL}, +}; + +static void +ulp_utran_GANSSTimingOfCell_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%.2f us (%u)", 0.25*v, v); +} + +static void +ulp_Coordinate_latitude_fmt(gchar *s, guint32 v) +{ + g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%u)", + ((float)v/8388607.0)*90, v); +} + +static void +ulp_Coordinate_longitude_fmt(gchar *s, guint32 v) +{ + gint32 longitude = (gint32) v; + + g_snprintf(s, ITEM_LABEL_LENGTH, "%f degrees (%d)", + ((float)longitude/8388608.0)*180, longitude); +} /* Include constants */ @@ -941,8 +1210,21 @@ static gint ett_ulp_PolygonDescription = -1; #define maxWimaxBSMeas 32 /*--- End of included file: packet-ulp-val.h ---*/ -#line 74 "../../asn1/ulp/packet-ulp-template.c" +#line 328 "../../asn1/ulp/packet-ulp-template.c" + +typedef struct +{ + guint8 notif_enc_type; + guint8 ganss_req_gen_data_ganss_id; +} ulp_private_data_t; +static ulp_private_data_t* ulp_get_private_data(asn1_ctx_t *actx) +{ + if (actx->private_data == NULL) { + actx->private_data = wmem_new0(wmem_packet_scope(), ulp_private_data_t); + } + return (ulp_private_data_t*)actx->private_data; +} /*--- Included file: packet-ulp-fn.c ---*/ @@ -987,7 +1269,7 @@ dissect_ulp_Version(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro static int dissect_ulp_T_msisdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 71 "../../asn1/ulp/ulp.cnf" +#line 304 "../../asn1/ulp/ulp.cnf" tvbuff_t *msisdn_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, &msisdn_tvb); @@ -1008,7 +1290,7 @@ dissect_ulp_T_msisdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_ulp_T_mdn(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 81 "../../asn1/ulp/ulp.cnf" +#line 314 "../../asn1/ulp/ulp.cnf" tvbuff_t *mdn_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, &mdn_tvb); @@ -1039,7 +1321,7 @@ dissect_ulp_BIT_STRING_SIZE_34(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_ulp_T_imsi(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 91 "../../asn1/ulp/ulp.cnf" +#line 324 "../../asn1/ulp/ulp.cnf" tvbuff_t *imsi_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, &imsi_tvb); @@ -1277,8 +1559,16 @@ static const value_string ulp_EncodingType_vals[] = { static int dissect_ulp_EncodingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 60 "../../asn1/ulp/ulp.cnf" + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 3, NULL, TRUE, 0, NULL); + 3, &val, TRUE, 0, NULL); + + ulp_priv->notif_enc_type = (guint8) val; + + return offset; } @@ -1286,9 +1576,39 @@ dissect_ulp_EncodingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int -dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - 1, maxReqLength, FALSE, NULL); +dissect_ulp_T_requestorId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 67 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, + 1, maxReqLength, FALSE, &val_tvb); + + if (val_tvb) { + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + switch(ulp_priv->notif_enc_type) { + case 0: /* UCS-2 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + ENC_UCS_2|ENC_BIG_ENDIAN); + break; + case 1: /* GSM 7bits */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case 2: /* UTF-8 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA); + break; + default: + actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + tvb_bytes_to_str(wmem_packet_scope(), val_tvb, 0, + tvb_reported_length(val_tvb))); + break; + } + } + + return offset; } @@ -1318,9 +1638,39 @@ dissect_ulp_FormatIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int -dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - 1, maxClientLength, FALSE, NULL); +dissect_ulp_T_clientName(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 99 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, + 1, maxClientLength, FALSE, &val_tvb); + + if (val_tvb) { + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + switch(ulp_priv->notif_enc_type) { + case 0: /* UCS-2 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + ENC_UCS_2|ENC_BIG_ENDIAN); + break; + case 1: /* GSM 7bits */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case 2: /* UTF-8 */ + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), ENC_UTF_8|ENC_NA); + break; + default: + actx->created_item = proto_tree_add_string(tree, hf_index, val_tvb, 0, + tvb_reported_length(val_tvb), + tvb_bytes_to_str(wmem_packet_scope(), val_tvb, 0, + tvb_reported_length(val_tvb))); + break; + } + } + + return offset; } @@ -1352,9 +1702,9 @@ dissect_ulp_Ver2_Notification_extension(tvbuff_t *tvb _U_, int offset _U_, asn1_ static const per_sequence_t Notification_sequence[] = { { &hf_ulp_notificationType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_NotificationType }, { &hf_ulp_encodingType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_EncodingType }, - { &hf_ulp_requestorId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_OCTET_STRING_SIZE_1_maxReqLength }, + { &hf_ulp_requestorId , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_requestorId }, { &hf_ulp_requestorIdType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator }, - { &hf_ulp_clientName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_OCTET_STRING_SIZE_1_maxClientLength }, + { &hf_ulp_clientName , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_clientName }, { &hf_ulp_clientNameType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_FormatIndicator }, { &hf_ulp_ver2_Notification_extension, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_Ver2_Notification_extension }, { NULL, 0, 0, NULL } @@ -1362,9 +1712,16 @@ static const per_sequence_t Notification_sequence[] = { static int dissect_ulp_Notification(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 54 "../../asn1/ulp/ulp.cnf" + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + + ulp_priv->notif_enc_type = -1; offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_ulp_Notification, Notification_sequence); + + + return offset; } @@ -1381,6 +1738,21 @@ dissect_ulp_INTEGER_0_127(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int +dissect_ulp_T_maxLocAge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 385 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " s"); + + + + return offset; +} + + + +static int dissect_ulp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 7U, NULL, FALSE); @@ -1392,7 +1764,7 @@ dissect_ulp_INTEGER_0_7(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static const per_sequence_t QoP_sequence[] = { { &hf_ulp_horacc , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 }, { &hf_ulp_veracc , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_127 }, - { &hf_ulp_maxLocAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_65535 }, + { &hf_ulp_maxLocAge , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_maxLocAge }, { &hf_ulp_delay , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_7 }, { NULL, 0, 0, NULL } }; @@ -1494,9 +1866,18 @@ dissect_ulp_SupportedWLANInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int -dissect_ulp_BIT_STRING_SIZE_48(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 48, 48, FALSE, NULL, NULL); +dissect_ulp_T_apMACAddress_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 573 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 48, 48, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + + return offset; } @@ -1520,7 +1901,7 @@ dissect_ulp_T_apDevType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static const per_sequence_t SupportedWLANApData_sequence[] = { - { &hf_ulp_apMACAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_48 }, + { &hf_ulp_apMACAddress_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress_01 }, { &hf_ulp_apDevType_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apDevType }, { NULL, 0, 0, NULL } }; @@ -1697,27 +2078,37 @@ dissect_ulp_AllowedReportingType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int -dissect_ulp_INTEGER_M525600_M1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_startTime_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 190 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -525600, -1, NULL, FALSE); + proto_item_append_text(actx->created_item, " min"); + + + return offset; } static int -dissect_ulp_INTEGER_M525599_0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_stopTime_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 194 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -525599, 0U, NULL, FALSE); + proto_item_append_text(actx->created_item, " min"); + + + return offset; } static const per_sequence_t TimeWindow_sequence[] = { - { &hf_ulp_startTime_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M525600_M1 }, - { &hf_ulp_stopTime_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M525599_0 }, + { &hf_ulp_startTime_02 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_startTime_02 }, + { &hf_ulp_stopTime_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_stopTime_01 }, { NULL, 0, 0, NULL } }; @@ -1742,10 +2133,15 @@ dissect_ulp_INTEGER_1_65536(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int -dissect_ulp_INTEGER_1_86400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_minTimeInterval(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 186 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 86400U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } @@ -1753,7 +2149,7 @@ dissect_ulp_INTEGER_1_86400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static const per_sequence_t ReportingCriteria_sequence[] = { { &hf_ulp_timeWindow , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_TimeWindow }, { &hf_ulp_maxNumberofReports, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_65536 }, - { &hf_ulp_minTimeInterval , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_86400 }, + { &hf_ulp_minTimeInterval , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_minTimeInterval }, { NULL, 0, 0, NULL } }; @@ -1922,9 +2318,18 @@ dissect_ulp_INTEGER_0_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int -dissect_ulp_BIT_STRING_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 3, 3, FALSE, NULL, NULL); +dissect_ulp_T_ganssSBASid(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 201 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 3, 3, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA); + } + + return offset; } @@ -1958,7 +2363,7 @@ dissect_ulp_GANSSSignals(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static const per_sequence_t GANSSPositionMethod_sequence[] = { { &hf_ulp_ganssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 }, - { &hf_ulp_ganssSBASid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_3 }, + { &hf_ulp_ganssSBASid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssSBASid }, { &hf_ulp_gANSSPositioningMethodTypes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSPositioningMethodTypes }, { &hf_ulp_gANSSSignals , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_GANSSSignals }, { NULL, 0, 0, NULL } @@ -2164,20 +2569,30 @@ dissect_ulp_ServicesSupported(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int -dissect_ulp_INTEGER_1_3600(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_minInt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 761 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 3600U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } static int -dissect_ulp_INTEGER_1_1440(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_maxInt(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 765 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 1440U, NULL, FALSE); + proto_item_append_text(actx->created_item, " min"); + + + return offset; } @@ -2226,8 +2641,8 @@ dissect_ulp_BatchRepCap(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static const per_sequence_t ReportingCap_sequence[] = { - { &hf_ulp_minInt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_3600 }, - { &hf_ulp_maxInt , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1440 }, + { &hf_ulp_minInt , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_minInt }, + { &hf_ulp_maxInt , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_maxInt }, { &hf_ulp_repMode_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_RepMode }, { &hf_ulp_batchRepCap , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BatchRepCap }, { NULL, 0, 0, NULL } @@ -3212,10 +3627,64 @@ dissect_ulp_LteCellInformation(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int -dissect_ulp_INTEGER_M127_128(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_apMACAddress_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 590 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 48, 48, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_apTransmitPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 601 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBm"); + + + + return offset; +} + + + +static int +dissect_ulp_T_apAntennaGain(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 605 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBi"); + + + + return offset; +} + + + +static int +dissect_ulp_T_apSignaltoNoise(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 609 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, -127, 128U, NULL, FALSE); + proto_item_append_text(actx->created_item, " dB"); + + + return offset; } @@ -3242,6 +3711,21 @@ dissect_ulp_T_apDeviceType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int +dissect_ulp_T_apSignalStrength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 613 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBm"); + + + + return offset; +} + + + +static int dissect_ulp_INTEGER_0_256(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 256U, NULL, FALSE); @@ -3295,6 +3779,66 @@ dissect_ulp_RTD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_t } + +static int +dissect_ulp_T_setTransmitPower(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 617 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBm"); + + + + return offset; +} + + + +static int +dissect_ulp_T_setAntennaGain(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 621 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBi"); + + + + return offset; +} + + + +static int +dissect_ulp_T_setSignaltoNoise(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 625 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dB"); + + + + return offset; +} + + + +static int +dissect_ulp_T_setSignalStrength(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 629 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + -127, 128U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dBm"); + + + + return offset; +} + + static const value_string ulp_LocationEncodingDescriptor_vals[] = { { 0, "lci" }, { 1, "asn1" }, @@ -3458,9 +4002,18 @@ dissect_ulp_INTEGER_0_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int -dissect_ulp_OCTET_STRING_SIZE_1_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, - 1, 32, FALSE, NULL); +dissect_ulp_T_apSSID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 645 "../../asn1/ulp/ulp.cnf" + tvbuff_t *ssid_tvb; + + offset = dissect_per_octet_string(tvb, offset, actx, tree, -1, + 1, 32, FALSE, &ssid_tvb); + + if (ssid_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, ssid_tvb, 0, -1, ENC_ASCII|ENC_NA); + } + + return offset; } @@ -3490,19 +4043,38 @@ dissect_ulp_T_apPHYType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, } + +static int +dissect_ulp_T_setMACAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 656 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 48, 48, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + + + + return offset; +} + + static const per_sequence_t WlanAPInformation_sequence[] = { - { &hf_ulp_apMACAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_48 }, - { &hf_ulp_apTransmitPower , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, - { &hf_ulp_apAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, - { &hf_ulp_apSignaltoNoise , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, + { &hf_ulp_apMACAddress_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress_02 }, + { &hf_ulp_apTransmitPower , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apTransmitPower }, + { &hf_ulp_apAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apAntennaGain }, + { &hf_ulp_apSignaltoNoise , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apSignaltoNoise }, { &hf_ulp_apDeviceType , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apDeviceType }, - { &hf_ulp_apSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, + { &hf_ulp_apSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_apSignalStrength }, { &hf_ulp_apChannelFrequency, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_256 }, { &hf_ulp_apRoundTripDelay, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RTD }, - { &hf_ulp_setTransmitPower, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, - { &hf_ulp_setAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, - { &hf_ulp_setSignaltoNoise, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, - { &hf_ulp_setSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M127_128 }, + { &hf_ulp_setTransmitPower, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_setTransmitPower }, + { &hf_ulp_setAntennaGain , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_setAntennaGain }, + { &hf_ulp_setSignaltoNoise, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_setSignaltoNoise }, + { &hf_ulp_setSignalStrength, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_setSignalStrength }, { &hf_ulp_apReportedLocation, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportedLocation }, { &hf_ulp_apRepLocation , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_RepLocation }, { &hf_ulp_apSignalStrengthDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 }, @@ -3510,9 +4082,9 @@ static const per_sequence_t WlanAPInformation_sequence[] = { { &hf_ulp_setSignalStrengthDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 }, { &hf_ulp_setSignaltoNoiseDelta, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1 }, { &hf_ulp_operatingClass , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 }, - { &hf_ulp_apSSID , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_OCTET_STRING_SIZE_1_32 }, + { &hf_ulp_apSSID , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_apSSID }, { &hf_ulp_apPHYType , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_apPHYType }, - { &hf_ulp_setMACAddress , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_48 }, + { &hf_ulp_setMACAddress , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_ulp_T_setMACAddress }, { NULL, 0, 0, NULL } }; @@ -3575,15 +4147,60 @@ dissect_ulp_INTEGER_M32768_32767(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * } + +static int +dissect_ulp_T_rSSIstd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 685 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dB"); + + + + return offset; +} + + + +static int +dissect_ulp_T_cinr(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 692 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 255U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dB"); + + + + return offset; +} + + + +static int +dissect_ulp_T_cINRstd(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 696 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 63U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " dB"); + + + + return offset; +} + + static const per_sequence_t WimaxNMR_sequence[] = { { &hf_ulp_wimaxBsID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_WimaxBsID }, { &hf_ulp_relDelay , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_M32768_32767 }, { &hf_ulp_relDelaystd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_1023 }, { &hf_ulp_rssi , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 }, - { &hf_ulp_rSSIstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_63 }, + { &hf_ulp_rSSIstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_rSSIstd }, { &hf_ulp_bSTxPower , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 }, - { &hf_ulp_cinr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_255 }, - { &hf_ulp_cINRstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_63 }, + { &hf_ulp_cinr , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_cinr }, + { &hf_ulp_cINRstd , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_cINRstd }, { &hf_ulp_bSLocation , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_ReportedLocation }, { NULL, 0, 0, NULL } }; @@ -3756,7 +4373,7 @@ dissect_ulp_MultipleLocationIds(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a static int dissect_ulp_T_msisdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 101 "../../asn1/ulp/ulp.cnf" +#line 725 "../../asn1/ulp/ulp.cnf" tvbuff_t *msisdn_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, &msisdn_tvb); @@ -3777,7 +4394,7 @@ dissect_ulp_T_msisdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int dissect_ulp_T_sip_uri(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 112 "../../asn1/ulp/ulp.cnf" +#line 736 "../../asn1/ulp/ulp.cnf" offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index, 1, 255, FALSE, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:./-_~%#@?", 72, NULL); @@ -3790,7 +4407,7 @@ dissect_ulp_T_sip_uri(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p static int dissect_ulp_T_ims_public_identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 117 "../../asn1/ulp/ulp.cnf" +#line 741 "../../asn1/ulp/ulp.cnf" offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index, 1, 255, FALSE, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:./-_~%#@?", 72, NULL); @@ -3803,7 +4420,7 @@ dissect_ulp_T_ims_public_identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static int dissect_ulp_T_mdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 121 "../../asn1/ulp/ulp.cnf" +#line 745 "../../asn1/ulp/ulp.cnf" tvbuff_t *mdn_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, &mdn_tvb); @@ -3824,7 +4441,7 @@ dissect_ulp_T_mdn_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pr static int dissect_ulp_T_uri(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 132 "../../asn1/ulp/ulp.cnf" +#line 756 "../../asn1/ulp/ulp.cnf" offset = dissect_per_restricted_character_string(tvb, offset, actx, tree, hf_index, 1, 255, FALSE, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./-_~%#", 69, NULL); @@ -3967,10 +4584,15 @@ dissect_ulp_INTEGER_M8388608_8388607(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int -dissect_ulp_INTEGER_0_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_orientationMajorAxis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 350 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 180U, NULL, FALSE); + proto_item_append_text(actx->created_item, " degrees"); + + + return offset; } @@ -3978,7 +4600,7 @@ dissect_ulp_INTEGER_0_180(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static const per_sequence_t T_uncertainty_sequence[] = { { &hf_ulp_uncertaintySemiMajor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 }, { &hf_ulp_uncertaintySemiMinor, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 }, - { &hf_ulp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_180 }, + { &hf_ulp_orientationMajorAxis, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_orientationMajorAxis }, { NULL, 0, 0, NULL } }; @@ -3993,10 +4615,14 @@ dissect_ulp_T_uncertainty(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int -dissect_ulp_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_confidence(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 100U, NULL, FALSE); +#line 354 "../../asn1/ulp/ulp.cnf" + proto_item_append_text(actx->created_item, "%%"); + + return offset; } @@ -4017,9 +4643,24 @@ dissect_ulp_T_altitudeDirection(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a } + +static int +dissect_ulp_T_altitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 357 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 32767U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " m"); + + + + return offset; +} + + static const per_sequence_t AltitudeInfo_sequence[] = { { &hf_ulp_altitudeDirection, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_altitudeDirection }, - { &hf_ulp_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_32767 }, + { &hf_ulp_altitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_altitude }, { &hf_ulp_altUncertainty , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_127 }, { NULL, 0, 0, NULL } }; @@ -4038,7 +4679,7 @@ static const per_sequence_t PositionEstimate_sequence[] = { { &hf_ulp_latitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 }, { &hf_ulp_longitude , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 }, { &hf_ulp_uncertainty , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_uncertainty }, - { &hf_ulp_confidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_100 }, + { &hf_ulp_confidence , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_confidence }, { &hf_ulp_altitudeInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_AltitudeInfo }, { NULL, 0, 0, NULL } }; @@ -4054,9 +4695,19 @@ dissect_ulp_PositionEstimate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int -dissect_ulp_BIT_STRING_SIZE_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 9, 9, FALSE, NULL, NULL); +dissect_ulp_T_bearing(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 392 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 9, 9, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + + return offset; } @@ -4064,17 +4715,27 @@ dissect_ulp_BIT_STRING_SIZE_9(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int -dissect_ulp_BIT_STRING_SIZE_16(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 16, 16, FALSE, NULL, NULL); +dissect_ulp_T_horspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 404 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 16, 16, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + return offset; } static const per_sequence_t Horvel_sequence[] = { - { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 }, - { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 }, + { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing }, + { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed }, { NULL, 0, 0, NULL } }; @@ -4089,19 +4750,88 @@ dissect_ulp_Horvel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, prot static int -dissect_ulp_BIT_STRING_SIZE_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, - 1, 1, FALSE, NULL, NULL); +dissect_ulp_T_verdirect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 416 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 1, 1, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_bearing_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 427 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 9, 9, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_horspeed_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 439 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 16, 16, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_verspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 451 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 8, 8, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + return offset; } static const per_sequence_t Horandvervel_sequence[] = { - { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 }, - { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 }, - { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 }, - { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 }, + { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verdirect }, + { &hf_ulp_bearing_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_01 }, + { &hf_ulp_horspeed_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_01 }, + { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verspeed }, { NULL, 0, 0, NULL } }; @@ -4114,10 +4844,70 @@ dissect_ulp_Horandvervel(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ } + +static int +dissect_ulp_T_bearing_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 463 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 9, 9, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_horspeed_02(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 475 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 16, 16, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_uncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 487 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 8, 8, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + static const per_sequence_t Horveluncert_sequence[] = { - { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 }, - { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 }, - { &hf_ulp_uncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 }, + { &hf_ulp_bearing_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_02 }, + { &hf_ulp_horspeed_02 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_02 }, + { &hf_ulp_uncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_uncertspeed }, { NULL, 0, 0, NULL } }; @@ -4130,13 +4920,132 @@ dissect_ulp_Horveluncert(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ } + +static int +dissect_ulp_T_verdirect_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 499 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 1, 1, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 1, ENC_NA); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_bearing_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 510 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 9, 9, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 9, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " degrees"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_horspeed_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 522 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 16, 16, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_verspeed_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 534 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 8, 8, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_horuncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 546 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 8, 8, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_veruncertspeed(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 558 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 8, 8, FALSE, &val_tvb, NULL); + + if (val_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, val_tvb, 0, 1, ENC_BIG_ENDIAN); + proto_item_append_text(actx->created_item, " km/h"); + } + + + + return offset; +} + + static const per_sequence_t Horandveruncert_sequence[] = { - { &hf_ulp_verdirect , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_1 }, - { &hf_ulp_bearing , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_9 }, - { &hf_ulp_horspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_16 }, - { &hf_ulp_verspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 }, - { &hf_ulp_horuncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 }, - { &hf_ulp_veruncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_8 }, + { &hf_ulp_verdirect_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verdirect_01 }, + { &hf_ulp_bearing_03 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_bearing_03 }, + { &hf_ulp_horspeed_03 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horspeed_03 }, + { &hf_ulp_verspeed_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_verspeed_01 }, + { &hf_ulp_horuncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_horuncertspeed }, + { &hf_ulp_veruncertspeed , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_veruncertspeed }, { NULL, 0, 0, NULL } }; @@ -4341,10 +5250,15 @@ dissect_ulp_SUPLRESPONSE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int -dissect_ulp_INTEGER_0_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_gpsToe(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 131 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 167U, NULL, FALSE); + proto_item_append_text(actx->created_item, " hr"); + + + return offset; } @@ -4361,10 +5275,15 @@ dissect_ulp_INTEGER_0_31(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int -dissect_ulp_INTEGER_0_10(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_toeLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 135 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 10U, NULL, FALSE); + proto_item_append_text(actx->created_item, " hr"); + + + return offset; } @@ -4400,9 +5319,9 @@ dissect_ulp_SatelliteInfo(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static const per_sequence_t NavigationModel_sequence[] = { { &hf_ulp_gpsWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 }, - { &hf_ulp_gpsToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 }, + { &hf_ulp_gpsToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_gpsToe }, { &hf_ulp_nsat , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_31 }, - { &hf_ulp_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_10 }, + { &hf_ulp_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_toeLimit }, { &hf_ulp_satInfo , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SatelliteInfo }, { NULL, 0, 0, NULL } }; @@ -4437,6 +5356,43 @@ dissect_ulp_GanssRequestedCommonAssistanceDataList(tvbuff_t *tvb _U_, int offset static int +dissect_ulp_T_ganssId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 212 "../../asn1/ulp/ulp.cnf" + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, &val, FALSE); + + ulp_priv->ganss_req_gen_data_ganss_id = (guint8) val; + + + + return offset; +} + + + +static int +dissect_ulp_T_ganssSBASid_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 222 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 3, 3, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_bits_item(tree, hf_index, val_tvb, 0, 3, ENC_NA); + } + + + + return offset; +} + + + +static int dissect_ulp_DGANSS_Sig_Id_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 8, 8, FALSE, NULL, NULL); @@ -4447,10 +5403,74 @@ dissect_ulp_DGANSS_Sig_Id_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int -dissect_ulp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_ganssWeek(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 246 "../../asn1/ulp/ulp.cnf" + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 4095U, NULL, FALSE); + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " wk"); + } else { + proto_item_append_text(actx->created_item, " d"); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_ganssToe(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 257 "../../asn1/ulp/ulp.cnf" + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 167U, &val, FALSE); + + + + +#line 263 "../../asn1/ulp/ulp.cnf" + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " h"); + } else { + proto_item_set_text(actx->created_item, "%u min (%u)", 15*val, val); + } + + + return offset; +} + + + +static int +dissect_ulp_T_t_toeLimit(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 271 "../../asn1/ulp/ulp.cnf" + guint32 val; + ulp_private_data_t *ulp_priv = ulp_get_private_data(actx); + + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 15U, &val, FALSE); + + + + +#line 277 "../../asn1/ulp/ulp.cnf" + if (ulp_priv->ganss_req_gen_data_ganss_id != 4) { + /* Not GLONASS */ + proto_item_append_text(actx->created_item, " h"); + } else { + proto_item_set_text(actx->created_item, "%u min (%u)", 30*val, val); + } + + return offset; } @@ -4485,9 +5505,9 @@ dissect_ulp_SatellitesListRelatedDataList(tvbuff_t *tvb _U_, int offset _U_, asn static const per_sequence_t GanssNavigationModelData_sequence[] = { - { &hf_ulp_ganssWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 }, - { &hf_ulp_ganssToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 }, - { &hf_ulp_t_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 }, + { &hf_ulp_ganssWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssWeek }, + { &hf_ulp_ganssToe , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssToe }, + { &hf_ulp_t_toeLimit , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_t_toeLimit }, { &hf_ulp_satellitesListRelatedDataList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SatellitesListRelatedDataList }, { NULL, 0, 0, NULL } }; @@ -4503,10 +5523,39 @@ dissect_ulp_GanssNavigationModelData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int -dissect_ulp_INTEGER_0_59(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_ganssTimeModels(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 233 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 16, 16, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_ulp_ganssTimeModels); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit0, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit1, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit2, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit3, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_bit4, val_tvb, 0, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_ulp_ganssTimeModels_spare, val_tvb, 0, 2, ENC_BIG_ENDIAN); + } + + + + return offset; +} + + + +static int +dissect_ulp_T_ganssTODmin(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 285 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 59U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } @@ -4542,7 +5591,7 @@ dissect_ulp_ReqDataBitAssistanceList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static const per_sequence_t GanssDataBits_sequence[] = { - { &hf_ulp_ganssTODmin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_59 }, + { &hf_ulp_ganssTODmin , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssTODmin }, { &hf_ulp_reqDataBitAssistanceList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_ReqDataBitAssistanceList }, { NULL, 0, 0, NULL } }; @@ -4648,13 +5697,13 @@ dissect_ulp_BDS_Sig_Id_Req(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static const per_sequence_t GanssReqGenericData_sequence[] = { - { &hf_ulp_ganssId , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_15 }, - { &hf_ulp_ganssSBASid , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_3 }, + { &hf_ulp_ganssId_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssId }, + { &hf_ulp_ganssSBASid_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssSBASid_01 }, { &hf_ulp_ganssRealTimeIntegrity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN }, { &hf_ulp_ganssDifferentialCorrection, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_DGANSS_Sig_Id_Req }, { &hf_ulp_ganssAlmanac , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN }, { &hf_ulp_ganssNavigationModelData, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssNavigationModelData }, - { &hf_ulp_ganssTimeModels , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_BIT_STRING_SIZE_16 }, + { &hf_ulp_ganssTimeModels , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_ganssTimeModels }, { &hf_ulp_ganssReferenceMeasurementInfo, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN }, { &hf_ulp_ganssDataBits , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GanssDataBits }, { &hf_ulp_ganssUTCModel , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN }, @@ -4690,6 +5739,16 @@ dissect_ulp_GanssRequestedGenericAssistanceDataList(tvbuff_t *tvb _U_, int offse } + +static int +dissect_ulp_INTEGER_0_167(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 167U, NULL, FALSE); + + return offset; +} + + static const per_sequence_t GPSTime_sequence[] = { { &hf_ulp_gPSWeek , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_1023 }, { &hf_ulp_gPSTOWhour , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_167 }, @@ -4774,7 +5833,7 @@ dissect_ulp_OCTET_STRING_SIZE_1_8192(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx static int dissect_ulp_T_rrlpPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 53 "../../asn1/ulp/ulp.cnf" +#line 139 "../../asn1/ulp/ulp.cnf" tvbuff_t *rrlp_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -4794,7 +5853,7 @@ dissect_ulp_T_rrlpPayload(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int dissect_ulp_T_lPPPayload_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 62 "../../asn1/ulp/ulp.cnf" +#line 295 "../../asn1/ulp/ulp.cnf" tvbuff_t *lpp_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -4955,6 +6014,16 @@ dissect_ulp_T_modeSpecificInfo_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t } + +static int +dissect_ulp_INTEGER_0_4095(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 4095U, NULL, FALSE); + + return offset; +} + + static const per_sequence_t UTRAN_GPSReferenceTime_sequence[] = { { &hf_ulp_utran_GPSTimingOfCell, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_utran_GPSTimingOfCell }, { &hf_ulp_modeSpecificInfo_01, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_01 }, @@ -5110,10 +6179,15 @@ dissect_ulp_UTRAN_GPSReferenceTimeResult(tvbuff_t *tvb _U_, int offset _U_, asn1 static int -dissect_ulp_INTEGER_0_86399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_ganssTOD(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 709 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 86399U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } @@ -5179,7 +6253,7 @@ dissect_ulp_T_modeSpecificInfo_03(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t static const per_sequence_t UTRAN_GANSSReferenceTime_sequence[] = { - { &hf_ulp_ganssTOD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_86399 }, + { &hf_ulp_ganssTOD , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_ganssTOD }, { &hf_ulp_utran_GANSSTimingOfCell, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_3999999 }, { &hf_ulp_modeSpecificInfo_03, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_modeSpecificInfo_03 }, { &hf_ulp_sfn , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_4095 }, @@ -5543,18 +6617,38 @@ dissect_ulp_INTEGER_1_8639999(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int -dissect_ulp_INTEGER_0_2678400(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_intervalBetweenFixes(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 148 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 8639999U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " s"); + + + + return offset; +} + + + +static int +dissect_ulp_T_startTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 152 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 2678400U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } static const per_sequence_t PeriodicParams_sequence[] = { { &hf_ulp_numberOfFixes , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_8639999 }, - { &hf_ulp_intervalBetweenFixes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_8639999 }, - { &hf_ulp_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_2678400 }, + { &hf_ulp_intervalBetweenFixes, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_intervalBetweenFixes }, + { &hf_ulp_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_startTime }, { NULL, 0, 0, NULL } }; @@ -5587,16 +6681,21 @@ dissect_ulp_AreaEventType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U static int -dissect_ulp_INTEGER_1_604800(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_minimumIntervalTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 164 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 604800U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } static const per_sequence_t RepeatedReportingParams_sequence[] = { - { &hf_ulp_minimumIntervalTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_604800 }, + { &hf_ulp_minimumIntervalTime, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_minimumIntervalTime }, { &hf_ulp_maximumNumberOfReports, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1024 }, { NULL, 0, 0, NULL } }; @@ -5612,10 +6711,30 @@ dissect_ulp_RepeatedReportingParams(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_ static int -dissect_ulp_INTEGER_0_11318399(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_startTime_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 156 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 2678400U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " s"); + + + + return offset; +} + + + +static int +dissect_ulp_T_stopTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 160 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 11318399U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } @@ -5638,8 +6757,8 @@ dissect_ulp_T_latitudeSign_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static const per_sequence_t Coordinate_sequence[] = { { &hf_ulp_latitudeSign_01 , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_latitudeSign_01 }, - { &hf_ulp_latitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 }, - { &hf_ulp_longitude , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 }, + { &hf_ulp_CoordinateLatitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_8388607 }, + { &hf_ulp_CoordinateLongitude, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_M8388608_8388607 }, { NULL, 0, 0, NULL } }; @@ -5654,6 +6773,21 @@ dissect_ulp_Coordinate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int +dissect_ulp_T_radius(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 775 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 1000000U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " m"); + + + + return offset; +} + + + +static int dissect_ulp_INTEGER_1_1000000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 1000000U, NULL, FALSE); @@ -5674,7 +6808,7 @@ dissect_ulp_INTEGER_1_1500000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static const per_sequence_t CircularArea_sequence[] = { { &hf_ulp_coordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Coordinate }, - { &hf_ulp_radius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 }, + { &hf_ulp_radius , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_radius }, { &hf_ulp_radius_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 }, { &hf_ulp_radius_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 }, { NULL, 0, 0, NULL } @@ -5691,23 +6825,58 @@ dissect_ulp_CircularArea(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_ static int -dissect_ulp_INTEGER_0_179(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_semiMajor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 779 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 1000000U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " m"); + + + + return offset; +} + + + +static int +dissect_ulp_T_semiMinor(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 783 "../../asn1/ulp/ulp.cnf" + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 1U, 1000000U, NULL, FALSE); + + proto_item_append_text(actx->created_item, " m"); + + + + return offset; +} + + + +static int +dissect_ulp_T_angle(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 787 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 179U, NULL, FALSE); + proto_item_append_text(actx->created_item, " degrees"); + + + return offset; } static const per_sequence_t EllipticalArea_sequence[] = { { &hf_ulp_coordinate , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_Coordinate }, - { &hf_ulp_semiMajor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 }, + { &hf_ulp_semiMajor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_semiMajor }, { &hf_ulp_semiMajor_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 }, { &hf_ulp_semiMajor_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 }, - { &hf_ulp_semiMinor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_1_1000000 }, + { &hf_ulp_semiMinor , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_semiMinor }, { &hf_ulp_semiMinor_min , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1000000 }, { &hf_ulp_semiMinor_max , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_1500000 }, - { &hf_ulp_angle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_INTEGER_0_179 }, + { &hf_ulp_angle , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_T_angle }, { NULL, 0, 0, NULL } }; @@ -5736,17 +6905,22 @@ dissect_ulp_PolygonDescription(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int -dissect_ulp_INTEGER_1_100000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_polygonHysteresis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 791 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 100000U, NULL, FALSE); + proto_item_append_text(actx->created_item, " m"); + + + return offset; } static const per_sequence_t PolygonArea_sequence[] = { { &hf_ulp_polygonDescription, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_ulp_PolygonDescription }, - { &hf_ulp_polygonHysteresis, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_INTEGER_1_100000 }, + { &hf_ulp_polygonHysteresis, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_ulp_T_polygonHysteresis }, { NULL, 0, 0, NULL } }; @@ -5903,8 +7077,27 @@ dissect_ulp_LTEAreaId(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, p } + +static int +dissect_ulp_T_apMACAddress(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 168 "../../asn1/ulp/ulp.cnf" + tvbuff_t *val_tvb; + + offset = dissect_per_bit_string(tvb, offset, actx, tree, -1, + 48, 48, FALSE, &val_tvb, NULL); + + if (val_tvb) { + proto_tree_add_item(tree, hf_index, val_tvb, 0, 6, ENC_NA); + } + + + + return offset; +} + + static const per_sequence_t WLANAreaId_sequence[] = { - { &hf_ulp_apMACAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BIT_STRING_SIZE_48 }, + { &hf_ulp_apMACAddress , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_T_apMACAddress }, { NULL, 0, 0, NULL } }; @@ -6054,8 +7247,8 @@ static const per_sequence_t AreaEventParams_sequence[] = { { &hf_ulp_areaEventType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_AreaEventType }, { &hf_ulp_locationEstimate, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_ulp_BOOLEAN }, { &hf_ulp_repeatedReportingParams, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_RepeatedReportingParams }, - { &hf_ulp_startTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_2678400 }, - { &hf_ulp_stopTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_INTEGER_0_11318399 }, + { &hf_ulp_startTime_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_startTime_01 }, + { &hf_ulp_stopTime , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_T_stopTime }, { &hf_ulp_geographicTargetAreaList, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_GeographicTargetAreaList }, { &hf_ulp_areaIdLists , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_ulp_SEQUENCE_SIZE_1_maxAreaIdList_OF_AreaIdList }, { NULL, 0, 0, NULL } @@ -6413,10 +7606,15 @@ dissect_ulp_ResultCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, static int -dissect_ulp_INTEGER_0_31536000(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_ulp_T_relativeTime(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 182 "../../asn1/ulp/ulp.cnf" offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 31536000U, NULL, FALSE); + proto_item_append_text(actx->created_item, " s"); + + + return offset; } @@ -6429,7 +7627,7 @@ static const value_string ulp_TimeStamp_vals[] = { static const per_choice_t TimeStamp_choice[] = { { 0, &hf_ulp_absoluteTime , ASN1_NO_EXTENSIONS , dissect_ulp_UTCTime }, - { 1, &hf_ulp_relativeTime , ASN1_NO_EXTENSIONS , dissect_ulp_INTEGER_0_31536000 }, + { 1, &hf_ulp_relativeTime , ASN1_NO_EXTENSIONS , dissect_ulp_T_relativeTime }, { 0, NULL, 0, NULL } }; @@ -6532,7 +7730,7 @@ static const per_choice_t UlpMessage_choice[] = { static int dissect_ulp_UlpMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 43 "../../asn1/ulp/ulp.cnf" +#line 44 "../../asn1/ulp/ulp.cnf" guint32 UlpMessage; @@ -6559,7 +7757,7 @@ static const per_sequence_t ULP_PDU_sequence[] = { static int dissect_ulp_ULP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 28 "../../asn1/ulp/ulp.cnf" +#line 29 "../../asn1/ulp/ulp.cnf" proto_item *it; proto_tree *ulp_tree; @@ -6569,7 +7767,7 @@ dissect_ulp_ULP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro col_set_str(actx->pinfo->cinfo, COL_PROTOCOL, PSNAME); col_clear(actx->pinfo->cinfo, COL_INFO); -#line 39 "../../asn1/ulp/ulp.cnf" +#line 40 "../../asn1/ulp/ulp.cnf" offset = dissect_per_sequence(tvb, offset, actx, ulp_tree, hf_index, ett_ulp_ULP_PDU, ULP_PDU_sequence); @@ -6591,7 +7789,7 @@ static int dissect_ULP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_ /*--- End of included file: packet-ulp-fn.c ---*/ -#line 77 "../../asn1/ulp/packet-ulp-template.c" +#line 344 "../../asn1/ulp/packet-ulp-template.c" static guint @@ -6742,16 +7940,16 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_requestorId, { "requestorId", "ulp.requestorId", - FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING_SIZE_1_maxReqLength", HFILL }}, + FT_STRING, STR_UNICODE, NULL, 0, + NULL, HFILL }}, { &hf_ulp_requestorIdType, { "requestorIdType", "ulp.requestorIdType", FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0, "FormatIndicator", HFILL }}, { &hf_ulp_clientName, { "clientName", "ulp.clientName", - FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING_SIZE_1_maxClientLength", HFILL }}, + FT_STRING, STR_UNICODE, NULL, 0, + NULL, HFILL }}, { &hf_ulp_clientNameType, { "clientNameType", "ulp.clientNameType", FT_UINT32, BASE_DEC, VALS(ulp_FormatIndicator_vals), 0, @@ -6927,7 +8125,7 @@ void proto_register_ulp(void) { { &hf_ulp_gpsToe, { "gpsToe", "ulp.gpsToe", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_167", HFILL }}, + NULL, HFILL }}, { &hf_ulp_nsat, { "nsat", "ulp.nsat", FT_UINT32, BASE_DEC, NULL, 0, @@ -6935,7 +8133,7 @@ void proto_register_ulp(void) { { &hf_ulp_toeLimit, { "toeLimit", "ulp.toeLimit", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_10", HFILL }}, + NULL, HFILL }}, { &hf_ulp_satInfo, { "satInfo", "ulp.satInfo", FT_UINT32, BASE_DEC, NULL, 0, @@ -7051,11 +8249,11 @@ void proto_register_ulp(void) { { &hf_ulp_intervalBetweenFixes, { "intervalBetweenFixes", "ulp.intervalBetweenFixes", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_8639999", HFILL }}, + NULL, HFILL }}, { &hf_ulp_startTime, { "startTime", "ulp.startTime", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_2678400", HFILL }}, + NULL, HFILL }}, { &hf_ulp_areaEventType, { "areaEventType", "ulp.areaEventType", FT_UINT32, BASE_DEC, VALS(ulp_AreaEventType_vals), 0, @@ -7068,10 +8266,14 @@ void proto_register_ulp(void) { { "repeatedReportingParams", "ulp.repeatedReportingParams_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_ulp_startTime_01, + { "startTime", "ulp.startTime", + FT_UINT32, BASE_DEC, NULL, 0, + "T_startTime_01", HFILL }}, { &hf_ulp_stopTime, { "stopTime", "ulp.stopTime", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_11318399", HFILL }}, + NULL, HFILL }}, { &hf_ulp_geographicTargetAreaList, { "geographicTargetAreaList", "ulp.geographicTargetAreaList", FT_UINT32, BASE_DEC, NULL, 0, @@ -7087,7 +8289,7 @@ void proto_register_ulp(void) { { &hf_ulp_minimumIntervalTime, { "minimumIntervalTime", "ulp.minimumIntervalTime", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_604800", HFILL }}, + NULL, HFILL }}, { &hf_ulp_maximumNumberOfReports, { "maximumNumberOfReports", "ulp.maximumNumberOfReports", FT_UINT32, BASE_DEC, NULL, 0, @@ -7198,8 +8400,8 @@ void proto_register_ulp(void) { "BIT_STRING_SIZE_29", HFILL }}, { &hf_ulp_apMACAddress, { "apMACAddress", "ulp.apMACAddress", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_48", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_ulp_bsID_MSB, { "bsID-MSB", "ulp.bsID_MSB", FT_BYTES, BASE_NONE, NULL, 0, @@ -7306,7 +8508,7 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_ganssId, { "ganssId", "ulp.ganssId", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_DEC, VALS(ulp_ganss_id_vals), 0, "INTEGER_0_15", HFILL }}, { &hf_ulp_gANSSSignals, { "gANSSSignals", "ulp.gANSSSignals", @@ -7319,7 +8521,7 @@ void proto_register_ulp(void) { { &hf_ulp_relativeTime, { "relativeTime", "ulp.relativeTime", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_31536000", HFILL }}, + NULL, HFILL }}, { &hf_ulp_notificationMode, { "notificationMode", "ulp.notificationMode", FT_UINT32, BASE_DEC, VALS(ulp_NotificationMode_vals), 0, @@ -7359,15 +8561,15 @@ void proto_register_ulp(void) { { &hf_ulp_minTimeInterval, { "minTimeInterval", "ulp.minTimeInterval", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_86400", HFILL }}, - { &hf_ulp_startTime_01, + NULL, HFILL }}, + { &hf_ulp_startTime_02, { "startTime", "ulp.startTime", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M525600_M1", HFILL }}, + "T_startTime_02", HFILL }}, { &hf_ulp_stopTime_01, { "stopTime", "ulp.stopTime", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M525599_0", HFILL }}, + "T_stopTime_01", HFILL }}, { &hf_ulp_protlevel, { "protlevel", "ulp.protlevel", FT_UINT32, BASE_DEC, VALS(ulp_ProtLevel_vals), 0, @@ -7582,8 +8784,8 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_ganssSBASid, { "ganssSBASid", "ulp.ganssSBASid", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_3", HFILL }}, + FT_UINT8, BASE_DEC, VALS(ulp_ganss_sbas_id_vals), 0, + NULL, HFILL }}, { &hf_ulp_gANSSPositioningMethodTypes, { "gANSSPositioningMethodTypes", "ulp.gANSSPositioningMethodTypes_element", FT_NONE, BASE_NONE, NULL, 0, @@ -7644,6 +8846,14 @@ void proto_register_ulp(void) { { "GanssReqGenericData", "ulp.GanssReqGenericData_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_ulp_ganssId_01, + { "ganssId", "ulp.ganssId", + FT_UINT32, BASE_DEC, VALS(ulp_ganss_id_vals), 0, + NULL, HFILL }}, + { &hf_ulp_ganssSBASid_01, + { "ganssSBASid", "ulp.ganssSBASid", + FT_UINT8, BASE_DEC, VALS(ulp_ganss_sbas_id_vals), 0, + "T_ganssSBASid_01", HFILL }}, { &hf_ulp_ganssRealTimeIntegrity, { "ganssRealTimeIntegrity", "ulp.ganssRealTimeIntegrity", FT_BOOLEAN, BASE_NONE, NULL, 0, @@ -7663,7 +8873,7 @@ void proto_register_ulp(void) { { &hf_ulp_ganssTimeModels, { "ganssTimeModels", "ulp.ganssTimeModels", FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_16", HFILL }}, + NULL, HFILL }}, { &hf_ulp_ganssReferenceMeasurementInfo, { "ganssReferenceMeasurementInfo", "ulp.ganssReferenceMeasurementInfo", FT_BOOLEAN, BASE_NONE, NULL, 0, @@ -7703,15 +8913,15 @@ void proto_register_ulp(void) { { &hf_ulp_ganssWeek, { "ganssWeek", "ulp.ganssWeek", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_4095", HFILL }}, + NULL, HFILL }}, { &hf_ulp_ganssToe, { "ganssToe", "ulp.ganssToe", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_167", HFILL }}, + NULL, HFILL }}, { &hf_ulp_t_toeLimit, { "t-toeLimit", "ulp.t_toeLimit", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_15", HFILL }}, + "T_t_toeLimit", HFILL }}, { &hf_ulp_satellitesListRelatedDataList, { "satellitesListRelatedDataList", "ulp.satellitesListRelatedDataList", FT_UINT32, BASE_DEC, NULL, 0, @@ -7727,7 +8937,7 @@ void proto_register_ulp(void) { { &hf_ulp_ganssTODmin, { "ganssTODmin", "ulp.ganssTODmin", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_59", HFILL }}, + NULL, HFILL }}, { &hf_ulp_reqDataBitAssistanceList, { "reqDataBitAssistanceList", "ulp.reqDataBitAssistanceList_element", FT_NONE, BASE_NONE, NULL, 0, @@ -7738,7 +8948,7 @@ void proto_register_ulp(void) { "GANSSSignals", HFILL }}, { &hf_ulp_ganssDataBitInterval, { "ganssDataBitInterval", "ulp.ganssDataBitInterval", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_ganssDataBitInterval_fmt), 0, "INTEGER_0_15", HFILL }}, { &hf_ulp_ganssDataBitSatList, { "ganssDataBitSatList", "ulp.ganssDataBitSatList", @@ -7766,7 +8976,7 @@ void proto_register_ulp(void) { "INTEGER_0_7", HFILL }}, { &hf_ulp_validity, { "validity", "ulp.validity", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_ExtendedEphemeris_validity_fmt), 0, "INTEGER_1_256", HFILL }}, { &hf_ulp_beginTime, { "beginTime", "ulp.beginTime_element", @@ -7926,11 +9136,11 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_latitude, { "latitude", "ulp.latitude", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_PositionEstimate_latitude_fmt), 0, "INTEGER_0_8388607", HFILL }}, { &hf_ulp_longitude, { "longitude", "ulp.longitude", - FT_INT32, BASE_DEC, NULL, 0, + FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_PositionEstimate_longitude_fmt), 0, "INTEGER_M8388608_8388607", HFILL }}, { &hf_ulp_uncertainty, { "uncertainty", "ulp.uncertainty_element", @@ -7938,20 +9148,20 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_uncertaintySemiMajor, { "uncertaintySemiMajor", "ulp.uncertaintySemiMajor", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_uncertaintySemiMinor, { "uncertaintySemiMinor", "ulp.uncertaintySemiMinor", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_orientationMajorAxis, { "orientationMajorAxis", "ulp.orientationMajorAxis", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_180", HFILL }}, + NULL, HFILL }}, { &hf_ulp_confidence, { "confidence", "ulp.confidence", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_100", HFILL }}, + NULL, HFILL }}, { &hf_ulp_altitudeInfo, { "altitudeInfo", "ulp.altitudeInfo_element", FT_NONE, BASE_NONE, NULL, 0, @@ -7963,10 +9173,10 @@ void proto_register_ulp(void) { { &hf_ulp_altitude, { "altitude", "ulp.altitude", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_32767", HFILL }}, + NULL, HFILL }}, { &hf_ulp_altUncertainty, { "altUncertainty", "ulp.altUncertainty", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_veracc_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_refNID_01, { "refNID", "ulp.refNID", @@ -8074,7 +9284,7 @@ void proto_register_ulp(void) { "INTEGER_0_63", HFILL }}, { &hf_ulp_rxLev, { "rxLev", "ulp.rxLev", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_NMRelement_rxLev_fmt), 0, "INTEGER_0_63", HFILL }}, { &hf_ulp_MeasuredResultsList_item, { "MeasuredResults", "ulp.MeasuredResults_element", @@ -8082,7 +9292,7 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_utra_CarrierRSSI, { "utra-CarrierRSSI", "ulp.utra_CarrierRSSI", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRA_CarrierRSSI_fmt), 0, NULL, HFILL }}, { &hf_ulp_cellMeasuredResultsList, { "cellMeasuredResultsList", "ulp.cellMeasuredResultsList", @@ -8110,11 +9320,11 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_cpich_Ec_N0, { "cpich-Ec-N0", "ulp.cpich_Ec_N0", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_CPICH_Ec_N0_fmt), 0, NULL, HFILL }}, { &hf_ulp_cpich_RSCP, { "cpich-RSCP", "ulp.cpich_RSCP", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_CPICH_RSCP_fmt), 0, NULL, HFILL }}, { &hf_ulp_pathloss, { "pathloss", "ulp.pathloss", @@ -8134,7 +9344,7 @@ void proto_register_ulp(void) { "TGSN", HFILL }}, { &hf_ulp_primaryCCPCH_RSCP, { "primaryCCPCH-RSCP", "ulp.primaryCCPCH_RSCP", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_PrimaryCCPCH_RSCP_fmt), 0, NULL, HFILL }}, { &hf_ulp_timeslotISCP_List, { "timeslotISCP-List", "ulp.timeslotISCP_List", @@ -8146,19 +9356,19 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_horacc, { "horacc", "ulp.horacc", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_horacc_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_veracc, { "veracc", "ulp.veracc", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_veracc_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_maxLocAge, { "maxLocAge", "ulp.maxLocAge", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_65535", HFILL }}, + NULL, HFILL }}, { &hf_ulp_delay, { "delay", "ulp.delay", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_QoP_delay_fmt), 0, "INTEGER_0_7", HFILL }}, { &hf_ulp_horvel, { "horvel", "ulp.horvel_element", @@ -8178,39 +9388,71 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_bearing, { "bearing", "ulp.bearing", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_9", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_ulp_horspeed, { "horspeed", "ulp.horspeed", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_16", HFILL }}, + FT_UINT16, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_ulp_verdirect, { "verdirect", "ulp.verdirect", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_1", HFILL }}, + FT_BOOLEAN, BASE_NONE, TFS(&ulp_vertical_dir_val), 0, + NULL, HFILL }}, + { &hf_ulp_bearing_01, + { "bearing", "ulp.bearing", + FT_UINT16, BASE_DEC, NULL, 0, + "T_bearing_01", HFILL }}, + { &hf_ulp_horspeed_01, + { "horspeed", "ulp.horspeed", + FT_UINT16, BASE_DEC, NULL, 0, + "T_horspeed_01", HFILL }}, { &hf_ulp_verspeed, { "verspeed", "ulp.verspeed", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_8", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_ulp_bearing_02, + { "bearing", "ulp.bearing", + FT_UINT16, BASE_DEC, NULL, 0, + "T_bearing_02", HFILL }}, + { &hf_ulp_horspeed_02, + { "horspeed", "ulp.horspeed", + FT_UINT16, BASE_DEC, NULL, 0, + "T_horspeed_02", HFILL }}, { &hf_ulp_uncertspeed, { "uncertspeed", "ulp.uncertspeed", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_8", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_ulp_verdirect_01, + { "verdirect", "ulp.verdirect", + FT_BOOLEAN, BASE_NONE, TFS(&ulp_vertical_dir_val), 0, + "T_verdirect_01", HFILL }}, + { &hf_ulp_bearing_03, + { "bearing", "ulp.bearing", + FT_UINT16, BASE_DEC, NULL, 0, + "T_bearing_03", HFILL }}, + { &hf_ulp_horspeed_03, + { "horspeed", "ulp.horspeed", + FT_UINT16, BASE_DEC, NULL, 0, + "T_horspeed_03", HFILL }}, + { &hf_ulp_verspeed_01, + { "verspeed", "ulp.verspeed", + FT_UINT8, BASE_DEC, NULL, 0, + "T_verspeed_01", HFILL }}, { &hf_ulp_horuncertspeed, { "horuncertspeed", "ulp.horuncertspeed", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_8", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_ulp_veruncertspeed, { "veruncertspeed", "ulp.veruncertspeed", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_8", HFILL }}, + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_ulp_MultipleLocationIds_item, { "LocationIdData", "ulp.LocationIdData_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_ulp_relativetimestamp, { "relativetimestamp", "ulp.relativetimestamp", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RelativeTime_fmt), 0, "RelativeTime", HFILL }}, { &hf_ulp_servingFlag, { "servingFlag", "ulp.servingFlag", @@ -8436,6 +9678,10 @@ void proto_register_ulp(void) { { "ch14", "ulp.ch14", FT_BOOLEAN, BASE_NONE, NULL, 0, "BOOLEAN", HFILL }}, + { &hf_ulp_apMACAddress_01, + { "apMACAddress", "ulp.apMACAddress", + FT_ETHER, BASE_NONE, NULL, 0, + "T_apMACAddress_01", HFILL }}, { &hf_ulp_apDevType_01, { "apDevType", "ulp.apDevType", FT_UINT32, BASE_DEC, VALS(ulp_T_apDevType_vals), 0, @@ -8478,11 +9724,11 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_rsrpResult, { "rsrpResult", "ulp.rsrpResult", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RSRP_Range_fmt), 0, "RSRP_Range", HFILL }}, { &hf_ulp_rsrqResult, { "rsrqResult", "ulp.rsrqResult", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_RSRQ_Range_fmt), 0, "RSRQ_Range", HFILL }}, { &hf_ulp_ta_02, { "ta", "ulp.ta", @@ -8540,18 +9786,22 @@ void proto_register_ulp(void) { { "MCC-MNC-Digit", "ulp.MCC_MNC_Digit", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_ulp_apMACAddress_02, + { "apMACAddress", "ulp.apMACAddress", + FT_ETHER, BASE_NONE, NULL, 0, + "T_apMACAddress_02", HFILL }}, { &hf_ulp_apTransmitPower, { "apTransmitPower", "ulp.apTransmitPower", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_apAntennaGain, { "apAntennaGain", "ulp.apAntennaGain", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_apSignaltoNoise, { "apSignaltoNoise", "ulp.apSignaltoNoise", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_apDeviceType, { "apDeviceType", "ulp.apDeviceType", FT_UINT32, BASE_DEC, VALS(ulp_T_apDeviceType_vals), 0, @@ -8559,7 +9809,7 @@ void proto_register_ulp(void) { { &hf_ulp_apSignalStrength, { "apSignalStrength", "ulp.apSignalStrength", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_apChannelFrequency, { "apChannelFrequency", "ulp.apChannelFrequency", FT_UINT32, BASE_DEC, NULL, 0, @@ -8571,19 +9821,19 @@ void proto_register_ulp(void) { { &hf_ulp_setTransmitPower, { "setTransmitPower", "ulp.setTransmitPower", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_setAntennaGain, { "setAntennaGain", "ulp.setAntennaGain", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_setSignaltoNoise, { "setSignaltoNoise", "ulp.setSignaltoNoise", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_setSignalStrength, { "setSignalStrength", "ulp.setSignalStrength", FT_INT32, BASE_DEC, NULL, 0, - "INTEGER_M127_128", HFILL }}, + NULL, HFILL }}, { &hf_ulp_apReportedLocation, { "apReportedLocation", "ulp.apReportedLocation_element", FT_NONE, BASE_NONE, NULL, 0, @@ -8594,19 +9844,19 @@ void proto_register_ulp(void) { "RepLocation", HFILL }}, { &hf_ulp_apSignalStrengthDelta, { "apSignalStrengthDelta", "ulp.apSignalStrengthDelta", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0, "INTEGER_0_1", HFILL }}, { &hf_ulp_apSignaltoNoiseDelta, { "apSignaltoNoiseDelta", "ulp.apSignaltoNoiseDelta", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0, "INTEGER_0_1", HFILL }}, { &hf_ulp_setSignalStrengthDelta, { "setSignalStrengthDelta", "ulp.setSignalStrengthDelta", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0, "INTEGER_0_1", HFILL }}, { &hf_ulp_setSignaltoNoiseDelta, { "setSignaltoNoiseDelta", "ulp.setSignaltoNoiseDelta", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_SignalDelta_fmt), 0, "INTEGER_0_1", HFILL }}, { &hf_ulp_operatingClass, { "operatingClass", "ulp.operatingClass", @@ -8614,16 +9864,16 @@ void proto_register_ulp(void) { "INTEGER_0_255", HFILL }}, { &hf_ulp_apSSID, { "apSSID", "ulp.apSSID", - FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING_SIZE_1_32", HFILL }}, + FT_STRING, STR_ASCII, NULL, 0, + NULL, HFILL }}, { &hf_ulp_apPHYType, { "apPHYType", "ulp.apPHYType", FT_UINT32, BASE_DEC, VALS(ulp_T_apPHYType_vals), 0, NULL, HFILL }}, { &hf_ulp_setMACAddress, { "setMACAddress", "ulp.setMACAddress", - FT_BYTES, BASE_NONE, NULL, 0, - "BIT_STRING_SIZE_48", HFILL }}, + FT_ETHER, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_ulp_rTDValue, { "rTDValue", "ulp.rTDValue", FT_UINT32, BASE_DEC, NULL, 0, @@ -8646,7 +9896,7 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_locationAccuracy, { "locationAccuracy", "ulp.locationAccuracy", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_locationAccuracy_fmt), 0, "INTEGER_0_4294967295", HFILL }}, { &hf_ulp_locationValue, { "locationValue", "ulp.locationValue", @@ -8706,11 +9956,11 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_rtd, { "rtd", "ulp.rtd", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0, "INTEGER_0_65535", HFILL }}, { &hf_ulp_rTDstd, { "rTDstd", "ulp.rTDstd", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0, "INTEGER_0_1023", HFILL }}, { &hf_ulp_WimaxNMRList_item, { "WimaxNMR", "ulp.WimaxNMR_element", @@ -8718,32 +9968,32 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_relDelay, { "relDelay", "ulp.relDelay", - FT_INT32, BASE_DEC, NULL, 0, + FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0, "INTEGER_M32768_32767", HFILL }}, { &hf_ulp_relDelaystd, { "relDelaystd", "ulp.relDelaystd", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxRTD_fmt), 0, "INTEGER_0_1023", HFILL }}, { &hf_ulp_rssi, { "rssi", "ulp.rssi", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxNMR_rssi_fmt), 0, "INTEGER_0_255", HFILL }}, { &hf_ulp_rSSIstd, { "rSSIstd", "ulp.rSSIstd", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_63", HFILL }}, + NULL, HFILL }}, { &hf_ulp_bSTxPower, { "bSTxPower", "ulp.bSTxPower", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_WimaxNMR_rssi_fmt), 0, "INTEGER_0_255", HFILL }}, { &hf_ulp_cinr, { "cinr", "ulp.cinr", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_255", HFILL }}, + NULL, HFILL }}, { &hf_ulp_cINRstd, { "cINRstd", "ulp.cINRstd", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_63", HFILL }}, + NULL, HFILL }}, { &hf_ulp_bSLocation, { "bSLocation", "ulp.bSLocation_element", FT_NONE, BASE_NONE, NULL, 0, @@ -8754,7 +10004,7 @@ void proto_register_ulp(void) { NULL, HFILL }}, { &hf_ulp_gpsReferenceTimeUncertainty, { "gpsReferenceTimeUncertainty", "ulp.gpsReferenceTimeUncertainty", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_utranGPSDriftRate, { "utranGPSDriftRate", "ulp.utranGPSDriftRate", @@ -8822,7 +10072,7 @@ void proto_register_ulp(void) { "INTEGER_0_8191", HFILL }}, { &hf_ulp_ganssTimeID, { "ganssTimeID", "ulp.ganssTimeID", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_DEC, VALS(ulp_ganss_time_id_vals), 0, "INTEGER_0_15", HFILL }}, { &hf_ulp_utran_GANSSReferenceTime, { "utran-GANSSReferenceTime", "ulp.utran_GANSSReferenceTime_element", @@ -8835,10 +10085,10 @@ void proto_register_ulp(void) { { &hf_ulp_ganssTOD, { "ganssTOD", "ulp.ganssTOD", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_86399", HFILL }}, + NULL, HFILL }}, { &hf_ulp_utran_GANSSTimingOfCell, { "utran-GANSSTimingOfCell", "ulp.utran_GANSSTimingOfCell", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_utran_GANSSTimingOfCell_fmt), 0, "INTEGER_0_3999999", HFILL }}, { &hf_ulp_modeSpecificInfo_03, { "modeSpecificInfo", "ulp.modeSpecificInfo", @@ -8854,7 +10104,7 @@ void proto_register_ulp(void) { "T_tdd_03", HFILL }}, { &hf_ulp_ganss_TODUncertainty, { "ganss-TODUncertainty", "ulp.ganss_TODUncertainty", - FT_UINT32, BASE_DEC, NULL, 0, + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_UTRAN_gpsReferenceTimeUncertainty_fmt), 0, "INTEGER_0_127", HFILL }}, { &hf_ulp_set_GANSSReferenceTime, { "set-GANSSReferenceTime", "ulp.set_GANSSReferenceTime_element", @@ -8967,11 +10217,11 @@ void proto_register_ulp(void) { { &hf_ulp_minInt, { "minInt", "ulp.minInt", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_3600", HFILL }}, + NULL, HFILL }}, { &hf_ulp_maxInt, { "maxInt", "ulp.maxInt", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_1440", HFILL }}, + NULL, HFILL }}, { &hf_ulp_repMode_01, { "repMode", "ulp.repMode_element", FT_NONE, BASE_NONE, NULL, 0, @@ -9012,6 +10262,14 @@ void proto_register_ulp(void) { { "latitudeSign", "ulp.latitudeSign", FT_UINT32, BASE_DEC, VALS(ulp_T_latitudeSign_01_vals), 0, "T_latitudeSign_01", HFILL }}, + { &hf_ulp_CoordinateLatitude, + { "latitude", "ulp.latitude", + FT_UINT32, BASE_CUSTOM, CF_FUNC(ulp_Coordinate_latitude_fmt), 0, + "INTEGER_0_8388607", HFILL }}, + { &hf_ulp_CoordinateLongitude, + { "longitude", "ulp.longitude", + FT_INT32, BASE_CUSTOM, CF_FUNC(ulp_Coordinate_longitude_fmt), 0, + "INTEGER_M8388608_8388607", HFILL }}, { &hf_ulp_coordinate, { "coordinate", "ulp.coordinate_element", FT_NONE, BASE_NONE, NULL, 0, @@ -9019,7 +10277,7 @@ void proto_register_ulp(void) { { &hf_ulp_radius, { "radius", "ulp.radius", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_1000000", HFILL }}, + NULL, HFILL }}, { &hf_ulp_radius_min, { "radius-min", "ulp.radius_min", FT_UINT32, BASE_DEC, NULL, 0, @@ -9031,7 +10289,7 @@ void proto_register_ulp(void) { { &hf_ulp_semiMajor, { "semiMajor", "ulp.semiMajor", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_1000000", HFILL }}, + NULL, HFILL }}, { &hf_ulp_semiMajor_min, { "semiMajor-min", "ulp.semiMajor_min", FT_UINT32, BASE_DEC, NULL, 0, @@ -9043,7 +10301,7 @@ void proto_register_ulp(void) { { &hf_ulp_semiMinor, { "semiMinor", "ulp.semiMinor", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_1000000", HFILL }}, + NULL, HFILL }}, { &hf_ulp_semiMinor_min, { "semiMinor-min", "ulp.semiMinor_min", FT_UINT32, BASE_DEC, NULL, 0, @@ -9055,7 +10313,7 @@ void proto_register_ulp(void) { { &hf_ulp_angle, { "angle", "ulp.angle", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_0_179", HFILL }}, + NULL, HFILL }}, { &hf_ulp_polygonDescription, { "polygonDescription", "ulp.polygonDescription", FT_UINT32, BASE_DEC, NULL, 0, @@ -9063,7 +10321,7 @@ void proto_register_ulp(void) { { &hf_ulp_polygonHysteresis, { "polygonHysteresis", "ulp.polygonHysteresis", FT_UINT32, BASE_DEC, NULL, 0, - "INTEGER_1_100000", HFILL }}, + NULL, HFILL }}, { &hf_ulp_PolygonDescription_item, { "Coordinate", "ulp.Coordinate_element", FT_NONE, BASE_NONE, NULL, 0, @@ -9102,11 +10360,35 @@ void proto_register_ulp(void) { NULL, HFILL }}, /*--- End of included file: packet-ulp-hfarr.c ---*/ -#line 103 "../../asn1/ulp/packet-ulp-template.c" +#line 370 "../../asn1/ulp/packet-ulp-template.c" { &hf_ulp_mobile_directory_number, { "Mobile Directory Number", "ulp.mobile_directory_number", FT_STRING, BASE_NONE, NULL, 0, - NULL, HFILL }} + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit0, + { "GPS", "ulp.ganssTimeModels.gps", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x8000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit1, + { "Galileo", "ulp.ganssTimeModels.galileo", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x4000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit2, + { "QZSS", "ulp.ganssTimeModels.qzss", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x2000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit3, + { "GLONASS", "ulp.ganssTimeModels.glonass", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x1000, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_bit4, + { "BDS", "ulp.ganssTimeModels.bds", + FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0800, + NULL, HFILL }}, + { &hf_ulp_ganssTimeModels_spare, + { "Spare", "ulp.ganssTimeModels.spare", + FT_UINT16, BASE_HEX, NULL, 0x07ff, + NULL, HFILL }}, }; /* List of subtrees */ @@ -9114,6 +10396,7 @@ void proto_register_ulp(void) { &ett_ulp, &ett_ulp_setid, &ett_ulp_thirdPartyId, + &ett_ulp_ganssTimeModels, /*--- Included file: packet-ulp-ettarr.c ---*/ #line 1 "../../asn1/ulp/packet-ulp-ettarr.c" @@ -9331,7 +10614,7 @@ void proto_register_ulp(void) { &ett_ulp_PolygonDescription, /*--- End of included file: packet-ulp-ettarr.c ---*/ -#line 115 "../../asn1/ulp/packet-ulp-template.c" +#line 407 "../../asn1/ulp/packet-ulp-template.c" }; module_t *ulp_module; |