3 ==============================================================================
5 Copyright (c) 2018-2019 AT&T Intellectual Property.
7 Licensed under the Apache License, Version 2.0 (the "License");
8 you may not use this file except in compliance with the License.
9 You may obtain a copy of the License at
11 http://www.apache.org/licenses/LICENSE-2.0
13 Unless required by applicable law or agreed to in writing, software
14 distributed under the License is distributed on an "AS IS" BASIS,
15 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 See the License for the specific language governing permissions and
17 limitations under the License.
18 =============================================================================
29 #include <sys/types.h>
30 #include <sys/socket.h>
31 #include <netinet/in.h>
43 #include "schemaparser.h"
46 void rts_fta_process_packet(struct packet * p);
48 void fta_init(gs_sp_t device);
50 gs_uint32_t (*process_buffer)(gs_uint8_t * buffer, gs_uint32_t buflen) = NULL; // set at initialization
52 #define MAXLINE 1000000
56 static struct packet cur_packet;
57 static gs_sp_t name, this_device;
58 static gs_uint32_t verbose=0;
59 static gs_uint32_t startupdelay=0;
60 static gs_uint32_t singlefile=0;
61 static gs_uint32_t fifo=0;
62 static gs_uint32_t gshub=0;
63 static int socket_desc=0;
65 static gs_uint8_t line[MAXLINE];
66 static gs_uint32_t lineend=0;
67 static unsigned long long timestamp; // extract from input header
69 //---------------- Specialized proto parsing -----------
70 #include "x2ap_streaming.pb-c.h"
71 #include "ue_context_release.pb-c.h"
72 #include "lfta/local/dc_release.h"
73 #include "ricgeomessages.pb-c.h"
74 #include "ricgeomessages_pcmdreport.pb-c.h"
75 #include "lfta/local/lte_thpt_meas.h"
76 #include "lfta/local/lte_rb_thpt.h"
77 #include "lfta/local/lte_dl_sched_trace.h"
78 #include "lfta/local/lte_pcell_meas.h"
79 #include "secondary_rat_data_usage_report.pb-c.h"
80 #include "lfta/local/rat_data_usage.h"
81 #include "sgnb_reconfiguration_complete.pb-c.h"
82 #include "lfta/local/reconfig_all.h"
83 #include "lfta/local/reconfig_success.h"
84 #include "lfta/local/reconfig_reject.h"
85 #include "sgnb_release_confirm.pb-c.h"
86 #include "lfta/local/sgnb_release_confirm_from_menb_erabs.h"
87 #include "lfta/local/sgnb_release_confirm_from_menb.h"
88 #include "sgnb_release_request.pb-c.h"
89 #include "lfta/local/release_req.h"
90 #include "sgnb_release_request_acknowledge.pb-c.h"
91 #include "lfta/local/release_req_ack.h"
92 #include "sgnb_release_required.pb-c.h"
93 #include "lfta/local/SgNB_release_rqd.h"
94 #include "rrctransfer.pb-c.h"
95 #include "lfta/local/serv_nr_cell.h"
96 #include "lfta/local/nr_neighbor.h"
97 #include "lfta/local/serv_cell_beam_csi.h"
98 #include "lfta/local/neighbor_beam_csi.h"
99 #include "lfta/local/serv_cell_beam_ssb.h"
100 #include "lfta/local/neighbor_beam_ssb.h"
101 #include "sgnb_addition_request_reject.pb-c.h"
102 #include "lfta/local/sgnb_add_req_reject.h"
103 #include "sgnb_addition_request_acknowledge.pb-c.h"
104 #include "lfta/local/eRABs_notadmitted_for_ue.h"
105 #include "lfta/local/add_req_ack_cellid.h"
106 #include "lfta/local/eRABs_acked_for_admit_for_ue.h"
107 #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h"
108 #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h"
109 #include "lfta/local/SgNB_ack_for_ue_measurements.h"
110 #include "lfta/local/SgNB_ack_for_ue_beam_csi.h"
111 #include "lfta/local/SgNB_ack_for_ue_beam_ssb.h"
112 #include "sgnb_addition_request.pb-c.h"
113 #include "lfta/local/sgnb_addreq_gtp_teid.h"
114 #include "lfta/local/sgnb_addreq_for_ue.h"
115 #include "lfta/local/sgnb_addreq_for_ue_bearers.h"
116 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h"
117 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h"
118 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h"
119 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h"
120 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h"
121 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h"
122 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h"
123 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h"
124 #include "sgnb_modification_confirm.pb-c.h"
125 #include "lfta/local/sgnb_mod_conf.h"
126 #include "sgnb_modification_request.pb-c.h"
127 #include "lfta/local/sgnb_mod_req.h"
128 #include "sgnb_modification_request_acknowledge.pb-c.h"
129 #include "lfta/local/sgnb_mod_req_ack.h"
130 #include "sgnb_modification_request_reject.pb-c.h"
131 #include "lfta/local/sgnb_mod_req_reject.h"
132 #include "sgnb_modification_required.pb-c.h"
133 #include "lfta/local/sgnb_mod_required.h"
134 #include "sgnb_modification_refuse.pb-c.h"
135 #include "lfta/local/sgnb_mod_refuse.h"
136 #include "sn_status_transfer.pb-c.h"
137 #include "lfta/local/sn_status_transfer.h"
138 gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){
139 char *empty_string = "";
140 unsigned long long int ts_lo, ts_hi;
141 StreamingProtobufs__X2APStreaming *hdr = NULL;
142 // ------------------------------------------
143 // --- Variables for .proto ue_context_release.json, path context_release.json
144 struct _dc_release *dc_release = NULL;
145 StreamingProtobufs__UEContextRelease *node_0_0 = NULL;
147 // --------------------------------------------------
148 // --- Specialized processing for .proto ue_context_release.json, path context_release.json
150 dc_release = (struct _dc_release *)(cur_packet.record.packed.values);
151 cur_packet.schema = 201;
153 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
154 if(hdr==NULL) return -1;
156 node_0_0 = hdr->uecontextrelease;
157 if(node_0_0==NULL) return -2;
158 if(hdr->header==NULL) return -3;
160 ts_lo = hdr->header->timestamp & 0xffffffff;
161 ts_hi = hdr->header->timestamp >> 32;
162 dc_release->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
163 if(hdr->header->gnbid==NULL)
164 dc_release->gnb_id = empty_string;
166 dc_release->gnb_id = hdr->header->gnbid->value;
168 if(node_0_0->id_old_enb_ue_x2ap_id_extension){
169 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value;
171 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0;
173 dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id;
174 if(node_0_0->id_sgnb_ue_x2ap_id){
175 dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
177 dc_release->id_SgNB_UE_X2AP_ID = 0;
179 if(node_0_0->id_new_enb_ue_x2ap_id_extension){
180 dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value;
182 dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0;
184 dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id;
185 rts_fta_process_packet(&cur_packet);
186 streaming_protobufs__uecontext_release__free_unpacked(node_0_0,NULL);
190 gs_uint32_t process_buffer_LTE_PCMD(gs_uint8_t * buffer, gs_uint32_t buflen){
191 char *empty_string = "";
192 unsigned long long int ts_lo, ts_hi;
194 // ------------------------------------------
195 // --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
196 struct _lte_thpt_meas *lte_thpt_meas = NULL;
197 PcmdReport *node_0_0 = NULL;
198 PcmdReport__TpDlUeThroughputMeasurements *node_0_1 = NULL;
199 // ------------------------------------------
200 // --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
201 struct _lte_rb_thpt *lte_rb_thpt = NULL;
202 PcmdReport *node_1_0 = NULL;
203 PcmdReport__TpDlRadioBearerPdcpThroughputRecord *node_1_1 = NULL;
204 PcmdReport__TpDlRadioBearerPdcpThroughputData *node_1_2 = NULL;
206 // ------------------------------------------
207 // --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
208 struct _lte_dl_sched_trace *lte_dl_sched_trace = NULL;
209 PcmdReport *node_2_0 = NULL;
210 PcmdReport__TpDlSchedulingTraceRecord *node_2_1 = NULL;
211 // ------------------------------------------
212 // --- Variables for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
213 struct _lte_pcell_meas *lte_pcell_meas = NULL;
214 PcmdReport *node_3_0 = NULL;
215 PcmdReport__TpUeMeasTraceRecord *node_3_1 = NULL;
216 PcmdReport__TpMeasResultPCell *node_3_2 = NULL;
218 // --------------------------------------------------
219 // --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
221 lte_thpt_meas = (struct _lte_thpt_meas *)(cur_packet.record.packed.values);
222 cur_packet.schema = 10000;
224 hdr = geo_msg__unpack(NULL, buflen, buffer);
225 if(hdr==NULL) return -1;
227 node_0_0 = hdr->report;
228 if(node_0_0==NULL) return -2;
229 if(hdr->hdr==NULL) return -3;
231 ts_lo = hdr->hdr->timestamp & 0xffffffff;
232 ts_hi = hdr->hdr->timestamp >> 32;
233 lte_thpt_meas->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32);
234 lte_thpt_meas->eci = hdr->hdr->eci;
235 lte_thpt_meas->plmn = hdr->hdr->plmn;
236 lte_thpt_meas->eutran_trace_id = hdr->hdr->eutrantraceid;
237 lte_thpt_meas->crnti = hdr->hdr->crnti;
239 if(node_0_0->dlschedulingrecord){
240 lte_thpt_meas->numOfTtiUeSched = node_0_0->dlschedulingrecord->numofttiuesched;
242 lte_thpt_meas->numOfTtiUeSched = -1;
244 if(node_0_0->sessioninfo){
245 lte_thpt_meas->imei = node_0_0->sessioninfo->imei;
247 lte_thpt_meas->imei = -1;
249 if(node_0_0->sessioninfo){
250 lte_thpt_meas->imsi = node_0_0->sessioninfo->imsi;
252 lte_thpt_meas->imsi = -1;
254 node_0_1 = node_0_0->dluethroughputmeasurementsrecord;
255 if(node_0_0->dluethroughputmeasurementsrecord){
256 lte_thpt_meas->numOfTtiPositiveDlBuf = node_0_1->numofttipositivedlbuf;
257 lte_thpt_meas->sumOfSentNonGbrBytes = node_0_1->sumofsentnongbrbytes;
258 lte_thpt_meas->sumOfSentGbrBytes = node_0_1->sumofsentgbrbytes;
259 rts_fta_process_packet(&cur_packet);
261 // --------------------------------------------------
262 // --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
264 lte_rb_thpt = (struct _lte_rb_thpt *)(cur_packet.record.packed.values);
265 cur_packet.schema = 10001;
267 ts_lo = hdr->hdr->timestamp & 0xffffffff;
268 ts_hi = hdr->hdr->timestamp >> 32;
269 lte_rb_thpt->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32);
270 lte_rb_thpt->eci = hdr->hdr->eci;
271 lte_rb_thpt->plmn = hdr->hdr->plmn;
272 lte_rb_thpt->eutran_trace_id = hdr->hdr->eutrantraceid;
273 lte_rb_thpt->crnti = hdr->hdr->crnti;
275 if(node_1_0->sessioninfo){
276 lte_rb_thpt->imei = node_1_0->sessioninfo->imei;
278 lte_rb_thpt->imei = -1;
280 if(node_1_0->sessioninfo){
281 lte_rb_thpt->imsi = node_1_0->sessioninfo->imsi;
283 lte_rb_thpt->imsi = -1;
285 node_1_1 = node_1_0->dlrbpdcpthroughputrecord;
286 if(node_1_0->dlrbpdcpthroughputrecord){
287 for(i_1_2=0;i_1_2<node_1_1->n_dlradiobearerpdcpthroughputlist; i_1_2++){
288 node_1_2 = node_1_1->dlradiobearerpdcpthroughputlist[i_1_2];
289 lte_rb_thpt->dataCollectionDuration = node_1_2->datacollectionduration;
290 lte_rb_thpt->numOfPdcpPduRcvdForTx = node_1_2->numofpdcppdurcvdfortx;
291 lte_rb_thpt->numOfPdcpPduDiscarded = node_1_2->numofpdcppdudiscarded;
292 lte_rb_thpt->drb_Id = node_1_2->drb_id;
293 rts_fta_process_packet(&cur_packet);
296 // --------------------------------------------------
297 // --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
299 lte_dl_sched_trace = (struct _lte_dl_sched_trace *)(cur_packet.record.packed.values);
300 cur_packet.schema = 10002;
302 ts_lo = hdr->hdr->timestamp & 0xffffffff;
303 ts_hi = hdr->hdr->timestamp >> 32;
304 lte_dl_sched_trace->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32);
305 lte_dl_sched_trace->eci = hdr->hdr->eci;
306 lte_dl_sched_trace->plmn = hdr->hdr->plmn;
307 lte_dl_sched_trace->eutran_trace_id = hdr->hdr->eutrantraceid;
308 lte_dl_sched_trace->crnti = hdr->hdr->crnti;
310 if(node_2_0->sessioninfo){
311 lte_dl_sched_trace->imei = node_2_0->sessioninfo->imei;
313 lte_dl_sched_trace->imei = -1;
315 if(node_2_0->sessioninfo){
316 lte_dl_sched_trace->imsi = node_2_0->sessioninfo->imsi;
318 lte_dl_sched_trace->imsi = -1;
320 node_2_1 = node_2_0->dlschedulingrecord;
321 if(node_2_0->dlschedulingrecord){
322 if(node_2_1->numofharqretx){
323 lte_dl_sched_trace->numOfHarqReTx = node_2_1->numofharqretx->value;
324 lte_dl_sched_trace->numOfHarqReTx_exists = 1;
326 lte_dl_sched_trace->numOfHarqReTx_exists = 0;
328 lte_dl_sched_trace->numOfTtiUeSched = node_2_1->numofttiuesched;
329 lte_dl_sched_trace->numOfHarq1stTx = node_2_1->numofharq1sttx;
330 lte_dl_sched_trace->recordCollectionDuration = node_2_1->recordcollectionduration;
331 if(node_2_1->numofttiueschedmimo){
332 lte_dl_sched_trace->numOfTtiUeSchedMimo = node_2_1->numofttiueschedmimo->value;
333 lte_dl_sched_trace->numOfTtiUeSchedMimo_exists = 1;
335 lte_dl_sched_trace->numOfTtiUeSchedMimo_exists = 0;
337 lte_dl_sched_trace->numOfPrbUsed = node_2_1->numofprbused;
338 if(node_2_1->numofbad1stmacpdutx){
339 lte_dl_sched_trace->numOfBad1stMacPduTx = node_2_1->numofbad1stmacpdutx->value;
340 lte_dl_sched_trace->numOfBad1stMacPduTx_exists = 1;
342 lte_dl_sched_trace->numOfBad1stMacPduTx_exists = 0;
344 if(node_2_1->numofbadlastmacpdutx){
345 lte_dl_sched_trace->numOfBadLastMacPduTx = node_2_1->numofbadlastmacpdutx->value;
346 lte_dl_sched_trace->numOfBadLastMacPduTx_exists = 1;
348 lte_dl_sched_trace->numOfBadLastMacPduTx_exists = 0;
350 rts_fta_process_packet(&cur_packet);
352 // --------------------------------------------------
353 // --- Specialized processing for .proto ricgeomessages_pcmdreport.json, path lte_pcmd.json
355 lte_pcell_meas = (struct _lte_pcell_meas *)(cur_packet.record.packed.values);
356 cur_packet.schema = 10003;
358 ts_lo = hdr->hdr->timestamp & 0xffffffff;
359 ts_hi = hdr->hdr->timestamp >> 32;
360 lte_pcell_meas->timestamp_ms = (ts_hi) * 1000 + ((ts_lo * 1000) >> 32);
361 lte_pcell_meas->eci = hdr->hdr->eci;
362 lte_pcell_meas->plmn = hdr->hdr->plmn;
363 lte_pcell_meas->eutran_trace_id = hdr->hdr->eutrantraceid;
364 lte_pcell_meas->crnti = hdr->hdr->crnti;
366 if(node_3_0->sessioninfo){
367 lte_pcell_meas->imei = node_3_0->sessioninfo->imei;
369 lte_pcell_meas->imei = -1;
371 if(node_3_0->sessioninfo){
372 lte_pcell_meas->imsi = node_3_0->sessioninfo->imsi;
374 lte_pcell_meas->imsi = -1;
376 node_3_1 = node_3_0->uemeastracerecord;
377 if(node_3_0->uemeastracerecord){
378 node_3_2 = node_3_1->measresultpcell;
379 if(node_3_1->measresultpcell){
380 lte_pcell_meas->pci = node_3_2->pci;
381 lte_pcell_meas->rsrq = node_3_2->rsrq;
382 lte_pcell_meas->rsrp = node_3_2->rsrp;
383 rts_fta_process_packet(&cur_packet);
386 pcmd_report__free_unpacked(node_0_0,NULL);
390 gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){
391 char *empty_string = "";
392 unsigned long long int ts_lo, ts_hi;
393 StreamingProtobufs__X2APStreaming *hdr = NULL;
394 // ------------------------------------------
395 // --- Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
396 struct _rat_data_usage *rat_data_usage = NULL;
397 StreamingProtobufs__SecondaryRATDataUsageReport *node_0_0 = NULL;
398 StreamingProtobufs__SecondaryRATDataUsageReportIEs *node_0_1 = NULL;
399 StreamingProtobufs__SecondaryRATUsageReportList *node_0_2 = NULL;
400 StreamingProtobufs__SecondaryRATUsageReportItemIEs *node_0_3 = NULL;
402 StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL;
403 StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL;
404 StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL;
406 StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL;
408 // --------------------------------------------------
409 // --- Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
411 rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values);
412 cur_packet.schema = 1501;
414 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
415 if(hdr==NULL) return -1;
417 node_0_0 = hdr->secondaryratdatausagereport;
418 if(node_0_0==NULL) return -2;
419 if(hdr->header==NULL) return -3;
421 ts_lo = hdr->header->timestamp & 0xffffffff;
422 ts_hi = hdr->header->timestamp >> 32;
423 rat_data_usage->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
424 if(hdr->header->gnbid==NULL)
425 rat_data_usage->gnb_id = empty_string;
427 rat_data_usage->gnb_id = hdr->header->gnbid->value;
429 node_0_1 = node_0_0->protocolies;
430 if(node_0_0->protocolies){
431 rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
432 rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
433 if(node_0_1->id_menb_ue_x2ap_id_extension){
434 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
436 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0;
438 node_0_2 = node_0_1->id_secondaryratusagereportlist;
439 if(node_0_1->id_secondaryratusagereportlist){
440 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
441 node_0_3 = node_0_2->items[i_0_3];
442 node_0_4 = node_0_3->id_secondaryratusagereport_item;
443 if(node_0_3->id_secondaryratusagereport_item){
444 rat_data_usage->e_RAB_ID = node_0_4->e_rab_id;
445 rat_data_usage->secondaryRATType = node_0_4->secondaryrattype;
446 node_0_5 = node_0_4->e_rabusagereportlist;
447 if(node_0_4->e_rabusagereportlist){
448 for(i_0_6=0;i_0_6<node_0_5->n_items; i_0_6++){
449 node_0_6 = node_0_5->items[i_0_6];
450 node_0_7 = node_0_6->id_e_rabusagereport_item;
451 if(node_0_6->id_e_rabusagereport_item){
452 rat_data_usage->startTimeStamp = node_0_7->starttimestamp;
453 rat_data_usage->endTimeStamp = node_0_7->endtimestamp;
454 rat_data_usage->usageCountDL = node_0_7->usagecountdl;
455 rts_fta_process_packet(&cur_packet);
463 streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL);
467 gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){
468 char *empty_string = "";
469 unsigned long long int ts_lo, ts_hi;
470 StreamingProtobufs__X2APStreaming *hdr = NULL;
471 // ------------------------------------------
472 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
473 struct _reconfig_all *reconfig_all = NULL;
474 StreamingProtobufs__SgNBReconfigurationComplete *node_0_0 = NULL;
475 // ------------------------------------------
476 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
477 struct _reconfig_success *reconfig_success = NULL;
478 StreamingProtobufs__SgNBReconfigurationComplete *node_1_0 = NULL;
479 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_1_1 = NULL;
480 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL;
481 // ------------------------------------------
482 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
483 struct _reconfig_reject *reconfig_reject = NULL;
484 StreamingProtobufs__SgNBReconfigurationComplete *node_2_0 = NULL;
485 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_2_1 = NULL;
486 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL;
488 // --------------------------------------------------
489 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
491 reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values);
492 cur_packet.schema = 103;
494 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
495 if(hdr==NULL) return -1;
497 node_0_0 = hdr->sgnbreconfigurationcomplete;
498 if(node_0_0==NULL) return -2;
499 if(hdr->header==NULL) return -3;
501 ts_lo = hdr->header->timestamp & 0xffffffff;
502 ts_hi = hdr->header->timestamp >> 32;
503 reconfig_all->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
504 if(hdr->header->gnbid==NULL)
505 reconfig_all->gnb_id = empty_string;
507 reconfig_all->gnb_id = hdr->header->gnbid->value;
509 reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
510 reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
511 if(node_0_0->id_menb_ue_x2ap_id_extension){
512 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
514 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0;
516 rts_fta_process_packet(&cur_packet);
517 // --------------------------------------------------
518 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
520 reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values);
521 cur_packet.schema = 101;
523 ts_lo = hdr->header->timestamp & 0xffffffff;
524 ts_hi = hdr->header->timestamp >> 32;
525 reconfig_success->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
526 if(hdr->header->gnbid==NULL)
527 reconfig_success->gnb_id = empty_string;
529 reconfig_success->gnb_id = hdr->header->gnbid->value;
531 reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
532 reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
533 if(node_1_0->id_menb_ue_x2ap_id_extension){
534 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
536 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0;
538 node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp;
539 if(!(node_1_0->id_responseinformationsgnbreconfcomp)){
540 rts_fta_process_packet(&cur_packet);
542 node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp;
543 if(!(node_1_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){
544 rts_fta_process_packet(&cur_packet);
546 rts_fta_process_packet(&cur_packet);
549 // --------------------------------------------------
550 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
552 reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values);
553 cur_packet.schema = 102;
555 ts_lo = hdr->header->timestamp & 0xffffffff;
556 ts_hi = hdr->header->timestamp >> 32;
557 reconfig_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
558 if(hdr->header->gnbid==NULL)
559 reconfig_reject->gnb_id = empty_string;
561 reconfig_reject->gnb_id = hdr->header->gnbid->value;
563 reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
564 reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
565 if(node_2_0->id_menb_ue_x2ap_id_extension){
566 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
568 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0;
570 node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp;
571 if(node_2_0->id_responseinformationsgnbreconfcomp){
572 node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp;
573 if(node_2_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){
574 if(node_2_2->cause && node_2_2->cause->radionetwork){
575 reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value;
577 reconfig_reject->cause_radio_network = -1;
579 if(node_2_2->cause && node_2_2->cause->transport){
580 reconfig_reject->cause_transport = node_2_2->cause->transport->value;
582 reconfig_reject->cause_transport = -1;
584 if(node_2_2->cause && node_2_2->cause->protocol){
585 reconfig_reject->cause_protocol = node_2_2->cause->protocol->value;
587 reconfig_reject->cause_protocol = -1;
589 if(node_2_2->cause && node_2_2->cause->misc){
590 reconfig_reject->cause_misc = node_2_2->cause->misc->value;
592 reconfig_reject->cause_misc = -1;
594 rts_fta_process_packet(&cur_packet);
597 streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL);
601 gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
602 char *empty_string = "";
603 unsigned long long int ts_lo, ts_hi;
604 StreamingProtobufs__X2APStreaming *hdr = NULL;
605 // ------------------------------------------
606 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
607 struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL;
608 StreamingProtobufs__SgNBReleaseConfirm *node_0_0 = NULL;
609 StreamingProtobufs__SgNBReleaseConfirmIEs *node_0_1 = NULL;
610 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL;
611 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL;
613 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL;
614 StreamingProtobufs__GTPtunnelEndpoint *node_0_5 = NULL;
615 // ------------------------------------------
616 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
617 struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL;
618 StreamingProtobufs__SgNBReleaseConfirm *node_1_0 = NULL;
619 StreamingProtobufs__SgNBReleaseConfirmIEs *node_1_1 = NULL;
621 // --------------------------------------------------
622 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
624 sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values);
625 cur_packet.schema = 1101;
627 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
628 if(hdr==NULL) return -1;
630 node_0_0 = hdr->sgnbreleaseconfirm;
631 if(node_0_0==NULL) return -2;
632 if(hdr->header==NULL) return -3;
634 ts_lo = hdr->header->timestamp & 0xffffffff;
635 ts_hi = hdr->header->timestamp >> 32;
636 sgnb_release_confirm_from_menb_erabs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
637 if(hdr->header->gnbid==NULL)
638 sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string;
640 sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value;
642 node_0_1 = node_0_0->protocolies;
643 if(node_0_0->protocolies){
644 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
645 sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
646 if(node_0_1->id_menb_ue_x2ap_id_extension){
647 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
649 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0;
651 node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist;
652 if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){
653 for(i_0_3=0;i_0_3<node_0_2->n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){
654 node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3];
655 if(node_0_3->en_dc_resourceconfiguration){
656 sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources;
658 sgnb_release_confirm_from_menb_erabs->sCGresources = -1;
660 sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id;
661 if(node_0_3->en_dc_resourceconfiguration){
662 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb;
664 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1;
666 if(node_0_3->en_dc_resourceconfiguration){
667 sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources;
669 sgnb_release_confirm_from_menb_erabs->mCGresources = -1;
671 node_0_4 = node_0_3->sgnbpdcppresent;
672 if(node_0_3->sgnbpdcppresent){
673 node_0_5 = node_0_4->dl_gtptunnelendpoint;
674 if(node_0_4->dl_gtptunnelendpoint){
675 sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid;
676 sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress;
677 rts_fta_process_packet(&cur_packet);
683 // --------------------------------------------------
684 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
686 sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values);
687 cur_packet.schema = 1102;
689 ts_lo = hdr->header->timestamp & 0xffffffff;
690 ts_hi = hdr->header->timestamp >> 32;
691 sgnb_release_confirm_from_menb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
692 if(hdr->header->gnbid==NULL)
693 sgnb_release_confirm_from_menb->gnb_id = empty_string;
695 sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value;
697 node_1_1 = node_1_0->protocolies;
698 if(node_1_0->protocolies){
699 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
700 sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
701 if(node_1_1->id_menb_ue_x2ap_id_extension){
702 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
704 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0;
706 rts_fta_process_packet(&cur_packet);
708 streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL);
712 gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
713 char *empty_string = "";
714 unsigned long long int ts_lo, ts_hi;
715 StreamingProtobufs__X2APStreaming *hdr = NULL;
716 // ------------------------------------------
717 // --- Variables for .proto sgnb_release_request.json, path release_req.json
718 struct _release_req *release_req = NULL;
719 StreamingProtobufs__SgNBReleaseRequest *node_0_0 = NULL;
720 StreamingProtobufs__SgNBReleaseRequestIEs *node_0_1 = NULL;
722 // --------------------------------------------------
723 // --- Specialized processing for .proto sgnb_release_request.json, path release_req.json
725 release_req = (struct _release_req *)(cur_packet.record.packed.values);
726 cur_packet.schema = 801;
728 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
729 if(hdr==NULL) return -1;
731 node_0_0 = hdr->sgnbreleaserequest;
732 if(node_0_0==NULL) return -2;
733 if(hdr->header==NULL) return -3;
735 ts_lo = hdr->header->timestamp & 0xffffffff;
736 ts_hi = hdr->header->timestamp >> 32;
737 release_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
738 if(hdr->header->gnbid==NULL)
739 release_req->gnb_id = empty_string;
741 release_req->gnb_id = hdr->header->gnbid->value;
743 node_0_1 = node_0_0->protocolies;
744 if(node_0_0->protocolies){
745 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
746 release_req->cause_protocol = node_0_1->id_cause->protocol->value;
748 release_req->cause_protocol = -1;
750 release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
751 if(node_0_1->id_cause && node_0_1->id_cause->transport){
752 release_req->cause_transport = node_0_1->id_cause->transport->value;
754 release_req->cause_transport = -1;
756 if(node_0_1->id_menb_ue_x2ap_id_extension){
757 release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
759 release_req->id_MeNB_UE_X2AP_ID_Extension = 0;
761 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
762 release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
764 release_req->cause_radio_network = -1;
766 if(node_0_1->id_sgnb_ue_x2ap_id){
767 release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
769 release_req->id_SgNB_UE_X2AP_ID = 0;
771 if(node_0_1->id_cause && node_0_1->id_cause->misc){
772 release_req->cause_misc = node_0_1->id_cause->misc->value;
774 release_req->cause_misc = -1;
776 rts_fta_process_packet(&cur_packet);
778 streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL);
782 gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
783 char *empty_string = "";
784 unsigned long long int ts_lo, ts_hi;
785 StreamingProtobufs__X2APStreaming *hdr = NULL;
786 // ------------------------------------------
787 // --- Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
788 struct _release_req_ack *release_req_ack = NULL;
789 StreamingProtobufs__SgNBReleaseRequestAcknowledge *node_0_0 = NULL;
790 StreamingProtobufs__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL;
792 // --------------------------------------------------
793 // --- Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
795 release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values);
796 cur_packet.schema = 901;
798 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
799 if(hdr==NULL) return -1;
801 node_0_0 = hdr->sgnbreleaserequestacknowledge;
802 if(node_0_0==NULL) return -2;
803 if(hdr->header==NULL) return -3;
805 ts_lo = hdr->header->timestamp & 0xffffffff;
806 ts_hi = hdr->header->timestamp >> 32;
807 release_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
808 if(hdr->header->gnbid==NULL)
809 release_req_ack->gnb_id = empty_string;
811 release_req_ack->gnb_id = hdr->header->gnbid->value;
813 node_0_1 = node_0_0->protocolies;
814 if(node_0_0->protocolies){
815 release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
816 release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
817 if(node_0_1->id_menb_ue_x2ap_id_extension){
818 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
820 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0;
822 rts_fta_process_packet(&cur_packet);
824 streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL);
828 gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){
829 char *empty_string = "";
830 unsigned long long int ts_lo, ts_hi;
831 StreamingProtobufs__X2APStreaming *hdr = NULL;
832 // ------------------------------------------
833 // --- Variables for .proto sgnb_release_required.json, path release_rqd.json
834 struct _SgNB_release_rqd *SgNB_release_rqd = NULL;
835 StreamingProtobufs__SgNBReleaseRequired *node_0_0 = NULL;
836 StreamingProtobufs__SgNBReleaseRequiredIEs *node_0_1 = NULL;
838 // --------------------------------------------------
839 // --- Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
841 SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values);
842 cur_packet.schema = 1001;
844 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
845 if(hdr==NULL) return -1;
847 node_0_0 = hdr->sgnbreleaserequired;
848 if(node_0_0==NULL) return -2;
849 if(hdr->header==NULL) return -3;
851 ts_lo = hdr->header->timestamp & 0xffffffff;
852 ts_hi = hdr->header->timestamp >> 32;
853 SgNB_release_rqd->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
854 if(hdr->header->gnbid==NULL)
855 SgNB_release_rqd->gnb_id = empty_string;
857 SgNB_release_rqd->gnb_id = hdr->header->gnbid->value;
859 node_0_1 = node_0_0->protocolies;
860 if(node_0_0->protocolies){
861 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
862 SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value;
864 SgNB_release_rqd->cause_protocol = -1;
866 SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
867 if(node_0_1->id_cause && node_0_1->id_cause->transport){
868 SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value;
870 SgNB_release_rqd->cause_transport = -1;
872 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){
873 SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
874 SgNB_release_rqd->e_RAB_ID0_exists = 1;
876 SgNB_release_rqd->e_RAB_ID0_exists = 0;
878 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){
879 SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
880 SgNB_release_rqd->e_RAB_ID1_exists = 1;
882 SgNB_release_rqd->e_RAB_ID1_exists = 0;
884 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){
885 SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
886 SgNB_release_rqd->e_RAB_ID2_exists = 1;
888 SgNB_release_rqd->e_RAB_ID2_exists = 0;
890 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){
891 SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
892 SgNB_release_rqd->e_RAB_ID3_exists = 1;
894 SgNB_release_rqd->e_RAB_ID3_exists = 0;
896 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){
897 SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
898 SgNB_release_rqd->e_RAB_ID4_exists = 1;
900 SgNB_release_rqd->e_RAB_ID4_exists = 0;
902 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){
903 SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
904 SgNB_release_rqd->e_RAB_ID5_exists = 1;
906 SgNB_release_rqd->e_RAB_ID5_exists = 0;
908 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){
909 SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
910 SgNB_release_rqd->e_RAB_ID6_exists = 1;
912 SgNB_release_rqd->e_RAB_ID6_exists = 0;
914 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){
915 SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
916 SgNB_release_rqd->e_RAB_ID7_exists = 1;
918 SgNB_release_rqd->e_RAB_ID7_exists = 0;
920 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
921 SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value;
923 SgNB_release_rqd->cause_radio_network = -1;
925 SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
926 if(node_0_1->id_cause && node_0_1->id_cause->misc){
927 SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value;
929 SgNB_release_rqd->cause_misc = -1;
931 rts_fta_process_packet(&cur_packet);
933 streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
937 gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
938 char *empty_string = "";
939 unsigned long long int ts_lo, ts_hi;
940 StreamingProtobufs__X2APStreaming *hdr = NULL;
941 // ------------------------------------------
942 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
943 struct _serv_nr_cell *serv_nr_cell = NULL;
944 StreamingProtobufs__RRCTransfer *node_0_0 = NULL;
945 StreamingProtobufs__RRCTransferIEs *node_0_1 = NULL;
946 StreamingProtobufs__UENRMeasurement *node_0_2 = NULL;
947 StreamingProtobufs__RRCContainer *node_0_3 = NULL;
948 StreamingProtobufs__ULDCCHMessageType *node_0_4 = NULL;
949 StreamingProtobufs__MeasurementReport *node_0_5 = NULL;
950 StreamingProtobufs__MeasurementReportIEs *node_0_6 = NULL;
951 StreamingProtobufs__MeasResults *node_0_7 = NULL;
952 StreamingProtobufs__MeasResultServMOList *node_0_8 = NULL;
953 StreamingProtobufs__MeasResultServMO *node_0_9 = NULL;
955 StreamingProtobufs__MeasResultNR *node_0_10 = NULL;
956 StreamingProtobufs__MeasResult *node_0_11 = NULL;
957 StreamingProtobufs__CellResults *node_0_12 = NULL;
958 StreamingProtobufs__MeasQuantityResults *node_0_13 = NULL;
959 // ------------------------------------------
960 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
961 struct _nr_neighbor *nr_neighbor = NULL;
962 StreamingProtobufs__RRCTransfer *node_1_0 = NULL;
963 StreamingProtobufs__RRCTransferIEs *node_1_1 = NULL;
964 StreamingProtobufs__UENRMeasurement *node_1_2 = NULL;
965 StreamingProtobufs__RRCContainer *node_1_3 = NULL;
966 StreamingProtobufs__ULDCCHMessageType *node_1_4 = NULL;
967 StreamingProtobufs__MeasurementReport *node_1_5 = NULL;
968 StreamingProtobufs__MeasurementReportIEs *node_1_6 = NULL;
969 StreamingProtobufs__MeasResults *node_1_7 = NULL;
970 StreamingProtobufs__MeasResultListNR *node_1_8 = NULL;
971 StreamingProtobufs__MeasResultNR *node_1_9 = NULL;
973 StreamingProtobufs__MeasResult *node_1_10 = NULL;
974 StreamingProtobufs__CellResults *node_1_11 = NULL;
975 StreamingProtobufs__MeasQuantityResults *node_1_12 = NULL;
976 // ------------------------------------------
977 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
978 struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL;
979 StreamingProtobufs__RRCTransfer *node_2_0 = NULL;
980 StreamingProtobufs__RRCTransferIEs *node_2_1 = NULL;
981 StreamingProtobufs__UENRMeasurement *node_2_2 = NULL;
982 StreamingProtobufs__RRCContainer *node_2_3 = NULL;
983 StreamingProtobufs__ULDCCHMessageType *node_2_4 = NULL;
984 StreamingProtobufs__MeasurementReport *node_2_5 = NULL;
985 StreamingProtobufs__MeasurementReportIEs *node_2_6 = NULL;
986 StreamingProtobufs__MeasResults *node_2_7 = NULL;
987 StreamingProtobufs__MeasResultServMOList *node_2_8 = NULL;
988 StreamingProtobufs__MeasResultServMO *node_2_9 = NULL;
990 StreamingProtobufs__MeasResultNR *node_2_10 = NULL;
991 StreamingProtobufs__MeasResult *node_2_11 = NULL;
992 StreamingProtobufs__RsIndexResults *node_2_12 = NULL;
993 StreamingProtobufs__ResultsPerCSIRSIndexList *node_2_13 = NULL;
994 StreamingProtobufs__ResultsPerCSIRSIndex *node_2_14 = NULL;
996 StreamingProtobufs__MeasQuantityResults *node_2_15 = NULL;
997 // ------------------------------------------
998 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
999 struct _neighbor_beam_csi *neighbor_beam_csi = NULL;
1000 StreamingProtobufs__RRCTransfer *node_3_0 = NULL;
1001 StreamingProtobufs__RRCTransferIEs *node_3_1 = NULL;
1002 StreamingProtobufs__UENRMeasurement *node_3_2 = NULL;
1003 StreamingProtobufs__RRCContainer *node_3_3 = NULL;
1004 StreamingProtobufs__ULDCCHMessageType *node_3_4 = NULL;
1005 StreamingProtobufs__MeasurementReport *node_3_5 = NULL;
1006 StreamingProtobufs__MeasurementReportIEs *node_3_6 = NULL;
1007 StreamingProtobufs__MeasResults *node_3_7 = NULL;
1008 StreamingProtobufs__MeasResultListNR *node_3_8 = NULL;
1009 StreamingProtobufs__MeasResultNR *node_3_9 = NULL;
1011 StreamingProtobufs__MeasResult *node_3_10 = NULL;
1012 StreamingProtobufs__RsIndexResults *node_3_11 = NULL;
1013 StreamingProtobufs__ResultsPerCSIRSIndexList *node_3_12 = NULL;
1014 StreamingProtobufs__ResultsPerCSIRSIndex *node_3_13 = NULL;
1016 StreamingProtobufs__MeasQuantityResults *node_3_14 = NULL;
1017 // ------------------------------------------
1018 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
1019 struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL;
1020 StreamingProtobufs__RRCTransfer *node_4_0 = NULL;
1021 StreamingProtobufs__RRCTransferIEs *node_4_1 = NULL;
1022 StreamingProtobufs__UENRMeasurement *node_4_2 = NULL;
1023 StreamingProtobufs__RRCContainer *node_4_3 = NULL;
1024 StreamingProtobufs__ULDCCHMessageType *node_4_4 = NULL;
1025 StreamingProtobufs__MeasurementReport *node_4_5 = NULL;
1026 StreamingProtobufs__MeasurementReportIEs *node_4_6 = NULL;
1027 StreamingProtobufs__MeasResults *node_4_7 = NULL;
1028 StreamingProtobufs__MeasResultServMOList *node_4_8 = NULL;
1029 StreamingProtobufs__MeasResultServMO *node_4_9 = NULL;
1031 StreamingProtobufs__MeasResultNR *node_4_10 = NULL;
1032 StreamingProtobufs__MeasResult *node_4_11 = NULL;
1033 StreamingProtobufs__RsIndexResults *node_4_12 = NULL;
1034 StreamingProtobufs__ResultsPerSSBIndexList *node_4_13 = NULL;
1035 StreamingProtobufs__ResultsPerSSBIndex *node_4_14 = NULL;
1037 StreamingProtobufs__MeasQuantityResults *node_4_15 = NULL;
1038 // ------------------------------------------
1039 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
1040 struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL;
1041 StreamingProtobufs__RRCTransfer *node_5_0 = NULL;
1042 StreamingProtobufs__RRCTransferIEs *node_5_1 = NULL;
1043 StreamingProtobufs__UENRMeasurement *node_5_2 = NULL;
1044 StreamingProtobufs__RRCContainer *node_5_3 = NULL;
1045 StreamingProtobufs__ULDCCHMessageType *node_5_4 = NULL;
1046 StreamingProtobufs__MeasurementReport *node_5_5 = NULL;
1047 StreamingProtobufs__MeasurementReportIEs *node_5_6 = NULL;
1048 StreamingProtobufs__MeasResults *node_5_7 = NULL;
1049 StreamingProtobufs__MeasResultListNR *node_5_8 = NULL;
1050 StreamingProtobufs__MeasResultNR *node_5_9 = NULL;
1052 StreamingProtobufs__MeasResult *node_5_10 = NULL;
1053 StreamingProtobufs__RsIndexResults *node_5_11 = NULL;
1054 StreamingProtobufs__ResultsPerSSBIndexList *node_5_12 = NULL;
1055 StreamingProtobufs__ResultsPerSSBIndex *node_5_13 = NULL;
1057 StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL;
1059 // --------------------------------------------------
1060 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1062 serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values);
1063 cur_packet.schema = 1;
1065 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1066 if(hdr==NULL) return -1;
1068 node_0_0 = hdr->rrctransfer;
1069 if(node_0_0==NULL) return -2;
1070 if(hdr->header==NULL) return -3;
1072 ts_lo = hdr->header->timestamp & 0xffffffff;
1073 ts_hi = hdr->header->timestamp >> 32;
1074 serv_nr_cell->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1075 if(hdr->header->gnbid==NULL)
1076 serv_nr_cell->gnb_id = empty_string;
1078 serv_nr_cell->gnb_id = hdr->header->gnbid->value;
1080 node_0_1 = node_0_0->rrctransfer_ies;
1081 if(node_0_0->rrctransfer_ies){
1082 serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
1083 serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
1084 node_0_2 = node_0_1->id_uenrmeasurement;
1085 if(node_0_1->id_uenrmeasurement){
1086 node_0_3 = node_0_2->uenrmeasurements;
1087 if(node_0_2->uenrmeasurements){
1088 node_0_4 = node_0_3->ul_dcch_message;
1089 if(node_0_3->ul_dcch_message){
1090 node_0_5 = node_0_4->measurementreport;
1091 if(node_0_4->measurementreport){
1092 node_0_6 = node_0_5->measurementreport;
1093 if(node_0_5->measurementreport){
1094 node_0_7 = node_0_6->measresults;
1095 if(node_0_6->measresults){
1096 node_0_8 = node_0_7->measresultservingmolist;
1097 if(node_0_7->measresultservingmolist){
1098 for(i_0_9=0;i_0_9<node_0_8->n_items; i_0_9++){
1099 node_0_9 = node_0_8->items[i_0_9];
1100 serv_nr_cell->servCellID = node_0_9->servcellid;
1101 node_0_10 = node_0_9->measresultservingcell;
1102 if(node_0_9->measresultservingcell){
1103 if(node_0_10->physcellid){
1104 serv_nr_cell->physCellId = node_0_10->physcellid->value;
1105 serv_nr_cell->physCellId_exists = 1;
1107 serv_nr_cell->physCellId_exists = 0;
1109 node_0_11 = node_0_10->measresult;
1110 if(node_0_10->measresult){
1111 node_0_12 = node_0_11->cellresults;
1112 if(node_0_11->cellresults){
1113 node_0_13 = node_0_12->resultsssb_cell;
1114 if(node_0_12->resultsssb_cell){
1115 if(node_0_13->rsrq){
1116 serv_nr_cell->rsrq = node_0_13->rsrq->value;
1117 serv_nr_cell->rsrq_exists = 1;
1119 serv_nr_cell->rsrq_exists = 0;
1121 if(node_0_13->rsrp){
1122 serv_nr_cell->rsrp = node_0_13->rsrp->value;
1123 serv_nr_cell->rsrp_exists = 1;
1125 serv_nr_cell->rsrp_exists = 0;
1127 if(node_0_13->sinr){
1128 serv_nr_cell->sinr = node_0_13->sinr->value;
1129 serv_nr_cell->sinr_exists = 1;
1131 serv_nr_cell->sinr_exists = 0;
1133 rts_fta_process_packet(&cur_packet);
1147 // --------------------------------------------------
1148 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1150 nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values);
1151 cur_packet.schema = 4;
1152 node_1_0 = node_0_0;
1153 ts_lo = hdr->header->timestamp & 0xffffffff;
1154 ts_hi = hdr->header->timestamp >> 32;
1155 nr_neighbor->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1156 if(hdr->header->gnbid==NULL)
1157 nr_neighbor->gnb_id = empty_string;
1159 nr_neighbor->gnb_id = hdr->header->gnbid->value;
1161 node_1_1 = node_1_0->rrctransfer_ies;
1162 if(node_1_0->rrctransfer_ies){
1163 nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
1164 nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
1165 node_1_2 = node_1_1->id_uenrmeasurement;
1166 if(node_1_1->id_uenrmeasurement){
1167 node_1_3 = node_1_2->uenrmeasurements;
1168 if(node_1_2->uenrmeasurements){
1169 node_1_4 = node_1_3->ul_dcch_message;
1170 if(node_1_3->ul_dcch_message){
1171 node_1_5 = node_1_4->measurementreport;
1172 if(node_1_4->measurementreport){
1173 node_1_6 = node_1_5->measurementreport;
1174 if(node_1_5->measurementreport){
1175 node_1_7 = node_1_6->measresults;
1176 if(node_1_6->measresults){
1177 node_1_8 = node_1_7->measresultlistnr;
1178 if(node_1_7->measresultlistnr){
1179 for(i_1_9=0;i_1_9<node_1_8->n_items; i_1_9++){
1180 node_1_9 = node_1_8->items[i_1_9];
1181 if(node_1_9->physcellid){
1182 nr_neighbor->physCellId = node_1_9->physcellid->value;
1183 nr_neighbor->physCellId_exists = 1;
1185 nr_neighbor->physCellId_exists = 0;
1187 node_1_10 = node_1_9->measresult;
1188 if(node_1_9->measresult){
1189 node_1_11 = node_1_10->cellresults;
1190 if(node_1_10->cellresults){
1191 node_1_12 = node_1_11->resultsssb_cell;
1192 if(node_1_11->resultsssb_cell){
1193 if(node_1_12->rsrq){
1194 nr_neighbor->rsrq = node_1_12->rsrq->value;
1195 nr_neighbor->rsrq_exists = 1;
1197 nr_neighbor->rsrq_exists = 0;
1199 if(node_1_12->rsrp){
1200 nr_neighbor->rsrp = node_1_12->rsrp->value;
1201 nr_neighbor->rsrp_exists = 1;
1203 nr_neighbor->rsrp_exists = 0;
1205 if(node_1_12->sinr){
1206 nr_neighbor->sinr = node_1_12->sinr->value;
1207 nr_neighbor->sinr_exists = 1;
1209 nr_neighbor->sinr_exists = 0;
1211 rts_fta_process_packet(&cur_packet);
1224 // --------------------------------------------------
1225 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1227 serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values);
1228 cur_packet.schema = 2;
1229 node_2_0 = node_1_0;
1230 ts_lo = hdr->header->timestamp & 0xffffffff;
1231 ts_hi = hdr->header->timestamp >> 32;
1232 serv_cell_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1233 if(hdr->header->gnbid==NULL)
1234 serv_cell_beam_csi->gnb_id = empty_string;
1236 serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value;
1238 node_2_1 = node_2_0->rrctransfer_ies;
1239 if(node_2_0->rrctransfer_ies){
1240 serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
1241 serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id;
1242 node_2_2 = node_2_1->id_uenrmeasurement;
1243 if(node_2_1->id_uenrmeasurement){
1244 node_2_3 = node_2_2->uenrmeasurements;
1245 if(node_2_2->uenrmeasurements){
1246 node_2_4 = node_2_3->ul_dcch_message;
1247 if(node_2_3->ul_dcch_message){
1248 node_2_5 = node_2_4->measurementreport;
1249 if(node_2_4->measurementreport){
1250 node_2_6 = node_2_5->measurementreport;
1251 if(node_2_5->measurementreport){
1252 node_2_7 = node_2_6->measresults;
1253 if(node_2_6->measresults){
1254 node_2_8 = node_2_7->measresultservingmolist;
1255 if(node_2_7->measresultservingmolist){
1256 for(i_2_9=0;i_2_9<node_2_8->n_items; i_2_9++){
1257 node_2_9 = node_2_8->items[i_2_9];
1258 serv_cell_beam_csi->servCellID = node_2_9->servcellid;
1259 node_2_10 = node_2_9->measresultservingcell;
1260 if(node_2_9->measresultservingcell){
1261 if(node_2_10->physcellid){
1262 serv_cell_beam_csi->physCellId = node_2_10->physcellid->value;
1263 serv_cell_beam_csi->physCellId_exists = 1;
1265 serv_cell_beam_csi->physCellId_exists = 0;
1267 node_2_11 = node_2_10->measresult;
1268 if(node_2_10->measresult){
1269 node_2_12 = node_2_11->rsindexresults;
1270 if(node_2_11->rsindexresults){
1271 node_2_13 = node_2_12->resultscsi_rs_indexes;
1272 if(node_2_12->resultscsi_rs_indexes){
1273 for(i_2_14=0;i_2_14<node_2_13->n_items; i_2_14++){
1274 node_2_14 = node_2_13->items[i_2_14];
1275 serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index;
1276 node_2_15 = node_2_14->csi_rs_results;
1277 if(node_2_14->csi_rs_results){
1278 if(node_2_15->rsrq){
1279 serv_cell_beam_csi->rsrq = node_2_15->rsrq->value;
1280 serv_cell_beam_csi->rsrq_exists = 1;
1282 serv_cell_beam_csi->rsrq_exists = 0;
1284 if(node_2_15->rsrp){
1285 serv_cell_beam_csi->rsrp = node_2_15->rsrp->value;
1286 serv_cell_beam_csi->rsrp_exists = 1;
1288 serv_cell_beam_csi->rsrp_exists = 0;
1290 if(node_2_15->sinr){
1291 serv_cell_beam_csi->sinr = node_2_15->sinr->value;
1292 serv_cell_beam_csi->sinr_exists = 1;
1294 serv_cell_beam_csi->sinr_exists = 0;
1296 rts_fta_process_packet(&cur_packet);
1312 // --------------------------------------------------
1313 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1315 neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values);
1316 cur_packet.schema = 5;
1317 node_3_0 = node_2_0;
1318 ts_lo = hdr->header->timestamp & 0xffffffff;
1319 ts_hi = hdr->header->timestamp >> 32;
1320 neighbor_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1321 if(hdr->header->gnbid==NULL)
1322 neighbor_beam_csi->gnb_id = empty_string;
1324 neighbor_beam_csi->gnb_id = hdr->header->gnbid->value;
1326 node_3_1 = node_3_0->rrctransfer_ies;
1327 if(node_3_0->rrctransfer_ies){
1328 neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
1329 neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id;
1330 node_3_2 = node_3_1->id_uenrmeasurement;
1331 if(node_3_1->id_uenrmeasurement){
1332 node_3_3 = node_3_2->uenrmeasurements;
1333 if(node_3_2->uenrmeasurements){
1334 node_3_4 = node_3_3->ul_dcch_message;
1335 if(node_3_3->ul_dcch_message){
1336 node_3_5 = node_3_4->measurementreport;
1337 if(node_3_4->measurementreport){
1338 node_3_6 = node_3_5->measurementreport;
1339 if(node_3_5->measurementreport){
1340 node_3_7 = node_3_6->measresults;
1341 if(node_3_6->measresults){
1342 node_3_8 = node_3_7->measresultlistnr;
1343 if(node_3_7->measresultlistnr){
1344 for(i_3_9=0;i_3_9<node_3_8->n_items; i_3_9++){
1345 node_3_9 = node_3_8->items[i_3_9];
1346 if(node_3_9->physcellid){
1347 neighbor_beam_csi->physCellId = node_3_9->physcellid->value;
1348 neighbor_beam_csi->physCellId_exists = 1;
1350 neighbor_beam_csi->physCellId_exists = 0;
1352 node_3_10 = node_3_9->measresult;
1353 if(node_3_9->measresult){
1354 node_3_11 = node_3_10->rsindexresults;
1355 if(node_3_10->rsindexresults){
1356 node_3_12 = node_3_11->resultscsi_rs_indexes;
1357 if(node_3_11->resultscsi_rs_indexes){
1358 for(i_3_13=0;i_3_13<node_3_12->n_items; i_3_13++){
1359 node_3_13 = node_3_12->items[i_3_13];
1360 neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index;
1361 node_3_14 = node_3_13->csi_rs_results;
1362 if(node_3_13->csi_rs_results){
1363 if(node_3_14->rsrq){
1364 neighbor_beam_csi->rsrq = node_3_14->rsrq->value;
1365 neighbor_beam_csi->rsrq_exists = 1;
1367 neighbor_beam_csi->rsrq_exists = 0;
1369 if(node_3_14->rsrp){
1370 neighbor_beam_csi->rsrp = node_3_14->rsrp->value;
1371 neighbor_beam_csi->rsrp_exists = 1;
1373 neighbor_beam_csi->rsrp_exists = 0;
1375 if(node_3_14->sinr){
1376 neighbor_beam_csi->sinr = node_3_14->sinr->value;
1377 neighbor_beam_csi->sinr_exists = 1;
1379 neighbor_beam_csi->sinr_exists = 0;
1381 rts_fta_process_packet(&cur_packet);
1396 // --------------------------------------------------
1397 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1399 serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values);
1400 cur_packet.schema = 3;
1401 node_4_0 = node_3_0;
1402 ts_lo = hdr->header->timestamp & 0xffffffff;
1403 ts_hi = hdr->header->timestamp >> 32;
1404 serv_cell_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1405 if(hdr->header->gnbid==NULL)
1406 serv_cell_beam_ssb->gnb_id = empty_string;
1408 serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value;
1410 node_4_1 = node_4_0->rrctransfer_ies;
1411 if(node_4_0->rrctransfer_ies){
1412 serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
1413 serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id;
1414 node_4_2 = node_4_1->id_uenrmeasurement;
1415 if(node_4_1->id_uenrmeasurement){
1416 node_4_3 = node_4_2->uenrmeasurements;
1417 if(node_4_2->uenrmeasurements){
1418 node_4_4 = node_4_3->ul_dcch_message;
1419 if(node_4_3->ul_dcch_message){
1420 node_4_5 = node_4_4->measurementreport;
1421 if(node_4_4->measurementreport){
1422 node_4_6 = node_4_5->measurementreport;
1423 if(node_4_5->measurementreport){
1424 node_4_7 = node_4_6->measresults;
1425 if(node_4_6->measresults){
1426 node_4_8 = node_4_7->measresultservingmolist;
1427 if(node_4_7->measresultservingmolist){
1428 for(i_4_9=0;i_4_9<node_4_8->n_items; i_4_9++){
1429 node_4_9 = node_4_8->items[i_4_9];
1430 serv_cell_beam_ssb->servCellID = node_4_9->servcellid;
1431 node_4_10 = node_4_9->measresultservingcell;
1432 if(node_4_9->measresultservingcell){
1433 if(node_4_10->physcellid){
1434 serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value;
1435 serv_cell_beam_ssb->physCellId_exists = 1;
1437 serv_cell_beam_ssb->physCellId_exists = 0;
1439 node_4_11 = node_4_10->measresult;
1440 if(node_4_10->measresult){
1441 node_4_12 = node_4_11->rsindexresults;
1442 if(node_4_11->rsindexresults){
1443 node_4_13 = node_4_12->resultsssb_indexes;
1444 if(node_4_12->resultsssb_indexes){
1445 for(i_4_14=0;i_4_14<node_4_13->n_items; i_4_14++){
1446 node_4_14 = node_4_13->items[i_4_14];
1447 serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index;
1448 node_4_15 = node_4_14->ssb_results;
1449 if(node_4_14->ssb_results){
1450 if(node_4_15->rsrq){
1451 serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value;
1452 serv_cell_beam_ssb->rsrq_exists = 1;
1454 serv_cell_beam_ssb->rsrq_exists = 0;
1456 if(node_4_15->rsrp){
1457 serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value;
1458 serv_cell_beam_ssb->rsrp_exists = 1;
1460 serv_cell_beam_ssb->rsrp_exists = 0;
1462 if(node_4_15->sinr){
1463 serv_cell_beam_ssb->sinr = node_4_15->sinr->value;
1464 serv_cell_beam_ssb->sinr_exists = 1;
1466 serv_cell_beam_ssb->sinr_exists = 0;
1468 rts_fta_process_packet(&cur_packet);
1484 // --------------------------------------------------
1485 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1487 neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values);
1488 cur_packet.schema = 6;
1489 node_5_0 = node_4_0;
1490 ts_lo = hdr->header->timestamp & 0xffffffff;
1491 ts_hi = hdr->header->timestamp >> 32;
1492 neighbor_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1493 if(hdr->header->gnbid==NULL)
1494 neighbor_beam_ssb->gnb_id = empty_string;
1496 neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value;
1498 node_5_1 = node_5_0->rrctransfer_ies;
1499 if(node_5_0->rrctransfer_ies){
1500 neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
1501 neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id;
1502 node_5_2 = node_5_1->id_uenrmeasurement;
1503 if(node_5_1->id_uenrmeasurement){
1504 node_5_3 = node_5_2->uenrmeasurements;
1505 if(node_5_2->uenrmeasurements){
1506 node_5_4 = node_5_3->ul_dcch_message;
1507 if(node_5_3->ul_dcch_message){
1508 node_5_5 = node_5_4->measurementreport;
1509 if(node_5_4->measurementreport){
1510 node_5_6 = node_5_5->measurementreport;
1511 if(node_5_5->measurementreport){
1512 node_5_7 = node_5_6->measresults;
1513 if(node_5_6->measresults){
1514 node_5_8 = node_5_7->measresultlistnr;
1515 if(node_5_7->measresultlistnr){
1516 for(i_5_9=0;i_5_9<node_5_8->n_items; i_5_9++){
1517 node_5_9 = node_5_8->items[i_5_9];
1518 if(node_5_9->physcellid){
1519 neighbor_beam_ssb->physCellId = node_5_9->physcellid->value;
1520 neighbor_beam_ssb->physCellId_exists = 1;
1522 neighbor_beam_ssb->physCellId_exists = 0;
1524 node_5_10 = node_5_9->measresult;
1525 if(node_5_9->measresult){
1526 node_5_11 = node_5_10->rsindexresults;
1527 if(node_5_10->rsindexresults){
1528 node_5_12 = node_5_11->resultsssb_indexes;
1529 if(node_5_11->resultsssb_indexes){
1530 for(i_5_13=0;i_5_13<node_5_12->n_items; i_5_13++){
1531 node_5_13 = node_5_12->items[i_5_13];
1532 neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index;
1533 node_5_14 = node_5_13->ssb_results;
1534 if(node_5_13->ssb_results){
1535 if(node_5_14->rsrq){
1536 neighbor_beam_ssb->rsrq = node_5_14->rsrq->value;
1537 neighbor_beam_ssb->rsrq_exists = 1;
1539 neighbor_beam_ssb->rsrq_exists = 0;
1541 if(node_5_14->rsrp){
1542 neighbor_beam_ssb->rsrp = node_5_14->rsrp->value;
1543 neighbor_beam_ssb->rsrp_exists = 1;
1545 neighbor_beam_ssb->rsrp_exists = 0;
1547 if(node_5_14->sinr){
1548 neighbor_beam_ssb->sinr = node_5_14->sinr->value;
1549 neighbor_beam_ssb->sinr_exists = 1;
1551 neighbor_beam_ssb->sinr_exists = 0;
1553 rts_fta_process_packet(&cur_packet);
1568 streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL);
1572 gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
1573 char *empty_string = "";
1574 unsigned long long int ts_lo, ts_hi;
1575 StreamingProtobufs__X2APStreaming *hdr = NULL;
1576 // ------------------------------------------
1577 // --- Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1578 struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL;
1579 StreamingProtobufs__SgNBAdditionRequestReject *node_0_0 = NULL;
1580 StreamingProtobufs__Cause *node_0_1 = NULL;
1582 // --------------------------------------------------
1583 // --- Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1585 sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values);
1586 cur_packet.schema = 701;
1588 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1589 if(hdr==NULL) return -1;
1591 node_0_0 = hdr->sgnbadditionrequestreject;
1592 if(node_0_0==NULL) return -2;
1593 if(hdr->header==NULL) return -3;
1595 ts_lo = hdr->header->timestamp & 0xffffffff;
1596 ts_hi = hdr->header->timestamp >> 32;
1597 sgnb_add_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1598 if(hdr->header->gnbid==NULL)
1599 sgnb_add_req_reject->gnb_id = empty_string;
1601 sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value;
1603 sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1604 if(node_0_0->id_sgnb_ue_x2ap_id){
1605 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
1606 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 1;
1608 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0;
1610 node_0_1 = node_0_0->id_cause;
1611 if(node_0_0->id_cause){
1612 if(node_0_1->radionetwork){
1613 sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value;
1615 sgnb_add_req_reject->cause_radio_network = -1;
1617 if(node_0_1->transport){
1618 sgnb_add_req_reject->cause_transport = node_0_1->transport->value;
1620 sgnb_add_req_reject->cause_transport = -1;
1622 if(node_0_1->protocol){
1623 sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value;
1625 sgnb_add_req_reject->cause_protocol = -1;
1628 sgnb_add_req_reject->cause_misc = node_0_1->misc->value;
1630 sgnb_add_req_reject->cause_misc = -1;
1632 rts_fta_process_packet(&cur_packet);
1634 streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL);
1638 gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){
1639 char *empty_string = "";
1640 unsigned long long int ts_lo, ts_hi;
1641 StreamingProtobufs__X2APStreaming *hdr = NULL;
1642 // ------------------------------------------
1643 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1644 struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL;
1645 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_0_0 = NULL;
1646 StreamingProtobufs__ERABList *node_0_1 = NULL;
1647 StreamingProtobufs__ERABItemIEs *node_0_2 = NULL;
1649 StreamingProtobufs__ERABItem *node_0_3 = NULL;
1650 // ------------------------------------------
1651 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1652 struct _add_req_ack_cellid *add_req_ack_cellid = NULL;
1653 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL;
1654 StreamingProtobufs__CGConfig *node_1_1 = NULL;
1655 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_1_2 = NULL;
1656 StreamingProtobufs__CGConfigIEs *node_1_3 = NULL;
1657 StreamingProtobufs__RRCReconfiguration *node_1_4 = NULL;
1658 StreamingProtobufs__RRCReconfigurationIEs *node_1_5 = NULL;
1659 StreamingProtobufs__CellGroupConfig *node_1_6 = NULL;
1660 StreamingProtobufs__SpCellConfig *node_1_7 = NULL;
1661 StreamingProtobufs__ReconfigurationWithSync *node_1_8 = NULL;
1662 StreamingProtobufs__ServingCellConfigCommon *node_1_9 = NULL;
1663 // ------------------------------------------
1664 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1665 struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL;
1666 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL;
1667 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_2_1 = NULL;
1668 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_2_2 = NULL;
1670 // ------------------------------------------
1671 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1672 struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL;
1673 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL;
1674 StreamingProtobufs__CGConfig *node_3_1 = NULL;
1675 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL;
1676 StreamingProtobufs__CGConfigIEs *node_3_3 = NULL;
1677 // ------------------------------------------
1678 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1679 struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL;
1680 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL;
1681 StreamingProtobufs__CGConfig *node_4_1 = NULL;
1682 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL;
1683 StreamingProtobufs__CGConfigIEs *node_4_3 = NULL;
1684 StreamingProtobufs__RadioBearerConfig *node_4_4 = NULL;
1685 StreamingProtobufs__DRBToAddModList *node_4_5 = NULL;
1686 StreamingProtobufs__DRBToAddMod *node_4_6 = NULL;
1688 // ------------------------------------------
1689 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1690 struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL;
1691 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL;
1692 StreamingProtobufs__CGConfig *node_5_1 = NULL;
1693 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL;
1694 StreamingProtobufs__CGConfigIEs *node_5_3 = NULL;
1695 StreamingProtobufs__MeasResultList2NR *node_5_4 = NULL;
1696 StreamingProtobufs__MeasResult2NR *node_5_5 = NULL;
1698 StreamingProtobufs__MeasResultNR *node_5_6 = NULL;
1699 StreamingProtobufs__MeasResult *node_5_7 = NULL;
1700 StreamingProtobufs__CellResults *node_5_8 = NULL;
1701 StreamingProtobufs__MeasQuantityResults *node_5_9 = NULL;
1702 // ------------------------------------------
1703 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1704 struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL;
1705 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL;
1706 StreamingProtobufs__CGConfig *node_6_1 = NULL;
1707 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL;
1708 StreamingProtobufs__CGConfigIEs *node_6_3 = NULL;
1709 StreamingProtobufs__MeasResultList2NR *node_6_4 = NULL;
1710 StreamingProtobufs__MeasResult2NR *node_6_5 = NULL;
1712 StreamingProtobufs__MeasResultNR *node_6_6 = NULL;
1713 StreamingProtobufs__MeasResult *node_6_7 = NULL;
1714 StreamingProtobufs__RsIndexResults *node_6_8 = NULL;
1715 StreamingProtobufs__ResultsPerCSIRSIndexList *node_6_9 = NULL;
1716 StreamingProtobufs__ResultsPerCSIRSIndex *node_6_10 = NULL;
1718 StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL;
1719 // ------------------------------------------
1720 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1721 struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL;
1722 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_7_0 = NULL;
1723 StreamingProtobufs__CGConfig *node_7_1 = NULL;
1724 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_7_2 = NULL;
1725 StreamingProtobufs__CGConfigIEs *node_7_3 = NULL;
1726 StreamingProtobufs__MeasResultList2NR *node_7_4 = NULL;
1727 StreamingProtobufs__MeasResult2NR *node_7_5 = NULL;
1729 StreamingProtobufs__MeasResultNR *node_7_6 = NULL;
1730 StreamingProtobufs__MeasResult *node_7_7 = NULL;
1731 StreamingProtobufs__RsIndexResults *node_7_8 = NULL;
1732 StreamingProtobufs__ResultsPerSSBIndexList *node_7_9 = NULL;
1733 StreamingProtobufs__ResultsPerSSBIndex *node_7_10 = NULL;
1735 StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
1737 // --------------------------------------------------
1738 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1740 eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values);
1741 cur_packet.schema = 501;
1743 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1744 if(hdr==NULL) return -1;
1746 node_0_0 = hdr->sgnbadditionrequestacknowledge;
1747 if(node_0_0==NULL) return -2;
1748 if(hdr->header==NULL) return -3;
1750 ts_lo = hdr->header->timestamp & 0xffffffff;
1751 ts_hi = hdr->header->timestamp >> 32;
1752 eRABs_notadmitted_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1753 if(hdr->header->gnbid==NULL)
1754 eRABs_notadmitted_for_ue->gnb_id = empty_string;
1756 eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value;
1758 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1759 eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
1760 if(node_0_0->id_menb_ue_x2ap_id_extension){
1761 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
1763 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1765 node_0_1 = node_0_0->id_e_rabs_notadmitted_list;
1766 if(node_0_0->id_e_rabs_notadmitted_list){
1767 for(i_0_2=0;i_0_2<node_0_1->n_items; i_0_2++){
1768 node_0_2 = node_0_1->items[i_0_2];
1769 node_0_3 = node_0_2->id_e_rab_item;
1770 if(node_0_2->id_e_rab_item){
1771 eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id;
1772 if(node_0_3->cause && node_0_3->cause->transport){
1773 eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value;
1775 eRABs_notadmitted_for_ue->cause_transport = -1;
1777 if(node_0_3->cause && node_0_3->cause->protocol){
1778 eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value;
1780 eRABs_notadmitted_for_ue->cause_protocol = -1;
1782 if(node_0_3->cause && node_0_3->cause->misc){
1783 eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value;
1785 eRABs_notadmitted_for_ue->cause_misc = -1;
1787 if(node_0_3->cause && node_0_3->cause->radionetwork){
1788 eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value;
1790 eRABs_notadmitted_for_ue->cause_radio_network = -1;
1792 rts_fta_process_packet(&cur_packet);
1796 // --------------------------------------------------
1797 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1799 add_req_ack_cellid = (struct _add_req_ack_cellid *)(cur_packet.record.packed.values);
1800 cur_packet.schema = 10004;
1801 node_1_0 = node_0_0;
1802 ts_lo = hdr->header->timestamp & 0xffffffff;
1803 ts_hi = hdr->header->timestamp >> 32;
1804 add_req_ack_cellid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1805 if(hdr->header->gnbid==NULL)
1806 add_req_ack_cellid->gnb_id = empty_string;
1808 add_req_ack_cellid->gnb_id = hdr->header->gnbid->value;
1810 add_req_ack_cellid->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
1811 add_req_ack_cellid->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
1812 if(node_1_0->id_menb_ue_x2ap_id_extension){
1813 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
1815 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = 0;
1817 node_1_1 = node_1_0->id_sgnbtomenbcontainer;
1818 if(node_1_0->id_sgnbtomenbcontainer){
1819 node_1_2 = node_1_1->criticalextensionschoice1;
1820 if(node_1_1->criticalextensionschoice1){
1821 node_1_3 = node_1_2->protocolies;
1822 if(node_1_2->protocolies){
1823 node_1_4 = node_1_3->scg_cellgroupconfig;
1824 if(node_1_3->scg_cellgroupconfig){
1825 node_1_5 = node_1_4->rrcreconfiguration;
1826 if(node_1_4->rrcreconfiguration){
1827 node_1_6 = node_1_5->secondarycellgroup;
1828 if(node_1_5->secondarycellgroup){
1829 node_1_7 = node_1_6->spcellconfig;
1830 if(node_1_6->spcellconfig){
1831 node_1_8 = node_1_7->reconfigurationwithsync;
1832 if(node_1_7->reconfigurationwithsync){
1833 node_1_9 = node_1_8->spcellconfigcommon;
1834 if(node_1_8->spcellconfigcommon){
1835 if(node_1_9->physcellid){
1836 add_req_ack_cellid->physCellId = node_1_9->physcellid->value;
1837 add_req_ack_cellid->physCellId_exists = 1;
1839 add_req_ack_cellid->physCellId_exists = 0;
1841 rts_fta_process_packet(&cur_packet);
1851 // --------------------------------------------------
1852 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1854 eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values);
1855 cur_packet.schema = 502;
1856 node_2_0 = node_1_0;
1857 ts_lo = hdr->header->timestamp & 0xffffffff;
1858 ts_hi = hdr->header->timestamp >> 32;
1859 eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1860 if(hdr->header->gnbid==NULL)
1861 eRABs_acked_for_admit_for_ue->gnb_id = empty_string;
1863 eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value;
1865 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
1866 eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
1867 if(node_2_0->id_menb_ue_x2ap_id_extension){
1868 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
1870 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1872 node_2_1 = node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist;
1873 if(node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){
1874 for(i_2_2=0;i_2_2<node_2_1->n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_2_2++){
1875 node_2_2 = node_2_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_2_2];
1876 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){
1877 eRABs_acked_for_admit_for_ue->ARP = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
1879 eRABs_acked_for_admit_for_ue->ARP = 0;
1881 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1882 eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid;
1883 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1;
1885 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0;
1887 if(node_2_2->en_dc_resourceconfiguration){
1888 eRABs_acked_for_admit_for_ue->mCGresources = node_2_2->en_dc_resourceconfiguration->mcgresources;
1889 eRABs_acked_for_admit_for_ue->mCGresources_exists = 1;
1891 eRABs_acked_for_admit_for_ue->mCGresources_exists = 0;
1893 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1894 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress;
1895 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1;
1897 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0;
1899 if(node_2_2->en_dc_resourceconfiguration){
1900 eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_2_2->en_dc_resourceconfiguration->pdcpatsgnb;
1901 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1;
1903 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0;
1905 if(node_2_2->en_dc_resourceconfiguration){
1906 eRABs_acked_for_admit_for_ue->sCGresources = node_2_2->en_dc_resourceconfiguration->scgresources;
1907 eRABs_acked_for_admit_for_ue->sCGresources_exists = 1;
1909 eRABs_acked_for_admit_for_ue->sCGresources_exists = 0;
1911 eRABs_acked_for_admit_for_ue->e_RAB_ID = node_2_2->e_rab_id;
1912 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){
1913 eRABs_acked_for_admit_for_ue->qCI = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci;
1915 eRABs_acked_for_admit_for_ue->qCI = 0;
1917 rts_fta_process_packet(&cur_packet);
1920 // --------------------------------------------------
1921 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1923 SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values);
1924 cur_packet.schema = 503;
1925 node_3_0 = node_2_0;
1926 ts_lo = hdr->header->timestamp & 0xffffffff;
1927 ts_hi = hdr->header->timestamp >> 32;
1928 SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1929 if(hdr->header->gnbid==NULL)
1930 SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string;
1932 SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value;
1934 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id;
1935 SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id;
1936 if(node_3_0->id_menb_ue_x2ap_id_extension){
1937 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value;
1939 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0;
1941 node_3_1 = node_3_0->id_sgnbtomenbcontainer;
1942 if(node_3_0->id_sgnbtomenbcontainer){
1943 node_3_2 = node_3_1->criticalextensionschoice1;
1944 if(node_3_1->criticalextensionschoice1){
1945 node_3_3 = node_3_2->protocolies;
1946 if(node_3_2->protocolies){
1947 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 0 && node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){
1948 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value;
1949 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1;
1951 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0;
1953 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 1 && node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){
1954 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value;
1955 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1;
1957 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0;
1959 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 2 && node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){
1960 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value;
1961 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1;
1963 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0;
1965 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 3 && node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){
1966 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value;
1967 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1;
1969 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0;
1971 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 4 && node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){
1972 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value;
1973 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1;
1975 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0;
1977 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 5 && node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){
1978 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value;
1979 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1;
1981 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0;
1983 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 6 && node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){
1984 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value;
1985 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1;
1987 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0;
1989 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 7 && node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){
1990 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value;
1991 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1;
1993 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0;
1995 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 0){
1996 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_3_3->candidateservingfreqlistnr->items[0];
1997 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1;
1999 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0;
2001 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 1){
2002 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_3_3->candidateservingfreqlistnr->items[1];
2003 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1;
2005 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0;
2007 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 2){
2008 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_3_3->candidateservingfreqlistnr->items[2];
2009 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1;
2011 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0;
2013 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 3){
2014 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_3_3->candidateservingfreqlistnr->items[3];
2015 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1;
2017 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0;
2019 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 4){
2020 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_3_3->candidateservingfreqlistnr->items[4];
2021 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1;
2023 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0;
2025 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 5){
2026 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_3_3->candidateservingfreqlistnr->items[5];
2027 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1;
2029 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0;
2031 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 6){
2032 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_3_3->candidateservingfreqlistnr->items[6];
2033 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1;
2035 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0;
2037 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 7){
2038 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_3_3->candidateservingfreqlistnr->items[7];
2039 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1;
2041 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0;
2043 rts_fta_process_packet(&cur_packet);
2047 // --------------------------------------------------
2048 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2050 SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values);
2051 cur_packet.schema = 504;
2052 node_4_0 = node_3_0;
2053 ts_lo = hdr->header->timestamp & 0xffffffff;
2054 ts_hi = hdr->header->timestamp >> 32;
2055 SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2056 if(hdr->header->gnbid==NULL)
2057 SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string;
2059 SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value;
2061 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id;
2062 SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id;
2063 if(node_4_0->id_menb_ue_x2ap_id_extension){
2064 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value;
2066 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2068 node_4_1 = node_4_0->id_sgnbtomenbcontainer;
2069 if(node_4_0->id_sgnbtomenbcontainer){
2070 node_4_2 = node_4_1->criticalextensionschoice1;
2071 if(node_4_1->criticalextensionschoice1){
2072 node_4_3 = node_4_2->protocolies;
2073 if(node_4_2->protocolies){
2074 node_4_4 = node_4_3->scg_rb_config;
2075 if(node_4_3->scg_rb_config){
2076 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 0){
2077 SgNB_ack_for_add_mod_for_ue->toRelease0 = node_4_4->drb_toreleaselist->items[0];
2078 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1;
2080 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0;
2082 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 1){
2083 SgNB_ack_for_add_mod_for_ue->toRelease1 = node_4_4->drb_toreleaselist->items[1];
2084 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1;
2086 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0;
2088 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 2){
2089 SgNB_ack_for_add_mod_for_ue->toRelease2 = node_4_4->drb_toreleaselist->items[2];
2090 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1;
2092 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0;
2094 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 3){
2095 SgNB_ack_for_add_mod_for_ue->toRelease3 = node_4_4->drb_toreleaselist->items[3];
2096 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1;
2098 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0;
2100 node_4_5 = node_4_4->drb_toaddmodlist;
2101 if(node_4_4->drb_toaddmodlist){
2102 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
2103 node_4_6 = node_4_5->items[i_4_6];
2104 if(node_4_6->recoverpdcp){
2105 SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_4_6->recoverpdcp->value;
2106 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1;
2108 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0;
2110 if(node_4_6->reestablishpdcp){
2111 SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_4_6->reestablishpdcp->value;
2112 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1;
2114 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0;
2116 SgNB_ack_for_add_mod_for_ue->drb_Identity = node_4_6->drb_identity;
2117 SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_4_6->eps_beareridentity;
2118 rts_fta_process_packet(&cur_packet);
2125 // --------------------------------------------------
2126 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2128 SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values);
2129 cur_packet.schema = 505;
2130 node_5_0 = node_4_0;
2131 ts_lo = hdr->header->timestamp & 0xffffffff;
2132 ts_hi = hdr->header->timestamp >> 32;
2133 SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2134 if(hdr->header->gnbid==NULL)
2135 SgNB_ack_for_ue_measurements->gnb_id = empty_string;
2137 SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value;
2139 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id;
2140 SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id;
2141 if(node_5_0->id_menb_ue_x2ap_id_extension){
2142 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value;
2144 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0;
2146 node_5_1 = node_5_0->id_sgnbtomenbcontainer;
2147 if(node_5_0->id_sgnbtomenbcontainer){
2148 node_5_2 = node_5_1->criticalextensionschoice1;
2149 if(node_5_1->criticalextensionschoice1){
2150 node_5_3 = node_5_2->protocolies;
2151 if(node_5_2->protocolies){
2152 node_5_4 = node_5_3->candidatecellinfolistsn;
2153 if(node_5_3->candidatecellinfolistsn){
2154 for(i_5_5=0;i_5_5<node_5_4->n_items; i_5_5++){
2155 node_5_5 = node_5_4->items[i_5_5];
2156 if(node_5_5->ssbfrequency){
2157 SgNB_ack_for_ue_measurements->ssbFrequency = node_5_5->ssbfrequency->value;
2158 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1;
2160 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0;
2162 if(node_5_5->reffreqcsi_rs){
2163 SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value;
2164 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1;
2166 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0;
2168 node_5_6 = node_5_5->measresultservingcell;
2169 if(node_5_5->measresultservingcell){
2170 if(node_5_6->physcellid){
2171 SgNB_ack_for_ue_measurements->physCellId = node_5_6->physcellid->value;
2172 SgNB_ack_for_ue_measurements->physCellId_exists = 1;
2174 SgNB_ack_for_ue_measurements->physCellId_exists = 0;
2176 node_5_7 = node_5_6->measresult;
2177 if(node_5_6->measresult){
2178 node_5_8 = node_5_7->cellresults;
2179 if(node_5_7->cellresults){
2180 node_5_9 = node_5_8->resultscsi_rs_cell;
2181 if(node_5_8->resultscsi_rs_cell){
2183 SgNB_ack_for_ue_measurements->rsrq = node_5_9->rsrq->value;
2184 SgNB_ack_for_ue_measurements->rsrq_exists = 1;
2186 SgNB_ack_for_ue_measurements->rsrq_exists = 0;
2189 SgNB_ack_for_ue_measurements->rsrp = node_5_9->rsrp->value;
2190 SgNB_ack_for_ue_measurements->rsrp_exists = 1;
2192 SgNB_ack_for_ue_measurements->rsrp_exists = 0;
2195 SgNB_ack_for_ue_measurements->sinr = node_5_9->sinr->value;
2196 SgNB_ack_for_ue_measurements->sinr_exists = 1;
2198 SgNB_ack_for_ue_measurements->sinr_exists = 0;
2200 rts_fta_process_packet(&cur_packet);
2210 // --------------------------------------------------
2211 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2213 SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values);
2214 cur_packet.schema = 506;
2215 node_6_0 = node_5_0;
2216 ts_lo = hdr->header->timestamp & 0xffffffff;
2217 ts_hi = hdr->header->timestamp >> 32;
2218 SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2219 if(hdr->header->gnbid==NULL)
2220 SgNB_ack_for_ue_beam_csi->gnb_id = empty_string;
2222 SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value;
2224 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id;
2225 SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id;
2226 if(node_6_0->id_menb_ue_x2ap_id_extension){
2227 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value;
2229 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0;
2231 node_6_1 = node_6_0->id_sgnbtomenbcontainer;
2232 if(node_6_0->id_sgnbtomenbcontainer){
2233 node_6_2 = node_6_1->criticalextensionschoice1;
2234 if(node_6_1->criticalextensionschoice1){
2235 node_6_3 = node_6_2->protocolies;
2236 if(node_6_2->protocolies){
2237 node_6_4 = node_6_3->candidatecellinfolistsn;
2238 if(node_6_3->candidatecellinfolistsn){
2239 for(i_6_5=0;i_6_5<node_6_4->n_items; i_6_5++){
2240 node_6_5 = node_6_4->items[i_6_5];
2241 if(node_6_5->ssbfrequency){
2242 SgNB_ack_for_ue_beam_csi->ssbFrequency = node_6_5->ssbfrequency->value;
2243 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1;
2245 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0;
2247 if(node_6_5->reffreqcsi_rs){
2248 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value;
2249 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1;
2251 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0;
2253 node_6_6 = node_6_5->measresultservingcell;
2254 if(node_6_5->measresultservingcell){
2255 if(node_6_6->physcellid){
2256 SgNB_ack_for_ue_beam_csi->physCellId = node_6_6->physcellid->value;
2257 SgNB_ack_for_ue_beam_csi->physCellId_exists = 1;
2259 SgNB_ack_for_ue_beam_csi->physCellId_exists = 0;
2261 node_6_7 = node_6_6->measresult;
2262 if(node_6_6->measresult){
2263 node_6_8 = node_6_7->rsindexresults;
2264 if(node_6_7->rsindexresults){
2265 node_6_9 = node_6_8->resultscsi_rs_indexes;
2266 if(node_6_8->resultscsi_rs_indexes){
2267 for(i_6_10=0;i_6_10<node_6_9->n_items; i_6_10++){
2268 node_6_10 = node_6_9->items[i_6_10];
2269 SgNB_ack_for_ue_beam_csi->csi_rs_index = node_6_10->csi_rs_index;
2270 node_6_11 = node_6_10->csi_rs_results;
2271 if(node_6_10->csi_rs_results){
2272 if(node_6_11->rsrq){
2273 SgNB_ack_for_ue_beam_csi->rsrq = node_6_11->rsrq->value;
2274 SgNB_ack_for_ue_beam_csi->rsrq_exists = 1;
2276 SgNB_ack_for_ue_beam_csi->rsrq_exists = 0;
2278 if(node_6_11->rsrp){
2279 SgNB_ack_for_ue_beam_csi->rsrp = node_6_11->rsrp->value;
2280 SgNB_ack_for_ue_beam_csi->rsrp_exists = 1;
2282 SgNB_ack_for_ue_beam_csi->rsrp_exists = 0;
2284 if(node_6_11->sinr){
2285 SgNB_ack_for_ue_beam_csi->sinr = node_6_11->sinr->value;
2286 SgNB_ack_for_ue_beam_csi->sinr_exists = 1;
2288 SgNB_ack_for_ue_beam_csi->sinr_exists = 0;
2290 rts_fta_process_packet(&cur_packet);
2302 // --------------------------------------------------
2303 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2305 SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values);
2306 cur_packet.schema = 507;
2307 node_7_0 = node_6_0;
2308 ts_lo = hdr->header->timestamp & 0xffffffff;
2309 ts_hi = hdr->header->timestamp >> 32;
2310 SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2311 if(hdr->header->gnbid==NULL)
2312 SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string;
2314 SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value;
2316 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_7_0->id_menb_ue_x2ap_id;
2317 SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_7_0->id_sgnb_ue_x2ap_id;
2318 if(node_7_0->id_menb_ue_x2ap_id_extension){
2319 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_0->id_menb_ue_x2ap_id_extension->value;
2321 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2323 node_7_1 = node_7_0->id_sgnbtomenbcontainer;
2324 if(node_7_0->id_sgnbtomenbcontainer){
2325 node_7_2 = node_7_1->criticalextensionschoice1;
2326 if(node_7_1->criticalextensionschoice1){
2327 node_7_3 = node_7_2->protocolies;
2328 if(node_7_2->protocolies){
2329 node_7_4 = node_7_3->candidatecellinfolistsn;
2330 if(node_7_3->candidatecellinfolistsn){
2331 for(i_7_5=0;i_7_5<node_7_4->n_items; i_7_5++){
2332 node_7_5 = node_7_4->items[i_7_5];
2333 if(node_7_5->ssbfrequency){
2334 SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_7_5->ssbfrequency->value;
2335 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1;
2337 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0;
2339 if(node_7_5->reffreqcsi_rs){
2340 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_7_5->reffreqcsi_rs->value;
2341 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1;
2343 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0;
2345 node_7_6 = node_7_5->measresultservingcell;
2346 if(node_7_5->measresultservingcell){
2347 if(node_7_6->physcellid){
2348 SgNB_ack_for_ue_beam_ssb->physCellId = node_7_6->physcellid->value;
2349 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1;
2351 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0;
2353 node_7_7 = node_7_6->measresult;
2354 if(node_7_6->measresult){
2355 node_7_8 = node_7_7->rsindexresults;
2356 if(node_7_7->rsindexresults){
2357 node_7_9 = node_7_8->resultsssb_indexes;
2358 if(node_7_8->resultsssb_indexes){
2359 for(i_7_10=0;i_7_10<node_7_9->n_items; i_7_10++){
2360 node_7_10 = node_7_9->items[i_7_10];
2361 SgNB_ack_for_ue_beam_ssb->ssb_Index = node_7_10->ssb_index;
2362 node_7_11 = node_7_10->ssb_results;
2363 if(node_7_10->ssb_results){
2364 if(node_7_11->rsrq){
2365 SgNB_ack_for_ue_beam_ssb->rsrq = node_7_11->rsrq->value;
2366 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1;
2368 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0;
2370 if(node_7_11->rsrp){
2371 SgNB_ack_for_ue_beam_ssb->rsrp = node_7_11->rsrp->value;
2372 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1;
2374 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0;
2376 if(node_7_11->sinr){
2377 SgNB_ack_for_ue_beam_ssb->sinr = node_7_11->sinr->value;
2378 SgNB_ack_for_ue_beam_ssb->sinr_exists = 1;
2380 SgNB_ack_for_ue_beam_ssb->sinr_exists = 0;
2382 rts_fta_process_packet(&cur_packet);
2394 streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL);
2398 gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){
2399 char *empty_string = "";
2400 unsigned long long int ts_lo, ts_hi;
2401 StreamingProtobufs__X2APStreaming *hdr = NULL;
2402 // ------------------------------------------
2403 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2404 struct _sgnb_addreq_gtp_teid *sgnb_addreq_gtp_teid = NULL;
2405 StreamingProtobufs__SgNBAdditionRequest *node_0_0 = NULL;
2406 StreamingProtobufs__SgNBAdditionRequestIEs *node_0_1 = NULL;
2407 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_0_2 = NULL;
2408 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_0_3 = NULL;
2410 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_0_4 = NULL;
2411 StreamingProtobufs__ERABsToBeAddedSgNBAddReqSgNBPDCPpresent *node_0_5 = NULL;
2412 StreamingProtobufs__GTPtunnelEndpoint *node_0_6 = NULL;
2413 // ------------------------------------------
2414 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2415 struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL;
2416 StreamingProtobufs__SgNBAdditionRequest *node_1_0 = NULL;
2417 StreamingProtobufs__SgNBAdditionRequestIEs *node_1_1 = NULL;
2418 StreamingProtobufs__ECGI *node_1_2 = NULL;
2419 // ------------------------------------------
2420 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2421 struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL;
2422 StreamingProtobufs__SgNBAdditionRequest *node_2_0 = NULL;
2423 StreamingProtobufs__SgNBAdditionRequestIEs *node_2_1 = NULL;
2424 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_2_2 = NULL;
2425 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_2_3 = NULL;
2427 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_2_4 = NULL;
2428 // ------------------------------------------
2429 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2430 struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL;
2431 StreamingProtobufs__SgNBAdditionRequest *node_3_0 = NULL;
2432 StreamingProtobufs__SgNBAdditionRequestIEs *node_3_1 = NULL;
2433 StreamingProtobufs__CGConfigInfo *node_3_2 = NULL;
2434 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL;
2435 StreamingProtobufs__CGConfigInfoIEs *node_3_4 = NULL;
2436 StreamingProtobufs__MeasResultList2NR *node_3_5 = NULL;
2437 StreamingProtobufs__MeasResult2NR *node_3_6 = NULL;
2439 StreamingProtobufs__MeasResultNR *node_3_7 = NULL;
2440 StreamingProtobufs__MeasResult *node_3_8 = NULL;
2441 StreamingProtobufs__CellResults *node_3_9 = NULL;
2442 StreamingProtobufs__MeasQuantityResults *node_3_10 = NULL;
2443 // ------------------------------------------
2444 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2445 struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL;
2446 StreamingProtobufs__SgNBAdditionRequest *node_4_0 = NULL;
2447 StreamingProtobufs__SgNBAdditionRequestIEs *node_4_1 = NULL;
2448 StreamingProtobufs__CGConfigInfo *node_4_2 = NULL;
2449 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL;
2450 StreamingProtobufs__CGConfigInfoIEs *node_4_4 = NULL;
2451 StreamingProtobufs__MeasResultList2NR *node_4_5 = NULL;
2452 StreamingProtobufs__MeasResult2NR *node_4_6 = NULL;
2454 StreamingProtobufs__MeasResultNR *node_4_7 = NULL;
2455 StreamingProtobufs__MeasResult *node_4_8 = NULL;
2456 StreamingProtobufs__CellResults *node_4_9 = NULL;
2457 StreamingProtobufs__MeasQuantityResults *node_4_10 = NULL;
2458 // ------------------------------------------
2459 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2460 struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL;
2461 StreamingProtobufs__SgNBAdditionRequest *node_5_0 = NULL;
2462 StreamingProtobufs__SgNBAdditionRequestIEs *node_5_1 = NULL;
2463 StreamingProtobufs__CGConfigInfo *node_5_2 = NULL;
2464 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL;
2465 StreamingProtobufs__CGConfigInfoIEs *node_5_4 = NULL;
2466 StreamingProtobufs__MeasResultList2NR *node_5_5 = NULL;
2467 StreamingProtobufs__MeasResult2NR *node_5_6 = NULL;
2469 StreamingProtobufs__MeasResultNR *node_5_7 = NULL;
2470 StreamingProtobufs__MeasResult *node_5_8 = NULL;
2471 StreamingProtobufs__CellResults *node_5_9 = NULL;
2472 StreamingProtobufs__MeasQuantityResults *node_5_10 = NULL;
2473 // ------------------------------------------
2474 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2475 struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL;
2476 StreamingProtobufs__SgNBAdditionRequest *node_6_0 = NULL;
2477 StreamingProtobufs__SgNBAdditionRequestIEs *node_6_1 = NULL;
2478 StreamingProtobufs__CGConfigInfo *node_6_2 = NULL;
2479 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL;
2480 StreamingProtobufs__CGConfigInfoIEs *node_6_4 = NULL;
2481 StreamingProtobufs__MeasResultList2NR *node_6_5 = NULL;
2482 StreamingProtobufs__MeasResult2NR *node_6_6 = NULL;
2484 StreamingProtobufs__MeasResultNR *node_6_7 = NULL;
2485 StreamingProtobufs__MeasResult *node_6_8 = NULL;
2486 StreamingProtobufs__CellResults *node_6_9 = NULL;
2487 StreamingProtobufs__MeasQuantityResults *node_6_10 = NULL;
2488 // ------------------------------------------
2489 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2490 struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL;
2491 StreamingProtobufs__SgNBAdditionRequest *node_7_0 = NULL;
2492 StreamingProtobufs__SgNBAdditionRequestIEs *node_7_1 = NULL;
2493 StreamingProtobufs__CGConfigInfo *node_7_2 = NULL;
2494 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL;
2495 StreamingProtobufs__CGConfigInfoIEs *node_7_4 = NULL;
2496 StreamingProtobufs__MeasResultList2NR *node_7_5 = NULL;
2497 StreamingProtobufs__MeasResult2NR *node_7_6 = NULL;
2499 StreamingProtobufs__MeasResultListNR *node_7_7 = NULL;
2500 StreamingProtobufs__MeasResultNR *node_7_8 = NULL;
2502 StreamingProtobufs__MeasResult *node_7_9 = NULL;
2503 StreamingProtobufs__CellResults *node_7_10 = NULL;
2504 StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
2505 // ------------------------------------------
2506 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2507 struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL;
2508 StreamingProtobufs__SgNBAdditionRequest *node_8_0 = NULL;
2509 StreamingProtobufs__SgNBAdditionRequestIEs *node_8_1 = NULL;
2510 StreamingProtobufs__CGConfigInfo *node_8_2 = NULL;
2511 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL;
2512 StreamingProtobufs__CGConfigInfoIEs *node_8_4 = NULL;
2513 StreamingProtobufs__MeasResultList2NR *node_8_5 = NULL;
2514 StreamingProtobufs__MeasResult2NR *node_8_6 = NULL;
2516 StreamingProtobufs__MeasResultListNR *node_8_7 = NULL;
2517 StreamingProtobufs__MeasResultNR *node_8_8 = NULL;
2519 StreamingProtobufs__MeasResult *node_8_9 = NULL;
2520 StreamingProtobufs__CellResults *node_8_10 = NULL;
2521 StreamingProtobufs__MeasQuantityResults *node_8_11 = NULL;
2522 // ------------------------------------------
2523 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2524 struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL;
2525 StreamingProtobufs__SgNBAdditionRequest *node_9_0 = NULL;
2526 StreamingProtobufs__SgNBAdditionRequestIEs *node_9_1 = NULL;
2527 StreamingProtobufs__CGConfigInfo *node_9_2 = NULL;
2528 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL;
2529 StreamingProtobufs__CGConfigInfoIEs *node_9_4 = NULL;
2530 StreamingProtobufs__MeasResultList2NR *node_9_5 = NULL;
2531 StreamingProtobufs__MeasResult2NR *node_9_6 = NULL;
2533 StreamingProtobufs__MeasResultListNR *node_9_7 = NULL;
2534 StreamingProtobufs__MeasResultNR *node_9_8 = NULL;
2536 StreamingProtobufs__MeasResult *node_9_9 = NULL;
2537 StreamingProtobufs__CellResults *node_9_10 = NULL;
2538 StreamingProtobufs__MeasQuantityResults *node_9_11 = NULL;
2539 // ------------------------------------------
2540 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2541 struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL;
2542 StreamingProtobufs__SgNBAdditionRequest *node_10_0 = NULL;
2543 StreamingProtobufs__SgNBAdditionRequestIEs *node_10_1 = NULL;
2544 StreamingProtobufs__CGConfigInfo *node_10_2 = NULL;
2545 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_10_3 = NULL;
2546 StreamingProtobufs__CGConfigInfoIEs *node_10_4 = NULL;
2547 StreamingProtobufs__MeasResultList2NR *node_10_5 = NULL;
2548 StreamingProtobufs__MeasResult2NR *node_10_6 = NULL;
2550 StreamingProtobufs__MeasResultListNR *node_10_7 = NULL;
2551 StreamingProtobufs__MeasResultNR *node_10_8 = NULL;
2553 StreamingProtobufs__MeasResult *node_10_9 = NULL;
2554 StreamingProtobufs__CellResults *node_10_10 = NULL;
2555 StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL;
2557 // --------------------------------------------------
2558 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2560 sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values);
2561 cur_packet.schema = 10005;
2563 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
2564 if(hdr==NULL) return -1;
2566 node_0_0 = hdr->sgnbadditionrequest;
2567 if(node_0_0==NULL) return -2;
2568 if(hdr->header==NULL) return -3;
2570 ts_lo = hdr->header->timestamp & 0xffffffff;
2571 ts_hi = hdr->header->timestamp >> 32;
2572 sgnb_addreq_gtp_teid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2573 if(hdr->header->gnbid==NULL)
2574 sgnb_addreq_gtp_teid->gnb_id = empty_string;
2576 sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value;
2578 node_0_1 = node_0_0->protocolies;
2579 if(node_0_0->protocolies){
2580 sgnb_addreq_gtp_teid->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
2581 node_0_2 = node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2582 if(node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2583 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
2584 node_0_3 = node_0_2->items[i_0_3];
2585 node_0_4 = node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2586 if(node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2587 node_0_5 = node_0_4->sgnbpdcppresent;
2588 if(node_0_4->sgnbpdcppresent){
2589 node_0_6 = node_0_5->s1_ul_gtptunnelendpoint;
2590 if(node_0_5->s1_ul_gtptunnelendpoint){
2591 sgnb_addreq_gtp_teid->gTP_TEID = node_0_6->gtp_teid;
2592 sgnb_addreq_gtp_teid->transportLayerAddress = node_0_6->transportlayeraddress;
2593 rts_fta_process_packet(&cur_packet);
2600 // --------------------------------------------------
2601 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2603 sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values);
2604 cur_packet.schema = 401;
2605 node_1_0 = node_0_0;
2606 ts_lo = hdr->header->timestamp & 0xffffffff;
2607 ts_hi = hdr->header->timestamp >> 32;
2608 sgnb_addreq_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2609 if(hdr->header->gnbid==NULL)
2610 sgnb_addreq_for_ue->gnb_id = empty_string;
2612 sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value;
2614 node_1_1 = node_1_0->protocolies;
2615 if(node_1_0->protocolies){
2616 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
2617 if(node_1_1->id_sgnbueaggregatemaximumbitrate){
2618 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_1_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink;
2619 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1;
2621 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0;
2623 if(node_1_1->id_menb_ue_x2ap_id_extension){
2624 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
2626 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2628 node_1_2 = node_1_1->id_menbcell_id;
2629 if(node_1_1->id_menbcell_id){
2630 sgnb_addreq_for_ue->eUTRANcellIdentifier = node_1_2->eutrancellidentifier;
2631 sgnb_addreq_for_ue->pLMN_Identity = node_1_2->plmn_identity;
2632 rts_fta_process_packet(&cur_packet);
2635 // --------------------------------------------------
2636 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2638 sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values);
2639 cur_packet.schema = 402;
2640 node_2_0 = node_1_0;
2641 ts_lo = hdr->header->timestamp & 0xffffffff;
2642 ts_hi = hdr->header->timestamp >> 32;
2643 sgnb_addreq_for_ue_bearers->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2644 if(hdr->header->gnbid==NULL)
2645 sgnb_addreq_for_ue_bearers->gnb_id = empty_string;
2647 sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value;
2649 node_2_1 = node_2_0->protocolies;
2650 if(node_2_0->protocolies){
2651 sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
2652 node_2_2 = node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2653 if(node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2654 for(i_2_3=0;i_2_3<node_2_2->n_items; i_2_3++){
2655 node_2_3 = node_2_2->items[i_2_3];
2656 node_2_4 = node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2657 if(node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2658 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2659 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl;
2661 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0;
2663 if(node_2_4->en_dc_resourceconfiguration){
2664 sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb;
2666 sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1;
2668 sgnb_addreq_for_ue_bearers->drb_ID = node_2_4->drb_id;
2669 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){
2670 sgnb_addreq_for_ue_bearers->priorityLevel = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
2672 sgnb_addreq_for_ue_bearers->priorityLevel = 0;
2674 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2675 sgnb_addreq_for_ue_bearers->gTP_TEID = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid;
2677 sgnb_addreq_for_ue_bearers->gTP_TEID.data = "";
2678 sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1;
2680 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){
2681 sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value;
2683 sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1;
2685 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2686 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul;
2688 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0;
2690 if(node_2_4->en_dc_resourceconfiguration){
2691 sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources;
2693 sgnb_addreq_for_ue_bearers->mCGresources = -1;
2695 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2696 sgnb_addreq_for_ue_bearers->transportLayerAddress = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress;
2698 sgnb_addreq_for_ue_bearers->transportLayerAddress.data = "";
2699 sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1;
2701 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){
2702 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul;
2704 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0;
2706 if(node_2_4->en_dc_resourceconfiguration){
2707 sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources;
2709 sgnb_addreq_for_ue_bearers->sCGresources = -1;
2711 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2712 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul;
2714 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0;
2716 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){
2717 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul;
2719 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0;
2721 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){
2722 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value;
2724 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1;
2726 sgnb_addreq_for_ue_bearers->e_RAB_ID = node_2_4->e_rab_id;
2727 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2728 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl;
2730 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0;
2732 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){
2733 sgnb_addreq_for_ue_bearers->qCI = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci;
2735 sgnb_addreq_for_ue_bearers->qCI = 0;
2737 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){
2738 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl;
2740 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0;
2742 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){
2743 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl;
2745 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0;
2747 rts_fta_process_packet(&cur_packet);
2752 // --------------------------------------------------
2753 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2755 sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values);
2756 cur_packet.schema = 403;
2757 node_3_0 = node_2_0;
2758 ts_lo = hdr->header->timestamp & 0xffffffff;
2759 ts_hi = hdr->header->timestamp >> 32;
2760 sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2761 if(hdr->header->gnbid==NULL)
2762 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string;
2764 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2766 node_3_1 = node_3_0->protocolies;
2767 if(node_3_0->protocolies){
2768 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
2769 if(node_3_1->id_menb_ue_x2ap_id_extension){
2770 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value;
2772 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2774 node_3_2 = node_3_1->id_menbtosgnbcontainer;
2775 if(node_3_1->id_menbtosgnbcontainer){
2776 node_3_3 = node_3_2->criticalextensionschoice1;
2777 if(node_3_2->criticalextensionschoice1){
2778 node_3_4 = node_3_3->protocolies;
2779 if(node_3_3->protocolies){
2780 node_3_5 = node_3_4->candidatecellinfolistsn;
2781 if(node_3_4->candidatecellinfolistsn){
2782 for(i_3_6=0;i_3_6<node_3_5->n_items; i_3_6++){
2783 node_3_6 = node_3_5->items[i_3_6];
2784 node_3_7 = node_3_6->measresultservingcell;
2785 if(node_3_6->measresultservingcell){
2786 if(node_3_7->physcellid){
2787 sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_3_7->physcellid->value;
2788 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1;
2790 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0;
2792 node_3_8 = node_3_7->measresult;
2793 if(node_3_7->measresult){
2794 node_3_9 = node_3_8->cellresults;
2795 if(node_3_8->cellresults){
2796 node_3_10 = node_3_9->resultsssb_cell;
2797 if(node_3_9->resultsssb_cell){
2798 if(node_3_10->rsrq){
2799 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_3_10->rsrq->value;
2801 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128;
2803 if(node_3_10->rsrp){
2804 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value;
2806 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128;
2808 if(node_3_10->sinr){
2809 sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value;
2811 sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128;
2813 rts_fta_process_packet(&cur_packet);
2824 // --------------------------------------------------
2825 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2827 sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values);
2828 cur_packet.schema = 404;
2829 node_4_0 = node_3_0;
2830 ts_lo = hdr->header->timestamp & 0xffffffff;
2831 ts_hi = hdr->header->timestamp >> 32;
2832 sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2833 if(hdr->header->gnbid==NULL)
2834 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string;
2836 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2838 node_4_1 = node_4_0->protocolies;
2839 if(node_4_0->protocolies){
2840 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
2841 if(node_4_1->id_menb_ue_x2ap_id_extension){
2842 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value;
2844 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2846 node_4_2 = node_4_1->id_menbtosgnbcontainer;
2847 if(node_4_1->id_menbtosgnbcontainer){
2848 node_4_3 = node_4_2->criticalextensionschoice1;
2849 if(node_4_2->criticalextensionschoice1){
2850 node_4_4 = node_4_3->protocolies;
2851 if(node_4_3->protocolies){
2852 node_4_5 = node_4_4->candidatecellinfolistsn;
2853 if(node_4_4->candidatecellinfolistsn){
2854 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
2855 node_4_6 = node_4_5->items[i_4_6];
2856 node_4_7 = node_4_6->measresultservingcell;
2857 if(node_4_6->measresultservingcell){
2858 if(node_4_7->physcellid){
2859 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_4_7->physcellid->value;
2860 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1;
2862 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0;
2864 node_4_8 = node_4_7->measresult;
2865 if(node_4_7->measresult){
2866 node_4_9 = node_4_8->cellresults;
2867 if(node_4_8->cellresults){
2868 node_4_10 = node_4_9->resultscsi_rs_cell;
2869 if(node_4_9->resultscsi_rs_cell){
2870 if(node_4_10->rsrq){
2871 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_4_10->rsrq->value;
2873 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128;
2875 if(node_4_10->rsrp){
2876 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value;
2878 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128;
2880 if(node_4_10->sinr){
2881 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value;
2883 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128;
2885 rts_fta_process_packet(&cur_packet);
2896 // --------------------------------------------------
2897 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2899 sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values);
2900 cur_packet.schema = 405;
2901 node_5_0 = node_4_0;
2902 ts_lo = hdr->header->timestamp & 0xffffffff;
2903 ts_hi = hdr->header->timestamp >> 32;
2904 sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2905 if(hdr->header->gnbid==NULL)
2906 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string;
2908 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2910 node_5_1 = node_5_0->protocolies;
2911 if(node_5_0->protocolies){
2912 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
2913 if(node_5_1->id_menb_ue_x2ap_id_extension){
2914 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value;
2916 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2918 node_5_2 = node_5_1->id_menbtosgnbcontainer;
2919 if(node_5_1->id_menbtosgnbcontainer){
2920 node_5_3 = node_5_2->criticalextensionschoice1;
2921 if(node_5_2->criticalextensionschoice1){
2922 node_5_4 = node_5_3->protocolies;
2923 if(node_5_3->protocolies){
2924 node_5_5 = node_5_4->candidatecellinfolistmn;
2925 if(node_5_4->candidatecellinfolistmn){
2926 for(i_5_6=0;i_5_6<node_5_5->n_items; i_5_6++){
2927 node_5_6 = node_5_5->items[i_5_6];
2928 node_5_7 = node_5_6->measresultservingcell;
2929 if(node_5_6->measresultservingcell){
2930 if(node_5_7->physcellid){
2931 sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_5_7->physcellid->value;
2932 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1;
2934 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0;
2936 node_5_8 = node_5_7->measresult;
2937 if(node_5_7->measresult){
2938 node_5_9 = node_5_8->cellresults;
2939 if(node_5_8->cellresults){
2940 node_5_10 = node_5_9->resultsssb_cell;
2941 if(node_5_9->resultsssb_cell){
2942 if(node_5_10->rsrq){
2943 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_5_10->rsrq->value;
2945 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128;
2947 if(node_5_10->rsrp){
2948 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value;
2950 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128;
2952 if(node_5_10->sinr){
2953 sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value;
2955 sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128;
2957 rts_fta_process_packet(&cur_packet);
2968 // --------------------------------------------------
2969 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2971 sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values);
2972 cur_packet.schema = 406;
2973 node_6_0 = node_5_0;
2974 ts_lo = hdr->header->timestamp & 0xffffffff;
2975 ts_hi = hdr->header->timestamp >> 32;
2976 sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2977 if(hdr->header->gnbid==NULL)
2978 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string;
2980 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2982 node_6_1 = node_6_0->protocolies;
2983 if(node_6_0->protocolies){
2984 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id;
2985 if(node_6_1->id_menb_ue_x2ap_id_extension){
2986 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value;
2988 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2990 node_6_2 = node_6_1->id_menbtosgnbcontainer;
2991 if(node_6_1->id_menbtosgnbcontainer){
2992 node_6_3 = node_6_2->criticalextensionschoice1;
2993 if(node_6_2->criticalextensionschoice1){
2994 node_6_4 = node_6_3->protocolies;
2995 if(node_6_3->protocolies){
2996 node_6_5 = node_6_4->candidatecellinfolistmn;
2997 if(node_6_4->candidatecellinfolistmn){
2998 for(i_6_6=0;i_6_6<node_6_5->n_items; i_6_6++){
2999 node_6_6 = node_6_5->items[i_6_6];
3000 node_6_7 = node_6_6->measresultservingcell;
3001 if(node_6_6->measresultservingcell){
3002 if(node_6_7->physcellid){
3003 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_6_7->physcellid->value;
3004 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1;
3006 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0;
3008 node_6_8 = node_6_7->measresult;
3009 if(node_6_7->measresult){
3010 node_6_9 = node_6_8->cellresults;
3011 if(node_6_8->cellresults){
3012 node_6_10 = node_6_9->resultscsi_rs_cell;
3013 if(node_6_9->resultscsi_rs_cell){
3014 if(node_6_10->rsrq){
3015 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_6_10->rsrq->value;
3017 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128;
3019 if(node_6_10->rsrp){
3020 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value;
3022 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128;
3024 if(node_6_10->sinr){
3025 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value;
3027 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128;
3029 rts_fta_process_packet(&cur_packet);
3040 // --------------------------------------------------
3041 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3043 sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values);
3044 cur_packet.schema = 408;
3045 node_7_0 = node_6_0;
3046 ts_lo = hdr->header->timestamp & 0xffffffff;
3047 ts_hi = hdr->header->timestamp >> 32;
3048 sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3049 if(hdr->header->gnbid==NULL)
3050 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string;
3052 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
3054 node_7_1 = node_7_0->protocolies;
3055 if(node_7_0->protocolies){
3056 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id;
3057 if(node_7_1->id_menb_ue_x2ap_id_extension){
3058 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value;
3060 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
3062 node_7_2 = node_7_1->id_menbtosgnbcontainer;
3063 if(node_7_1->id_menbtosgnbcontainer){
3064 node_7_3 = node_7_2->criticalextensionschoice1;
3065 if(node_7_2->criticalextensionschoice1){
3066 node_7_4 = node_7_3->protocolies;
3067 if(node_7_3->protocolies){
3068 node_7_5 = node_7_4->candidatecellinfolistsn;
3069 if(node_7_4->candidatecellinfolistsn){
3070 for(i_7_6=0;i_7_6<node_7_5->n_items; i_7_6++){
3071 node_7_6 = node_7_5->items[i_7_6];
3072 node_7_7 = node_7_6->measresultneighcelllistnr;
3073 if(node_7_6->measresultneighcelllistnr){
3074 for(i_7_8=0;i_7_8<node_7_7->n_items; i_7_8++){
3075 node_7_8 = node_7_7->items[i_7_8];
3076 if(node_7_8->physcellid){
3077 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_7_8->physcellid->value;
3078 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1;
3080 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0;
3082 node_7_9 = node_7_8->measresult;
3083 if(node_7_8->measresult){
3084 node_7_10 = node_7_9->cellresults;
3085 if(node_7_9->cellresults){
3086 node_7_11 = node_7_10->resultsssb_cell;
3087 if(node_7_10->resultsssb_cell){
3088 if(node_7_11->rsrq){
3089 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_7_11->rsrq->value;
3091 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128;
3093 if(node_7_11->rsrp){
3094 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value;
3096 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128;
3098 if(node_7_11->sinr){
3099 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value;
3101 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128;
3103 rts_fta_process_packet(&cur_packet);
3115 // --------------------------------------------------
3116 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3118 sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values);
3119 cur_packet.schema = 409;
3120 node_8_0 = node_7_0;
3121 ts_lo = hdr->header->timestamp & 0xffffffff;
3122 ts_hi = hdr->header->timestamp >> 32;
3123 sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3124 if(hdr->header->gnbid==NULL)
3125 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string;
3127 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3129 node_8_1 = node_8_0->protocolies;
3130 if(node_8_0->protocolies){
3131 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id;
3132 if(node_8_1->id_menb_ue_x2ap_id_extension){
3133 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value;
3135 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3137 node_8_2 = node_8_1->id_menbtosgnbcontainer;
3138 if(node_8_1->id_menbtosgnbcontainer){
3139 node_8_3 = node_8_2->criticalextensionschoice1;
3140 if(node_8_2->criticalextensionschoice1){
3141 node_8_4 = node_8_3->protocolies;
3142 if(node_8_3->protocolies){
3143 node_8_5 = node_8_4->candidatecellinfolistsn;
3144 if(node_8_4->candidatecellinfolistsn){
3145 for(i_8_6=0;i_8_6<node_8_5->n_items; i_8_6++){
3146 node_8_6 = node_8_5->items[i_8_6];
3147 node_8_7 = node_8_6->measresultneighcelllistnr;
3148 if(node_8_6->measresultneighcelllistnr){
3149 for(i_8_8=0;i_8_8<node_8_7->n_items; i_8_8++){
3150 node_8_8 = node_8_7->items[i_8_8];
3151 if(node_8_8->physcellid){
3152 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_8_8->physcellid->value;
3153 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1;
3155 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0;
3157 node_8_9 = node_8_8->measresult;
3158 if(node_8_8->measresult){
3159 node_8_10 = node_8_9->cellresults;
3160 if(node_8_9->cellresults){
3161 node_8_11 = node_8_10->resultscsi_rs_cell;
3162 if(node_8_10->resultscsi_rs_cell){
3163 if(node_8_11->rsrq){
3164 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_8_11->rsrq->value;
3166 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128;
3168 if(node_8_11->rsrp){
3169 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value;
3171 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128;
3173 if(node_8_11->sinr){
3174 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value;
3176 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128;
3178 rts_fta_process_packet(&cur_packet);
3190 // --------------------------------------------------
3191 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3193 sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values);
3194 cur_packet.schema = 410;
3195 node_9_0 = node_8_0;
3196 ts_lo = hdr->header->timestamp & 0xffffffff;
3197 ts_hi = hdr->header->timestamp >> 32;
3198 sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3199 if(hdr->header->gnbid==NULL)
3200 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string;
3202 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
3204 node_9_1 = node_9_0->protocolies;
3205 if(node_9_0->protocolies){
3206 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id;
3207 if(node_9_1->id_menb_ue_x2ap_id_extension){
3208 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value;
3210 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
3212 node_9_2 = node_9_1->id_menbtosgnbcontainer;
3213 if(node_9_1->id_menbtosgnbcontainer){
3214 node_9_3 = node_9_2->criticalextensionschoice1;
3215 if(node_9_2->criticalextensionschoice1){
3216 node_9_4 = node_9_3->protocolies;
3217 if(node_9_3->protocolies){
3218 node_9_5 = node_9_4->candidatecellinfolistmn;
3219 if(node_9_4->candidatecellinfolistmn){
3220 for(i_9_6=0;i_9_6<node_9_5->n_items; i_9_6++){
3221 node_9_6 = node_9_5->items[i_9_6];
3222 node_9_7 = node_9_6->measresultneighcelllistnr;
3223 if(node_9_6->measresultneighcelllistnr){
3224 for(i_9_8=0;i_9_8<node_9_7->n_items; i_9_8++){
3225 node_9_8 = node_9_7->items[i_9_8];
3226 if(node_9_8->physcellid){
3227 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_9_8->physcellid->value;
3228 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1;
3230 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0;
3232 node_9_9 = node_9_8->measresult;
3233 if(node_9_8->measresult){
3234 node_9_10 = node_9_9->cellresults;
3235 if(node_9_9->cellresults){
3236 node_9_11 = node_9_10->resultsssb_cell;
3237 if(node_9_10->resultsssb_cell){
3238 if(node_9_11->rsrq){
3239 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_9_11->rsrq->value;
3241 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128;
3243 if(node_9_11->rsrp){
3244 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value;
3246 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128;
3248 if(node_9_11->sinr){
3249 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value;
3251 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128;
3253 rts_fta_process_packet(&cur_packet);
3265 // --------------------------------------------------
3266 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3268 sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values);
3269 cur_packet.schema = 411;
3270 node_10_0 = node_9_0;
3271 ts_lo = hdr->header->timestamp & 0xffffffff;
3272 ts_hi = hdr->header->timestamp >> 32;
3273 sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3274 if(hdr->header->gnbid==NULL)
3275 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string;
3277 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3279 node_10_1 = node_10_0->protocolies;
3280 if(node_10_0->protocolies){
3281 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_10_1->id_menb_ue_x2ap_id;
3282 if(node_10_1->id_menb_ue_x2ap_id_extension){
3283 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_10_1->id_menb_ue_x2ap_id_extension->value;
3285 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3287 node_10_2 = node_10_1->id_menbtosgnbcontainer;
3288 if(node_10_1->id_menbtosgnbcontainer){
3289 node_10_3 = node_10_2->criticalextensionschoice1;
3290 if(node_10_2->criticalextensionschoice1){
3291 node_10_4 = node_10_3->protocolies;
3292 if(node_10_3->protocolies){
3293 node_10_5 = node_10_4->candidatecellinfolistmn;
3294 if(node_10_4->candidatecellinfolistmn){
3295 for(i_10_6=0;i_10_6<node_10_5->n_items; i_10_6++){
3296 node_10_6 = node_10_5->items[i_10_6];
3297 node_10_7 = node_10_6->measresultneighcelllistnr;
3298 if(node_10_6->measresultneighcelllistnr){
3299 for(i_10_8=0;i_10_8<node_10_7->n_items; i_10_8++){
3300 node_10_8 = node_10_7->items[i_10_8];
3301 if(node_10_8->physcellid){
3302 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_10_8->physcellid->value;
3303 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1;
3305 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0;
3307 node_10_9 = node_10_8->measresult;
3308 if(node_10_8->measresult){
3309 node_10_10 = node_10_9->cellresults;
3310 if(node_10_9->cellresults){
3311 node_10_11 = node_10_10->resultscsi_rs_cell;
3312 if(node_10_10->resultscsi_rs_cell){
3313 if(node_10_11->rsrq){
3314 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_10_11->rsrq->value;
3316 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128;
3318 if(node_10_11->rsrp){
3319 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value;
3321 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128;
3323 if(node_10_11->sinr){
3324 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value;
3326 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128;
3328 rts_fta_process_packet(&cur_packet);
3340 streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL);
3344 gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
3345 char *empty_string = "";
3346 unsigned long long int ts_lo, ts_hi;
3347 StreamingProtobufs__X2APStreaming *hdr = NULL;
3348 // ------------------------------------------
3349 // --- Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3350 struct _sgnb_mod_conf *sgnb_mod_conf = NULL;
3351 StreamingProtobufs__SgNBModificationConfirm *node_0_0 = NULL;
3352 StreamingProtobufs__SgNBModificationConfirmIEs *node_0_1 = NULL;
3354 // --------------------------------------------------
3355 // --- Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3357 sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values);
3358 cur_packet.schema = 1301;
3360 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3361 if(hdr==NULL) return -1;
3363 node_0_0 = hdr->sgnbmodificationconfirm;
3364 if(node_0_0==NULL) return -2;
3365 if(hdr->header==NULL) return -3;
3367 ts_lo = hdr->header->timestamp & 0xffffffff;
3368 ts_hi = hdr->header->timestamp >> 32;
3369 sgnb_mod_conf->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3370 if(hdr->header->gnbid==NULL)
3371 sgnb_mod_conf->gnb_id = empty_string;
3373 sgnb_mod_conf->gnb_id = hdr->header->gnbid->value;
3375 node_0_1 = node_0_0->protocolies;
3376 if(node_0_0->protocolies){
3377 sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3378 sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3379 rts_fta_process_packet(&cur_packet);
3381 streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL);
3385 gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
3386 char *empty_string = "";
3387 unsigned long long int ts_lo, ts_hi;
3388 StreamingProtobufs__X2APStreaming *hdr = NULL;
3389 // ------------------------------------------
3390 // --- Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3391 struct _sgnb_mod_req *sgnb_mod_req = NULL;
3392 StreamingProtobufs__SgNBModificationRequest *node_0_0 = NULL;
3393 StreamingProtobufs__SgNBModificationRequestIEs *node_0_1 = NULL;
3395 // --------------------------------------------------
3396 // --- Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3398 sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values);
3399 cur_packet.schema = 1201;
3401 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3402 if(hdr==NULL) return -1;
3404 node_0_0 = hdr->sgnbmodificationrequest;
3405 if(node_0_0==NULL) return -2;
3406 if(hdr->header==NULL) return -3;
3408 ts_lo = hdr->header->timestamp & 0xffffffff;
3409 ts_hi = hdr->header->timestamp >> 32;
3410 sgnb_mod_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3411 if(hdr->header->gnbid==NULL)
3412 sgnb_mod_req->gnb_id = empty_string;
3414 sgnb_mod_req->gnb_id = hdr->header->gnbid->value;
3416 node_0_1 = node_0_0->protocolies;
3417 if(node_0_0->protocolies){
3418 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3419 sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value;
3421 sgnb_mod_req->cause_protocol = -1;
3423 sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3424 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3425 sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value;
3427 sgnb_mod_req->cause_transport = -1;
3429 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){
3430 sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype;
3432 sgnb_mod_req->failureType = -1;
3434 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3435 sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3437 sgnb_mod_req->cause_radio_network = -1;
3439 sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3440 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3441 sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value;
3443 sgnb_mod_req->cause_misc = -1;
3445 rts_fta_process_packet(&cur_packet);
3447 streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL);
3451 gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
3452 char *empty_string = "";
3453 unsigned long long int ts_lo, ts_hi;
3454 StreamingProtobufs__X2APStreaming *hdr = NULL;
3455 // ------------------------------------------
3456 // --- Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3457 struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL;
3458 StreamingProtobufs__SgNBModificationRequestAcknowledge *node_0_0 = NULL;
3459 StreamingProtobufs__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL;
3461 // --------------------------------------------------
3462 // --- Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3464 sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values);
3465 cur_packet.schema = 1701;
3467 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3468 if(hdr==NULL) return -1;
3470 node_0_0 = hdr->sgnbmodificationrequestacknowledge;
3471 if(node_0_0==NULL) return -2;
3472 if(hdr->header==NULL) return -3;
3474 ts_lo = hdr->header->timestamp & 0xffffffff;
3475 ts_hi = hdr->header->timestamp >> 32;
3476 sgnb_mod_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3477 if(hdr->header->gnbid==NULL)
3478 sgnb_mod_req_ack->gnb_id = empty_string;
3480 sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value;
3482 node_0_1 = node_0_0->protocolies;
3483 if(node_0_0->protocolies){
3484 sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3485 sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3486 rts_fta_process_packet(&cur_packet);
3488 streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL);
3492 gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
3493 char *empty_string = "";
3494 unsigned long long int ts_lo, ts_hi;
3495 StreamingProtobufs__X2APStreaming *hdr = NULL;
3496 // ------------------------------------------
3497 // --- Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3498 struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL;
3499 StreamingProtobufs__SgNBModificationRequestReject *node_0_0 = NULL;
3500 StreamingProtobufs__SgNBModificationRequestRejectIEs *node_0_1 = NULL;
3502 // --------------------------------------------------
3503 // --- Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3505 sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values);
3506 cur_packet.schema = 1801;
3508 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3509 if(hdr==NULL) return -1;
3511 node_0_0 = hdr->sgnbmodificationrequestreject;
3512 if(node_0_0==NULL) return -2;
3513 if(hdr->header==NULL) return -3;
3515 ts_lo = hdr->header->timestamp & 0xffffffff;
3516 ts_hi = hdr->header->timestamp >> 32;
3517 sgnb_mod_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3518 if(hdr->header->gnbid==NULL)
3519 sgnb_mod_req_reject->gnb_id = empty_string;
3521 sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value;
3523 node_0_1 = node_0_0->protocolies;
3524 if(node_0_0->protocolies){
3525 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3526 sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value;
3528 sgnb_mod_req_reject->cause_protocol = -1;
3530 sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3531 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3532 sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value;
3534 sgnb_mod_req_reject->cause_transport = -1;
3536 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3537 sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3539 sgnb_mod_req_reject->cause_radio_network = -1;
3541 sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3542 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3543 sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value;
3545 sgnb_mod_req_reject->cause_misc = -1;
3547 rts_fta_process_packet(&cur_packet);
3549 streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL);
3553 gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){
3554 char *empty_string = "";
3555 unsigned long long int ts_lo, ts_hi;
3556 StreamingProtobufs__X2APStreaming *hdr = NULL;
3557 // ------------------------------------------
3558 // --- Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3559 struct _sgnb_mod_required *sgnb_mod_required = NULL;
3560 StreamingProtobufs__SgNBModificationRequired *node_0_0 = NULL;
3561 StreamingProtobufs__SgNBModificationRequiredIEs *node_0_1 = NULL;
3563 // --------------------------------------------------
3564 // --- Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3566 sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values);
3567 cur_packet.schema = 1901;
3569 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3570 if(hdr==NULL) return -1;
3572 node_0_0 = hdr->sgnbmodificationrequired;
3573 if(node_0_0==NULL) return -2;
3574 if(hdr->header==NULL) return -3;
3576 ts_lo = hdr->header->timestamp & 0xffffffff;
3577 ts_hi = hdr->header->timestamp >> 32;
3578 sgnb_mod_required->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3579 if(hdr->header->gnbid==NULL)
3580 sgnb_mod_required->gnb_id = empty_string;
3582 sgnb_mod_required->gnb_id = hdr->header->gnbid->value;
3584 node_0_1 = node_0_0->protocolies;
3585 if(node_0_0->protocolies){
3586 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3587 sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value;
3589 sgnb_mod_required->cause_protocol = -1;
3591 sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3592 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3593 sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value;
3595 sgnb_mod_required->cause_transport = -1;
3597 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3598 sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3600 sgnb_mod_required->cause_radio_network = -1;
3602 sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3603 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3604 sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value;
3606 sgnb_mod_required->cause_misc = -1;
3608 rts_fta_process_packet(&cur_packet);
3610 streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL);
3614 gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){
3615 char *empty_string = "";
3616 unsigned long long int ts_lo, ts_hi;
3617 StreamingProtobufs__X2APStreaming *hdr = NULL;
3618 // ------------------------------------------
3619 // --- Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3620 struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL;
3621 StreamingProtobufs__SgNBModificationRefuse *node_0_0 = NULL;
3622 StreamingProtobufs__SgNBModificationRefuseIEs *node_0_1 = NULL;
3623 StreamingProtobufs__Cause *node_0_2 = NULL;
3625 // --------------------------------------------------
3626 // --- Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3628 sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values);
3629 cur_packet.schema = 1401;
3631 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3632 if(hdr==NULL) return -1;
3634 node_0_0 = hdr->sgnbmodificationrefuse;
3635 if(node_0_0==NULL) return -2;
3636 if(hdr->header==NULL) return -3;
3638 ts_lo = hdr->header->timestamp & 0xffffffff;
3639 ts_hi = hdr->header->timestamp >> 32;
3640 sgnb_mod_refuse->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3641 if(hdr->header->gnbid==NULL)
3642 sgnb_mod_refuse->gnb_id = empty_string;
3644 sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value;
3646 node_0_1 = node_0_0->protocolies;
3647 if(node_0_0->protocolies){
3648 sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3649 sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3650 node_0_2 = node_0_1->id_cause;
3651 if(node_0_1->id_cause){
3652 if(node_0_2->radionetwork){
3653 sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value;
3655 sgnb_mod_refuse->cause_radio_network = -1;
3657 if(node_0_2->transport){
3658 sgnb_mod_refuse->cause_transport = node_0_2->transport->value;
3660 sgnb_mod_refuse->cause_transport = -1;
3662 if(node_0_2->protocol){
3663 sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value;
3665 sgnb_mod_refuse->cause_protocol = -1;
3668 sgnb_mod_refuse->cause_misc = node_0_2->misc->value;
3670 sgnb_mod_refuse->cause_misc = -1;
3672 rts_fta_process_packet(&cur_packet);
3675 streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL);
3679 gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
3680 char *empty_string = "";
3681 unsigned long long int ts_lo, ts_hi;
3682 StreamingProtobufs__X2APStreaming *hdr = NULL;
3683 // ------------------------------------------
3684 // --- Variables for .proto sn_status_transfer.json, path snstatusxfer.json
3685 struct _sn_status_transfer *sn_status_transfer = NULL;
3686 StreamingProtobufs__SNStatusTransfer *node_0_0 = NULL;
3687 StreamingProtobufs__SNStatusTransferIEs *node_0_1 = NULL;
3688 StreamingProtobufs__ERABsSubjectToStatusTransferList *node_0_2 = NULL;
3689 StreamingProtobufs__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL;
3691 StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL;
3692 StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL;
3694 StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL;
3696 // --------------------------------------------------
3697 // --- Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json
3699 sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values);
3700 cur_packet.schema = 1601;
3702 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3703 if(hdr==NULL) return -1;
3705 node_0_0 = hdr->snstatustransfer;
3706 if(node_0_0==NULL) return -2;
3707 if(hdr->header==NULL) return -3;
3709 ts_lo = hdr->header->timestamp & 0xffffffff;
3710 ts_hi = hdr->header->timestamp >> 32;
3711 sn_status_transfer->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3712 if(hdr->header->gnbid==NULL)
3713 sn_status_transfer->gnb_id = empty_string;
3715 sn_status_transfer->gnb_id = hdr->header->gnbid->value;
3717 node_0_1 = node_0_0->protocolies;
3718 if(node_0_0->protocolies){
3719 sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id;
3720 if(node_0_1->id_sgnb_ue_x2ap_id){
3721 sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
3723 sn_status_transfer->id_SgNB_UE_X2AP_ID = 0;
3725 node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list;
3726 if(node_0_1->id_e_rabs_subjecttostatustransfer_list){
3727 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
3728 node_0_3 = node_0_2->items[i_0_3];
3729 node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item;
3730 if(node_0_3->id_e_rabs_subjecttostatustransfer_item){
3731 sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id;
3732 for(i_0_5=0;i_0_5<node_0_4->n_ie_extensions; i_0_5++){
3733 node_0_5 = node_0_4->ie_extensions[i_0_5];
3734 node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18;
3735 if(node_0_5->id_dlcountvaluepdcp_snlength18){
3736 sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18;
3737 rts_fta_process_packet(&cur_packet);
3744 streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL);
3749 int init_cur_packet(){
3750 cur_packet.ptype=PTYPE_STRUCT;
3751 cur_packet.record.packed.values = (void *)(malloc(10000));
3753 if(cur_packet.record.packed.values==NULL){
3754 print_error("could not malloc a data block for cur_packet in init_cur_packet.");
3759 //---------------- END Specialized proto parsing -----------
3761 static void dproto_replay_check_messages() {
3762 if (fta_start_service(0)<0) {
3763 print_error("Error:in processing the msg queue for a replay file");
3768 // Read length bytes from the current socket into buffer.
3769 static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){
3774 struct timeval socket_timeout;
3777 FD_ZERO(&socket_rset);
3778 FD_SET(socket_desc,&socket_rset);
3779 FD_ZERO(&socket_eset);
3780 FD_SET(socket_desc,&socket_eset);
3781 // timeout in one millisecon
3782 socket_timeout.tv_sec=0;
3783 socket_timeout.tv_usec=1000;
3785 if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) {
3793 while(used < length) {
3794 if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) {
3795 print_error("ERROR:could not read data from PROTO stream");
3803 // query gshub and use that info to open a socket
3804 static void init_socket() {
3807 struct sockaddr_in server;
3809 if (get_hub(&gshub)!=0) {
3810 print_error("ERROR:could not find gshub for data source");
3814 if (get_streamsource(gshub,name,&srcinfo,1) !=0) {
3815 print_error("ERROR:could not find data source for stream\n");
3819 socket_desc = socket(AF_INET , SOCK_STREAM , 0);
3820 if (socket_desc == -1)
3822 print_error("ERROR:could not create socket for data stream");
3825 server.sin_addr.s_addr = srcinfo.ip;
3826 server.sin_family = AF_INET;
3827 server.sin_port = srcinfo.port;
3829 if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
3831 print_error("ERROR: could not open connection to data source");
3837 int read_fifo(struct pollfd* pfd, char* buffer, size_t len, time_t timeout) {
3838 int i, bytes_read = 0;
3839 while (bytes_read < len) {
3840 if (poll(pfd, 1, timeout)) {
3841 if (pfd->revents & POLLIN) {
3842 while ((i = read(pfd->fd,buffer+bytes_read,len-bytes_read))==-1 && errno==EINTR);
3844 break; // writer closed fifo or error
3849 break; // writer closed fifo
3852 return -1; // timeout
3857 // proceed to the next file
3858 static void next_file() {
3859 int open_flag = O_RDONLY;
3861 open_flag |= O_NONBLOCK;
3865 fprintf(stderr,"Opening %s\n",name);
3867 while (lstat(name,&s)!=0) {
3868 if (errno!=ENOENT) {
3869 print_error("dproto::lstat unexpected return value");
3872 dproto_replay_check_messages();
3878 if ((fd=open(name,open_flag)) <= 0) {
3879 print_error("dproto::open failed ");
3882 // setup polling for this file descriptor
3884 pfd.events = POLLIN;
3886 if (singlefile==0) {
3891 // Perform initialization when reading from a file
3892 static gs_retval_t dproto_replay_init(gs_sp_t device) {
3897 gs_sp_t singlefiletmp;
3900 if ((name=get_iface_properties(device,"filename"))==0) {
3901 print_error("dproto_init::No protobuf \"Filename\" defined");
3905 if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) {
3906 if (strncmp(verbosetmp,"TRUE",4)==0) {
3908 fprintf(stderr,"VERBOSE ENABLED\n");
3910 fprintf(stderr,"VERBOSE DISABLED\n");
3913 if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) {
3914 if (strncmp(singlefiletmp,"TRUE",4)==0) {
3917 fprintf(stderr,"SINGLEFILE ENABLED\n");
3920 fprintf(stderr,"SINGLEFILE DISABLED\n");
3923 if ((fifotmp=get_iface_properties(device,"fifo"))!=0) {
3924 if (strncmp(fifotmp,"TRUE",4)==0) {
3927 fprintf(stderr,"FIFO ENABLED\n");
3930 fprintf(stderr,"FIFO DISABLED\n");
3934 if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) {
3936 fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay")));
3938 startupdelay=atoi(get_iface_properties(device,"startupdelay"));
3940 if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) {
3942 fprintf(stderr,"PROTO format using gshub\n");
3951 // Read one message from a socket
3952 static gs_retval_t dproto_read_socket()
3957 gs_uint32_t pkg_len;
3964 if((ret=gs_read_buffer(line,28))<0) { return ret;}
3966 pkg_len = atoi(pkg_len_s);
3968 if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;}
3970 cur_packet.systemTime=time(0);
3971 ret = process_buffer(line, pkg_len);
3973 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3979 // read one message from a file
3980 static gs_retval_t dproto_read_tuple(){
3981 gs_uint32_t retlen=0;
3983 gs_uint32_t pkg_len=0;
3989 if (fd==-1) next_file();
3991 retlen = read_fifo(&pfd, line, 28, 10); // use 10ms timeout
3995 }else if(retlen==-1) {
3996 return -1; // -1 indicates a timeout
3997 }else if(retlen == 28) {
3999 timestamp_s = line+12;
4000 pkg_len = atoi(pkg_len_s);
4002 if(pkg_len >= MAXLINE){
4003 // TODO be more graceful here, but a large pkg_len likely indicates
4005 print_error("Error in dproto_read_tuple, message too long.");
4006 fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE);
4010 // once we received header we will wait for the main message indefinetly
4011 retlen = read_fifo(&pfd, line, pkg_len, -1);
4013 print_error("Error in dproto_read_tuple, line too short.");
4014 fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
4019 cur_packet.systemTime=time(0);
4020 ret = process_buffer(line, pkg_len);
4022 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
4027 if (singlefile==1) {
4029 fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
4032 fprintf(stderr,"RTS SAYS BYe\n");
4043 // Main loop for processing records from a file or socket
4044 static gs_retval_t dproto_process_file(){
4046 static unsigned totalcnt=0;
4049 for(cnt=0;cnt<50000;cnt++) {
4051 retval=dproto_read_socket();
4053 retval=dproto_read_tuple();
4055 if (retval==-1) return 0; // got a timeout so service message queue
4057 // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
4059 fprintf(stderr,"Done processing waiting for things to shut down\n");
4061 // now just service message queue until we get killed or loose connectivity
4063 fta_start_service(0); // service all waiting messages
4064 usleep(1000); // sleep a millisecond
4068 totalcnt=totalcnt+cnt;
4070 fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
4075 // Entry for processing this interface
4076 gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt, gs_sp_t map[]) {
4080 dproto_replay_init(device); // will call init_cur_packet
4081 this_device = strdup(device); // save for error messages.
4083 /* initalize host_lib */
4085 fprintf(stderr,"Init LFTAs for %s\n",device);
4088 if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
4089 fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
4093 //--------------------------------------------
4094 //---- Generated dispatch code
4095 if(strcmp(device,"CONRELEASE")==0){
4096 process_buffer = &process_buffer_CONRELEASE;
4098 if(strcmp(device,"LTE_PCMD")==0){
4099 process_buffer = &process_buffer_LTE_PCMD;
4101 if(strcmp(device,"RATDATAUSAGE")==0){
4102 process_buffer = &process_buffer_RATDATAUSAGE;
4104 if(strcmp(device,"RECONCOMPLETE")==0){
4105 process_buffer = &process_buffer_RECONCOMPLETE;
4107 if(strcmp(device,"RELCONF")==0){
4108 process_buffer = &process_buffer_RELCONF;
4110 if(strcmp(device,"RELREQ")==0){
4111 process_buffer = &process_buffer_RELREQ;
4113 if(strcmp(device,"RELREQACK")==0){
4114 process_buffer = &process_buffer_RELREQACK;
4116 if(strcmp(device,"SGNBRELEASERQD")==0){
4117 process_buffer = &process_buffer_SGNBRELEASERQD;
4119 if(strcmp(device,"RRCXFER")==0){
4120 process_buffer = &process_buffer_RRCXFER;
4122 if(strcmp(device,"ADDREQREJECT")==0){
4123 process_buffer = &process_buffer_ADDREQREJECT;
4125 if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
4126 process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
4128 if(strcmp(device,"SGNB_ADDITION_REQ")==0){
4129 process_buffer = &process_buffer_SGNB_ADDITION_REQ;
4131 if(strcmp(device,"SGNBMODCONF")==0){
4132 process_buffer = &process_buffer_SGNBMODCONF;
4134 if(strcmp(device,"SGNBMODREQ")==0){
4135 process_buffer = &process_buffer_SGNBMODREQ;
4137 if(strcmp(device,"SGNBMODREQACK")==0){
4138 process_buffer = &process_buffer_SGNBMODREQACK;
4140 if(strcmp(device,"SGNBMODREQREJECT")==0){
4141 process_buffer = &process_buffer_SGNBMODREQREJECT;
4143 if(strcmp(device,"SGNBMODREQUIRED")==0){
4144 process_buffer = &process_buffer_SGNBMODREQUIRED;
4146 if(strcmp(device,"SGNBMODREFUSE")==0){
4147 process_buffer = &process_buffer_SGNBMODREFUSE;
4149 if(strcmp(device,"SNSTATUSXFER")==0){
4150 process_buffer = &process_buffer_SNSTATUSXFER;
4152 if(process_buffer == NULL){
4153 fprintf(stderr,"Error, interface %s not recognized\n",device);
4156 //--------------------------------------------
4159 fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
4161 cont=startupdelay+time(0);
4163 if (verbose) { fprintf(stderr,"Start startup delay"); }
4165 while (cont>time(NULL)) {
4166 if (fta_start_service(0)<0) {
4167 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
4170 usleep(1000); /* sleep for one millisecond */
4173 if (verbose) { fprintf(stderr,"... Done\n"); }
4175 // open the connection to the data source
4176 if (gshub!=0) { init_socket();}
4178 // wait to process till we get the signal from GSHUB
4179 if (get_hub(&mygshub)!=0) {
4180 print_error("ERROR:could not find gshub for data source");
4183 while(get_startprocessing(mygshub,get_instance_name(),0)!=0) {
4185 if (fta_start_service(0)<0) {
4186 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
4191 /* now we enter an endless loop to process data */
4193 fprintf(stderr,"Start processing %s\n",device);
4197 if (dproto_process_file()<0) {
4198 fprintf(stderr,"%s::error:in processing packets\n", device);
4201 /* process all messages on the message queue*/
4202 if (fta_start_service(0)<0) {
4203 fprintf(stderr,"%s::error:in processing the msg queue\n", device);