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>
This commit is contained in:
Pascal Quantin 2019-02-13 15:20:41 +01:00
parent c96b56d384
commit bf4fe342e3
3 changed files with 95 additions and 10 deletions

View File

@ -1426,6 +1426,9 @@ RSRP-RangeSL3-r12 DISPLAY=BASE_DEC STRINGS=VALS(lte_rrc_RSRP_RangeSL3_vals)
#.TYPE_ATTR
RSRP-RangeSL4-r13 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lte_rrc_RSRP_RangeSL4_vals_ext
#.TYPE_ATTR
RSRP-RangeNR-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RSRP_RangeNR_r15_fmt)
#.TYPE_ATTR
RSRQ-Range DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lte_rrc_RSRQ_Range_vals_ext
@ -1435,9 +1438,15 @@ RSRQ-Range-v1250 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lte_rrc_RSRQ_Range_va
#.TYPE_ATTR
RSRQ-Range-r13 DISPLAY=BASE_DEC|BASE_EXT_STRING STRINGS=&lte_rrc_RSRQ_Range_vals_ext
#.TYPE_ATTR
RSRQ-RangeNR-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RSRQ_RangeNR_r15_fmt)
#.TYPE_ATTR
RS-SINR-Range-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RS_SINR_Range_r13_fmt)
#.TYPE_ATTR
RS-SINR-RangeNR-r15 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RS_SINR_RangeNR_r15_fmt)
#.TYPE_ATTR
RSSI-Range-r13 DISPLAY=BASE_CUSTOM STRINGS=CF_FUNC(lte_rrc_RSSI_Range_r13_fmt)

View File

@ -2148,6 +2148,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"},
@ -2234,6 +2248,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"},
@ -2481,6 +2507,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)
{

View File

@ -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"},
@ -13190,6 +13216,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)
{
@ -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);