Updating a set of supported NR metrics 17/3917/1 1.0.8
authorvlad shkapenyuk <vshkap@research.att.com>
Fri, 29 May 2020 16:35:05 +0000 (12:35 -0400)
committervlad shkapenyuk <vshkap@research.att.com>
Fri, 29 May 2020 16:35:05 +0000 (12:35 -0400)
Signed-off-by: vlad shkapenyuk <vshkap@research.att.com>
Change-Id: I5b7639ac21e6033d94b404613eb907c13b9fb662

26 files changed:
mc-core/Dockerfile
mc-core/container-tag.yaml
mc-core/mc/cfg/ifres.xml
mc-core/mc/cfg/packet_schema.txt
mc-core/mc/local/add_req_ack_cellid.h [new file with mode: 0644]
mc-core/mc/local/lte_dl_sched_trace.h [new file with mode: 0644]
mc-core/mc/local/lte_pcell_meas.h [new file with mode: 0644]
mc-core/mc/local/lte_rb_thpt.h [new file with mode: 0644]
mc-core/mc/local/lte_thpt_meas.h [new file with mode: 0644]
mc-core/mc/local_datasource/Makefile
mc-core/mc/local_datasource/ricgeomessages.pb-c.c [new file with mode: 0644]
mc-core/mc/local_datasource/ricgeomessages.pb-c.h [new file with mode: 0644]
mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.c [new file with mode: 0644]
mc-core/mc/local_datasource/ricgeomessages_pcmdreport.pb-c.h [new file with mode: 0644]
mc-core/mc/local_datasource/rts_proto.c
mc-core/mc/local_datasource/rts_proto.c.save [new file with mode: 0644]
mc-core/mc/mc_deployment.json
mc-core/mc/queries/admitted_erabs.gsql
mc-core/mc/queries/dc_conn_stats.gsql
mc-core/mc/queries/handovers.gsql
mc-core/mc/queries/mod_req_failure.gsql
mc-core/mc/queries/nib.json
mc-core/mc/queries/output_spec.cfg
mc-core/mc/queries/pcmd_throughput.gsql [new file with mode: 0644]
mc-core/mc/queries/reconfig_status.gsql
mc-core/mc/queries/throughput.gsql

index 8967626..b5f220d 100644 (file)
@@ -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"]
index 40e7aaf..d6d9a34 100644 (file)
@@ -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
index 5d71b45..b37b7a6 100644 (file)
@@ -5,73 +5,93 @@
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010050'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='dc_release'/>
                        <SingleFile value='TRUE'/>
-               </Interface>
+                       <FIFO value='TRUE'/>
+               </Interface>
+                <Interface Name='LTE_PCMD'>
+                        <InterfaceType value='PROTO'/>
+                        <Filename value='/tmp/mcl/fifos/MT_000033002'/>
+                        <StartUpDelay value='10'/>
+                        <Time_Correlation value='10'/>
+                        <Verbose value='TRUE'/>
+                        <Schemas value='lte_thpt_meas'/>
+                        <Schemas value='lte_rb_thpt'/>
+                        <Schemas value='lte_dl_sched_trace'/>
+                        <Schemas value='lte_pcell_meas'/>
+                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
+                </Interface>
                <Interface Name='RATDATAUSAGE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010380'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='rat_data_usage'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='RECONCOMPLETE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010280'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='reconfig_all'/>
                        <Schemas value='reconfig_success'/>
                        <Schemas value='reconfig_reject'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='RELCONF'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010321'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_release_confirm_from_menb_erabs'/>
                        <Schemas value='sgnb_release_confirm_from_menb'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='RELREQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010310'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='release_req'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='RELREQACK'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010311'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='release_req_ack'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBRELEASERQD'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010320'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='SgNB_release_rqd'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='RRCXFER'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010350'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='serv_nr_cell'/>
                        <Schemas value='nr_neighbor'/>
                        <Schemas value='serv_cell_beam_ssb'/>
                        <Schemas value='neighbor_beam_ssb'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='ADDREQREJECT'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010272'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_add_req_reject'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNB_ADDITION_REQ_ACK'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010271'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='eRABs_notadmitted_for_ue'/>
                        <Schemas value='eRABs_acked_for_admit_for_ue'/>
                        <Schemas value='SgNB_ack_for_ue_measurements'/>
                        <Schemas value='SgNB_ack_for_ue_beam_csi'/>
                        <Schemas value='SgNB_ack_for_ue_beam_ssb'/>
