From 1634fd9603ab6184f7d90ad6be6ec8a8707288ea Mon Sep 17 00:00:00 2001 From: vlad shkapenyuk Date: Fri, 29 May 2020 12:35:05 -0400 Subject: [PATCH 1/1] Updating a set of supported NR metrics Signed-off-by: vlad shkapenyuk Change-Id: I5b7639ac21e6033d94b404613eb907c13b9fb662 --- mc-core/Dockerfile | 3 +- mc-core/container-tag.yaml | 2 +- mc-core/mc/cfg/ifres.xml | 70 +- mc-core/mc/cfg/packet_schema.txt | 142 +- mc-core/mc/local/add_req_ack_cellid.h | 78 + mc-core/mc/local/lte_dl_sched_trace.h | 133 + mc-core/mc/local/lte_pcell_meas.h | 95 + mc-core/mc/local/lte_rb_thpt.h | 101 + mc-core/mc/local/lte_thpt_meas.h | 101 + mc-core/mc/local_datasource/Makefile | 2 +- mc-core/mc/local_datasource/ricgeomessages.pb-c.c | 292 ++ mc-core/mc/local_datasource/ricgeomessages.pb-c.h | 127 + .../ricgeomessages_pcmdreport.pb-c.c | 3577 +++++++++++++++++ .../ricgeomessages_pcmdreport.pb-c.h | 866 +++++ mc-core/mc/local_datasource/rts_proto.c | 871 +++-- mc-core/mc/local_datasource/rts_proto.c.save | 4000 ++++++++++++++++++++ mc-core/mc/mc_deployment.json | 2 +- mc-core/mc/queries/admitted_erabs.gsql | 47 + mc-core/mc/queries/dc_conn_stats.gsql | 77 +- mc-core/mc/queries/handovers.gsql | 34 +- mc-core/mc/queries/mod_req_failure.gsql | 39 + mc-core/mc/queries/nib.json | 1336 ++++++- mc-core/mc/queries/output_spec.cfg | 20 +- mc-core/mc/queries/pcmd_throughput.gsql | 72 + mc-core/mc/queries/reconfig_status.gsql | 91 + mc-core/mc/queries/throughput.gsql | 83 +- 26 files changed, 11745 insertions(+), 516 deletions(-) create mode 100644 mc-core/mc/local/add_req_ack_cellid.h create mode 100644 mc-core/mc/local/lte_dl_sched_trace.h create mode 100644 mc-core/mc/local/lte_pcell_meas.h create mode 100644 mc-core/mc/local/lte_rb_thpt.h create mode 100644 mc-core/mc/local/lte_thpt_meas.h create mode 100644 mc-core/mc/local_datasource/ricgeomessages.pb-c.c create mode 100644 mc-core/mc/local_datasource/ricgeomessages.pb-c.h create mode 100644 mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.c create mode 100644 mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.h create mode 100644 mc-core/mc/local_datasource/rts_proto.c.save create mode 100644 mc-core/mc/queries/pcmd_throughput.gsql diff --git a/mc-core/Dockerfile b/mc-core/Dockerfile index 8967626..b5f220d 100644 --- a/mc-core/Dockerfile +++ b/mc-core/Dockerfile @@ -59,7 +59,7 @@ RUN make RUN make install RUN ldconfig WORKDIR ${STAGE_DIR} -RUN git clone -b release/0.2.0 https://gerrit.o-ran-sc.org/r/com/gs-lite +RUN git clone -b release/0.3.0 https://gerrit.o-ran-sc.org/r/com/gs-lite WORKDIR ${STAGE_DIR}/gs-lite COPY mc/cfg/packet_schema.txt ${STAGE_DIR}/gs-lite/cfg/ COPY mc/cfg/ifres.xml ${STAGE_DIR}/gs-lite/cfg/ @@ -105,3 +105,4 @@ WORKDIR /playpen ENV GSLITE_ROOT /mc/gs-lite CMD ["/playpen/bin/container_start.sh"] +# CMD ["/bin/bash"] diff --git a/mc-core/container-tag.yaml b/mc-core/container-tag.yaml index 40e7aaf..d6d9a34 100644 --- a/mc-core/container-tag.yaml +++ b/mc-core/container-tag.yaml @@ -1,4 +1,4 @@ --- -tag: '1.0.7' +tag: '1.0.8' # this is used by the CI jobs to tag the image it builds diff --git a/mc-core/mc/cfg/ifres.xml b/mc-core/mc/cfg/ifres.xml index 5d71b45..b37b7a6 100644 --- a/mc-core/mc/cfg/ifres.xml +++ b/mc-core/mc/cfg/ifres.xml @@ -5,73 +5,93 @@ - + - + + + + + + + + + + + + + + + - + + - + + - + + - + + - + + - + + - + @@ -80,21 +100,23 @@ + - + + - + @@ -103,13 +125,15 @@ + + - + @@ -123,69 +147,77 @@ + - + + - + + - + + - + + - + + - + + - + + diff --git a/mc-core/mc/cfg/packet_schema.txt b/mc-core/mc/cfg/packet_schema.txt index 977f2e6..b5d9b27 100644 --- a/mc-core/mc/cfg/packet_schema.txt +++ b/mc-core/mc/cfg/packet_schema.txt @@ -24,7 +24,125 @@ PROTOCOL dc_release (base, schema_id 201){ llong id_Old_eNB_UE_X2AP_ID get_dc_release__id_Old_eNB_UE_X2AP_ID (required); } -// transfer per UE and bearere between given time intervals +// A record with information relevant to computing DL throughput, primarily extracted from TpDlUeThroughputMeasurements. +// Defined in lte_pcmd.json on ricgeomessages_pcmdreport.proto +// schemaId = 10000, interface LTE_PCMD +PROTOCOL lte_thpt_meas (base, schema_id 10000){ +// timestamp in milliseconds + ullong timestamp_ms get_lte_thpt_meas__timestamp_ms (required,increasing); +// E-UTRAN Cell Identity + uint eci get_lte_thpt_meas__eci (required); +// Public Land Mobile Network code + uint plmn get_lte_thpt_meas__plmn (required); +// ??? + ullong eutran_trace_id get_lte_thpt_meas__eutran_trace_id (required); +// Cell Radio Network Temporary Identifier + uint crnti get_lte_thpt_meas__crnti (required); +// default=-1 + llong numOfTtiUeSched get_lte_thpt_meas__numOfTtiUeSched (required); +// default=-1 + llong imei get_lte_thpt_meas__imei (required); +// default=-1 + llong imsi get_lte_thpt_meas__imsi (required); +// ??? Is mandatory + llong numOfTtiPositiveDlBuf get_lte_thpt_meas__numOfTtiPositiveDlBuf (required); +// ??? is mandatory + llong sumOfSentNonGbrBytes get_lte_thpt_meas__sumOfSentNonGbrBytes (required); +// ??? Is mandatory + llong sumOfSentGbrBytes get_lte_thpt_meas__sumOfSentGbrBytes (required); +} + +// A record with information relevant to computing radio bearer throughput, primarily extracted from TpDlRadioBearerPdcpThroughputData. +// Defined in lte_pcmd.json on ricgeomessages_pcmdreport.proto +// schemaId = 10001, interface LTE_PCMD +PROTOCOL lte_rb_thpt (base, schema_id 10001){ +// timestamp in milliseconds + ullong timestamp_ms get_lte_rb_thpt__timestamp_ms (required,increasing); +// E-UTRAN Cell Identity + uint eci get_lte_rb_thpt__eci (required); +// Public Land Mobile Network code + uint plmn get_lte_rb_thpt__plmn (required); +// ??? + ullong eutran_trace_id get_lte_rb_thpt__eutran_trace_id (required); +// Cell Radio Network Temporary Identifier + uint crnti get_lte_rb_thpt__crnti (required); +// default=-1 + llong imei get_lte_rb_thpt__imei (required); +// default=-1 + llong imsi get_lte_rb_thpt__imsi (required); +// ??? Is mandatory + llong dataCollectionDuration get_lte_rb_thpt__dataCollectionDuration (required); +// ??? is mandatory + llong numOfPdcpPduRcvdForTx get_lte_rb_thpt__numOfPdcpPduRcvdForTx (required); +// ??? Is mandatory + llong numOfPdcpPduDiscarded get_lte_rb_thpt__numOfPdcpPduDiscarded (required); +// ??? Is mandatory + llong drb_Id get_lte_rb_thpt__drb_Id (required); +} + +// A record with information relevant to DL scheduling trace, primarily extracted from TpDlSchedulingTraceRecord. +// Defined in lte_pcmd.json on ricgeomessages_pcmdreport.proto +// schemaId = 10002, interface LTE_PCMD +PROTOCOL lte_dl_sched_trace (base, schema_id 10002){ +// timestamp in milliseconds + ullong timestamp_ms get_lte_dl_sched_trace__timestamp_ms (required,increasing); +// E-UTRAN Cell Identity + uint eci get_lte_dl_sched_trace__eci (required); +// Public Land Mobile Network code + uint plmn get_lte_dl_sched_trace__plmn (required); +// ??? + ullong eutran_trace_id get_lte_dl_sched_trace__eutran_trace_id (required); +// Cell Radio Network Temporary Identifier + uint crnti get_lte_dl_sched_trace__crnti (required); +// default=-1 + llong imei get_lte_dl_sched_trace__imei (required); +// default=-1 + llong imsi get_lte_dl_sched_trace__imsi (required); +// ??? Is mandatory + uint numOfHarqReTx get_lte_dl_sched_trace__numOfHarqReTx; +// ??? is mandatory + llong numOfTtiUeSched get_lte_dl_sched_trace__numOfTtiUeSched (required); +// ??? Is mandatory + llong numOfHarq1stTx get_lte_dl_sched_trace__numOfHarq1stTx (required); +// ??? Is mandatory + llong recordCollectionDuration get_lte_dl_sched_trace__recordCollectionDuration (required); +// ??? Is mandatory + uint numOfTtiUeSchedMimo get_lte_dl_sched_trace__numOfTtiUeSchedMimo; +// ??? Is mandatory + llong numOfPrbUsed get_lte_dl_sched_trace__numOfPrbUsed (required); +// ??? Is mandatory + uint numOfBad1stMacPduTx get_lte_dl_sched_trace__numOfBad1stMacPduTx; +// ??? Is mandatory + uint numOfBadLastMacPduTx get_lte_dl_sched_trace__numOfBadLastMacPduTx; +} + +// A record with information relevant to primary cell signal strength measurements, primarily extracted from TpMeasResultPCell. +// Defined in lte_pcmd.json on ricgeomessages_pcmdreport.proto +// schemaId = 10003, interface LTE_PCMD +PROTOCOL lte_pcell_meas (base, schema_id 10003){ +// timestamp in milliseconds + ullong timestamp_ms get_lte_pcell_meas__timestamp_ms (required,increasing); +// E-UTRAN Cell Identity + uint eci get_lte_pcell_meas__eci (required); +// Public Land Mobile Network code + uint plmn get_lte_pcell_meas__plmn (required); +// ??? + ullong eutran_trace_id get_lte_pcell_meas__eutran_trace_id (required); +// Cell Radio Network Temporary Identifier + uint crnti get_lte_pcell_meas__crnti (required); +// default=-1 + llong imei get_lte_pcell_meas__imei (required); +// default=-1 + llong imsi get_lte_pcell_meas__imsi (required); +// ??? Is mandatory + llong pci get_lte_pcell_meas__pci (required); +// ??? Is mandatory + llong rsrq get_lte_pcell_meas__rsrq (required); +// ??? is mandatory + llong rsrp get_lte_pcell_meas__rsrp (required); +} + +// transfer per UE and bearer between given time intervals // Defined in rat_data_usage.json on secondary_rat_data_usage_report.proto // schemaId = 1501, interface RATDATAUSAGE PROTOCOL rat_data_usage (base, schema_id 1501){ @@ -401,6 +519,24 @@ PROTOCOL eRABs_notadmitted_for_ue (base, schema_id 501){ llong cause_radio_network get_eRABs_notadmitted_for_ue__cause_radio_network (required); } +// Associates a Physical Cell ID (PCI) with a enb-ueid / gnb-ueid +// Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto +// schemaId = 10004, interface SGNB_ADDITION_REQ_ACK +PROTOCOL add_req_ack_cellid (base, schema_id 10004){ +// timestamp in milliseconds + ullong timestamp_ms get_add_req_ack_cellid__timestamp_ms (required,increasing); +// gNB ID + string gnb_id get_add_req_ack_cellid__gnb_id (required); +// UE_ID assigned by eNB for the UE over an X2. primary key for matching between addition_req and addition_req_ack. + llong id_MeNB_UE_X2AP_ID get_add_req_ack_cellid__id_MeNB_UE_X2AP_ID (required); +// UE_ID assigned by gNB for the UE over an X2. primary key for referring to the UE within SgNB. + llong id_SgNB_UE_X2AP_ID get_add_req_ack_cellid__id_SgNB_UE_X2AP_ID (required); +// additional bytes optionally rqd. for user id (MeNB ue ID is 16 bits) not expected to be used for PIZ trial. default=0 + uint id_MeNB_UE_X2AP_ID_Extension get_add_req_ack_cellid__id_MeNB_UE_X2AP_ID_Extension (required); +// Physical Cell ID (PCI) of the serving cell + uint physCellId get_add_req_ack_cellid__physCellId; +} + // Indicates positive response for adding secondary node to the UE. This record indicates eRABs acknowledged for admission for the UE. // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto // schemaId = 502, interface SGNB_ADDITION_REQ_ACK @@ -586,8 +722,8 @@ PROTOCOL SgNB_ack_for_ue_beam_ssb (base, schema_id 507){ // Extract the gtp_teid and also the transport layer address // Defined in sgnb_addition_req.json on sgnb_addition_request.proto -// schemaId = 10000, interface SGNB_ADDITION_REQ -PROTOCOL sgnb_addreq_gtp_teid (base, schema_id 10000){ +// schemaId = 10005, interface SGNB_ADDITION_REQ +PROTOCOL sgnb_addreq_gtp_teid (base, schema_id 10005){ // timestamp in milliseconds ullong timestamp_ms get_sgnb_addreq_gtp_teid__timestamp_ms (required,increasing); // gNB ID diff --git a/mc-core/mc/local/add_req_ack_cellid.h b/mc-core/mc/local/add_req_ack_cellid.h new file mode 100644 index 0000000..6b17359 --- /dev/null +++ b/mc-core/mc/local/add_req_ack_cellid.h @@ -0,0 +1,78 @@ +#ifndef _ADD_REQ_ACK_CELLID_H__INCLUDED_ +#define _ADD_REQ_ACK_CELLID_H__INCLUDED_ + +/* +============================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +============================================================================= +*/ + + +#include "packet.h" + + +#include "/usr/local/include/protobuf-c/protobuf-c.h" + +struct _add_req_ack_cellid { + gs_uint64_t timestamp_ms; + gs_sp_t gnb_id; + gs_int64_t id_MeNB_UE_X2AP_ID; + gs_int64_t id_SgNB_UE_X2AP_ID; + gs_uint32_t id_MeNB_UE_X2AP_ID_Extension; + gs_uint32_t physCellId; + gs_int8_t physCellId_exists; +}; + +static inline void init__add_req_ack_cellid(struct _add_req_ack_cellid *m){ + m->physCellId_exists=0; +} + +static inline gs_retval_t get_add_req_ack_cellid__timestamp_ms(struct packet *p, gs_uint64_t *t){ + *t = ((struct _add_req_ack_cellid *)(p->record.packed.values))->timestamp_ms; + return 0; +} + +static inline gs_retval_t get_add_req_ack_cellid__gnb_id(struct packet *p, struct gs_string *t){ + t->owner=0; + t->data = ((struct _add_req_ack_cellid *)(p->record.packed.values))->gnb_id; + if( t->data == NULL){ + t->length=0; + return 0; + } + t->length = strlen(t->data); +} + +static inline gs_retval_t get_add_req_ack_cellid__id_MeNB_UE_X2AP_ID(struct packet *p, gs_int64_t *t){ + *t = ((struct _add_req_ack_cellid *)(p->record.packed.values))->id_MeNB_UE_X2AP_ID; + return 0; +} + +static inline gs_retval_t get_add_req_ack_cellid__id_SgNB_UE_X2AP_ID(struct packet *p, gs_int64_t *t){ + *t = ((struct _add_req_ack_cellid *)(p->record.packed.values))->id_SgNB_UE_X2AP_ID; + return 0; +} + +static inline gs_retval_t get_add_req_ack_cellid__id_MeNB_UE_X2AP_ID_Extension(struct packet *p, gs_uint32_t *t){ + *t = ((struct _add_req_ack_cellid *)(p->record.packed.values))->id_MeNB_UE_X2AP_ID_Extension; + return 0; +} + +static inline gs_retval_t get_add_req_ack_cellid__physCellId(struct packet *p, gs_uint32_t *t){ + *t = ((struct _add_req_ack_cellid *)(p->record.packed.values))->physCellId; + return (((struct _add_req_ack_cellid *)(p->record.packed.values))->physCellId==0); +} + +#endif diff --git a/mc-core/mc/local/lte_dl_sched_trace.h b/mc-core/mc/local/lte_dl_sched_trace.h new file mode 100644 index 0000000..981c54c --- /dev/null +++ b/mc-core/mc/local/lte_dl_sched_trace.h @@ -0,0 +1,133 @@ +#ifndef _LTE_DL_SCHED_TRACE_H__INCLUDED_ +#define _LTE_DL_SCHED_TRACE_H__INCLUDED_ + +/* +============================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +============================================================================= +*/ + + +#include "packet.h" + + +#include "/usr/local/include/protobuf-c/protobuf-c.h" + +struct _lte_dl_sched_trace { + gs_uint64_t timestamp_ms; + gs_uint32_t eci; + gs_uint32_t plmn; + gs_uint64_t eutran_trace_id; + gs_uint32_t crnti; + gs_int64_t imei; + gs_int64_t imsi; + gs_uint32_t numOfHarqReTx; + gs_int8_t numOfHarqReTx_exists; + gs_int64_t numOfTtiUeSched; + gs_int64_t numOfHarq1stTx; + gs_int64_t recordCollectionDuration; + gs_uint32_t numOfTtiUeSchedMimo; + gs_int8_t numOfTtiUeSchedMimo_exists; + gs_int64_t numOfPrbUsed; + gs_uint32_t numOfBad1stMacPduTx; + gs_int8_t numOfBad1stMacPduTx_exists; + gs_uint32_t numOfBadLastMacPduTx; + gs_int8_t numOfBadLastMacPduTx_exists; +}; + +static inline void init__lte_dl_sched_trace(struct _lte_dl_sched_trace *m){ + m->numOfHarqReTx_exists=0; + m->numOfTtiUeSchedMimo_exists=0; + m->numOfBad1stMacPduTx_exists=0; + m->numOfBadLastMacPduTx_exists=0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__timestamp_ms(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->timestamp_ms; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__eci(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->eci; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__plmn(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->plmn; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__eutran_trace_id(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->eutran_trace_id; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__crnti(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->crnti; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__imei(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->imei; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__imsi(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->imsi; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfHarqReTx(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfHarqReTx; + return (((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfHarqReTx==0); +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfTtiUeSched(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfTtiUeSched; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfHarq1stTx(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfHarq1stTx; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__recordCollectionDuration(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->recordCollectionDuration; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfTtiUeSchedMimo(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfTtiUeSchedMimo; + return (((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfTtiUeSchedMimo==0); +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfPrbUsed(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfPrbUsed; + return 0; +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfBad1stMacPduTx(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfBad1stMacPduTx; + return (((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfBad1stMacPduTx==0); +} + +static inline gs_retval_t get_lte_dl_sched_trace__numOfBadLastMacPduTx(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfBadLastMacPduTx; + return (((struct _lte_dl_sched_trace *)(p->record.packed.values))->numOfBadLastMacPduTx==0); +} + +#endif diff --git a/mc-core/mc/local/lte_pcell_meas.h b/mc-core/mc/local/lte_pcell_meas.h new file mode 100644 index 0000000..30de4d7 --- /dev/null +++ b/mc-core/mc/local/lte_pcell_meas.h @@ -0,0 +1,95 @@ +#ifndef _LTE_PCELL_MEAS_H__INCLUDED_ +#define _LTE_PCELL_MEAS_H__INCLUDED_ + +/* +============================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +============================================================================= +*/ + + +#include "packet.h" + + +#include "/usr/local/include/protobuf-c/protobuf-c.h" + +struct _lte_pcell_meas { + gs_uint64_t timestamp_ms; + gs_uint32_t eci; + gs_uint32_t plmn; + gs_uint64_t eutran_trace_id; + gs_uint32_t crnti; + gs_int64_t imei; + gs_int64_t imsi; + gs_int64_t pci; + gs_int64_t rsrq; + gs_int64_t rsrp; +}; + +static inline void init__lte_pcell_meas(struct _lte_pcell_meas *m){ +} + +static inline gs_retval_t get_lte_pcell_meas__timestamp_ms(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->timestamp_ms; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__eci(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->eci; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__plmn(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->plmn; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__eutran_trace_id(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->eutran_trace_id; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__crnti(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->crnti; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__imei(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->imei; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__imsi(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->imsi; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__pci(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->pci; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__rsrq(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->rsrq; + return 0; +} + +static inline gs_retval_t get_lte_pcell_meas__rsrp(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_pcell_meas *)(p->record.packed.values))->rsrp; + return 0; +} + +#endif diff --git a/mc-core/mc/local/lte_rb_thpt.h b/mc-core/mc/local/lte_rb_thpt.h new file mode 100644 index 0000000..687157b --- /dev/null +++ b/mc-core/mc/local/lte_rb_thpt.h @@ -0,0 +1,101 @@ +#ifndef _LTE_RB_THPT_H__INCLUDED_ +#define _LTE_RB_THPT_H__INCLUDED_ + +/* +============================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +============================================================================= +*/ + + +#include "packet.h" + + +#include "/usr/local/include/protobuf-c/protobuf-c.h" + +struct _lte_rb_thpt { + gs_uint64_t timestamp_ms; + gs_uint32_t eci; + gs_uint32_t plmn; + gs_uint64_t eutran_trace_id; + gs_uint32_t crnti; + gs_int64_t imei; + gs_int64_t imsi; + gs_int64_t dataCollectionDuration; + gs_int64_t numOfPdcpPduRcvdForTx; + gs_int64_t numOfPdcpPduDiscarded; + gs_int64_t drb_Id; +}; + +static inline void init__lte_rb_thpt(struct _lte_rb_thpt *m){ +} + +static inline gs_retval_t get_lte_rb_thpt__timestamp_ms(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->timestamp_ms; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__eci(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->eci; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__plmn(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->plmn; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__eutran_trace_id(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->eutran_trace_id; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__crnti(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->crnti; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__imei(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->imei; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__imsi(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->imsi; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__dataCollectionDuration(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->dataCollectionDuration; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__numOfPdcpPduRcvdForTx(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->numOfPdcpPduRcvdForTx; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__numOfPdcpPduDiscarded(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->numOfPdcpPduDiscarded; + return 0; +} + +static inline gs_retval_t get_lte_rb_thpt__drb_Id(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_rb_thpt *)(p->record.packed.values))->drb_Id; + return 0; +} + +#endif diff --git a/mc-core/mc/local/lte_thpt_meas.h b/mc-core/mc/local/lte_thpt_meas.h new file mode 100644 index 0000000..5073476 --- /dev/null +++ b/mc-core/mc/local/lte_thpt_meas.h @@ -0,0 +1,101 @@ +#ifndef _LTE_THPT_MEAS_H__INCLUDED_ +#define _LTE_THPT_MEAS_H__INCLUDED_ + +/* +============================================================================== + + Copyright (c) 2018-2019 AT&T Intellectual Property. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +============================================================================= +*/ + + +#include "packet.h" + + +#include "/usr/local/include/protobuf-c/protobuf-c.h" + +struct _lte_thpt_meas { + gs_uint64_t timestamp_ms; + gs_uint32_t eci; + gs_uint32_t plmn; + gs_uint64_t eutran_trace_id; + gs_uint32_t crnti; + gs_int64_t numOfTtiUeSched; + gs_int64_t imei; + gs_int64_t imsi; + gs_int64_t numOfTtiPositiveDlBuf; + gs_int64_t sumOfSentNonGbrBytes; + gs_int64_t sumOfSentGbrBytes; +}; + +static inline void init__lte_thpt_meas(struct _lte_thpt_meas *m){ +} + +static inline gs_retval_t get_lte_thpt_meas__timestamp_ms(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->timestamp_ms; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__eci(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->eci; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__plmn(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->plmn; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__eutran_trace_id(struct packet *p, gs_uint64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->eutran_trace_id; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__crnti(struct packet *p, gs_uint32_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->crnti; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__numOfTtiUeSched(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->numOfTtiUeSched; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__imei(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->imei; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__imsi(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->imsi; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__numOfTtiPositiveDlBuf(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->numOfTtiPositiveDlBuf; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__sumOfSentNonGbrBytes(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->sumOfSentNonGbrBytes; + return 0; +} + +static inline gs_retval_t get_lte_thpt_meas__sumOfSentGbrBytes(struct packet *p, gs_int64_t *t){ + *t = ((struct _lte_thpt_meas *)(p->record.packed.values))->sumOfSentGbrBytes; + return 0; +} + +#endif diff --git a/mc-core/mc/local_datasource/Makefile b/mc-core/mc/local_datasource/Makefile index 258bfb4..abd9bed 100644 --- a/mc-core/mc/local_datasource/Makefile +++ b/mc-core/mc/local_datasource/Makefile @@ -26,7 +26,7 @@ SOURCE = $(SOURCE_C) $(SOURCE_CC) OBJECTS = $(SOURCE_C:.c=.o) $(SOURCE_CC:.cc=.o) -all: rts_proto.o wrappers.o sgnb_change_required.pb-c.o sn_status_transfer.pb-c.o common_types.pb-c.o rrc_sib.pb-c.o rrc_cg_config_info.pb-c.o secondary_rat_data_usage_report.pb-c.o rrc_failure_information.pb-c.o sgnb_addition_request.pb-c.o sgnb_activity_notification.pb-c.o sgnb_modification_refuse.pb-c.o sgnb_modification_request.pb-c.o rrc_reconfiguration.pb-c.o sgnb_addition_request_reject.pb-c.o rrc_measurement_report.pb-c.o rrc_common_types.pb-c.o rrc_cg_config.pb-c.o rrc_system_information.pb-c.o rrc_general_message_types.pb-c.o sgnb_modification_required.pb-c.o sgnb_modification_request_acknowledge.pb-c.o sgnb_release_request.pb-c.o sgnb_change_refuse.pb-c.o sgnb_release_required.pb-c.o rrc_reconfiguration_complete.pb-c.o gnb_status_indication.pb-c.o sgnb_reconfiguration_complete.pb-c.o error_cause.pb-c.o sgnb_change_confirm.pb-c.o sgnb_modification_request_reject.pb-c.o x2ap_streaming.pb-c.o rrctransfer.pb-c.o sgnb_release_confirm.pb-c.o sgnb_addition_request_acknowledge.pb-c.o sgnb_release_request_acknowledge.pb-c.o x2ap_common_types.pb-c.o sgnb_modification_confirm.pb-c.o ue_context_release.pb-c.o +all: rts_proto.o wrappers.o sgnb_change_required.pb-c.o sn_status_transfer.pb-c.o common_types.pb-c.o rrc_sib.pb-c.o rrc_cg_config_info.pb-c.o secondary_rat_data_usage_report.pb-c.o rrc_failure_information.pb-c.o sgnb_addition_request.pb-c.o sgnb_activity_notification.pb-c.o sgnb_modification_refuse.pb-c.o sgnb_modification_request.pb-c.o rrc_reconfiguration.pb-c.o sgnb_addition_request_reject.pb-c.o rrc_measurement_report.pb-c.o ricgeomessages_pcmdreport.pb-c.o rrc_common_types.pb-c.o rrc_cg_config.pb-c.o rrc_system_information.pb-c.o rrc_general_message_types.pb-c.o sgnb_modification_required.pb-c.o sgnb_modification_request_acknowledge.pb-c.o sgnb_release_request.pb-c.o sgnb_change_refuse.pb-c.o sgnb_release_required.pb-c.o ricgeomessages.pb-c.o rrc_reconfiguration_complete.pb-c.o gnb_status_indication.pb-c.o sgnb_reconfiguration_complete.pb-c.o error_cause.pb-c.o sgnb_change_confirm.pb-c.o sgnb_modification_request_reject.pb-c.o x2ap_streaming.pb-c.o rrctransfer.pb-c.o sgnb_release_confirm.pb-c.o sgnb_addition_request_acknowledge.pb-c.o sgnb_release_request_acknowledge.pb-c.o x2ap_common_types.pb-c.o sgnb_modification_confirm.pb-c.o ue_context_release.pb-c.o wrappers.o : google/protobuf/wrappers.pb-c.c diff --git a/mc-core/mc/local_datasource/ricgeomessages.pb-c.c b/mc-core/mc/local_datasource/ricgeomessages.pb-c.c new file mode 100644 index 0000000..2c9be4a --- /dev/null +++ b/mc-core/mc/local_datasource/ricgeomessages.pb-c.c @@ -0,0 +1,292 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ricgeomessages.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "ricgeomessages.pb-c.h" +void geo_hdr__init + (GeoHdr *message) +{ + static const GeoHdr init_value = GEO_HDR__INIT; + *message = init_value; +} +size_t geo_hdr__get_packed_size + (const GeoHdr *message) +{ + assert(message->base.descriptor == &geo_hdr__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t geo_hdr__pack + (const GeoHdr *message, + uint8_t *out) +{ + assert(message->base.descriptor == &geo_hdr__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t geo_hdr__pack_to_buffer + (const GeoHdr *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &geo_hdr__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +GeoHdr * + geo_hdr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (GeoHdr *) + protobuf_c_message_unpack (&geo_hdr__descriptor, + allocator, len, data); +} +void geo_hdr__free_unpacked + (GeoHdr *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &geo_hdr__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +void geo_msg__init + (GeoMsg *message) +{ + static const GeoMsg init_value = GEO_MSG__INIT; + *message = init_value; +} +size_t geo_msg__get_packed_size + (const GeoMsg *message) +{ + assert(message->base.descriptor == &geo_msg__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t geo_msg__pack + (const GeoMsg *message, + uint8_t *out) +{ + assert(message->base.descriptor == &geo_msg__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t geo_msg__pack_to_buffer + (const GeoMsg *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &geo_msg__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +GeoMsg * + geo_msg__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (GeoMsg *) + protobuf_c_message_unpack (&geo_msg__descriptor, + allocator, len, data); +} +void geo_msg__free_unpacked + (GeoMsg *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &geo_msg__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor geo_hdr__field_descriptors[6] = +{ + { + "SequenceNumber", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(GeoHdr, sequencenumber), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Timestamp", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(GeoHdr, timestamp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Eci", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(GeoHdr, eci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Plmn", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(GeoHdr, plmn), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "EUtranTraceID", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(GeoHdr, eutrantraceid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "CRNTI", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(GeoHdr, crnti), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned geo_hdr__field_indices_by_name[] = { + 5, /* field[5] = CRNTI */ + 4, /* field[4] = EUtranTraceID */ + 2, /* field[2] = Eci */ + 3, /* field[3] = Plmn */ + 0, /* field[0] = SequenceNumber */ + 1, /* field[1] = Timestamp */ +}; +static const ProtobufCIntRange geo_hdr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 6 } +}; +const ProtobufCMessageDescriptor geo_hdr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "GeoHdr", + "GeoHdr", + "GeoHdr", + "", + sizeof(GeoHdr), + 6, + geo_hdr__field_descriptors, + geo_hdr__field_indices_by_name, + 1, geo_hdr__number_ranges, + (ProtobufCMessageInit) geo_hdr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCEnumValue geo_msg__types__enum_values_by_number[1] = +{ + { "PCMDREPORT", "GEO_MSG__TYPES__PCMDREPORT", 0 }, +}; +static const ProtobufCIntRange geo_msg__types__value_ranges[] = { +{0, 0},{0, 1} +}; +static const ProtobufCEnumValueIndex geo_msg__types__enum_values_by_name[1] = +{ + { "PCMDREPORT", 0 }, +}; +const ProtobufCEnumDescriptor geo_msg__types__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "GeoMsg.Types", + "Types", + "GeoMsg__Types", + "", + 1, + geo_msg__types__enum_values_by_number, + 1, + geo_msg__types__enum_values_by_name, + 1, + geo_msg__types__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCFieldDescriptor geo_msg__field_descriptors[3] = +{ + { + "type", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(GeoMsg, type), + &geo_msg__types__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "report", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(GeoMsg, geo_msg_oneof_case), + offsetof(GeoMsg, report), + &pcmd_report__descriptor, + NULL, + 0 | PROTOBUF_C_FIELD_FLAG_ONEOF, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "hdr", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(GeoMsg, hdr), + &geo_hdr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned geo_msg__field_indices_by_name[] = { + 2, /* field[2] = hdr */ + 1, /* field[1] = report */ + 0, /* field[0] = type */ +}; +static const ProtobufCIntRange geo_msg__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor geo_msg__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "GeoMsg", + "GeoMsg", + "GeoMsg", + "", + sizeof(GeoMsg), + 3, + geo_msg__field_descriptors, + geo_msg__field_indices_by_name, + 1, geo_msg__number_ranges, + (ProtobufCMessageInit) geo_msg__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/mc-core/mc/local_datasource/ricgeomessages.pb-c.h b/mc-core/mc/local_datasource/ricgeomessages.pb-c.h new file mode 100644 index 0000000..cd63105 --- /dev/null +++ b/mc-core/mc/local_datasource/ricgeomessages.pb-c.h @@ -0,0 +1,127 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ricgeomessages.proto */ + +#ifndef PROTOBUF_C_ricgeomessages_2eproto__INCLUDED +#define PROTOBUF_C_ricgeomessages_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003002 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + +#include "ricgeomessages_pcmdreport.pb-c.h" + +typedef struct _GeoHdr GeoHdr; +typedef struct _GeoMsg GeoMsg; + + +/* --- enums --- */ + +typedef enum _GeoMsg__Types { + GEO_MSG__TYPES__PCMDREPORT = 0 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GEO_MSG__TYPES) +} GeoMsg__Types; + +/* --- messages --- */ + +struct _GeoHdr +{ + ProtobufCMessage base; + uint64_t sequencenumber; + uint64_t timestamp; + uint32_t eci; + uint32_t plmn; + uint64_t eutrantraceid; + uint32_t crnti; +}; +#define GEO_HDR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&geo_hdr__descriptor) \ + , 0, 0, 0, 0, 0, 0 } + + +typedef enum { + GEO_MSG__GEO_MSG_ONEOF__NOT_SET = 0, + GEO_MSG__GEO_MSG_ONEOF_REPORT = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(GEO_MSG__GEO_MSG_ONEOF) +} GeoMsg__GeoMsgOneofCase; + +struct _GeoMsg +{ + ProtobufCMessage base; + GeoMsg__Types type; + GeoHdr *hdr; + GeoMsg__GeoMsgOneofCase geo_msg_oneof_case; + union { + PcmdReport *report; + }; +}; +#define GEO_MSG__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&geo_msg__descriptor) \ + , GEO_MSG__TYPES__PCMDREPORT, NULL, GEO_MSG__GEO_MSG_ONEOF__NOT_SET, {0} } + + +/* GeoHdr methods */ +void geo_hdr__init + (GeoHdr *message); +size_t geo_hdr__get_packed_size + (const GeoHdr *message); +size_t geo_hdr__pack + (const GeoHdr *message, + uint8_t *out); +size_t geo_hdr__pack_to_buffer + (const GeoHdr *message, + ProtobufCBuffer *buffer); +GeoHdr * + geo_hdr__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void geo_hdr__free_unpacked + (GeoHdr *message, + ProtobufCAllocator *allocator); +/* GeoMsg methods */ +void geo_msg__init + (GeoMsg *message); +size_t geo_msg__get_packed_size + (const GeoMsg *message); +size_t geo_msg__pack + (const GeoMsg *message, + uint8_t *out); +size_t geo_msg__pack_to_buffer + (const GeoMsg *message, + ProtobufCBuffer *buffer); +GeoMsg * + geo_msg__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void geo_msg__free_unpacked + (GeoMsg *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*GeoHdr_Closure) + (const GeoHdr *message, + void *closure_data); +typedef void (*GeoMsg_Closure) + (const GeoMsg *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor geo_hdr__descriptor; +extern const ProtobufCMessageDescriptor geo_msg__descriptor; +extern const ProtobufCEnumDescriptor geo_msg__types__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_ricgeomessages_2eproto__INCLUDED */ diff --git a/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.c b/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.c new file mode 100644 index 0000000..64a0578 --- /dev/null +++ b/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.c @@ -0,0 +1,3577 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ricgeomessages_pcmdreport.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "ricgeomessages_pcmdreport.pb-c.h" +void pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__init + (PcmdReport__TpUlRadioBearerRlcThroughputRecord *message) +{ + static const PcmdReport__TpUlRadioBearerRlcThroughputRecord init_value = PCMD_REPORT__TP_UL_RADIO_BEARER_RLC_THROUGHPUT_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__init + (PcmdReport__TpDlRadioBearerRlcThroughputRecord *message) +{ + static const PcmdReport__TpDlRadioBearerRlcThroughputRecord init_value = PCMD_REPORT__TP_DL_RADIO_BEARER_RLC_THROUGHPUT_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__init + (PcmdReport__TpDlRadioBearerPdcpThroughputRecord *message) +{ + static const PcmdReport__TpDlRadioBearerPdcpThroughputRecord init_value = PCMD_REPORT__TP_DL_RADIO_BEARER_PDCP_THROUGHPUT_RECORD__INIT; + *message = init_value; +} +void pcmd_report__start_recording_session__init + (PcmdReport__StartRecordingSession *message) +{ + static const PcmdReport__StartRecordingSession init_value = PCMD_REPORT__START_RECORDING_SESSION__INIT; + *message = init_value; +} +void pcmd_report__stop_recording_session__init + (PcmdReport__StopRecordingSession *message) +{ + static const PcmdReport__StopRecordingSession init_value = PCMD_REPORT__STOP_RECORDING_SESSION__INIT; + *message = init_value; +} +void pcmd_report__session_info__init + (PcmdReport__SessionInfo *message) +{ + static const PcmdReport__SessionInfo init_value = PCMD_REPORT__SESSION_INFO__INIT; + *message = init_value; +} +void pcmd_report__tp_ca_rlc_throughput_trace__init + (PcmdReport__TpCaRlcThroughputTrace *message) +{ + static const PcmdReport__TpCaRlcThroughputTrace init_value = PCMD_REPORT__TP_CA_RLC_THROUGHPUT_TRACE__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__init + (PcmdReport__TpDlRadioBearerPdcpThroughputData *message) +{ + static const PcmdReport__TpDlRadioBearerPdcpThroughputData init_value = PCMD_REPORT__TP_DL_RADIO_BEARER_PDCP_THROUGHPUT_DATA__INIT; + *message = init_value; +} +void pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__init + (PcmdReport__TpUlRadioBearerRlcThroughputData *message) +{ + static const PcmdReport__TpUlRadioBearerRlcThroughputData init_value = PCMD_REPORT__TP_UL_RADIO_BEARER_RLC_THROUGHPUT_DATA__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__init + (PcmdReport__TpDlRadioBearerRlcThroughputData *message) +{ + static const PcmdReport__TpDlRadioBearerRlcThroughputData init_value = PCMD_REPORT__TP_DL_RADIO_BEARER_RLC_THROUGHPUT_DATA__INIT; + *message = init_value; +} +void pcmd_report__tp_ca_configuration_trace_record__init + (PcmdReport__TpCaConfigurationTraceRecord *message) +{ + static const PcmdReport__TpCaConfigurationTraceRecord init_value = PCMD_REPORT__TP_CA_CONFIGURATION_TRACE_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_scell_configured__init + (PcmdReport__TpSCellConfigured *message) +{ + static const PcmdReport__TpSCellConfigured init_value = PCMD_REPORT__TP_SCELL_CONFIGURED__INIT; + *message = init_value; +} +void pcmd_report__tp_scell_deconfigured__init + (PcmdReport__TpSCellDeconfigured *message) +{ + static const PcmdReport__TpSCellDeconfigured init_value = PCMD_REPORT__TP_SCELL_DECONFIGURED__INIT; + *message = init_value; +} +void pcmd_report__tp_ul_scheduling_trace_record__init + (PcmdReport__TpUlSchedulingTraceRecord *message) +{ + static const PcmdReport__TpUlSchedulingTraceRecord init_value = PCMD_REPORT__TP_UL_SCHEDULING_TRACE_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_scheduling_trace_record__init + (PcmdReport__TpDlSchedulingTraceRecord *message) +{ + static const PcmdReport__TpDlSchedulingTraceRecord init_value = PCMD_REPORT__TP_DL_SCHEDULING_TRACE_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_ue_meas_trace_record__init + (PcmdReport__TpUeMeasTraceRecord *message) +{ + static const PcmdReport__TpUeMeasTraceRecord init_value = PCMD_REPORT__TP_UE_MEAS_TRACE_RECORD__INIT; + *message = init_value; +} +void pcmd_report__tp_meas_result_pcell__init + (PcmdReport__TpMeasResultPCell *message) +{ + static const PcmdReport__TpMeasResultPCell init_value = PCMD_REPORT__TP_MEAS_RESULT_PCELL__INIT; + *message = init_value; +} +void pcmd_report__tp_meas_result_eutra__init + (PcmdReport__TpMeasResultEUTRA *message) +{ + static const PcmdReport__TpMeasResultEUTRA init_value = PCMD_REPORT__TP_MEAS_RESULT_EUTRA__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_ca_scell_scheduling_trace_record__init + (PcmdReport__TpDlCaSCellSchedulingTraceRecord *message) +{ + static const PcmdReport__TpDlCaSCellSchedulingTraceRecord init_value = PCMD_REPORT__TP_DL_CA_SCELL_SCHEDULING_TRACE_RECORD__INIT; + *message = init_value; +} +void pcmd_report__sg_nbtrace_record_list__init + (PcmdReport__SgNBTraceRecordList *message) +{ + static const PcmdReport__SgNBTraceRecordList init_value = PCMD_REPORT__SG_NBTRACE_RECORD_LIST__INIT; + *message = init_value; +} +void pcmd_report__tp_ul_ue_throughput_measurements__init + (PcmdReport__TpUlUeThroughputMeasurements *message) +{ + static const PcmdReport__TpUlUeThroughputMeasurements init_value = PCMD_REPORT__TP_UL_UE_THROUGHPUT_MEASUREMENTS__INIT; + *message = init_value; +} +void pcmd_report__tp_dl_ue_throughput_measurements__init + (PcmdReport__TpDlUeThroughputMeasurements *message) +{ + static const PcmdReport__TpDlUeThroughputMeasurements init_value = PCMD_REPORT__TP_DL_UE_THROUGHPUT_MEASUREMENTS__INIT; + *message = init_value; +} +void pcmd_report__cell_global_id_eutra__init + (PcmdReport__CellGlobalIdEUTRA *message) +{ + static const PcmdReport__CellGlobalIdEUTRA init_value = PCMD_REPORT__CELL_GLOBAL_ID_EUTRA__INIT; + *message = init_value; +} +void pcmd_report__global_gnb_id__init + (PcmdReport__GlobalGnbId *message) +{ + static const PcmdReport__GlobalGnbId init_value = PCMD_REPORT__GLOBAL_GNB_ID__INIT; + *message = init_value; +} +void pcmd_report__avg_wb_cqi__init + (PcmdReport__AvgWbCqi *message) +{ + static const PcmdReport__AvgWbCqi init_value = PCMD_REPORT__AVG_WB_CQI__INIT; + *message = init_value; +} +void pcmd_report__avg_sinr__init + (PcmdReport__AvgSINR *message) +{ + static const PcmdReport__AvgSINR init_value = PCMD_REPORT__AVG_SINR__INIT; + *message = init_value; +} +void pcmd_report__avg_phr__init + (PcmdReport__AvgPhr *message) +{ + static const PcmdReport__AvgPhr init_value = PCMD_REPORT__AVG_PHR__INIT; + *message = init_value; +} +void pcmd_report__nullable_sint32__init + (PcmdReport__NullableSint32 *message) +{ + static const PcmdReport__NullableSint32 init_value = PCMD_REPORT__NULLABLE_SINT32__INIT; + *message = init_value; +} +void pcmd_report__nullable_uint32__init + (PcmdReport__NullableUint32 *message) +{ + static const PcmdReport__NullableUint32 init_value = PCMD_REPORT__NULLABLE_UINT32__INIT; + *message = init_value; +} +void pcmd_report__nullable_uint64__init + (PcmdReport__NullableUint64 *message) +{ + static const PcmdReport__NullableUint64 init_value = PCMD_REPORT__NULLABLE_UINT64__INIT; + *message = init_value; +} +void pcmd_report__init + (PcmdReport *message) +{ + static const PcmdReport init_value = PCMD_REPORT__INIT; + *message = init_value; +} +size_t pcmd_report__get_packed_size + (const PcmdReport *message) +{ + assert(message->base.descriptor == &pcmd_report__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t pcmd_report__pack + (const PcmdReport *message, + uint8_t *out) +{ + assert(message->base.descriptor == &pcmd_report__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t pcmd_report__pack_to_buffer + (const PcmdReport *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &pcmd_report__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +PcmdReport * + pcmd_report__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (PcmdReport *) + protobuf_c_message_unpack (&pcmd_report__descriptor, + allocator, len, data); +} +void pcmd_report__free_unpacked + (PcmdReport *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &pcmd_report__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__field_descriptors[1] = +{ + { + "ulRbRlcThroughputList", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputRecord, n_ulrbrlcthroughputlist), + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputRecord, ulrbrlcthroughputlist), + &pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__field_indices_by_name[] = { + 0, /* field[0] = ulRbRlcThroughputList */ +}; +static const ProtobufCIntRange pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpUlRadioBearerRlcThroughputRecord", + "TpUlRadioBearerRlcThroughputRecord", + "PcmdReport__TpUlRadioBearerRlcThroughputRecord", + "", + sizeof(PcmdReport__TpUlRadioBearerRlcThroughputRecord), + 1, + pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__field_descriptors, + pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__field_indices_by_name, + 1, pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__field_descriptors[1] = +{ + { + "dlRbRlcThroughputList", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputRecord, n_dlrbrlcthroughputlist), + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputRecord, dlrbrlcthroughputlist), + &pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__field_indices_by_name[] = { + 0, /* field[0] = dlRbRlcThroughputList */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlRadioBearerRlcThroughputRecord", + "TpDlRadioBearerRlcThroughputRecord", + "PcmdReport__TpDlRadioBearerRlcThroughputRecord", + "", + sizeof(PcmdReport__TpDlRadioBearerRlcThroughputRecord), + 1, + pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__field_descriptors, + pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__field_indices_by_name, + 1, pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__field_descriptors[1] = +{ + { + "dlRadioBearerPdcpThroughputList", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputRecord, n_dlradiobearerpdcpthroughputlist), + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputRecord, dlradiobearerpdcpthroughputlist), + &pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__field_indices_by_name[] = { + 0, /* field[0] = dlRadioBearerPdcpThroughputList */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlRadioBearerPdcpThroughputRecord", + "TpDlRadioBearerPdcpThroughputRecord", + "PcmdReport__TpDlRadioBearerPdcpThroughputRecord", + "", + sizeof(PcmdReport__TpDlRadioBearerPdcpThroughputRecord), + 1, + pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__field_descriptors, + pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__field_indices_by_name, + 1, pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__start_recording_session__field_descriptors[1] = +{ + { + "timestamp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__StartRecordingSession, timestamp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__start_recording_session__field_indices_by_name[] = { + 0, /* field[0] = timestamp */ +}; +static const ProtobufCIntRange pcmd_report__start_recording_session__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__start_recording_session__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.StartRecordingSession", + "StartRecordingSession", + "PcmdReport__StartRecordingSession", + "", + sizeof(PcmdReport__StartRecordingSession), + 1, + pcmd_report__start_recording_session__field_descriptors, + pcmd_report__start_recording_session__field_indices_by_name, + 1, pcmd_report__start_recording_session__number_ranges, + (ProtobufCMessageInit) pcmd_report__start_recording_session__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__stop_recording_session__field_descriptors[1] = +{ + { + "timestamp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__StopRecordingSession, timestamp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__stop_recording_session__field_indices_by_name[] = { + 0, /* field[0] = timestamp */ +}; +static const ProtobufCIntRange pcmd_report__stop_recording_session__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__stop_recording_session__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.StopRecordingSession", + "StopRecordingSession", + "PcmdReport__StopRecordingSession", + "", + sizeof(PcmdReport__StopRecordingSession), + 1, + pcmd_report__stop_recording_session__field_descriptors, + pcmd_report__stop_recording_session__field_indices_by_name, + 1, pcmd_report__stop_recording_session__number_ranges, + (ProtobufCMessageInit) pcmd_report__stop_recording_session__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__session_info__field_descriptors[13] = +{ + { + "timestamp", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, timestamp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "licenseInfo", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, licenseinfo), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eNBIpAddress", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BYTES, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, enbipaddress), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "PLMN", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, plmn), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "MMEGI", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, mmegi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "MMEC", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, mmec), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "IMSI", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, imsi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "IMEI", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, imei), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "nolicenseInfo", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, nolicenseinfo), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "licenseInfoV5", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, licenseinfov5), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "enbUeS1apId", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, enbues1apid), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "mmeUeS1apId", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, mmeues1apid), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "s1apCause", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SessionInfo, s1apcause), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__session_info__field_indices_by_name[] = { + 7, /* field[7] = IMEI */ + 6, /* field[6] = IMSI */ + 5, /* field[5] = MMEC */ + 4, /* field[4] = MMEGI */ + 3, /* field[3] = PLMN */ + 2, /* field[2] = eNBIpAddress */ + 10, /* field[10] = enbUeS1apId */ + 1, /* field[1] = licenseInfo */ + 9, /* field[9] = licenseInfoV5 */ + 11, /* field[11] = mmeUeS1apId */ + 8, /* field[8] = nolicenseInfo */ + 12, /* field[12] = s1apCause */ + 0, /* field[0] = timestamp */ +}; +static const ProtobufCIntRange pcmd_report__session_info__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 13 } +}; +const ProtobufCMessageDescriptor pcmd_report__session_info__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.SessionInfo", + "SessionInfo", + "PcmdReport__SessionInfo", + "", + sizeof(PcmdReport__SessionInfo), + 13, + pcmd_report__session_info__field_descriptors, + pcmd_report__session_info__field_indices_by_name, + 1, pcmd_report__session_info__number_ranges, + (ProtobufCMessageInit) pcmd_report__session_info__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ca_rlc_throughput_trace__field_descriptors[14] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "recordCollectionDuration", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, recordcollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes2Cc", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes2cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes3Cc", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes3cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes4Cc", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes4cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes2Cc", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes2cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes3Cc", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes3cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes4Cc", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes4cc), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes5Cc", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes5cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes5Cc", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes5cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes6Cc", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes6cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes6Cc", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes6cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcTxBytes7Cc", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlctxbytes7cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caActivationRlcReTxBytes7Cc", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpCaRlcThroughputTrace, caactivationrlcretxbytes7cc), + &pcmd_report__nullable_uint64__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ca_rlc_throughput_trace__field_indices_by_name[] = { + 5, /* field[5] = caActivationRlcReTxBytes2Cc */ + 6, /* field[6] = caActivationRlcReTxBytes3Cc */ + 7, /* field[7] = caActivationRlcReTxBytes4Cc */ + 9, /* field[9] = caActivationRlcReTxBytes5Cc */ + 11, /* field[11] = caActivationRlcReTxBytes6Cc */ + 13, /* field[13] = caActivationRlcReTxBytes7Cc */ + 2, /* field[2] = caActivationRlcTxBytes2Cc */ + 3, /* field[3] = caActivationRlcTxBytes3Cc */ + 4, /* field[4] = caActivationRlcTxBytes4Cc */ + 8, /* field[8] = caActivationRlcTxBytes5Cc */ + 10, /* field[10] = caActivationRlcTxBytes6Cc */ + 12, /* field[12] = caActivationRlcTxBytes7Cc */ + 0, /* field[0] = endMarker */ + 1, /* field[1] = recordCollectionDuration */ +}; +static const ProtobufCIntRange pcmd_report__tp_ca_rlc_throughput_trace__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 14 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ca_rlc_throughput_trace__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpCaRlcThroughputTrace", + "TpCaRlcThroughputTrace", + "PcmdReport__TpCaRlcThroughputTrace", + "", + sizeof(PcmdReport__TpCaRlcThroughputTrace), + 14, + pcmd_report__tp_ca_rlc_throughput_trace__field_descriptors, + pcmd_report__tp_ca_rlc_throughput_trace__field_indices_by_name, + 1, pcmd_report__tp_ca_rlc_throughput_trace__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ca_rlc_throughput_trace__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__field_descriptors[5] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputData, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drb_Id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputData, drb_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dataCollectionDuration", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputData, datacollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPdcpPduRcvdForTx", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputData, numofpdcppdurcvdfortx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPdcpPduDiscarded", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerPdcpThroughputData, numofpdcppdudiscarded), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__field_indices_by_name[] = { + 2, /* field[2] = dataCollectionDuration */ + 1, /* field[1] = drb_Id */ + 0, /* field[0] = endMarker */ + 4, /* field[4] = numOfPdcpPduDiscarded */ + 3, /* field[3] = numOfPdcpPduRcvdForTx */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlRadioBearerPdcpThroughputData", + "TpDlRadioBearerPdcpThroughputData", + "PcmdReport__TpDlRadioBearerPdcpThroughputData", + "", + sizeof(PcmdReport__TpDlRadioBearerPdcpThroughputData), + 5, + pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__field_descriptors, + pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__field_indices_by_name, + 1, pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__field_descriptors[12] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drb_Id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, drb_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dataCollectionDuration", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, datacollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUePduRcvd", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofttiuepdurcvd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfRlcPduTxBytes", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, sumofrlcpdutxbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfRlcSduTxBytes", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, sumofrlcsdutxbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBadRlcPduTx", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofbadrlcpdutx), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfRlcPduTx", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofrlcpdutx), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap1", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofpacketsgap1), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap2", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofpacketsgap2), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap3", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofpacketsgap3), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap4", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlRadioBearerRlcThroughputData, numofpacketsgap4), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__field_indices_by_name[] = { + 2, /* field[2] = dataCollectionDuration */ + 1, /* field[1] = drb_Id */ + 0, /* field[0] = endMarker */ + 6, /* field[6] = numOfBadRlcPduTx */ + 8, /* field[8] = numOfPacketsGap1 */ + 9, /* field[9] = numOfPacketsGap2 */ + 10, /* field[10] = numOfPacketsGap3 */ + 11, /* field[11] = numOfPacketsGap4 */ + 7, /* field[7] = numOfRlcPduTx */ + 3, /* field[3] = numOfTtiUePduRcvd */ + 4, /* field[4] = sumOfRlcPduTxBytes */ + 5, /* field[5] = sumOfRlcSduTxBytes */ +}; +static const ProtobufCIntRange pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 12 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpUlRadioBearerRlcThroughputData", + "TpUlRadioBearerRlcThroughputData", + "PcmdReport__TpUlRadioBearerRlcThroughputData", + "", + sizeof(PcmdReport__TpUlRadioBearerRlcThroughputData), + 12, + pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__field_descriptors, + pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__field_indices_by_name, + 1, pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__field_descriptors[10] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "drb_Id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, drb_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dataCollectionDuration", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, datacollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOf1stRlcPduTxBytes", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, sumof1strlcpdutxbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfRlcReTxBytes", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, sumofrlcretxbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiRlcTx", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, numofttirlctx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap1", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, numofpacketsgap1), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap2", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, numofpacketsgap2), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap3", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, numofpacketsgap3), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPacketsGap4", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlRadioBearerRlcThroughputData, numofpacketsgap4), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__field_indices_by_name[] = { + 2, /* field[2] = dataCollectionDuration */ + 1, /* field[1] = drb_Id */ + 0, /* field[0] = endMarker */ + 6, /* field[6] = numOfPacketsGap1 */ + 7, /* field[7] = numOfPacketsGap2 */ + 8, /* field[8] = numOfPacketsGap3 */ + 9, /* field[9] = numOfPacketsGap4 */ + 5, /* field[5] = numOfTtiRlcTx */ + 3, /* field[3] = sumOf1stRlcPduTxBytes */ + 4, /* field[4] = sumOfRlcReTxBytes */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlRadioBearerRlcThroughputData", + "TpDlRadioBearerRlcThroughputData", + "PcmdReport__TpDlRadioBearerRlcThroughputData", + "", + sizeof(PcmdReport__TpDlRadioBearerRlcThroughputData), + 10, + pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__field_descriptors, + pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__field_indices_by_name, + 1, pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ca_configuration_trace_record__field_descriptors[2] = +{ + { + "scellsConfiguredList", + 1, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpCaConfigurationTraceRecord, n_scellsconfiguredlist), + offsetof(PcmdReport__TpCaConfigurationTraceRecord, scellsconfiguredlist), + &pcmd_report__tp_scell_configured__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "scellsDeconfiguredList", + 2, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpCaConfigurationTraceRecord, n_scellsdeconfiguredlist), + offsetof(PcmdReport__TpCaConfigurationTraceRecord, scellsdeconfiguredlist), + &pcmd_report__tp_scell_deconfigured__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ca_configuration_trace_record__field_indices_by_name[] = { + 0, /* field[0] = scellsConfiguredList */ + 1, /* field[1] = scellsDeconfiguredList */ +}; +static const ProtobufCIntRange pcmd_report__tp_ca_configuration_trace_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ca_configuration_trace_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpCaConfigurationTraceRecord", + "TpCaConfigurationTraceRecord", + "PcmdReport__TpCaConfigurationTraceRecord", + "", + sizeof(PcmdReport__TpCaConfigurationTraceRecord), + 2, + pcmd_report__tp_ca_configuration_trace_record__field_descriptors, + pcmd_report__tp_ca_configuration_trace_record__field_indices_by_name, + 1, pcmd_report__tp_ca_configuration_trace_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ca_configuration_trace_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_scell_configured__field_descriptors[3] = +{ + { + "scellIndex", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellConfigured, scellindex), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eci", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellConfigured, eci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ecgi", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellConfigured, ecgi), + &pcmd_report__cell_global_id_eutra__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_scell_configured__field_indices_by_name[] = { + 2, /* field[2] = ecgi */ + 1, /* field[1] = eci */ + 0, /* field[0] = scellIndex */ +}; +static const ProtobufCIntRange pcmd_report__tp_scell_configured__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_scell_configured__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpSCellConfigured", + "TpSCellConfigured", + "PcmdReport__TpSCellConfigured", + "", + sizeof(PcmdReport__TpSCellConfigured), + 3, + pcmd_report__tp_scell_configured__field_descriptors, + pcmd_report__tp_scell_configured__field_indices_by_name, + 1, pcmd_report__tp_scell_configured__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_scell_configured__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_scell_deconfigured__field_descriptors[4] = +{ + { + "scellIndex", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellDeconfigured, scellindex), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eci", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellDeconfigured, eci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ecgi", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellDeconfigured, ecgi), + &pcmd_report__cell_global_id_eutra__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cause", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpSCellDeconfigured, cause), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_scell_deconfigured__field_indices_by_name[] = { + 3, /* field[3] = cause */ + 2, /* field[2] = ecgi */ + 1, /* field[1] = eci */ + 0, /* field[0] = scellIndex */ +}; +static const ProtobufCIntRange pcmd_report__tp_scell_deconfigured__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_scell_deconfigured__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpSCellDeconfigured", + "TpSCellDeconfigured", + "PcmdReport__TpSCellDeconfigured", + "", + sizeof(PcmdReport__TpSCellDeconfigured), + 4, + pcmd_report__tp_scell_deconfigured__field_descriptors, + pcmd_report__tp_scell_deconfigured__field_indices_by_name, + 1, pcmd_report__tp_scell_deconfigured__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_scell_deconfigured__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ul_scheduling_trace_record__field_descriptors[10] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "recordCollectionDuration", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, recordcollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSched", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofttiuesched), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPrbUsed", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofprbused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarq1stTx", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofharq1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarqReTx", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofharqretx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBad1stMacPduTx", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofbad1stmacpdutx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBadLastMacPduTx", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, numofbadlastmacpdutx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgSinr", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, avgsinr), + &pcmd_report__avg_sinr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgPhr", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlSchedulingTraceRecord, avgphr), + &pcmd_report__avg_phr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ul_scheduling_trace_record__field_indices_by_name[] = { + 9, /* field[9] = avgPhr */ + 8, /* field[8] = avgSinr */ + 0, /* field[0] = endMarker */ + 6, /* field[6] = numOfBad1stMacPduTx */ + 7, /* field[7] = numOfBadLastMacPduTx */ + 4, /* field[4] = numOfHarq1stTx */ + 5, /* field[5] = numOfHarqReTx */ + 3, /* field[3] = numOfPrbUsed */ + 2, /* field[2] = numOfTtiUeSched */ + 1, /* field[1] = recordCollectionDuration */ +}; +static const ProtobufCIntRange pcmd_report__tp_ul_scheduling_trace_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 10 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ul_scheduling_trace_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpUlSchedulingTraceRecord", + "TpUlSchedulingTraceRecord", + "PcmdReport__TpUlSchedulingTraceRecord", + "", + sizeof(PcmdReport__TpUlSchedulingTraceRecord), + 10, + pcmd_report__tp_ul_scheduling_trace_record__field_descriptors, + pcmd_report__tp_ul_scheduling_trace_record__field_indices_by_name, + 1, pcmd_report__tp_ul_scheduling_trace_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ul_scheduling_trace_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_scheduling_trace_record__field_descriptors[16] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "recordCollectionDuration", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, recordcollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSched", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofttiuesched), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPrbUsed", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofprbused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarq1stTx", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofharq1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword0MimoWbCqi", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, avgcodeword0mimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword1MimoWbCqi", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, avgcodeword1mimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword0NonMimoWbCqi", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, avgcodeword0nonmimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgSinrNonAbs", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, avgsinrnonabs), + &pcmd_report__avg_sinr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgSinrAbs", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, avgsinrabs), + &pcmd_report__avg_sinr__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSchedMimo", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofttiueschedmimo), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiInDrxOff", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofttiindrxoff), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSchedAbs", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofttiueschedabs), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarqReTx", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofharqretx), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBad1stMacPduTx", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofbad1stmacpdutx), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBadLastMacPduTx", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlSchedulingTraceRecord, numofbadlastmacpdutx), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_scheduling_trace_record__field_indices_by_name[] = { + 5, /* field[5] = avgCodeword0MimoWbCqi */ + 7, /* field[7] = avgCodeword0NonMimoWbCqi */ + 6, /* field[6] = avgCodeword1MimoWbCqi */ + 9, /* field[9] = avgSinrAbs */ + 8, /* field[8] = avgSinrNonAbs */ + 0, /* field[0] = endMarker */ + 14, /* field[14] = numOfBad1stMacPduTx */ + 15, /* field[15] = numOfBadLastMacPduTx */ + 4, /* field[4] = numOfHarq1stTx */ + 13, /* field[13] = numOfHarqReTx */ + 3, /* field[3] = numOfPrbUsed */ + 11, /* field[11] = numOfTtiInDrxOff */ + 2, /* field[2] = numOfTtiUeSched */ + 12, /* field[12] = numOfTtiUeSchedAbs */ + 10, /* field[10] = numOfTtiUeSchedMimo */ + 1, /* field[1] = recordCollectionDuration */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_scheduling_trace_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 16 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_scheduling_trace_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlSchedulingTraceRecord", + "TpDlSchedulingTraceRecord", + "PcmdReport__TpDlSchedulingTraceRecord", + "", + sizeof(PcmdReport__TpDlSchedulingTraceRecord), + 16, + pcmd_report__tp_dl_scheduling_trace_record__field_descriptors, + pcmd_report__tp_dl_scheduling_trace_record__field_indices_by_name, + 1, pcmd_report__tp_dl_scheduling_trace_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_scheduling_trace_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ue_meas_trace_record__field_descriptors[5] = +{ + { + "dl_CarrierFreq", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUeMeasTraceRecord, dl_carrierfreq), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "triggerType", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUeMeasTraceRecord, triggertype), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "purpose", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUeMeasTraceRecord, purpose), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "measResultPCell", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUeMeasTraceRecord, measresultpcell), + &pcmd_report__tp_meas_result_pcell__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "measResultNeighCellsEUTRAList", + 5, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_MESSAGE, + offsetof(PcmdReport__TpUeMeasTraceRecord, n_measresultneighcellseutralist), + offsetof(PcmdReport__TpUeMeasTraceRecord, measresultneighcellseutralist), + &pcmd_report__tp_meas_result_eutra__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ue_meas_trace_record__field_indices_by_name[] = { + 0, /* field[0] = dl_CarrierFreq */ + 4, /* field[4] = measResultNeighCellsEUTRAList */ + 3, /* field[3] = measResultPCell */ + 2, /* field[2] = purpose */ + 1, /* field[1] = triggerType */ +}; +static const ProtobufCIntRange pcmd_report__tp_ue_meas_trace_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 5 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ue_meas_trace_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpUeMeasTraceRecord", + "TpUeMeasTraceRecord", + "PcmdReport__TpUeMeasTraceRecord", + "", + sizeof(PcmdReport__TpUeMeasTraceRecord), + 5, + pcmd_report__tp_ue_meas_trace_record__field_descriptors, + pcmd_report__tp_ue_meas_trace_record__field_indices_by_name, + 1, pcmd_report__tp_ue_meas_trace_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ue_meas_trace_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_meas_result_pcell__field_descriptors[3] = +{ + { + "pci", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultPCell, pci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rsrp", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultPCell, rsrp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rsrq", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultPCell, rsrq), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_meas_result_pcell__field_indices_by_name[] = { + 0, /* field[0] = pci */ + 1, /* field[1] = rsrp */ + 2, /* field[2] = rsrq */ +}; +static const ProtobufCIntRange pcmd_report__tp_meas_result_pcell__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 3 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_meas_result_pcell__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpMeasResultPCell", + "TpMeasResultPCell", + "PcmdReport__TpMeasResultPCell", + "", + sizeof(PcmdReport__TpMeasResultPCell), + 3, + pcmd_report__tp_meas_result_pcell__field_descriptors, + pcmd_report__tp_meas_result_pcell__field_indices_by_name, + 1, pcmd_report__tp_meas_result_pcell__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_meas_result_pcell__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_meas_result_eutra__field_descriptors[4] = +{ + { + "pci", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultEUTRA, pci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rsrp", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultEUTRA, rsrp), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "rsrq", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultEUTRA, rsrq), + &pcmd_report__nullable_sint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cellId", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpMeasResultEUTRA, cellid), + &pcmd_report__cell_global_id_eutra__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_meas_result_eutra__field_indices_by_name[] = { + 3, /* field[3] = cellId */ + 0, /* field[0] = pci */ + 1, /* field[1] = rsrp */ + 2, /* field[2] = rsrq */ +}; +static const ProtobufCIntRange pcmd_report__tp_meas_result_eutra__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 4 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_meas_result_eutra__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpMeasResultEUTRA", + "TpMeasResultEUTRA", + "PcmdReport__TpMeasResultEUTRA", + "", + sizeof(PcmdReport__TpMeasResultEUTRA), + 4, + pcmd_report__tp_meas_result_eutra__field_descriptors, + pcmd_report__tp_meas_result_eutra__field_indices_by_name, + 1, pcmd_report__tp_meas_result_eutra__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_meas_result_eutra__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_ca_scell_scheduling_trace_record__field_descriptors[14] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "eci", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, eci), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ecgi", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, ecgi), + &pcmd_report__cell_global_id_eutra__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "recordCollectionDuration", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, recordcollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSched", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofttiuesched), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiUeSchedMimo", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofttiueschedmimo), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPrbUsed", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofprbused), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarq1stTx", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofharq1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfHarqReTx", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofharqretx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBad1stMacPduTx", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofbad1stmacpdutx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfBadLastMacPduTx", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, numofbadlastmacpdutx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword0MimoWbCqi", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, avgcodeword0mimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword1MimoWbCqi", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, avgcodeword1mimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "avgCodeword0NonMimoWbCqi", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlCaSCellSchedulingTraceRecord, avgcodeword0nonmimowbcqi), + &pcmd_report__avg_wb_cqi__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_ca_scell_scheduling_trace_record__field_indices_by_name[] = { + 11, /* field[11] = avgCodeword0MimoWbCqi */ + 13, /* field[13] = avgCodeword0NonMimoWbCqi */ + 12, /* field[12] = avgCodeword1MimoWbCqi */ + 2, /* field[2] = ecgi */ + 1, /* field[1] = eci */ + 0, /* field[0] = endMarker */ + 9, /* field[9] = numOfBad1stMacPduTx */ + 10, /* field[10] = numOfBadLastMacPduTx */ + 7, /* field[7] = numOfHarq1stTx */ + 8, /* field[8] = numOfHarqReTx */ + 6, /* field[6] = numOfPrbUsed */ + 4, /* field[4] = numOfTtiUeSched */ + 5, /* field[5] = numOfTtiUeSchedMimo */ + 3, /* field[3] = recordCollectionDuration */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_ca_scell_scheduling_trace_record__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 14 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_ca_scell_scheduling_trace_record__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlCaSCellSchedulingTraceRecord", + "TpDlCaSCellSchedulingTraceRecord", + "PcmdReport__TpDlCaSCellSchedulingTraceRecord", + "", + sizeof(PcmdReport__TpDlCaSCellSchedulingTraceRecord), + 14, + pcmd_report__tp_dl_ca_scell_scheduling_trace_record__field_descriptors, + pcmd_report__tp_dl_ca_scell_scheduling_trace_record__field_indices_by_name, + 1, pcmd_report__tp_dl_ca_scell_scheduling_trace_record__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_ca_scell_scheduling_trace_record__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__sg_nbtrace_record_list__field_descriptors[7] = +{ + { + "eNDCRecordType", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, endcrecordtype), + &pcmd_report__sg_nbtrace_record_type__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "globalGnbId", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, globalgnbid), + &pcmd_report__global_gnb_id__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "menbUeX2apId", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, menbuex2apid), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "menbUeX2apIdExt", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, menbuex2apidext), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sgnbUeX2apId", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, sgnbuex2apid), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "timeStamp", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, timestamp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "result", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport__SgNBTraceRecordList, result), + &pcmd_report__nullable_uint32__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__sg_nbtrace_record_list__field_indices_by_name[] = { + 0, /* field[0] = eNDCRecordType */ + 1, /* field[1] = globalGnbId */ + 2, /* field[2] = menbUeX2apId */ + 3, /* field[3] = menbUeX2apIdExt */ + 6, /* field[6] = result */ + 4, /* field[4] = sgnbUeX2apId */ + 5, /* field[5] = timeStamp */ +}; +static const ProtobufCIntRange pcmd_report__sg_nbtrace_record_list__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 7 } +}; +const ProtobufCMessageDescriptor pcmd_report__sg_nbtrace_record_list__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.SgNBTraceRecordList", + "SgNBTraceRecordList", + "PcmdReport__SgNBTraceRecordList", + "", + sizeof(PcmdReport__SgNBTraceRecordList), + 7, + pcmd_report__sg_nbtrace_record_list__field_descriptors, + pcmd_report__sg_nbtrace_record_list__field_indices_by_name, + 1, pcmd_report__sg_nbtrace_record_list__number_ranges, + (ProtobufCMessageInit) pcmd_report__sg_nbtrace_record_list__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_ul_ue_throughput_measurements__field_descriptors[17] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dataCollectionDuration", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, datacollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfReceivedNonGbrBytes", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, sumofreceivednongbrbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfReceivedGbrBytes", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, sumofreceivedgbrbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "maxGbrDelay", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, maxgbrdelay), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfReceivedTx", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, numofreceivedtx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfReceived1stTx", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, numofreceived1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfFailed1stTx", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, numoffailed1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfFailedLastTx", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, numoffailedlasttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiPositiveUlBuf", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, numofttipositiveulbuf), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanMCS", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanmcs), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPuschRssi", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_SINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanpuschrssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPuschSinr", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_SINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanpuschsinr), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPhr", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_SINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanphr), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPucchRssi", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_SINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanpucchrssi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPdcchAggUl", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanpdcchaggul), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanPdcchAggDl", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpUlUeThroughputMeasurements, meanpdcchaggdl), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_ul_ue_throughput_measurements__field_indices_by_name[] = { + 1, /* field[1] = dataCollectionDuration */ + 0, /* field[0] = endMarker */ + 4, /* field[4] = maxGbrDelay */ + 10, /* field[10] = meanMCS */ + 16, /* field[16] = meanPdcchAggDl */ + 15, /* field[15] = meanPdcchAggUl */ + 13, /* field[13] = meanPhr */ + 14, /* field[14] = meanPucchRssi */ + 11, /* field[11] = meanPuschRssi */ + 12, /* field[12] = meanPuschSinr */ + 7, /* field[7] = numOfFailed1stTx */ + 8, /* field[8] = numOfFailedLastTx */ + 6, /* field[6] = numOfReceived1stTx */ + 5, /* field[5] = numOfReceivedTx */ + 9, /* field[9] = numOfTtiPositiveUlBuf */ + 3, /* field[3] = sumOfReceivedGbrBytes */ + 2, /* field[2] = sumOfReceivedNonGbrBytes */ +}; +static const ProtobufCIntRange pcmd_report__tp_ul_ue_throughput_measurements__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 17 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_ul_ue_throughput_measurements__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpUlUeThroughputMeasurements", + "TpUlUeThroughputMeasurements", + "PcmdReport__TpUlUeThroughputMeasurements", + "", + sizeof(PcmdReport__TpUlUeThroughputMeasurements), + 17, + pcmd_report__tp_ul_ue_throughput_measurements__field_descriptors, + pcmd_report__tp_ul_ue_throughput_measurements__field_indices_by_name, + 1, pcmd_report__tp_ul_ue_throughput_measurements__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_ul_ue_throughput_measurements__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__tp_dl_ue_throughput_measurements__field_descriptors[17] = +{ + { + "endMarker", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_BOOL, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, endmarker), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dataCollectionDuration", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, datacollectionduration), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfSentNonGbrBytes", + 3, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, sumofsentnongbrbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sumOfSentGbrBytes", + 4, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, sumofsentgbrbytes), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "maxGbrDelay", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, maxgbrdelay), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfSingleCWTx", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofsinglecwtx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfSingleCW1stTx", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofsinglecw1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfSingleCW1stTxFailed", + 8, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofsinglecw1sttxfailed), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfSingleCWLastTxFailed", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofsinglecwlasttxfailed), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfDualCWTx", + 10, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofdualcwtx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfDualCW1stTx", + 11, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofdualcw1sttx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfDualCW1stTxFailed", + 12, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofdualcw1sttxfailed), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfDualCWLastTxFailed", + 13, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofdualcwlasttxfailed), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "pdcchDtx", + 14, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, pdcchdtx), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfTtiPositiveDlBuf", + 15, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, numofttipositivedlbuf), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanDeltaCqi", + 16, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, meandeltacqi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "meanLaWbCqi", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__TpDlUeThroughputMeasurements, meanlawbcqi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__tp_dl_ue_throughput_measurements__field_indices_by_name[] = { + 1, /* field[1] = dataCollectionDuration */ + 0, /* field[0] = endMarker */ + 4, /* field[4] = maxGbrDelay */ + 15, /* field[15] = meanDeltaCqi */ + 16, /* field[16] = meanLaWbCqi */ + 10, /* field[10] = numOfDualCW1stTx */ + 11, /* field[11] = numOfDualCW1stTxFailed */ + 12, /* field[12] = numOfDualCWLastTxFailed */ + 9, /* field[9] = numOfDualCWTx */ + 6, /* field[6] = numOfSingleCW1stTx */ + 7, /* field[7] = numOfSingleCW1stTxFailed */ + 8, /* field[8] = numOfSingleCWLastTxFailed */ + 5, /* field[5] = numOfSingleCWTx */ + 14, /* field[14] = numOfTtiPositiveDlBuf */ + 13, /* field[13] = pdcchDtx */ + 3, /* field[3] = sumOfSentGbrBytes */ + 2, /* field[2] = sumOfSentNonGbrBytes */ +}; +static const ProtobufCIntRange pcmd_report__tp_dl_ue_throughput_measurements__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 17 } +}; +const ProtobufCMessageDescriptor pcmd_report__tp_dl_ue_throughput_measurements__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.TpDlUeThroughputMeasurements", + "TpDlUeThroughputMeasurements", + "PcmdReport__TpDlUeThroughputMeasurements", + "", + sizeof(PcmdReport__TpDlUeThroughputMeasurements), + 17, + pcmd_report__tp_dl_ue_throughput_measurements__field_descriptors, + pcmd_report__tp_dl_ue_throughput_measurements__field_indices_by_name, + 1, pcmd_report__tp_dl_ue_throughput_measurements__number_ranges, + (ProtobufCMessageInit) pcmd_report__tp_dl_ue_throughput_measurements__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__cell_global_id_eutra__field_descriptors[2] = +{ + { + "plmn_identity", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__CellGlobalIdEUTRA, plmn_identity), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "cell_identity", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__CellGlobalIdEUTRA, cell_identity), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__cell_global_id_eutra__field_indices_by_name[] = { + 1, /* field[1] = cell_identity */ + 0, /* field[0] = plmn_identity */ +}; +static const ProtobufCIntRange pcmd_report__cell_global_id_eutra__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__cell_global_id_eutra__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.CellGlobalIdEUTRA", + "CellGlobalIdEUTRA", + "PcmdReport__CellGlobalIdEUTRA", + "", + sizeof(PcmdReport__CellGlobalIdEUTRA), + 2, + pcmd_report__cell_global_id_eutra__field_descriptors, + pcmd_report__cell_global_id_eutra__field_indices_by_name, + 1, pcmd_report__cell_global_id_eutra__number_ranges, + (ProtobufCMessageInit) pcmd_report__cell_global_id_eutra__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__global_gnb_id__field_descriptors[2] = +{ + { + "plmn_identity", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__GlobalGnbId, plmn_identity), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "gnb_id", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__GlobalGnbId, gnb_id), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__global_gnb_id__field_indices_by_name[] = { + 1, /* field[1] = gnb_id */ + 0, /* field[0] = plmn_identity */ +}; +static const ProtobufCIntRange pcmd_report__global_gnb_id__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__global_gnb_id__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.GlobalGnbId", + "GlobalGnbId", + "PcmdReport__GlobalGnbId", + "", + sizeof(PcmdReport__GlobalGnbId), + 2, + pcmd_report__global_gnb_id__field_descriptors, + pcmd_report__global_gnb_id__field_indices_by_name, + 1, pcmd_report__global_gnb_id__number_ranges, + (ProtobufCMessageInit) pcmd_report__global_gnb_id__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__avg_wb_cqi__field_descriptors[2] = +{ + { + "sumOfWbCqi", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgWbCqi, sumofwbcqi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfWbCqiSamples", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgWbCqi, numofwbcqisamples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__avg_wb_cqi__field_indices_by_name[] = { + 1, /* field[1] = numOfWbCqiSamples */ + 0, /* field[0] = sumOfWbCqi */ +}; +static const ProtobufCIntRange pcmd_report__avg_wb_cqi__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__avg_wb_cqi__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.AvgWbCqi", + "AvgWbCqi", + "PcmdReport__AvgWbCqi", + "", + sizeof(PcmdReport__AvgWbCqi), + 2, + pcmd_report__avg_wb_cqi__field_descriptors, + pcmd_report__avg_wb_cqi__field_indices_by_name, + 1, pcmd_report__avg_wb_cqi__number_ranges, + (ProtobufCMessageInit) pcmd_report__avg_wb_cqi__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__avg_sinr__field_descriptors[2] = +{ + { + "sumOfSinrSamples", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgSINR, sumofsinrsamples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfSinrSamples", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgSINR, numofsinrsamples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__avg_sinr__field_indices_by_name[] = { + 1, /* field[1] = numOfSinrSamples */ + 0, /* field[0] = sumOfSinrSamples */ +}; +static const ProtobufCIntRange pcmd_report__avg_sinr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__avg_sinr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.AvgSINR", + "AvgSINR", + "PcmdReport__AvgSINR", + "", + sizeof(PcmdReport__AvgSINR), + 2, + pcmd_report__avg_sinr__field_descriptors, + pcmd_report__avg_sinr__field_indices_by_name, + 1, pcmd_report__avg_sinr__number_ranges, + (ProtobufCMessageInit) pcmd_report__avg_sinr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__avg_phr__field_descriptors[2] = +{ + { + "sumOfNormalizedPhrSamples", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgPhr, sumofnormalizedphrsamples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "numOfPhrSamples", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__AvgPhr, numofphrsamples), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__avg_phr__field_indices_by_name[] = { + 1, /* field[1] = numOfPhrSamples */ + 0, /* field[0] = sumOfNormalizedPhrSamples */ +}; +static const ProtobufCIntRange pcmd_report__avg_phr__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 2 } +}; +const ProtobufCMessageDescriptor pcmd_report__avg_phr__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.AvgPhr", + "AvgPhr", + "PcmdReport__AvgPhr", + "", + sizeof(PcmdReport__AvgPhr), + 2, + pcmd_report__avg_phr__field_descriptors, + pcmd_report__avg_phr__field_indices_by_name, + 1, pcmd_report__avg_phr__number_ranges, + (ProtobufCMessageInit) pcmd_report__avg_phr__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__nullable_sint32__field_descriptors[1] = +{ + { + "value", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_INT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__NullableSint32, value), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__nullable_sint32__field_indices_by_name[] = { + 0, /* field[0] = value */ +}; +static const ProtobufCIntRange pcmd_report__nullable_sint32__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__nullable_sint32__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.NullableSint32", + "NullableSint32", + "PcmdReport__NullableSint32", + "", + sizeof(PcmdReport__NullableSint32), + 1, + pcmd_report__nullable_sint32__field_descriptors, + pcmd_report__nullable_sint32__field_indices_by_name, + 1, pcmd_report__nullable_sint32__number_ranges, + (ProtobufCMessageInit) pcmd_report__nullable_sint32__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__nullable_uint32__field_descriptors[1] = +{ + { + "value", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport__NullableUint32, value), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__nullable_uint32__field_indices_by_name[] = { + 0, /* field[0] = value */ +}; +static const ProtobufCIntRange pcmd_report__nullable_uint32__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__nullable_uint32__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.NullableUint32", + "NullableUint32", + "PcmdReport__NullableUint32", + "", + sizeof(PcmdReport__NullableUint32), + 1, + pcmd_report__nullable_uint32__field_descriptors, + pcmd_report__nullable_uint32__field_indices_by_name, + 1, pcmd_report__nullable_uint32__number_ranges, + (ProtobufCMessageInit) pcmd_report__nullable_uint32__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__nullable_uint64__field_descriptors[1] = +{ + { + "value", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT64, + 0, /* quantifier_offset */ + offsetof(PcmdReport__NullableUint64, value), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__nullable_uint64__field_indices_by_name[] = { + 0, /* field[0] = value */ +}; +static const ProtobufCIntRange pcmd_report__nullable_uint64__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 1 } +}; +const ProtobufCMessageDescriptor pcmd_report__nullable_uint64__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport.NullableUint64", + "NullableUint64", + "PcmdReport__NullableUint64", + "", + sizeof(PcmdReport__NullableUint64), + 1, + pcmd_report__nullable_uint64__field_descriptors, + pcmd_report__nullable_uint64__field_indices_by_name, + 1, pcmd_report__nullable_uint64__number_ranges, + (ProtobufCMessageInit) pcmd_report__nullable_uint64__init, + NULL,NULL,NULL /* reserved[123] */ +}; +static const ProtobufCEnumValue pcmd_report__direction__enum_values_by_number[3] = +{ + { "UL", "PCMD_REPORT__DIRECTION__UL", 0 }, + { "DL", "PCMD_REPORT__DIRECTION__DL", 1 }, + { "NONE", "PCMD_REPORT__DIRECTION__NONE", 2 }, +}; +static const ProtobufCIntRange pcmd_report__direction__value_ranges[] = { +{0, 0},{0, 3} +}; +static const ProtobufCEnumValueIndex pcmd_report__direction__enum_values_by_name[3] = +{ + { "DL", 1 }, + { "NONE", 2 }, + { "UL", 0 }, +}; +const ProtobufCEnumDescriptor pcmd_report__direction__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "PcmdReport.Direction", + "Direction", + "PcmdReport__Direction", + "", + 3, + pcmd_report__direction__enum_values_by_number, + 3, + pcmd_report__direction__enum_values_by_name, + 1, + pcmd_report__direction__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCEnumValue pcmd_report__sg_nbtrace_record_type__enum_values_by_number[5] = +{ + { "SGNB_ADDITION", "PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_ADDITION", 0 }, + { "MENB_INITIATED_SGNB_MODIFICATION", "PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__MENB_INITIATED_SGNB_MODIFICATION", 1 }, + { "SGNB_INITIATED_SGNB_MODIFICATION", "PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_INITIATED_SGNB_MODIFICATION", 2 }, + { "MENB_INITIATED_SGNB_RELEASE", "PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__MENB_INITIATED_SGNB_RELEASE", 3 }, + { "SGNB_INITIATED_SGNB_RELEASE", "PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_INITIATED_SGNB_RELEASE", 4 }, +}; +static const ProtobufCIntRange pcmd_report__sg_nbtrace_record_type__value_ranges[] = { +{0, 0},{0, 5} +}; +static const ProtobufCEnumValueIndex pcmd_report__sg_nbtrace_record_type__enum_values_by_name[5] = +{ + { "MENB_INITIATED_SGNB_MODIFICATION", 1 }, + { "MENB_INITIATED_SGNB_RELEASE", 3 }, + { "SGNB_ADDITION", 0 }, + { "SGNB_INITIATED_SGNB_MODIFICATION", 2 }, + { "SGNB_INITIATED_SGNB_RELEASE", 4 }, +}; +const ProtobufCEnumDescriptor pcmd_report__sg_nbtrace_record_type__descriptor = +{ + PROTOBUF_C__ENUM_DESCRIPTOR_MAGIC, + "PcmdReport.SgNBTraceRecordType", + "SgNBTraceRecordType", + "PcmdReport__SgNBTraceRecordType", + "", + 5, + pcmd_report__sg_nbtrace_record_type__enum_values_by_number, + 5, + pcmd_report__sg_nbtrace_record_type__enum_values_by_name, + 1, + pcmd_report__sg_nbtrace_record_type__value_ranges, + NULL,NULL,NULL,NULL /* reserved[1234] */ +}; +static const ProtobufCFieldDescriptor pcmd_report__field_descriptors[18] = +{ + { + "ReportVersion", + 1, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport, reportversion), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "SeqNum", + 2, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_UINT32, + 0, /* quantifier_offset */ + offsetof(PcmdReport, seqnum), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "direction", + 5, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_ENUM, + 0, /* quantifier_offset */ + offsetof(PcmdReport, direction), + &pcmd_report__direction__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "startSession", + 6, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, startsession), + &pcmd_report__start_recording_session__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "stopSession", + 7, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, stopsession), + &pcmd_report__stop_recording_session__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "sessionInfo", + 9, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, sessioninfo), + &pcmd_report__session_info__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ulRbRlcThroughputRecord", + 17, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, ulrbrlcthroughputrecord), + &pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dlRbRlcThroughputRecord", + 18, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, dlrbrlcthroughputrecord), + &pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dlRbPdcpThroughputRecord", + 19, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, dlrbpdcpthroughputrecord), + &pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caRlcThroughputRecord", + 20, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, carlcthroughputrecord), + &pcmd_report__tp_ca_rlc_throughput_trace__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ulSchedulingRecord", + 22, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, ulschedulingrecord), + &pcmd_report__tp_ul_scheduling_trace_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dlSchedulingRecord", + 23, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, dlschedulingrecord), + &pcmd_report__tp_dl_scheduling_trace_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ueMeasTraceRecord", + 29, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, uemeastracerecord), + &pcmd_report__tp_ue_meas_trace_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "caConfigurationRecord", + 39, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, caconfigurationrecord), + &pcmd_report__tp_ca_configuration_trace_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dlCaSCellSchedulingRecord", + 41, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, dlcascellschedulingrecord), + &pcmd_report__tp_dl_ca_scell_scheduling_trace_record__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "SgNBTraceRecord", + 42, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, sgnbtracerecord), + &pcmd_report__sg_nbtrace_record_list__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "ulUeThroughputMeasurementsRecord", + 110, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, uluethroughputmeasurementsrecord), + &pcmd_report__tp_ul_ue_throughput_measurements__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "dlUeThroughputMeasurementsRecord", + 111, + PROTOBUF_C_LABEL_NONE, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(PcmdReport, dluethroughputmeasurementsrecord), + &pcmd_report__tp_dl_ue_throughput_measurements__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned pcmd_report__field_indices_by_name[] = { + 0, /* field[0] = ReportVersion */ + 1, /* field[1] = SeqNum */ + 15, /* field[15] = SgNBTraceRecord */ + 13, /* field[13] = caConfigurationRecord */ + 9, /* field[9] = caRlcThroughputRecord */ + 2, /* field[2] = direction */ + 14, /* field[14] = dlCaSCellSchedulingRecord */ + 8, /* field[8] = dlRbPdcpThroughputRecord */ + 7, /* field[7] = dlRbRlcThroughputRecord */ + 11, /* field[11] = dlSchedulingRecord */ + 17, /* field[17] = dlUeThroughputMeasurementsRecord */ + 5, /* field[5] = sessionInfo */ + 3, /* field[3] = startSession */ + 4, /* field[4] = stopSession */ + 12, /* field[12] = ueMeasTraceRecord */ + 6, /* field[6] = ulRbRlcThroughputRecord */ + 10, /* field[10] = ulSchedulingRecord */ + 16, /* field[16] = ulUeThroughputMeasurementsRecord */ +}; +static const ProtobufCIntRange pcmd_report__number_ranges[9 + 1] = +{ + { 1, 0 }, + { 5, 2 }, + { 9, 5 }, + { 17, 6 }, + { 22, 10 }, + { 29, 12 }, + { 39, 13 }, + { 41, 14 }, + { 110, 16 }, + { 0, 18 } +}; +const ProtobufCMessageDescriptor pcmd_report__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "PcmdReport", + "PcmdReport", + "PcmdReport", + "", + sizeof(PcmdReport), + 18, + pcmd_report__field_descriptors, + pcmd_report__field_indices_by_name, + 9, pcmd_report__number_ranges, + (ProtobufCMessageInit) pcmd_report__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.h b/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.h new file mode 100644 index 0000000..b9ea945 --- /dev/null +++ b/mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.h @@ -0,0 +1,866 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ricgeomessages_pcmdreport.proto */ + +#ifndef PROTOBUF_C_ricgeomessages_5fpcmdreport_2eproto__INCLUDED +#define PROTOBUF_C_ricgeomessages_5fpcmdreport_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003002 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _PcmdReport PcmdReport; +typedef struct _PcmdReport__TpUlRadioBearerRlcThroughputRecord PcmdReport__TpUlRadioBearerRlcThroughputRecord; +typedef struct _PcmdReport__TpDlRadioBearerRlcThroughputRecord PcmdReport__TpDlRadioBearerRlcThroughputRecord; +typedef struct _PcmdReport__TpDlRadioBearerPdcpThroughputRecord PcmdReport__TpDlRadioBearerPdcpThroughputRecord; +typedef struct _PcmdReport__StartRecordingSession PcmdReport__StartRecordingSession; +typedef struct _PcmdReport__StopRecordingSession PcmdReport__StopRecordingSession; +typedef struct _PcmdReport__SessionInfo PcmdReport__SessionInfo; +typedef struct _PcmdReport__TpCaRlcThroughputTrace PcmdReport__TpCaRlcThroughputTrace; +typedef struct _PcmdReport__TpDlRadioBearerPdcpThroughputData PcmdReport__TpDlRadioBearerPdcpThroughputData; +typedef struct _PcmdReport__TpUlRadioBearerRlcThroughputData PcmdReport__TpUlRadioBearerRlcThroughputData; +typedef struct _PcmdReport__TpDlRadioBearerRlcThroughputData PcmdReport__TpDlRadioBearerRlcThroughputData; +typedef struct _PcmdReport__TpCaConfigurationTraceRecord PcmdReport__TpCaConfigurationTraceRecord; +typedef struct _PcmdReport__TpSCellConfigured PcmdReport__TpSCellConfigured; +typedef struct _PcmdReport__TpSCellDeconfigured PcmdReport__TpSCellDeconfigured; +typedef struct _PcmdReport__TpUlSchedulingTraceRecord PcmdReport__TpUlSchedulingTraceRecord; +typedef struct _PcmdReport__TpDlSchedulingTraceRecord PcmdReport__TpDlSchedulingTraceRecord; +typedef struct _PcmdReport__TpUeMeasTraceRecord PcmdReport__TpUeMeasTraceRecord; +typedef struct _PcmdReport__TpMeasResultPCell PcmdReport__TpMeasResultPCell; +typedef struct _PcmdReport__TpMeasResultEUTRA PcmdReport__TpMeasResultEUTRA; +typedef struct _PcmdReport__TpDlCaSCellSchedulingTraceRecord PcmdReport__TpDlCaSCellSchedulingTraceRecord; +typedef struct _PcmdReport__SgNBTraceRecordList PcmdReport__SgNBTraceRecordList; +typedef struct _PcmdReport__TpUlUeThroughputMeasurements PcmdReport__TpUlUeThroughputMeasurements; +typedef struct _PcmdReport__TpDlUeThroughputMeasurements PcmdReport__TpDlUeThroughputMeasurements; +typedef struct _PcmdReport__CellGlobalIdEUTRA PcmdReport__CellGlobalIdEUTRA; +typedef struct _PcmdReport__GlobalGnbId PcmdReport__GlobalGnbId; +typedef struct _PcmdReport__AvgWbCqi PcmdReport__AvgWbCqi; +typedef struct _PcmdReport__AvgSINR PcmdReport__AvgSINR; +typedef struct _PcmdReport__AvgPhr PcmdReport__AvgPhr; +typedef struct _PcmdReport__NullableSint32 PcmdReport__NullableSint32; +typedef struct _PcmdReport__NullableUint32 PcmdReport__NullableUint32; +typedef struct _PcmdReport__NullableUint64 PcmdReport__NullableUint64; + + +/* --- enums --- */ + +typedef enum _PcmdReport__Direction { + PCMD_REPORT__DIRECTION__UL = 0, + PCMD_REPORT__DIRECTION__DL = 1, + PCMD_REPORT__DIRECTION__NONE = 2 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PCMD_REPORT__DIRECTION) +} PcmdReport__Direction; +typedef enum _PcmdReport__SgNBTraceRecordType { + /* + * SgNBAdditionTraceRecord + */ + PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_ADDITION = 0, + /* + * MeNBInitiatedSgNBModificationTraceRecord + */ + PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__MENB_INITIATED_SGNB_MODIFICATION = 1, + /* + * SgNBInitiatedSgNBModificationTraceRecord + */ + PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_INITIATED_SGNB_MODIFICATION = 2, + /* + * MeNBInitiatedSgNBReleaseTraceRecord + */ + PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__MENB_INITIATED_SGNB_RELEASE = 3, + /* + * SgNBInitiatedSgNBReleaseTraceRecord + */ + PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_INITIATED_SGNB_RELEASE = 4 + PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(PCMD_REPORT__SG_NBTRACE_RECORD_TYPE) +} PcmdReport__SgNBTraceRecordType; + +/* --- messages --- */ + +/* + * start of report records + */ +struct _PcmdReport__TpUlRadioBearerRlcThroughputRecord +{ + ProtobufCMessage base; + size_t n_ulrbrlcthroughputlist; + PcmdReport__TpUlRadioBearerRlcThroughputData **ulrbrlcthroughputlist; +}; +#define PCMD_REPORT__TP_UL_RADIO_BEARER_RLC_THROUGHPUT_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__descriptor) \ + , 0,NULL } + + +struct _PcmdReport__TpDlRadioBearerRlcThroughputRecord +{ + ProtobufCMessage base; + size_t n_dlrbrlcthroughputlist; + PcmdReport__TpDlRadioBearerRlcThroughputData **dlrbrlcthroughputlist; +}; +#define PCMD_REPORT__TP_DL_RADIO_BEARER_RLC_THROUGHPUT_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__descriptor) \ + , 0,NULL } + + +struct _PcmdReport__TpDlRadioBearerPdcpThroughputRecord +{ + ProtobufCMessage base; + size_t n_dlradiobearerpdcpthroughputlist; + PcmdReport__TpDlRadioBearerPdcpThroughputData **dlradiobearerpdcpthroughputlist; +}; +#define PCMD_REPORT__TP_DL_RADIO_BEARER_PDCP_THROUGHPUT_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__descriptor) \ + , 0,NULL } + + +struct _PcmdReport__StartRecordingSession +{ + ProtobufCMessage base; + uint64_t timestamp; +}; +#define PCMD_REPORT__START_RECORDING_SESSION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__start_recording_session__descriptor) \ + , 0 } + + +struct _PcmdReport__StopRecordingSession +{ + ProtobufCMessage base; + uint64_t timestamp; +}; +#define PCMD_REPORT__STOP_RECORDING_SESSION__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__stop_recording_session__descriptor) \ + , 0 } + + +struct _PcmdReport__SessionInfo +{ + ProtobufCMessage base; + uint64_t timestamp; + uint64_t licenseinfo; + ProtobufCBinaryData enbipaddress; + /* + * PLMN for GUMMEI + */ + uint32_t plmn; + /* + * MMEGI for GUMMEI + */ + uint32_t mmegi; + /* + * MMEC for GUMMEI + */ + uint32_t mmec; + uint64_t imsi; + uint64_t imei; + /* + * no V3 licence + */ + uint32_t nolicenseinfo; + PcmdReport__NullableUint64 *licenseinfov5; + PcmdReport__NullableUint32 *enbues1apid; + PcmdReport__NullableUint32 *mmeues1apid; + PcmdReport__NullableUint32 *s1apcause; +}; +#define PCMD_REPORT__SESSION_INFO__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__session_info__descriptor) \ + , 0, 0, {0,NULL}, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL } + + +struct _PcmdReport__TpCaRlcThroughputTrace +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t recordcollectionduration; + uint64_t caactivationrlctxbytes2cc; + uint64_t caactivationrlctxbytes3cc; + uint64_t caactivationrlctxbytes4cc; + uint64_t caactivationrlcretxbytes2cc; + uint64_t caactivationrlcretxbytes3cc; + uint64_t caactivationrlcretxbytes4cc; + PcmdReport__NullableUint64 *caactivationrlctxbytes5cc; + PcmdReport__NullableUint64 *caactivationrlcretxbytes5cc; + PcmdReport__NullableUint64 *caactivationrlctxbytes6cc; + PcmdReport__NullableUint64 *caactivationrlcretxbytes6cc; + PcmdReport__NullableUint64 *caactivationrlctxbytes7cc; + PcmdReport__NullableUint64 *caactivationrlcretxbytes7cc; +}; +#define PCMD_REPORT__TP_CA_RLC_THROUGHPUT_TRACE__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ca_rlc_throughput_trace__descriptor) \ + , 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL } + + +struct _PcmdReport__TpDlRadioBearerPdcpThroughputData +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t drb_id; + uint32_t datacollectionduration; + uint64_t numofpdcppdurcvdfortx; + uint64_t numofpdcppdudiscarded; +}; +#define PCMD_REPORT__TP_DL_RADIO_BEARER_PDCP_THROUGHPUT_DATA__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__descriptor) \ + , 0, 0, 0, 0, 0 } + + +struct _PcmdReport__TpUlRadioBearerRlcThroughputData +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t drb_id; + uint32_t datacollectionduration; + uint32_t numofttiuepdurcvd; + uint64_t sumofrlcpdutxbytes; + uint64_t sumofrlcsdutxbytes; + /* + * TpRadioBearerResidualBlerData + */ + PcmdReport__NullableUint32 *numofbadrlcpdutx; + PcmdReport__NullableUint32 *numofrlcpdutx; + /* + * TpUlRadioBearerDelayHistogram + */ + PcmdReport__NullableUint32 *numofpacketsgap1; + PcmdReport__NullableUint32 *numofpacketsgap2; + PcmdReport__NullableUint32 *numofpacketsgap3; + PcmdReport__NullableUint32 *numofpacketsgap4; +}; +#define PCMD_REPORT__TP_UL_RADIO_BEARER_RLC_THROUGHPUT_DATA__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__descriptor) \ + , 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL } + + +struct _PcmdReport__TpDlRadioBearerRlcThroughputData +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t drb_id; + uint32_t datacollectionduration; + uint64_t sumof1strlcpdutxbytes; + uint64_t sumofrlcretxbytes; + uint32_t numofttirlctx; + /* + * TpDlRadioBearerDelayHistogram + */ + PcmdReport__NullableUint32 *numofpacketsgap1; + PcmdReport__NullableUint32 *numofpacketsgap2; + PcmdReport__NullableUint32 *numofpacketsgap3; + PcmdReport__NullableUint32 *numofpacketsgap4; +}; +#define PCMD_REPORT__TP_DL_RADIO_BEARER_RLC_THROUGHPUT_DATA__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__descriptor) \ + , 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL } + + +struct _PcmdReport__TpCaConfigurationTraceRecord +{ + ProtobufCMessage base; + size_t n_scellsconfiguredlist; + PcmdReport__TpSCellConfigured **scellsconfiguredlist; + size_t n_scellsdeconfiguredlist; + PcmdReport__TpSCellDeconfigured **scellsdeconfiguredlist; +}; +#define PCMD_REPORT__TP_CA_CONFIGURATION_TRACE_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ca_configuration_trace_record__descriptor) \ + , 0,NULL, 0,NULL } + + +struct _PcmdReport__TpSCellConfigured +{ + ProtobufCMessage base; + uint32_t scellindex; + uint64_t eci; + PcmdReport__CellGlobalIdEUTRA *ecgi; +}; +#define PCMD_REPORT__TP_SCELL_CONFIGURED__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_scell_configured__descriptor) \ + , 0, 0, NULL } + + +struct _PcmdReport__TpSCellDeconfigured +{ + ProtobufCMessage base; + uint32_t scellindex; + uint64_t eci; + PcmdReport__CellGlobalIdEUTRA *ecgi; + uint32_t cause; +}; +#define PCMD_REPORT__TP_SCELL_DECONFIGURED__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_scell_deconfigured__descriptor) \ + , 0, 0, NULL, 0 } + + +struct _PcmdReport__TpUlSchedulingTraceRecord +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t recordcollectionduration; + uint32_t numofttiuesched; + uint64_t numofprbused; + uint32_t numofharq1sttx; + uint32_t numofharqretx; + uint32_t numofbad1stmacpdutx; + uint32_t numofbadlastmacpdutx; + PcmdReport__AvgSINR *avgsinr; + PcmdReport__AvgPhr *avgphr; +}; +#define PCMD_REPORT__TP_UL_SCHEDULING_TRACE_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ul_scheduling_trace_record__descriptor) \ + , 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL } + + +struct _PcmdReport__TpDlSchedulingTraceRecord +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t recordcollectionduration; + uint32_t numofttiuesched; + uint64_t numofprbused; + uint32_t numofharq1sttx; + PcmdReport__AvgWbCqi *avgcodeword0mimowbcqi; + PcmdReport__AvgWbCqi *avgcodeword1mimowbcqi; + PcmdReport__AvgWbCqi *avgcodeword0nonmimowbcqi; + PcmdReport__AvgSINR *avgsinrnonabs; + PcmdReport__AvgSINR *avgsinrabs; + PcmdReport__NullableUint32 *numofttiueschedmimo; + PcmdReport__NullableUint32 *numofttiindrxoff; + PcmdReport__NullableUint32 *numofttiueschedabs; + PcmdReport__NullableUint32 *numofharqretx; + PcmdReport__NullableUint32 *numofbad1stmacpdutx; + PcmdReport__NullableUint32 *numofbadlastmacpdutx; +}; +#define PCMD_REPORT__TP_DL_SCHEDULING_TRACE_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_scheduling_trace_record__descriptor) \ + , 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } + + +struct _PcmdReport__TpUeMeasTraceRecord +{ + ProtobufCMessage base; + PcmdReport__NullableUint32 *dl_carrierfreq; + /* + * typedef EXTENSIBLE_ENUMERATED TpMeasTriggerTypeEUTRA; + */ + uint32_t triggertype; + /* + * typedef EXTENSIBLE_ENUMERATED TpMeasPurposeEUTRA; + */ + uint32_t purpose; + PcmdReport__TpMeasResultPCell *measresultpcell; + size_t n_measresultneighcellseutralist; + PcmdReport__TpMeasResultEUTRA **measresultneighcellseutralist; +}; +#define PCMD_REPORT__TP_UE_MEAS_TRACE_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ue_meas_trace_record__descriptor) \ + , NULL, 0, 0, NULL, 0,NULL } + + +struct _PcmdReport__TpMeasResultPCell +{ + ProtobufCMessage base; + uint32_t pci; + uint32_t rsrp; + int32_t rsrq; +}; +#define PCMD_REPORT__TP_MEAS_RESULT_PCELL__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_meas_result_pcell__descriptor) \ + , 0, 0, 0 } + + +struct _PcmdReport__TpMeasResultEUTRA +{ + ProtobufCMessage base; + uint32_t pci; + PcmdReport__NullableUint32 *rsrp; + PcmdReport__NullableSint32 *rsrq; + PcmdReport__CellGlobalIdEUTRA *cellid; +}; +#define PCMD_REPORT__TP_MEAS_RESULT_EUTRA__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_meas_result_eutra__descriptor) \ + , 0, NULL, NULL, NULL } + + +struct _PcmdReport__TpDlCaSCellSchedulingTraceRecord +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint64_t eci; + PcmdReport__CellGlobalIdEUTRA *ecgi; + uint32_t recordcollectionduration; + uint32_t numofttiuesched; + uint32_t numofttiueschedmimo; + uint64_t numofprbused; + uint32_t numofharq1sttx; + uint32_t numofharqretx; + uint32_t numofbad1stmacpdutx; + uint32_t numofbadlastmacpdutx; + PcmdReport__AvgWbCqi *avgcodeword0mimowbcqi; + PcmdReport__AvgWbCqi *avgcodeword1mimowbcqi; + PcmdReport__AvgWbCqi *avgcodeword0nonmimowbcqi; +}; +#define PCMD_REPORT__TP_DL_CA_SCELL_SCHEDULING_TRACE_RECORD__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_ca_scell_scheduling_trace_record__descriptor) \ + , 0, 0, NULL, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } + + +struct _PcmdReport__SgNBTraceRecordList +{ + ProtobufCMessage base; + PcmdReport__SgNBTraceRecordType endcrecordtype; + PcmdReport__GlobalGnbId *globalgnbid; + /* + * MeNB UE X2AP ID (0..4095) + */ + uint32_t menbuex2apid; + /* + * MeNB UE X2AP ID extension + */ + PcmdReport__NullableUint32 *menbuex2apidext; + /* + * SgNB UE X2AP ID + */ + PcmdReport__NullableUint32 *sgnbuex2apid; + /* + * Generic timestamp - milliseconds since epoch 1970-01-01 + */ + uint64_t timestamp; + /* + * Generic result - 0 (success) + */ + PcmdReport__NullableUint32 *result; +}; +#define PCMD_REPORT__SG_NBTRACE_RECORD_LIST__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__sg_nbtrace_record_list__descriptor) \ + , PCMD_REPORT__SG_NBTRACE_RECORD_TYPE__SGNB_ADDITION, NULL, 0, NULL, NULL, 0, NULL } + + +struct _PcmdReport__TpUlUeThroughputMeasurements +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t datacollectionduration; + uint64_t sumofreceivednongbrbytes; + uint64_t sumofreceivedgbrbytes; + uint32_t maxgbrdelay; + uint32_t numofreceivedtx; + uint32_t numofreceived1sttx; + uint32_t numoffailed1sttx; + uint32_t numoffailedlasttx; + uint32_t numofttipositiveulbuf; + uint32_t meanmcs; + int32_t meanpuschrssi; + int32_t meanpuschsinr; + int32_t meanphr; + int32_t meanpucchrssi; + uint32_t meanpdcchaggul; + uint32_t meanpdcchaggdl; +}; +#define PCMD_REPORT__TP_UL_UE_THROUGHPUT_MEASUREMENTS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_ul_ue_throughput_measurements__descriptor) \ + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + + +struct _PcmdReport__TpDlUeThroughputMeasurements +{ + ProtobufCMessage base; + protobuf_c_boolean endmarker; + uint32_t datacollectionduration; + uint64_t sumofsentnongbrbytes; + uint64_t sumofsentgbrbytes; + uint32_t maxgbrdelay; + uint32_t numofsinglecwtx; + uint32_t numofsinglecw1sttx; + uint32_t numofsinglecw1sttxfailed; + uint32_t numofsinglecwlasttxfailed; + uint32_t numofdualcwtx; + uint32_t numofdualcw1sttx; + uint32_t numofdualcw1sttxfailed; + uint32_t numofdualcwlasttxfailed; + uint32_t pdcchdtx; + uint32_t numofttipositivedlbuf; + uint32_t meandeltacqi; + uint32_t meanlawbcqi; +}; +#define PCMD_REPORT__TP_DL_UE_THROUGHPUT_MEASUREMENTS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__tp_dl_ue_throughput_measurements__descriptor) \ + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + + +struct _PcmdReport__CellGlobalIdEUTRA +{ + ProtobufCMessage base; + uint64_t plmn_identity; + uint64_t cell_identity; +}; +#define PCMD_REPORT__CELL_GLOBAL_ID_EUTRA__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__cell_global_id_eutra__descriptor) \ + , 0, 0 } + + +struct _PcmdReport__GlobalGnbId +{ + ProtobufCMessage base; + uint32_t plmn_identity; + uint32_t gnb_id; +}; +#define PCMD_REPORT__GLOBAL_GNB_ID__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__global_gnb_id__descriptor) \ + , 0, 0 } + + +struct _PcmdReport__AvgWbCqi +{ + ProtobufCMessage base; + uint32_t sumofwbcqi; + uint32_t numofwbcqisamples; +}; +#define PCMD_REPORT__AVG_WB_CQI__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__avg_wb_cqi__descriptor) \ + , 0, 0 } + + +struct _PcmdReport__AvgSINR +{ + ProtobufCMessage base; + uint64_t sumofsinrsamples; + uint32_t numofsinrsamples; +}; +#define PCMD_REPORT__AVG_SINR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__avg_sinr__descriptor) \ + , 0, 0 } + + +struct _PcmdReport__AvgPhr +{ + ProtobufCMessage base; + int32_t sumofnormalizedphrsamples; + uint32_t numofphrsamples; +}; +#define PCMD_REPORT__AVG_PHR__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__avg_phr__descriptor) \ + , 0, 0 } + + +struct _PcmdReport__NullableSint32 +{ + ProtobufCMessage base; + int32_t value; +}; +#define PCMD_REPORT__NULLABLE_SINT32__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__nullable_sint32__descriptor) \ + , 0 } + + +struct _PcmdReport__NullableUint32 +{ + ProtobufCMessage base; + uint32_t value; +}; +#define PCMD_REPORT__NULLABLE_UINT32__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__nullable_uint32__descriptor) \ + , 0 } + + +struct _PcmdReport__NullableUint64 +{ + ProtobufCMessage base; + uint64_t value; +}; +#define PCMD_REPORT__NULLABLE_UINT64__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__nullable_uint64__descriptor) \ + , 0 } + + +struct _PcmdReport +{ + ProtobufCMessage base; + uint32_t reportversion; + uint32_t seqnum; + PcmdReport__Direction direction; + PcmdReport__StartRecordingSession *startsession; + PcmdReport__StopRecordingSession *stopsession; + PcmdReport__SessionInfo *sessioninfo; + /* + * For PDCP uplink estimation + */ + PcmdReport__TpUlRadioBearerRlcThroughputRecord *ulrbrlcthroughputrecord; + PcmdReport__TpDlRadioBearerRlcThroughputRecord *dlrbrlcthroughputrecord; + /* + * For PDCP downlink + */ + PcmdReport__TpDlRadioBearerPdcpThroughputRecord *dlrbpdcpthroughputrecord; + PcmdReport__TpCaRlcThroughputTrace *carlcthroughputrecord; + /* + * PRB Usage + */ + PcmdReport__TpUlSchedulingTraceRecord *ulschedulingrecord; + PcmdReport__TpDlSchedulingTraceRecord *dlschedulingrecord; + PcmdReport__TpUeMeasTraceRecord *uemeastracerecord; + PcmdReport__TpCaConfigurationTraceRecord *caconfigurationrecord; + PcmdReport__TpDlCaSCellSchedulingTraceRecord *dlcascellschedulingrecord; + /* + * to get the gNB ID and details + */ + PcmdReport__SgNBTraceRecordList *sgnbtracerecord; + PcmdReport__TpUlUeThroughputMeasurements *uluethroughputmeasurementsrecord; + PcmdReport__TpDlUeThroughputMeasurements *dluethroughputmeasurementsrecord; +}; +#define PCMD_REPORT__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&pcmd_report__descriptor) \ + , 0, 0, PCMD_REPORT__DIRECTION__UL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } + + +/* PcmdReport__TpUlRadioBearerRlcThroughputRecord methods */ +void pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__init + (PcmdReport__TpUlRadioBearerRlcThroughputRecord *message); +/* PcmdReport__TpDlRadioBearerRlcThroughputRecord methods */ +void pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__init + (PcmdReport__TpDlRadioBearerRlcThroughputRecord *message); +/* PcmdReport__TpDlRadioBearerPdcpThroughputRecord methods */ +void pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__init + (PcmdReport__TpDlRadioBearerPdcpThroughputRecord *message); +/* PcmdReport__StartRecordingSession methods */ +void pcmd_report__start_recording_session__init + (PcmdReport__StartRecordingSession *message); +/* PcmdReport__StopRecordingSession methods */ +void pcmd_report__stop_recording_session__init + (PcmdReport__StopRecordingSession *message); +/* PcmdReport__SessionInfo methods */ +void pcmd_report__session_info__init + (PcmdReport__SessionInfo *message); +/* PcmdReport__TpCaRlcThroughputTrace methods */ +void pcmd_report__tp_ca_rlc_throughput_trace__init + (PcmdReport__TpCaRlcThroughputTrace *message); +/* PcmdReport__TpDlRadioBearerPdcpThroughputData methods */ +void pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__init + (PcmdReport__TpDlRadioBearerPdcpThroughputData *message); +/* PcmdReport__TpUlRadioBearerRlcThroughputData methods */ +void pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__init + (PcmdReport__TpUlRadioBearerRlcThroughputData *message); +/* PcmdReport__TpDlRadioBearerRlcThroughputData methods */ +void pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__init + (PcmdReport__TpDlRadioBearerRlcThroughputData *message); +/* PcmdReport__TpCaConfigurationTraceRecord methods */ +void pcmd_report__tp_ca_configuration_trace_record__init + (PcmdReport__TpCaConfigurationTraceRecord *message); +/* PcmdReport__TpSCellConfigured methods */ +void pcmd_report__tp_scell_configured__init + (PcmdReport__TpSCellConfigured *message); +/* PcmdReport__TpSCellDeconfigured methods */ +void pcmd_report__tp_scell_deconfigured__init + (PcmdReport__TpSCellDeconfigured *message); +/* PcmdReport__TpUlSchedulingTraceRecord methods */ +void pcmd_report__tp_ul_scheduling_trace_record__init + (PcmdReport__TpUlSchedulingTraceRecord *message); +/* PcmdReport__TpDlSchedulingTraceRecord methods */ +void pcmd_report__tp_dl_scheduling_trace_record__init + (PcmdReport__TpDlSchedulingTraceRecord *message); +/* PcmdReport__TpUeMeasTraceRecord methods */ +void pcmd_report__tp_ue_meas_trace_record__init + (PcmdReport__TpUeMeasTraceRecord *message); +/* PcmdReport__TpMeasResultPCell methods */ +void pcmd_report__tp_meas_result_pcell__init + (PcmdReport__TpMeasResultPCell *message); +/* PcmdReport__TpMeasResultEUTRA methods */ +void pcmd_report__tp_meas_result_eutra__init + (PcmdReport__TpMeasResultEUTRA *message); +/* PcmdReport__TpDlCaSCellSchedulingTraceRecord methods */ +void pcmd_report__tp_dl_ca_scell_scheduling_trace_record__init + (PcmdReport__TpDlCaSCellSchedulingTraceRecord *message); +/* PcmdReport__SgNBTraceRecordList methods */ +void pcmd_report__sg_nbtrace_record_list__init + (PcmdReport__SgNBTraceRecordList *message); +/* PcmdReport__TpUlUeThroughputMeasurements methods */ +void pcmd_report__tp_ul_ue_throughput_measurements__init + (PcmdReport__TpUlUeThroughputMeasurements *message); +/* PcmdReport__TpDlUeThroughputMeasurements methods */ +void pcmd_report__tp_dl_ue_throughput_measurements__init + (PcmdReport__TpDlUeThroughputMeasurements *message); +/* PcmdReport__CellGlobalIdEUTRA methods */ +void pcmd_report__cell_global_id_eutra__init + (PcmdReport__CellGlobalIdEUTRA *message); +/* PcmdReport__GlobalGnbId methods */ +void pcmd_report__global_gnb_id__init + (PcmdReport__GlobalGnbId *message); +/* PcmdReport__AvgWbCqi methods */ +void pcmd_report__avg_wb_cqi__init + (PcmdReport__AvgWbCqi *message); +/* PcmdReport__AvgSINR methods */ +void pcmd_report__avg_sinr__init + (PcmdReport__AvgSINR *message); +/* PcmdReport__AvgPhr methods */ +void pcmd_report__avg_phr__init + (PcmdReport__AvgPhr *message); +/* PcmdReport__NullableSint32 methods */ +void pcmd_report__nullable_sint32__init + (PcmdReport__NullableSint32 *message); +/* PcmdReport__NullableUint32 methods */ +void pcmd_report__nullable_uint32__init + (PcmdReport__NullableUint32 *message); +/* PcmdReport__NullableUint64 methods */ +void pcmd_report__nullable_uint64__init + (PcmdReport__NullableUint64 *message); +/* PcmdReport methods */ +void pcmd_report__init + (PcmdReport *message); +size_t pcmd_report__get_packed_size + (const PcmdReport *message); +size_t pcmd_report__pack + (const PcmdReport *message, + uint8_t *out); +size_t pcmd_report__pack_to_buffer + (const PcmdReport *message, + ProtobufCBuffer *buffer); +PcmdReport * + pcmd_report__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void pcmd_report__free_unpacked + (PcmdReport *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*PcmdReport__TpUlRadioBearerRlcThroughputRecord_Closure) + (const PcmdReport__TpUlRadioBearerRlcThroughputRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpDlRadioBearerRlcThroughputRecord_Closure) + (const PcmdReport__TpDlRadioBearerRlcThroughputRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpDlRadioBearerPdcpThroughputRecord_Closure) + (const PcmdReport__TpDlRadioBearerPdcpThroughputRecord *message, + void *closure_data); +typedef void (*PcmdReport__StartRecordingSession_Closure) + (const PcmdReport__StartRecordingSession *message, + void *closure_data); +typedef void (*PcmdReport__StopRecordingSession_Closure) + (const PcmdReport__StopRecordingSession *message, + void *closure_data); +typedef void (*PcmdReport__SessionInfo_Closure) + (const PcmdReport__SessionInfo *message, + void *closure_data); +typedef void (*PcmdReport__TpCaRlcThroughputTrace_Closure) + (const PcmdReport__TpCaRlcThroughputTrace *message, + void *closure_data); +typedef void (*PcmdReport__TpDlRadioBearerPdcpThroughputData_Closure) + (const PcmdReport__TpDlRadioBearerPdcpThroughputData *message, + void *closure_data); +typedef void (*PcmdReport__TpUlRadioBearerRlcThroughputData_Closure) + (const PcmdReport__TpUlRadioBearerRlcThroughputData *message, + void *closure_data); +typedef void (*PcmdReport__TpDlRadioBearerRlcThroughputData_Closure) + (const PcmdReport__TpDlRadioBearerRlcThroughputData *message, + void *closure_data); +typedef void (*PcmdReport__TpCaConfigurationTraceRecord_Closure) + (const PcmdReport__TpCaConfigurationTraceRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpSCellConfigured_Closure) + (const PcmdReport__TpSCellConfigured *message, + void *closure_data); +typedef void (*PcmdReport__TpSCellDeconfigured_Closure) + (const PcmdReport__TpSCellDeconfigured *message, + void *closure_data); +typedef void (*PcmdReport__TpUlSchedulingTraceRecord_Closure) + (const PcmdReport__TpUlSchedulingTraceRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpDlSchedulingTraceRecord_Closure) + (const PcmdReport__TpDlSchedulingTraceRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpUeMeasTraceRecord_Closure) + (const PcmdReport__TpUeMeasTraceRecord *message, + void *closure_data); +typedef void (*PcmdReport__TpMeasResultPCell_Closure) + (const PcmdReport__TpMeasResultPCell *message, + void *closure_data); +typedef void (*PcmdReport__TpMeasResultEUTRA_Closure) + (const PcmdReport__TpMeasResultEUTRA *message, + void *closure_data); +typedef void (*PcmdReport__TpDlCaSCellSchedulingTraceRecord_Closure) + (const PcmdReport__TpDlCaSCellSchedulingTraceRecord *message, + void *closure_data); +typedef void (*PcmdReport__SgNBTraceRecordList_Closure) + (const PcmdReport__SgNBTraceRecordList *message, + void *closure_data); +typedef void (*PcmdReport__TpUlUeThroughputMeasurements_Closure) + (const PcmdReport__TpUlUeThroughputMeasurements *message, + void *closure_data); +typedef void (*PcmdReport__TpDlUeThroughputMeasurements_Closure) + (const PcmdReport__TpDlUeThroughputMeasurements *message, + void *closure_data); +typedef void (*PcmdReport__CellGlobalIdEUTRA_Closure) + (const PcmdReport__CellGlobalIdEUTRA *message, + void *closure_data); +typedef void (*PcmdReport__GlobalGnbId_Closure) + (const PcmdReport__GlobalGnbId *message, + void *closure_data); +typedef void (*PcmdReport__AvgWbCqi_Closure) + (const PcmdReport__AvgWbCqi *message, + void *closure_data); +typedef void (*PcmdReport__AvgSINR_Closure) + (const PcmdReport__AvgSINR *message, + void *closure_data); +typedef void (*PcmdReport__AvgPhr_Closure) + (const PcmdReport__AvgPhr *message, + void *closure_data); +typedef void (*PcmdReport__NullableSint32_Closure) + (const PcmdReport__NullableSint32 *message, + void *closure_data); +typedef void (*PcmdReport__NullableUint32_Closure) + (const PcmdReport__NullableUint32 *message, + void *closure_data); +typedef void (*PcmdReport__NullableUint64_Closure) + (const PcmdReport__NullableUint64 *message, + void *closure_data); +typedef void (*PcmdReport_Closure) + (const PcmdReport *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor pcmd_report__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__start_recording_session__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__stop_recording_session__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__session_info__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ca_rlc_throughput_trace__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_pdcp_throughput_data__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ul_radio_bearer_rlc_throughput_data__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_radio_bearer_rlc_throughput_data__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ca_configuration_trace_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_scell_configured__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_scell_deconfigured__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ul_scheduling_trace_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_scheduling_trace_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ue_meas_trace_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_meas_result_pcell__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_meas_result_eutra__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_ca_scell_scheduling_trace_record__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__sg_nbtrace_record_list__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_ul_ue_throughput_measurements__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__tp_dl_ue_throughput_measurements__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__cell_global_id_eutra__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__global_gnb_id__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__avg_wb_cqi__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__avg_sinr__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__avg_phr__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__nullable_sint32__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__nullable_uint32__descriptor; +extern const ProtobufCMessageDescriptor pcmd_report__nullable_uint64__descriptor; +extern const ProtobufCEnumDescriptor pcmd_report__direction__descriptor; +extern const ProtobufCEnumDescriptor pcmd_report__sg_nbtrace_record_type__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_ricgeomessages_5fpcmdreport_2eproto__INCLUDED */ diff --git a/mc-core/mc/local_datasource/rts_proto.c b/mc-core/mc/local_datasource/rts_proto.c index d10db07..02f98f5 100644 --- a/mc-core/mc/local_datasource/rts_proto.c +++ b/mc-core/mc/local_datasource/rts_proto.c @@ -29,6 +29,7 @@ #include #include #include +#include #include "errno.h" #include "gsconfig.h" @@ -50,14 +51,14 @@ gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; / #define MAXLINE 1000000 -static FILE *pd; -static int listensockfd=-1; static int fd=-1; +struct pollfd pfd; static struct packet cur_packet; static gs_sp_t name, this_device; static gs_uint32_t verbose=0; static gs_uint32_t startupdelay=0; static gs_uint32_t singlefile=0; +static gs_uint32_t fifo=0; static gs_uint32_t gshub=0; static int socket_desc=0; @@ -69,6 +70,12 @@ static unsigned long long timestamp; // extract from input header #include "x2ap_streaming.pb-c.h" #include "ue_context_release.pb-c.h" #include "lfta/local/dc_release.h" +#include "ricgeomessages.pb-c.h" +#include "ricgeomessages_pcmdreport.pb-c.h" +#include "lfta/local/lte_thpt_meas.h" +#include "lfta/local/lte_rb_thpt.h" +#include "lfta/local/lte_dl_sched_trace.h" +#include "lfta/local/lte_pcell_meas.h" #include "secondary_rat_data_usage_report.pb-c.h" #include "lfta/local/rat_data_usage.h" #include "sgnb_reconfiguration_complete.pb-c.h" @@ -95,6 +102,7 @@ static unsigned long long timestamp; // extract from input header #include "lfta/local/sgnb_add_req_reject.h" #include "sgnb_addition_request_acknowledge.pb-c.h" #include "lfta/local/eRABs_notadmitted_for_ue.h" +#include "lfta/local/add_req_ack_cellid.h" #include "lfta/local/eRABs_acked_for_admit_for_ue.h" #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h" #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h" @@ -179,6 +187,206 @@ unsigned long long int ts_lo, ts_hi; return 0; } +gs_uint32_t process_buffer_LTE_PCMD(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + GeoMsg *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + struct _lte_thpt_meas *lte_thpt_meas = NULL; + PcmdReport *node_0_0 = NULL; + PcmdReport__TpDlUeThroughputMeasurements *node_0_1 = NULL; +// ------------------------------------------ +// --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + struct _lte_rb_thpt *lte_rb_thpt = NULL; + PcmdReport *node_1_0 = NULL; + PcmdReport__TpDlRadioBearerPdcpThroughputRecord *node_1_1 = NULL; + PcmdReport__TpDlRadioBearerPdcpThroughputData *node_1_2 = NULL; + gs_uint32_t i_1_2; +// ------------------------------------------ +// --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + struct _lte_dl_sched_trace *lte_dl_sched_trace = NULL; + PcmdReport *node_2_0 = NULL; + PcmdReport__TpDlSchedulingTraceRecord *node_2_1 = NULL; +// ------------------------------------------ +// --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + struct _lte_pcell_meas *lte_pcell_meas = NULL; + PcmdReport *node_3_0 = NULL; + PcmdReport__TpUeMeasTraceRecord *node_3_1 = NULL; + PcmdReport__TpMeasResultPCell *node_3_2 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + + lte_thpt_meas = (struct _lte_thpt_meas *)(cur_packet.record.packed.values); + cur_packet.schema = 10000; + + hdr = geo_msg__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->report; + if(node_0_0==NULL) return -2; + if(hdr->hdr==NULL) return -3; + + ts_lo = hdr->hdr->timestamp & 0xffffffff; + ts_hi = hdr->hdr->timestamp >> 32; + lte_thpt_meas->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32); + lte_thpt_meas->eci = hdr->hdr->eci; + lte_thpt_meas->plmn = hdr->hdr->plmn; + lte_thpt_meas->eutran_trace_id = hdr->hdr->eutrantraceid; + lte_thpt_meas->crnti = hdr->hdr->crnti; + + if(node_0_0->dlschedulingrecord){ + lte_thpt_meas->numOfTtiUeSched = node_0_0->dlschedulingrecord->numofttiuesched; + }else{ + lte_thpt_meas->numOfTtiUeSched = -1; + } + if(node_0_0->sessioninfo){ + lte_thpt_meas->imei = node_0_0->sessioninfo->imei; + }else{ + lte_thpt_meas->imei = -1; + } + if(node_0_0->sessioninfo){ + lte_thpt_meas->imsi = node_0_0->sessioninfo->imsi; + }else{ + lte_thpt_meas->imsi = -1; + } + node_0_1 = node_0_0->dluethroughputmeasurementsrecord; + if(node_0_0->dluethroughputmeasurementsrecord){ + lte_thpt_meas->numOfTtiPositiveDlBuf = node_0_1->numofttipositivedlbuf; + lte_thpt_meas->sumOfSentNonGbrBytes = node_0_1->sumofsentnongbrbytes; + lte_thpt_meas->sumOfSentGbrBytes = node_0_1->sumofsentgbrbytes; + rts_fta_process_packet(&cur_packet); + } +// -------------------------------------------------- +// --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + + lte_rb_thpt = (struct _lte_rb_thpt *)(cur_packet.record.packed.values); + cur_packet.schema = 10001; + node_1_0 = node_0_0; + ts_lo = hdr->hdr->timestamp & 0xffffffff; + ts_hi = hdr->hdr->timestamp >> 32; + lte_rb_thpt->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32); + lte_rb_thpt->eci = hdr->hdr->eci; + lte_rb_thpt->plmn = hdr->hdr->plmn; + lte_rb_thpt->eutran_trace_id = hdr->hdr->eutrantraceid; + lte_rb_thpt->crnti = hdr->hdr->crnti; + + if(node_1_0->sessioninfo){ + lte_rb_thpt->imei = node_1_0->sessioninfo->imei; + }else{ + lte_rb_thpt->imei = -1; + } + if(node_1_0->sessioninfo){ + lte_rb_thpt->imsi = node_1_0->sessioninfo->imsi; + }else{ + lte_rb_thpt->imsi = -1; + } + node_1_1 = node_1_0->dlrbpdcpthroughputrecord; + if(node_1_0->dlrbpdcpthroughputrecord){ + for(i_1_2=0;i_1_2n_dlradiobearerpdcpthroughputlist; i_1_2++){ + node_1_2 = node_1_1->dlradiobearerpdcpthroughputlist[i_1_2]; + lte_rb_thpt->dataCollectionDuration = node_1_2->datacollectionduration; + lte_rb_thpt->numOfPdcpPduRcvdForTx = node_1_2->numofpdcppdurcvdfortx; + lte_rb_thpt->numOfPdcpPduDiscarded = node_1_2->numofpdcppdudiscarded; + lte_rb_thpt->drb_Id = node_1_2->drb_id; + rts_fta_process_packet(&cur_packet); + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + + lte_dl_sched_trace = (struct _lte_dl_sched_trace *)(cur_packet.record.packed.values); + cur_packet.schema = 10002; + node_2_0 = node_1_0; + ts_lo = hdr->hdr->timestamp & 0xffffffff; + ts_hi = hdr->hdr->timestamp >> 32; + lte_dl_sched_trace->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32); + lte_dl_sched_trace->eci = hdr->hdr->eci; + lte_dl_sched_trace->plmn = hdr->hdr->plmn; + lte_dl_sched_trace->eutran_trace_id = hdr->hdr->eutrantraceid; + lte_dl_sched_trace->crnti = hdr->hdr->crnti; + + if(node_2_0->sessioninfo){ + lte_dl_sched_trace->imei = node_2_0->sessioninfo->imei; + }else{ + lte_dl_sched_trace->imei = -1; + } + if(node_2_0->sessioninfo){ + lte_dl_sched_trace->imsi = node_2_0->sessioninfo->imsi; + }else{ + lte_dl_sched_trace->imsi = -1; + } + node_2_1 = node_2_0->dlschedulingrecord; + if(node_2_0->dlschedulingrecord){ + if(node_2_1->numofharqretx){ + lte_dl_sched_trace->numOfHarqReTx = node_2_1->numofharqretx->value; + lte_dl_sched_trace->numOfHarqReTx_exists = 1; + }else{ + lte_dl_sched_trace->numOfHarqReTx_exists = 0; + } + lte_dl_sched_trace->numOfTtiUeSched = node_2_1->numofttiuesched; + lte_dl_sched_trace->numOfHarq1stTx = node_2_1->numofharq1sttx; + lte_dl_sched_trace->recordCollectionDuration = node_2_1->recordcollectionduration; + if(node_2_1->numofttiueschedmimo){ + lte_dl_sched_trace->numOfTtiUeSchedMimo = node_2_1->numofttiueschedmimo->value; + lte_dl_sched_trace->numOfTtiUeSchedMimo_exists = 1; + }else{ + lte_dl_sched_trace->numOfTtiUeSchedMimo_exists = 0; + } + lte_dl_sched_trace->numOfPrbUsed = node_2_1->numofprbused; + if(node_2_1->numofbad1stmacpdutx){ + lte_dl_sched_trace->numOfBad1stMacPduTx = node_2_1->numofbad1stmacpdutx->value; + lte_dl_sched_trace->numOfBad1stMacPduTx_exists = 1; + }else{ + lte_dl_sched_trace->numOfBad1stMacPduTx_exists = 0; + } + if(node_2_1->numofbadlastmacpdutx){ + lte_dl_sched_trace->numOfBadLastMacPduTx = node_2_1->numofbadlastmacpdutx->value; + lte_dl_sched_trace->numOfBadLastMacPduTx_exists = 1; + }else{ + lte_dl_sched_trace->numOfBadLastMacPduTx_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } +// -------------------------------------------------- +// --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json + + lte_pcell_meas = (struct _lte_pcell_meas *)(cur_packet.record.packed.values); + cur_packet.schema = 10003; + node_3_0 = node_2_0; + ts_lo = hdr->hdr->timestamp & 0xffffffff; + ts_hi = hdr->hdr->timestamp >> 32; + lte_pcell_meas->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32); + lte_pcell_meas->eci = hdr->hdr->eci; + lte_pcell_meas->plmn = hdr->hdr->plmn; + lte_pcell_meas->eutran_trace_id = hdr->hdr->eutrantraceid; + lte_pcell_meas->crnti = hdr->hdr->crnti; + + if(node_3_0->sessioninfo){ + lte_pcell_meas->imei = node_3_0->sessioninfo->imei; + }else{ + lte_pcell_meas->imei = -1; + } + if(node_3_0->sessioninfo){ + lte_pcell_meas->imsi = node_3_0->sessioninfo->imsi; + }else{ + lte_pcell_meas->imsi = -1; + } + node_3_1 = node_3_0->uemeastracerecord; + if(node_3_0->uemeastracerecord){ + node_3_2 = node_3_1->measresultpcell; + if(node_3_1->measresultpcell){ + lte_pcell_meas->pci = node_3_2->pci; + lte_pcell_meas->rsrq = node_3_2->rsrq; + lte_pcell_meas->rsrp = node_3_2->rsrp; + rts_fta_process_packet(&cur_packet); + } + } + pcmd_report__free_unpacked(node_0_0,NULL); + return 0; +} + gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){ char *empty_string = ""; unsigned long long int ts_lo, ts_hi; @@ -1441,46 +1649,45 @@ unsigned long long int ts_lo, ts_hi; StreamingProtobufs__ERABItem *node_0_3 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL; + struct _add_req_ack_cellid *add_req_ack_cellid = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL; - StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_1_1 = NULL; - StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_1_2 = NULL; - gs_uint32_t i_1_2; + StreamingProtobufs__CGConfig *node_1_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_1_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_1_3 = NULL; + StreamingProtobufs__RRCReconfiguration *node_1_4 = NULL; + StreamingProtobufs__RRCReconfigurationIEs *node_1_5 = NULL; + StreamingProtobufs__CellGroupConfig *node_1_6 = NULL; + StreamingProtobufs__SpCellConfig *node_1_7 = NULL; + StreamingProtobufs__ReconfigurationWithSync *node_1_8 = NULL; + StreamingProtobufs__ServingCellConfigCommon *node_1_9 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL; + struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL; - StreamingProtobufs__CGConfig *node_2_1 = NULL; - StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_2_2 = NULL; - StreamingProtobufs__CGConfigIEs *node_2_3 = NULL; + StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_2_1 = NULL; + StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_2_2 = NULL; + gs_uint32_t i_2_2; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL; + struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL; StreamingProtobufs__CGConfig *node_3_1 = NULL; StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL; StreamingProtobufs__CGConfigIEs *node_3_3 = NULL; - StreamingProtobufs__RadioBearerConfig *node_3_4 = NULL; - StreamingProtobufs__DRBToAddModList *node_3_5 = NULL; - StreamingProtobufs__DRBToAddMod *node_3_6 = NULL; - gs_uint32_t i_3_6; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL; + struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL; StreamingProtobufs__CGConfig *node_4_1 = NULL; StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL; StreamingProtobufs__CGConfigIEs *node_4_3 = NULL; - StreamingProtobufs__MeasResultList2NR *node_4_4 = NULL; - StreamingProtobufs__MeasResult2NR *node_4_5 = NULL; - gs_uint32_t i_4_5; - StreamingProtobufs__MeasResultNR *node_4_6 = NULL; - StreamingProtobufs__MeasResult *node_4_7 = NULL; - StreamingProtobufs__CellResults *node_4_8 = NULL; - StreamingProtobufs__MeasQuantityResults *node_4_9 = NULL; + StreamingProtobufs__RadioBearerConfig *node_4_4 = NULL; + StreamingProtobufs__DRBToAddModList *node_4_5 = NULL; + StreamingProtobufs__DRBToAddMod *node_4_6 = NULL; + gs_uint32_t i_4_6; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL; + struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL; StreamingProtobufs__CGConfig *node_5_1 = NULL; StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL; @@ -1490,14 +1697,11 @@ unsigned long long int ts_lo, ts_hi; gs_uint32_t i_5_5; StreamingProtobufs__MeasResultNR *node_5_6 = NULL; StreamingProtobufs__MeasResult *node_5_7 = NULL; - StreamingProtobufs__RsIndexResults *node_5_8 = NULL; - StreamingProtobufs__ResultsPerCSIRSIndexList *node_5_9 = NULL; - StreamingProtobufs__ResultsPerCSIRSIndex *node_5_10 = NULL; - gs_uint32_t i_5_10; - StreamingProtobufs__MeasQuantityResults *node_5_11 = NULL; + StreamingProtobufs__CellResults *node_5_8 = NULL; + StreamingProtobufs__MeasQuantityResults *node_5_9 = NULL; // ------------------------------------------ // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json - struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL; + struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL; StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL; StreamingProtobufs__CGConfig *node_6_1 = NULL; StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL; @@ -1508,10 +1712,27 @@ unsigned long long int ts_lo, ts_hi; StreamingProtobufs__MeasResultNR *node_6_6 = NULL; StreamingProtobufs__MeasResult *node_6_7 = NULL; StreamingProtobufs__RsIndexResults *node_6_8 = NULL; - StreamingProtobufs__ResultsPerSSBIndexList *node_6_9 = NULL; - StreamingProtobufs__ResultsPerSSBIndex *node_6_10 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndexList *node_6_9 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndex *node_6_10 = NULL; gs_uint32_t i_6_10; StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_7_0 = NULL; + StreamingProtobufs__CGConfig *node_7_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_7_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_7_3 = NULL; + StreamingProtobufs__MeasResultList2NR *node_7_4 = NULL; + StreamingProtobufs__MeasResult2NR *node_7_5 = NULL; + gs_uint32_t i_7_5; + StreamingProtobufs__MeasResultNR *node_7_6 = NULL; + StreamingProtobufs__MeasResult *node_7_7 = NULL; + StreamingProtobufs__RsIndexResults *node_7_8 = NULL; + StreamingProtobufs__ResultsPerSSBIndexList *node_7_9 = NULL; + StreamingProtobufs__ResultsPerSSBIndex *node_7_10 = NULL; + gs_uint32_t i_7_10; + StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL; // -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json @@ -1573,11 +1794,66 @@ unsigned long long int ts_lo, ts_hi; } } // -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + add_req_ack_cellid = (struct _add_req_ack_cellid *)(cur_packet.record.packed.values); + cur_packet.schema = 10004; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + add_req_ack_cellid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + add_req_ack_cellid->gnb_id = empty_string; + else + add_req_ack_cellid->gnb_id = hdr->header->gnbid->value; + + add_req_ack_cellid->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; + add_req_ack_cellid->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; + if(node_1_0->id_menb_ue_x2ap_id_extension){ + add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; + }else{ + add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_1_1 = node_1_0->id_sgnbtomenbcontainer; + if(node_1_0->id_sgnbtomenbcontainer){ + node_1_2 = node_1_1->criticalextensionschoice1; + if(node_1_1->criticalextensionschoice1){ + node_1_3 = node_1_2->protocolies; + if(node_1_2->protocolies){ + node_1_4 = node_1_3->scg_cellgroupconfig; + if(node_1_3->scg_cellgroupconfig){ + node_1_5 = node_1_4->rrcreconfiguration; + if(node_1_4->rrcreconfiguration){ + node_1_6 = node_1_5->secondarycellgroup; + if(node_1_5->secondarycellgroup){ + node_1_7 = node_1_6->spcellconfig; + if(node_1_6->spcellconfig){ + node_1_8 = node_1_7->reconfigurationwithsync; + if(node_1_7->reconfigurationwithsync){ + node_1_9 = node_1_8->spcellconfigcommon; + if(node_1_8->spcellconfigcommon){ + if(node_1_9->physcellid){ + add_req_ack_cellid->physCellId = node_1_9->physcellid->value; + add_req_ack_cellid->physCellId_exists = 1; + }else{ + add_req_ack_cellid->physCellId_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 502; - node_1_0 = node_0_0; + node_2_0 = node_1_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -1586,55 +1862,55 @@ unsigned long long int ts_lo, ts_hi; else eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value; - eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; - eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; - if(node_1_0->id_menb_ue_x2ap_id_extension){ - eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; + eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; + eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; + if(node_2_0->id_menb_ue_x2ap_id_extension){ + eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; }else{ eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_1_1 = node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist; - if(node_1_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){ - for(i_1_2=0;i_1_2n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_1_2++){ - node_1_2 = node_1_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_1_2]; - if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority){ - eRABs_acked_for_admit_for_ue->ARP = node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel; + node_2_1 = node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist; + if(node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){ + for(i_2_2=0;i_2_2n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_2_2++){ + node_2_2 = node_2_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_2_2]; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority){ + eRABs_acked_for_admit_for_ue->ARP = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel; }else{ eRABs_acked_for_admit_for_ue->ARP = 0; } - if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ - eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ + eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid; eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1; }else{ eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0; } - if(node_1_2->en_dc_resourceconfiguration){ - eRABs_acked_for_admit_for_ue->mCGresources = node_1_2->en_dc_resourceconfiguration->mcgresources; + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->mCGresources = node_2_2->en_dc_resourceconfiguration->mcgresources; eRABs_acked_for_admit_for_ue->mCGresources_exists = 1; }else{ eRABs_acked_for_admit_for_ue->mCGresources_exists = 0; } - if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ - eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_1_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ + eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress; eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1; }else{ eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0; } - if(node_1_2->en_dc_resourceconfiguration){ - eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_1_2->en_dc_resourceconfiguration->pdcpatsgnb; + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_2_2->en_dc_resourceconfiguration->pdcpatsgnb; eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1; }else{ eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0; } - if(node_1_2->en_dc_resourceconfiguration){ - eRABs_acked_for_admit_for_ue->sCGresources = node_1_2->en_dc_resourceconfiguration->scgresources; + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->sCGresources = node_2_2->en_dc_resourceconfiguration->scgresources; eRABs_acked_for_admit_for_ue->sCGresources_exists = 1; }else{ eRABs_acked_for_admit_for_ue->sCGresources_exists = 0; } - eRABs_acked_for_admit_for_ue->e_RAB_ID = node_1_2->e_rab_id; - if(node_1_2->sgnbpdcppresent && node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){ - eRABs_acked_for_admit_for_ue->qCI = node_1_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci; + eRABs_acked_for_admit_for_ue->e_RAB_ID = node_2_2->e_rab_id; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){ + eRABs_acked_for_admit_for_ue->qCI = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci; }else{ eRABs_acked_for_admit_for_ue->qCI = 0; } @@ -1646,7 +1922,7 @@ unsigned long long int ts_lo, ts_hi; SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values); cur_packet.schema = 503; - node_2_0 = node_1_0; + node_3_0 = node_2_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -1655,111 +1931,111 @@ unsigned long long int ts_lo, ts_hi; else SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value; - SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; - SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; - if(node_2_0->id_menb_ue_x2ap_id_extension){ - SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; + SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id; + if(node_3_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_2_1 = node_2_0->id_sgnbtomenbcontainer; - if(node_2_0->id_sgnbtomenbcontainer){ - node_2_2 = node_2_1->criticalextensionschoice1; - if(node_2_1->criticalextensionschoice1){ - node_2_3 = node_2_2->protocolies; - if(node_2_2->protocolies){ - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 0 && node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_2_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value; + node_3_1 = node_3_0->id_sgnbtomenbcontainer; + if(node_3_0->id_sgnbtomenbcontainer){ + node_3_2 = node_3_1->criticalextensionschoice1; + if(node_3_1->criticalextensionschoice1){ + node_3_3 = node_3_2->protocolies; + if(node_3_2->protocolies){ + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 0 && node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 1 && node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_2_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 1 && node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 2 && node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_2_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 2 && node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 3 && node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_2_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 3 && node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 4 && node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_2_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 4 && node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 5 && node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_2_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 5 && node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 6 && node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_2_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 6 && node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0; } - if(node_2_3->measconfigsn && node_2_3->measconfigsn->measuredfrequenciessn && node_2_3->measconfigsn->n_measuredfrequenciessn > 7 && node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){ - SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_2_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value; + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 7 && node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value; SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 0){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_2_3->candidateservingfreqlistnr->items[0]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 0){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_3_3->candidateservingfreqlistnr->items[0]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 1){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_2_3->candidateservingfreqlistnr->items[1]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 1){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_3_3->candidateservingfreqlistnr->items[1]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 2){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_2_3->candidateservingfreqlistnr->items[2]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 2){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_3_3->candidateservingfreqlistnr->items[2]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 3){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_2_3->candidateservingfreqlistnr->items[3]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 3){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_3_3->candidateservingfreqlistnr->items[3]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 4){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_2_3->candidateservingfreqlistnr->items[4]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 4){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_3_3->candidateservingfreqlistnr->items[4]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 5){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_2_3->candidateservingfreqlistnr->items[5]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 5){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_3_3->candidateservingfreqlistnr->items[5]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 6){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_2_3->candidateservingfreqlistnr->items[6]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 6){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_3_3->candidateservingfreqlistnr->items[6]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0; } - if(node_2_3->candidateservingfreqlistnr && node_2_3->candidateservingfreqlistnr->n_items > 7){ - SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_2_3->candidateservingfreqlistnr->items[7]; + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 7){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_3_3->candidateservingfreqlistnr->items[7]; SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1; }else{ SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0; @@ -1773,7 +2049,7 @@ unsigned long long int ts_lo, ts_hi; SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values); cur_packet.schema = 504; - node_3_0 = node_2_0; + node_4_0 = node_3_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -1782,63 +2058,63 @@ unsigned long long int ts_lo, ts_hi; else SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value; - SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id; - SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id; - if(node_3_0->id_menb_ue_x2ap_id_extension){ - SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value; + SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id; + SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id; + if(node_4_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_3_1 = node_3_0->id_sgnbtomenbcontainer; - if(node_3_0->id_sgnbtomenbcontainer){ - node_3_2 = node_3_1->criticalextensionschoice1; - if(node_3_1->criticalextensionschoice1){ - node_3_3 = node_3_2->protocolies; - if(node_3_2->protocolies){ - node_3_4 = node_3_3->scg_rb_config; - if(node_3_3->scg_rb_config){ - if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 0){ - SgNB_ack_for_add_mod_for_ue->toRelease0 = node_3_4->drb_toreleaselist->items[0]; + node_4_1 = node_4_0->id_sgnbtomenbcontainer; + if(node_4_0->id_sgnbtomenbcontainer){ + node_4_2 = node_4_1->criticalextensionschoice1; + if(node_4_1->criticalextensionschoice1){ + node_4_3 = node_4_2->protocolies; + if(node_4_2->protocolies){ + node_4_4 = node_4_3->scg_rb_config; + if(node_4_3->scg_rb_config){ + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 0){ + SgNB_ack_for_add_mod_for_ue->toRelease0 = node_4_4->drb_toreleaselist->items[0]; SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0; } - if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 1){ - SgNB_ack_for_add_mod_for_ue->toRelease1 = node_3_4->drb_toreleaselist->items[1]; + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 1){ + SgNB_ack_for_add_mod_for_ue->toRelease1 = node_4_4->drb_toreleaselist->items[1]; SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0; } - if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 2){ - SgNB_ack_for_add_mod_for_ue->toRelease2 = node_3_4->drb_toreleaselist->items[2]; + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 2){ + SgNB_ack_for_add_mod_for_ue->toRelease2 = node_4_4->drb_toreleaselist->items[2]; SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0; } - if(node_3_4->drb_toreleaselist && node_3_4->drb_toreleaselist->n_items > 3){ - SgNB_ack_for_add_mod_for_ue->toRelease3 = node_3_4->drb_toreleaselist->items[3]; + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 3){ + SgNB_ack_for_add_mod_for_ue->toRelease3 = node_4_4->drb_toreleaselist->items[3]; SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0; } - node_3_5 = node_3_4->drb_toaddmodlist; - if(node_3_4->drb_toaddmodlist){ - for(i_3_6=0;i_3_6n_items; i_3_6++){ - node_3_6 = node_3_5->items[i_3_6]; - if(node_3_6->recoverpdcp){ - SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_3_6->recoverpdcp->value; + node_4_5 = node_4_4->drb_toaddmodlist; + if(node_4_4->drb_toaddmodlist){ + for(i_4_6=0;i_4_6n_items; i_4_6++){ + node_4_6 = node_4_5->items[i_4_6]; + if(node_4_6->recoverpdcp){ + SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_4_6->recoverpdcp->value; SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0; } - if(node_3_6->reestablishpdcp){ - SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_3_6->reestablishpdcp->value; + if(node_4_6->reestablishpdcp){ + SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_4_6->reestablishpdcp->value; SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1; }else{ SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0; } - SgNB_ack_for_add_mod_for_ue->drb_Identity = node_3_6->drb_identity; - SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_3_6->eps_beareridentity; + SgNB_ack_for_add_mod_for_ue->drb_Identity = node_4_6->drb_identity; + SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_4_6->eps_beareridentity; rts_fta_process_packet(&cur_packet); } } @@ -1851,7 +2127,7 @@ unsigned long long int ts_lo, ts_hi; SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values); cur_packet.schema = 505; - node_4_0 = node_3_0; + node_5_0 = node_4_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -1860,63 +2136,63 @@ unsigned long long int ts_lo, ts_hi; else SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value; - SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id; - SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id; - if(node_4_0->id_menb_ue_x2ap_id_extension){ - SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value; + SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id; + if(node_5_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_4_1 = node_4_0->id_sgnbtomenbcontainer; - if(node_4_0->id_sgnbtomenbcontainer){ - node_4_2 = node_4_1->criticalextensionschoice1; - if(node_4_1->criticalextensionschoice1){ - node_4_3 = node_4_2->protocolies; - if(node_4_2->protocolies){ - node_4_4 = node_4_3->candidatecellinfolistsn; - if(node_4_3->candidatecellinfolistsn){ - for(i_4_5=0;i_4_5n_items; i_4_5++){ - node_4_5 = node_4_4->items[i_4_5]; - if(node_4_5->ssbfrequency){ - SgNB_ack_for_ue_measurements->ssbFrequency = node_4_5->ssbfrequency->value; + node_5_1 = node_5_0->id_sgnbtomenbcontainer; + if(node_5_0->id_sgnbtomenbcontainer){ + node_5_2 = node_5_1->criticalextensionschoice1; + if(node_5_1->criticalextensionschoice1){ + node_5_3 = node_5_2->protocolies; + if(node_5_2->protocolies){ + node_5_4 = node_5_3->candidatecellinfolistsn; + if(node_5_3->candidatecellinfolistsn){ + for(i_5_5=0;i_5_5n_items; i_5_5++){ + node_5_5 = node_5_4->items[i_5_5]; + if(node_5_5->ssbfrequency){ + SgNB_ack_for_ue_measurements->ssbFrequency = node_5_5->ssbfrequency->value; SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0; } - if(node_4_5->reffreqcsi_rs){ - SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_4_5->reffreqcsi_rs->value; + if(node_5_5->reffreqcsi_rs){ + SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value; SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0; } - node_4_6 = node_4_5->measresultservingcell; - if(node_4_5->measresultservingcell){ - if(node_4_6->physcellid){ - SgNB_ack_for_ue_measurements->physCellId = node_4_6->physcellid->value; + node_5_6 = node_5_5->measresultservingcell; + if(node_5_5->measresultservingcell){ + if(node_5_6->physcellid){ + SgNB_ack_for_ue_measurements->physCellId = node_5_6->physcellid->value; SgNB_ack_for_ue_measurements->physCellId_exists = 1; }else{ SgNB_ack_for_ue_measurements->physCellId_exists = 0; } - node_4_7 = node_4_6->measresult; - if(node_4_6->measresult){ - node_4_8 = node_4_7->cellresults; - if(node_4_7->cellresults){ - node_4_9 = node_4_8->resultscsi_rs_cell; - if(node_4_8->resultscsi_rs_cell){ - if(node_4_9->rsrq){ - SgNB_ack_for_ue_measurements->rsrq = node_4_9->rsrq->value; + node_5_7 = node_5_6->measresult; + if(node_5_6->measresult){ + node_5_8 = node_5_7->cellresults; + if(node_5_7->cellresults){ + node_5_9 = node_5_8->resultscsi_rs_cell; + if(node_5_8->resultscsi_rs_cell){ + if(node_5_9->rsrq){ + SgNB_ack_for_ue_measurements->rsrq = node_5_9->rsrq->value; SgNB_ack_for_ue_measurements->rsrq_exists = 1; }else{ SgNB_ack_for_ue_measurements->rsrq_exists = 0; } - if(node_4_9->rsrp){ - SgNB_ack_for_ue_measurements->rsrp = node_4_9->rsrp->value; + if(node_5_9->rsrp){ + SgNB_ack_for_ue_measurements->rsrp = node_5_9->rsrp->value; SgNB_ack_for_ue_measurements->rsrp_exists = 1; }else{ SgNB_ack_for_ue_measurements->rsrp_exists = 0; } - if(node_4_9->sinr){ - SgNB_ack_for_ue_measurements->sinr = node_4_9->sinr->value; + if(node_5_9->sinr){ + SgNB_ack_for_ue_measurements->sinr = node_5_9->sinr->value; SgNB_ack_for_ue_measurements->sinr_exists = 1; }else{ SgNB_ack_for_ue_measurements->sinr_exists = 0; @@ -1936,7 +2212,7 @@ unsigned long long int ts_lo, ts_hi; SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values); cur_packet.schema = 506; - node_5_0 = node_4_0; + node_6_0 = node_5_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -1945,68 +2221,68 @@ unsigned long long int ts_lo, ts_hi; else SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value; - SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id; - SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id; - if(node_5_0->id_menb_ue_x2ap_id_extension){ - SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value; + SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id; + if(node_6_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_5_1 = node_5_0->id_sgnbtomenbcontainer; - if(node_5_0->id_sgnbtomenbcontainer){ - node_5_2 = node_5_1->criticalextensionschoice1; - if(node_5_1->criticalextensionschoice1){ - node_5_3 = node_5_2->protocolies; - if(node_5_2->protocolies){ - node_5_4 = node_5_3->candidatecellinfolistsn; - if(node_5_3->candidatecellinfolistsn){ - for(i_5_5=0;i_5_5n_items; i_5_5++){ - node_5_5 = node_5_4->items[i_5_5]; - if(node_5_5->ssbfrequency){ - SgNB_ack_for_ue_beam_csi->ssbFrequency = node_5_5->ssbfrequency->value; + node_6_1 = node_6_0->id_sgnbtomenbcontainer; + if(node_6_0->id_sgnbtomenbcontainer){ + node_6_2 = node_6_1->criticalextensionschoice1; + if(node_6_1->criticalextensionschoice1){ + node_6_3 = node_6_2->protocolies; + if(node_6_2->protocolies){ + node_6_4 = node_6_3->candidatecellinfolistsn; + if(node_6_3->candidatecellinfolistsn){ + for(i_6_5=0;i_6_5n_items; i_6_5++){ + node_6_5 = node_6_4->items[i_6_5]; + if(node_6_5->ssbfrequency){ + SgNB_ack_for_ue_beam_csi->ssbFrequency = node_6_5->ssbfrequency->value; SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0; } - if(node_5_5->reffreqcsi_rs){ - SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value; + if(node_6_5->reffreqcsi_rs){ + SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value; SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0; } - node_5_6 = node_5_5->measresultservingcell; - if(node_5_5->measresultservingcell){ - if(node_5_6->physcellid){ - SgNB_ack_for_ue_beam_csi->physCellId = node_5_6->physcellid->value; + node_6_6 = node_6_5->measresultservingcell; + if(node_6_5->measresultservingcell){ + if(node_6_6->physcellid){ + SgNB_ack_for_ue_beam_csi->physCellId = node_6_6->physcellid->value; SgNB_ack_for_ue_beam_csi->physCellId_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->physCellId_exists = 0; } - node_5_7 = node_5_6->measresult; - if(node_5_6->measresult){ - node_5_8 = node_5_7->rsindexresults; - if(node_5_7->rsindexresults){ - node_5_9 = node_5_8->resultscsi_rs_indexes; - if(node_5_8->resultscsi_rs_indexes){ - for(i_5_10=0;i_5_10n_items; i_5_10++){ - node_5_10 = node_5_9->items[i_5_10]; - SgNB_ack_for_ue_beam_csi->csi_rs_index = node_5_10->csi_rs_index; - node_5_11 = node_5_10->csi_rs_results; - if(node_5_10->csi_rs_results){ - if(node_5_11->rsrq){ - SgNB_ack_for_ue_beam_csi->rsrq = node_5_11->rsrq->value; + node_6_7 = node_6_6->measresult; + if(node_6_6->measresult){ + node_6_8 = node_6_7->rsindexresults; + if(node_6_7->rsindexresults){ + node_6_9 = node_6_8->resultscsi_rs_indexes; + if(node_6_8->resultscsi_rs_indexes){ + for(i_6_10=0;i_6_10n_items; i_6_10++){ + node_6_10 = node_6_9->items[i_6_10]; + SgNB_ack_for_ue_beam_csi->csi_rs_index = node_6_10->csi_rs_index; + node_6_11 = node_6_10->csi_rs_results; + if(node_6_10->csi_rs_results){ + if(node_6_11->rsrq){ + SgNB_ack_for_ue_beam_csi->rsrq = node_6_11->rsrq->value; SgNB_ack_for_ue_beam_csi->rsrq_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->rsrq_exists = 0; } - if(node_5_11->rsrp){ - SgNB_ack_for_ue_beam_csi->rsrp = node_5_11->rsrp->value; + if(node_6_11->rsrp){ + SgNB_ack_for_ue_beam_csi->rsrp = node_6_11->rsrp->value; SgNB_ack_for_ue_beam_csi->rsrp_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->rsrp_exists = 0; } - if(node_5_11->sinr){ - SgNB_ack_for_ue_beam_csi->sinr = node_5_11->sinr->value; + if(node_6_11->sinr){ + SgNB_ack_for_ue_beam_csi->sinr = node_6_11->sinr->value; SgNB_ack_for_ue_beam_csi->sinr_exists = 1; }else{ SgNB_ack_for_ue_beam_csi->sinr_exists = 0; @@ -2028,7 +2304,7 @@ unsigned long long int ts_lo, ts_hi; SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values); cur_packet.schema = 507; - node_6_0 = node_5_0; + node_7_0 = node_6_0; ts_lo = hdr->header->timestamp & 0xffffffff; ts_hi = hdr->header->timestamp >> 32; SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); @@ -2037,68 +2313,68 @@ unsigned long long int ts_lo, ts_hi; else SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value; - SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id; - SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id; - if(node_6_0->id_menb_ue_x2ap_id_extension){ - SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value; + SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_7_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_7_0->id_sgnb_ue_x2ap_id; + if(node_7_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_0->id_menb_ue_x2ap_id_extension->value; }else{ SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; } - node_6_1 = node_6_0->id_sgnbtomenbcontainer; - if(node_6_0->id_sgnbtomenbcontainer){ - node_6_2 = node_6_1->criticalextensionschoice1; - if(node_6_1->criticalextensionschoice1){ - node_6_3 = node_6_2->protocolies; - if(node_6_2->protocolies){ - node_6_4 = node_6_3->candidatecellinfolistsn; - if(node_6_3->candidatecellinfolistsn){ - for(i_6_5=0;i_6_5n_items; i_6_5++){ - node_6_5 = node_6_4->items[i_6_5]; - if(node_6_5->ssbfrequency){ - SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_6_5->ssbfrequency->value; + node_7_1 = node_7_0->id_sgnbtomenbcontainer; + if(node_7_0->id_sgnbtomenbcontainer){ + node_7_2 = node_7_1->criticalextensionschoice1; + if(node_7_1->criticalextensionschoice1){ + node_7_3 = node_7_2->protocolies; + if(node_7_2->protocolies){ + node_7_4 = node_7_3->candidatecellinfolistsn; + if(node_7_3->candidatecellinfolistsn){ + for(i_7_5=0;i_7_5n_items; i_7_5++){ + node_7_5 = node_7_4->items[i_7_5]; + if(node_7_5->ssbfrequency){ + SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_7_5->ssbfrequency->value; SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0; } - if(node_6_5->reffreqcsi_rs){ - SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value; + if(node_7_5->reffreqcsi_rs){ + SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_7_5->reffreqcsi_rs->value; SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0; } - node_6_6 = node_6_5->measresultservingcell; - if(node_6_5->measresultservingcell){ - if(node_6_6->physcellid){ - SgNB_ack_for_ue_beam_ssb->physCellId = node_6_6->physcellid->value; + node_7_6 = node_7_5->measresultservingcell; + if(node_7_5->measresultservingcell){ + if(node_7_6->physcellid){ + SgNB_ack_for_ue_beam_ssb->physCellId = node_7_6->physcellid->value; SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0; } - node_6_7 = node_6_6->measresult; - if(node_6_6->measresult){ - node_6_8 = node_6_7->rsindexresults; - if(node_6_7->rsindexresults){ - node_6_9 = node_6_8->resultsssb_indexes; - if(node_6_8->resultsssb_indexes){ - for(i_6_10=0;i_6_10n_items; i_6_10++){ - node_6_10 = node_6_9->items[i_6_10]; - SgNB_ack_for_ue_beam_ssb->ssb_Index = node_6_10->ssb_index; - node_6_11 = node_6_10->ssb_results; - if(node_6_10->ssb_results){ - if(node_6_11->rsrq){ - SgNB_ack_for_ue_beam_ssb->rsrq = node_6_11->rsrq->value; + node_7_7 = node_7_6->measresult; + if(node_7_6->measresult){ + node_7_8 = node_7_7->rsindexresults; + if(node_7_7->rsindexresults){ + node_7_9 = node_7_8->resultsssb_indexes; + if(node_7_8->resultsssb_indexes){ + for(i_7_10=0;i_7_10n_items; i_7_10++){ + node_7_10 = node_7_9->items[i_7_10]; + SgNB_ack_for_ue_beam_ssb->ssb_Index = node_7_10->ssb_index; + node_7_11 = node_7_10->ssb_results; + if(node_7_10->ssb_results){ + if(node_7_11->rsrq){ + SgNB_ack_for_ue_beam_ssb->rsrq = node_7_11->rsrq->value; SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0; } - if(node_6_11->rsrp){ - SgNB_ack_for_ue_beam_ssb->rsrp = node_6_11->rsrp->value; + if(node_7_11->rsrp){ + SgNB_ack_for_ue_beam_ssb->rsrp = node_7_11->rsrp->value; SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0; } - if(node_6_11->sinr){ - SgNB_ack_for_ue_beam_ssb->sinr = node_6_11->sinr->value; + if(node_7_11->sinr){ + SgNB_ack_for_ue_beam_ssb->sinr = node_7_11->sinr->value; SgNB_ack_for_ue_beam_ssb->sinr_exists = 1; }else{ SgNB_ack_for_ue_beam_ssb->sinr_exists = 0; @@ -2282,7 +2558,7 @@ unsigned long long int ts_lo, ts_hi; // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values); - cur_packet.schema = 10000; + cur_packet.schema = 10005; hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); if(hdr==NULL) return -1; @@ -3516,7 +3792,7 @@ static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){ while(used < length) { if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) { - print_error("ERROR:could not read data from gdat stream"); + print_error("ERROR:could not read data from PROTO stream"); return -2; } used+=cur; @@ -3558,8 +3834,32 @@ static void init_socket() { } +int read_fifo(struct pollfd* pfd, char* buffer, size_t len, time_t timeout) { + int i, bytes_read = 0; + while (bytes_read < len) { + if (poll(pfd, 1, timeout)) { + if (pfd->revents & POLLIN) { + while ((i = read(pfd->fd,buffer+bytes_read,len-bytes_read))==-1 && errno==EINTR); + if (i <= 0) { + break; // writer closed fifo or error + } else { + bytes_read += i; + } + } else + break; // writer closed fifo + } + if (!bytes_read) + return -1; // timeout + } + return bytes_read; +} + // proceed to the next file static void next_file() { + int open_flag = O_RDONLY; + if (fifo) + open_flag |= O_NONBLOCK; + struct stat s; if (verbose) { fprintf(stderr,"Opening %s\n",name); @@ -3572,13 +3872,17 @@ static void next_file() { dproto_replay_check_messages(); usleep(10000); } - if (pd!=0) { - fclose(pd); - } - if ((pd=fopen(name,"r"))==0) { + if (fd > 0) { + close(fd); + } + if ((fd=open(name,open_flag)) <= 0) { print_error("dproto::open failed "); exit(10); } + // setup polling for this file descriptor + pfd.fd = fd; + pfd.events = POLLIN; + if (singlefile==0) { unlink(name); } @@ -3591,6 +3895,7 @@ static gs_retval_t dproto_replay_init(gs_sp_t device) { gs_sp_t gshubtmp; gs_sp_t tempdel; gs_sp_t singlefiletmp; + gs_sp_t fifotmp; if ((name=get_iface_properties(device,"filename"))==0) { print_error("dproto_init::No protobuf \"Filename\" defined"); @@ -3615,6 +3920,16 @@ static gs_retval_t dproto_replay_init(gs_sp_t device) { fprintf(stderr,"SINGLEFILE DISABLED\n"); } } + if ((fifotmp=get_iface_properties(device,"fifo"))!=0) { + if (strncmp(fifotmp,"TRUE",4)==0) { + fifo=1; + if (verbose) + fprintf(stderr,"FIFO ENABLED\n"); + } else { + if (verbose) + fprintf(stderr,"FIFO DISABLED\n"); + } + } if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) { if (verbose) { @@ -3624,7 +3939,7 @@ static gs_retval_t dproto_replay_init(gs_sp_t device) { } if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) { if (verbose) { - fprintf(stderr,"GDAT format using gshub\n"); + fprintf(stderr,"PROTO format using gshub\n"); } gshub=1; } @@ -3662,7 +3977,7 @@ static gs_retval_t dproto_read_socket() } // read one message from a file -static void dproto_read_tuple(){ +static gs_retval_t dproto_read_tuple(){ gs_uint32_t retlen=0; gs_uint32_t done=0; gs_uint32_t pkg_len=0; @@ -3671,12 +3986,15 @@ static void dproto_read_tuple(){ char *timestamp_s; gs_retval_t ret; - if (pd==0) next_file(); + if (fd==-1) next_file(); + + retlen = read_fifo(&pfd, line, 28, 10); // use 10ms timeout - retlen = fread(line, sizeof(char), 28, pd); if(retlen==0){ eof=1; - }else{ + }else if(retlen==-1) { + return -1; // -1 indicates a timeout + }else if(retlen == 28) { pkg_len_s = line+4; timestamp_s = line+12; pkg_len = atoi(pkg_len_s); @@ -3689,7 +4007,8 @@ static void dproto_read_tuple(){ exit(10); } - retlen = fread(line, sizeof(char), pkg_len, pd); + // once we received header we will wait for the main message indefinetly + retlen = read_fifo(&pfd, line, pkg_len, -1); if(retlen +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "errno.h" + +#include "gsconfig.h" +#include "gshub.h" +#include "gstypes.h" +#include "lapp.h" +#include "fta.h" +#include "stdio.h" +#include "stdlib.h" +#include "packet.h" +#include "schemaparser.h" +#include "lfta/rts.h" + +void rts_fta_process_packet(struct packet * p); +void rts_fta_done(); +void fta_init(gs_sp_t device); + +gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization + +#define MAXLINE 1000000 + +static int fd=-1; +struct pollfd pfd; +static struct packet cur_packet; +static gs_sp_t name, this_device; +static gs_uint32_t verbose=0; +static gs_uint32_t startupdelay=0; +static gs_uint32_t singlefile=0; +static gs_uint32_t fifo=0; +static gs_uint32_t gshub=0; +static int socket_desc=0; + +static gs_uint8_t line[MAXLINE]; +static gs_uint32_t lineend=0; +static unsigned long long timestamp; // extract from input header + +//---------------- Specialized proto parsing ----------- +#include "x2ap_streaming.pb-c.h" +#include "ue_context_release.pb-c.h" +#include "lfta/local/dc_release.h" +#include "secondary_rat_data_usage_report.pb-c.h" +#include "lfta/local/rat_data_usage.h" +#include "sgnb_reconfiguration_complete.pb-c.h" +#include "lfta/local/reconfig_all.h" +#include "lfta/local/reconfig_success.h" +#include "lfta/local/reconfig_reject.h" +#include "sgnb_release_confirm.pb-c.h" +#include "lfta/local/sgnb_release_confirm_from_menb_erabs.h" +#include "lfta/local/sgnb_release_confirm_from_menb.h" +#include "sgnb_release_request.pb-c.h" +#include "lfta/local/release_req.h" +#include "sgnb_release_request_acknowledge.pb-c.h" +#include "lfta/local/release_req_ack.h" +#include "sgnb_release_required.pb-c.h" +#include "lfta/local/SgNB_release_rqd.h" +#include "rrctransfer.pb-c.h" +#include "lfta/local/serv_nr_cell.h" +#include "lfta/local/nr_neighbor.h" +#include "lfta/local/serv_cell_beam_csi.h" +#include "lfta/local/neighbor_beam_csi.h" +#include "lfta/local/serv_cell_beam_ssb.h" +#include "lfta/local/neighbor_beam_ssb.h" +#include "sgnb_addition_request_reject.pb-c.h" +#include "lfta/local/sgnb_add_req_reject.h" +#include "sgnb_addition_request_acknowledge.pb-c.h" +#include "lfta/local/eRABs_notadmitted_for_ue.h" +#include "lfta/local/add_req_ack_cellid.h" +#include "lfta/local/eRABs_acked_for_admit_for_ue.h" +#include "lfta/local/SgNB_ack_for_ue_NRfreqs.h" +#include "lfta/local/SgNB_ack_for_add_mod_for_ue.h" +#include "lfta/local/SgNB_ack_for_ue_measurements.h" +#include "lfta/local/SgNB_ack_for_ue_beam_csi.h" +#include "lfta/local/SgNB_ack_for_ue_beam_ssb.h" +#include "sgnb_addition_request.pb-c.h" +#include "lfta/local/sgnb_addreq_gtp_teid.h" +#include "lfta/local/sgnb_addreq_for_ue.h" +#include "lfta/local/sgnb_addreq_for_ue_bearers.h" +#include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h" +#include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h" +#include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h" +#include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h" +#include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h" +#include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h" +#include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h" +#include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h" +#include "sgnb_modification_confirm.pb-c.h" +#include "lfta/local/sgnb_mod_conf.h" +#include "sgnb_modification_request.pb-c.h" +#include "lfta/local/sgnb_mod_req.h" +#include "sgnb_modification_request_acknowledge.pb-c.h" +#include "lfta/local/sgnb_mod_req_ack.h" +#include "sgnb_modification_request_reject.pb-c.h" +#include "lfta/local/sgnb_mod_req_reject.h" +#include "sgnb_modification_required.pb-c.h" +#include "lfta/local/sgnb_mod_required.h" +#include "sgnb_modification_refuse.pb-c.h" +#include "lfta/local/sgnb_mod_refuse.h" +#include "sn_status_transfer.pb-c.h" +#include "lfta/local/sn_status_transfer.h" +gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto ue_context_release.json, path context_release.json + struct _dc_release *dc_release = NULL; + StreamingProtobufs__UEContextRelease *node_0_0 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto ue_context_release.json, path context_release.json + + dc_release = (struct _dc_release *)(cur_packet.record.packed.values); + cur_packet.schema = 201; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->uecontextrelease; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + dc_release->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + dc_release->gnb_id = empty_string; + else + dc_release->gnb_id = hdr->header->gnbid->value; + + if(node_0_0->id_old_enb_ue_x2ap_id_extension){ + dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value; + }else{ + dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0; + } + dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id; + if(node_0_0->id_sgnb_ue_x2ap_id){ + dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value; + }else{ + dc_release->id_SgNB_UE_X2AP_ID = 0; + } + if(node_0_0->id_new_enb_ue_x2ap_id_extension){ + dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value; + }else{ + dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0; + } + dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id; + rts_fta_process_packet(&cur_packet); + streaming_protobufs__uecontext_release__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json + struct _rat_data_usage *rat_data_usage = NULL; + StreamingProtobufs__SecondaryRATDataUsageReport *node_0_0 = NULL; + StreamingProtobufs__SecondaryRATDataUsageReportIEs *node_0_1 = NULL; + StreamingProtobufs__SecondaryRATUsageReportList *node_0_2 = NULL; + StreamingProtobufs__SecondaryRATUsageReportItemIEs *node_0_3 = NULL; + gs_uint32_t i_0_3; + StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL; + StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL; + StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL; + gs_uint32_t i_0_6; + StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json + + rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values); + cur_packet.schema = 1501; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->secondaryratdatausagereport; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + rat_data_usage->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + rat_data_usage->gnb_id = empty_string; + else + rat_data_usage->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_menb_ue_x2ap_id_extension){ + rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; + }else{ + rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_0_2 = node_0_1->id_secondaryratusagereportlist; + if(node_0_1->id_secondaryratusagereportlist){ + for(i_0_3=0;i_0_3n_items; i_0_3++){ + node_0_3 = node_0_2->items[i_0_3]; + node_0_4 = node_0_3->id_secondaryratusagereport_item; + if(node_0_3->id_secondaryratusagereport_item){ + rat_data_usage->e_RAB_ID = node_0_4->e_rab_id; + rat_data_usage->secondaryRATType = node_0_4->secondaryrattype; + node_0_5 = node_0_4->e_rabusagereportlist; + if(node_0_4->e_rabusagereportlist){ + for(i_0_6=0;i_0_6n_items; i_0_6++){ + node_0_6 = node_0_5->items[i_0_6]; + node_0_7 = node_0_6->id_e_rabusagereport_item; + if(node_0_6->id_e_rabusagereport_item){ + rat_data_usage->startTimeStamp = node_0_7->starttimestamp; + rat_data_usage->endTimeStamp = node_0_7->endtimestamp; + rat_data_usage->usageCountDL = node_0_7->usagecountdl; + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + struct _reconfig_all *reconfig_all = NULL; + StreamingProtobufs__SgNBReconfigurationComplete *node_0_0 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + struct _reconfig_success *reconfig_success = NULL; + StreamingProtobufs__SgNBReconfigurationComplete *node_1_0 = NULL; + StreamingProtobufs__ResponseInformationSgNBReconfComp *node_1_1 = NULL; + StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + struct _reconfig_reject *reconfig_reject = NULL; + StreamingProtobufs__SgNBReconfigurationComplete *node_2_0 = NULL; + StreamingProtobufs__ResponseInformationSgNBReconfComp *node_2_1 = NULL; + StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + + reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values); + cur_packet.schema = 103; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbreconfigurationcomplete; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + reconfig_all->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + reconfig_all->gnb_id = empty_string; + else + reconfig_all->gnb_id = hdr->header->gnbid->value; + + reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; + reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id; + if(node_0_0->id_menb_ue_x2ap_id_extension){ + reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value; + }else{ + reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0; + } + rts_fta_process_packet(&cur_packet); +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + + reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values); + cur_packet.schema = 101; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + reconfig_success->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + reconfig_success->gnb_id = empty_string; + else + reconfig_success->gnb_id = hdr->header->gnbid->value; + + reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; + reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; + if(node_1_0->id_menb_ue_x2ap_id_extension){ + reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; + }else{ + reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp; + if(!(node_1_0->id_responseinformationsgnbreconfcomp)){ + rts_fta_process_packet(&cur_packet); + }else{ + node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp; + if(!(node_1_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){ + rts_fta_process_packet(&cur_packet); + }else{ + rts_fta_process_packet(&cur_packet); + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json + + reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values); + cur_packet.schema = 102; + node_2_0 = node_1_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + reconfig_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + reconfig_reject->gnb_id = empty_string; + else + reconfig_reject->gnb_id = hdr->header->gnbid->value; + + reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; + reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; + if(node_2_0->id_menb_ue_x2ap_id_extension){ + reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; + }else{ + reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp; + if(node_2_0->id_responseinformationsgnbreconfcomp){ + node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp; + if(node_2_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){ + if(node_2_2->cause && node_2_2->cause->radionetwork){ + reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value; + }else{ + reconfig_reject->cause_radio_network = -1; + } + if(node_2_2->cause && node_2_2->cause->transport){ + reconfig_reject->cause_transport = node_2_2->cause->transport->value; + }else{ + reconfig_reject->cause_transport = -1; + } + if(node_2_2->cause && node_2_2->cause->protocol){ + reconfig_reject->cause_protocol = node_2_2->cause->protocol->value; + }else{ + reconfig_reject->cause_protocol = -1; + } + if(node_2_2->cause && node_2_2->cause->misc){ + reconfig_reject->cause_misc = node_2_2->cause->misc->value; + }else{ + reconfig_reject->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + } + streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json + struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL; + StreamingProtobufs__SgNBReleaseConfirm *node_0_0 = NULL; + StreamingProtobufs__SgNBReleaseConfirmIEs *node_0_1 = NULL; + StreamingProtobufs__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL; + StreamingProtobufs__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL; + gs_uint32_t i_0_3; + StreamingProtobufs__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL; + StreamingProtobufs__GTPtunnelEndpoint *node_0_5 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json + struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL; + StreamingProtobufs__SgNBReleaseConfirm *node_1_0 = NULL; + StreamingProtobufs__SgNBReleaseConfirmIEs *node_1_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json + + sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values); + cur_packet.schema = 1101; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbreleaseconfirm; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_release_confirm_from_menb_erabs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string; + else + sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_menb_ue_x2ap_id_extension){ + sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist; + if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){ + for(i_0_3=0;i_0_3n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){ + node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3]; + if(node_0_3->en_dc_resourceconfiguration){ + sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources; + }else{ + sgnb_release_confirm_from_menb_erabs->sCGresources = -1; + } + sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id; + if(node_0_3->en_dc_resourceconfiguration){ + sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb; + }else{ + sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1; + } + if(node_0_3->en_dc_resourceconfiguration){ + sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources; + }else{ + sgnb_release_confirm_from_menb_erabs->mCGresources = -1; + } + node_0_4 = node_0_3->sgnbpdcppresent; + if(node_0_3->sgnbpdcppresent){ + node_0_5 = node_0_4->dl_gtptunnelendpoint; + if(node_0_4->dl_gtptunnelendpoint){ + sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid; + sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress; + rts_fta_process_packet(&cur_packet); + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json + + sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values); + cur_packet.schema = 1102; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_release_confirm_from_menb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_release_confirm_from_menb->gnb_id = empty_string; + else + sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value; + + node_1_1 = node_1_0->protocolies; + if(node_1_0->protocolies){ + sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; + sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id; + if(node_1_1->id_menb_ue_x2ap_id_extension){ + sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_release_request.json, path release_req.json + struct _release_req *release_req = NULL; + StreamingProtobufs__SgNBReleaseRequest *node_0_0 = NULL; + StreamingProtobufs__SgNBReleaseRequestIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_release_request.json, path release_req.json + + release_req = (struct _release_req *)(cur_packet.record.packed.values); + cur_packet.schema = 801; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbreleaserequest; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + release_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + release_req->gnb_id = empty_string; + else + release_req->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + if(node_0_1->id_cause && node_0_1->id_cause->protocol){ + release_req->cause_protocol = node_0_1->id_cause->protocol->value; + }else{ + release_req->cause_protocol = -1; + } + release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->transport){ + release_req->cause_transport = node_0_1->id_cause->transport->value; + }else{ + release_req->cause_transport = -1; + } + if(node_0_1->id_menb_ue_x2ap_id_extension){ + release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; + }else{ + release_req->id_MeNB_UE_X2AP_ID_Extension = 0; + } + if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ + release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value; + }else{ + release_req->cause_radio_network = -1; + } + if(node_0_1->id_sgnb_ue_x2ap_id){ + release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value; + }else{ + release_req->id_SgNB_UE_X2AP_ID = 0; + } + if(node_0_1->id_cause && node_0_1->id_cause->misc){ + release_req->cause_misc = node_0_1->id_cause->misc->value; + }else{ + release_req->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json + struct _release_req_ack *release_req_ack = NULL; + StreamingProtobufs__SgNBReleaseRequestAcknowledge *node_0_0 = NULL; + StreamingProtobufs__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json + + release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values); + cur_packet.schema = 901; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbreleaserequestacknowledge; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + release_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + release_req_ack->gnb_id = empty_string; + else + release_req_ack->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_menb_ue_x2ap_id_extension){ + release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value; + }else{ + release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_release_required.json, path release_rqd.json + struct _SgNB_release_rqd *SgNB_release_rqd = NULL; + StreamingProtobufs__SgNBReleaseRequired *node_0_0 = NULL; + StreamingProtobufs__SgNBReleaseRequiredIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_release_required.json, path release_rqd.json + + SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values); + cur_packet.schema = 1001; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbreleaserequired; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_release_rqd->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_release_rqd->gnb_id = empty_string; + else + SgNB_release_rqd->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + if(node_0_1->id_cause && node_0_1->id_cause->protocol){ + SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value; + }else{ + SgNB_release_rqd->cause_protocol = -1; + } + SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->transport){ + SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value; + }else{ + SgNB_release_rqd->cause_transport = -1; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 0){ + SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id; + SgNB_release_rqd->e_RAB_ID0_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID0_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 1){ + SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id; + SgNB_release_rqd->e_RAB_ID1_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID1_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 2){ + SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id; + SgNB_release_rqd->e_RAB_ID2_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID2_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 3){ + SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id; + SgNB_release_rqd->e_RAB_ID3_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID3_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 4){ + SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id; + SgNB_release_rqd->e_RAB_ID4_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID4_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 5){ + SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id; + SgNB_release_rqd->e_RAB_ID5_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID5_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 6){ + SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id; + SgNB_release_rqd->e_RAB_ID6_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID6_exists = 0; + } + if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 7){ + SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id; + SgNB_release_rqd->e_RAB_ID7_exists = 1; + }else{ + SgNB_release_rqd->e_RAB_ID7_exists = 0; + } + if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ + SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value; + }else{ + SgNB_release_rqd->cause_radio_network = -1; + } + SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->misc){ + SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value; + }else{ + SgNB_release_rqd->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _serv_nr_cell *serv_nr_cell = NULL; + StreamingProtobufs__RRCTransfer *node_0_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_0_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_0_2 = NULL; + StreamingProtobufs__RRCContainer *node_0_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_0_4 = NULL; + StreamingProtobufs__MeasurementReport *node_0_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_0_6 = NULL; + StreamingProtobufs__MeasResults *node_0_7 = NULL; + StreamingProtobufs__MeasResultServMOList *node_0_8 = NULL; + StreamingProtobufs__MeasResultServMO *node_0_9 = NULL; + gs_uint32_t i_0_9; + StreamingProtobufs__MeasResultNR *node_0_10 = NULL; + StreamingProtobufs__MeasResult *node_0_11 = NULL; + StreamingProtobufs__CellResults *node_0_12 = NULL; + StreamingProtobufs__MeasQuantityResults *node_0_13 = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _nr_neighbor *nr_neighbor = NULL; + StreamingProtobufs__RRCTransfer *node_1_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_1_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_1_2 = NULL; + StreamingProtobufs__RRCContainer *node_1_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_1_4 = NULL; + StreamingProtobufs__MeasurementReport *node_1_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_1_6 = NULL; + StreamingProtobufs__MeasResults *node_1_7 = NULL; + StreamingProtobufs__MeasResultListNR *node_1_8 = NULL; + StreamingProtobufs__MeasResultNR *node_1_9 = NULL; + gs_uint32_t i_1_9; + StreamingProtobufs__MeasResult *node_1_10 = NULL; + StreamingProtobufs__CellResults *node_1_11 = NULL; + StreamingProtobufs__MeasQuantityResults *node_1_12 = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL; + StreamingProtobufs__RRCTransfer *node_2_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_2_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_2_2 = NULL; + StreamingProtobufs__RRCContainer *node_2_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_2_4 = NULL; + StreamingProtobufs__MeasurementReport *node_2_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_2_6 = NULL; + StreamingProtobufs__MeasResults *node_2_7 = NULL; + StreamingProtobufs__MeasResultServMOList *node_2_8 = NULL; + StreamingProtobufs__MeasResultServMO *node_2_9 = NULL; + gs_uint32_t i_2_9; + StreamingProtobufs__MeasResultNR *node_2_10 = NULL; + StreamingProtobufs__MeasResult *node_2_11 = NULL; + StreamingProtobufs__RsIndexResults *node_2_12 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndexList *node_2_13 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndex *node_2_14 = NULL; + gs_uint32_t i_2_14; + StreamingProtobufs__MeasQuantityResults *node_2_15 = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _neighbor_beam_csi *neighbor_beam_csi = NULL; + StreamingProtobufs__RRCTransfer *node_3_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_3_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_3_2 = NULL; + StreamingProtobufs__RRCContainer *node_3_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_3_4 = NULL; + StreamingProtobufs__MeasurementReport *node_3_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_3_6 = NULL; + StreamingProtobufs__MeasResults *node_3_7 = NULL; + StreamingProtobufs__MeasResultListNR *node_3_8 = NULL; + StreamingProtobufs__MeasResultNR *node_3_9 = NULL; + gs_uint32_t i_3_9; + StreamingProtobufs__MeasResult *node_3_10 = NULL; + StreamingProtobufs__RsIndexResults *node_3_11 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndexList *node_3_12 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndex *node_3_13 = NULL; + gs_uint32_t i_3_13; + StreamingProtobufs__MeasQuantityResults *node_3_14 = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL; + StreamingProtobufs__RRCTransfer *node_4_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_4_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_4_2 = NULL; + StreamingProtobufs__RRCContainer *node_4_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_4_4 = NULL; + StreamingProtobufs__MeasurementReport *node_4_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_4_6 = NULL; + StreamingProtobufs__MeasResults *node_4_7 = NULL; + StreamingProtobufs__MeasResultServMOList *node_4_8 = NULL; + StreamingProtobufs__MeasResultServMO *node_4_9 = NULL; + gs_uint32_t i_4_9; + StreamingProtobufs__MeasResultNR *node_4_10 = NULL; + StreamingProtobufs__MeasResult *node_4_11 = NULL; + StreamingProtobufs__RsIndexResults *node_4_12 = NULL; + StreamingProtobufs__ResultsPerSSBIndexList *node_4_13 = NULL; + StreamingProtobufs__ResultsPerSSBIndex *node_4_14 = NULL; + gs_uint32_t i_4_14; + StreamingProtobufs__MeasQuantityResults *node_4_15 = NULL; +// ------------------------------------------ +// --- Variables for .proto rrctransfer.json, path rrc_metrics.json + struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL; + StreamingProtobufs__RRCTransfer *node_5_0 = NULL; + StreamingProtobufs__RRCTransferIEs *node_5_1 = NULL; + StreamingProtobufs__UENRMeasurement *node_5_2 = NULL; + StreamingProtobufs__RRCContainer *node_5_3 = NULL; + StreamingProtobufs__ULDCCHMessageType *node_5_4 = NULL; + StreamingProtobufs__MeasurementReport *node_5_5 = NULL; + StreamingProtobufs__MeasurementReportIEs *node_5_6 = NULL; + StreamingProtobufs__MeasResults *node_5_7 = NULL; + StreamingProtobufs__MeasResultListNR *node_5_8 = NULL; + StreamingProtobufs__MeasResultNR *node_5_9 = NULL; + gs_uint32_t i_5_9; + StreamingProtobufs__MeasResult *node_5_10 = NULL; + StreamingProtobufs__RsIndexResults *node_5_11 = NULL; + StreamingProtobufs__ResultsPerSSBIndexList *node_5_12 = NULL; + StreamingProtobufs__ResultsPerSSBIndex *node_5_13 = NULL; + gs_uint32_t i_5_13; + StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values); + cur_packet.schema = 1; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->rrctransfer; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + serv_nr_cell->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + serv_nr_cell->gnb_id = empty_string; + else + serv_nr_cell->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->rrctransfer_ies; + if(node_0_0->rrctransfer_ies){ + serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + node_0_2 = node_0_1->id_uenrmeasurement; + if(node_0_1->id_uenrmeasurement){ + node_0_3 = node_0_2->uenrmeasurements; + if(node_0_2->uenrmeasurements){ + node_0_4 = node_0_3->ul_dcch_message; + if(node_0_3->ul_dcch_message){ + node_0_5 = node_0_4->measurementreport; + if(node_0_4->measurementreport){ + node_0_6 = node_0_5->measurementreport; + if(node_0_5->measurementreport){ + node_0_7 = node_0_6->measresults; + if(node_0_6->measresults){ + node_0_8 = node_0_7->measresultservingmolist; + if(node_0_7->measresultservingmolist){ + for(i_0_9=0;i_0_9n_items; i_0_9++){ + node_0_9 = node_0_8->items[i_0_9]; + serv_nr_cell->servCellID = node_0_9->servcellid; + node_0_10 = node_0_9->measresultservingcell; + if(node_0_9->measresultservingcell){ + if(node_0_10->physcellid){ + serv_nr_cell->physCellId = node_0_10->physcellid->value; + serv_nr_cell->physCellId_exists = 1; + }else{ + serv_nr_cell->physCellId_exists = 0; + } + node_0_11 = node_0_10->measresult; + if(node_0_10->measresult){ + node_0_12 = node_0_11->cellresults; + if(node_0_11->cellresults){ + node_0_13 = node_0_12->resultsssb_cell; + if(node_0_12->resultsssb_cell){ + if(node_0_13->rsrq){ + serv_nr_cell->rsrq = node_0_13->rsrq->value; + serv_nr_cell->rsrq_exists = 1; + }else{ + serv_nr_cell->rsrq_exists = 0; + } + if(node_0_13->rsrp){ + serv_nr_cell->rsrp = node_0_13->rsrp->value; + serv_nr_cell->rsrp_exists = 1; + }else{ + serv_nr_cell->rsrp_exists = 0; + } + if(node_0_13->sinr){ + serv_nr_cell->sinr = node_0_13->sinr->value; + serv_nr_cell->sinr_exists = 1; + }else{ + serv_nr_cell->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values); + cur_packet.schema = 4; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + nr_neighbor->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + nr_neighbor->gnb_id = empty_string; + else + nr_neighbor->gnb_id = hdr->header->gnbid->value; + + node_1_1 = node_1_0->rrctransfer_ies; + if(node_1_0->rrctransfer_ies){ + nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; + nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id; + node_1_2 = node_1_1->id_uenrmeasurement; + if(node_1_1->id_uenrmeasurement){ + node_1_3 = node_1_2->uenrmeasurements; + if(node_1_2->uenrmeasurements){ + node_1_4 = node_1_3->ul_dcch_message; + if(node_1_3->ul_dcch_message){ + node_1_5 = node_1_4->measurementreport; + if(node_1_4->measurementreport){ + node_1_6 = node_1_5->measurementreport; + if(node_1_5->measurementreport){ + node_1_7 = node_1_6->measresults; + if(node_1_6->measresults){ + node_1_8 = node_1_7->measresultlistnr; + if(node_1_7->measresultlistnr){ + for(i_1_9=0;i_1_9n_items; i_1_9++){ + node_1_9 = node_1_8->items[i_1_9]; + if(node_1_9->physcellid){ + nr_neighbor->physCellId = node_1_9->physcellid->value; + nr_neighbor->physCellId_exists = 1; + }else{ + nr_neighbor->physCellId_exists = 0; + } + node_1_10 = node_1_9->measresult; + if(node_1_9->measresult){ + node_1_11 = node_1_10->cellresults; + if(node_1_10->cellresults){ + node_1_12 = node_1_11->resultsssb_cell; + if(node_1_11->resultsssb_cell){ + if(node_1_12->rsrq){ + nr_neighbor->rsrq = node_1_12->rsrq->value; + nr_neighbor->rsrq_exists = 1; + }else{ + nr_neighbor->rsrq_exists = 0; + } + if(node_1_12->rsrp){ + nr_neighbor->rsrp = node_1_12->rsrp->value; + nr_neighbor->rsrp_exists = 1; + }else{ + nr_neighbor->rsrp_exists = 0; + } + if(node_1_12->sinr){ + nr_neighbor->sinr = node_1_12->sinr->value; + nr_neighbor->sinr_exists = 1; + }else{ + nr_neighbor->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values); + cur_packet.schema = 2; + node_2_0 = node_1_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + serv_cell_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + serv_cell_beam_csi->gnb_id = empty_string; + else + serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value; + + node_2_1 = node_2_0->rrctransfer_ies; + if(node_2_0->rrctransfer_ies){ + serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id; + serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id; + node_2_2 = node_2_1->id_uenrmeasurement; + if(node_2_1->id_uenrmeasurement){ + node_2_3 = node_2_2->uenrmeasurements; + if(node_2_2->uenrmeasurements){ + node_2_4 = node_2_3->ul_dcch_message; + if(node_2_3->ul_dcch_message){ + node_2_5 = node_2_4->measurementreport; + if(node_2_4->measurementreport){ + node_2_6 = node_2_5->measurementreport; + if(node_2_5->measurementreport){ + node_2_7 = node_2_6->measresults; + if(node_2_6->measresults){ + node_2_8 = node_2_7->measresultservingmolist; + if(node_2_7->measresultservingmolist){ + for(i_2_9=0;i_2_9n_items; i_2_9++){ + node_2_9 = node_2_8->items[i_2_9]; + serv_cell_beam_csi->servCellID = node_2_9->servcellid; + node_2_10 = node_2_9->measresultservingcell; + if(node_2_9->measresultservingcell){ + if(node_2_10->physcellid){ + serv_cell_beam_csi->physCellId = node_2_10->physcellid->value; + serv_cell_beam_csi->physCellId_exists = 1; + }else{ + serv_cell_beam_csi->physCellId_exists = 0; + } + node_2_11 = node_2_10->measresult; + if(node_2_10->measresult){ + node_2_12 = node_2_11->rsindexresults; + if(node_2_11->rsindexresults){ + node_2_13 = node_2_12->resultscsi_rs_indexes; + if(node_2_12->resultscsi_rs_indexes){ + for(i_2_14=0;i_2_14n_items; i_2_14++){ + node_2_14 = node_2_13->items[i_2_14]; + serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index; + node_2_15 = node_2_14->csi_rs_results; + if(node_2_14->csi_rs_results){ + if(node_2_15->rsrq){ + serv_cell_beam_csi->rsrq = node_2_15->rsrq->value; + serv_cell_beam_csi->rsrq_exists = 1; + }else{ + serv_cell_beam_csi->rsrq_exists = 0; + } + if(node_2_15->rsrp){ + serv_cell_beam_csi->rsrp = node_2_15->rsrp->value; + serv_cell_beam_csi->rsrp_exists = 1; + }else{ + serv_cell_beam_csi->rsrp_exists = 0; + } + if(node_2_15->sinr){ + serv_cell_beam_csi->sinr = node_2_15->sinr->value; + serv_cell_beam_csi->sinr_exists = 1; + }else{ + serv_cell_beam_csi->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values); + cur_packet.schema = 5; + node_3_0 = node_2_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + neighbor_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + neighbor_beam_csi->gnb_id = empty_string; + else + neighbor_beam_csi->gnb_id = hdr->header->gnbid->value; + + node_3_1 = node_3_0->rrctransfer_ies; + if(node_3_0->rrctransfer_ies){ + neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id; + neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id; + node_3_2 = node_3_1->id_uenrmeasurement; + if(node_3_1->id_uenrmeasurement){ + node_3_3 = node_3_2->uenrmeasurements; + if(node_3_2->uenrmeasurements){ + node_3_4 = node_3_3->ul_dcch_message; + if(node_3_3->ul_dcch_message){ + node_3_5 = node_3_4->measurementreport; + if(node_3_4->measurementreport){ + node_3_6 = node_3_5->measurementreport; + if(node_3_5->measurementreport){ + node_3_7 = node_3_6->measresults; + if(node_3_6->measresults){ + node_3_8 = node_3_7->measresultlistnr; + if(node_3_7->measresultlistnr){ + for(i_3_9=0;i_3_9n_items; i_3_9++){ + node_3_9 = node_3_8->items[i_3_9]; + if(node_3_9->physcellid){ + neighbor_beam_csi->physCellId = node_3_9->physcellid->value; + neighbor_beam_csi->physCellId_exists = 1; + }else{ + neighbor_beam_csi->physCellId_exists = 0; + } + node_3_10 = node_3_9->measresult; + if(node_3_9->measresult){ + node_3_11 = node_3_10->rsindexresults; + if(node_3_10->rsindexresults){ + node_3_12 = node_3_11->resultscsi_rs_indexes; + if(node_3_11->resultscsi_rs_indexes){ + for(i_3_13=0;i_3_13n_items; i_3_13++){ + node_3_13 = node_3_12->items[i_3_13]; + neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index; + node_3_14 = node_3_13->csi_rs_results; + if(node_3_13->csi_rs_results){ + if(node_3_14->rsrq){ + neighbor_beam_csi->rsrq = node_3_14->rsrq->value; + neighbor_beam_csi->rsrq_exists = 1; + }else{ + neighbor_beam_csi->rsrq_exists = 0; + } + if(node_3_14->rsrp){ + neighbor_beam_csi->rsrp = node_3_14->rsrp->value; + neighbor_beam_csi->rsrp_exists = 1; + }else{ + neighbor_beam_csi->rsrp_exists = 0; + } + if(node_3_14->sinr){ + neighbor_beam_csi->sinr = node_3_14->sinr->value; + neighbor_beam_csi->sinr_exists = 1; + }else{ + neighbor_beam_csi->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 3; + node_4_0 = node_3_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + serv_cell_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + serv_cell_beam_ssb->gnb_id = empty_string; + else + serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value; + + node_4_1 = node_4_0->rrctransfer_ies; + if(node_4_0->rrctransfer_ies){ + serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id; + serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id; + node_4_2 = node_4_1->id_uenrmeasurement; + if(node_4_1->id_uenrmeasurement){ + node_4_3 = node_4_2->uenrmeasurements; + if(node_4_2->uenrmeasurements){ + node_4_4 = node_4_3->ul_dcch_message; + if(node_4_3->ul_dcch_message){ + node_4_5 = node_4_4->measurementreport; + if(node_4_4->measurementreport){ + node_4_6 = node_4_5->measurementreport; + if(node_4_5->measurementreport){ + node_4_7 = node_4_6->measresults; + if(node_4_6->measresults){ + node_4_8 = node_4_7->measresultservingmolist; + if(node_4_7->measresultservingmolist){ + for(i_4_9=0;i_4_9n_items; i_4_9++){ + node_4_9 = node_4_8->items[i_4_9]; + serv_cell_beam_ssb->servCellID = node_4_9->servcellid; + node_4_10 = node_4_9->measresultservingcell; + if(node_4_9->measresultservingcell){ + if(node_4_10->physcellid){ + serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value; + serv_cell_beam_ssb->physCellId_exists = 1; + }else{ + serv_cell_beam_ssb->physCellId_exists = 0; + } + node_4_11 = node_4_10->measresult; + if(node_4_10->measresult){ + node_4_12 = node_4_11->rsindexresults; + if(node_4_11->rsindexresults){ + node_4_13 = node_4_12->resultsssb_indexes; + if(node_4_12->resultsssb_indexes){ + for(i_4_14=0;i_4_14n_items; i_4_14++){ + node_4_14 = node_4_13->items[i_4_14]; + serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index; + node_4_15 = node_4_14->ssb_results; + if(node_4_14->ssb_results){ + if(node_4_15->rsrq){ + serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value; + serv_cell_beam_ssb->rsrq_exists = 1; + }else{ + serv_cell_beam_ssb->rsrq_exists = 0; + } + if(node_4_15->rsrp){ + serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value; + serv_cell_beam_ssb->rsrp_exists = 1; + }else{ + serv_cell_beam_ssb->rsrp_exists = 0; + } + if(node_4_15->sinr){ + serv_cell_beam_ssb->sinr = node_4_15->sinr->value; + serv_cell_beam_ssb->sinr_exists = 1; + }else{ + serv_cell_beam_ssb->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json + + neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 6; + node_5_0 = node_4_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + neighbor_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + neighbor_beam_ssb->gnb_id = empty_string; + else + neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value; + + node_5_1 = node_5_0->rrctransfer_ies; + if(node_5_0->rrctransfer_ies){ + neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id; + neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id; + node_5_2 = node_5_1->id_uenrmeasurement; + if(node_5_1->id_uenrmeasurement){ + node_5_3 = node_5_2->uenrmeasurements; + if(node_5_2->uenrmeasurements){ + node_5_4 = node_5_3->ul_dcch_message; + if(node_5_3->ul_dcch_message){ + node_5_5 = node_5_4->measurementreport; + if(node_5_4->measurementreport){ + node_5_6 = node_5_5->measurementreport; + if(node_5_5->measurementreport){ + node_5_7 = node_5_6->measresults; + if(node_5_6->measresults){ + node_5_8 = node_5_7->measresultlistnr; + if(node_5_7->measresultlistnr){ + for(i_5_9=0;i_5_9n_items; i_5_9++){ + node_5_9 = node_5_8->items[i_5_9]; + if(node_5_9->physcellid){ + neighbor_beam_ssb->physCellId = node_5_9->physcellid->value; + neighbor_beam_ssb->physCellId_exists = 1; + }else{ + neighbor_beam_ssb->physCellId_exists = 0; + } + node_5_10 = node_5_9->measresult; + if(node_5_9->measresult){ + node_5_11 = node_5_10->rsindexresults; + if(node_5_10->rsindexresults){ + node_5_12 = node_5_11->resultsssb_indexes; + if(node_5_11->resultsssb_indexes){ + for(i_5_13=0;i_5_13n_items; i_5_13++){ + node_5_13 = node_5_12->items[i_5_13]; + neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index; + node_5_14 = node_5_13->ssb_results; + if(node_5_13->ssb_results){ + if(node_5_14->rsrq){ + neighbor_beam_ssb->rsrq = node_5_14->rsrq->value; + neighbor_beam_ssb->rsrq_exists = 1; + }else{ + neighbor_beam_ssb->rsrq_exists = 0; + } + if(node_5_14->rsrp){ + neighbor_beam_ssb->rsrp = node_5_14->rsrp->value; + neighbor_beam_ssb->rsrp_exists = 1; + }else{ + neighbor_beam_ssb->rsrp_exists = 0; + } + if(node_5_14->sinr){ + neighbor_beam_ssb->sinr = node_5_14->sinr->value; + neighbor_beam_ssb->sinr_exists = 1; + }else{ + neighbor_beam_ssb->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json + struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL; + StreamingProtobufs__SgNBAdditionRequestReject *node_0_0 = NULL; + StreamingProtobufs__Cause *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json + + sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values); + cur_packet.schema = 701; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbadditionrequestreject; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_add_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_add_req_reject->gnb_id = empty_string; + else + sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value; + + sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; + if(node_0_0->id_sgnb_ue_x2ap_id){ + sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value; + sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 1; + }else{ + sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0; + } + node_0_1 = node_0_0->id_cause; + if(node_0_0->id_cause){ + if(node_0_1->radionetwork){ + sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value; + }else{ + sgnb_add_req_reject->cause_radio_network = -1; + } + if(node_0_1->transport){ + sgnb_add_req_reject->cause_transport = node_0_1->transport->value; + }else{ + sgnb_add_req_reject->cause_transport = -1; + } + if(node_0_1->protocol){ + sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value; + }else{ + sgnb_add_req_reject->cause_protocol = -1; + } + if(node_0_1->misc){ + sgnb_add_req_reject->cause_misc = node_0_1->misc->value; + }else{ + sgnb_add_req_reject->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_0_0 = NULL; + StreamingProtobufs__ERABList *node_0_1 = NULL; + StreamingProtobufs__ERABItemIEs *node_0_2 = NULL; + gs_uint32_t i_0_2; + StreamingProtobufs__ERABItem *node_0_3 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _add_req_ack_cellid *add_req_ack_cellid = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL; + StreamingProtobufs__CGConfig *node_1_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_1_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_1_3 = NULL; + StreamingProtobufs__RRCReconfiguration *node_1_4 = NULL; + StreamingProtobufs__RRCReconfigurationIEs *node_1_5 = NULL; + StreamingProtobufs__CellGroupConfig *node_1_6 = NULL; + StreamingProtobufs__SpCellConfig *node_1_7 = NULL; + StreamingProtobufs__ReconfigurationWithSync *node_1_8 = NULL; + StreamingProtobufs__ServingCellConfigCommon *node_1_9 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL; + StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_2_1 = NULL; + StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_2_2 = NULL; + gs_uint32_t i_2_2; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL; + StreamingProtobufs__CGConfig *node_3_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_3_3 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL; + StreamingProtobufs__CGConfig *node_4_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_4_3 = NULL; + StreamingProtobufs__RadioBearerConfig *node_4_4 = NULL; + StreamingProtobufs__DRBToAddModList *node_4_5 = NULL; + StreamingProtobufs__DRBToAddMod *node_4_6 = NULL; + gs_uint32_t i_4_6; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL; + StreamingProtobufs__CGConfig *node_5_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_5_3 = NULL; + StreamingProtobufs__MeasResultList2NR *node_5_4 = NULL; + StreamingProtobufs__MeasResult2NR *node_5_5 = NULL; + gs_uint32_t i_5_5; + StreamingProtobufs__MeasResultNR *node_5_6 = NULL; + StreamingProtobufs__MeasResult *node_5_7 = NULL; + StreamingProtobufs__CellResults *node_5_8 = NULL; + StreamingProtobufs__MeasQuantityResults *node_5_9 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL; + StreamingProtobufs__CGConfig *node_6_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_6_3 = NULL; + StreamingProtobufs__MeasResultList2NR *node_6_4 = NULL; + StreamingProtobufs__MeasResult2NR *node_6_5 = NULL; + gs_uint32_t i_6_5; + StreamingProtobufs__MeasResultNR *node_6_6 = NULL; + StreamingProtobufs__MeasResult *node_6_7 = NULL; + StreamingProtobufs__RsIndexResults *node_6_8 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndexList *node_6_9 = NULL; + StreamingProtobufs__ResultsPerCSIRSIndex *node_6_10 = NULL; + gs_uint32_t i_6_10; + StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_7_0 = NULL; + StreamingProtobufs__CGConfig *node_7_1 = NULL; + StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_7_2 = NULL; + StreamingProtobufs__CGConfigIEs *node_7_3 = NULL; + StreamingProtobufs__MeasResultList2NR *node_7_4 = NULL; + StreamingProtobufs__MeasResult2NR *node_7_5 = NULL; + gs_uint32_t i_7_5; + StreamingProtobufs__MeasResultNR *node_7_6 = NULL; + StreamingProtobufs__MeasResult *node_7_7 = NULL; + StreamingProtobufs__RsIndexResults *node_7_8 = NULL; + StreamingProtobufs__ResultsPerSSBIndexList *node_7_9 = NULL; + StreamingProtobufs__ResultsPerSSBIndex *node_7_10 = NULL; + gs_uint32_t i_7_10; + StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values); + cur_packet.schema = 501; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbadditionrequestacknowledge; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + eRABs_notadmitted_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + eRABs_notadmitted_for_ue->gnb_id = empty_string; + else + eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value; + + eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id; + eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id; + if(node_0_0->id_menb_ue_x2ap_id_extension){ + eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value; + }else{ + eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_0_1 = node_0_0->id_e_rabs_notadmitted_list; + if(node_0_0->id_e_rabs_notadmitted_list){ + for(i_0_2=0;i_0_2n_items; i_0_2++){ + node_0_2 = node_0_1->items[i_0_2]; + node_0_3 = node_0_2->id_e_rab_item; + if(node_0_2->id_e_rab_item){ + eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id; + if(node_0_3->cause && node_0_3->cause->transport){ + eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value; + }else{ + eRABs_notadmitted_for_ue->cause_transport = -1; + } + if(node_0_3->cause && node_0_3->cause->protocol){ + eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value; + }else{ + eRABs_notadmitted_for_ue->cause_protocol = -1; + } + if(node_0_3->cause && node_0_3->cause->misc){ + eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value; + }else{ + eRABs_notadmitted_for_ue->cause_misc = -1; + } + if(node_0_3->cause && node_0_3->cause->radionetwork){ + eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value; + }else{ + eRABs_notadmitted_for_ue->cause_radio_network = -1; + } + rts_fta_process_packet(&cur_packet); + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + add_req_ack_cellid = (struct _add_req_ack_cellid *)(cur_packet.record.packed.values); + cur_packet.schema = 10000; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + add_req_ack_cellid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + add_req_ack_cellid->gnb_id = empty_string; + else + add_req_ack_cellid->gnb_id = hdr->header->gnbid->value; + + add_req_ack_cellid->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id; + add_req_ack_cellid->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id; + if(node_1_0->id_menb_ue_x2ap_id_extension){ + add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value; + }else{ + add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_1_1 = node_1_0->id_sgnbtomenbcontainer; + if(node_1_0->id_sgnbtomenbcontainer){ + node_1_2 = node_1_1->criticalextensionschoice1; + if(node_1_1->criticalextensionschoice1){ + node_1_3 = node_1_2->protocolies; + if(node_1_2->protocolies){ + node_1_4 = node_1_3->scg_cellgroupconfig; + if(node_1_3->scg_cellgroupconfig){ + node_1_5 = node_1_4->rrcreconfiguration; + if(node_1_4->rrcreconfiguration){ + node_1_6 = node_1_5->secondarycellgroup; + if(node_1_5->secondarycellgroup){ + node_1_7 = node_1_6->spcellconfig; + if(node_1_6->spcellconfig){ + node_1_8 = node_1_7->reconfigurationwithsync; + if(node_1_7->reconfigurationwithsync){ + node_1_9 = node_1_8->spcellconfigcommon; + if(node_1_8->spcellconfigcommon){ + if(node_1_9->physcellid){ + add_req_ack_cellid->physCellId = node_1_9->physcellid->value; + add_req_ack_cellid->physCellId_exists = 1; + }else{ + add_req_ack_cellid->physCellId_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values); + cur_packet.schema = 502; + node_2_0 = node_1_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + eRABs_acked_for_admit_for_ue->gnb_id = empty_string; + else + eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value; + + eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id; + eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id; + if(node_2_0->id_menb_ue_x2ap_id_extension){ + eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value; + }else{ + eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_2_1 = node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist; + if(node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){ + for(i_2_2=0;i_2_2n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_2_2++){ + node_2_2 = node_2_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_2_2]; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority){ + eRABs_acked_for_admit_for_ue->ARP = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel; + }else{ + eRABs_acked_for_admit_for_ue->ARP = 0; + } + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ + eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid; + eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1; + }else{ + eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0; + } + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->mCGresources = node_2_2->en_dc_resourceconfiguration->mcgresources; + eRABs_acked_for_admit_for_ue->mCGresources_exists = 1; + }else{ + eRABs_acked_for_admit_for_ue->mCGresources_exists = 0; + } + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){ + eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress; + eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1; + }else{ + eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0; + } + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_2_2->en_dc_resourceconfiguration->pdcpatsgnb; + eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1; + }else{ + eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0; + } + if(node_2_2->en_dc_resourceconfiguration){ + eRABs_acked_for_admit_for_ue->sCGresources = node_2_2->en_dc_resourceconfiguration->scgresources; + eRABs_acked_for_admit_for_ue->sCGresources_exists = 1; + }else{ + eRABs_acked_for_admit_for_ue->sCGresources_exists = 0; + } + eRABs_acked_for_admit_for_ue->e_RAB_ID = node_2_2->e_rab_id; + if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){ + eRABs_acked_for_admit_for_ue->qCI = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci; + }else{ + eRABs_acked_for_admit_for_ue->qCI = 0; + } + rts_fta_process_packet(&cur_packet); + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values); + cur_packet.schema = 503; + node_3_0 = node_2_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string; + else + SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value; + + SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id; + if(node_3_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value; + }else{ + SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_3_1 = node_3_0->id_sgnbtomenbcontainer; + if(node_3_0->id_sgnbtomenbcontainer){ + node_3_2 = node_3_1->criticalextensionschoice1; + if(node_3_1->criticalextensionschoice1){ + node_3_3 = node_3_2->protocolies; + if(node_3_2->protocolies){ + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 0 && node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 1 && node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 2 && node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 3 && node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 4 && node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 5 && node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 6 && node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0; + } + if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 7 && node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value; + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 0){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_3_3->candidateservingfreqlistnr->items[0]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 1){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_3_3->candidateservingfreqlistnr->items[1]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 2){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_3_3->candidateservingfreqlistnr->items[2]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 3){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_3_3->candidateservingfreqlistnr->items[3]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 4){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_3_3->candidateservingfreqlistnr->items[4]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 5){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_3_3->candidateservingfreqlistnr->items[5]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 6){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_3_3->candidateservingfreqlistnr->items[6]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0; + } + if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 7){ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_3_3->candidateservingfreqlistnr->items[7]; + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1; + }else{ + SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values); + cur_packet.schema = 504; + node_4_0 = node_3_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string; + else + SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value; + + SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id; + SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id; + if(node_4_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value; + }else{ + SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_4_1 = node_4_0->id_sgnbtomenbcontainer; + if(node_4_0->id_sgnbtomenbcontainer){ + node_4_2 = node_4_1->criticalextensionschoice1; + if(node_4_1->criticalextensionschoice1){ + node_4_3 = node_4_2->protocolies; + if(node_4_2->protocolies){ + node_4_4 = node_4_3->scg_rb_config; + if(node_4_3->scg_rb_config){ + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 0){ + SgNB_ack_for_add_mod_for_ue->toRelease0 = node_4_4->drb_toreleaselist->items[0]; + SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0; + } + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 1){ + SgNB_ack_for_add_mod_for_ue->toRelease1 = node_4_4->drb_toreleaselist->items[1]; + SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0; + } + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 2){ + SgNB_ack_for_add_mod_for_ue->toRelease2 = node_4_4->drb_toreleaselist->items[2]; + SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0; + } + if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 3){ + SgNB_ack_for_add_mod_for_ue->toRelease3 = node_4_4->drb_toreleaselist->items[3]; + SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0; + } + node_4_5 = node_4_4->drb_toaddmodlist; + if(node_4_4->drb_toaddmodlist){ + for(i_4_6=0;i_4_6n_items; i_4_6++){ + node_4_6 = node_4_5->items[i_4_6]; + if(node_4_6->recoverpdcp){ + SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_4_6->recoverpdcp->value; + SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0; + } + if(node_4_6->reestablishpdcp){ + SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_4_6->reestablishpdcp->value; + SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1; + }else{ + SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0; + } + SgNB_ack_for_add_mod_for_ue->drb_Identity = node_4_6->drb_identity; + SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_4_6->eps_beareridentity; + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values); + cur_packet.schema = 505; + node_5_0 = node_4_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_ack_for_ue_measurements->gnb_id = empty_string; + else + SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value; + + SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id; + if(node_5_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value; + }else{ + SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_5_1 = node_5_0->id_sgnbtomenbcontainer; + if(node_5_0->id_sgnbtomenbcontainer){ + node_5_2 = node_5_1->criticalextensionschoice1; + if(node_5_1->criticalextensionschoice1){ + node_5_3 = node_5_2->protocolies; + if(node_5_2->protocolies){ + node_5_4 = node_5_3->candidatecellinfolistsn; + if(node_5_3->candidatecellinfolistsn){ + for(i_5_5=0;i_5_5n_items; i_5_5++){ + node_5_5 = node_5_4->items[i_5_5]; + if(node_5_5->ssbfrequency){ + SgNB_ack_for_ue_measurements->ssbFrequency = node_5_5->ssbfrequency->value; + SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0; + } + if(node_5_5->reffreqcsi_rs){ + SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value; + SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0; + } + node_5_6 = node_5_5->measresultservingcell; + if(node_5_5->measresultservingcell){ + if(node_5_6->physcellid){ + SgNB_ack_for_ue_measurements->physCellId = node_5_6->physcellid->value; + SgNB_ack_for_ue_measurements->physCellId_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->physCellId_exists = 0; + } + node_5_7 = node_5_6->measresult; + if(node_5_6->measresult){ + node_5_8 = node_5_7->cellresults; + if(node_5_7->cellresults){ + node_5_9 = node_5_8->resultscsi_rs_cell; + if(node_5_8->resultscsi_rs_cell){ + if(node_5_9->rsrq){ + SgNB_ack_for_ue_measurements->rsrq = node_5_9->rsrq->value; + SgNB_ack_for_ue_measurements->rsrq_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->rsrq_exists = 0; + } + if(node_5_9->rsrp){ + SgNB_ack_for_ue_measurements->rsrp = node_5_9->rsrp->value; + SgNB_ack_for_ue_measurements->rsrp_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->rsrp_exists = 0; + } + if(node_5_9->sinr){ + SgNB_ack_for_ue_measurements->sinr = node_5_9->sinr->value; + SgNB_ack_for_ue_measurements->sinr_exists = 1; + }else{ + SgNB_ack_for_ue_measurements->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values); + cur_packet.schema = 506; + node_6_0 = node_5_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_ack_for_ue_beam_csi->gnb_id = empty_string; + else + SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value; + + SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id; + if(node_6_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value; + }else{ + SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_6_1 = node_6_0->id_sgnbtomenbcontainer; + if(node_6_0->id_sgnbtomenbcontainer){ + node_6_2 = node_6_1->criticalextensionschoice1; + if(node_6_1->criticalextensionschoice1){ + node_6_3 = node_6_2->protocolies; + if(node_6_2->protocolies){ + node_6_4 = node_6_3->candidatecellinfolistsn; + if(node_6_3->candidatecellinfolistsn){ + for(i_6_5=0;i_6_5n_items; i_6_5++){ + node_6_5 = node_6_4->items[i_6_5]; + if(node_6_5->ssbfrequency){ + SgNB_ack_for_ue_beam_csi->ssbFrequency = node_6_5->ssbfrequency->value; + SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0; + } + if(node_6_5->reffreqcsi_rs){ + SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value; + SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0; + } + node_6_6 = node_6_5->measresultservingcell; + if(node_6_5->measresultservingcell){ + if(node_6_6->physcellid){ + SgNB_ack_for_ue_beam_csi->physCellId = node_6_6->physcellid->value; + SgNB_ack_for_ue_beam_csi->physCellId_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->physCellId_exists = 0; + } + node_6_7 = node_6_6->measresult; + if(node_6_6->measresult){ + node_6_8 = node_6_7->rsindexresults; + if(node_6_7->rsindexresults){ + node_6_9 = node_6_8->resultscsi_rs_indexes; + if(node_6_8->resultscsi_rs_indexes){ + for(i_6_10=0;i_6_10n_items; i_6_10++){ + node_6_10 = node_6_9->items[i_6_10]; + SgNB_ack_for_ue_beam_csi->csi_rs_index = node_6_10->csi_rs_index; + node_6_11 = node_6_10->csi_rs_results; + if(node_6_10->csi_rs_results){ + if(node_6_11->rsrq){ + SgNB_ack_for_ue_beam_csi->rsrq = node_6_11->rsrq->value; + SgNB_ack_for_ue_beam_csi->rsrq_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->rsrq_exists = 0; + } + if(node_6_11->rsrp){ + SgNB_ack_for_ue_beam_csi->rsrp = node_6_11->rsrp->value; + SgNB_ack_for_ue_beam_csi->rsrp_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->rsrp_exists = 0; + } + if(node_6_11->sinr){ + SgNB_ack_for_ue_beam_csi->sinr = node_6_11->sinr->value; + SgNB_ack_for_ue_beam_csi->sinr_exists = 1; + }else{ + SgNB_ack_for_ue_beam_csi->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json + + SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 507; + node_7_0 = node_6_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string; + else + SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value; + + SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_7_0->id_menb_ue_x2ap_id; + SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_7_0->id_sgnb_ue_x2ap_id; + if(node_7_0->id_menb_ue_x2ap_id_extension){ + SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_0->id_menb_ue_x2ap_id_extension->value; + }else{ + SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_7_1 = node_7_0->id_sgnbtomenbcontainer; + if(node_7_0->id_sgnbtomenbcontainer){ + node_7_2 = node_7_1->criticalextensionschoice1; + if(node_7_1->criticalextensionschoice1){ + node_7_3 = node_7_2->protocolies; + if(node_7_2->protocolies){ + node_7_4 = node_7_3->candidatecellinfolistsn; + if(node_7_3->candidatecellinfolistsn){ + for(i_7_5=0;i_7_5n_items; i_7_5++){ + node_7_5 = node_7_4->items[i_7_5]; + if(node_7_5->ssbfrequency){ + SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_7_5->ssbfrequency->value; + SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0; + } + if(node_7_5->reffreqcsi_rs){ + SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_7_5->reffreqcsi_rs->value; + SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0; + } + node_7_6 = node_7_5->measresultservingcell; + if(node_7_5->measresultservingcell){ + if(node_7_6->physcellid){ + SgNB_ack_for_ue_beam_ssb->physCellId = node_7_6->physcellid->value; + SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0; + } + node_7_7 = node_7_6->measresult; + if(node_7_6->measresult){ + node_7_8 = node_7_7->rsindexresults; + if(node_7_7->rsindexresults){ + node_7_9 = node_7_8->resultsssb_indexes; + if(node_7_8->resultsssb_indexes){ + for(i_7_10=0;i_7_10n_items; i_7_10++){ + node_7_10 = node_7_9->items[i_7_10]; + SgNB_ack_for_ue_beam_ssb->ssb_Index = node_7_10->ssb_index; + node_7_11 = node_7_10->ssb_results; + if(node_7_10->ssb_results){ + if(node_7_11->rsrq){ + SgNB_ack_for_ue_beam_ssb->rsrq = node_7_11->rsrq->value; + SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0; + } + if(node_7_11->rsrp){ + SgNB_ack_for_ue_beam_ssb->rsrp = node_7_11->rsrp->value; + SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0; + } + if(node_7_11->sinr){ + SgNB_ack_for_ue_beam_ssb->sinr = node_7_11->sinr->value; + SgNB_ack_for_ue_beam_ssb->sinr_exists = 1; + }else{ + SgNB_ack_for_ue_beam_ssb->sinr_exists = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_gtp_teid *sgnb_addreq_gtp_teid = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_0_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_0_1 = NULL; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_0_2 = NULL; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_0_3 = NULL; + gs_uint32_t i_0_3; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_0_4 = NULL; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqSgNBPDCPpresent *node_0_5 = NULL; + StreamingProtobufs__GTPtunnelEndpoint *node_0_6 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_1_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_1_1 = NULL; + StreamingProtobufs__ECGI *node_1_2 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_2_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_2_1 = NULL; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_2_2 = NULL; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_2_3 = NULL; + gs_uint32_t i_2_3; + StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_2_4 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_3_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_3_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_3_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_3_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_3_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_3_6 = NULL; + gs_uint32_t i_3_6; + StreamingProtobufs__MeasResultNR *node_3_7 = NULL; + StreamingProtobufs__MeasResult *node_3_8 = NULL; + StreamingProtobufs__CellResults *node_3_9 = NULL; + StreamingProtobufs__MeasQuantityResults *node_3_10 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_4_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_4_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_4_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_4_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_4_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_4_6 = NULL; + gs_uint32_t i_4_6; + StreamingProtobufs__MeasResultNR *node_4_7 = NULL; + StreamingProtobufs__MeasResult *node_4_8 = NULL; + StreamingProtobufs__CellResults *node_4_9 = NULL; + StreamingProtobufs__MeasQuantityResults *node_4_10 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_5_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_5_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_5_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_5_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_5_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_5_6 = NULL; + gs_uint32_t i_5_6; + StreamingProtobufs__MeasResultNR *node_5_7 = NULL; + StreamingProtobufs__MeasResult *node_5_8 = NULL; + StreamingProtobufs__CellResults *node_5_9 = NULL; + StreamingProtobufs__MeasQuantityResults *node_5_10 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_6_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_6_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_6_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_6_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_6_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_6_6 = NULL; + gs_uint32_t i_6_6; + StreamingProtobufs__MeasResultNR *node_6_7 = NULL; + StreamingProtobufs__MeasResult *node_6_8 = NULL; + StreamingProtobufs__CellResults *node_6_9 = NULL; + StreamingProtobufs__MeasQuantityResults *node_6_10 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_7_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_7_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_7_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_7_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_7_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_7_6 = NULL; + gs_uint32_t i_7_6; + StreamingProtobufs__MeasResultListNR *node_7_7 = NULL; + StreamingProtobufs__MeasResultNR *node_7_8 = NULL; + gs_uint32_t i_7_8; + StreamingProtobufs__MeasResult *node_7_9 = NULL; + StreamingProtobufs__CellResults *node_7_10 = NULL; + StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_8_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_8_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_8_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_8_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_8_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_8_6 = NULL; + gs_uint32_t i_8_6; + StreamingProtobufs__MeasResultListNR *node_8_7 = NULL; + StreamingProtobufs__MeasResultNR *node_8_8 = NULL; + gs_uint32_t i_8_8; + StreamingProtobufs__MeasResult *node_8_9 = NULL; + StreamingProtobufs__CellResults *node_8_10 = NULL; + StreamingProtobufs__MeasQuantityResults *node_8_11 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_9_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_9_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_9_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_9_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_9_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_9_6 = NULL; + gs_uint32_t i_9_6; + StreamingProtobufs__MeasResultListNR *node_9_7 = NULL; + StreamingProtobufs__MeasResultNR *node_9_8 = NULL; + gs_uint32_t i_9_8; + StreamingProtobufs__MeasResult *node_9_9 = NULL; + StreamingProtobufs__CellResults *node_9_10 = NULL; + StreamingProtobufs__MeasQuantityResults *node_9_11 = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json + struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL; + StreamingProtobufs__SgNBAdditionRequest *node_10_0 = NULL; + StreamingProtobufs__SgNBAdditionRequestIEs *node_10_1 = NULL; + StreamingProtobufs__CGConfigInfo *node_10_2 = NULL; + StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_10_3 = NULL; + StreamingProtobufs__CGConfigInfoIEs *node_10_4 = NULL; + StreamingProtobufs__MeasResultList2NR *node_10_5 = NULL; + StreamingProtobufs__MeasResult2NR *node_10_6 = NULL; + gs_uint32_t i_10_6; + StreamingProtobufs__MeasResultListNR *node_10_7 = NULL; + StreamingProtobufs__MeasResultNR *node_10_8 = NULL; + gs_uint32_t i_10_8; + StreamingProtobufs__MeasResult *node_10_9 = NULL; + StreamingProtobufs__CellResults *node_10_10 = NULL; + StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values); + cur_packet.schema = 10001; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbadditionrequest; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_gtp_teid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_gtp_teid->gnb_id = empty_string; + else + sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sgnb_addreq_gtp_teid->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + node_0_2 = node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist; + if(node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist){ + for(i_0_3=0;i_0_3n_items; i_0_3++){ + node_0_3 = node_0_2->items[i_0_3]; + node_0_4 = node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item; + if(node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item){ + node_0_5 = node_0_4->sgnbpdcppresent; + if(node_0_4->sgnbpdcppresent){ + node_0_6 = node_0_5->s1_ul_gtptunnelendpoint; + if(node_0_5->s1_ul_gtptunnelendpoint){ + sgnb_addreq_gtp_teid->gTP_TEID = node_0_6->gtp_teid; + sgnb_addreq_gtp_teid->transportLayerAddress = node_0_6->transportlayeraddress; + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values); + cur_packet.schema = 401; + node_1_0 = node_0_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue->gnb_id = empty_string; + else + sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value; + + node_1_1 = node_1_0->protocolies; + if(node_1_0->protocolies){ + sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id; + if(node_1_1->id_sgnbueaggregatemaximumbitrate){ + sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_1_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink; + sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1; + }else{ + sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0; + } + if(node_1_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_1_2 = node_1_1->id_menbcell_id; + if(node_1_1->id_menbcell_id){ + sgnb_addreq_for_ue->eUTRANcellIdentifier = node_1_2->eutrancellidentifier; + sgnb_addreq_for_ue->pLMN_Identity = node_1_2->plmn_identity; + rts_fta_process_packet(&cur_packet); + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values); + cur_packet.schema = 402; + node_2_0 = node_1_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_bearers->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_bearers->gnb_id = empty_string; + else + sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value; + + node_2_1 = node_2_0->protocolies; + if(node_2_0->protocolies){ + sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id; + node_2_2 = node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist; + if(node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist){ + for(i_2_3=0;i_2_3n_items; i_2_3++){ + node_2_3 = node_2_2->items[i_2_3]; + node_2_4 = node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item; + if(node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item){ + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ + sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl; + }else{ + sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0; + } + if(node_2_4->en_dc_resourceconfiguration){ + sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb; + }else{ + sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1; + } + sgnb_addreq_for_ue_bearers->drb_ID = node_2_4->drb_id; + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority){ + sgnb_addreq_for_ue_bearers->priorityLevel = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel; + }else{ + sgnb_addreq_for_ue_bearers->priorityLevel = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){ + sgnb_addreq_for_ue_bearers->gTP_TEID = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid; + }else{ + sgnb_addreq_for_ue_bearers->gTP_TEID.data = ""; + sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability){ + sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value; + }else{ + sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ + sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul; + }else{ + sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0; + } + if(node_2_4->en_dc_resourceconfiguration){ + sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources; + }else{ + sgnb_addreq_for_ue_bearers->mCGresources = -1; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){ + sgnb_addreq_for_ue_bearers->transportLayerAddress = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress; + }else{ + sgnb_addreq_for_ue_bearers->transportLayerAddress.data = ""; + sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ + sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul; + }else{ + sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0; + } + if(node_2_4->en_dc_resourceconfiguration){ + sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources; + }else{ + sgnb_addreq_for_ue_bearers->sCGresources = -1; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ + sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul; + }else{ + sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ + sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul; + }else{ + sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability){ + sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value; + }else{ + sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1; + } + sgnb_addreq_for_ue_bearers->e_RAB_ID = node_2_4->e_rab_id; + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){ + sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl; + }else{ + sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){ + sgnb_addreq_for_ue_bearers->qCI = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci; + }else{ + sgnb_addreq_for_ue_bearers->qCI = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ + sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl; + }else{ + sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0; + } + if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation){ + sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl; + }else{ + sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 403; + node_3_0 = node_2_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string; + else + sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value; + + node_3_1 = node_3_0->protocolies; + if(node_3_0->protocolies){ + sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id; + if(node_3_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_3_2 = node_3_1->id_menbtosgnbcontainer; + if(node_3_1->id_menbtosgnbcontainer){ + node_3_3 = node_3_2->criticalextensionschoice1; + if(node_3_2->criticalextensionschoice1){ + node_3_4 = node_3_3->protocolies; + if(node_3_3->protocolies){ + node_3_5 = node_3_4->candidatecellinfolistsn; + if(node_3_4->candidatecellinfolistsn){ + for(i_3_6=0;i_3_6n_items; i_3_6++){ + node_3_6 = node_3_5->items[i_3_6]; + node_3_7 = node_3_6->measresultservingcell; + if(node_3_6->measresultservingcell){ + if(node_3_7->physcellid){ + sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_3_7->physcellid->value; + sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0; + } + node_3_8 = node_3_7->measresult; + if(node_3_7->measresult){ + node_3_9 = node_3_8->cellresults; + if(node_3_8->cellresults){ + node_3_10 = node_3_9->resultsssb_cell; + if(node_3_9->resultsssb_cell){ + if(node_3_10->rsrq){ + sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_3_10->rsrq->value; + }else{ + sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128; + } + if(node_3_10->rsrp){ + sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value; + }else{ + sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128; + } + if(node_3_10->sinr){ + sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value; + }else{ + sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values); + cur_packet.schema = 404; + node_4_0 = node_3_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string; + else + sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value; + + node_4_1 = node_4_0->protocolies; + if(node_4_0->protocolies){ + sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id; + if(node_4_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_4_2 = node_4_1->id_menbtosgnbcontainer; + if(node_4_1->id_menbtosgnbcontainer){ + node_4_3 = node_4_2->criticalextensionschoice1; + if(node_4_2->criticalextensionschoice1){ + node_4_4 = node_4_3->protocolies; + if(node_4_3->protocolies){ + node_4_5 = node_4_4->candidatecellinfolistsn; + if(node_4_4->candidatecellinfolistsn){ + for(i_4_6=0;i_4_6n_items; i_4_6++){ + node_4_6 = node_4_5->items[i_4_6]; + node_4_7 = node_4_6->measresultservingcell; + if(node_4_6->measresultservingcell){ + if(node_4_7->physcellid){ + sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_4_7->physcellid->value; + sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0; + } + node_4_8 = node_4_7->measresult; + if(node_4_7->measresult){ + node_4_9 = node_4_8->cellresults; + if(node_4_8->cellresults){ + node_4_10 = node_4_9->resultscsi_rs_cell; + if(node_4_9->resultscsi_rs_cell){ + if(node_4_10->rsrq){ + sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_4_10->rsrq->value; + }else{ + sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128; + } + if(node_4_10->rsrp){ + sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value; + }else{ + sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128; + } + if(node_4_10->sinr){ + sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value; + }else{ + sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 405; + node_5_0 = node_4_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string; + else + sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value; + + node_5_1 = node_5_0->protocolies; + if(node_5_0->protocolies){ + sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id; + if(node_5_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_5_2 = node_5_1->id_menbtosgnbcontainer; + if(node_5_1->id_menbtosgnbcontainer){ + node_5_3 = node_5_2->criticalextensionschoice1; + if(node_5_2->criticalextensionschoice1){ + node_5_4 = node_5_3->protocolies; + if(node_5_3->protocolies){ + node_5_5 = node_5_4->candidatecellinfolistmn; + if(node_5_4->candidatecellinfolistmn){ + for(i_5_6=0;i_5_6n_items; i_5_6++){ + node_5_6 = node_5_5->items[i_5_6]; + node_5_7 = node_5_6->measresultservingcell; + if(node_5_6->measresultservingcell){ + if(node_5_7->physcellid){ + sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_5_7->physcellid->value; + sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0; + } + node_5_8 = node_5_7->measresult; + if(node_5_7->measresult){ + node_5_9 = node_5_8->cellresults; + if(node_5_8->cellresults){ + node_5_10 = node_5_9->resultsssb_cell; + if(node_5_9->resultsssb_cell){ + if(node_5_10->rsrq){ + sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_5_10->rsrq->value; + }else{ + sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128; + } + if(node_5_10->rsrp){ + sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value; + }else{ + sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128; + } + if(node_5_10->sinr){ + sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value; + }else{ + sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values); + cur_packet.schema = 406; + node_6_0 = node_5_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string; + else + sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value; + + node_6_1 = node_6_0->protocolies; + if(node_6_0->protocolies){ + sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id; + if(node_6_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_6_2 = node_6_1->id_menbtosgnbcontainer; + if(node_6_1->id_menbtosgnbcontainer){ + node_6_3 = node_6_2->criticalextensionschoice1; + if(node_6_2->criticalextensionschoice1){ + node_6_4 = node_6_3->protocolies; + if(node_6_3->protocolies){ + node_6_5 = node_6_4->candidatecellinfolistmn; + if(node_6_4->candidatecellinfolistmn){ + for(i_6_6=0;i_6_6n_items; i_6_6++){ + node_6_6 = node_6_5->items[i_6_6]; + node_6_7 = node_6_6->measresultservingcell; + if(node_6_6->measresultservingcell){ + if(node_6_7->physcellid){ + sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_6_7->physcellid->value; + sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0; + } + node_6_8 = node_6_7->measresult; + if(node_6_7->measresult){ + node_6_9 = node_6_8->cellresults; + if(node_6_8->cellresults){ + node_6_10 = node_6_9->resultscsi_rs_cell; + if(node_6_9->resultscsi_rs_cell){ + if(node_6_10->rsrq){ + sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_6_10->rsrq->value; + }else{ + sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128; + } + if(node_6_10->rsrp){ + sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value; + }else{ + sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128; + } + if(node_6_10->sinr){ + sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value; + }else{ + sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 408; + node_7_0 = node_6_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string; + else + sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value; + + node_7_1 = node_7_0->protocolies; + if(node_7_0->protocolies){ + sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id; + if(node_7_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_7_2 = node_7_1->id_menbtosgnbcontainer; + if(node_7_1->id_menbtosgnbcontainer){ + node_7_3 = node_7_2->criticalextensionschoice1; + if(node_7_2->criticalextensionschoice1){ + node_7_4 = node_7_3->protocolies; + if(node_7_3->protocolies){ + node_7_5 = node_7_4->candidatecellinfolistsn; + if(node_7_4->candidatecellinfolistsn){ + for(i_7_6=0;i_7_6n_items; i_7_6++){ + node_7_6 = node_7_5->items[i_7_6]; + node_7_7 = node_7_6->measresultneighcelllistnr; + if(node_7_6->measresultneighcelllistnr){ + for(i_7_8=0;i_7_8n_items; i_7_8++){ + node_7_8 = node_7_7->items[i_7_8]; + if(node_7_8->physcellid){ + sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_7_8->physcellid->value; + sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0; + } + node_7_9 = node_7_8->measresult; + if(node_7_8->measresult){ + node_7_10 = node_7_9->cellresults; + if(node_7_9->cellresults){ + node_7_11 = node_7_10->resultsssb_cell; + if(node_7_10->resultsssb_cell){ + if(node_7_11->rsrq){ + sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_7_11->rsrq->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128; + } + if(node_7_11->rsrp){ + sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128; + } + if(node_7_11->sinr){ + sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values); + cur_packet.schema = 409; + node_8_0 = node_7_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string; + else + sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value; + + node_8_1 = node_8_0->protocolies; + if(node_8_0->protocolies){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id; + if(node_8_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_8_2 = node_8_1->id_menbtosgnbcontainer; + if(node_8_1->id_menbtosgnbcontainer){ + node_8_3 = node_8_2->criticalextensionschoice1; + if(node_8_2->criticalextensionschoice1){ + node_8_4 = node_8_3->protocolies; + if(node_8_3->protocolies){ + node_8_5 = node_8_4->candidatecellinfolistsn; + if(node_8_4->candidatecellinfolistsn){ + for(i_8_6=0;i_8_6n_items; i_8_6++){ + node_8_6 = node_8_5->items[i_8_6]; + node_8_7 = node_8_6->measresultneighcelllistnr; + if(node_8_6->measresultneighcelllistnr){ + for(i_8_8=0;i_8_8n_items; i_8_8++){ + node_8_8 = node_8_7->items[i_8_8]; + if(node_8_8->physcellid){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_8_8->physcellid->value; + sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0; + } + node_8_9 = node_8_8->measresult; + if(node_8_8->measresult){ + node_8_10 = node_8_9->cellresults; + if(node_8_9->cellresults){ + node_8_11 = node_8_10->resultscsi_rs_cell; + if(node_8_10->resultscsi_rs_cell){ + if(node_8_11->rsrq){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_8_11->rsrq->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128; + } + if(node_8_11->rsrp){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128; + } + if(node_8_11->sinr){ + sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value; + }else{ + sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values); + cur_packet.schema = 410; + node_9_0 = node_8_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string; + else + sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value; + + node_9_1 = node_9_0->protocolies; + if(node_9_0->protocolies){ + sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id; + if(node_9_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_9_2 = node_9_1->id_menbtosgnbcontainer; + if(node_9_1->id_menbtosgnbcontainer){ + node_9_3 = node_9_2->criticalextensionschoice1; + if(node_9_2->criticalextensionschoice1){ + node_9_4 = node_9_3->protocolies; + if(node_9_3->protocolies){ + node_9_5 = node_9_4->candidatecellinfolistmn; + if(node_9_4->candidatecellinfolistmn){ + for(i_9_6=0;i_9_6n_items; i_9_6++){ + node_9_6 = node_9_5->items[i_9_6]; + node_9_7 = node_9_6->measresultneighcelllistnr; + if(node_9_6->measresultneighcelllistnr){ + for(i_9_8=0;i_9_8n_items; i_9_8++){ + node_9_8 = node_9_7->items[i_9_8]; + if(node_9_8->physcellid){ + sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_9_8->physcellid->value; + sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0; + } + node_9_9 = node_9_8->measresult; + if(node_9_8->measresult){ + node_9_10 = node_9_9->cellresults; + if(node_9_9->cellresults){ + node_9_11 = node_9_10->resultsssb_cell; + if(node_9_10->resultsssb_cell){ + if(node_9_11->rsrq){ + sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_9_11->rsrq->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128; + } + if(node_9_11->rsrp){ + sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128; + } + if(node_9_11->sinr){ + sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json + + sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values); + cur_packet.schema = 411; + node_10_0 = node_9_0; + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string; + else + sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value; + + node_10_1 = node_10_0->protocolies; + if(node_10_0->protocolies){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_10_1->id_menb_ue_x2ap_id; + if(node_10_1->id_menb_ue_x2ap_id_extension){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_10_1->id_menb_ue_x2ap_id_extension->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0; + } + node_10_2 = node_10_1->id_menbtosgnbcontainer; + if(node_10_1->id_menbtosgnbcontainer){ + node_10_3 = node_10_2->criticalextensionschoice1; + if(node_10_2->criticalextensionschoice1){ + node_10_4 = node_10_3->protocolies; + if(node_10_3->protocolies){ + node_10_5 = node_10_4->candidatecellinfolistmn; + if(node_10_4->candidatecellinfolistmn){ + for(i_10_6=0;i_10_6n_items; i_10_6++){ + node_10_6 = node_10_5->items[i_10_6]; + node_10_7 = node_10_6->measresultneighcelllistnr; + if(node_10_6->measresultneighcelllistnr){ + for(i_10_8=0;i_10_8n_items; i_10_8++){ + node_10_8 = node_10_7->items[i_10_8]; + if(node_10_8->physcellid){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_10_8->physcellid->value; + sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1; + }else{ + sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0; + } + node_10_9 = node_10_8->measresult; + if(node_10_8->measresult){ + node_10_10 = node_10_9->cellresults; + if(node_10_9->cellresults){ + node_10_11 = node_10_10->resultscsi_rs_cell; + if(node_10_10->resultscsi_rs_cell){ + if(node_10_11->rsrq){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_10_11->rsrq->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128; + } + if(node_10_11->rsrp){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128; + } + if(node_10_11->sinr){ + sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value; + }else{ + sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128; + } + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + } + } + } + } + } + streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json + struct _sgnb_mod_conf *sgnb_mod_conf = NULL; + StreamingProtobufs__SgNBModificationConfirm *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationConfirmIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json + + sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values); + cur_packet.schema = 1301; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationconfirm; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_conf->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_conf->gnb_id = empty_string; + else + sgnb_mod_conf->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json + struct _sgnb_mod_req *sgnb_mod_req = NULL; + StreamingProtobufs__SgNBModificationRequest *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationRequestIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json + + sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values); + cur_packet.schema = 1201; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationrequest; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_req->gnb_id = empty_string; + else + sgnb_mod_req->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + if(node_0_1->id_cause && node_0_1->id_cause->protocol){ + sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value; + }else{ + sgnb_mod_req->cause_protocol = -1; + } + sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->transport){ + sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value; + }else{ + sgnb_mod_req->cause_transport = -1; + } + if(node_0_1->id_menbtosgnbcontainer && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1 && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies && node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo){ + sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype; + }else{ + sgnb_mod_req->failureType = -1; + } + if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ + sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value; + }else{ + sgnb_mod_req->cause_radio_network = -1; + } + sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->misc){ + sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value; + }else{ + sgnb_mod_req->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json + struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL; + StreamingProtobufs__SgNBModificationRequestAcknowledge *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json + + sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values); + cur_packet.schema = 1701; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationrequestacknowledge; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_req_ack->gnb_id = empty_string; + else + sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json + struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL; + StreamingProtobufs__SgNBModificationRequestReject *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationRequestRejectIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json + + sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values); + cur_packet.schema = 1801; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationrequestreject; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_req_reject->gnb_id = empty_string; + else + sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + if(node_0_1->id_cause && node_0_1->id_cause->protocol){ + sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value; + }else{ + sgnb_mod_req_reject->cause_protocol = -1; + } + sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->transport){ + sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value; + }else{ + sgnb_mod_req_reject->cause_transport = -1; + } + if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ + sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value; + }else{ + sgnb_mod_req_reject->cause_radio_network = -1; + } + sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->misc){ + sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value; + }else{ + sgnb_mod_req_reject->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json + struct _sgnb_mod_required *sgnb_mod_required = NULL; + StreamingProtobufs__SgNBModificationRequired *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationRequiredIEs *node_0_1 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json + + sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values); + cur_packet.schema = 1901; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationrequired; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_required->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_required->gnb_id = empty_string; + else + sgnb_mod_required->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + if(node_0_1->id_cause && node_0_1->id_cause->protocol){ + sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value; + }else{ + sgnb_mod_required->cause_protocol = -1; + } + sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->transport){ + sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value; + }else{ + sgnb_mod_required->cause_transport = -1; + } + if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){ + sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value; + }else{ + sgnb_mod_required->cause_radio_network = -1; + } + sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + if(node_0_1->id_cause && node_0_1->id_cause->misc){ + sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value; + }else{ + sgnb_mod_required->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json + struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL; + StreamingProtobufs__SgNBModificationRefuse *node_0_0 = NULL; + StreamingProtobufs__SgNBModificationRefuseIEs *node_0_1 = NULL; + StreamingProtobufs__Cause *node_0_2 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json + + sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values); + cur_packet.schema = 1401; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->sgnbmodificationrefuse; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sgnb_mod_refuse->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sgnb_mod_refuse->gnb_id = empty_string; + else + sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id; + sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id; + node_0_2 = node_0_1->id_cause; + if(node_0_1->id_cause){ + if(node_0_2->radionetwork){ + sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value; + }else{ + sgnb_mod_refuse->cause_radio_network = -1; + } + if(node_0_2->transport){ + sgnb_mod_refuse->cause_transport = node_0_2->transport->value; + }else{ + sgnb_mod_refuse->cause_transport = -1; + } + if(node_0_2->protocol){ + sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value; + }else{ + sgnb_mod_refuse->cause_protocol = -1; + } + if(node_0_2->misc){ + sgnb_mod_refuse->cause_misc = node_0_2->misc->value; + }else{ + sgnb_mod_refuse->cause_misc = -1; + } + rts_fta_process_packet(&cur_packet); + } + } + streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL); + return 0; +} + +gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){ + char *empty_string = ""; +unsigned long long int ts_lo, ts_hi; + StreamingProtobufs__X2APStreaming *hdr = NULL; +// ------------------------------------------ +// --- Variables for .proto sn_status_transfer.json, path snstatusxfer.json + struct _sn_status_transfer *sn_status_transfer = NULL; + StreamingProtobufs__SNStatusTransfer *node_0_0 = NULL; + StreamingProtobufs__SNStatusTransferIEs *node_0_1 = NULL; + StreamingProtobufs__ERABsSubjectToStatusTransferList *node_0_2 = NULL; + StreamingProtobufs__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL; + gs_uint32_t i_0_3; + StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL; + StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL; + gs_uint32_t i_0_5; + StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL; + +// -------------------------------------------------- +// --- Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json + + sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values); + cur_packet.schema = 1601; + + hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer); + if(hdr==NULL) return -1; + + node_0_0 = hdr->snstatustransfer; + if(node_0_0==NULL) return -2; + if(hdr->header==NULL) return -3; + + ts_lo = hdr->header->timestamp & 0xffffffff; + ts_hi = hdr->header->timestamp >> 32; + sn_status_transfer->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32); + if(hdr->header->gnbid==NULL) + sn_status_transfer->gnb_id = empty_string; + else + sn_status_transfer->gnb_id = hdr->header->gnbid->value; + + node_0_1 = node_0_0->protocolies; + if(node_0_0->protocolies){ + sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id; + if(node_0_1->id_sgnb_ue_x2ap_id){ + sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value; + }else{ + sn_status_transfer->id_SgNB_UE_X2AP_ID = 0; + } + node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list; + if(node_0_1->id_e_rabs_subjecttostatustransfer_list){ + for(i_0_3=0;i_0_3n_items; i_0_3++){ + node_0_3 = node_0_2->items[i_0_3]; + node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item; + if(node_0_3->id_e_rabs_subjecttostatustransfer_item){ + sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id; + for(i_0_5=0;i_0_5n_ie_extensions; i_0_5++){ + node_0_5 = node_0_4->ie_extensions[i_0_5]; + node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18; + if(node_0_5->id_dlcountvaluepdcp_snlength18){ + sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18; + rts_fta_process_packet(&cur_packet); + } + } + } + } + } + } + streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL); + return 0; +} + + +int init_cur_packet(){ + cur_packet.ptype=PTYPE_STRUCT; + cur_packet.record.packed.values = (void *)(malloc(10000)); + + if(cur_packet.record.packed.values==NULL){ + print_error("could not malloc a data block for cur_packet in init_cur_packet."); + exit(10); + } + return 0; +} +//---------------- END Specialized proto parsing ----------- + +static void dproto_replay_check_messages() { + if (fta_start_service(0)<0) { + print_error("Error:in processing the msg queue for a replay file"); + exit(9); + } +} + +// Read length bytes from the current socket into buffer. +static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){ + gs_uint32_t used=0; + gs_uint32_t cur; + fd_set socket_rset; + fd_set socket_eset; + struct timeval socket_timeout; + int retval; + + FD_ZERO(&socket_rset); + FD_SET(socket_desc,&socket_rset); + FD_ZERO(&socket_eset); + FD_SET(socket_desc,&socket_eset); + // timeout in one millisecon + socket_timeout.tv_sec=0; + socket_timeout.tv_usec=1000; + + if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) { + if (retval==0) { + // caught a timeout + return -1; + } + return -2; + } + + while(used < length) { + if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) { + print_error("ERROR:could not read data from PROTO stream"); + return -2; + } + used+=cur; + } + return 0; +} + +// query gshub and use that info to open a socket +static void init_socket() { + endpoint gshub; + endpoint srcinfo; + struct sockaddr_in server; + + if (get_hub(&gshub)!=0) { + print_error("ERROR:could not find gshub for data source"); + exit(0); + } + + if (get_streamsource(gshub,name,&srcinfo,1) !=0) { + print_error("ERROR:could not find data source for stream\n"); + exit(0); + } + + socket_desc = socket(AF_INET , SOCK_STREAM , 0); + if (socket_desc == -1) + { + print_error("ERROR:could not create socket for data stream"); + exit(0); + } + server.sin_addr.s_addr = srcinfo.ip; + server.sin_family = AF_INET; + server.sin_port = srcinfo.port; + + if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0) + { + print_error("ERROR: could not open connection to data source"); + exit(0); + } + +} + +int read_fifo(struct pollfd* pfd, char* buffer, size_t len, time_t timeout) { + int i, bytes_read = 0; + while (bytes_read < len) { + if (poll(pfd, 1, timeout)) { + if (pfd->revents & POLLIN) { + while ((i = read(pfd->fd,buffer+bytes_read,len-bytes_read))==-1 && errno==EINTR); + if (i <= 0) { + break; // writer closed fifo or error + } else { + bytes_read += i; + } + } else + break; // writer closed fifo + } + if (!bytes_read) + return -1; // timeout + } + return bytes_read; +} + +// proceed to the next file +static void next_file() { + int open_flag = O_RDONLY; + if (fifo) + open_flag |= O_NONBLOCK; + + struct stat s; + if (verbose) { + fprintf(stderr,"Opening %s\n",name); + } + while (lstat(name,&s)!=0) { + if (errno!=ENOENT) { + print_error("dproto::lstat unexpected return value"); + exit(10); + } + dproto_replay_check_messages(); + usleep(10000); + } + if (fd > 0) { + close(fd); + } + if ((fd=open(name,open_flag)) <= 0) { + print_error("dproto::open failed "); + exit(10); + } + // setup polling for this file descriptor + pfd.fd = fd; + pfd.events = POLLIN; + + if (singlefile==0) { + unlink(name); + } +} + +// Perform initialization when reading from a file +static gs_retval_t dproto_replay_init(gs_sp_t device) { + gs_sp_t verbosetmp; + gs_sp_t delaytmp; + gs_sp_t gshubtmp; + gs_sp_t tempdel; + gs_sp_t singlefiletmp; + gs_sp_t fifotmp; + + if ((name=get_iface_properties(device,"filename"))==0) { + print_error("dproto_init::No protobuf \"Filename\" defined"); + exit(0); + } + + if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) { + if (strncmp(verbosetmp,"TRUE",4)==0) { + verbose=1; + fprintf(stderr,"VERBOSE ENABLED\n"); + } else { + fprintf(stderr,"VERBOSE DISABLED\n"); + } + } + if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) { + if (strncmp(singlefiletmp,"TRUE",4)==0) { + singlefile=1; + if (verbose) + fprintf(stderr,"SINGLEFILE ENABLED\n"); + } else { + if (verbose) + fprintf(stderr,"SINGLEFILE DISABLED\n"); + } + } + if ((fifotmp=get_iface_properties(device,"fifo"))!=0) { + if (strncmp(fifotmp,"TRUE",4)==0) { + fifo=1; + if (verbose) + fprintf(stderr,"FIFO ENABLED\n"); + } else { + if (verbose) + fprintf(stderr,"FIFO DISABLED\n"); + } + } + + if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) { + if (verbose) { + fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay"))); + } + startupdelay=atoi(get_iface_properties(device,"startupdelay")); + } + if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) { + if (verbose) { + fprintf(stderr,"PROTO format using gshub\n"); + } + gshub=1; + } + init_cur_packet(); + + return 0; +} + +// Read one message from a socket +static gs_retval_t dproto_read_socket() +{ + gs_uint32_t i; + gs_uint32_t p; + gs_uint32_t x; + gs_uint32_t pkg_len; + gs_int32_t r; + gs_retval_t ret=0; + gs_uint32_t done; + char *pkg_len_s; + char *timestamp_s; + + if((ret=gs_read_buffer(line,28))<0) { return ret;} + pkg_len_s = line+4; + pkg_len = atoi(pkg_len_s); + + if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;} + + cur_packet.systemTime=time(0); + ret = process_buffer(line, pkg_len); + if(ret < 0){ + fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret); + } + + return 0; +} + +// read one message from a file +static gs_retval_t dproto_read_tuple(){ + gs_uint32_t retlen=0; + gs_uint32_t done=0; + gs_uint32_t pkg_len=0; + gs_uint32_t eof=0; + char *pkg_len_s; + char *timestamp_s; + gs_retval_t ret; + + if (fd==-1) next_file(); + + retlen = read_fifo(&pfd, line, 28, 10); // use 10ms timeout + + if(retlen==0){ + eof=1; + }else if(retlen==-1) { + return -1; // -1 indicates a timeout + }else if(retlen == 28) { + pkg_len_s = line+4; + timestamp_s = line+12; + pkg_len = atoi(pkg_len_s); + + if(pkg_len >= MAXLINE){ +// TODO be more graceful here, but a large pkg_len likely indicates +// a garbaged file. + print_error("Error in dproto_read_tuple, message too long."); + fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE); + exit(10); + } + + // once we received header we will wait for the main message indefinetly + retlen = read_fifo(&pfd, line, pkg_len, -1); + if(retlentime(NULL)) { + if (fta_start_service(0)<0) { + fprintf(stderr,"%s::error:in processing the msg queue\n", device); + exit(9); + } + usleep(1000); /* sleep for one millisecond */ + } + + if (verbose) { fprintf(stderr,"... Done\n"); } + + // open the connection to the data source + if (gshub!=0) { init_socket();} + + // wait to process till we get the signal from GSHUB + if (get_hub(&mygshub)!=0) { + print_error("ERROR:could not find gshub for data source"); + exit(0); + } + while(get_startprocessing(mygshub,get_instance_name(),0)!=0) { + usleep(100); + if (fta_start_service(0)<0) { + fprintf(stderr,"%s::error:in processing the msg queue\n", device); + exit(9); + } + } + + /* now we enter an endless loop to process data */ + if (verbose) { + fprintf(stderr,"Start processing %s\n",device); + } + + while (1==1) { + if (dproto_process_file()<0) { + fprintf(stderr,"%s::error:in processing packets\n", device); + exit(8); + } + /* process all messages on the message queue*/ + if (fta_start_service(0)<0) { + fprintf(stderr,"%s::error:in processing the msg queue\n", device); + exit(9); + } + } + return 0; +} + \ No newline at end of file diff --git a/mc-core/mc/mc_deployment.json b/mc-core/mc/mc_deployment.json index 14e04f7..8255293 100644 --- a/mc-core/mc/mc_deployment.json +++ b/mc-core/mc/mc_deployment.json @@ -48,7 +48,7 @@ "description": "rmr receive data port for mcxapp" }, { - "name": "rmr-data-out", + "name": "rmr-data-out1", "container": "mcxapp", "port": 4562, "txMessages": diff --git a/mc-core/mc/queries/admitted_erabs.gsql b/mc-core/mc/queries/admitted_erabs.gsql index 19887e3..e6915f9 100644 --- a/mc-core/mc/queries/admitted_erabs.gsql +++ b/mc-core/mc/queries/admitted_erabs.gsql @@ -38,3 +38,50 @@ Select (TB*$window)/1000 as TS, gnb_id as GNB_ID, sum( LEQ(UINT(qCI),0)| GEQ(UINT(qCI),10) ) as qCI_other from erab_stats_join group by (10000*TB10)/$window as TB, gnb_id +; + +-- Create the (gnb_id, [enb_ueid, gnb_ueid]) -> cellid map +DEFINE{query_name 'gnb_ueid_cellid_map'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Output the last known map from (gnb, gnb_ueid) to (qci, arp)'; +} +PARAM{ window uint;} +Select TB, GNB_ID, id_MeNB_UE_X2AP_ID, LAST(id_SgNB_UE_X2AP_ID) as id_SgNB_UE_X2AP_ID, + LAST(physCellId) as physCellId +From SGNB_ADDITION_REQ_ACK.add_req_ack_cellid +GROUP BY timestamp_ms / $window as TB, id_MeNB_UE_X2AP_ID, gnb_id as GNB_ID +CLOSING_WHEN ((TB+1)*$window-LAST(timestamp_ms))/1000.0 >= 3600 +; + +DEFINE{query_name 'erab_stats_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join erab_stats_join with gnb_ueid_cellid_map to create data stream for erab_stats_cell'; +} +PARAM{ window uint; } +select M.TB, M.GNB_ID, M.physCellId, E.qCI +INNER_JOIN from erab_stats_join E, gnb_ueid_cellid_map M +Where E.gnb_id=M.GNB_ID and E.id_SgNB_UE_X2AP_ID=M.id_SgNB_UE_X2AP_ID + and (10000*E.TB10)/$window=M.TB +; + +DEFINE{query_name 'erab_stats_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'number of admitted bearers and the distribution of their qCI, by physical cell id'; +} +PARAM{ window uint; } +Select (TB*$window)/1000 as TS, GNB_ID, physCellId, + $window/1000.0 as measurementInterval, + count(*) as total_erabs, + sum( EQ(UINT(qCI),1) ) as qCI_1, + sum( EQ(UINT(qCI),2) ) as qCI_2, + sum( EQ(UINT(qCI),3) ) as qCI_3, + sum( EQ(UINT(qCI),4) ) as qCI_4, + sum( EQ(UINT(qCI),5) ) as qCI_5, + sum( EQ(UINT(qCI),6) ) as qCI_6, + sum( EQ(UINT(qCI),7) ) as qCI_7, + sum( EQ(UINT(qCI),8) ) as qCI_8, + sum( EQ(UINT(qCI),9) ) as qCI_9, + sum( LEQ(UINT(qCI),0)| GEQ(UINT(qCI),10) ) as qCI_other +from erab_stats_pci_join +group by (10000*TB)/$window as TB, GNB_ID, physCellId + diff --git a/mc-core/mc/queries/dc_conn_stats.gsql b/mc-core/mc/queries/dc_conn_stats.gsql index 17e5977..7c9041a 100644 --- a/mc-core/mc/queries/dc_conn_stats.gsql +++ b/mc-core/mc/queries/dc_conn_stats.gsql @@ -40,7 +40,16 @@ Where d.gnb_id=M.GNB_ID and d.gUE_ID=M.id_SgNB_UE_X2AP_ID and d.timestamp/$window=M.TB ; - +DEFINE{query_name 'dc_events_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'tag dc_events with the pci'; +} +PARAM{ window uint; } +Select M.TB, non_temporal(d.timestamp) as timestamp, d.gnb_id, d.eUE_ID, d.gUE_ID, d.event_type, M.physCellId +LEFT_OUTER_JOIN from dc_events d, gnb_ueid_cellid_map M +Where d.gnb_id=M.GNB_ID and d.gUE_ID=M.id_SgNB_UE_X2AP_ID + and d.timestamp/$window=M.TB +; DEFINE{ query_name 'mc_connected_ues'; @@ -56,9 +65,22 @@ CLOSING_WHEN LAST(event_type) = 0 OR ((TB+1)*$window-LAST(timestamp))/1000.0 >= 3600 ; +DEFINE{ query_name 'mc_connected_ues_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint; } +SELECT TB, UE_ID, GNB_ID, physCellId, + ((TB+1)*$window-LAST(timestamp))/1000.0 as connected_time +FROM dc_events_pci +GROUP BY TB, gUE_ID as UE_ID, gnb_id as GNB_ID, physCellId +HAVING LAST(event_type) = 1 +CLOSING_WHEN LAST(event_type) = 0 OR + ((TB+1)*$window-LAST(timestamp))/1000.0 >= 3600 +; + DEFINE{ query_name 'mc_connected_cnt'; max_lfta_disorder '1'; max_hfta_disorder '1'; - comment 'Number of dual connected users'; + comment 'Number of dual connected sessions'; } PARAM{ window uint; } SELECT ($window*(TB+1))/1000 as TS, GNB_ID, @@ -68,6 +90,20 @@ FROM mc_connected_ues GROUP BY TB, GNB_ID ; +DEFINE{ query_name 'mc_connected_cnt_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Number of dual connected users by gnb and pci'; +} +PARAM{ window uint; } +SELECT ($window*(TB+1))/1000 as TS, GNB_ID, physCellId, + $window/1000.0 as measurementInterval, // standard_name + COUNT(*) as count_connected_ue +FROM mc_connected_ues_pci +GROUP BY TB, GNB_ID, physCellId +; + + + DEFINE{ query_name 'mc_disconnected_ues'; max_lfta_disorder '1'; max_hfta_disorder '1'; } @@ -147,6 +183,19 @@ WHERE event_type = 1 GROUP BY timestamp / $window as TB, gnb_id as GNB_ID ; +DEFINE{ query_name 'mc_connects_cnt_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'number of DC connection requests, by GNB and PCI'; +} +PARAM{ window uint; } +SELECT ($window*(TB+1))/1000 as TS, GNB_ID, physCellId, + $window/1000.0 as measurementInterval, // standard_name + COUNT(*) as count_ue_connects +FROM dc_events_pci +WHERE event_type = 1 +GROUP BY TB, gnb_id as GNB_ID, physCellId +; + DEFINE{ query_name 'mc_connects_cnt_gtp_teid'; max_lfta_disorder '1'; max_hfta_disorder '1'; comment 'number of DC connection requests by UE'; @@ -182,6 +231,18 @@ FROM dc_events GROUP BY timestamp / $window as TB, gUE_ID as UE_ID, gnb_id as GNB_ID ; +DEFINE{ query_name 'mc_unique_ues_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; +} +PARAM{ window uint; } +SELECT TB, UE_ID, GNB_ID, physCellId +FROM dc_events_pci +GROUP BY TB, + gUE_ID as UE_ID, gnb_id as GNB_ID, physCellId +; + + + DEFINE{ query_name 'mc_unique_ue_cnt'; max_lfta_disorder '1'; max_hfta_disorder '1'; comment 'Number of distinct UEs making a DC request or release'; @@ -192,6 +253,18 @@ SELECT ($window*(TB+1))/1000 as TS, GNB_ID, COUNT(*) as count_unique_ue FROM mc_unique_ues GROUP BY TB, GNB_ID +; + +DEFINE{ query_name 'mc_unique_ue_pci_cnt'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Number of distinct UEs making a DC request or release by pci'; +} +PARAM{ window uint; } +SELECT ($window*(TB+1))/1000 as TS, GNB_ID, physCellId, + $window/1000.0 as measurementInterval, // standard_name + COUNT(*) as count_unique_ue +FROM mc_unique_ues_pci +GROUP BY TB, GNB_ID, physCellId diff --git a/mc-core/mc/queries/handovers.gsql b/mc-core/mc/queries/handovers.gsql index a899311..6773e70 100644 --- a/mc-core/mc/queries/handovers.gsql +++ b/mc-core/mc/queries/handovers.gsql @@ -33,16 +33,16 @@ from handovers_join group by TB, gTP_TEID, gnb_id as GNB_ID ; -DEFINE{ query_name 'distinct_users'; +DEFINE{ query_name 'requests_per_gtp_teid'; max_lfta_disorder '1'; max_hfta_disorder '1'; - comment 'Number of users based on distinct gTP_TEIDs seen'; + comment 'Number of sgnb addition requests requests per gTP_TEID'; } PARAM{ window uint;} Select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval, - gnb_id as GNB_ID, - count(*) as num_users + gnb_id as GNB_ID, gTP_TEID, + count(*) as n_requests from SGNB_ADDITION_REQ.sgnb_addreq_gtp_teid -group by timestamp_ms/$window as tb, gnb_id +group by timestamp_ms/$window as tb, gnb_id, gTP_TEID ; DEFINE{query_name 'gnb_ueid_teid_map'; @@ -111,5 +111,29 @@ Select ($window*(TB+1))/1000 as TS, GNB_ID, gTP_TEID, sum(cnt) as n_handovers from ho_count_events_gtp_teid group by TB, GNB_ID, gTP_TEID +; + +DEFINE{query_name 'gtp_teid_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join erab_stats_join with gnb_ueid_cellid_map to create data stream for requests_per_gtp_teid_cell'; +} +PARAM{ window uint; } +select M.TB, M.GNB_ID, M.physCellId, g.gTP_TEID +INNER_JOIN from SGNB_ADDITION_REQ.sgnb_addreq_gtp_teid g, gnb_ueid_cellid_map M +Where g.gnb_id=M.GNB_ID and g.id_MeNB_UE_X2AP_ID=M.id_MeNB_UE_X2AP_ID + and g.timestamp_ms/$window=M.TB +; + +DEFINE{ query_name 'requests_per_gtp_teid_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Number of sgnb addition requests requests per gTP_TEID'; +} +PARAM{ window uint;} +Select ($window*(TB+1))/1000 as TS, $window/1000.0 as measurementInterval, + GNB_ID, gTP_TEID, physCellId, + count(*) as n_requests +from gtp_teid_pci_join +group by TB, GNB_ID, gTP_TEID, physCellId + diff --git a/mc-core/mc/queries/mod_req_failure.gsql b/mc-core/mc/queries/mod_req_failure.gsql index 5b6a2f4..f5187f0 100644 --- a/mc-core/mc/queries/mod_req_failure.gsql +++ b/mc-core/mc/queries/mod_req_failure.gsql @@ -73,4 +73,43 @@ select ($window*(tb+1))/1000 as TS, GNB_ID, gTP_TEID, sum( count_srb3_IntegrityFailure ) as count_srb3_IntegrityFailure From base_mod_req_failure_distribution_gtp_teid group by tb, GNB_ID, gTP_TEID +; + +DEFINE{ query_name 'base_mod_req_failure_distribution_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'distribution of causes of a modification request failure (bas), labeled with gtp_teid'; +} +PARAM{ window uint;} +select b.tb, b.GNB_ID as GNB_ID, m.physCellId, + b.cnt, + b.count_protobuf_unspecified, + b.count_t310_Expiry, + b.count_randomAccessProblem, + b.count_rlc_MaxNumRetx, + b.count_synchReconfigFailure_SCG, + b.count_scg_reconfigFailure, + b.count_srb3_IntegrityFailure +LEFT_OUTER_JOIN from base_mod_req_failure_distribution b, gnb_ueid_cellid_map m +where b.tb=m.TB and b.GNB_ID=m.GNB_ID and + b.id_MeNB_UE_X2AP_ID=m.id_MeNB_UE_X2AP_ID +; + +DEFINE{ query_name 'mod_req_failure_distribution_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'distribution of causes of a modification request failure'; +} +PARAM{ window uint;} +select ($window*(tb+1))/1000 as TS, GNB_ID, physCellId, + $window/1000.0 as measurementInterval, + sum(cnt) as cnt, + sum( count_protobuf_unspecified ) as count_protobuf_unspecified, + sum( count_t310_Expiry ) as count_t310_Expiry, + sum( count_randomAccessProblem ) as count_randomAccessProblem, + sum( count_rlc_MaxNumRetx ) as count_rlc_MaxNumRetx, + sum( count_synchReconfigFailure_SCG ) as count_synchReconfigFailure_SCG, + sum( count_scg_reconfigFailure ) as count_scg_reconfigFailure, + sum( count_srb3_IntegrityFailure ) as count_srb3_IntegrityFailure +From base_mod_req_failure_distribution_pci +group by tb, GNB_ID, physCellId + diff --git a/mc-core/mc/queries/nib.json b/mc-core/mc/queries/nib.json index 0853e15..48d587e 100644 --- a/mc-core/mc/queries/nib.json +++ b/mc-core/mc/queries/nib.json @@ -1,50 +1,107 @@ { - "reconfig_status_reject_cause": { + "rrcx_pdf_neighbor_beam_gtp_teid": { "keys": [ + "gTP_TEID", "GNB_ID" ], "fields": [ { - "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "is_ts": true, + "type": "ULLONG", + "name": "TS", "pos": "0" }, { - "is_ts": true, - "type": "ULLONG", - "name": "TB", + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", "pos": "1" }, { "is_ts": false, - "type": "INT", - "name": "total_reconfig_reject", + "type": "V_STR", + "name": "GNB_ID", "pos": "2" }, { "is_ts": false, - "type": "UINT", - "name": "count_radio_network", + "type": "V_STR", + "name": "gTP_TEID", "pos": "3" }, { "is_ts": false, - "type": "UINT", - "name": "count_transport", + "type": "INT", + "name": "cnt", "pos": "4" }, { "is_ts": false, "type": "UINT", - "name": "count_protocol", + "name": "rsrp_vbad", "pos": "5" }, { "is_ts": false, "type": "UINT", - "name": "count_misc", + "name": "rsrp_bad", "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_medium", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_good", + "pos": "8" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_vgood", + "pos": "9" + } + ] + }, + "mc_connects_cnt_pci": { + "keys": [ + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "count_ue_connects", + "pos": "4" } ] }, @@ -116,6 +173,118 @@ } ] }, + "drb_pdcp_pdu_stats": { + "keys": [ + "drb_Id", + "eutran_trace_id", + "eci" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "UINT", + "name": "eci", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", + "name": "eutran_trace_id", + "pos": "2" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "drb_Id", + "pos": "3" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "ue_drb_pdcppdu_count", + "pos": "4" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_drb_pdcppdu_count_per_time", + "pos": "5" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_drb_pdcppdu_discard_rate", + "pos": "6" + } + ] + }, + "rrcx_pdf_serv_beam_gnb": { + "keys": [ + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "1" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "2" + }, + { + "is_ts": false, + "type": "INT", + "name": "cnt", + "pos": "3" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_vbad", + "pos": "4" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_bad", + "pos": "5" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_medium", + "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_good", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_vgood", + "pos": "8" + } + ] + }, "rrcx_stats_neighbor_cell": { "keys": [ "CELL_ID", @@ -221,6 +390,106 @@ } ] }, + "throughput_meas_crnti": { + "keys": [ + "eutran_trace_id", + "eci" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "UINT", + "name": "eci", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", + "name": "eutran_trace_id", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_lte_tput", + "pos": "3" + } + ] + }, + "rrcx_pdf_neighbor_beam_cell": { + "keys": [ + "CELL_ID", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "CELL_ID", + "pos": "2" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "cnt", + "pos": "4" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_vbad", + "pos": "5" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_bad", + "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_medium", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_good", + "pos": "8" + }, + { + "is_ts": false, + "type": "UINT", + "name": "rsrp_vgood", + "pos": "9" + } + ] + }, "rrcx_stats_neighbor_gnb": { "keys": [ "GNB_ID" @@ -459,71 +728,64 @@ } ] }, - "rrcx_pdf_neighbor_beam_gtp_teid": { + "reconfig_status_reject_cause": { "keys": [ - "gTP_TEID", "GNB_ID" ], "fields": [ { - "is_ts": true, - "type": "ULLONG", - "name": "TS", + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", "pos": "0" }, { - "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "is_ts": true, + "type": "ULLONG", + "name": "TB", "pos": "1" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "ULLONG", + "name": "TS", "pos": "2" }, { "is_ts": false, - "type": "V_STR", - "name": "gTP_TEID", + "type": "FLOAT", + "name": "measurementInterval", "pos": "3" }, { "is_ts": false, "type": "INT", - "name": "cnt", + "name": "total_reconfig_reject", "pos": "4" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_vbad", + "name": "count_radio_network", "pos": "5" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_bad", + "name": "count_transport", "pos": "6" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_medium", + "name": "count_protocol", "pos": "7" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_good", + "name": "count_misc", "pos": "8" - }, - { - "is_ts": false, - "type": "UINT", - "name": "rsrp_vgood", - "pos": "9" } ] }, @@ -669,6 +931,51 @@ } ] }, + "requests_per_gtp_teid_pci": { + "keys": [ + "gTP_TEID", + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "1" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "2" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "gTP_TEID", + "pos": "3" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "4" + }, + { + "is_ts": false, + "type": "INT", + "name": "n_requests", + "pos": "5" + } + ] + }, "rrcx_pdf_neighbor_gnb": { "keys": [ "GNB_ID" @@ -1067,6 +1374,138 @@ } ] }, + "mod_status_refuse_cause_pci": { + "keys": [ + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "0" + }, + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "total_reconfig_refuse", + "pos": "4" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_radio_network", + "pos": "5" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_transport", + "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_protocol", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_misc", + "pos": "8" + } + ] + }, + "throughput_userclass_pci": { + "keys": [ + "ARP", + "physCellId", + "GNB_ID", + "qCI" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "2" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "qCI", + "pos": "3" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "ARP", + "pos": "4" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "5" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "active_throughput", + "pos": "6" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "average_throughput", + "pos": "7" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "min_throughput", + "pos": "8" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "max_throughput", + "pos": "9" + } + ] + }, "addreq_pdf_nr_gnb": { "keys": [ "GNB_ID" @@ -1196,6 +1635,73 @@ } ] }, + "rrcx_stats_serv_gnb": { + "keys": [ + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "1" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "2" + }, + { + "is_ts": false, + "type": "INT", + "name": "cnt", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "min_rsrp", + "pos": "4" + }, + { + "is_ts": false, + "type": "INT", + "name": "pctl_05_rsrp", + "pos": "5" + }, + { + "is_ts": false, + "type": "INT", + "name": "median_rsrp", + "pos": "6" + }, + { + "is_ts": false, + "type": "INT", + "name": "pctl_95_rsrp", + "pos": "7" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "stddev_rsrp", + "pos": "8" + }, + { + "is_ts": false, + "type": "INT", + "name": "max_rsrp", + "pos": "9" + } + ] + }, "mc_connects_cnt_gtp_teid": { "keys": [ "gTP_TEID", @@ -1453,8 +1959,9 @@ } ] }, - "rrcx_pdf_serv_gnb": { + "mod_req_failure_distribution_pci": { "keys": [ + "physCellId", "GNB_ID" ], "fields": [ @@ -1466,51 +1973,161 @@ }, { "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "type": "V_STR", + "name": "GNB_ID", "pos": "1" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "UINT", + "name": "physCellId", "pos": "2" }, { "is_ts": false, - "type": "INT", - "name": "cnt", + "type": "FLOAT", + "name": "measurementInterval", "pos": "3" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_vbad", + "type": "INT", + "name": "cnt", "pos": "4" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_bad", + "name": "count_protobuf_unspecified", "pos": "5" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_medium", + "name": "count_t310_Expiry", "pos": "6" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_good", + "name": "count_randomAccessProblem", "pos": "7" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_vgood", + "name": "count_rlc_MaxNumRetx", + "pos": "8" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_synchReconfigFailure_SCG", + "pos": "9" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_scg_reconfigFailure", + "pos": "10" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_srb3_IntegrityFailure", + "pos": "11" + } + ] + }, + "dl_sched_trace_stats": { + "keys": [ + "eutran_trace_id", + "eci" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "UINT", + "name": "eci", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", + "name": "eutran_trace_id", + "pos": "2" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "ue_num_schedTTIs", + "pos": "3" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_num_schedTTIs_per_time", + "pos": "4" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_avg_PRB_alloc_rate", + "pos": "5" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_avg_PRB_alloc_rate_per_TTI", + "pos": "6" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "ue_HARQ_pid_count", + "pos": "7" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_HARQ_pid_count_per_time", "pos": "8" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_schedTTIs_MIMO_percent", + "pos": "9" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_schedTTIs_TxDiversity_percent", + "pos": "10" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_HARQ_retx_pid_count", + "pos": "11" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_MAC_PDU_init_Tx_failed_percent", + "pos": "12" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_MAC_PDU_last_Tx_failed_percent", + "pos": "13" } ] }, @@ -1661,71 +2278,127 @@ } ] }, - "rrcx_pdf_neighbor_beam_cell": { + "reconfig_status_reject_cause_pci": { "keys": [ - "CELL_ID", + "physCellId", "GNB_ID" ], "fields": [ + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "0" + }, { "is_ts": true, "type": "ULLONG", + "name": "TB", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", "name": "TS", + "pos": "2" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "3" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "4" + }, + { + "is_ts": false, + "type": "INT", + "name": "total_reconfig_reject", + "pos": "5" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_radio_network", + "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_transport", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_protocol", + "pos": "8" + }, + { + "is_ts": false, + "type": "UINT", + "name": "count_misc", + "pos": "9" + } + ] + }, + "reconfig_status_success_rate_pci": { + "keys": [ + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", "pos": "0" }, { "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "type": "UINT", + "name": "physCellId", "pos": "1" }, { - "is_ts": false, - "type": "UINT", - "name": "CELL_ID", + "is_ts": true, + "type": "ULLONG", + "name": "TS", "pos": "2" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "FLOAT", + "name": "measurementInterval", "pos": "3" }, { "is_ts": false, "type": "INT", - "name": "cnt", + "name": "total_reconfiguration_requests", "pos": "4" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_vbad", + "name": "successful_reconfiguration_requests", "pos": "5" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_bad", + "type": "FLOAT", + "name": "success_rate", "pos": "6" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_medium", + "type": "FLOAT", + "name": "failure_rate", "pos": "7" - }, - { - "is_ts": false, - "type": "UINT", - "name": "rsrp_good", - "pos": "8" - }, - { - "is_ts": false, - "type": "UINT", - "name": "rsrp_vgood", - "pos": "9" } ] }, @@ -1813,9 +2486,8 @@ } ] }, - "rrcx_stats_neighbor_beam_cell": { + "rrcx_pdf_serv_gnb": { "keys": [ - "CELL_ID", "GNB_ID" ], "fields": [ @@ -1833,61 +2505,78 @@ }, { "is_ts": false, - "type": "UINT", - "name": "CELL_ID", + "type": "V_STR", + "name": "GNB_ID", "pos": "2" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "INT", + "name": "cnt", "pos": "3" }, { "is_ts": false, - "type": "INT", - "name": "cnt", + "type": "UINT", + "name": "rsrp_vbad", "pos": "4" }, { "is_ts": false, - "type": "INT", - "name": "min_rsrp", + "type": "UINT", + "name": "rsrp_bad", "pos": "5" }, { "is_ts": false, - "type": "INT", - "name": "pctl_05_rsrp", + "type": "UINT", + "name": "rsrp_medium", "pos": "6" }, { "is_ts": false, - "type": "INT", - "name": "median_rsrp", + "type": "UINT", + "name": "rsrp_good", "pos": "7" }, { "is_ts": false, - "type": "INT", - "name": "pctl_95_rsrp", + "type": "UINT", + "name": "rsrp_vgood", "pos": "8" - }, + } + ] + }, + "reconfig_all_debug": { + "keys": [], + "fields": [ { "is_ts": false, - "type": "FLOAT", - "name": "stddev_rsrp", - "pos": "9" + "type": "V_STR", + "name": "name", + "pos": "0" }, { "is_ts": false, "type": "INT", - "name": "max_rsrp", - "pos": "10" + "name": "cnt", + "pos": "1" + }, + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "3" } ] }, - "rrcx_stats_serv_gnb": { + "mc_unique_ue_cnt": { "keys": [ "GNB_ID" ], @@ -1898,64 +2587,29 @@ "name": "TS", "pos": "0" }, - { - "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", - "pos": "1" - }, { "is_ts": false, "type": "V_STR", "name": "GNB_ID", - "pos": "2" - }, - { - "is_ts": false, - "type": "INT", - "name": "cnt", - "pos": "3" - }, - { - "is_ts": false, - "type": "INT", - "name": "min_rsrp", - "pos": "4" - }, - { - "is_ts": false, - "type": "INT", - "name": "pctl_05_rsrp", - "pos": "5" - }, - { - "is_ts": false, - "type": "INT", - "name": "median_rsrp", - "pos": "6" - }, - { - "is_ts": false, - "type": "INT", - "name": "pctl_95_rsrp", - "pos": "7" + "pos": "1" }, { "is_ts": false, "type": "FLOAT", - "name": "stddev_rsrp", - "pos": "8" + "name": "measurementInterval", + "pos": "2" }, { "is_ts": false, "type": "INT", - "name": "max_rsrp", - "pos": "9" + "name": "count_unique_ue", + "pos": "3" } ] }, - "mc_unique_ue_cnt": { + "requests_per_gtp_teid": { "keys": [ + "gTP_TEID", "GNB_ID" ], "fields": [ @@ -1967,21 +2621,27 @@ }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "FLOAT", + "name": "measurementInterval", "pos": "1" }, { "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "type": "V_STR", + "name": "GNB_ID", "pos": "2" }, { "is_ts": false, - "type": "INT", - "name": "count_unique_ue", + "type": "V_STR", + "name": "gTP_TEID", "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "n_requests", + "pos": "4" } ] }, @@ -2268,9 +2928,107 @@ }, { "is_ts": false, - "type": "INT", - "name": "max_rsrp", - "pos": "9" + "type": "INT", + "name": "max_rsrp", + "pos": "9" + } + ] + }, + "erab_stats_pci": { + "keys": [ + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "total_erabs", + "pos": "4" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_1", + "pos": "5" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_2", + "pos": "6" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_3", + "pos": "7" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_4", + "pos": "8" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_5", + "pos": "9" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_6", + "pos": "10" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_7", + "pos": "11" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_8", + "pos": "12" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_9", + "pos": "13" + }, + { + "is_ts": false, + "type": "UINT", + "name": "qCI_other", + "pos": "14" } ] }, @@ -2410,9 +3168,9 @@ } ] }, - "handovers_gnb": { + "throughput_pci": { "keys": [ - "GTP_TEID", + "physCellId", "GNB_ID" ], "fields": [ @@ -2424,44 +3182,51 @@ }, { "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "type": "UINT", + "name": "physCellId", "pos": "1" }, { "is_ts": false, "type": "V_STR", - "name": "GTP_TEID", + "name": "GNB_ID", "pos": "2" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "FLOAT", + "name": "measurementInterval", "pos": "3" }, { "is_ts": false, - "type": "INT", - "name": "total_addition_requests", + "type": "LLONG", + "name": "active_throughput", "pos": "4" }, { "is_ts": false, - "type": "UINT", - "name": "n_handovers", + "type": "LLONG", + "name": "average_throughput", "pos": "5" }, { "is_ts": false, - "type": "UINT", - "name": "n_ping_pong", + "type": "LLONG", + "name": "min_throughput", "pos": "6" + }, + { + "is_ts": false, + "type": "LLONG", + "name": "max_throughput", + "pos": "7" } ] }, - "rrcx_pdf_serv_beam_gnb": { + "mc_unique_ue_pci_cnt": { "keys": [ + "physCellId", "GNB_ID" ], "fields": [ @@ -2473,55 +3238,81 @@ }, { "is_ts": false, - "type": "FLOAT", - "name": "measurementInterval", + "type": "V_STR", + "name": "GNB_ID", "pos": "1" }, { "is_ts": false, - "type": "V_STR", - "name": "GNB_ID", + "type": "UINT", + "name": "physCellId", "pos": "2" }, { "is_ts": false, - "type": "INT", - "name": "cnt", + "type": "FLOAT", + "name": "measurementInterval", "pos": "3" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_vbad", + "type": "INT", + "name": "count_unique_ue", "pos": "4" + } + ] + }, + "handovers_gnb": { + "keys": [ + "GTP_TEID", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_bad", - "pos": "5" + "type": "FLOAT", + "name": "measurementInterval", + "pos": "1" }, { "is_ts": false, - "type": "UINT", - "name": "rsrp_medium", - "pos": "6" + "type": "V_STR", + "name": "GTP_TEID", + "pos": "2" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "total_addition_requests", + "pos": "4" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_good", - "pos": "7" + "name": "n_handovers", + "pos": "5" }, { "is_ts": false, "type": "UINT", - "name": "rsrp_vgood", - "pos": "8" + "name": "n_ping_pong", + "pos": "6" } ] }, - "throughput_ue": { + "throughput_session": { "keys": [ "UE_ID", "GNB_ID", @@ -2584,8 +3375,9 @@ } ] }, - "distinct_users": { + "rrcx_stats_neighbor_beam_cell": { "keys": [ + "CELL_ID", "GNB_ID" ], "fields": [ @@ -2601,17 +3393,59 @@ "name": "measurementInterval", "pos": "1" }, + { + "is_ts": false, + "type": "UINT", + "name": "CELL_ID", + "pos": "2" + }, { "is_ts": false, "type": "V_STR", "name": "GNB_ID", - "pos": "2" + "pos": "3" }, { "is_ts": false, "type": "INT", - "name": "num_users", - "pos": "3" + "name": "cnt", + "pos": "4" + }, + { + "is_ts": false, + "type": "INT", + "name": "min_rsrp", + "pos": "5" + }, + { + "is_ts": false, + "type": "INT", + "name": "pctl_05_rsrp", + "pos": "6" + }, + { + "is_ts": false, + "type": "INT", + "name": "median_rsrp", + "pos": "7" + }, + { + "is_ts": false, + "type": "INT", + "name": "pctl_95_rsrp", + "pos": "8" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "stddev_rsrp", + "pos": "9" + }, + { + "is_ts": false, + "type": "INT", + "name": "max_rsrp", + "pos": "10" } ] }, @@ -2740,6 +3574,44 @@ } ] }, + "mc_connected_cnt_pci": { + "keys": [ + "physCellId", + "GNB_ID" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "V_STR", + "name": "GNB_ID", + "pos": "1" + }, + { + "is_ts": false, + "type": "UINT", + "name": "physCellId", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "3" + }, + { + "is_ts": false, + "type": "INT", + "name": "count_connected_ue", + "pos": "4" + } + ] + }, "mod_status_refuse_cause": { "keys": [ "GNB_ID" @@ -2930,6 +3802,38 @@ } ] }, + "ue_drb_count": { + "keys": [ + "eutran_trace_id", + "eci" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "UINT", + "name": "eci", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", + "name": "eutran_trace_id", + "pos": "2" + }, + { + "is_ts": false, + "type": "INT", + "name": "ue_drb_count", + "pos": "3" + } + ] + }, "reconfig_status_reject_cause_gtp_teid": { "keys": [ "gTP_TEID", @@ -2954,35 +3858,47 @@ "name": "TB", "pos": "2" }, + { + "is_ts": false, + "type": "ULLONG", + "name": "TS", + "pos": "3" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "measurementInterval", + "pos": "4" + }, { "is_ts": false, "type": "INT", "name": "total_reconfig_reject", - "pos": "3" + "pos": "5" }, { "is_ts": false, "type": "UINT", "name": "count_radio_network", - "pos": "4" + "pos": "6" }, { "is_ts": false, "type": "UINT", "name": "count_transport", - "pos": "5" + "pos": "7" }, { "is_ts": false, "type": "UINT", "name": "count_protocol", - "pos": "6" + "pos": "8" }, { "is_ts": false, "type": "UINT", "name": "count_misc", - "pos": "7" + "pos": "9" } ] }, @@ -3104,6 +4020,38 @@ } ] }, + "throughput_meas_alt_crnti": { + "keys": [ + "eutran_trace_id", + "eci" + ], + "fields": [ + { + "is_ts": true, + "type": "ULLONG", + "name": "TS", + "pos": "0" + }, + { + "is_ts": false, + "type": "UINT", + "name": "eci", + "pos": "1" + }, + { + "is_ts": false, + "type": "ULLONG", + "name": "eutran_trace_id", + "pos": "2" + }, + { + "is_ts": false, + "type": "FLOAT", + "name": "ue_lte_tput", + "pos": "3" + } + ] + }, "mod_req_failure_distribution_gtp_teid": { "keys": [ "gTP_TEID", diff --git a/mc-core/mc/queries/output_spec.cfg b/mc-core/mc/queries/output_spec.cfg index cc5cbc1..3a5547d 100644 --- a/mc-core/mc/queries/output_spec.cfg +++ b/mc-core/mc/queries/output_spec.cfg @@ -23,30 +23,40 @@ rrcx_stats_neighbor_gnb,stream,,,,, rrcx_stats_neighbor_beam_cell,stream,,,,, rrcx_stats_neighbor_beam_gnb,stream,,,,, mc_connected_cnt,stream,,,,, +mc_connected_cnt_pci,stream,,,,, mc_connection_stats,stream,,,,, mc_connects_cnt,stream,,,,, +mc_connects_cnt_pci,stream,,,,, mc_connects_cnt_gtp_teid,stream,,,,, mc_disconnects_cnt,stream,,,,, mc_unique_ue_cnt,stream,,,,, +mc_unique_ue_pci_cnt,stream,,,,, addreq_success_stats,stream,,,,, release_req_success_stats,stream,,,,, reconfig_status_success_rate,stream,,,,, reconfig_status_success_rate_gtp_teid,stream,,,,, +reconfig_status_success_rate_pci,stream,,,,, reconfig_status_reject_cause,stream,,,,, reconfig_status_reject_cause_gtp_teid,stream,,,,, +reconfig_status_reject_cause_pci,stream,,,,, mod_status_refuse_cause,stream,,,,, +mod_status_refuse_cause_pci,stream,,,,, mod_failure_cause_gtp_teid,stream,,,,, release_cause,stream,,,,, release_cause_gtp_ueid,stream,,,,, erab_stats,stream,,,,, -throughput_ue,stream,,,,, +erab_stats_pci,stream,,,,, +throughput_session,stream,,,,, +throughput_pci,stream,,,,, throughput_rollup,stream,,,,, throughput_gnb,stream,,,,, mod_req_failure_distribution,stream,,,,, mod_req_failure_distribution_gtp_teid,stream,,,,, +mod_req_failure_distribution_pci,stream,,,,, handovers_gnb,stream,,,,, ho_counts_gtp_teid,stream,,,,, -distinct_users,stream,,,,, +requests_per_gtp_teid,stream,,,,, +requests_per_gtp_teid_pci,stream,,,,, throughput_gtp_teid,stream,,,,, throughput_gtp_teid_bearer,stream,,,,, mc_connection_stats_gtp_teid,stream,,,,, @@ -55,3 +65,9 @@ reconfig_all_debug,stream,,,,, reconfig_success_debug,stream,,,,, reconfig_reject_debug,stream,,,,, dc_release_debug,stream,,,,, +throughput_meas_crnti,stream,,,,, +throughput_meas_alt_crnti,stream,,,,, +drb_pdcp_pdu_stats,stream,,,,, +ue_drb_count,stream,,,,, +dl_sched_trace_stats,stream,,,,, +throughput_userclass_pci,stream,,,,, diff --git a/mc-core/mc/queries/pcmd_throughput.gsql b/mc-core/mc/queries/pcmd_throughput.gsql new file mode 100644 index 0000000..8ca9e2f --- /dev/null +++ b/mc-core/mc/queries/pcmd_throughput.gsql @@ -0,0 +1,72 @@ +-- Change to grouping by ECI+eUTRANTraceId + +DEFINE{query_name 'throughput_meas_crnti'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'throughput experienced by a UE'; +} +PARAM{ window uint; } +select $window*(TB+1) as TS, eci, eutran_trace_id, + sum((8.0*sumOfSentNonGbrBytes+sumOfSentGbrBytes)) / sum(numOfTtiPositiveDlBuf/1000.0) as ue_lte_tput +from LTE_PCMD.lte_thpt_meas +group by timestamp_ms/$window as TB, eci, eutran_trace_id +; + + +DEFINE{query_name 'throughput_meas_alt_crnti'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'throughput experienced by a UE (alternative version)'; +} +PARAM{ window uint; } +select $window*(TB+1) as TS, eci, eutran_trace_id, + sum((8.0*sumOfSentNonGbrBytes+sumOfSentGbrBytes)) / sum(numOfTtiUeSched/1000.0) as ue_lte_tput +from LTE_PCMD.lte_thpt_meas +Where numOfTtiUeSched>0 +group by timestamp_ms/$window as TB, eci, eutran_trace_id +; + + +DEFINE{query_name 'drb_pdcp_pdu_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'drb pdcp pdu stats'; +} +PARAM{ window uint; } +select $window*(TB+1) as TS, eci, eutran_trace_id, drb_Id, + sum(numOfPdcpPduRcvdForTx) as ue_drb_pdcppdu_count, + sum(numOfPdcpPduRcvdForTx) / sum(dataCollectionDuration/1000.0) as ue_drb_pdcppdu_count_per_time, + 100.0*sum(numOfPdcpPduDiscarded) / (sum(1.0*numOfPdcpPduRcvdForTx)) as ue_drb_pdcppdu_discard_rate +from LTE_PCMD.lte_rb_thpt +group by timestamp_ms/$window as TB, eci, eutran_trace_id, drb_Id +; + +DEFINE{query_name 'ue_drb_count'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'ue drb count'; +} +PARAM{ window uint; } +select TS, eci, eutran_trace_id, + count(*) as ue_drb_count +from drb_pdcp_pdu_stats +group by TS, eci, eutran_trace_id +; + +DEFINE{query_name 'dl_sched_trace_stats'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'dl sched trace stats'; +} +PARAM{ window uint; } +select $window*(TB+1) as TS, eci, eutran_trace_id, + sum(numOfTtiUeSched) as ue_num_schedTTIs, + sum(numOfTtiUeSched) / (sum(recordCollectionDuration)/1000.0) as ue_num_schedTTIs_per_time, + sum(numOfPrbUsed) / (sum(recordCollectionDuration)/1000.0) as ue_avg_PRB_alloc_rate, + sum(numOfPrbUsed) / (1.0*sum(numOfTtiUeSched)) as ue_avg_PRB_alloc_rate_per_TTI, + sum(numOfHarq1stTx) as ue_HARQ_pid_count, + sum(numOfHarq1stTx) / (sum(numOfTtiUeSched)/1000.0) as ue_HARQ_pid_count_per_time, + 100.0*sum(numOfTtiUeSchedMimo) / (1.0*sum(numOfTtiUeSched)) as ue_schedTTIs_MIMO_percent, + 100.0*sum(numOfTtiUeSched - numOfTtiUeSchedMimo) / (1.0*sum(numOfTtiUeSched)) as ue_schedTTIs_TxDiversity_percent, + 100.0*sum(numOfHarqReTx) / (1.0*sum(numOfHarq1stTx)) as ue_HARQ_retx_pid_count, + 100.0*sum(numOfBad1stMacPduTx) / (1.0*sum(numOfHarq1stTx)) as ue_MAC_PDU_init_Tx_failed_percent, + 100.0*sum(numOfBadLastMacPduTx) / (1.0*sum(numOfHarq1stTx)) as ue_MAC_PDU_last_Tx_failed_percent +from LTE_PCMD.lte_dl_sched_trace +group by timestamp_ms/$window as TB, eci, eutran_trace_id + + diff --git a/mc-core/mc/queries/reconfig_status.gsql b/mc-core/mc/queries/reconfig_status.gsql index efe7eb5..ec2250f 100644 --- a/mc-core/mc/queries/reconfig_status.gsql +++ b/mc-core/mc/queries/reconfig_status.gsql @@ -82,6 +82,34 @@ from reconfig_status_join group by gnb_id, gTP_TEID, TB ; +DEFINE{query_name 'reconfig_status_join_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Associate gtp_teid using eUE_ID'; +} +PARAM{ window uint; } +Select r.eUE_ID, M.physCellId, r.gnb_id, r.TB, + r.max_start_time, r.max_end_time +INNER_JOIN from reconfig_status_merge r, gnb_ueid_cellid_map M +where r.eUE_ID=M.id_MeNB_UE_X2AP_ID and r.gnb_id=M.GNB_ID and r.TB=M.TB +; + +DEFINE{query_name 'reconfig_status_success_rate_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'fraction of DC connect requests which are successful, on a per-user (gtp_teid) basis.'; +} +PARAM{ window uint; } +select gnb_id as GNB_ID, physCellId, + ($window*(TB+1))/1000 as TS, + $window/1000.0 as measurementInterval, + count(*) as total_reconfiguration_requests, + sum( GEQ(max_end_time,1) ) as successful_reconfiguration_requests, + (1.0*sum( GEQ( max_end_time,1) ))/count(*) as success_rate, + 1.0 - ( (1.0*sum( GEQ( max_end_time,1) ))/count(*) ) as failure_rate +from reconfig_status_join_pci +group by gnb_id, TB, physCellId +; + + // ---------------------------------------------- // Merge in reconfig_reject causes and aggregate with this. @@ -91,6 +119,8 @@ DEFINE{query_name 'reconfig_status_reject_cause'; } PARAM{ window uint; } Select gnb_id as GNB_ID, TB, + non_temporal( ($window*(TB+1))/1000 ) as TS, + $window/1000.0 as measurementInterval, count(*) as total_reconfig_reject, sum( GEQ(cause_radio_network,0) ) as count_radio_network, sum( GEQ(cause_transport,0) ) as count_transport, @@ -100,6 +130,36 @@ from ADDREQREJECT.sgnb_add_req_reject group by gnb_id, timestamp_ms / $window as TB ; +DEFINE{query_name 'sgnb_add_req_reject_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join sgnb_add_req_reject with gnb_ueid_cellid_map to create data stream for reconfig_status_reject_cause'; +} +PARAM{ window uint; } +select M.TB, M.GNB_ID, M.physCellId, g.cause_radio_network, + g.cause_transport, g.cause_protocol, g.cause_misc +INNER_JOIN from ADDREQREJECT.sgnb_add_req_reject g, gnb_ueid_cellid_map M +Where g.gnb_id=M.GNB_ID and g.id_MeNB_UE_X2AP_ID=M.id_MeNB_UE_X2AP_ID + and g.timestamp_ms/$window=M.TB +; + +DEFINE{query_name 'reconfig_status_reject_cause_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'distribution of causes for DC rejection'; +} +PARAM{ window uint; } +Select GNB_ID, TB, + non_temporal( ($window*(TB+1))/1000 ) as TS, physCellId, + $window/1000.0 as measurementInterval, + count(*) as total_reconfig_reject, + sum( GEQ(cause_radio_network,0) ) as count_radio_network, + sum( GEQ(cause_transport,0) ) as count_transport, + sum( GEQ(cause_protocol,0) ) as count_protocol, + sum( GEQ(cause_misc,0) ) as count_misc +from sgnb_add_req_reject_pci_join +group by GNB_ID, TB, physCellId +; + + DEFINE{query_name 'reconfig_status_reject_join'; max_lfta_disorder '1'; max_hfta_disorder '1'; comment 'Associate gtp_teid using eUE_ID'; @@ -119,6 +179,8 @@ DEFINE{query_name 'reconfig_status_reject_cause_gtp_teid'; } PARAM{ window uint; } Select gnb_id as GNB_ID, gTP_TEID, TB, + non_temporal( ($window*(TB+1))/1000 ) as TS, + $window/1000.0 as measurementInterval, count(*) as total_reconfig_reject, sum( GEQ(cause_radio_network,0) ) as count_radio_network, sum( GEQ(cause_transport,0) ) as count_transport, @@ -198,6 +260,35 @@ from mod_status_refuse_cause_base group by GNB_ID, TB ; +DEFINE{query_name 'mod_status_refuse_cause_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join mod_status_refuse_cause_base with gnb_ueid_cellid_map to create data stream for mod_status_refuse_cause_pci'; +} +PARAM{ window uint; } +select M.TB, M.GNB_ID, M.physCellId, + g.total_reconfig_refuse, g.count_radio_network, + g.count_transport, g.count_protocol, g.count_misc +INNER_JOIN from mod_status_refuse_cause_base g, gnb_ueid_cellid_map M +Where g.GNB_ID=M.GNB_ID and g.id_MeNB_UE_X2AP_ID=M.id_MeNB_UE_X2AP_ID + and g.TB=M.TB +; + +DEFINE{query_name 'mod_status_refuse_cause_pci'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'distribution of causes for a sgnb modification refusal (base)'; +} +PARAM{ window uint; } +Select GNB_ID, ($window*(TB+1))/1000 as TS, physCellId, + $window/1000.0 as measurementInterval, + sum(total_reconfig_refuse) as total_reconfig_refuse, + sum( count_radio_network ) as count_radio_network, + sum( count_transport ) as count_transport, + sum( count_protocol ) as count_protocol, + sum( count_misc ) as count_misc +from mod_status_refuse_cause_pci_join +group by GNB_ID, TB, physCellId +; + DEFINE{query_name 'mod_req_reject_cause_base'; max_lfta_disorder '1'; max_hfta_disorder '1'; comment 'distribution of causes for a sgnb modification request reject (base)'; diff --git a/mc-core/mc/queries/throughput.gsql b/mc-core/mc/queries/throughput.gsql index 7f40ffe..c559937 100644 --- a/mc-core/mc/queries/throughput.gsql +++ b/mc-core/mc/queries/throughput.gsql @@ -1,7 +1,7 @@ -DEFINE{query_name 'throughput_ue'; +DEFINE{query_name 'throughput_session'; extra_keys 'TS'; max_lfta_disorder '1'; max_hfta_disorder '1'; - comment 'throughput experienced by UE over a measurement interval. *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval'; + comment 'throughput experienced by UE session over a measurement interval. *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval'; } PARAM{ window uint; } select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID, @@ -36,9 +36,9 @@ from RATDATAUSAGE.rat_data_usage group by id_SgNB_UE_X2AP_ID as GNB_UE_ID, gnb_id as GNB_ID, e_RAB_ID, timestamp_ms/$window as TB ; -DEFINE{query_name 'throughput_ue_gtp_teid_join'; +DEFINE{query_name 'throughput_session_gtp_teid_join'; max_lfta_disorder '1'; max_hfta_disorder '1'; - comment 'Join throughput_ue with gnb_ueid_teid_map to get the gtp_teid, a followup query will reaggregate'; + comment 'Join throughput_session with gnb_ueid_teid_map to get the gtp_teid, a followup query will reaggregate'; } PARAM{ window uint; } select T.TB, T.GNB_UE_ID, T.GNB_ID, T.e_RAB_ID, M.gTP_TEID, @@ -60,10 +60,39 @@ select ($window*(TB+1))/1000 as TS, gTP_TEID, GNB_ID, sum(sum_usageCountDL) / UMAX( max(max_end_ts) - min(min_start_ts), 1) as average_throughput, min( min_throughput ) as min_throughput, max( max_throughput ) as max_throughput -from throughput_ue_gtp_teid_join +from throughput_session_gtp_teid_join group by GNB_ID, gTP_TEID, TB ; +DEFINE{query_name 'throughput_session_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join throughput_session with gnb_ueid_teid_map to get the gtp_teid, a followup query will reaggregate'; +} +PARAM{ window uint; } +select T.TB, T.GNB_UE_ID, T.GNB_ID, T.e_RAB_ID, M.physCellId, + T.sum_usageCountDL, T.sum_duration, T.max_end_ts, T.min_start_ts, + T.min_throughput, max_throughput +INNER_JOIN from prelim_throughput_gtp_teid T, gnb_ueid_cellid_map M +Where T.GNB_ID=M.GNB_ID and T.GNB_UE_ID=M.id_SgNB_UE_X2AP_ID and T.TB=M.TB +; + +DEFINE{query_name 'throughput_pci'; + extra_keys 'TS'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'throughput experienced by UE, as determined by the gtp_teid, over a measurement interval. *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval'; +} +PARAM{ window uint; } +select ($window*(TB+1))/1000 as TS, physCellId, GNB_ID, + $window/1000.0 as measurementInterval, + sum(sum_usageCountDL) / UMAX( sum(sum_duration), 1) as active_throughput, + sum(sum_usageCountDL) / UMAX( max(max_end_ts) - min(min_start_ts), 1) as average_throughput, + min( min_throughput ) as min_throughput, + max( max_throughput ) as max_throughput +from throughput_session_pci_join +group by GNB_ID, physCellId, TB +; + + DEFINE{query_name 'throughput_gtp_teid_bearer'; extra_keys 'TS'; max_lfta_disorder '1'; max_hfta_disorder '1'; @@ -76,7 +105,7 @@ select ($window*(TB+1))/1000 as TS, gTP_TEID, GNB_ID, e_RAB_ID, sum(sum_usageCountDL) / UMAX( max(max_end_ts) - min(min_start_ts), 1) as average_throughput, min( min_throughput ) as min_throughput, max( max_throughput ) as max_throughput -from throughput_ue_gtp_teid_join +from throughput_session_gtp_teid_join group by GNB_ID, gTP_TEID, e_RAB_ID, TB ; @@ -153,13 +182,13 @@ CLOSING_WHEN ((TB+1)*$window-LAST(timestamp_ms))/1000.0 >= 3600 -- CLOSING_WHEN ((TB+1)*$window-LAST(timestamp_ms))/1000.0 >= 3600 -- ; -DEFINE{query_name 'throughput_ue_userclass_join'; +DEFINE{query_name 'throughput_session_userclass_join'; max_lfta_disorder '1'; max_hfta_disorder '1'; - comment 'Join throughput_ue with gnb_ueid_teid_map to get the gtp_tied, a followup query will reaggregate'; + comment 'Join throughput_session with gnb_ueid_teid_map to get the gtp_tied, a followup query will reaggregate'; } PARAM{ window uint; } -select T.TB, T.GNB_UE_ID, T.GNB_ID, - EQ(qCI, 9)*EQ(M.ARP, 15) + 2*EQ(qCI, 8)*EQ(M.ARP, 15) as class, +select T.TB, T.GNB_UE_ID, T.GNB_ID, M.qCI, M.ARP, M.id_SgNB_UE_X2AP_ID, + EQ(qCI, 9)*EQ(M.ARP, 15) + 2*EQ(qCI, 9)*EQ(M.ARP, 14) as class, T.sum_usageCountDL, T.sum_duration, T.max_end_ts, T.min_start_ts, T.min_throughput, max_throughput INNER_JOIN from prelim_throughput_gtp_teid T, gnb_ueid_qci_arp_map M @@ -179,11 +208,38 @@ select ($window*(TB+1))/1000 as TS, GNB_ID, class as CLASS, sum(sum_usageCountDL) / UMAX( max(max_end_ts) - min(min_start_ts), 1) as average_throughput, min( min_throughput ) as min_throughput, max( max_throughput ) as max_throughput -from throughput_ue_userclass_join -//where class>0 +from throughput_session_userclass_join +-- where class>0 group by TB, GNB_ID, class ; +DEFINE{query_name 'throughput_group_pci_join'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'Join throughput_session with gnb_ueid_teid_map to get the gtp_teid, a followup query will reaggregate'; +} +PARAM{ window uint; } +select T.TB, T.GNB_UE_ID, T.GNB_ID, T.qCI, T.ARP, M.physCellId, + T.sum_usageCountDL, T.sum_duration, T.max_end_ts, T.min_start_ts, + T.min_throughput, max_throughput +INNER_JOIN from throughput_session_userclass_join T, gnb_ueid_cellid_map M +Where T.GNB_ID=M.GNB_ID and T.GNB_UE_ID=M.id_SgNB_UE_X2AP_ID and T.TB=M.TB +; + +DEFINE{query_name 'throughput_userclass_pci'; + extra_keys 'TS'; + max_lfta_disorder '1'; max_hfta_disorder '1'; + comment 'throughput experienced by UE, rolled up into user classes, over a measurement interval. Class A (qci=9, arp=15) is class=1 and Class B (qci=8, arp=15) is class=2. *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval'; +} +PARAM{ window uint; } +select ($window*(TB+1))/1000 as TS, GNB_ID, physCellId, qCI, ARP, + $window/1000.0 as measurementInterval, + sum(sum_usageCountDL) / UMAX( sum(sum_duration), 1) as active_throughput, + sum(sum_usageCountDL) / UMAX( max(max_end_ts) - min(min_start_ts), 1) as average_throughput, + min( min_throughput ) as min_throughput, + max( max_throughput ) as max_throughput +from throughput_group_pci_join +group by TB, GNB_ID, physCellId, qCI, ARP +; DEFINE{query_name 'throughput_rollup'; @@ -203,7 +259,7 @@ select TS, e_RAB_ID, GNB_ID, quantile_of( UINT(active_throughput), .50) as active_throughput_percentile_50, avg( active_throughput) as average_active_throughput, quantile_of( UINT(active_throughput), .95) as active_throughput_percentile_95 -from throughput_ue +from throughput_session group by TS, e_RAB_ID, GNB_ID ; @@ -231,3 +287,4 @@ from RATDATAUSAGE.rat_data_usage group by e_RAB_ID, gnb_id as GNB_ID, timestamp_ms/$window as TB + -- 2.16.6