aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-lte-rrc.c
diff options
context:
space:
mode:
authorPascal Quantin <pascal@wireshark.org>2019-02-13 15:20:41 +0100
committerPascal Quantin <pascal@wireshark.org>2019-02-13 16:46:22 +0000
commitbf4fe342e3506ab756eeb2620633e0035826606b (patch)
tree0534860dc6ebf51d935ce4c6559339e361f46767 /epan/dissectors/packet-lte-rrc.c
parentc96b56d384391b1fe18da468548e2fcf3c8c4eeb (diff)
LTE RRC: add dissection of NR RSRP/RSRQ/SINR fields
Change-Id: I56f44fd4dc6aa6358be54e200ddc7b27d51778aa Reviewed-on: https://code.wireshark.org/review/32008 Petri-Dish: Pascal Quantin <pascal@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Pascal Quantin <pascal@wireshark.org>
Diffstat (limited to 'epan/dissectors/packet-lte-rrc.c')
-rw-r--r--epan/dissectors/packet-lte-rrc.c58
1 files changed, 48 insertions, 10 deletions
diff --git a/epan/dissectors/packet-lte-rrc.c b/epan/dissectors/packet-lte-rrc.c
index 3398194320..8928317e33 100644
--- a/epan/dissectors/packet-lte-rrc.c
+++ b/epan/dissectors/packet-lte-rrc.c
@@ -12857,6 +12857,20 @@ static const value_string lte_rrc_RSRP_RangeSL4_vals[] = {
};
static value_string_ext lte_rrc_RSRP_RangeSL4_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRP_RangeSL4_vals);
+static void
+lte_rrc_RSRP_RangeNR_r15_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRP < -156dBm (0)");
+ } else if (v == 126) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "-31dBm <= SS-RSRP (126)");
+ } else if (v == 127) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "Infinity (127)");
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%ddBm <= SS-RSRP < %ddBm (%u)", -157+v, -156+v, v);
+ }
+}
+
static const value_string lte_rrc_RSRQ_Range_vals[] = {
{-34, "RSRQ < -36dB"},
{-33, "-36dB <= RSRQ < -35.5dB"},
@@ -12943,6 +12957,18 @@ static const value_string lte_rrc_RSRQ_Range_vals[] = {
};
static value_string_ext lte_rrc_RSRQ_Range_vals_ext = VALUE_STRING_EXT_INIT(lte_rrc_RSRQ_Range_vals);
+static void
+lte_rrc_RSRQ_RangeNR_r15_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "SS-RSRQ < -43dB (0)");
+ } else if (v == 127) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "20dB < SS-RSRQ (127)");
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= SS-RSRQ < %.1fdB (%u)", (((float)v-1)/2)-43, ((float)v/2)-43, v);
+ }
+}
+
static const value_string lte_rrc_MBSFN_RSRQ_Range_vals[] = {
{ 0, "RSRQ < -23dB"},
{ 1, "-23dB <= RSRQ < -22.5dB"},
@@ -13191,6 +13217,18 @@ lte_rrc_RS_SINR_Range_r13_fmt(gchar *s, guint32 v)
}
static void
+lte_rrc_RS_SINR_RangeNR_r15_fmt(gchar *s, guint32 v)
+{
+ if (v == 0) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "SS-SINR < -23dB (0)");
+ } else if (v == 127) {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "40dB < SS-SINR (127)");
+ } else {
+ g_snprintf(s, ITEM_LABEL_LENGTH, "%.1fdB <= SS-SINR < %.1fdB (%u)", (((float)v-1)/2)-23, ((float)v/2)-23, v);
+ }
+}
+
+static void
lte_rrc_RSSI_Range_r13_fmt(gchar *s, guint32 v)
{
if (v == 0) {
@@ -109698,7 +109736,7 @@ static int dissect_UE_RadioPagingInfo_NB_r13_PDU(tvbuff_t *tvb _U_, packet_info
/*--- End of included file: packet-lte-rrc-fn.c ---*/
-#line 3137 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 3175 "./asn1/lte-rrc/packet-lte-rrc-template.c"
static int
dissect_lte_rrc_DL_CCCH(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
@@ -127086,15 +127124,15 @@ void proto_register_lte_rrc(void) {
NULL, HFILL }},
{ &hf_lte_rrc_nr_RSRP_r15,
{ "nr-RSRP-r15", "lte-rrc.nr_RSRP_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RSRP_RangeNR_r15_fmt), 0,
"RSRP_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_nr_RSRQ_r15,
{ "nr-RSRQ-r15", "lte-rrc.nr_RSRQ_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RSRQ_RangeNR_r15_fmt), 0,
"RSRQ_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_nr_SINR_r15,
{ "nr-SINR-r15", "lte-rrc.nr_SINR_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RS_SINR_RangeNR_r15_fmt), 0,
"RS_SINR_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_setup_160,
{ "setup", "lte-rrc.setup",
@@ -128234,15 +128272,15 @@ void proto_register_lte_rrc(void) {
"CGI_InfoNR_r15", HFILL }},
{ &hf_lte_rrc_rsrpResult_r15_01,
{ "rsrpResult-r15", "lte-rrc.rsrpResult_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RSRP_RangeNR_r15_fmt), 0,
"RSRP_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_rsrqResult_r15_01,
{ "rsrqResult-r15", "lte-rrc.rsrqResult_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RSRQ_RangeNR_r15_fmt), 0,
"RSRQ_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_rs_sinr_Result_r15,
{ "rs-sinr-Result-r15", "lte-rrc.rs_sinr_Result_r15",
- FT_UINT32, BASE_DEC, NULL, 0,
+ FT_UINT32, BASE_CUSTOM, CF_FUNC(lte_rrc_RS_SINR_RangeNR_r15_fmt), 0,
"RS_SINR_RangeNR_r15", HFILL }},
{ &hf_lte_rrc_MeasResultSSB_IndexList_r15_item,
{ "MeasResultSSB-Index-r15", "lte-rrc.MeasResultSSB_Index_r15_element",
@@ -139026,7 +139064,7 @@ void proto_register_lte_rrc(void) {
"CarrierFreq_NB_r13", HFILL }},
/*--- End of included file: packet-lte-rrc-hfarr.c ---*/
-#line 3512 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 3550 "./asn1/lte-rrc/packet-lte-rrc-template.c"
{ &hf_lte_rrc_eutra_cap_feat_group_ind_1,
{ "Indicator 1", "lte-rrc.eutra_cap_feat_group_ind_1",
@@ -143028,7 +143066,7 @@ void proto_register_lte_rrc(void) {
&ett_lte_rrc_PCI_ARFCN_NB_r14,
/*--- End of included file: packet-lte-rrc-ettarr.c ---*/
-#line 4271 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 4309 "./asn1/lte-rrc/packet-lte-rrc-template.c"
&ett_lte_rrc_featureGroupIndicators,
&ett_lte_rrc_featureGroupIndRel9Add,
@@ -143158,7 +143196,7 @@ void proto_register_lte_rrc(void) {
/*--- End of included file: packet-lte-rrc-dis-reg.c ---*/
-#line 4365 "./asn1/lte-rrc/packet-lte-rrc-template.c"
+#line 4403 "./asn1/lte-rrc/packet-lte-rrc-template.c"
lte_rrc_etws_cmas_dcs_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
lte_rrc_system_info_value_changed_hash = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);