+                       <Schemas value='add_req_ack_cellid'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNB_ADDITION_REQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010270'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_addreq_gtp_teid'/>
                        <Schemas value='sgnb_addreq_for_ue'/>
                        <Schemas value='sgnb_addreq_for_ue_mn_neigh_ssb'/>
                        <Schemas value='sgnb_addreq_for_ue_mn_neigh_csi_rs'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODCONF'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010301'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_conf'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010290'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_req'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREQACK'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010291'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_req_ack'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREQREJECT'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010292'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_req_reject'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREQUIRED'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010300'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_required'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREFUSE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010302'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sgnb_mod_refuse'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
                <Interface Name='SNSTATUSXFER'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010040'/>
                        <StartUpDelay value='10'/>
-                       <Time_Correlation value='60'/>
+                       <Time_Correlation value='10'/>
                        <Verbose value='TRUE'/>
                        <Schemas value='sn_status_transfer'/>
                        <SingleFile value='TRUE'/>
+                        <FIFO value='TRUE'/>
                </Interface>
 
        </Host>
index 977f2e6..b5d9b27 100644 (file)
@@ -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 (file)
index 0000000..6b17359
--- /dev/null
@@ -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 (file)
index 0000000..981c54c
--- /dev/null
@@ -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 (file)
index 0000000..30de4d7
--- /dev/null
@@ -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 (file)
index 0000000..687157b
--- /dev/null
@@ -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 (file)
index 0000000..5073476
--- /dev/null
@@ -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
index 258bfb4..abd9bed 100644 (file)
@@ -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 (file)
index 0000000..2c9be4a
--- /dev/null
@@ -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 (file)
index 0000000..cd63105
--- /dev/null
@@ -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/protobuf-c.h>
+
+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 (file)
index 0000000..64a0578
--- /dev/null
@@ -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 (file)
index 0000000..b9ea945
--- /dev/null
@@ -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/protobuf-c.h>
+
+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 */
index d10db07..02f98f5 100644 (file)
@@ -29,6 +29,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
+#include <poll.h>
 #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_2<node_1_1->n_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_2<node_1_1->n_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_2<node_2_1->n_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_6<node_3_5->n_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_6<node_4_5->n_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_5<node_4_4->n_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_5<node_5_4->n_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_5<node_5_4->n_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_5<node_6_4->n_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_10<node_5_9->n_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_10<node_6_9->n_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_5<node_6_4->n_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_5<node_7_4->n_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_10<node_6_9->n_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_10<node_7_9->n_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<pkg_len){
                        print_error("Error in dproto_read_tuple, line too short.");
                        fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
@@ -3709,15 +4028,16 @@ static void dproto_read_tuple(){
                if(verbose) {
                        fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
                }
-               rts_fta_done();
                if (verbose) {
                        fprintf(stderr,"RTS SAYS BYe\n");
                }
-               while(1==1) sleep(1);
+               return -2;
                } else {
                next_file();
                }
        }
+
+       return 0;
 }
     
 //     Main loop for processing records from a file or socket    
