aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-12-13 20:14:22 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-12-13 21:57:48 +0000
commit5cbdea74edb1f5cab3b1bb550c79b91466ede5d5 (patch)
tree62f92e6b45f2248107aabaf91796695c451da22d
parentb0caa0616bc2991468f0119573b9c509edf4287f (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.c294
-rw-r--r--asn1/ulp/ulp.cnf661
-rw-r--r--epan/dissectors/packet-ulp.c1843
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;