diff options
author | Pascal Quantin <pascal@wireshark.org> | 2019-02-13 15:20:41 +0100 |
---|---|---|
committer | Pascal Quantin <pascal@wireshark.org> | 2019-02-13 16:46:22 +0000 |
commit | bf4fe342e3506ab756eeb2620633e0035826606b (patch) | |
tree | 0534860dc6ebf51d935ce4c6559339e361f46767 /epan/dissectors/packet-lte-rrc.c | |
parent | c96b56d384391b1fe18da468548e2fcf3c8c4eeb (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.c | 58 |
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); |