@@ -3725,25 +4045,25 @@ static gs_retval_t dproto_process_file(){
     unsigned cnt=0;
     static unsigned totalcnt=0;
 
-    for(cnt=0;cnt<5/*0000*/;cnt++) {
+    gs_retval_t retval;
+    for(cnt=0;cnt<50000;cnt++) {
         if (gshub!=0) {
-            gs_retval_t retval;
             retval=dproto_read_socket();
-            if (retval==-1) return 0; // got a timeout so service message queue
-            if ((retval==-2) || (ftaschema_is_eof_tuple(cur_packet.record.gdat.schema,(void *)cur_packet.record.gdat.data))) {
-                // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
-                if (verbose)
-                    fprintf(stderr,"Done processing waiting for things to shut down\n");
-                rts_fta_done();
-                // now just service message queue until we get killed or loose connectivity
-                while (0==0) {
-                    fta_start_service(0); // service all waiting messages
-                    usleep(1000); // sleep a millisecond
-                }
-            }
         } else {
-            dproto_read_tuple();
+            retval=dproto_read_tuple();
         }
+        if (retval==-1) return 0; // got a timeout so service message queue
+        if (retval==-2) {
+            // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
+            if (verbose)
+                fprintf(stderr,"Done processing waiting for things to shut down\n");
+            rts_fta_done();
+            // now just service message queue until we get killed or loose connectivity
+            while (0==0) {
+                fta_start_service(0); // service all waiting messages
+                usleep(1000); // sleep a millisecond
+            }
+        } 
     }
     totalcnt=totalcnt+cnt;
     if (verbose) {
@@ -3775,6 +4095,9 @@ gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt,
        if(strcmp(device,"CONRELEASE")==0){
                process_buffer = &process_buffer_CONRELEASE;
        }
+       if(strcmp(device,"LTE_PCMD")==0){
+               process_buffer = &process_buffer_LTE_PCMD;
+       }
        if(strcmp(device,"RATDATAUSAGE")==0){
                process_buffer = &process_buffer_RATDATAUSAGE;
        }
diff --git a/mc-core/mc/local_datasource/rts_proto.c.save b/mc-core/mc/local_datasource/rts_proto.c.save
new file mode 100644 (file)
index 0000000..b2b3c18
--- /dev/null
@@ -0,0 +1,4000 @@
+
+/*
+==============================================================================
+
+        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 <time.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <poll.h>
+#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_3<node_0_2->n_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_6<node_0_5->n_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_3<node_0_2->n_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_9<node_0_8->n_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_9<node_1_8->n_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_9<node_2_8->n_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_14<node_2_13->n_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_9<node_3_8->n_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_13<node_3_12->n_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_9<node_4_8->n_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_14<node_4_13->n_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_9<node_5_8->n_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_13<node_5_12->n_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_2<node_0_1->n_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_2<node_2_1->n_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_6<node_4_5->n_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_5<node_5_4->n_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_5<node_6_4->n_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_10<node_6_9->n_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_5<node_7_4->n_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_10<node_7_9->n_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_3<node_0_2->n_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_3<node_2_2->n_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_6<node_3_5->n_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_6<node_4_5->n_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_6<node_5_5->n_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_6<node_6_5->n_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_6<node_7_5->n_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_8<node_7_7->n_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_6<node_8_5->n_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_8<node_8_7->n_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_6<node_9_5->n_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_8<node_9_7->n_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_6<node_10_5->n_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_8<node_10_7->n_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_3<node_0_2->n_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_5<node_0_4->n_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(retlen<pkg_len){
+                       print_error("Error in dproto_read_tuple, line too short.");
+                       fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
+                       eof=1;
+               }
+
+               if(eof==0){
+                       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);
+               }
+               }
+       }
+       if(eof){
+           if (singlefile==1) {
+               if(verbose) {
+                       fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
+               }
+               if (verbose) {
+                       fprintf(stderr,"RTS SAYS BYe\n");
+               }
+               return -2;
+               } else {
+               next_file();
+               }
+       }
+
+       return 0;
+}
+    
+//     Main loop for processing records from a file or socket    
+static gs_retval_t dproto_process_file(){
+    unsigned cnt=0;
+    static unsigned totalcnt=0;
+
+    gs_retval_t retval;
+    for(cnt=0;cnt<50000;cnt++) {
+        if (gshub!=0) {
+            retval=dproto_read_socket();
+        } else {
+            retval=dproto_read_tuple();
+        }
+        if (retval==-1) return 0; // got a timeout so service message queue
+        if (retval==-2) {
+            // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
+            if (verbose)
+                fprintf(stderr,"Done processing waiting for things to shut down\n");
+            rts_fta_done();
+            // now just service message queue until we get killed or loose connectivity
+            while (0==0) {
+                fta_start_service(0); // service all waiting messages
+                usleep(1000); // sleep a millisecond
+            }
+        } 
+    }
+    totalcnt=totalcnt+cnt;
+    if (verbose) {
+        fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
+    }
+    return 0;
+}
+    
+//     Entry for processing this interface
+gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt, gs_sp_t map[]) {
+    gs_uint32_t cont;
+    endpoint mygshub;
+        
+    dproto_replay_init(device); // will call init_cur_packet
+    this_device = strdup(device); // save for error messages.
+        
+    /* initalize host_lib */
+    if (verbose) {
+        fprintf(stderr,"Init LFTAs for %s\n",device);
+    }
+        
+    if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
+        fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
+        exit(7);
+    }
+
+//--------------------------------------------
+//----  Generated dispatch code 
+       if(strcmp(device,"CONRELEASE")==0){
+               process_buffer = &process_buffer_CONRELEASE;
+       }
+       if(strcmp(device,"RATDATAUSAGE")==0){
+               process_buffer = &process_buffer_RATDATAUSAGE;
+       }
+       if(strcmp(device,"RECONCOMPLETE")==0){
+               process_buffer = &process_buffer_RECONCOMPLETE;
+       }
+       if(strcmp(device,"RELCONF")==0){
+               process_buffer = &process_buffer_RELCONF;
+       }
+       if(strcmp(device,"RELREQ")==0){
+               process_buffer = &process_buffer_RELREQ;
+       }
+       if(strcmp(device,"RELREQACK")==0){
+               process_buffer = &process_buffer_RELREQACK;
+       }
+       if(strcmp(device,"SGNBRELEASERQD")==0){
+               process_buffer = &process_buffer_SGNBRELEASERQD;
+       }
+       if(strcmp(device,"RRCXFER")==0){
+               process_buffer = &process_buffer_RRCXFER;
+       }
+       if(strcmp(device,"ADDREQREJECT")==0){
+               process_buffer = &process_buffer_ADDREQREJECT;
+       }
+       if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
+               process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
+       }
+       if(strcmp(device,"SGNB_ADDITION_REQ")==0){
+               process_buffer = &process_buffer_SGNB_ADDITION_REQ;
+       }
+       if(strcmp(device,"SGNBMODCONF")==0){
+               process_buffer = &process_buffer_SGNBMODCONF;
+       }
+       if(strcmp(device,"SGNBMODREQ")==0){
+               process_buffer = &process_buffer_SGNBMODREQ;
+       }
+       if(strcmp(device,"SGNBMODREQACK")==0){
+               process_buffer = &process_buffer_SGNBMODREQACK;
+       }
+       if(strcmp(device,"SGNBMODREQREJECT")==0){
+               process_buffer = &process_buffer_SGNBMODREQREJECT;
+       }
+       if(strcmp(device,"SGNBMODREQUIRED")==0){
+               process_buffer = &process_buffer_SGNBMODREQUIRED;
+       }
+       if(strcmp(device,"SGNBMODREFUSE")==0){
+               process_buffer = &process_buffer_SGNBMODREFUSE;
+       }
+       if(strcmp(device,"SNSTATUSXFER")==0){
+               process_buffer = &process_buffer_SNSTATUSXFER;
+       }
+       if(process_buffer == NULL){
+               fprintf(stderr,"Error, interface %s not recognized\n",device);
+               exit(8);
+       }
+//--------------------------------------------
+
+        
+    fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
+        
+    cont=startupdelay+time(0);
+        
+    if (verbose) { fprintf(stderr,"Start startup delay"); }
+        
+    while (cont>time(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
index 14e04f7..8255293 100644 (file)
@@ -48,7 +48,7 @@
                                "description": "rmr receive data port for mcxapp"
                        },
                        {
-                               "name": "rmr-data-out",
+                               "name": "rmr-data-out1",
                                "container": "mcxapp",
                                "port": 4562,
                                "txMessages":
index 19887e3..e6915f9 100644 (file)
@@ -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
+
index 17e5977..7c9041a 100644 (file)
@@ -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
 
 
index a899311..6773e70 100644 (file)
@@ -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
+
 
 
index 5b6a2f4..f5187f0 100644 (file)
@@ -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
+
 
index 0853e15..48d587e 100644 (file)
 {
-  "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"
       }
     ]
   }, 
       }
     ]
   }, 
