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 "secondary_rat_data_usage_report.pb-c.h"
74 #include "lfta/local/rat_data_usage.h"
75 #include "sgnb_reconfiguration_complete.pb-c.h"
76 #include "lfta/local/reconfig_all.h"
77 #include "lfta/local/reconfig_success.h"
78 #include "lfta/local/reconfig_reject.h"
79 #include "sgnb_release_confirm.pb-c.h"
80 #include "lfta/local/sgnb_release_confirm_from_menb_erabs.h"
81 #include "lfta/local/sgnb_release_confirm_from_menb.h"
82 #include "sgnb_release_request.pb-c.h"
83 #include "lfta/local/release_req.h"
84 #include "sgnb_release_request_acknowledge.pb-c.h"
85 #include "lfta/local/release_req_ack.h"
86 #include "sgnb_release_required.pb-c.h"
87 #include "lfta/local/SgNB_release_rqd.h"
88 #include "rrctransfer.pb-c.h"
89 #include "lfta/local/serv_nr_cell.h"
90 #include "lfta/local/nr_neighbor.h"
91 #include "lfta/local/serv_cell_beam_csi.h"
92 #include "lfta/local/neighbor_beam_csi.h"
93 #include "lfta/local/serv_cell_beam_ssb.h"
94 #include "lfta/local/neighbor_beam_ssb.h"
95 #include "sgnb_addition_request_reject.pb-c.h"
96 #include "lfta/local/sgnb_add_req_reject.h"
97 #include "sgnb_addition_request_acknowledge.pb-c.h"
98 #include "lfta/local/eRABs_notadmitted_for_ue.h"
99 #include "lfta/local/add_req_ack_cellid.h"
100 #include "lfta/local/eRABs_acked_for_admit_for_ue.h"
101 #include "lfta/local/SgNB_ack_for_ue_NRfreqs.h"
102 #include "lfta/local/SgNB_ack_for_add_mod_for_ue.h"
103 #include "lfta/local/SgNB_ack_for_ue_measurements.h"
104 #include "lfta/local/SgNB_ack_for_ue_beam_csi.h"
105 #include "lfta/local/SgNB_ack_for_ue_beam_ssb.h"
106 #include "sgnb_addition_request.pb-c.h"
107 #include "lfta/local/sgnb_addreq_gtp_teid.h"
108 #include "lfta/local/sgnb_addreq_for_ue.h"
109 #include "lfta/local/sgnb_addreq_for_ue_bearers.h"
110 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_ssb.h"
111 #include "lfta/local/sgnb_addreq_for_ue_sn_serv_csi_rs.h"
112 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_ssb.h"
113 #include "lfta/local/sgnb_addreq_for_ue_mn_serv_csi_rs.h"
114 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_ssb.h"
115 #include "lfta/local/sgnb_addreq_for_ue_sn_neigh_csi_rs.h"
116 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_ssb.h"
117 #include "lfta/local/sgnb_addreq_for_ue_mn_neigh_csi_rs.h"
118 #include "sgnb_modification_confirm.pb-c.h"
119 #include "lfta/local/sgnb_mod_conf.h"
120 #include "sgnb_modification_request.pb-c.h"
121 #include "lfta/local/sgnb_mod_req.h"
122 #include "sgnb_modification_request_acknowledge.pb-c.h"
123 #include "lfta/local/sgnb_mod_req_ack.h"
124 #include "sgnb_modification_request_reject.pb-c.h"
125 #include "lfta/local/sgnb_mod_req_reject.h"
126 #include "sgnb_modification_required.pb-c.h"
127 #include "lfta/local/sgnb_mod_required.h"
128 #include "sgnb_modification_refuse.pb-c.h"
129 #include "lfta/local/sgnb_mod_refuse.h"
130 #include "sn_status_transfer.pb-c.h"
131 #include "lfta/local/sn_status_transfer.h"
132 gs_uint32_t process_buffer_CONRELEASE(gs_uint8_t * buffer, gs_uint32_t buflen){
133 char *empty_string = "";
134 unsigned long long int ts_lo, ts_hi;
135 StreamingProtobufs__X2APStreaming *hdr = NULL;
136 // ------------------------------------------
137 // --- Variables for .proto ue_context_release.json, path context_release.json
138 struct _dc_release *dc_release = NULL;
139 StreamingProtobufs__UEContextRelease *node_0_0 = NULL;
141 // --------------------------------------------------
142 // --- Specialized processing for .proto ue_context_release.json, path context_release.json
144 dc_release = (struct _dc_release *)(cur_packet.record.packed.values);
145 cur_packet.schema = 201;
147 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
148 if(hdr==NULL) return -1;
150 node_0_0 = hdr->uecontextrelease;
151 if(node_0_0==NULL) return -2;
152 if(hdr->header==NULL) return -3;
154 ts_lo = hdr->header->timestamp & 0xffffffff;
155 ts_hi = hdr->header->timestamp >> 32;
156 dc_release->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
157 if(hdr->header->gnbid==NULL)
158 dc_release->gnb_id = empty_string;
160 dc_release->gnb_id = hdr->header->gnbid->value;
162 if(node_0_0->id_old_enb_ue_x2ap_id_extension){
163 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = node_0_0->id_old_enb_ue_x2ap_id_extension->value;
165 dc_release->id_Old_eNB_UE_X2AP_ID_Extension = 0;
167 dc_release->id_New_eNB_UE_X2AP_ID = node_0_0->id_new_enb_ue_x2ap_id;
168 if(node_0_0->id_sgnb_ue_x2ap_id){
169 dc_release->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
171 dc_release->id_SgNB_UE_X2AP_ID = 0;
173 if(node_0_0->id_new_enb_ue_x2ap_id_extension){
174 dc_release->id_New_eNB_UE_X2AP_ID_Extension = node_0_0->id_new_enb_ue_x2ap_id_extension->value;
176 dc_release->id_New_eNB_UE_X2AP_ID_Extension = 0;
178 dc_release->id_Old_eNB_UE_X2AP_ID = node_0_0->id_old_enb_ue_x2ap_id;
179 rts_fta_process_packet(&cur_packet);
180 streaming_protobufs__uecontext_release__free_unpacked(node_0_0,NULL);
184 gs_uint32_t process_buffer_RATDATAUSAGE(gs_uint8_t * buffer, gs_uint32_t buflen){
185 char *empty_string = "";
186 unsigned long long int ts_lo, ts_hi;
187 StreamingProtobufs__X2APStreaming *hdr = NULL;
188 // ------------------------------------------
189 // --- Variables for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
190 struct _rat_data_usage *rat_data_usage = NULL;
191 StreamingProtobufs__SecondaryRATDataUsageReport *node_0_0 = NULL;
192 StreamingProtobufs__SecondaryRATDataUsageReportIEs *node_0_1 = NULL;
193 StreamingProtobufs__SecondaryRATUsageReportList *node_0_2 = NULL;
194 StreamingProtobufs__SecondaryRATUsageReportItemIEs *node_0_3 = NULL;
196 StreamingProtobufs__SecondaryRATUsageReportItem *node_0_4 = NULL;
197 StreamingProtobufs__ERABUsageReportList *node_0_5 = NULL;
198 StreamingProtobufs__ERABUsageReportItemIEs *node_0_6 = NULL;
200 StreamingProtobufs__ERABUsageReportItem *node_0_7 = NULL;
202 // --------------------------------------------------
203 // --- Specialized processing for .proto secondary_rat_data_usage_report.json, path rat_data_usage.json
205 rat_data_usage = (struct _rat_data_usage *)(cur_packet.record.packed.values);
206 cur_packet.schema = 1501;
208 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
209 if(hdr==NULL) return -1;
211 node_0_0 = hdr->secondaryratdatausagereport;
212 if(node_0_0==NULL) return -2;
213 if(hdr->header==NULL) return -3;
215 ts_lo = hdr->header->timestamp & 0xffffffff;
216 ts_hi = hdr->header->timestamp >> 32;
217 rat_data_usage->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
218 if(hdr->header->gnbid==NULL)
219 rat_data_usage->gnb_id = empty_string;
221 rat_data_usage->gnb_id = hdr->header->gnbid->value;
223 node_0_1 = node_0_0->protocolies;
224 if(node_0_0->protocolies){
225 rat_data_usage->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
226 rat_data_usage->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
227 if(node_0_1->id_menb_ue_x2ap_id_extension){
228 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
230 rat_data_usage->id_MeNB_UE_X2AP_ID_Extension = 0;
232 node_0_2 = node_0_1->id_secondaryratusagereportlist;
233 if(node_0_1->id_secondaryratusagereportlist){
234 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
235 node_0_3 = node_0_2->items[i_0_3];
236 node_0_4 = node_0_3->id_secondaryratusagereport_item;
237 if(node_0_3->id_secondaryratusagereport_item){
238 rat_data_usage->e_RAB_ID = node_0_4->e_rab_id;
239 rat_data_usage->secondaryRATType = node_0_4->secondaryrattype;
240 node_0_5 = node_0_4->e_rabusagereportlist;
241 if(node_0_4->e_rabusagereportlist){
242 for(i_0_6=0;i_0_6<node_0_5->n_items; i_0_6++){
243 node_0_6 = node_0_5->items[i_0_6];
244 node_0_7 = node_0_6->id_e_rabusagereport_item;
245 if(node_0_6->id_e_rabusagereport_item){
246 rat_data_usage->startTimeStamp = node_0_7->starttimestamp;
247 rat_data_usage->endTimeStamp = node_0_7->endtimestamp;
248 rat_data_usage->usageCountDL = node_0_7->usagecountdl;
249 rts_fta_process_packet(&cur_packet);
257 streaming_protobufs__secondary_ratdata_usage_report__free_unpacked(node_0_0,NULL);
261 gs_uint32_t process_buffer_RECONCOMPLETE(gs_uint8_t * buffer, gs_uint32_t buflen){
262 char *empty_string = "";
263 unsigned long long int ts_lo, ts_hi;
264 StreamingProtobufs__X2APStreaming *hdr = NULL;
265 // ------------------------------------------
266 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
267 struct _reconfig_all *reconfig_all = NULL;
268 StreamingProtobufs__SgNBReconfigurationComplete *node_0_0 = NULL;
269 // ------------------------------------------
270 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
271 struct _reconfig_success *reconfig_success = NULL;
272 StreamingProtobufs__SgNBReconfigurationComplete *node_1_0 = NULL;
273 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_1_1 = NULL;
274 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_1_2 = NULL;
275 // ------------------------------------------
276 // --- Variables for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
277 struct _reconfig_reject *reconfig_reject = NULL;
278 StreamingProtobufs__SgNBReconfigurationComplete *node_2_0 = NULL;
279 StreamingProtobufs__ResponseInformationSgNBReconfComp *node_2_1 = NULL;
280 StreamingProtobufs__ResponseInformationSgNBReconfCompRejectByMeNBItem *node_2_2 = NULL;
282 // --------------------------------------------------
283 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
285 reconfig_all = (struct _reconfig_all *)(cur_packet.record.packed.values);
286 cur_packet.schema = 103;
288 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
289 if(hdr==NULL) return -1;
291 node_0_0 = hdr->sgnbreconfigurationcomplete;
292 if(node_0_0==NULL) return -2;
293 if(hdr->header==NULL) return -3;
295 ts_lo = hdr->header->timestamp & 0xffffffff;
296 ts_hi = hdr->header->timestamp >> 32;
297 reconfig_all->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
298 if(hdr->header->gnbid==NULL)
299 reconfig_all->gnb_id = empty_string;
301 reconfig_all->gnb_id = hdr->header->gnbid->value;
303 reconfig_all->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
304 reconfig_all->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
305 if(node_0_0->id_menb_ue_x2ap_id_extension){
306 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
308 reconfig_all->id_MeNB_UE_X2AP_ID_Extension = 0;
310 rts_fta_process_packet(&cur_packet);
311 // --------------------------------------------------
312 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
314 reconfig_success = (struct _reconfig_success *)(cur_packet.record.packed.values);
315 cur_packet.schema = 101;
317 ts_lo = hdr->header->timestamp & 0xffffffff;
318 ts_hi = hdr->header->timestamp >> 32;
319 reconfig_success->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
320 if(hdr->header->gnbid==NULL)
321 reconfig_success->gnb_id = empty_string;
323 reconfig_success->gnb_id = hdr->header->gnbid->value;
325 reconfig_success->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
326 reconfig_success->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
327 if(node_1_0->id_menb_ue_x2ap_id_extension){
328 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
330 reconfig_success->id_MeNB_UE_X2AP_ID_Extension = 0;
332 node_1_1 = node_1_0->id_responseinformationsgnbreconfcomp;
333 if(!(node_1_0->id_responseinformationsgnbreconfcomp)){
334 rts_fta_process_packet(&cur_packet);
336 node_1_2 = node_1_1->reject_by_menb_sgnbreconfcomp;
337 if(!(node_1_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP)){
338 rts_fta_process_packet(&cur_packet);
340 rts_fta_process_packet(&cur_packet);
343 // --------------------------------------------------
344 // --- Specialized processing for .proto sgnb_reconfiguration_complete.json, path recon_complete.json
346 reconfig_reject = (struct _reconfig_reject *)(cur_packet.record.packed.values);
347 cur_packet.schema = 102;
349 ts_lo = hdr->header->timestamp & 0xffffffff;
350 ts_hi = hdr->header->timestamp >> 32;
351 reconfig_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
352 if(hdr->header->gnbid==NULL)
353 reconfig_reject->gnb_id = empty_string;
355 reconfig_reject->gnb_id = hdr->header->gnbid->value;
357 reconfig_reject->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
358 reconfig_reject->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
359 if(node_2_0->id_menb_ue_x2ap_id_extension){
360 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
362 reconfig_reject->id_MeNB_UE_X2AP_ID_Extension = 0;
364 node_2_1 = node_2_0->id_responseinformationsgnbreconfcomp;
365 if(node_2_0->id_responseinformationsgnbreconfcomp){
366 node_2_2 = node_2_1->reject_by_menb_sgnbreconfcomp;
367 if(node_2_1->value_case == STREAMING_PROTOBUFS__RESPONSE_INFORMATION_SG_NBRECONF_COMP__VALUE_REJECT_BY__ME_NB__SG_NBRECONF_COMP){
368 if(node_2_2->cause && node_2_2->cause->radionetwork){
369 reconfig_reject->cause_radio_network = node_2_2->cause->radionetwork->value;
371 reconfig_reject->cause_radio_network = -1;
373 if(node_2_2->cause && node_2_2->cause->transport){
374 reconfig_reject->cause_transport = node_2_2->cause->transport->value;
376 reconfig_reject->cause_transport = -1;
378 if(node_2_2->cause && node_2_2->cause->protocol){
379 reconfig_reject->cause_protocol = node_2_2->cause->protocol->value;
381 reconfig_reject->cause_protocol = -1;
383 if(node_2_2->cause && node_2_2->cause->misc){
384 reconfig_reject->cause_misc = node_2_2->cause->misc->value;
386 reconfig_reject->cause_misc = -1;
388 rts_fta_process_packet(&cur_packet);
391 streaming_protobufs__sg_nbreconfiguration_complete__free_unpacked(node_0_0,NULL);
395 gs_uint32_t process_buffer_RELCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
396 char *empty_string = "";
397 unsigned long long int ts_lo, ts_hi;
398 StreamingProtobufs__X2APStreaming *hdr = NULL;
399 // ------------------------------------------
400 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
401 struct _sgnb_release_confirm_from_menb_erabs *sgnb_release_confirm_from_menb_erabs = NULL;
402 StreamingProtobufs__SgNBReleaseConfirm *node_0_0 = NULL;
403 StreamingProtobufs__SgNBReleaseConfirmIEs *node_0_1 = NULL;
404 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfList *node_0_2 = NULL;
405 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfItem *node_0_3 = NULL;
407 StreamingProtobufs__ERABsToBeReleasedSgNBRelConfSgNBPDCPpresent *node_0_4 = NULL;
408 StreamingProtobufs__GTPtunnelEndpoint *node_0_5 = NULL;
409 // ------------------------------------------
410 // --- Variables for .proto sgnb_release_confirm.json, path release_confirm.json
411 struct _sgnb_release_confirm_from_menb *sgnb_release_confirm_from_menb = NULL;
412 StreamingProtobufs__SgNBReleaseConfirm *node_1_0 = NULL;
413 StreamingProtobufs__SgNBReleaseConfirmIEs *node_1_1 = NULL;
415 // --------------------------------------------------
416 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
418 sgnb_release_confirm_from_menb_erabs = (struct _sgnb_release_confirm_from_menb_erabs *)(cur_packet.record.packed.values);
419 cur_packet.schema = 1101;
421 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
422 if(hdr==NULL) return -1;
424 node_0_0 = hdr->sgnbreleaseconfirm;
425 if(node_0_0==NULL) return -2;
426 if(hdr->header==NULL) return -3;
428 ts_lo = hdr->header->timestamp & 0xffffffff;
429 ts_hi = hdr->header->timestamp >> 32;
430 sgnb_release_confirm_from_menb_erabs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
431 if(hdr->header->gnbid==NULL)
432 sgnb_release_confirm_from_menb_erabs->gnb_id = empty_string;
434 sgnb_release_confirm_from_menb_erabs->gnb_id = hdr->header->gnbid->value;
436 node_0_1 = node_0_0->protocolies;
437 if(node_0_0->protocolies){
438 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
439 sgnb_release_confirm_from_menb_erabs->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
440 if(node_0_1->id_menb_ue_x2ap_id_extension){
441 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
443 sgnb_release_confirm_from_menb_erabs->id_MeNB_UE_X2AP_ID_Extension = 0;
445 node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelconflist;
446 if(node_0_1->id_e_rabs_tobereleased_sgnbrelconflist){
447 for(i_0_3=0;i_0_3<node_0_2->n_id_e_rabs_tobereleased_sgnbrelconf_item; i_0_3++){
448 node_0_3 = node_0_2->id_e_rabs_tobereleased_sgnbrelconf_item[i_0_3];
449 if(node_0_3->en_dc_resourceconfiguration){
450 sgnb_release_confirm_from_menb_erabs->sCGresources = node_0_3->en_dc_resourceconfiguration->scgresources;
452 sgnb_release_confirm_from_menb_erabs->sCGresources = -1;
454 sgnb_release_confirm_from_menb_erabs->e_RAB_ID = node_0_3->e_rab_id;
455 if(node_0_3->en_dc_resourceconfiguration){
456 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = node_0_3->en_dc_resourceconfiguration->pdcpatsgnb;
458 sgnb_release_confirm_from_menb_erabs->pDCPatSgNB = -1;
460 if(node_0_3->en_dc_resourceconfiguration){
461 sgnb_release_confirm_from_menb_erabs->mCGresources = node_0_3->en_dc_resourceconfiguration->mcgresources;
463 sgnb_release_confirm_from_menb_erabs->mCGresources = -1;
465 node_0_4 = node_0_3->sgnbpdcppresent;
466 if(node_0_3->sgnbpdcppresent){
467 node_0_5 = node_0_4->dl_gtptunnelendpoint;
468 if(node_0_4->dl_gtptunnelendpoint){
469 sgnb_release_confirm_from_menb_erabs->gTP_TEID = node_0_5->gtp_teid;
470 sgnb_release_confirm_from_menb_erabs->transportLayerAddress = node_0_5->transportlayeraddress;
471 rts_fta_process_packet(&cur_packet);
477 // --------------------------------------------------
478 // --- Specialized processing for .proto sgnb_release_confirm.json, path release_confirm.json
480 sgnb_release_confirm_from_menb = (struct _sgnb_release_confirm_from_menb *)(cur_packet.record.packed.values);
481 cur_packet.schema = 1102;
483 ts_lo = hdr->header->timestamp & 0xffffffff;
484 ts_hi = hdr->header->timestamp >> 32;
485 sgnb_release_confirm_from_menb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
486 if(hdr->header->gnbid==NULL)
487 sgnb_release_confirm_from_menb->gnb_id = empty_string;
489 sgnb_release_confirm_from_menb->gnb_id = hdr->header->gnbid->value;
491 node_1_1 = node_1_0->protocolies;
492 if(node_1_0->protocolies){
493 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
494 sgnb_release_confirm_from_menb->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
495 if(node_1_1->id_menb_ue_x2ap_id_extension){
496 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
498 sgnb_release_confirm_from_menb->id_MeNB_UE_X2AP_ID_Extension = 0;
500 rts_fta_process_packet(&cur_packet);
502 streaming_protobufs__sg_nbrelease_confirm__free_unpacked(node_0_0,NULL);
506 gs_uint32_t process_buffer_RELREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
507 char *empty_string = "";
508 unsigned long long int ts_lo, ts_hi;
509 StreamingProtobufs__X2APStreaming *hdr = NULL;
510 // ------------------------------------------
511 // --- Variables for .proto sgnb_release_request.json, path release_req.json
512 struct _release_req *release_req = NULL;
513 StreamingProtobufs__SgNBReleaseRequest *node_0_0 = NULL;
514 StreamingProtobufs__SgNBReleaseRequestIEs *node_0_1 = NULL;
516 // --------------------------------------------------
517 // --- Specialized processing for .proto sgnb_release_request.json, path release_req.json
519 release_req = (struct _release_req *)(cur_packet.record.packed.values);
520 cur_packet.schema = 801;
522 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
523 if(hdr==NULL) return -1;
525 node_0_0 = hdr->sgnbreleaserequest;
526 if(node_0_0==NULL) return -2;
527 if(hdr->header==NULL) return -3;
529 ts_lo = hdr->header->timestamp & 0xffffffff;
530 ts_hi = hdr->header->timestamp >> 32;
531 release_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
532 if(hdr->header->gnbid==NULL)
533 release_req->gnb_id = empty_string;
535 release_req->gnb_id = hdr->header->gnbid->value;
537 node_0_1 = node_0_0->protocolies;
538 if(node_0_0->protocolies){
539 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
540 release_req->cause_protocol = node_0_1->id_cause->protocol->value;
542 release_req->cause_protocol = -1;
544 release_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
545 if(node_0_1->id_cause && node_0_1->id_cause->transport){
546 release_req->cause_transport = node_0_1->id_cause->transport->value;
548 release_req->cause_transport = -1;
550 if(node_0_1->id_menb_ue_x2ap_id_extension){
551 release_req->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
553 release_req->id_MeNB_UE_X2AP_ID_Extension = 0;
555 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
556 release_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
558 release_req->cause_radio_network = -1;
560 if(node_0_1->id_sgnb_ue_x2ap_id){
561 release_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
563 release_req->id_SgNB_UE_X2AP_ID = 0;
565 if(node_0_1->id_cause && node_0_1->id_cause->misc){
566 release_req->cause_misc = node_0_1->id_cause->misc->value;
568 release_req->cause_misc = -1;
570 rts_fta_process_packet(&cur_packet);
572 streaming_protobufs__sg_nbrelease_request__free_unpacked(node_0_0,NULL);
576 gs_uint32_t process_buffer_RELREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
577 char *empty_string = "";
578 unsigned long long int ts_lo, ts_hi;
579 StreamingProtobufs__X2APStreaming *hdr = NULL;
580 // ------------------------------------------
581 // --- Variables for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
582 struct _release_req_ack *release_req_ack = NULL;
583 StreamingProtobufs__SgNBReleaseRequestAcknowledge *node_0_0 = NULL;
584 StreamingProtobufs__SgNBReleaseRequestAcknowledgeIEs *node_0_1 = NULL;
586 // --------------------------------------------------
587 // --- Specialized processing for .proto sgnb_release_request_acknowledge.json, path release_req_ack.json
589 release_req_ack = (struct _release_req_ack *)(cur_packet.record.packed.values);
590 cur_packet.schema = 901;
592 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
593 if(hdr==NULL) return -1;
595 node_0_0 = hdr->sgnbreleaserequestacknowledge;
596 if(node_0_0==NULL) return -2;
597 if(hdr->header==NULL) return -3;
599 ts_lo = hdr->header->timestamp & 0xffffffff;
600 ts_hi = hdr->header->timestamp >> 32;
601 release_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
602 if(hdr->header->gnbid==NULL)
603 release_req_ack->gnb_id = empty_string;
605 release_req_ack->gnb_id = hdr->header->gnbid->value;
607 node_0_1 = node_0_0->protocolies;
608 if(node_0_0->protocolies){
609 release_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
610 release_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
611 if(node_0_1->id_menb_ue_x2ap_id_extension){
612 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = node_0_1->id_menb_ue_x2ap_id_extension->value;
614 release_req_ack->id_MeNB_UE_X2AP_ID_Extension = 0;
616 rts_fta_process_packet(&cur_packet);
618 streaming_protobufs__sg_nbrelease_request_acknowledge__free_unpacked(node_0_0,NULL);
622 gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t buflen){
623 char *empty_string = "";
624 unsigned long long int ts_lo, ts_hi;
625 StreamingProtobufs__X2APStreaming *hdr = NULL;
626 // ------------------------------------------
627 // --- Variables for .proto sgnb_release_required.json, path release_rqd.json
628 struct _SgNB_release_rqd *SgNB_release_rqd = NULL;
629 StreamingProtobufs__SgNBReleaseRequired *node_0_0 = NULL;
630 StreamingProtobufs__SgNBReleaseRequiredIEs *node_0_1 = NULL;
632 // --------------------------------------------------
633 // --- Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
635 SgNB_release_rqd = (struct _SgNB_release_rqd *)(cur_packet.record.packed.values);
636 cur_packet.schema = 1001;
638 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
639 if(hdr==NULL) return -1;
641 node_0_0 = hdr->sgnbreleaserequired;
642 if(node_0_0==NULL) return -2;
643 if(hdr->header==NULL) return -3;
645 ts_lo = hdr->header->timestamp & 0xffffffff;
646 ts_hi = hdr->header->timestamp >> 32;
647 SgNB_release_rqd->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
648 if(hdr->header->gnbid==NULL)
649 SgNB_release_rqd->gnb_id = empty_string;
651 SgNB_release_rqd->gnb_id = hdr->header->gnbid->value;
653 node_0_1 = node_0_0->protocolies;
654 if(node_0_0->protocolies){
655 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
656 SgNB_release_rqd->cause_protocol = node_0_1->id_cause->protocol->value;
658 SgNB_release_rqd->cause_protocol = -1;
660 SgNB_release_rqd->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
661 if(node_0_1->id_cause && node_0_1->id_cause->transport){
662 SgNB_release_rqd->cause_transport = node_0_1->id_cause->transport->value;
664 SgNB_release_rqd->cause_transport = -1;
666 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){
667 SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
668 SgNB_release_rqd->e_RAB_ID0_exists = 1;
670 SgNB_release_rqd->e_RAB_ID0_exists = 0;
672 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){
673 SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
674 SgNB_release_rqd->e_RAB_ID1_exists = 1;
676 SgNB_release_rqd->e_RAB_ID1_exists = 0;
678 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){
679 SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
680 SgNB_release_rqd->e_RAB_ID2_exists = 1;
682 SgNB_release_rqd->e_RAB_ID2_exists = 0;
684 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){
685 SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
686 SgNB_release_rqd->e_RAB_ID3_exists = 1;
688 SgNB_release_rqd->e_RAB_ID3_exists = 0;
690 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){
691 SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
692 SgNB_release_rqd->e_RAB_ID4_exists = 1;
694 SgNB_release_rqd->e_RAB_ID4_exists = 0;
696 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){
697 SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
698 SgNB_release_rqd->e_RAB_ID5_exists = 1;
700 SgNB_release_rqd->e_RAB_ID5_exists = 0;
702 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){
703 SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
704 SgNB_release_rqd->e_RAB_ID6_exists = 1;
706 SgNB_release_rqd->e_RAB_ID6_exists = 0;
708 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){
709 SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
710 SgNB_release_rqd->e_RAB_ID7_exists = 1;
712 SgNB_release_rqd->e_RAB_ID7_exists = 0;
714 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
715 SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value;
717 SgNB_release_rqd->cause_radio_network = -1;
719 SgNB_release_rqd->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
720 if(node_0_1->id_cause && node_0_1->id_cause->misc){
721 SgNB_release_rqd->cause_misc = node_0_1->id_cause->misc->value;
723 SgNB_release_rqd->cause_misc = -1;
725 rts_fta_process_packet(&cur_packet);
727 streaming_protobufs__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
731 gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
732 char *empty_string = "";
733 unsigned long long int ts_lo, ts_hi;
734 StreamingProtobufs__X2APStreaming *hdr = NULL;
735 // ------------------------------------------
736 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
737 struct _serv_nr_cell *serv_nr_cell = NULL;
738 StreamingProtobufs__RRCTransfer *node_0_0 = NULL;
739 StreamingProtobufs__RRCTransferIEs *node_0_1 = NULL;
740 StreamingProtobufs__UENRMeasurement *node_0_2 = NULL;
741 StreamingProtobufs__RRCContainer *node_0_3 = NULL;
742 StreamingProtobufs__ULDCCHMessageType *node_0_4 = NULL;
743 StreamingProtobufs__MeasurementReport *node_0_5 = NULL;
744 StreamingProtobufs__MeasurementReportIEs *node_0_6 = NULL;
745 StreamingProtobufs__MeasResults *node_0_7 = NULL;
746 StreamingProtobufs__MeasResultServMOList *node_0_8 = NULL;
747 StreamingProtobufs__MeasResultServMO *node_0_9 = NULL;
749 StreamingProtobufs__MeasResultNR *node_0_10 = NULL;
750 StreamingProtobufs__MeasResult *node_0_11 = NULL;
751 StreamingProtobufs__CellResults *node_0_12 = NULL;
752 StreamingProtobufs__MeasQuantityResults *node_0_13 = NULL;
753 // ------------------------------------------
754 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
755 struct _nr_neighbor *nr_neighbor = NULL;
756 StreamingProtobufs__RRCTransfer *node_1_0 = NULL;
757 StreamingProtobufs__RRCTransferIEs *node_1_1 = NULL;
758 StreamingProtobufs__UENRMeasurement *node_1_2 = NULL;
759 StreamingProtobufs__RRCContainer *node_1_3 = NULL;
760 StreamingProtobufs__ULDCCHMessageType *node_1_4 = NULL;
761 StreamingProtobufs__MeasurementReport *node_1_5 = NULL;
762 StreamingProtobufs__MeasurementReportIEs *node_1_6 = NULL;
763 StreamingProtobufs__MeasResults *node_1_7 = NULL;
764 StreamingProtobufs__MeasResultListNR *node_1_8 = NULL;
765 StreamingProtobufs__MeasResultNR *node_1_9 = NULL;
767 StreamingProtobufs__MeasResult *node_1_10 = NULL;
768 StreamingProtobufs__CellResults *node_1_11 = NULL;
769 StreamingProtobufs__MeasQuantityResults *node_1_12 = NULL;
770 // ------------------------------------------
771 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
772 struct _serv_cell_beam_csi *serv_cell_beam_csi = NULL;
773 StreamingProtobufs__RRCTransfer *node_2_0 = NULL;
774 StreamingProtobufs__RRCTransferIEs *node_2_1 = NULL;
775 StreamingProtobufs__UENRMeasurement *node_2_2 = NULL;
776 StreamingProtobufs__RRCContainer *node_2_3 = NULL;
777 StreamingProtobufs__ULDCCHMessageType *node_2_4 = NULL;
778 StreamingProtobufs__MeasurementReport *node_2_5 = NULL;
779 StreamingProtobufs__MeasurementReportIEs *node_2_6 = NULL;
780 StreamingProtobufs__MeasResults *node_2_7 = NULL;
781 StreamingProtobufs__MeasResultServMOList *node_2_8 = NULL;
782 StreamingProtobufs__MeasResultServMO *node_2_9 = NULL;
784 StreamingProtobufs__MeasResultNR *node_2_10 = NULL;
785 StreamingProtobufs__MeasResult *node_2_11 = NULL;
786 StreamingProtobufs__RsIndexResults *node_2_12 = NULL;
787 StreamingProtobufs__ResultsPerCSIRSIndexList *node_2_13 = NULL;
788 StreamingProtobufs__ResultsPerCSIRSIndex *node_2_14 = NULL;
790 StreamingProtobufs__MeasQuantityResults *node_2_15 = NULL;
791 // ------------------------------------------
792 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
793 struct _neighbor_beam_csi *neighbor_beam_csi = NULL;
794 StreamingProtobufs__RRCTransfer *node_3_0 = NULL;
795 StreamingProtobufs__RRCTransferIEs *node_3_1 = NULL;
796 StreamingProtobufs__UENRMeasurement *node_3_2 = NULL;
797 StreamingProtobufs__RRCContainer *node_3_3 = NULL;
798 StreamingProtobufs__ULDCCHMessageType *node_3_4 = NULL;
799 StreamingProtobufs__MeasurementReport *node_3_5 = NULL;
800 StreamingProtobufs__MeasurementReportIEs *node_3_6 = NULL;
801 StreamingProtobufs__MeasResults *node_3_7 = NULL;
802 StreamingProtobufs__MeasResultListNR *node_3_8 = NULL;
803 StreamingProtobufs__MeasResultNR *node_3_9 = NULL;
805 StreamingProtobufs__MeasResult *node_3_10 = NULL;
806 StreamingProtobufs__RsIndexResults *node_3_11 = NULL;
807 StreamingProtobufs__ResultsPerCSIRSIndexList *node_3_12 = NULL;
808 StreamingProtobufs__ResultsPerCSIRSIndex *node_3_13 = NULL;
810 StreamingProtobufs__MeasQuantityResults *node_3_14 = NULL;
811 // ------------------------------------------
812 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
813 struct _serv_cell_beam_ssb *serv_cell_beam_ssb = NULL;
814 StreamingProtobufs__RRCTransfer *node_4_0 = NULL;
815 StreamingProtobufs__RRCTransferIEs *node_4_1 = NULL;
816 StreamingProtobufs__UENRMeasurement *node_4_2 = NULL;
817 StreamingProtobufs__RRCContainer *node_4_3 = NULL;
818 StreamingProtobufs__ULDCCHMessageType *node_4_4 = NULL;
819 StreamingProtobufs__MeasurementReport *node_4_5 = NULL;
820 StreamingProtobufs__MeasurementReportIEs *node_4_6 = NULL;
821 StreamingProtobufs__MeasResults *node_4_7 = NULL;
822 StreamingProtobufs__MeasResultServMOList *node_4_8 = NULL;
823 StreamingProtobufs__MeasResultServMO *node_4_9 = NULL;
825 StreamingProtobufs__MeasResultNR *node_4_10 = NULL;
826 StreamingProtobufs__MeasResult *node_4_11 = NULL;
827 StreamingProtobufs__RsIndexResults *node_4_12 = NULL;
828 StreamingProtobufs__ResultsPerSSBIndexList *node_4_13 = NULL;
829 StreamingProtobufs__ResultsPerSSBIndex *node_4_14 = NULL;
831 StreamingProtobufs__MeasQuantityResults *node_4_15 = NULL;
832 // ------------------------------------------
833 // --- Variables for .proto rrctransfer.json, path rrc_metrics.json
834 struct _neighbor_beam_ssb *neighbor_beam_ssb = NULL;
835 StreamingProtobufs__RRCTransfer *node_5_0 = NULL;
836 StreamingProtobufs__RRCTransferIEs *node_5_1 = NULL;
837 StreamingProtobufs__UENRMeasurement *node_5_2 = NULL;
838 StreamingProtobufs__RRCContainer *node_5_3 = NULL;
839 StreamingProtobufs__ULDCCHMessageType *node_5_4 = NULL;
840 StreamingProtobufs__MeasurementReport *node_5_5 = NULL;
841 StreamingProtobufs__MeasurementReportIEs *node_5_6 = NULL;
842 StreamingProtobufs__MeasResults *node_5_7 = NULL;
843 StreamingProtobufs__MeasResultListNR *node_5_8 = NULL;
844 StreamingProtobufs__MeasResultNR *node_5_9 = NULL;
846 StreamingProtobufs__MeasResult *node_5_10 = NULL;
847 StreamingProtobufs__RsIndexResults *node_5_11 = NULL;
848 StreamingProtobufs__ResultsPerSSBIndexList *node_5_12 = NULL;
849 StreamingProtobufs__ResultsPerSSBIndex *node_5_13 = NULL;
851 StreamingProtobufs__MeasQuantityResults *node_5_14 = NULL;
853 // --------------------------------------------------
854 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
856 serv_nr_cell = (struct _serv_nr_cell *)(cur_packet.record.packed.values);
857 cur_packet.schema = 1;
859 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
860 if(hdr==NULL) return -1;
862 node_0_0 = hdr->rrctransfer;
863 if(node_0_0==NULL) return -2;
864 if(hdr->header==NULL) return -3;
866 ts_lo = hdr->header->timestamp & 0xffffffff;
867 ts_hi = hdr->header->timestamp >> 32;
868 serv_nr_cell->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
869 if(hdr->header->gnbid==NULL)
870 serv_nr_cell->gnb_id = empty_string;
872 serv_nr_cell->gnb_id = hdr->header->gnbid->value;
874 node_0_1 = node_0_0->rrctransfer_ies;
875 if(node_0_0->rrctransfer_ies){
876 serv_nr_cell->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
877 serv_nr_cell->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
878 node_0_2 = node_0_1->id_uenrmeasurement;
879 if(node_0_1->id_uenrmeasurement){
880 node_0_3 = node_0_2->uenrmeasurements;
881 if(node_0_2->uenrmeasurements){
882 node_0_4 = node_0_3->ul_dcch_message;
883 if(node_0_3->ul_dcch_message){
884 node_0_5 = node_0_4->measurementreport;
885 if(node_0_4->measurementreport){
886 node_0_6 = node_0_5->measurementreport;
887 if(node_0_5->measurementreport){
888 node_0_7 = node_0_6->measresults;
889 if(node_0_6->measresults){
890 node_0_8 = node_0_7->measresultservingmolist;
891 if(node_0_7->measresultservingmolist){
892 for(i_0_9=0;i_0_9<node_0_8->n_items; i_0_9++){
893 node_0_9 = node_0_8->items[i_0_9];
894 serv_nr_cell->servCellID = node_0_9->servcellid;
895 node_0_10 = node_0_9->measresultservingcell;
896 if(node_0_9->measresultservingcell){
897 if(node_0_10->physcellid){
898 serv_nr_cell->physCellId = node_0_10->physcellid->value;
899 serv_nr_cell->physCellId_exists = 1;
901 serv_nr_cell->physCellId_exists = 0;
903 node_0_11 = node_0_10->measresult;
904 if(node_0_10->measresult){
905 node_0_12 = node_0_11->cellresults;
906 if(node_0_11->cellresults){
907 node_0_13 = node_0_12->resultsssb_cell;
908 if(node_0_12->resultsssb_cell){
910 serv_nr_cell->rsrq = node_0_13->rsrq->value;
911 serv_nr_cell->rsrq_exists = 1;
913 serv_nr_cell->rsrq_exists = 0;
916 serv_nr_cell->rsrp = node_0_13->rsrp->value;
917 serv_nr_cell->rsrp_exists = 1;
919 serv_nr_cell->rsrp_exists = 0;
922 serv_nr_cell->sinr = node_0_13->sinr->value;
923 serv_nr_cell->sinr_exists = 1;
925 serv_nr_cell->sinr_exists = 0;
927 rts_fta_process_packet(&cur_packet);
941 // --------------------------------------------------
942 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
944 nr_neighbor = (struct _nr_neighbor *)(cur_packet.record.packed.values);
945 cur_packet.schema = 4;
947 ts_lo = hdr->header->timestamp & 0xffffffff;
948 ts_hi = hdr->header->timestamp >> 32;
949 nr_neighbor->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
950 if(hdr->header->gnbid==NULL)
951 nr_neighbor->gnb_id = empty_string;
953 nr_neighbor->gnb_id = hdr->header->gnbid->value;
955 node_1_1 = node_1_0->rrctransfer_ies;
956 if(node_1_0->rrctransfer_ies){
957 nr_neighbor->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
958 nr_neighbor->id_SgNB_UE_X2AP_ID = node_1_1->id_sgnb_ue_x2ap_id;
959 node_1_2 = node_1_1->id_uenrmeasurement;
960 if(node_1_1->id_uenrmeasurement){
961 node_1_3 = node_1_2->uenrmeasurements;
962 if(node_1_2->uenrmeasurements){
963 node_1_4 = node_1_3->ul_dcch_message;
964 if(node_1_3->ul_dcch_message){
965 node_1_5 = node_1_4->measurementreport;
966 if(node_1_4->measurementreport){
967 node_1_6 = node_1_5->measurementreport;
968 if(node_1_5->measurementreport){
969 node_1_7 = node_1_6->measresults;
970 if(node_1_6->measresults){
971 node_1_8 = node_1_7->measresultlistnr;
972 if(node_1_7->measresultlistnr){
973 for(i_1_9=0;i_1_9<node_1_8->n_items; i_1_9++){
974 node_1_9 = node_1_8->items[i_1_9];
975 if(node_1_9->physcellid){
976 nr_neighbor->physCellId = node_1_9->physcellid->value;
977 nr_neighbor->physCellId_exists = 1;
979 nr_neighbor->physCellId_exists = 0;
981 node_1_10 = node_1_9->measresult;
982 if(node_1_9->measresult){
983 node_1_11 = node_1_10->cellresults;
984 if(node_1_10->cellresults){
985 node_1_12 = node_1_11->resultsssb_cell;
986 if(node_1_11->resultsssb_cell){
988 nr_neighbor->rsrq = node_1_12->rsrq->value;
989 nr_neighbor->rsrq_exists = 1;
991 nr_neighbor->rsrq_exists = 0;
994 nr_neighbor->rsrp = node_1_12->rsrp->value;
995 nr_neighbor->rsrp_exists = 1;
997 nr_neighbor->rsrp_exists = 0;
1000 nr_neighbor->sinr = node_1_12->sinr->value;
1001 nr_neighbor->sinr_exists = 1;
1003 nr_neighbor->sinr_exists = 0;
1005 rts_fta_process_packet(&cur_packet);
1018 // --------------------------------------------------
1019 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1021 serv_cell_beam_csi = (struct _serv_cell_beam_csi *)(cur_packet.record.packed.values);
1022 cur_packet.schema = 2;
1023 node_2_0 = node_1_0;
1024 ts_lo = hdr->header->timestamp & 0xffffffff;
1025 ts_hi = hdr->header->timestamp >> 32;
1026 serv_cell_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1027 if(hdr->header->gnbid==NULL)
1028 serv_cell_beam_csi->gnb_id = empty_string;
1030 serv_cell_beam_csi->gnb_id = hdr->header->gnbid->value;
1032 node_2_1 = node_2_0->rrctransfer_ies;
1033 if(node_2_0->rrctransfer_ies){
1034 serv_cell_beam_csi->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
1035 serv_cell_beam_csi->id_SgNB_UE_X2AP_ID = node_2_1->id_sgnb_ue_x2ap_id;
1036 node_2_2 = node_2_1->id_uenrmeasurement;
1037 if(node_2_1->id_uenrmeasurement){
1038 node_2_3 = node_2_2->uenrmeasurements;
1039 if(node_2_2->uenrmeasurements){
1040 node_2_4 = node_2_3->ul_dcch_message;
1041 if(node_2_3->ul_dcch_message){
1042 node_2_5 = node_2_4->measurementreport;
1043 if(node_2_4->measurementreport){
1044 node_2_6 = node_2_5->measurementreport;
1045 if(node_2_5->measurementreport){
1046 node_2_7 = node_2_6->measresults;
1047 if(node_2_6->measresults){
1048 node_2_8 = node_2_7->measresultservingmolist;
1049 if(node_2_7->measresultservingmolist){
1050 for(i_2_9=0;i_2_9<node_2_8->n_items; i_2_9++){
1051 node_2_9 = node_2_8->items[i_2_9];
1052 serv_cell_beam_csi->servCellID = node_2_9->servcellid;
1053 node_2_10 = node_2_9->measresultservingcell;
1054 if(node_2_9->measresultservingcell){
1055 if(node_2_10->physcellid){
1056 serv_cell_beam_csi->physCellId = node_2_10->physcellid->value;
1057 serv_cell_beam_csi->physCellId_exists = 1;
1059 serv_cell_beam_csi->physCellId_exists = 0;
1061 node_2_11 = node_2_10->measresult;
1062 if(node_2_10->measresult){
1063 node_2_12 = node_2_11->rsindexresults;
1064 if(node_2_11->rsindexresults){
1065 node_2_13 = node_2_12->resultscsi_rs_indexes;
1066 if(node_2_12->resultscsi_rs_indexes){
1067 for(i_2_14=0;i_2_14<node_2_13->n_items; i_2_14++){
1068 node_2_14 = node_2_13->items[i_2_14];
1069 serv_cell_beam_csi->csi_rs_index = node_2_14->csi_rs_index;
1070 node_2_15 = node_2_14->csi_rs_results;
1071 if(node_2_14->csi_rs_results){
1072 if(node_2_15->rsrq){
1073 serv_cell_beam_csi->rsrq = node_2_15->rsrq->value;
1074 serv_cell_beam_csi->rsrq_exists = 1;
1076 serv_cell_beam_csi->rsrq_exists = 0;
1078 if(node_2_15->rsrp){
1079 serv_cell_beam_csi->rsrp = node_2_15->rsrp->value;
1080 serv_cell_beam_csi->rsrp_exists = 1;
1082 serv_cell_beam_csi->rsrp_exists = 0;
1084 if(node_2_15->sinr){
1085 serv_cell_beam_csi->sinr = node_2_15->sinr->value;
1086 serv_cell_beam_csi->sinr_exists = 1;
1088 serv_cell_beam_csi->sinr_exists = 0;
1090 rts_fta_process_packet(&cur_packet);
1106 // --------------------------------------------------
1107 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1109 neighbor_beam_csi = (struct _neighbor_beam_csi *)(cur_packet.record.packed.values);
1110 cur_packet.schema = 5;
1111 node_3_0 = node_2_0;
1112 ts_lo = hdr->header->timestamp & 0xffffffff;
1113 ts_hi = hdr->header->timestamp >> 32;
1114 neighbor_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1115 if(hdr->header->gnbid==NULL)
1116 neighbor_beam_csi->gnb_id = empty_string;
1118 neighbor_beam_csi->gnb_id = hdr->header->gnbid->value;
1120 node_3_1 = node_3_0->rrctransfer_ies;
1121 if(node_3_0->rrctransfer_ies){
1122 neighbor_beam_csi->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
1123 neighbor_beam_csi->id_SgNB_UE_X2AP_ID = node_3_1->id_sgnb_ue_x2ap_id;
1124 node_3_2 = node_3_1->id_uenrmeasurement;
1125 if(node_3_1->id_uenrmeasurement){
1126 node_3_3 = node_3_2->uenrmeasurements;
1127 if(node_3_2->uenrmeasurements){
1128 node_3_4 = node_3_3->ul_dcch_message;
1129 if(node_3_3->ul_dcch_message){
1130 node_3_5 = node_3_4->measurementreport;
1131 if(node_3_4->measurementreport){
1132 node_3_6 = node_3_5->measurementreport;
1133 if(node_3_5->measurementreport){
1134 node_3_7 = node_3_6->measresults;
1135 if(node_3_6->measresults){
1136 node_3_8 = node_3_7->measresultlistnr;
1137 if(node_3_7->measresultlistnr){
1138 for(i_3_9=0;i_3_9<node_3_8->n_items; i_3_9++){
1139 node_3_9 = node_3_8->items[i_3_9];
1140 if(node_3_9->physcellid){
1141 neighbor_beam_csi->physCellId = node_3_9->physcellid->value;
1142 neighbor_beam_csi->physCellId_exists = 1;
1144 neighbor_beam_csi->physCellId_exists = 0;
1146 node_3_10 = node_3_9->measresult;
1147 if(node_3_9->measresult){
1148 node_3_11 = node_3_10->rsindexresults;
1149 if(node_3_10->rsindexresults){
1150 node_3_12 = node_3_11->resultscsi_rs_indexes;
1151 if(node_3_11->resultscsi_rs_indexes){
1152 for(i_3_13=0;i_3_13<node_3_12->n_items; i_3_13++){
1153 node_3_13 = node_3_12->items[i_3_13];
1154 neighbor_beam_csi->csi_rs_index = node_3_13->csi_rs_index;
1155 node_3_14 = node_3_13->csi_rs_results;
1156 if(node_3_13->csi_rs_results){
1157 if(node_3_14->rsrq){
1158 neighbor_beam_csi->rsrq = node_3_14->rsrq->value;
1159 neighbor_beam_csi->rsrq_exists = 1;
1161 neighbor_beam_csi->rsrq_exists = 0;
1163 if(node_3_14->rsrp){
1164 neighbor_beam_csi->rsrp = node_3_14->rsrp->value;
1165 neighbor_beam_csi->rsrp_exists = 1;
1167 neighbor_beam_csi->rsrp_exists = 0;
1169 if(node_3_14->sinr){
1170 neighbor_beam_csi->sinr = node_3_14->sinr->value;
1171 neighbor_beam_csi->sinr_exists = 1;
1173 neighbor_beam_csi->sinr_exists = 0;
1175 rts_fta_process_packet(&cur_packet);
1190 // --------------------------------------------------
1191 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1193 serv_cell_beam_ssb = (struct _serv_cell_beam_ssb *)(cur_packet.record.packed.values);
1194 cur_packet.schema = 3;
1195 node_4_0 = node_3_0;
1196 ts_lo = hdr->header->timestamp & 0xffffffff;
1197 ts_hi = hdr->header->timestamp >> 32;
1198 serv_cell_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1199 if(hdr->header->gnbid==NULL)
1200 serv_cell_beam_ssb->gnb_id = empty_string;
1202 serv_cell_beam_ssb->gnb_id = hdr->header->gnbid->value;
1204 node_4_1 = node_4_0->rrctransfer_ies;
1205 if(node_4_0->rrctransfer_ies){
1206 serv_cell_beam_ssb->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
1207 serv_cell_beam_ssb->id_SgNB_UE_X2AP_ID = node_4_1->id_sgnb_ue_x2ap_id;
1208 node_4_2 = node_4_1->id_uenrmeasurement;
1209 if(node_4_1->id_uenrmeasurement){
1210 node_4_3 = node_4_2->uenrmeasurements;
1211 if(node_4_2->uenrmeasurements){
1212 node_4_4 = node_4_3->ul_dcch_message;
1213 if(node_4_3->ul_dcch_message){
1214 node_4_5 = node_4_4->measurementreport;
1215 if(node_4_4->measurementreport){
1216 node_4_6 = node_4_5->measurementreport;
1217 if(node_4_5->measurementreport){
1218 node_4_7 = node_4_6->measresults;
1219 if(node_4_6->measresults){
1220 node_4_8 = node_4_7->measresultservingmolist;
1221 if(node_4_7->measresultservingmolist){
1222 for(i_4_9=0;i_4_9<node_4_8->n_items; i_4_9++){
1223 node_4_9 = node_4_8->items[i_4_9];
1224 serv_cell_beam_ssb->servCellID = node_4_9->servcellid;
1225 node_4_10 = node_4_9->measresultservingcell;
1226 if(node_4_9->measresultservingcell){
1227 if(node_4_10->physcellid){
1228 serv_cell_beam_ssb->physCellId = node_4_10->physcellid->value;
1229 serv_cell_beam_ssb->physCellId_exists = 1;
1231 serv_cell_beam_ssb->physCellId_exists = 0;
1233 node_4_11 = node_4_10->measresult;
1234 if(node_4_10->measresult){
1235 node_4_12 = node_4_11->rsindexresults;
1236 if(node_4_11->rsindexresults){
1237 node_4_13 = node_4_12->resultsssb_indexes;
1238 if(node_4_12->resultsssb_indexes){
1239 for(i_4_14=0;i_4_14<node_4_13->n_items; i_4_14++){
1240 node_4_14 = node_4_13->items[i_4_14];
1241 serv_cell_beam_ssb->ssb_Index = node_4_14->ssb_index;
1242 node_4_15 = node_4_14->ssb_results;
1243 if(node_4_14->ssb_results){
1244 if(node_4_15->rsrq){
1245 serv_cell_beam_ssb->rsrq = node_4_15->rsrq->value;
1246 serv_cell_beam_ssb->rsrq_exists = 1;
1248 serv_cell_beam_ssb->rsrq_exists = 0;
1250 if(node_4_15->rsrp){
1251 serv_cell_beam_ssb->rsrp = node_4_15->rsrp->value;
1252 serv_cell_beam_ssb->rsrp_exists = 1;
1254 serv_cell_beam_ssb->rsrp_exists = 0;
1256 if(node_4_15->sinr){
1257 serv_cell_beam_ssb->sinr = node_4_15->sinr->value;
1258 serv_cell_beam_ssb->sinr_exists = 1;
1260 serv_cell_beam_ssb->sinr_exists = 0;
1262 rts_fta_process_packet(&cur_packet);
1278 // --------------------------------------------------
1279 // --- Specialized processing for .proto rrctransfer.json, path rrc_metrics.json
1281 neighbor_beam_ssb = (struct _neighbor_beam_ssb *)(cur_packet.record.packed.values);
1282 cur_packet.schema = 6;
1283 node_5_0 = node_4_0;
1284 ts_lo = hdr->header->timestamp & 0xffffffff;
1285 ts_hi = hdr->header->timestamp >> 32;
1286 neighbor_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1287 if(hdr->header->gnbid==NULL)
1288 neighbor_beam_ssb->gnb_id = empty_string;
1290 neighbor_beam_ssb->gnb_id = hdr->header->gnbid->value;
1292 node_5_1 = node_5_0->rrctransfer_ies;
1293 if(node_5_0->rrctransfer_ies){
1294 neighbor_beam_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
1295 neighbor_beam_ssb->id_SgNB_UE_X2AP_ID = node_5_1->id_sgnb_ue_x2ap_id;
1296 node_5_2 = node_5_1->id_uenrmeasurement;
1297 if(node_5_1->id_uenrmeasurement){
1298 node_5_3 = node_5_2->uenrmeasurements;
1299 if(node_5_2->uenrmeasurements){
1300 node_5_4 = node_5_3->ul_dcch_message;
1301 if(node_5_3->ul_dcch_message){
1302 node_5_5 = node_5_4->measurementreport;
1303 if(node_5_4->measurementreport){
1304 node_5_6 = node_5_5->measurementreport;
1305 if(node_5_5->measurementreport){
1306 node_5_7 = node_5_6->measresults;
1307 if(node_5_6->measresults){
1308 node_5_8 = node_5_7->measresultlistnr;
1309 if(node_5_7->measresultlistnr){
1310 for(i_5_9=0;i_5_9<node_5_8->n_items; i_5_9++){
1311 node_5_9 = node_5_8->items[i_5_9];
1312 if(node_5_9->physcellid){
1313 neighbor_beam_ssb->physCellId = node_5_9->physcellid->value;
1314 neighbor_beam_ssb->physCellId_exists = 1;
1316 neighbor_beam_ssb->physCellId_exists = 0;
1318 node_5_10 = node_5_9->measresult;
1319 if(node_5_9->measresult){
1320 node_5_11 = node_5_10->rsindexresults;
1321 if(node_5_10->rsindexresults){
1322 node_5_12 = node_5_11->resultsssb_indexes;
1323 if(node_5_11->resultsssb_indexes){
1324 for(i_5_13=0;i_5_13<node_5_12->n_items; i_5_13++){
1325 node_5_13 = node_5_12->items[i_5_13];
1326 neighbor_beam_ssb->ssb_Index = node_5_13->ssb_index;
1327 node_5_14 = node_5_13->ssb_results;
1328 if(node_5_13->ssb_results){
1329 if(node_5_14->rsrq){
1330 neighbor_beam_ssb->rsrq = node_5_14->rsrq->value;
1331 neighbor_beam_ssb->rsrq_exists = 1;
1333 neighbor_beam_ssb->rsrq_exists = 0;
1335 if(node_5_14->rsrp){
1336 neighbor_beam_ssb->rsrp = node_5_14->rsrp->value;
1337 neighbor_beam_ssb->rsrp_exists = 1;
1339 neighbor_beam_ssb->rsrp_exists = 0;
1341 if(node_5_14->sinr){
1342 neighbor_beam_ssb->sinr = node_5_14->sinr->value;
1343 neighbor_beam_ssb->sinr_exists = 1;
1345 neighbor_beam_ssb->sinr_exists = 0;
1347 rts_fta_process_packet(&cur_packet);
1362 streaming_protobufs__rrctransfer__free_unpacked(node_0_0,NULL);
1366 gs_uint32_t process_buffer_ADDREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
1367 char *empty_string = "";
1368 unsigned long long int ts_lo, ts_hi;
1369 StreamingProtobufs__X2APStreaming *hdr = NULL;
1370 // ------------------------------------------
1371 // --- Variables for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1372 struct _sgnb_add_req_reject *sgnb_add_req_reject = NULL;
1373 StreamingProtobufs__SgNBAdditionRequestReject *node_0_0 = NULL;
1374 StreamingProtobufs__Cause *node_0_1 = NULL;
1376 // --------------------------------------------------
1377 // --- Specialized processing for .proto sgnb_addition_request_reject.json, path sgnb_add_req_reject.json
1379 sgnb_add_req_reject = (struct _sgnb_add_req_reject *)(cur_packet.record.packed.values);
1380 cur_packet.schema = 701;
1382 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1383 if(hdr==NULL) return -1;
1385 node_0_0 = hdr->sgnbadditionrequestreject;
1386 if(node_0_0==NULL) return -2;
1387 if(hdr->header==NULL) return -3;
1389 ts_lo = hdr->header->timestamp & 0xffffffff;
1390 ts_hi = hdr->header->timestamp >> 32;
1391 sgnb_add_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1392 if(hdr->header->gnbid==NULL)
1393 sgnb_add_req_reject->gnb_id = empty_string;
1395 sgnb_add_req_reject->gnb_id = hdr->header->gnbid->value;
1397 sgnb_add_req_reject->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1398 if(node_0_0->id_sgnb_ue_x2ap_id){
1399 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id->value;
1400 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 1;
1402 sgnb_add_req_reject->id_SgNB_UE_X2AP_ID_exists = 0;
1404 node_0_1 = node_0_0->id_cause;
1405 if(node_0_0->id_cause){
1406 if(node_0_1->radionetwork){
1407 sgnb_add_req_reject->cause_radio_network = node_0_1->radionetwork->value;
1409 sgnb_add_req_reject->cause_radio_network = -1;
1411 if(node_0_1->transport){
1412 sgnb_add_req_reject->cause_transport = node_0_1->transport->value;
1414 sgnb_add_req_reject->cause_transport = -1;
1416 if(node_0_1->protocol){
1417 sgnb_add_req_reject->cause_protocol = node_0_1->protocol->value;
1419 sgnb_add_req_reject->cause_protocol = -1;
1422 sgnb_add_req_reject->cause_misc = node_0_1->misc->value;
1424 sgnb_add_req_reject->cause_misc = -1;
1426 rts_fta_process_packet(&cur_packet);
1428 streaming_protobufs__sg_nbaddition_request_reject__free_unpacked(node_0_0,NULL);
1432 gs_uint32_t process_buffer_SGNB_ADDITION_REQ_ACK(gs_uint8_t * buffer, gs_uint32_t buflen){
1433 char *empty_string = "";
1434 unsigned long long int ts_lo, ts_hi;
1435 StreamingProtobufs__X2APStreaming *hdr = NULL;
1436 // ------------------------------------------
1437 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1438 struct _eRABs_notadmitted_for_ue *eRABs_notadmitted_for_ue = NULL;
1439 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_0_0 = NULL;
1440 StreamingProtobufs__ERABList *node_0_1 = NULL;
1441 StreamingProtobufs__ERABItemIEs *node_0_2 = NULL;
1443 StreamingProtobufs__ERABItem *node_0_3 = NULL;
1444 // ------------------------------------------
1445 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1446 struct _add_req_ack_cellid *add_req_ack_cellid = NULL;
1447 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_1_0 = NULL;
1448 StreamingProtobufs__CGConfig *node_1_1 = NULL;
1449 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_1_2 = NULL;
1450 StreamingProtobufs__CGConfigIEs *node_1_3 = NULL;
1451 StreamingProtobufs__RRCReconfiguration *node_1_4 = NULL;
1452 StreamingProtobufs__RRCReconfigurationIEs *node_1_5 = NULL;
1453 StreamingProtobufs__CellGroupConfig *node_1_6 = NULL;
1454 StreamingProtobufs__SpCellConfig *node_1_7 = NULL;
1455 StreamingProtobufs__ReconfigurationWithSync *node_1_8 = NULL;
1456 StreamingProtobufs__ServingCellConfigCommon *node_1_9 = NULL;
1457 // ------------------------------------------
1458 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1459 struct _eRABs_acked_for_admit_for_ue *eRABs_acked_for_admit_for_ue = NULL;
1460 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_2_0 = NULL;
1461 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckList *node_2_1 = NULL;
1462 StreamingProtobufs__ERABsAdmittedToBeAddedSgNBAddReqAckItem *node_2_2 = NULL;
1464 // ------------------------------------------
1465 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1466 struct _SgNB_ack_for_ue_NRfreqs *SgNB_ack_for_ue_NRfreqs = NULL;
1467 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_3_0 = NULL;
1468 StreamingProtobufs__CGConfig *node_3_1 = NULL;
1469 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_3_2 = NULL;
1470 StreamingProtobufs__CGConfigIEs *node_3_3 = NULL;
1471 // ------------------------------------------
1472 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1473 struct _SgNB_ack_for_add_mod_for_ue *SgNB_ack_for_add_mod_for_ue = NULL;
1474 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_4_0 = NULL;
1475 StreamingProtobufs__CGConfig *node_4_1 = NULL;
1476 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_4_2 = NULL;
1477 StreamingProtobufs__CGConfigIEs *node_4_3 = NULL;
1478 StreamingProtobufs__RadioBearerConfig *node_4_4 = NULL;
1479 StreamingProtobufs__DRBToAddModList *node_4_5 = NULL;
1480 StreamingProtobufs__DRBToAddMod *node_4_6 = NULL;
1482 // ------------------------------------------
1483 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1484 struct _SgNB_ack_for_ue_measurements *SgNB_ack_for_ue_measurements = NULL;
1485 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_5_0 = NULL;
1486 StreamingProtobufs__CGConfig *node_5_1 = NULL;
1487 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_5_2 = NULL;
1488 StreamingProtobufs__CGConfigIEs *node_5_3 = NULL;
1489 StreamingProtobufs__MeasResultList2NR *node_5_4 = NULL;
1490 StreamingProtobufs__MeasResult2NR *node_5_5 = NULL;
1492 StreamingProtobufs__MeasResultNR *node_5_6 = NULL;
1493 StreamingProtobufs__MeasResult *node_5_7 = NULL;
1494 StreamingProtobufs__CellResults *node_5_8 = NULL;
1495 StreamingProtobufs__MeasQuantityResults *node_5_9 = NULL;
1496 // ------------------------------------------
1497 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1498 struct _SgNB_ack_for_ue_beam_csi *SgNB_ack_for_ue_beam_csi = NULL;
1499 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_6_0 = NULL;
1500 StreamingProtobufs__CGConfig *node_6_1 = NULL;
1501 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_6_2 = NULL;
1502 StreamingProtobufs__CGConfigIEs *node_6_3 = NULL;
1503 StreamingProtobufs__MeasResultList2NR *node_6_4 = NULL;
1504 StreamingProtobufs__MeasResult2NR *node_6_5 = NULL;
1506 StreamingProtobufs__MeasResultNR *node_6_6 = NULL;
1507 StreamingProtobufs__MeasResult *node_6_7 = NULL;
1508 StreamingProtobufs__RsIndexResults *node_6_8 = NULL;
1509 StreamingProtobufs__ResultsPerCSIRSIndexList *node_6_9 = NULL;
1510 StreamingProtobufs__ResultsPerCSIRSIndex *node_6_10 = NULL;
1512 StreamingProtobufs__MeasQuantityResults *node_6_11 = NULL;
1513 // ------------------------------------------
1514 // --- Variables for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1515 struct _SgNB_ack_for_ue_beam_ssb *SgNB_ack_for_ue_beam_ssb = NULL;
1516 StreamingProtobufs__SgNBAdditionRequestAcknowledge *node_7_0 = NULL;
1517 StreamingProtobufs__CGConfig *node_7_1 = NULL;
1518 StreamingProtobufs__CGConfigCriticalExtensionsChoice1 *node_7_2 = NULL;
1519 StreamingProtobufs__CGConfigIEs *node_7_3 = NULL;
1520 StreamingProtobufs__MeasResultList2NR *node_7_4 = NULL;
1521 StreamingProtobufs__MeasResult2NR *node_7_5 = NULL;
1523 StreamingProtobufs__MeasResultNR *node_7_6 = NULL;
1524 StreamingProtobufs__MeasResult *node_7_7 = NULL;
1525 StreamingProtobufs__RsIndexResults *node_7_8 = NULL;
1526 StreamingProtobufs__ResultsPerSSBIndexList *node_7_9 = NULL;
1527 StreamingProtobufs__ResultsPerSSBIndex *node_7_10 = NULL;
1529 StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
1531 // --------------------------------------------------
1532 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1534 eRABs_notadmitted_for_ue = (struct _eRABs_notadmitted_for_ue *)(cur_packet.record.packed.values);
1535 cur_packet.schema = 501;
1537 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
1538 if(hdr==NULL) return -1;
1540 node_0_0 = hdr->sgnbadditionrequestacknowledge;
1541 if(node_0_0==NULL) return -2;
1542 if(hdr->header==NULL) return -3;
1544 ts_lo = hdr->header->timestamp & 0xffffffff;
1545 ts_hi = hdr->header->timestamp >> 32;
1546 eRABs_notadmitted_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1547 if(hdr->header->gnbid==NULL)
1548 eRABs_notadmitted_for_ue->gnb_id = empty_string;
1550 eRABs_notadmitted_for_ue->gnb_id = hdr->header->gnbid->value;
1552 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID = node_0_0->id_menb_ue_x2ap_id;
1553 eRABs_notadmitted_for_ue->id_SgNB_UE_X2AP_ID = node_0_0->id_sgnb_ue_x2ap_id;
1554 if(node_0_0->id_menb_ue_x2ap_id_extension){
1555 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_0_0->id_menb_ue_x2ap_id_extension->value;
1557 eRABs_notadmitted_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1559 node_0_1 = node_0_0->id_e_rabs_notadmitted_list;
1560 if(node_0_0->id_e_rabs_notadmitted_list){
1561 for(i_0_2=0;i_0_2<node_0_1->n_items; i_0_2++){
1562 node_0_2 = node_0_1->items[i_0_2];
1563 node_0_3 = node_0_2->id_e_rab_item;
1564 if(node_0_2->id_e_rab_item){
1565 eRABs_notadmitted_for_ue->e_RAB_ID = node_0_3->e_rab_id;
1566 if(node_0_3->cause && node_0_3->cause->transport){
1567 eRABs_notadmitted_for_ue->cause_transport = node_0_3->cause->transport->value;
1569 eRABs_notadmitted_for_ue->cause_transport = -1;
1571 if(node_0_3->cause && node_0_3->cause->protocol){
1572 eRABs_notadmitted_for_ue->cause_protocol = node_0_3->cause->protocol->value;
1574 eRABs_notadmitted_for_ue->cause_protocol = -1;
1576 if(node_0_3->cause && node_0_3->cause->misc){
1577 eRABs_notadmitted_for_ue->cause_misc = node_0_3->cause->misc->value;
1579 eRABs_notadmitted_for_ue->cause_misc = -1;
1581 if(node_0_3->cause && node_0_3->cause->radionetwork){
1582 eRABs_notadmitted_for_ue->cause_radio_network = node_0_3->cause->radionetwork->value;
1584 eRABs_notadmitted_for_ue->cause_radio_network = -1;
1586 rts_fta_process_packet(&cur_packet);
1590 // --------------------------------------------------
1591 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1593 add_req_ack_cellid = (struct _add_req_ack_cellid *)(cur_packet.record.packed.values);
1594 cur_packet.schema = 10000;
1595 node_1_0 = node_0_0;
1596 ts_lo = hdr->header->timestamp & 0xffffffff;
1597 ts_hi = hdr->header->timestamp >> 32;
1598 add_req_ack_cellid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1599 if(hdr->header->gnbid==NULL)
1600 add_req_ack_cellid->gnb_id = empty_string;
1602 add_req_ack_cellid->gnb_id = hdr->header->gnbid->value;
1604 add_req_ack_cellid->id_MeNB_UE_X2AP_ID = node_1_0->id_menb_ue_x2ap_id;
1605 add_req_ack_cellid->id_SgNB_UE_X2AP_ID = node_1_0->id_sgnb_ue_x2ap_id;
1606 if(node_1_0->id_menb_ue_x2ap_id_extension){
1607 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = node_1_0->id_menb_ue_x2ap_id_extension->value;
1609 add_req_ack_cellid->id_MeNB_UE_X2AP_ID_Extension = 0;
1611 node_1_1 = node_1_0->id_sgnbtomenbcontainer;
1612 if(node_1_0->id_sgnbtomenbcontainer){
1613 node_1_2 = node_1_1->criticalextensionschoice1;
1614 if(node_1_1->criticalextensionschoice1){
1615 node_1_3 = node_1_2->protocolies;
1616 if(node_1_2->protocolies){
1617 node_1_4 = node_1_3->scg_cellgroupconfig;
1618 if(node_1_3->scg_cellgroupconfig){
1619 node_1_5 = node_1_4->rrcreconfiguration;
1620 if(node_1_4->rrcreconfiguration){
1621 node_1_6 = node_1_5->secondarycellgroup;
1622 if(node_1_5->secondarycellgroup){
1623 node_1_7 = node_1_6->spcellconfig;
1624 if(node_1_6->spcellconfig){
1625 node_1_8 = node_1_7->reconfigurationwithsync;
1626 if(node_1_7->reconfigurationwithsync){
1627 node_1_9 = node_1_8->spcellconfigcommon;
1628 if(node_1_8->spcellconfigcommon){
1629 if(node_1_9->physcellid){
1630 add_req_ack_cellid->physCellId = node_1_9->physcellid->value;
1631 add_req_ack_cellid->physCellId_exists = 1;
1633 add_req_ack_cellid->physCellId_exists = 0;
1635 rts_fta_process_packet(&cur_packet);
1645 // --------------------------------------------------
1646 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1648 eRABs_acked_for_admit_for_ue = (struct _eRABs_acked_for_admit_for_ue *)(cur_packet.record.packed.values);
1649 cur_packet.schema = 502;
1650 node_2_0 = node_1_0;
1651 ts_lo = hdr->header->timestamp & 0xffffffff;
1652 ts_hi = hdr->header->timestamp >> 32;
1653 eRABs_acked_for_admit_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1654 if(hdr->header->gnbid==NULL)
1655 eRABs_acked_for_admit_for_ue->gnb_id = empty_string;
1657 eRABs_acked_for_admit_for_ue->gnb_id = hdr->header->gnbid->value;
1659 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID = node_2_0->id_menb_ue_x2ap_id;
1660 eRABs_acked_for_admit_for_ue->id_SgNB_UE_X2AP_ID = node_2_0->id_sgnb_ue_x2ap_id;
1661 if(node_2_0->id_menb_ue_x2ap_id_extension){
1662 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_2_0->id_menb_ue_x2ap_id_extension->value;
1664 eRABs_acked_for_admit_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1666 node_2_1 = node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist;
1667 if(node_2_0->id_e_rabs_admitted_tobeadded_sgnbaddreqacklist){
1668 for(i_2_2=0;i_2_2<node_2_1->n_id_e_rabs_admitted_tobeadded_sgnbaddreqack_item; i_2_2++){
1669 node_2_2 = node_2_1->id_e_rabs_admitted_tobeadded_sgnbaddreqack_item[i_2_2];
1670 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){
1671 eRABs_acked_for_admit_for_ue->ARP = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
1673 eRABs_acked_for_admit_for_ue->ARP = 0;
1675 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1676 eRABs_acked_for_admit_for_ue->gTP_TEID_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->gtp_teid;
1677 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 1;
1679 eRABs_acked_for_admit_for_ue->gTP_TEID_dl_exists = 0;
1681 if(node_2_2->en_dc_resourceconfiguration){
1682 eRABs_acked_for_admit_for_ue->mCGresources = node_2_2->en_dc_resourceconfiguration->mcgresources;
1683 eRABs_acked_for_admit_for_ue->mCGresources_exists = 1;
1685 eRABs_acked_for_admit_for_ue->mCGresources_exists = 0;
1687 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint){
1688 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl = node_2_2->sgnbpdcppresent->dl_forwarding_gtptunnelendpoint->transportlayeraddress;
1689 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 1;
1691 eRABs_acked_for_admit_for_ue->transportLayerAddress_dl_exists = 0;
1693 if(node_2_2->en_dc_resourceconfiguration){
1694 eRABs_acked_for_admit_for_ue->pDCPatSgNB = node_2_2->en_dc_resourceconfiguration->pdcpatsgnb;
1695 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 1;
1697 eRABs_acked_for_admit_for_ue->pDCPatSgNB_exists = 0;
1699 if(node_2_2->en_dc_resourceconfiguration){
1700 eRABs_acked_for_admit_for_ue->sCGresources = node_2_2->en_dc_resourceconfiguration->scgresources;
1701 eRABs_acked_for_admit_for_ue->sCGresources_exists = 1;
1703 eRABs_acked_for_admit_for_ue->sCGresources_exists = 0;
1705 eRABs_acked_for_admit_for_ue->e_RAB_ID = node_2_2->e_rab_id;
1706 if(node_2_2->sgnbpdcppresent && node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters){
1707 eRABs_acked_for_admit_for_ue->qCI = node_2_2->sgnbpdcppresent->mcg_e_rab_level_qos_parameters->qci;
1709 eRABs_acked_for_admit_for_ue->qCI = 0;
1711 rts_fta_process_packet(&cur_packet);
1714 // --------------------------------------------------
1715 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1717 SgNB_ack_for_ue_NRfreqs = (struct _SgNB_ack_for_ue_NRfreqs *)(cur_packet.record.packed.values);
1718 cur_packet.schema = 503;
1719 node_3_0 = node_2_0;
1720 ts_lo = hdr->header->timestamp & 0xffffffff;
1721 ts_hi = hdr->header->timestamp >> 32;
1722 SgNB_ack_for_ue_NRfreqs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1723 if(hdr->header->gnbid==NULL)
1724 SgNB_ack_for_ue_NRfreqs->gnb_id = empty_string;
1726 SgNB_ack_for_ue_NRfreqs->gnb_id = hdr->header->gnbid->value;
1728 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID = node_3_0->id_menb_ue_x2ap_id;
1729 SgNB_ack_for_ue_NRfreqs->id_SgNB_UE_X2AP_ID = node_3_0->id_sgnb_ue_x2ap_id;
1730 if(node_3_0->id_menb_ue_x2ap_id_extension){
1731 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = node_3_0->id_menb_ue_x2ap_id_extension->value;
1733 SgNB_ack_for_ue_NRfreqs->id_MeNB_UE_X2AP_ID_Extension = 0;
1735 node_3_1 = node_3_0->id_sgnbtomenbcontainer;
1736 if(node_3_0->id_sgnbtomenbcontainer){
1737 node_3_2 = node_3_1->criticalextensionschoice1;
1738 if(node_3_1->criticalextensionschoice1){
1739 node_3_3 = node_3_2->protocolies;
1740 if(node_3_2->protocolies){
1741 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 0 && node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency){
1742 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0 = node_3_3->measconfigsn->measuredfrequenciessn[0]->measuredfrequency->value;
1743 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 1;
1745 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN0_exists = 0;
1747 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 1 && node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency){
1748 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1 = node_3_3->measconfigsn->measuredfrequenciessn[1]->measuredfrequency->value;
1749 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 1;
1751 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN1_exists = 0;
1753 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 2 && node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency){
1754 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2 = node_3_3->measconfigsn->measuredfrequenciessn[2]->measuredfrequency->value;
1755 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 1;
1757 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN2_exists = 0;
1759 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 3 && node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency){
1760 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3 = node_3_3->measconfigsn->measuredfrequenciessn[3]->measuredfrequency->value;
1761 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 1;
1763 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN3_exists = 0;
1765 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 4 && node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency){
1766 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4 = node_3_3->measconfigsn->measuredfrequenciessn[4]->measuredfrequency->value;
1767 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 1;
1769 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN4_exists = 0;
1771 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 5 && node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency){
1772 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5 = node_3_3->measconfigsn->measuredfrequenciessn[5]->measuredfrequency->value;
1773 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 1;
1775 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN5_exists = 0;
1777 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 6 && node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency){
1778 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6 = node_3_3->measconfigsn->measuredfrequenciessn[6]->measuredfrequency->value;
1779 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 1;
1781 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN6_exists = 0;
1783 if(node_3_3->measconfigsn && node_3_3->measconfigsn->measuredfrequenciessn && node_3_3->measconfigsn->n_measuredfrequenciessn > 7 && node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency){
1784 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7 = node_3_3->measconfigsn->measuredfrequenciessn[7]->measuredfrequency->value;
1785 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 1;
1787 SgNB_ack_for_ue_NRfreqs->measuredFrequenciesSN7_exists = 0;
1789 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 0){
1790 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0 = node_3_3->candidateservingfreqlistnr->items[0];
1791 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 1;
1793 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs0_exists = 0;
1795 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 1){
1796 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1 = node_3_3->candidateservingfreqlistnr->items[1];
1797 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 1;
1799 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs1_exists = 0;
1801 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 2){
1802 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2 = node_3_3->candidateservingfreqlistnr->items[2];
1803 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 1;
1805 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs2_exists = 0;
1807 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 3){
1808 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3 = node_3_3->candidateservingfreqlistnr->items[3];
1809 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 1;
1811 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs3_exists = 0;
1813 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 4){
1814 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4 = node_3_3->candidateservingfreqlistnr->items[4];
1815 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 1;
1817 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs4_exists = 0;
1819 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 5){
1820 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5 = node_3_3->candidateservingfreqlistnr->items[5];
1821 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 1;
1823 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs5_exists = 0;
1825 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 6){
1826 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6 = node_3_3->candidateservingfreqlistnr->items[6];
1827 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 1;
1829 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs6_exists = 0;
1831 if(node_3_3->candidateservingfreqlistnr && node_3_3->candidateservingfreqlistnr->n_items > 7){
1832 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7 = node_3_3->candidateservingfreqlistnr->items[7];
1833 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 1;
1835 SgNB_ack_for_ue_NRfreqs->candidate_serving_cell_freqs7_exists = 0;
1837 rts_fta_process_packet(&cur_packet);
1841 // --------------------------------------------------
1842 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1844 SgNB_ack_for_add_mod_for_ue = (struct _SgNB_ack_for_add_mod_for_ue *)(cur_packet.record.packed.values);
1845 cur_packet.schema = 504;
1846 node_4_0 = node_3_0;
1847 ts_lo = hdr->header->timestamp & 0xffffffff;
1848 ts_hi = hdr->header->timestamp >> 32;
1849 SgNB_ack_for_add_mod_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1850 if(hdr->header->gnbid==NULL)
1851 SgNB_ack_for_add_mod_for_ue->gnb_id = empty_string;
1853 SgNB_ack_for_add_mod_for_ue->gnb_id = hdr->header->gnbid->value;
1855 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID = node_4_0->id_menb_ue_x2ap_id;
1856 SgNB_ack_for_add_mod_for_ue->id_SgNB_UE_X2AP_ID = node_4_0->id_sgnb_ue_x2ap_id;
1857 if(node_4_0->id_menb_ue_x2ap_id_extension){
1858 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_4_0->id_menb_ue_x2ap_id_extension->value;
1860 SgNB_ack_for_add_mod_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
1862 node_4_1 = node_4_0->id_sgnbtomenbcontainer;
1863 if(node_4_0->id_sgnbtomenbcontainer){
1864 node_4_2 = node_4_1->criticalextensionschoice1;
1865 if(node_4_1->criticalextensionschoice1){
1866 node_4_3 = node_4_2->protocolies;
1867 if(node_4_2->protocolies){
1868 node_4_4 = node_4_3->scg_rb_config;
1869 if(node_4_3->scg_rb_config){
1870 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 0){
1871 SgNB_ack_for_add_mod_for_ue->toRelease0 = node_4_4->drb_toreleaselist->items[0];
1872 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 1;
1874 SgNB_ack_for_add_mod_for_ue->toRelease0_exists = 0;
1876 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 1){
1877 SgNB_ack_for_add_mod_for_ue->toRelease1 = node_4_4->drb_toreleaselist->items[1];
1878 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 1;
1880 SgNB_ack_for_add_mod_for_ue->toRelease1_exists = 0;
1882 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 2){
1883 SgNB_ack_for_add_mod_for_ue->toRelease2 = node_4_4->drb_toreleaselist->items[2];
1884 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 1;
1886 SgNB_ack_for_add_mod_for_ue->toRelease2_exists = 0;
1888 if(node_4_4->drb_toreleaselist && node_4_4->drb_toreleaselist->n_items > 3){
1889 SgNB_ack_for_add_mod_for_ue->toRelease3 = node_4_4->drb_toreleaselist->items[3];
1890 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 1;
1892 SgNB_ack_for_add_mod_for_ue->toRelease3_exists = 0;
1894 node_4_5 = node_4_4->drb_toaddmodlist;
1895 if(node_4_4->drb_toaddmodlist){
1896 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
1897 node_4_6 = node_4_5->items[i_4_6];
1898 if(node_4_6->recoverpdcp){
1899 SgNB_ack_for_add_mod_for_ue->recoverPDCP = node_4_6->recoverpdcp->value;
1900 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 1;
1902 SgNB_ack_for_add_mod_for_ue->recoverPDCP_exists = 0;
1904 if(node_4_6->reestablishpdcp){
1905 SgNB_ack_for_add_mod_for_ue->reestablishPDCP = node_4_6->reestablishpdcp->value;
1906 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 1;
1908 SgNB_ack_for_add_mod_for_ue->reestablishPDCP_exists = 0;
1910 SgNB_ack_for_add_mod_for_ue->drb_Identity = node_4_6->drb_identity;
1911 SgNB_ack_for_add_mod_for_ue->eps_BearerIdentity = node_4_6->eps_beareridentity;
1912 rts_fta_process_packet(&cur_packet);
1919 // --------------------------------------------------
1920 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
1922 SgNB_ack_for_ue_measurements = (struct _SgNB_ack_for_ue_measurements *)(cur_packet.record.packed.values);
1923 cur_packet.schema = 505;
1924 node_5_0 = node_4_0;
1925 ts_lo = hdr->header->timestamp & 0xffffffff;
1926 ts_hi = hdr->header->timestamp >> 32;
1927 SgNB_ack_for_ue_measurements->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
1928 if(hdr->header->gnbid==NULL)
1929 SgNB_ack_for_ue_measurements->gnb_id = empty_string;
1931 SgNB_ack_for_ue_measurements->gnb_id = hdr->header->gnbid->value;
1933 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID = node_5_0->id_menb_ue_x2ap_id;
1934 SgNB_ack_for_ue_measurements->id_SgNB_UE_X2AP_ID = node_5_0->id_sgnb_ue_x2ap_id;
1935 if(node_5_0->id_menb_ue_x2ap_id_extension){
1936 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = node_5_0->id_menb_ue_x2ap_id_extension->value;
1938 SgNB_ack_for_ue_measurements->id_MeNB_UE_X2AP_ID_Extension = 0;
1940 node_5_1 = node_5_0->id_sgnbtomenbcontainer;
1941 if(node_5_0->id_sgnbtomenbcontainer){
1942 node_5_2 = node_5_1->criticalextensionschoice1;
1943 if(node_5_1->criticalextensionschoice1){
1944 node_5_3 = node_5_2->protocolies;
1945 if(node_5_2->protocolies){
1946 node_5_4 = node_5_3->candidatecellinfolistsn;
1947 if(node_5_3->candidatecellinfolistsn){
1948 for(i_5_5=0;i_5_5<node_5_4->n_items; i_5_5++){
1949 node_5_5 = node_5_4->items[i_5_5];
1950 if(node_5_5->ssbfrequency){
1951 SgNB_ack_for_ue_measurements->ssbFrequency = node_5_5->ssbfrequency->value;
1952 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 1;
1954 SgNB_ack_for_ue_measurements->ssbFrequency_exists = 0;
1956 if(node_5_5->reffreqcsi_rs){
1957 SgNB_ack_for_ue_measurements->refFreqCSI_RS = node_5_5->reffreqcsi_rs->value;
1958 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 1;
1960 SgNB_ack_for_ue_measurements->refFreqCSI_RS_exists = 0;
1962 node_5_6 = node_5_5->measresultservingcell;
1963 if(node_5_5->measresultservingcell){
1964 if(node_5_6->physcellid){
1965 SgNB_ack_for_ue_measurements->physCellId = node_5_6->physcellid->value;
1966 SgNB_ack_for_ue_measurements->physCellId_exists = 1;
1968 SgNB_ack_for_ue_measurements->physCellId_exists = 0;
1970 node_5_7 = node_5_6->measresult;
1971 if(node_5_6->measresult){
1972 node_5_8 = node_5_7->cellresults;
1973 if(node_5_7->cellresults){
1974 node_5_9 = node_5_8->resultscsi_rs_cell;
1975 if(node_5_8->resultscsi_rs_cell){
1977 SgNB_ack_for_ue_measurements->rsrq = node_5_9->rsrq->value;
1978 SgNB_ack_for_ue_measurements->rsrq_exists = 1;
1980 SgNB_ack_for_ue_measurements->rsrq_exists = 0;
1983 SgNB_ack_for_ue_measurements->rsrp = node_5_9->rsrp->value;
1984 SgNB_ack_for_ue_measurements->rsrp_exists = 1;
1986 SgNB_ack_for_ue_measurements->rsrp_exists = 0;
1989 SgNB_ack_for_ue_measurements->sinr = node_5_9->sinr->value;
1990 SgNB_ack_for_ue_measurements->sinr_exists = 1;
1992 SgNB_ack_for_ue_measurements->sinr_exists = 0;
1994 rts_fta_process_packet(&cur_packet);
2004 // --------------------------------------------------
2005 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2007 SgNB_ack_for_ue_beam_csi = (struct _SgNB_ack_for_ue_beam_csi *)(cur_packet.record.packed.values);
2008 cur_packet.schema = 506;
2009 node_6_0 = node_5_0;
2010 ts_lo = hdr->header->timestamp & 0xffffffff;
2011 ts_hi = hdr->header->timestamp >> 32;
2012 SgNB_ack_for_ue_beam_csi->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2013 if(hdr->header->gnbid==NULL)
2014 SgNB_ack_for_ue_beam_csi->gnb_id = empty_string;
2016 SgNB_ack_for_ue_beam_csi->gnb_id = hdr->header->gnbid->value;
2018 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID = node_6_0->id_menb_ue_x2ap_id;
2019 SgNB_ack_for_ue_beam_csi->id_SgNB_UE_X2AP_ID = node_6_0->id_sgnb_ue_x2ap_id;
2020 if(node_6_0->id_menb_ue_x2ap_id_extension){
2021 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = node_6_0->id_menb_ue_x2ap_id_extension->value;
2023 SgNB_ack_for_ue_beam_csi->id_MeNB_UE_X2AP_ID_Extension = 0;
2025 node_6_1 = node_6_0->id_sgnbtomenbcontainer;
2026 if(node_6_0->id_sgnbtomenbcontainer){
2027 node_6_2 = node_6_1->criticalextensionschoice1;
2028 if(node_6_1->criticalextensionschoice1){
2029 node_6_3 = node_6_2->protocolies;
2030 if(node_6_2->protocolies){
2031 node_6_4 = node_6_3->candidatecellinfolistsn;
2032 if(node_6_3->candidatecellinfolistsn){
2033 for(i_6_5=0;i_6_5<node_6_4->n_items; i_6_5++){
2034 node_6_5 = node_6_4->items[i_6_5];
2035 if(node_6_5->ssbfrequency){
2036 SgNB_ack_for_ue_beam_csi->ssbFrequency = node_6_5->ssbfrequency->value;
2037 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 1;
2039 SgNB_ack_for_ue_beam_csi->ssbFrequency_exists = 0;
2041 if(node_6_5->reffreqcsi_rs){
2042 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS = node_6_5->reffreqcsi_rs->value;
2043 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 1;
2045 SgNB_ack_for_ue_beam_csi->refFreqCSI_RS_exists = 0;
2047 node_6_6 = node_6_5->measresultservingcell;
2048 if(node_6_5->measresultservingcell){
2049 if(node_6_6->physcellid){
2050 SgNB_ack_for_ue_beam_csi->physCellId = node_6_6->physcellid->value;
2051 SgNB_ack_for_ue_beam_csi->physCellId_exists = 1;
2053 SgNB_ack_for_ue_beam_csi->physCellId_exists = 0;
2055 node_6_7 = node_6_6->measresult;
2056 if(node_6_6->measresult){
2057 node_6_8 = node_6_7->rsindexresults;
2058 if(node_6_7->rsindexresults){
2059 node_6_9 = node_6_8->resultscsi_rs_indexes;
2060 if(node_6_8->resultscsi_rs_indexes){
2061 for(i_6_10=0;i_6_10<node_6_9->n_items; i_6_10++){
2062 node_6_10 = node_6_9->items[i_6_10];
2063 SgNB_ack_for_ue_beam_csi->csi_rs_index = node_6_10->csi_rs_index;
2064 node_6_11 = node_6_10->csi_rs_results;
2065 if(node_6_10->csi_rs_results){
2066 if(node_6_11->rsrq){
2067 SgNB_ack_for_ue_beam_csi->rsrq = node_6_11->rsrq->value;
2068 SgNB_ack_for_ue_beam_csi->rsrq_exists = 1;
2070 SgNB_ack_for_ue_beam_csi->rsrq_exists = 0;
2072 if(node_6_11->rsrp){
2073 SgNB_ack_for_ue_beam_csi->rsrp = node_6_11->rsrp->value;
2074 SgNB_ack_for_ue_beam_csi->rsrp_exists = 1;
2076 SgNB_ack_for_ue_beam_csi->rsrp_exists = 0;
2078 if(node_6_11->sinr){
2079 SgNB_ack_for_ue_beam_csi->sinr = node_6_11->sinr->value;
2080 SgNB_ack_for_ue_beam_csi->sinr_exists = 1;
2082 SgNB_ack_for_ue_beam_csi->sinr_exists = 0;
2084 rts_fta_process_packet(&cur_packet);
2096 // --------------------------------------------------
2097 // --- Specialized processing for .proto sgnb_addition_request_acknowledge.json, path sgnb_addition_ack.json
2099 SgNB_ack_for_ue_beam_ssb = (struct _SgNB_ack_for_ue_beam_ssb *)(cur_packet.record.packed.values);
2100 cur_packet.schema = 507;
2101 node_7_0 = node_6_0;
2102 ts_lo = hdr->header->timestamp & 0xffffffff;
2103 ts_hi = hdr->header->timestamp >> 32;
2104 SgNB_ack_for_ue_beam_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2105 if(hdr->header->gnbid==NULL)
2106 SgNB_ack_for_ue_beam_ssb->gnb_id = empty_string;
2108 SgNB_ack_for_ue_beam_ssb->gnb_id = hdr->header->gnbid->value;
2110 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID = node_7_0->id_menb_ue_x2ap_id;
2111 SgNB_ack_for_ue_beam_ssb->id_SgNB_UE_X2AP_ID = node_7_0->id_sgnb_ue_x2ap_id;
2112 if(node_7_0->id_menb_ue_x2ap_id_extension){
2113 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_0->id_menb_ue_x2ap_id_extension->value;
2115 SgNB_ack_for_ue_beam_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2117 node_7_1 = node_7_0->id_sgnbtomenbcontainer;
2118 if(node_7_0->id_sgnbtomenbcontainer){
2119 node_7_2 = node_7_1->criticalextensionschoice1;
2120 if(node_7_1->criticalextensionschoice1){
2121 node_7_3 = node_7_2->protocolies;
2122 if(node_7_2->protocolies){
2123 node_7_4 = node_7_3->candidatecellinfolistsn;
2124 if(node_7_3->candidatecellinfolistsn){
2125 for(i_7_5=0;i_7_5<node_7_4->n_items; i_7_5++){
2126 node_7_5 = node_7_4->items[i_7_5];
2127 if(node_7_5->ssbfrequency){
2128 SgNB_ack_for_ue_beam_ssb->ssbFrequency = node_7_5->ssbfrequency->value;
2129 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 1;
2131 SgNB_ack_for_ue_beam_ssb->ssbFrequency_exists = 0;
2133 if(node_7_5->reffreqcsi_rs){
2134 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS = node_7_5->reffreqcsi_rs->value;
2135 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 1;
2137 SgNB_ack_for_ue_beam_ssb->refFreqCSI_RS_exists = 0;
2139 node_7_6 = node_7_5->measresultservingcell;
2140 if(node_7_5->measresultservingcell){
2141 if(node_7_6->physcellid){
2142 SgNB_ack_for_ue_beam_ssb->physCellId = node_7_6->physcellid->value;
2143 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 1;
2145 SgNB_ack_for_ue_beam_ssb->physCellId_exists = 0;
2147 node_7_7 = node_7_6->measresult;
2148 if(node_7_6->measresult){
2149 node_7_8 = node_7_7->rsindexresults;
2150 if(node_7_7->rsindexresults){
2151 node_7_9 = node_7_8->resultsssb_indexes;
2152 if(node_7_8->resultsssb_indexes){
2153 for(i_7_10=0;i_7_10<node_7_9->n_items; i_7_10++){
2154 node_7_10 = node_7_9->items[i_7_10];
2155 SgNB_ack_for_ue_beam_ssb->ssb_Index = node_7_10->ssb_index;
2156 node_7_11 = node_7_10->ssb_results;
2157 if(node_7_10->ssb_results){
2158 if(node_7_11->rsrq){
2159 SgNB_ack_for_ue_beam_ssb->rsrq = node_7_11->rsrq->value;
2160 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 1;
2162 SgNB_ack_for_ue_beam_ssb->rsrq_exists = 0;
2164 if(node_7_11->rsrp){
2165 SgNB_ack_for_ue_beam_ssb->rsrp = node_7_11->rsrp->value;
2166 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 1;
2168 SgNB_ack_for_ue_beam_ssb->rsrp_exists = 0;
2170 if(node_7_11->sinr){
2171 SgNB_ack_for_ue_beam_ssb->sinr = node_7_11->sinr->value;
2172 SgNB_ack_for_ue_beam_ssb->sinr_exists = 1;
2174 SgNB_ack_for_ue_beam_ssb->sinr_exists = 0;
2176 rts_fta_process_packet(&cur_packet);
2188 streaming_protobufs__sg_nbaddition_request_acknowledge__free_unpacked(node_0_0,NULL);
2192 gs_uint32_t process_buffer_SGNB_ADDITION_REQ(gs_uint8_t * buffer, gs_uint32_t buflen){
2193 char *empty_string = "";
2194 unsigned long long int ts_lo, ts_hi;
2195 StreamingProtobufs__X2APStreaming *hdr = NULL;
2196 // ------------------------------------------
2197 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2198 struct _sgnb_addreq_gtp_teid *sgnb_addreq_gtp_teid = NULL;
2199 StreamingProtobufs__SgNBAdditionRequest *node_0_0 = NULL;
2200 StreamingProtobufs__SgNBAdditionRequestIEs *node_0_1 = NULL;
2201 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_0_2 = NULL;
2202 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_0_3 = NULL;
2204 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_0_4 = NULL;
2205 StreamingProtobufs__ERABsToBeAddedSgNBAddReqSgNBPDCPpresent *node_0_5 = NULL;
2206 StreamingProtobufs__GTPtunnelEndpoint *node_0_6 = NULL;
2207 // ------------------------------------------
2208 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2209 struct _sgnb_addreq_for_ue *sgnb_addreq_for_ue = NULL;
2210 StreamingProtobufs__SgNBAdditionRequest *node_1_0 = NULL;
2211 StreamingProtobufs__SgNBAdditionRequestIEs *node_1_1 = NULL;
2212 StreamingProtobufs__ECGI *node_1_2 = NULL;
2213 // ------------------------------------------
2214 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2215 struct _sgnb_addreq_for_ue_bearers *sgnb_addreq_for_ue_bearers = NULL;
2216 StreamingProtobufs__SgNBAdditionRequest *node_2_0 = NULL;
2217 StreamingProtobufs__SgNBAdditionRequestIEs *node_2_1 = NULL;
2218 StreamingProtobufs__ERABsToBeAddedSgNBAddReqList *node_2_2 = NULL;
2219 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItemIEs *node_2_3 = NULL;
2221 StreamingProtobufs__ERABsToBeAddedSgNBAddReqItem *node_2_4 = NULL;
2222 // ------------------------------------------
2223 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2224 struct _sgnb_addreq_for_ue_sn_serv_ssb *sgnb_addreq_for_ue_sn_serv_ssb = NULL;
2225 StreamingProtobufs__SgNBAdditionRequest *node_3_0 = NULL;
2226 StreamingProtobufs__SgNBAdditionRequestIEs *node_3_1 = NULL;
2227 StreamingProtobufs__CGConfigInfo *node_3_2 = NULL;
2228 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_3_3 = NULL;
2229 StreamingProtobufs__CGConfigInfoIEs *node_3_4 = NULL;
2230 StreamingProtobufs__MeasResultList2NR *node_3_5 = NULL;
2231 StreamingProtobufs__MeasResult2NR *node_3_6 = NULL;
2233 StreamingProtobufs__MeasResultNR *node_3_7 = NULL;
2234 StreamingProtobufs__MeasResult *node_3_8 = NULL;
2235 StreamingProtobufs__CellResults *node_3_9 = NULL;
2236 StreamingProtobufs__MeasQuantityResults *node_3_10 = NULL;
2237 // ------------------------------------------
2238 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2239 struct _sgnb_addreq_for_ue_sn_serv_csi_rs *sgnb_addreq_for_ue_sn_serv_csi_rs = NULL;
2240 StreamingProtobufs__SgNBAdditionRequest *node_4_0 = NULL;
2241 StreamingProtobufs__SgNBAdditionRequestIEs *node_4_1 = NULL;
2242 StreamingProtobufs__CGConfigInfo *node_4_2 = NULL;
2243 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_4_3 = NULL;
2244 StreamingProtobufs__CGConfigInfoIEs *node_4_4 = NULL;
2245 StreamingProtobufs__MeasResultList2NR *node_4_5 = NULL;
2246 StreamingProtobufs__MeasResult2NR *node_4_6 = NULL;
2248 StreamingProtobufs__MeasResultNR *node_4_7 = NULL;
2249 StreamingProtobufs__MeasResult *node_4_8 = NULL;
2250 StreamingProtobufs__CellResults *node_4_9 = NULL;
2251 StreamingProtobufs__MeasQuantityResults *node_4_10 = NULL;
2252 // ------------------------------------------
2253 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2254 struct _sgnb_addreq_for_ue_mn_serv_ssb *sgnb_addreq_for_ue_mn_serv_ssb = NULL;
2255 StreamingProtobufs__SgNBAdditionRequest *node_5_0 = NULL;
2256 StreamingProtobufs__SgNBAdditionRequestIEs *node_5_1 = NULL;
2257 StreamingProtobufs__CGConfigInfo *node_5_2 = NULL;
2258 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_5_3 = NULL;
2259 StreamingProtobufs__CGConfigInfoIEs *node_5_4 = NULL;
2260 StreamingProtobufs__MeasResultList2NR *node_5_5 = NULL;
2261 StreamingProtobufs__MeasResult2NR *node_5_6 = NULL;
2263 StreamingProtobufs__MeasResultNR *node_5_7 = NULL;
2264 StreamingProtobufs__MeasResult *node_5_8 = NULL;
2265 StreamingProtobufs__CellResults *node_5_9 = NULL;
2266 StreamingProtobufs__MeasQuantityResults *node_5_10 = NULL;
2267 // ------------------------------------------
2268 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2269 struct _sgnb_addreq_for_ue_mn_serv_csi_rs *sgnb_addreq_for_ue_mn_serv_csi_rs = NULL;
2270 StreamingProtobufs__SgNBAdditionRequest *node_6_0 = NULL;
2271 StreamingProtobufs__SgNBAdditionRequestIEs *node_6_1 = NULL;
2272 StreamingProtobufs__CGConfigInfo *node_6_2 = NULL;
2273 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_6_3 = NULL;
2274 StreamingProtobufs__CGConfigInfoIEs *node_6_4 = NULL;
2275 StreamingProtobufs__MeasResultList2NR *node_6_5 = NULL;
2276 StreamingProtobufs__MeasResult2NR *node_6_6 = NULL;
2278 StreamingProtobufs__MeasResultNR *node_6_7 = NULL;
2279 StreamingProtobufs__MeasResult *node_6_8 = NULL;
2280 StreamingProtobufs__CellResults *node_6_9 = NULL;
2281 StreamingProtobufs__MeasQuantityResults *node_6_10 = NULL;
2282 // ------------------------------------------
2283 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2284 struct _sgnb_addreq_for_ue_sn_neigh_ssb *sgnb_addreq_for_ue_sn_neigh_ssb = NULL;
2285 StreamingProtobufs__SgNBAdditionRequest *node_7_0 = NULL;
2286 StreamingProtobufs__SgNBAdditionRequestIEs *node_7_1 = NULL;
2287 StreamingProtobufs__CGConfigInfo *node_7_2 = NULL;
2288 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_7_3 = NULL;
2289 StreamingProtobufs__CGConfigInfoIEs *node_7_4 = NULL;
2290 StreamingProtobufs__MeasResultList2NR *node_7_5 = NULL;
2291 StreamingProtobufs__MeasResult2NR *node_7_6 = NULL;
2293 StreamingProtobufs__MeasResultListNR *node_7_7 = NULL;
2294 StreamingProtobufs__MeasResultNR *node_7_8 = NULL;
2296 StreamingProtobufs__MeasResult *node_7_9 = NULL;
2297 StreamingProtobufs__CellResults *node_7_10 = NULL;
2298 StreamingProtobufs__MeasQuantityResults *node_7_11 = NULL;
2299 // ------------------------------------------
2300 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2301 struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *sgnb_addreq_for_ue_sn_neigh_csi_rs = NULL;
2302 StreamingProtobufs__SgNBAdditionRequest *node_8_0 = NULL;
2303 StreamingProtobufs__SgNBAdditionRequestIEs *node_8_1 = NULL;
2304 StreamingProtobufs__CGConfigInfo *node_8_2 = NULL;
2305 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_8_3 = NULL;
2306 StreamingProtobufs__CGConfigInfoIEs *node_8_4 = NULL;
2307 StreamingProtobufs__MeasResultList2NR *node_8_5 = NULL;
2308 StreamingProtobufs__MeasResult2NR *node_8_6 = NULL;
2310 StreamingProtobufs__MeasResultListNR *node_8_7 = NULL;
2311 StreamingProtobufs__MeasResultNR *node_8_8 = NULL;
2313 StreamingProtobufs__MeasResult *node_8_9 = NULL;
2314 StreamingProtobufs__CellResults *node_8_10 = NULL;
2315 StreamingProtobufs__MeasQuantityResults *node_8_11 = NULL;
2316 // ------------------------------------------
2317 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2318 struct _sgnb_addreq_for_ue_mn_neigh_ssb *sgnb_addreq_for_ue_mn_neigh_ssb = NULL;
2319 StreamingProtobufs__SgNBAdditionRequest *node_9_0 = NULL;
2320 StreamingProtobufs__SgNBAdditionRequestIEs *node_9_1 = NULL;
2321 StreamingProtobufs__CGConfigInfo *node_9_2 = NULL;
2322 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_9_3 = NULL;
2323 StreamingProtobufs__CGConfigInfoIEs *node_9_4 = NULL;
2324 StreamingProtobufs__MeasResultList2NR *node_9_5 = NULL;
2325 StreamingProtobufs__MeasResult2NR *node_9_6 = NULL;
2327 StreamingProtobufs__MeasResultListNR *node_9_7 = NULL;
2328 StreamingProtobufs__MeasResultNR *node_9_8 = NULL;
2330 StreamingProtobufs__MeasResult *node_9_9 = NULL;
2331 StreamingProtobufs__CellResults *node_9_10 = NULL;
2332 StreamingProtobufs__MeasQuantityResults *node_9_11 = NULL;
2333 // ------------------------------------------
2334 // --- Variables for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2335 struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *sgnb_addreq_for_ue_mn_neigh_csi_rs = NULL;
2336 StreamingProtobufs__SgNBAdditionRequest *node_10_0 = NULL;
2337 StreamingProtobufs__SgNBAdditionRequestIEs *node_10_1 = NULL;
2338 StreamingProtobufs__CGConfigInfo *node_10_2 = NULL;
2339 StreamingProtobufs__CGConfigInfoCriticalExtensionsChoice1 *node_10_3 = NULL;
2340 StreamingProtobufs__CGConfigInfoIEs *node_10_4 = NULL;
2341 StreamingProtobufs__MeasResultList2NR *node_10_5 = NULL;
2342 StreamingProtobufs__MeasResult2NR *node_10_6 = NULL;
2344 StreamingProtobufs__MeasResultListNR *node_10_7 = NULL;
2345 StreamingProtobufs__MeasResultNR *node_10_8 = NULL;
2347 StreamingProtobufs__MeasResult *node_10_9 = NULL;
2348 StreamingProtobufs__CellResults *node_10_10 = NULL;
2349 StreamingProtobufs__MeasQuantityResults *node_10_11 = NULL;
2351 // --------------------------------------------------
2352 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2354 sgnb_addreq_gtp_teid = (struct _sgnb_addreq_gtp_teid *)(cur_packet.record.packed.values);
2355 cur_packet.schema = 10001;
2357 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
2358 if(hdr==NULL) return -1;
2360 node_0_0 = hdr->sgnbadditionrequest;
2361 if(node_0_0==NULL) return -2;
2362 if(hdr->header==NULL) return -3;
2364 ts_lo = hdr->header->timestamp & 0xffffffff;
2365 ts_hi = hdr->header->timestamp >> 32;
2366 sgnb_addreq_gtp_teid->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2367 if(hdr->header->gnbid==NULL)
2368 sgnb_addreq_gtp_teid->gnb_id = empty_string;
2370 sgnb_addreq_gtp_teid->gnb_id = hdr->header->gnbid->value;
2372 node_0_1 = node_0_0->protocolies;
2373 if(node_0_0->protocolies){
2374 sgnb_addreq_gtp_teid->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
2375 node_0_2 = node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2376 if(node_0_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2377 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
2378 node_0_3 = node_0_2->items[i_0_3];
2379 node_0_4 = node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2380 if(node_0_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2381 node_0_5 = node_0_4->sgnbpdcppresent;
2382 if(node_0_4->sgnbpdcppresent){
2383 node_0_6 = node_0_5->s1_ul_gtptunnelendpoint;
2384 if(node_0_5->s1_ul_gtptunnelendpoint){
2385 sgnb_addreq_gtp_teid->gTP_TEID = node_0_6->gtp_teid;
2386 sgnb_addreq_gtp_teid->transportLayerAddress = node_0_6->transportlayeraddress;
2387 rts_fta_process_packet(&cur_packet);
2394 // --------------------------------------------------
2395 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2397 sgnb_addreq_for_ue = (struct _sgnb_addreq_for_ue *)(cur_packet.record.packed.values);
2398 cur_packet.schema = 401;
2399 node_1_0 = node_0_0;
2400 ts_lo = hdr->header->timestamp & 0xffffffff;
2401 ts_hi = hdr->header->timestamp >> 32;
2402 sgnb_addreq_for_ue->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2403 if(hdr->header->gnbid==NULL)
2404 sgnb_addreq_for_ue->gnb_id = empty_string;
2406 sgnb_addreq_for_ue->gnb_id = hdr->header->gnbid->value;
2408 node_1_1 = node_1_0->protocolies;
2409 if(node_1_0->protocolies){
2410 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID = node_1_1->id_menb_ue_x2ap_id;
2411 if(node_1_1->id_sgnbueaggregatemaximumbitrate){
2412 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink = node_1_1->id_sgnbueaggregatemaximumbitrate->ueaggregatemaximumbitratedownlink;
2413 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 1;
2415 sgnb_addreq_for_ue->uEaggregateMaximumBitRateDownlink_exists = 0;
2417 if(node_1_1->id_menb_ue_x2ap_id_extension){
2418 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = node_1_1->id_menb_ue_x2ap_id_extension->value;
2420 sgnb_addreq_for_ue->id_MeNB_UE_X2AP_ID_Extension = 0;
2422 node_1_2 = node_1_1->id_menbcell_id;
2423 if(node_1_1->id_menbcell_id){
2424 sgnb_addreq_for_ue->eUTRANcellIdentifier = node_1_2->eutrancellidentifier;
2425 sgnb_addreq_for_ue->pLMN_Identity = node_1_2->plmn_identity;
2426 rts_fta_process_packet(&cur_packet);
2429 // --------------------------------------------------
2430 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2432 sgnb_addreq_for_ue_bearers = (struct _sgnb_addreq_for_ue_bearers *)(cur_packet.record.packed.values);
2433 cur_packet.schema = 402;
2434 node_2_0 = node_1_0;
2435 ts_lo = hdr->header->timestamp & 0xffffffff;
2436 ts_hi = hdr->header->timestamp >> 32;
2437 sgnb_addreq_for_ue_bearers->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2438 if(hdr->header->gnbid==NULL)
2439 sgnb_addreq_for_ue_bearers->gnb_id = empty_string;
2441 sgnb_addreq_for_ue_bearers->gnb_id = hdr->header->gnbid->value;
2443 node_2_1 = node_2_0->protocolies;
2444 if(node_2_0->protocolies){
2445 sgnb_addreq_for_ue_bearers->id_MeNB_UE_X2AP_ID = node_2_1->id_menb_ue_x2ap_id;
2446 node_2_2 = node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist;
2447 if(node_2_1->id_e_rabs_tobeadded_sgnbaddreqlist){
2448 for(i_2_3=0;i_2_3<node_2_2->n_items; i_2_3++){
2449 node_2_3 = node_2_2->items[i_2_3];
2450 node_2_4 = node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item;
2451 if(node_2_3->id_e_rabs_tobeadded_sgnbaddreq_item){
2452 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2453 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitratedl;
2455 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateDL = 0;
2457 if(node_2_4->en_dc_resourceconfiguration){
2458 sgnb_addreq_for_ue_bearers->pDCPatSgNB = node_2_4->en_dc_resourceconfiguration->pdcpatsgnb;
2460 sgnb_addreq_for_ue_bearers->pDCPatSgNB = -1;
2462 sgnb_addreq_for_ue_bearers->drb_ID = node_2_4->drb_id;
2463 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){
2464 sgnb_addreq_for_ue_bearers->priorityLevel = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->prioritylevel;
2466 sgnb_addreq_for_ue_bearers->priorityLevel = 0;
2468 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2469 sgnb_addreq_for_ue_bearers->gTP_TEID = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->gtp_teid;
2471 sgnb_addreq_for_ue_bearers->gTP_TEID.data = "";
2472 sgnb_addreq_for_ue_bearers->gTP_TEID.len = 1;
2474 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){
2475 sgnb_addreq_for_ue_bearers->pre_emptionCapability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptioncapability->value;
2477 sgnb_addreq_for_ue_bearers->pre_emptionCapability = -1;
2479 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2480 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitrateul;
2482 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateUL = 0;
2484 if(node_2_4->en_dc_resourceconfiguration){
2485 sgnb_addreq_for_ue_bearers->mCGresources = node_2_4->en_dc_resourceconfiguration->mcgresources;
2487 sgnb_addreq_for_ue_bearers->mCGresources = -1;
2489 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg){
2490 sgnb_addreq_for_ue_bearers->transportLayerAddress = node_2_4->sgnbpdcppresent->menb_dl_gtp_teidatmcg->transportlayeraddress;
2492 sgnb_addreq_for_ue_bearers->transportLayerAddress.data = "";
2493 sgnb_addreq_for_ue_bearers->transportLayerAddress.len = 1;
2495 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){
2496 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitrateul;
2498 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateUL = 0;
2500 if(node_2_4->en_dc_resourceconfiguration){
2501 sgnb_addreq_for_ue_bearers->sCGresources = node_2_4->en_dc_resourceconfiguration->scgresources;
2503 sgnb_addreq_for_ue_bearers->sCGresources = -1;
2505 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2506 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_maximumbitrateul;
2508 sgnb_addreq_for_ue_bearers->MCG_eRAB_MaximumBitrateUL = 0;
2510 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){
2511 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitrateul;
2513 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateUL = 0;
2515 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){
2516 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->allocationandretentionpriority->pre_emptionvulnerability->value;
2518 sgnb_addreq_for_ue_bearers->pre_emptionVulnerability = -1;
2520 sgnb_addreq_for_ue_bearers->e_RAB_ID = node_2_4->e_rab_id;
2521 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters){
2522 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->max_mcg_admit_e_rab_level_qos_parameters->e_rab_guaranteedbitratedl;
2524 sgnb_addreq_for_ue_bearers->MCG_eRAB_GuaranteedBitrateDL = 0;
2526 if(node_2_4->sgnbpdcppresent && node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters){
2527 sgnb_addreq_for_ue_bearers->qCI = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->qci;
2529 sgnb_addreq_for_ue_bearers->qCI = 0;
2531 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){
2532 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_maximumbitratedl;
2534 sgnb_addreq_for_ue_bearers->full_eRAB_MaximumBitrateDL = 0;
2536 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){
2537 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = node_2_4->sgnbpdcppresent->full_e_rab_level_qos_parameters->gbrqosinformation->e_rab_guaranteedbitratedl;
2539 sgnb_addreq_for_ue_bearers->full_eRAB_GuaranteedBitrateDL = 0;
2541 rts_fta_process_packet(&cur_packet);
2546 // --------------------------------------------------
2547 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2549 sgnb_addreq_for_ue_sn_serv_ssb = (struct _sgnb_addreq_for_ue_sn_serv_ssb *)(cur_packet.record.packed.values);
2550 cur_packet.schema = 403;
2551 node_3_0 = node_2_0;
2552 ts_lo = hdr->header->timestamp & 0xffffffff;
2553 ts_hi = hdr->header->timestamp >> 32;
2554 sgnb_addreq_for_ue_sn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2555 if(hdr->header->gnbid==NULL)
2556 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = empty_string;
2558 sgnb_addreq_for_ue_sn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2560 node_3_1 = node_3_0->protocolies;
2561 if(node_3_0->protocolies){
2562 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID = node_3_1->id_menb_ue_x2ap_id;
2563 if(node_3_1->id_menb_ue_x2ap_id_extension){
2564 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_3_1->id_menb_ue_x2ap_id_extension->value;
2566 sgnb_addreq_for_ue_sn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2568 node_3_2 = node_3_1->id_menbtosgnbcontainer;
2569 if(node_3_1->id_menbtosgnbcontainer){
2570 node_3_3 = node_3_2->criticalextensionschoice1;
2571 if(node_3_2->criticalextensionschoice1){
2572 node_3_4 = node_3_3->protocolies;
2573 if(node_3_3->protocolies){
2574 node_3_5 = node_3_4->candidatecellinfolistsn;
2575 if(node_3_4->candidatecellinfolistsn){
2576 for(i_3_6=0;i_3_6<node_3_5->n_items; i_3_6++){
2577 node_3_6 = node_3_5->items[i_3_6];
2578 node_3_7 = node_3_6->measresultservingcell;
2579 if(node_3_6->measresultservingcell){
2580 if(node_3_7->physcellid){
2581 sgnb_addreq_for_ue_sn_serv_ssb->physCellId = node_3_7->physcellid->value;
2582 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 1;
2584 sgnb_addreq_for_ue_sn_serv_ssb->physCellId_exists = 0;
2586 node_3_8 = node_3_7->measresult;
2587 if(node_3_7->measresult){
2588 node_3_9 = node_3_8->cellresults;
2589 if(node_3_8->cellresults){
2590 node_3_10 = node_3_9->resultsssb_cell;
2591 if(node_3_9->resultsssb_cell){
2592 if(node_3_10->rsrq){
2593 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = node_3_10->rsrq->value;
2595 sgnb_addreq_for_ue_sn_serv_ssb->rsrq = 128;
2597 if(node_3_10->rsrp){
2598 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = node_3_10->rsrp->value;
2600 sgnb_addreq_for_ue_sn_serv_ssb->rsrp = 128;
2602 if(node_3_10->sinr){
2603 sgnb_addreq_for_ue_sn_serv_ssb->sinr = node_3_10->sinr->value;
2605 sgnb_addreq_for_ue_sn_serv_ssb->sinr = 128;
2607 rts_fta_process_packet(&cur_packet);
2618 // --------------------------------------------------
2619 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2621 sgnb_addreq_for_ue_sn_serv_csi_rs = (struct _sgnb_addreq_for_ue_sn_serv_csi_rs *)(cur_packet.record.packed.values);
2622 cur_packet.schema = 404;
2623 node_4_0 = node_3_0;
2624 ts_lo = hdr->header->timestamp & 0xffffffff;
2625 ts_hi = hdr->header->timestamp >> 32;
2626 sgnb_addreq_for_ue_sn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2627 if(hdr->header->gnbid==NULL)
2628 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = empty_string;
2630 sgnb_addreq_for_ue_sn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2632 node_4_1 = node_4_0->protocolies;
2633 if(node_4_0->protocolies){
2634 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_4_1->id_menb_ue_x2ap_id;
2635 if(node_4_1->id_menb_ue_x2ap_id_extension){
2636 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_4_1->id_menb_ue_x2ap_id_extension->value;
2638 sgnb_addreq_for_ue_sn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2640 node_4_2 = node_4_1->id_menbtosgnbcontainer;
2641 if(node_4_1->id_menbtosgnbcontainer){
2642 node_4_3 = node_4_2->criticalextensionschoice1;
2643 if(node_4_2->criticalextensionschoice1){
2644 node_4_4 = node_4_3->protocolies;
2645 if(node_4_3->protocolies){
2646 node_4_5 = node_4_4->candidatecellinfolistsn;
2647 if(node_4_4->candidatecellinfolistsn){
2648 for(i_4_6=0;i_4_6<node_4_5->n_items; i_4_6++){
2649 node_4_6 = node_4_5->items[i_4_6];
2650 node_4_7 = node_4_6->measresultservingcell;
2651 if(node_4_6->measresultservingcell){
2652 if(node_4_7->physcellid){
2653 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId = node_4_7->physcellid->value;
2654 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 1;
2656 sgnb_addreq_for_ue_sn_serv_csi_rs->physCellId_exists = 0;
2658 node_4_8 = node_4_7->measresult;
2659 if(node_4_7->measresult){
2660 node_4_9 = node_4_8->cellresults;
2661 if(node_4_8->cellresults){
2662 node_4_10 = node_4_9->resultscsi_rs_cell;
2663 if(node_4_9->resultscsi_rs_cell){
2664 if(node_4_10->rsrq){
2665 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = node_4_10->rsrq->value;
2667 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrq = 128;
2669 if(node_4_10->rsrp){
2670 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = node_4_10->rsrp->value;
2672 sgnb_addreq_for_ue_sn_serv_csi_rs->rsrp = 128;
2674 if(node_4_10->sinr){
2675 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = node_4_10->sinr->value;
2677 sgnb_addreq_for_ue_sn_serv_csi_rs->sinr = 128;
2679 rts_fta_process_packet(&cur_packet);
2690 // --------------------------------------------------
2691 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2693 sgnb_addreq_for_ue_mn_serv_ssb = (struct _sgnb_addreq_for_ue_mn_serv_ssb *)(cur_packet.record.packed.values);
2694 cur_packet.schema = 405;
2695 node_5_0 = node_4_0;
2696 ts_lo = hdr->header->timestamp & 0xffffffff;
2697 ts_hi = hdr->header->timestamp >> 32;
2698 sgnb_addreq_for_ue_mn_serv_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2699 if(hdr->header->gnbid==NULL)
2700 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = empty_string;
2702 sgnb_addreq_for_ue_mn_serv_ssb->gnb_id = hdr->header->gnbid->value;
2704 node_5_1 = node_5_0->protocolies;
2705 if(node_5_0->protocolies){
2706 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID = node_5_1->id_menb_ue_x2ap_id;
2707 if(node_5_1->id_menb_ue_x2ap_id_extension){
2708 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = node_5_1->id_menb_ue_x2ap_id_extension->value;
2710 sgnb_addreq_for_ue_mn_serv_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2712 node_5_2 = node_5_1->id_menbtosgnbcontainer;
2713 if(node_5_1->id_menbtosgnbcontainer){
2714 node_5_3 = node_5_2->criticalextensionschoice1;
2715 if(node_5_2->criticalextensionschoice1){
2716 node_5_4 = node_5_3->protocolies;
2717 if(node_5_3->protocolies){
2718 node_5_5 = node_5_4->candidatecellinfolistmn;
2719 if(node_5_4->candidatecellinfolistmn){
2720 for(i_5_6=0;i_5_6<node_5_5->n_items; i_5_6++){
2721 node_5_6 = node_5_5->items[i_5_6];
2722 node_5_7 = node_5_6->measresultservingcell;
2723 if(node_5_6->measresultservingcell){
2724 if(node_5_7->physcellid){
2725 sgnb_addreq_for_ue_mn_serv_ssb->physCellId = node_5_7->physcellid->value;
2726 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 1;
2728 sgnb_addreq_for_ue_mn_serv_ssb->physCellId_exists = 0;
2730 node_5_8 = node_5_7->measresult;
2731 if(node_5_7->measresult){
2732 node_5_9 = node_5_8->cellresults;
2733 if(node_5_8->cellresults){
2734 node_5_10 = node_5_9->resultsssb_cell;
2735 if(node_5_9->resultsssb_cell){
2736 if(node_5_10->rsrq){
2737 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = node_5_10->rsrq->value;
2739 sgnb_addreq_for_ue_mn_serv_ssb->rsrq = 128;
2741 if(node_5_10->rsrp){
2742 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = node_5_10->rsrp->value;
2744 sgnb_addreq_for_ue_mn_serv_ssb->rsrp = 128;
2746 if(node_5_10->sinr){
2747 sgnb_addreq_for_ue_mn_serv_ssb->sinr = node_5_10->sinr->value;
2749 sgnb_addreq_for_ue_mn_serv_ssb->sinr = 128;
2751 rts_fta_process_packet(&cur_packet);
2762 // --------------------------------------------------
2763 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2765 sgnb_addreq_for_ue_mn_serv_csi_rs = (struct _sgnb_addreq_for_ue_mn_serv_csi_rs *)(cur_packet.record.packed.values);
2766 cur_packet.schema = 406;
2767 node_6_0 = node_5_0;
2768 ts_lo = hdr->header->timestamp & 0xffffffff;
2769 ts_hi = hdr->header->timestamp >> 32;
2770 sgnb_addreq_for_ue_mn_serv_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2771 if(hdr->header->gnbid==NULL)
2772 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = empty_string;
2774 sgnb_addreq_for_ue_mn_serv_csi_rs->gnb_id = hdr->header->gnbid->value;
2776 node_6_1 = node_6_0->protocolies;
2777 if(node_6_0->protocolies){
2778 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID = node_6_1->id_menb_ue_x2ap_id;
2779 if(node_6_1->id_menb_ue_x2ap_id_extension){
2780 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_6_1->id_menb_ue_x2ap_id_extension->value;
2782 sgnb_addreq_for_ue_mn_serv_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2784 node_6_2 = node_6_1->id_menbtosgnbcontainer;
2785 if(node_6_1->id_menbtosgnbcontainer){
2786 node_6_3 = node_6_2->criticalextensionschoice1;
2787 if(node_6_2->criticalextensionschoice1){
2788 node_6_4 = node_6_3->protocolies;
2789 if(node_6_3->protocolies){
2790 node_6_5 = node_6_4->candidatecellinfolistmn;
2791 if(node_6_4->candidatecellinfolistmn){
2792 for(i_6_6=0;i_6_6<node_6_5->n_items; i_6_6++){
2793 node_6_6 = node_6_5->items[i_6_6];
2794 node_6_7 = node_6_6->measresultservingcell;
2795 if(node_6_6->measresultservingcell){
2796 if(node_6_7->physcellid){
2797 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId = node_6_7->physcellid->value;
2798 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 1;
2800 sgnb_addreq_for_ue_mn_serv_csi_rs->physCellId_exists = 0;
2802 node_6_8 = node_6_7->measresult;
2803 if(node_6_7->measresult){
2804 node_6_9 = node_6_8->cellresults;
2805 if(node_6_8->cellresults){
2806 node_6_10 = node_6_9->resultscsi_rs_cell;
2807 if(node_6_9->resultscsi_rs_cell){
2808 if(node_6_10->rsrq){
2809 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = node_6_10->rsrq->value;
2811 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrq = 128;
2813 if(node_6_10->rsrp){
2814 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = node_6_10->rsrp->value;
2816 sgnb_addreq_for_ue_mn_serv_csi_rs->rsrp = 128;
2818 if(node_6_10->sinr){
2819 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = node_6_10->sinr->value;
2821 sgnb_addreq_for_ue_mn_serv_csi_rs->sinr = 128;
2823 rts_fta_process_packet(&cur_packet);
2834 // --------------------------------------------------
2835 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2837 sgnb_addreq_for_ue_sn_neigh_ssb = (struct _sgnb_addreq_for_ue_sn_neigh_ssb *)(cur_packet.record.packed.values);
2838 cur_packet.schema = 408;
2839 node_7_0 = node_6_0;
2840 ts_lo = hdr->header->timestamp & 0xffffffff;
2841 ts_hi = hdr->header->timestamp >> 32;
2842 sgnb_addreq_for_ue_sn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2843 if(hdr->header->gnbid==NULL)
2844 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = empty_string;
2846 sgnb_addreq_for_ue_sn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2848 node_7_1 = node_7_0->protocolies;
2849 if(node_7_0->protocolies){
2850 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_7_1->id_menb_ue_x2ap_id;
2851 if(node_7_1->id_menb_ue_x2ap_id_extension){
2852 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_7_1->id_menb_ue_x2ap_id_extension->value;
2854 sgnb_addreq_for_ue_sn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
2856 node_7_2 = node_7_1->id_menbtosgnbcontainer;
2857 if(node_7_1->id_menbtosgnbcontainer){
2858 node_7_3 = node_7_2->criticalextensionschoice1;
2859 if(node_7_2->criticalextensionschoice1){
2860 node_7_4 = node_7_3->protocolies;
2861 if(node_7_3->protocolies){
2862 node_7_5 = node_7_4->candidatecellinfolistsn;
2863 if(node_7_4->candidatecellinfolistsn){
2864 for(i_7_6=0;i_7_6<node_7_5->n_items; i_7_6++){
2865 node_7_6 = node_7_5->items[i_7_6];
2866 node_7_7 = node_7_6->measresultneighcelllistnr;
2867 if(node_7_6->measresultneighcelllistnr){
2868 for(i_7_8=0;i_7_8<node_7_7->n_items; i_7_8++){
2869 node_7_8 = node_7_7->items[i_7_8];
2870 if(node_7_8->physcellid){
2871 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId = node_7_8->physcellid->value;
2872 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 1;
2874 sgnb_addreq_for_ue_sn_neigh_ssb->physCellId_exists = 0;
2876 node_7_9 = node_7_8->measresult;
2877 if(node_7_8->measresult){
2878 node_7_10 = node_7_9->cellresults;
2879 if(node_7_9->cellresults){
2880 node_7_11 = node_7_10->resultsssb_cell;
2881 if(node_7_10->resultsssb_cell){
2882 if(node_7_11->rsrq){
2883 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = node_7_11->rsrq->value;
2885 sgnb_addreq_for_ue_sn_neigh_ssb->rsrq = 128;
2887 if(node_7_11->rsrp){
2888 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = node_7_11->rsrp->value;
2890 sgnb_addreq_for_ue_sn_neigh_ssb->rsrp = 128;
2892 if(node_7_11->sinr){
2893 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = node_7_11->sinr->value;
2895 sgnb_addreq_for_ue_sn_neigh_ssb->sinr = 128;
2897 rts_fta_process_packet(&cur_packet);
2909 // --------------------------------------------------
2910 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2912 sgnb_addreq_for_ue_sn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_sn_neigh_csi_rs *)(cur_packet.record.packed.values);
2913 cur_packet.schema = 409;
2914 node_8_0 = node_7_0;
2915 ts_lo = hdr->header->timestamp & 0xffffffff;
2916 ts_hi = hdr->header->timestamp >> 32;
2917 sgnb_addreq_for_ue_sn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2918 if(hdr->header->gnbid==NULL)
2919 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = empty_string;
2921 sgnb_addreq_for_ue_sn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
2923 node_8_1 = node_8_0->protocolies;
2924 if(node_8_0->protocolies){
2925 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_8_1->id_menb_ue_x2ap_id;
2926 if(node_8_1->id_menb_ue_x2ap_id_extension){
2927 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_8_1->id_menb_ue_x2ap_id_extension->value;
2929 sgnb_addreq_for_ue_sn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
2931 node_8_2 = node_8_1->id_menbtosgnbcontainer;
2932 if(node_8_1->id_menbtosgnbcontainer){
2933 node_8_3 = node_8_2->criticalextensionschoice1;
2934 if(node_8_2->criticalextensionschoice1){
2935 node_8_4 = node_8_3->protocolies;
2936 if(node_8_3->protocolies){
2937 node_8_5 = node_8_4->candidatecellinfolistsn;
2938 if(node_8_4->candidatecellinfolistsn){
2939 for(i_8_6=0;i_8_6<node_8_5->n_items; i_8_6++){
2940 node_8_6 = node_8_5->items[i_8_6];
2941 node_8_7 = node_8_6->measresultneighcelllistnr;
2942 if(node_8_6->measresultneighcelllistnr){
2943 for(i_8_8=0;i_8_8<node_8_7->n_items; i_8_8++){
2944 node_8_8 = node_8_7->items[i_8_8];
2945 if(node_8_8->physcellid){
2946 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId = node_8_8->physcellid->value;
2947 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 1;
2949 sgnb_addreq_for_ue_sn_neigh_csi_rs->physCellId_exists = 0;
2951 node_8_9 = node_8_8->measresult;
2952 if(node_8_8->measresult){
2953 node_8_10 = node_8_9->cellresults;
2954 if(node_8_9->cellresults){
2955 node_8_11 = node_8_10->resultscsi_rs_cell;
2956 if(node_8_10->resultscsi_rs_cell){
2957 if(node_8_11->rsrq){
2958 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = node_8_11->rsrq->value;
2960 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrq = 128;
2962 if(node_8_11->rsrp){
2963 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = node_8_11->rsrp->value;
2965 sgnb_addreq_for_ue_sn_neigh_csi_rs->rsrp = 128;
2967 if(node_8_11->sinr){
2968 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = node_8_11->sinr->value;
2970 sgnb_addreq_for_ue_sn_neigh_csi_rs->sinr = 128;
2972 rts_fta_process_packet(&cur_packet);
2984 // --------------------------------------------------
2985 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
2987 sgnb_addreq_for_ue_mn_neigh_ssb = (struct _sgnb_addreq_for_ue_mn_neigh_ssb *)(cur_packet.record.packed.values);
2988 cur_packet.schema = 410;
2989 node_9_0 = node_8_0;
2990 ts_lo = hdr->header->timestamp & 0xffffffff;
2991 ts_hi = hdr->header->timestamp >> 32;
2992 sgnb_addreq_for_ue_mn_neigh_ssb->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
2993 if(hdr->header->gnbid==NULL)
2994 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = empty_string;
2996 sgnb_addreq_for_ue_mn_neigh_ssb->gnb_id = hdr->header->gnbid->value;
2998 node_9_1 = node_9_0->protocolies;
2999 if(node_9_0->protocolies){
3000 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID = node_9_1->id_menb_ue_x2ap_id;
3001 if(node_9_1->id_menb_ue_x2ap_id_extension){
3002 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = node_9_1->id_menb_ue_x2ap_id_extension->value;
3004 sgnb_addreq_for_ue_mn_neigh_ssb->id_MeNB_UE_X2AP_ID_Extension = 0;
3006 node_9_2 = node_9_1->id_menbtosgnbcontainer;
3007 if(node_9_1->id_menbtosgnbcontainer){
3008 node_9_3 = node_9_2->criticalextensionschoice1;
3009 if(node_9_2->criticalextensionschoice1){
3010 node_9_4 = node_9_3->protocolies;
3011 if(node_9_3->protocolies){
3012 node_9_5 = node_9_4->candidatecellinfolistmn;
3013 if(node_9_4->candidatecellinfolistmn){
3014 for(i_9_6=0;i_9_6<node_9_5->n_items; i_9_6++){
3015 node_9_6 = node_9_5->items[i_9_6];
3016 node_9_7 = node_9_6->measresultneighcelllistnr;
3017 if(node_9_6->measresultneighcelllistnr){
3018 for(i_9_8=0;i_9_8<node_9_7->n_items; i_9_8++){
3019 node_9_8 = node_9_7->items[i_9_8];
3020 if(node_9_8->physcellid){
3021 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId = node_9_8->physcellid->value;
3022 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 1;
3024 sgnb_addreq_for_ue_mn_neigh_ssb->physCellId_exists = 0;
3026 node_9_9 = node_9_8->measresult;
3027 if(node_9_8->measresult){
3028 node_9_10 = node_9_9->cellresults;
3029 if(node_9_9->cellresults){
3030 node_9_11 = node_9_10->resultsssb_cell;
3031 if(node_9_10->resultsssb_cell){
3032 if(node_9_11->rsrq){
3033 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = node_9_11->rsrq->value;
3035 sgnb_addreq_for_ue_mn_neigh_ssb->rsrq = 128;
3037 if(node_9_11->rsrp){
3038 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = node_9_11->rsrp->value;
3040 sgnb_addreq_for_ue_mn_neigh_ssb->rsrp = 128;
3042 if(node_9_11->sinr){
3043 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = node_9_11->sinr->value;
3045 sgnb_addreq_for_ue_mn_neigh_ssb->sinr = 128;
3047 rts_fta_process_packet(&cur_packet);
3059 // --------------------------------------------------
3060 // --- Specialized processing for .proto sgnb_addition_request.json, path sgnb_addition_req.json
3062 sgnb_addreq_for_ue_mn_neigh_csi_rs = (struct _sgnb_addreq_for_ue_mn_neigh_csi_rs *)(cur_packet.record.packed.values);
3063 cur_packet.schema = 411;
3064 node_10_0 = node_9_0;
3065 ts_lo = hdr->header->timestamp & 0xffffffff;
3066 ts_hi = hdr->header->timestamp >> 32;
3067 sgnb_addreq_for_ue_mn_neigh_csi_rs->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3068 if(hdr->header->gnbid==NULL)
3069 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = empty_string;
3071 sgnb_addreq_for_ue_mn_neigh_csi_rs->gnb_id = hdr->header->gnbid->value;
3073 node_10_1 = node_10_0->protocolies;
3074 if(node_10_0->protocolies){
3075 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID = node_10_1->id_menb_ue_x2ap_id;
3076 if(node_10_1->id_menb_ue_x2ap_id_extension){
3077 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = node_10_1->id_menb_ue_x2ap_id_extension->value;
3079 sgnb_addreq_for_ue_mn_neigh_csi_rs->id_MeNB_UE_X2AP_ID_Extension = 0;
3081 node_10_2 = node_10_1->id_menbtosgnbcontainer;
3082 if(node_10_1->id_menbtosgnbcontainer){
3083 node_10_3 = node_10_2->criticalextensionschoice1;
3084 if(node_10_2->criticalextensionschoice1){
3085 node_10_4 = node_10_3->protocolies;
3086 if(node_10_3->protocolies){
3087 node_10_5 = node_10_4->candidatecellinfolistmn;
3088 if(node_10_4->candidatecellinfolistmn){
3089 for(i_10_6=0;i_10_6<node_10_5->n_items; i_10_6++){
3090 node_10_6 = node_10_5->items[i_10_6];
3091 node_10_7 = node_10_6->measresultneighcelllistnr;
3092 if(node_10_6->measresultneighcelllistnr){
3093 for(i_10_8=0;i_10_8<node_10_7->n_items; i_10_8++){
3094 node_10_8 = node_10_7->items[i_10_8];
3095 if(node_10_8->physcellid){
3096 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId = node_10_8->physcellid->value;
3097 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 1;
3099 sgnb_addreq_for_ue_mn_neigh_csi_rs->physCellId_exists = 0;
3101 node_10_9 = node_10_8->measresult;
3102 if(node_10_8->measresult){
3103 node_10_10 = node_10_9->cellresults;
3104 if(node_10_9->cellresults){
3105 node_10_11 = node_10_10->resultscsi_rs_cell;
3106 if(node_10_10->resultscsi_rs_cell){
3107 if(node_10_11->rsrq){
3108 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = node_10_11->rsrq->value;
3110 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrq = 128;
3112 if(node_10_11->rsrp){
3113 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = node_10_11->rsrp->value;
3115 sgnb_addreq_for_ue_mn_neigh_csi_rs->rsrp = 128;
3117 if(node_10_11->sinr){
3118 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = node_10_11->sinr->value;
3120 sgnb_addreq_for_ue_mn_neigh_csi_rs->sinr = 128;
3122 rts_fta_process_packet(&cur_packet);
3134 streaming_protobufs__sg_nbaddition_request__free_unpacked(node_0_0,NULL);
3138 gs_uint32_t process_buffer_SGNBMODCONF(gs_uint8_t * buffer, gs_uint32_t buflen){
3139 char *empty_string = "";
3140 unsigned long long int ts_lo, ts_hi;
3141 StreamingProtobufs__X2APStreaming *hdr = NULL;
3142 // ------------------------------------------
3143 // --- Variables for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3144 struct _sgnb_mod_conf *sgnb_mod_conf = NULL;
3145 StreamingProtobufs__SgNBModificationConfirm *node_0_0 = NULL;
3146 StreamingProtobufs__SgNBModificationConfirmIEs *node_0_1 = NULL;
3148 // --------------------------------------------------
3149 // --- Specialized processing for .proto sgnb_modification_confirm.json, path sgnb_mod_confirm.json
3151 sgnb_mod_conf = (struct _sgnb_mod_conf *)(cur_packet.record.packed.values);
3152 cur_packet.schema = 1301;
3154 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3155 if(hdr==NULL) return -1;
3157 node_0_0 = hdr->sgnbmodificationconfirm;
3158 if(node_0_0==NULL) return -2;
3159 if(hdr->header==NULL) return -3;
3161 ts_lo = hdr->header->timestamp & 0xffffffff;
3162 ts_hi = hdr->header->timestamp >> 32;
3163 sgnb_mod_conf->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3164 if(hdr->header->gnbid==NULL)
3165 sgnb_mod_conf->gnb_id = empty_string;
3167 sgnb_mod_conf->gnb_id = hdr->header->gnbid->value;
3169 node_0_1 = node_0_0->protocolies;
3170 if(node_0_0->protocolies){
3171 sgnb_mod_conf->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3172 sgnb_mod_conf->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3173 rts_fta_process_packet(&cur_packet);
3175 streaming_protobufs__sg_nbmodification_confirm__free_unpacked(node_0_0,NULL);
3179 gs_uint32_t process_buffer_SGNBMODREQ(gs_uint8_t * buffer, gs_uint32_t buflen){
3180 char *empty_string = "";
3181 unsigned long long int ts_lo, ts_hi;
3182 StreamingProtobufs__X2APStreaming *hdr = NULL;
3183 // ------------------------------------------
3184 // --- Variables for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3185 struct _sgnb_mod_req *sgnb_mod_req = NULL;
3186 StreamingProtobufs__SgNBModificationRequest *node_0_0 = NULL;
3187 StreamingProtobufs__SgNBModificationRequestIEs *node_0_1 = NULL;
3189 // --------------------------------------------------
3190 // --- Specialized processing for .proto sgnb_modification_request.json, path sgnb_mod_req.json
3192 sgnb_mod_req = (struct _sgnb_mod_req *)(cur_packet.record.packed.values);
3193 cur_packet.schema = 1201;
3195 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3196 if(hdr==NULL) return -1;
3198 node_0_0 = hdr->sgnbmodificationrequest;
3199 if(node_0_0==NULL) return -2;
3200 if(hdr->header==NULL) return -3;
3202 ts_lo = hdr->header->timestamp & 0xffffffff;
3203 ts_hi = hdr->header->timestamp >> 32;
3204 sgnb_mod_req->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3205 if(hdr->header->gnbid==NULL)
3206 sgnb_mod_req->gnb_id = empty_string;
3208 sgnb_mod_req->gnb_id = hdr->header->gnbid->value;
3210 node_0_1 = node_0_0->protocolies;
3211 if(node_0_0->protocolies){
3212 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3213 sgnb_mod_req->cause_protocol = node_0_1->id_cause->protocol->value;
3215 sgnb_mod_req->cause_protocol = -1;
3217 sgnb_mod_req->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3218 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3219 sgnb_mod_req->cause_transport = node_0_1->id_cause->transport->value;
3221 sgnb_mod_req->cause_transport = -1;
3223 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){
3224 sgnb_mod_req->failureType = node_0_1->id_menbtosgnbcontainer->criticalextensionschoice1->protocolies->scgfailureinfo->failuretype;
3226 sgnb_mod_req->failureType = -1;
3228 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3229 sgnb_mod_req->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3231 sgnb_mod_req->cause_radio_network = -1;
3233 sgnb_mod_req->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3234 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3235 sgnb_mod_req->cause_misc = node_0_1->id_cause->misc->value;
3237 sgnb_mod_req->cause_misc = -1;
3239 rts_fta_process_packet(&cur_packet);
3241 streaming_protobufs__sg_nbmodification_request__free_unpacked(node_0_0,NULL);
3245 gs_uint32_t process_buffer_SGNBMODREQACK(gs_uint8_t * buffer, gs_uint32_t buflen){
3246 char *empty_string = "";
3247 unsigned long long int ts_lo, ts_hi;
3248 StreamingProtobufs__X2APStreaming *hdr = NULL;
3249 // ------------------------------------------
3250 // --- Variables for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3251 struct _sgnb_mod_req_ack *sgnb_mod_req_ack = NULL;
3252 StreamingProtobufs__SgNBModificationRequestAcknowledge *node_0_0 = NULL;
3253 StreamingProtobufs__SgNBModificationRequestAcknowledgeIEs *node_0_1 = NULL;
3255 // --------------------------------------------------
3256 // --- Specialized processing for .proto sgnb_modification_request_acknowledge.json, path sgnb_mod_req_ack.json
3258 sgnb_mod_req_ack = (struct _sgnb_mod_req_ack *)(cur_packet.record.packed.values);
3259 cur_packet.schema = 1701;
3261 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3262 if(hdr==NULL) return -1;
3264 node_0_0 = hdr->sgnbmodificationrequestacknowledge;
3265 if(node_0_0==NULL) return -2;
3266 if(hdr->header==NULL) return -3;
3268 ts_lo = hdr->header->timestamp & 0xffffffff;
3269 ts_hi = hdr->header->timestamp >> 32;
3270 sgnb_mod_req_ack->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3271 if(hdr->header->gnbid==NULL)
3272 sgnb_mod_req_ack->gnb_id = empty_string;
3274 sgnb_mod_req_ack->gnb_id = hdr->header->gnbid->value;
3276 node_0_1 = node_0_0->protocolies;
3277 if(node_0_0->protocolies){
3278 sgnb_mod_req_ack->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3279 sgnb_mod_req_ack->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3280 rts_fta_process_packet(&cur_packet);
3282 streaming_protobufs__sg_nbmodification_request_acknowledge__free_unpacked(node_0_0,NULL);
3286 gs_uint32_t process_buffer_SGNBMODREQREJECT(gs_uint8_t * buffer, gs_uint32_t buflen){
3287 char *empty_string = "";
3288 unsigned long long int ts_lo, ts_hi;
3289 StreamingProtobufs__X2APStreaming *hdr = NULL;
3290 // ------------------------------------------
3291 // --- Variables for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3292 struct _sgnb_mod_req_reject *sgnb_mod_req_reject = NULL;
3293 StreamingProtobufs__SgNBModificationRequestReject *node_0_0 = NULL;
3294 StreamingProtobufs__SgNBModificationRequestRejectIEs *node_0_1 = NULL;
3296 // --------------------------------------------------
3297 // --- Specialized processing for .proto sgnb_modification_request_reject.json, path sgnb_mod_req_reject.json
3299 sgnb_mod_req_reject = (struct _sgnb_mod_req_reject *)(cur_packet.record.packed.values);
3300 cur_packet.schema = 1801;
3302 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3303 if(hdr==NULL) return -1;
3305 node_0_0 = hdr->sgnbmodificationrequestreject;
3306 if(node_0_0==NULL) return -2;
3307 if(hdr->header==NULL) return -3;
3309 ts_lo = hdr->header->timestamp & 0xffffffff;
3310 ts_hi = hdr->header->timestamp >> 32;
3311 sgnb_mod_req_reject->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3312 if(hdr->header->gnbid==NULL)
3313 sgnb_mod_req_reject->gnb_id = empty_string;
3315 sgnb_mod_req_reject->gnb_id = hdr->header->gnbid->value;
3317 node_0_1 = node_0_0->protocolies;
3318 if(node_0_0->protocolies){
3319 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3320 sgnb_mod_req_reject->cause_protocol = node_0_1->id_cause->protocol->value;
3322 sgnb_mod_req_reject->cause_protocol = -1;
3324 sgnb_mod_req_reject->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3325 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3326 sgnb_mod_req_reject->cause_transport = node_0_1->id_cause->transport->value;
3328 sgnb_mod_req_reject->cause_transport = -1;
3330 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3331 sgnb_mod_req_reject->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3333 sgnb_mod_req_reject->cause_radio_network = -1;
3335 sgnb_mod_req_reject->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3336 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3337 sgnb_mod_req_reject->cause_misc = node_0_1->id_cause->misc->value;
3339 sgnb_mod_req_reject->cause_misc = -1;
3341 rts_fta_process_packet(&cur_packet);
3343 streaming_protobufs__sg_nbmodification_request_reject__free_unpacked(node_0_0,NULL);
3347 gs_uint32_t process_buffer_SGNBMODREQUIRED(gs_uint8_t * buffer, gs_uint32_t buflen){
3348 char *empty_string = "";
3349 unsigned long long int ts_lo, ts_hi;
3350 StreamingProtobufs__X2APStreaming *hdr = NULL;
3351 // ------------------------------------------
3352 // --- Variables for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3353 struct _sgnb_mod_required *sgnb_mod_required = NULL;
3354 StreamingProtobufs__SgNBModificationRequired *node_0_0 = NULL;
3355 StreamingProtobufs__SgNBModificationRequiredIEs *node_0_1 = NULL;
3357 // --------------------------------------------------
3358 // --- Specialized processing for .proto sgnb_modification_required.json, path sgnb_mod_rqd.json
3360 sgnb_mod_required = (struct _sgnb_mod_required *)(cur_packet.record.packed.values);
3361 cur_packet.schema = 1901;
3363 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3364 if(hdr==NULL) return -1;
3366 node_0_0 = hdr->sgnbmodificationrequired;
3367 if(node_0_0==NULL) return -2;
3368 if(hdr->header==NULL) return -3;
3370 ts_lo = hdr->header->timestamp & 0xffffffff;
3371 ts_hi = hdr->header->timestamp >> 32;
3372 sgnb_mod_required->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3373 if(hdr->header->gnbid==NULL)
3374 sgnb_mod_required->gnb_id = empty_string;
3376 sgnb_mod_required->gnb_id = hdr->header->gnbid->value;
3378 node_0_1 = node_0_0->protocolies;
3379 if(node_0_0->protocolies){
3380 if(node_0_1->id_cause && node_0_1->id_cause->protocol){
3381 sgnb_mod_required->cause_protocol = node_0_1->id_cause->protocol->value;
3383 sgnb_mod_required->cause_protocol = -1;
3385 sgnb_mod_required->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3386 if(node_0_1->id_cause && node_0_1->id_cause->transport){
3387 sgnb_mod_required->cause_transport = node_0_1->id_cause->transport->value;
3389 sgnb_mod_required->cause_transport = -1;
3391 if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
3392 sgnb_mod_required->cause_radio_network = node_0_1->id_cause->radionetwork->value;
3394 sgnb_mod_required->cause_radio_network = -1;
3396 sgnb_mod_required->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3397 if(node_0_1->id_cause && node_0_1->id_cause->misc){
3398 sgnb_mod_required->cause_misc = node_0_1->id_cause->misc->value;
3400 sgnb_mod_required->cause_misc = -1;
3402 rts_fta_process_packet(&cur_packet);
3404 streaming_protobufs__sg_nbmodification_required__free_unpacked(node_0_0,NULL);
3408 gs_uint32_t process_buffer_SGNBMODREFUSE(gs_uint8_t * buffer, gs_uint32_t buflen){
3409 char *empty_string = "";
3410 unsigned long long int ts_lo, ts_hi;
3411 StreamingProtobufs__X2APStreaming *hdr = NULL;
3412 // ------------------------------------------
3413 // --- Variables for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3414 struct _sgnb_mod_refuse *sgnb_mod_refuse = NULL;
3415 StreamingProtobufs__SgNBModificationRefuse *node_0_0 = NULL;
3416 StreamingProtobufs__SgNBModificationRefuseIEs *node_0_1 = NULL;
3417 StreamingProtobufs__Cause *node_0_2 = NULL;
3419 // --------------------------------------------------
3420 // --- Specialized processing for .proto sgnb_modification_refuse.json, path sgnb_modification_refuse.json
3422 sgnb_mod_refuse = (struct _sgnb_mod_refuse *)(cur_packet.record.packed.values);
3423 cur_packet.schema = 1401;
3425 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3426 if(hdr==NULL) return -1;
3428 node_0_0 = hdr->sgnbmodificationrefuse;
3429 if(node_0_0==NULL) return -2;
3430 if(hdr->header==NULL) return -3;
3432 ts_lo = hdr->header->timestamp & 0xffffffff;
3433 ts_hi = hdr->header->timestamp >> 32;
3434 sgnb_mod_refuse->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3435 if(hdr->header->gnbid==NULL)
3436 sgnb_mod_refuse->gnb_id = empty_string;
3438 sgnb_mod_refuse->gnb_id = hdr->header->gnbid->value;
3440 node_0_1 = node_0_0->protocolies;
3441 if(node_0_0->protocolies){
3442 sgnb_mod_refuse->id_MeNB_UE_X2AP_ID = node_0_1->id_menb_ue_x2ap_id;
3443 sgnb_mod_refuse->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id;
3444 node_0_2 = node_0_1->id_cause;
3445 if(node_0_1->id_cause){
3446 if(node_0_2->radionetwork){
3447 sgnb_mod_refuse->cause_radio_network = node_0_2->radionetwork->value;
3449 sgnb_mod_refuse->cause_radio_network = -1;
3451 if(node_0_2->transport){
3452 sgnb_mod_refuse->cause_transport = node_0_2->transport->value;
3454 sgnb_mod_refuse->cause_transport = -1;
3456 if(node_0_2->protocol){
3457 sgnb_mod_refuse->cause_protocol = node_0_2->protocol->value;
3459 sgnb_mod_refuse->cause_protocol = -1;
3462 sgnb_mod_refuse->cause_misc = node_0_2->misc->value;
3464 sgnb_mod_refuse->cause_misc = -1;
3466 rts_fta_process_packet(&cur_packet);
3469 streaming_protobufs__sg_nbmodification_refuse__free_unpacked(node_0_0,NULL);
3473 gs_uint32_t process_buffer_SNSTATUSXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
3474 char *empty_string = "";
3475 unsigned long long int ts_lo, ts_hi;
3476 StreamingProtobufs__X2APStreaming *hdr = NULL;
3477 // ------------------------------------------
3478 // --- Variables for .proto sn_status_transfer.json, path snstatusxfer.json
3479 struct _sn_status_transfer *sn_status_transfer = NULL;
3480 StreamingProtobufs__SNStatusTransfer *node_0_0 = NULL;
3481 StreamingProtobufs__SNStatusTransferIEs *node_0_1 = NULL;
3482 StreamingProtobufs__ERABsSubjectToStatusTransferList *node_0_2 = NULL;
3483 StreamingProtobufs__ERABsSubjectToStatusTransferItemIEs *node_0_3 = NULL;
3485 StreamingProtobufs__ERABsSubjectToStatusTransferItem *node_0_4 = NULL;
3486 StreamingProtobufs__ERABsSubjectToStatusTransferItemExtIEs *node_0_5 = NULL;
3488 StreamingProtobufs__COUNTvaluePDCPSNlength18 *node_0_6 = NULL;
3490 // --------------------------------------------------
3491 // --- Specialized processing for .proto sn_status_transfer.json, path snstatusxfer.json
3493 sn_status_transfer = (struct _sn_status_transfer *)(cur_packet.record.packed.values);
3494 cur_packet.schema = 1601;
3496 hdr = streaming_protobufs__x2_apstreaming__unpack(NULL, buflen, buffer);
3497 if(hdr==NULL) return -1;
3499 node_0_0 = hdr->snstatustransfer;
3500 if(node_0_0==NULL) return -2;
3501 if(hdr->header==NULL) return -3;
3503 ts_lo = hdr->header->timestamp & 0xffffffff;
3504 ts_hi = hdr->header->timestamp >> 32;
3505 sn_status_transfer->timestamp_ms = (ts_hi - 2208988800) * 1000 + ((ts_lo * 1000) >> 32);
3506 if(hdr->header->gnbid==NULL)
3507 sn_status_transfer->gnb_id = empty_string;
3509 sn_status_transfer->gnb_id = hdr->header->gnbid->value;
3511 node_0_1 = node_0_0->protocolies;
3512 if(node_0_0->protocolies){
3513 sn_status_transfer->id_Old_eNB_UE_X2AP_ID = node_0_1->id_old_enb_ue_x2ap_id;
3514 if(node_0_1->id_sgnb_ue_x2ap_id){
3515 sn_status_transfer->id_SgNB_UE_X2AP_ID = node_0_1->id_sgnb_ue_x2ap_id->value;
3517 sn_status_transfer->id_SgNB_UE_X2AP_ID = 0;
3519 node_0_2 = node_0_1->id_e_rabs_subjecttostatustransfer_list;
3520 if(node_0_1->id_e_rabs_subjecttostatustransfer_list){
3521 for(i_0_3=0;i_0_3<node_0_2->n_items; i_0_3++){
3522 node_0_3 = node_0_2->items[i_0_3];
3523 node_0_4 = node_0_3->id_e_rabs_subjecttostatustransfer_item;
3524 if(node_0_3->id_e_rabs_subjecttostatustransfer_item){
3525 sn_status_transfer->e_RAB_ID = node_0_4->e_rab_id;
3526 for(i_0_5=0;i_0_5<node_0_4->n_ie_extensions; i_0_5++){
3527 node_0_5 = node_0_4->ie_extensions[i_0_5];
3528 node_0_6 = node_0_5->id_dlcountvaluepdcp_snlength18;
3529 if(node_0_5->id_dlcountvaluepdcp_snlength18){
3530 sn_status_transfer->pDCP_SNlength18 = node_0_6->pdcp_snlength18;
3531 rts_fta_process_packet(&cur_packet);
3538 streaming_protobufs__snstatus_transfer__free_unpacked(node_0_0,NULL);
3543 int init_cur_packet(){
3544 cur_packet.ptype=PTYPE_STRUCT;
3545 cur_packet.record.packed.values = (void *)(malloc(10000));
3547 if(cur_packet.record.packed.values==NULL){
3548 print_error("could not malloc a data block for cur_packet in init_cur_packet.");
3553 //---------------- END Specialized proto parsing -----------
3555 static void dproto_replay_check_messages() {
3556 if (fta_start_service(0)<0) {
3557 print_error("Error:in processing the msg queue for a replay file");
3562 // Read length bytes from the current socket into buffer.
3563 static gs_uint32_t gs_read_buffer(gs_uint8_t * buffer, gs_uint32_t length){
3568 struct timeval socket_timeout;
3571 FD_ZERO(&socket_rset);
3572 FD_SET(socket_desc,&socket_rset);
3573 FD_ZERO(&socket_eset);
3574 FD_SET(socket_desc,&socket_eset);
3575 // timeout in one millisecon
3576 socket_timeout.tv_sec=0;
3577 socket_timeout.tv_usec=1000;
3579 if ((retval=select(socket_desc+1,&socket_rset,0,&socket_eset,&socket_timeout))<=0) {
3587 while(used < length) {
3588 if ((cur=read(socket_desc,&(buffer[used]),length-used))<=0) {
3589 print_error("ERROR:could not read data from PROTO stream");
3597 // query gshub and use that info to open a socket
3598 static void init_socket() {
3601 struct sockaddr_in server;
3603 if (get_hub(&gshub)!=0) {
3604 print_error("ERROR:could not find gshub for data source");
3608 if (get_streamsource(gshub,name,&srcinfo,1) !=0) {
3609 print_error("ERROR:could not find data source for stream\n");
3613 socket_desc = socket(AF_INET , SOCK_STREAM , 0);
3614 if (socket_desc == -1)
3616 print_error("ERROR:could not create socket for data stream");
3619 server.sin_addr.s_addr = srcinfo.ip;
3620 server.sin_family = AF_INET;
3621 server.sin_port = srcinfo.port;
3623 if (connect(socket_desc , (struct sockaddr *)&server , sizeof(server)) < 0)
3625 print_error("ERROR: could not open connection to data source");
3631 int read_fifo(struct pollfd* pfd, char* buffer, size_t len, time_t timeout) {
3632 int i, bytes_read = 0;
3633 while (bytes_read < len) {
3634 if (poll(pfd, 1, timeout)) {
3635 if (pfd->revents & POLLIN) {
3636 while ((i = read(pfd->fd,buffer+bytes_read,len-bytes_read))==-1 && errno==EINTR);
3638 break; // writer closed fifo or error
3643 break; // writer closed fifo
3646 return -1; // timeout
3651 // proceed to the next file
3652 static void next_file() {
3653 int open_flag = O_RDONLY;
3655 open_flag |= O_NONBLOCK;
3659 fprintf(stderr,"Opening %s\n",name);
3661 while (lstat(name,&s)!=0) {
3662 if (errno!=ENOENT) {
3663 print_error("dproto::lstat unexpected return value");
3666 dproto_replay_check_messages();
3672 if ((fd=open(name,open_flag)) <= 0) {
3673 print_error("dproto::open failed ");
3676 // setup polling for this file descriptor
3678 pfd.events = POLLIN;
3680 if (singlefile==0) {
3685 // Perform initialization when reading from a file
3686 static gs_retval_t dproto_replay_init(gs_sp_t device) {
3691 gs_sp_t singlefiletmp;
3694 if ((name=get_iface_properties(device,"filename"))==0) {
3695 print_error("dproto_init::No protobuf \"Filename\" defined");
3699 if ((verbosetmp=get_iface_properties(device,"verbose"))!=0) {
3700 if (strncmp(verbosetmp,"TRUE",4)==0) {
3702 fprintf(stderr,"VERBOSE ENABLED\n");
3704 fprintf(stderr,"VERBOSE DISABLED\n");
3707 if ((singlefiletmp=get_iface_properties(device,"singlefile"))!=0) {
3708 if (strncmp(singlefiletmp,"TRUE",4)==0) {
3711 fprintf(stderr,"SINGLEFILE ENABLED\n");
3714 fprintf(stderr,"SINGLEFILE DISABLED\n");
3717 if ((fifotmp=get_iface_properties(device,"fifo"))!=0) {
3718 if (strncmp(fifotmp,"TRUE",4)==0) {
3721 fprintf(stderr,"FIFO ENABLED\n");
3724 fprintf(stderr,"FIFO DISABLED\n");
3728 if ((delaytmp=get_iface_properties(device,"startupdelay"))!=0) {
3730 fprintf(stderr,"Startup delay of %u seconds\n",atoi(get_iface_properties(device,"startupdelay")));
3732 startupdelay=atoi(get_iface_properties(device,"startupdelay"));
3734 if ((gshubtmp=get_iface_properties(device,"gshub"))!=0) {
3736 fprintf(stderr,"PROTO format using gshub\n");
3745 // Read one message from a socket
3746 static gs_retval_t dproto_read_socket()
3751 gs_uint32_t pkg_len;
3758 if((ret=gs_read_buffer(line,28))<0) { return ret;}
3760 pkg_len = atoi(pkg_len_s);
3762 if((ret=gs_read_buffer(line,pkg_len))<0) { return ret;}
3764 cur_packet.systemTime=time(0);
3765 ret = process_buffer(line, pkg_len);
3767 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3773 // read one message from a file
3774 static gs_retval_t dproto_read_tuple(){
3775 gs_uint32_t retlen=0;
3777 gs_uint32_t pkg_len=0;
3783 if (fd==-1) next_file();
3785 retlen = read_fifo(&pfd, line, 28, 10); // use 10ms timeout
3789 }else if(retlen==-1) {
3790 return -1; // -1 indicates a timeout
3791 }else if(retlen == 28) {
3793 timestamp_s = line+12;
3794 pkg_len = atoi(pkg_len_s);
3796 if(pkg_len >= MAXLINE){
3797 // TODO be more graceful here, but a large pkg_len likely indicates
3799 print_error("Error in dproto_read_tuple, message too long.");
3800 fprintf(stderr,"Error in dproto_read_tuple, message length is %d, max is %d\n",pkg_len, MAXLINE);
3804 // once we received header we will wait for the main message indefinetly
3805 retlen = read_fifo(&pfd, line, pkg_len, -1);
3807 print_error("Error in dproto_read_tuple, line too short.");
3808 fprintf(stderr,"Error, read %d bytes, expecting %d\n",retlen, pkg_len);
3813 cur_packet.systemTime=time(0);
3814 ret = process_buffer(line, pkg_len);
3816 fprintf(stderr,"proto rejected by device %s, err=%d\n",this_device, ret);
3821 if (singlefile==1) {
3823 fprintf(stderr,"SINGLEFILE PROCESSING DONE!\n");
3826 fprintf(stderr,"RTS SAYS BYe\n");
3837 // Main loop for processing records from a file or socket
3838 static gs_retval_t dproto_process_file(){
3840 static unsigned totalcnt=0;
3843 for(cnt=0;cnt<50000;cnt++) {
3845 retval=dproto_read_socket();
3847 retval=dproto_read_tuple();
3849 if (retval==-1) return 0; // got a timeout so service message queue
3851 // we signal that everything is done if we either see an EOF tuple OR the socket is closed by the peer
3853 fprintf(stderr,"Done processing waiting for things to shut down\n");
3855 // now just service message queue until we get killed or loose connectivity
3857 fta_start_service(0); // service all waiting messages
3858 usleep(1000); // sleep a millisecond
3862 totalcnt=totalcnt+cnt;
3864 fprintf(stderr,"Processed %u messages from %s\n",totalcnt, name);
3869 // Entry for processing this interface
3870 gs_retval_t main_dproto(gs_int32_t devicenum, gs_sp_t device, gs_int32_t mapcnt, gs_sp_t map[]) {
3874 dproto_replay_init(device); // will call init_cur_packet
3875 this_device = strdup(device); // save for error messages.
3877 /* initalize host_lib */
3879 fprintf(stderr,"Init LFTAs for %s\n",device);
3882 if (hostlib_init(LFTA,0,devicenum,mapcnt,map)<0) {
3883 fprintf(stderr,"%s::error:could not initiate host lib for clearinghouse\n", device);
3887 //--------------------------------------------
3888 //---- Generated dispatch code
3889 if(strcmp(device,"CONRELEASE")==0){
3890 process_buffer = &process_buffer_CONRELEASE;
3892 if(strcmp(device,"RATDATAUSAGE")==0){
3893 process_buffer = &process_buffer_RATDATAUSAGE;
3895 if(strcmp(device,"RECONCOMPLETE")==0){
3896 process_buffer = &process_buffer_RECONCOMPLETE;
3898 if(strcmp(device,"RELCONF")==0){
3899 process_buffer = &process_buffer_RELCONF;
3901 if(strcmp(device,"RELREQ")==0){
3902 process_buffer = &process_buffer_RELREQ;
3904 if(strcmp(device,"RELREQACK")==0){
3905 process_buffer = &process_buffer_RELREQACK;
3907 if(strcmp(device,"SGNBRELEASERQD")==0){
3908 process_buffer = &process_buffer_SGNBRELEASERQD;
3910 if(strcmp(device,"RRCXFER")==0){
3911 process_buffer = &process_buffer_RRCXFER;
3913 if(strcmp(device,"ADDREQREJECT")==0){
3914 process_buffer = &process_buffer_ADDREQREJECT;
3916 if(strcmp(device,"SGNB_ADDITION_REQ_ACK")==0){
3917 process_buffer = &process_buffer_SGNB_ADDITION_REQ_ACK;
3919 if(strcmp(device,"SGNB_ADDITION_REQ")==0){
3920 process_buffer = &process_buffer_SGNB_ADDITION_REQ;
3922 if(strcmp(device,"SGNBMODCONF")==0){
3923 process_buffer = &process_buffer_SGNBMODCONF;
3925 if(strcmp(device,"SGNBMODREQ")==0){
3926 process_buffer = &process_buffer_SGNBMODREQ;
3928 if(strcmp(device,"SGNBMODREQACK")==0){
3929 process_buffer = &process_buffer_SGNBMODREQACK;
3931 if(strcmp(device,"SGNBMODREQREJECT")==0){
3932 process_buffer = &process_buffer_SGNBMODREQREJECT;
3934 if(strcmp(device,"SGNBMODREQUIRED")==0){
3935 process_buffer = &process_buffer_SGNBMODREQUIRED;
3937 if(strcmp(device,"SGNBMODREFUSE")==0){
3938 process_buffer = &process_buffer_SGNBMODREFUSE;
3940 if(strcmp(device,"SNSTATUSXFER")==0){
3941 process_buffer = &process_buffer_SNSTATUSXFER;
3943 if(process_buffer == NULL){
3944 fprintf(stderr,"Error, interface %s not recognized\n",device);
3947 //--------------------------------------------
3950 fta_init(device); /*xxx probably should get error code back put Ted doesn't give me one*/
3952 cont=startupdelay+time(0);
3954 if (verbose) { fprintf(stderr,"Start startup delay"); }
3956 while (cont>time(NULL)) {
3957 if (fta_start_service(0)<0) {
3958 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3961 usleep(1000); /* sleep for one millisecond */
3964 if (verbose) { fprintf(stderr,"... Done\n"); }
3966 // open the connection to the data source
3967 if (gshub!=0) { init_socket();}
3969 // wait to process till we get the signal from GSHUB
3970 if (get_hub(&mygshub)!=0) {
3971 print_error("ERROR:could not find gshub for data source");
3974 while(get_startprocessing(mygshub,get_instance_name(),0)!=0) {
3976 if (fta_start_service(0)<0) {
3977 fprintf(stderr,"%s::error:in processing the msg queue\n", device);
3982 /* now we enter an endless loop to process data */
3984 fprintf(stderr,"Start processing %s\n",device);
3988 if (dproto_process_file()<0) {
3989 fprintf(stderr,"%s::error:in processing packets\n", device);
3992 /* process all messages on the message queue*/
3993 if (fta_start_service(0)<0) {
3994 fprintf(stderr,"%s::error:in processing the msg queue\n", device);