+  "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", 
       }
     ]
   }, 
+  "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"
       }
     ]
   }, 
-  "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"
       }
     ]
   }, 
       }
     ]
   }, 
+  "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"
       }
     ]
   }, 
+  "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"
       }
     ]
   }, 
+  "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", 
       }
     ]
   }, 
-  "rrcx_pdf_serv_gnb": {
+  "mod_req_failure_distribution_pci": {
     "keys": [
+      "physCellId", 
       "GNB_ID"
     ], 
     "fields": [
       }, 
       {
         "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"
       }
     ]
   }, 
       }
     ]
   }, 
-  "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"
       }
     ]
   }, 
       }
     ]
   }, 
-  "rrcx_stats_neighbor_beam_cell": {
+  "rrcx_pdf_serv_gnb": {
     "keys": [
-      "CELL_ID", 
       "GNB_ID"
     ], 
     "fields": [
       }, 
       {
         "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"
     ], 
         "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": [
       }, 
       {
         "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"
       }
     ]
   }, 
       }, 
       {
         "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"
       }
     ]
   }, 
       }
     ]
   }, 
-  "handovers_gnb": {
+  "throughput_pci": {
     "keys": [
-      "GTP_TEID", 
+      "physCellId", 
       "GNB_ID"
     ], 
     "fields": [
       }, 
       {
         "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": [
       }, 
       {
         "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", 
       }
     ]
   }, 
-  "distinct_users": {
+  "rrcx_stats_neighbor_beam_cell": {
     "keys": [
+      "CELL_ID", 
       "GNB_ID"
     ], 
     "fields": [
         "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"
       }
     ]
   }, 
       }
     ]
   }, 
+  "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"
       }
     ]
   }, 
+  "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", 
         "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"
       }
     ]
   }, 
       }
     ]
   }, 
+  "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", 
index cc5cbc1..3a5547d 100644 (file)
@@ -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 (file)
index 0000000..8ca9e2f
--- /dev/null
@@ -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
+
+
index efe7eb5..ec2250f 100644 (file)
@@ -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)';
index 7f40ffe..c559937 100644 (file)
@@ -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
 
 
+