2 #include "encode_e2apv1.hpp"
4 void buildSubsReq(E2AP_PDU_t *pdu) {
5 ASN_STRUCT_RESET(asn_DEF_E2AP_PDU, pdu);
7 pdu->choice.initiatingMessage = (InitiatingMessage_t *)calloc(1, sizeof(InitiatingMessage_t));
8 pdu->present = E2AP_PDU_PR_initiatingMessage;
10 auto *initMsg = pdu->choice.initiatingMessage;
11 ASN_STRUCT_RESET(asn_DEF_InitiatingMessage, initMsg);
12 initMsg->procedureCode = ProcedureCode_id_RICsubscription;
13 initMsg->criticality = Criticality_reject;
14 initMsg->value.present = InitiatingMessage__value_PR_RICsubscriptionRequest;
16 auto *subReq = &(initMsg->value.choice.RICsubscriptionRequest);
17 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest, subReq);
20 auto *e = (RICsubscriptionRequest_IEs_t *)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));
21 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest_IEs, e);
22 e->id = ProtocolIE_ID_id_RICrequestID;
23 e->value.present = RICsubscriptionRequest_IEs__value_PR_RICrequestID;
24 e->value.choice.RICrequestID.ricRequestorID = 88;
25 e->value.choice.RICrequestID.ricInstanceID = 5;
26 ASN_SEQUENCE_ADD(&subReq->protocolIEs.list, e);
29 auto *e = (RICsubscriptionRequest_IEs_t *)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));
30 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest_IEs, e);
31 e->id = ProtocolIE_ID_id_RANfunctionID;
32 e->criticality = Criticality_reject;
33 e->value.present = RICsubscriptionRequest_IEs__value_PR_RANfunctionID;
34 e->value.choice.RANfunctionID = 8;
35 ASN_SEQUENCE_ADD(&subReq->protocolIEs.list, e);
38 auto *e = (RICsubscriptionRequest_IEs_t *)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));
39 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest_IEs, e);
40 e->id = ProtocolIE_ID_id_RICsubscriptionDetails;
41 e->criticality = Criticality_reject;
42 e->value.present = RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails;
44 uint8_t buf[10] = {1,2,3,4,5,6,7,8,9,0} ;
45 e->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.size = 10;
46 e->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.buf = (uint8_t *)calloc(1, 10);
47 memcpy(e->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.buf,
49 e->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition.size);
51 auto ie = (RICaction_ToBeSetup_ItemIEs_t *)calloc(1, sizeof(RICaction_ToBeSetup_ItemIEs_t));
52 ASN_STRUCT_RESET(asn_DEF_RICaction_ToBeSetup_ItemIEs, ie);
53 ie->id = ProtocolIE_ID_id_RICaction_ToBeSetup_Item;
54 ie->criticality = Criticality_ignore;
55 ie->value.present = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item;
56 ie->value.choice.RICaction_ToBeSetup_Item.ricActionID = 22;
57 ie->value.choice.RICaction_ToBeSetup_Item.ricActionType = RICactionType_report;
59 auto *ad = (RICactionDefinition_t *)calloc(1, sizeof(RICactionDefinition_t));
60 ASN_STRUCT_RESET(asn_DEF_RICactionDefinition, ad);
62 uint8_t buf[10] = {1,2,3,4,5,6,7,8,9,0} ;
63 ad->buf = (uint8_t *)calloc(1, ad->size);
64 memcpy(ad->buf, buf, ad->size);
65 ie->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition = ad;
67 auto *sa = (RICsubsequentAction_t *) calloc(1, sizeof(RICsubsequentAction_t));
68 ASN_STRUCT_RESET(asn_DEF_RICsubsequentAction, sa);
70 sa->ricTimeToWait = RICtimeToWait_w500ms;
71 sa->ricSubsequentActionType = RICsubsequentActionType_continue;
73 ie->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = sa;
74 ASN_SEQUENCE_ADD(&e->value.choice.RICsubscriptionDetails.ricAction_ToBeSetup_List.list, ie);
78 auto ie = (RICaction_ToBeSetup_ItemIEs_t *)calloc(1, sizeof(RICaction_ToBeSetup_ItemIEs_t));
79 ASN_STRUCT_RESET(asn_DEF_RICaction_ToBeSetup_ItemIEs, ie);
80 ie->id = ProtocolIE_ID_id_RICaction_ToBeSetup_Item;
81 ie->criticality = Criticality_ignore;
82 ie->value.present = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item;
83 ie->value.choice.RICaction_ToBeSetup_Item.ricActionID = 47;
84 ie->value.choice.RICaction_ToBeSetup_Item.ricActionType = RICactionType_policy;
86 auto *ad = (RICactionDefinition_t *)calloc(1, sizeof(RICactionDefinition_t));
87 ASN_STRUCT_RESET(asn_DEF_RICactionDefinition, ad);
89 uint8_t buf[10] = {1,2,3,4,5,6,7,8,9,0} ;
90 ad->buf = (uint8_t *)calloc(1, ad->size);
91 memcpy(ad->buf, buf, ad->size);
92 ie->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition = ad;
94 auto *sa = (RICsubsequentAction_t *) calloc(1, sizeof(RICsubsequentAction_t));
95 ASN_STRUCT_RESET(asn_DEF_RICsubsequentAction, sa);
97 sa->ricTimeToWait = RICtimeToWait_w5s;
98 sa->ricSubsequentActionType = RICsubsequentActionType_wait;
100 ie->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = sa;
101 ASN_SEQUENCE_ADD(&e->value.choice.RICsubscriptionDetails.ricAction_ToBeSetup_List.list, ie);
104 ASN_SEQUENCE_ADD(&subReq->protocolIEs.list, e);
111 void generate_e2apv1_setup_request(E2AP_PDU_t *e2ap_pdu) {
113 // uint8_t *buf = (uint8_t *)"gnb1";
115 BIT_STRING_t *gnb_bstring = (BIT_STRING_t*)calloc(1, sizeof(BIT_STRING_t));;
116 gnb_bstring->buf = (uint8_t*)calloc(1,4);
117 gnb_bstring->size = 4;
118 gnb_bstring->buf[0] = 0xB5;
119 gnb_bstring->buf[1] = 0xC6;
120 gnb_bstring->buf[2] = 0x77;
121 gnb_bstring->buf[3] = 0x88;
123 gnb_bstring->bits_unused = 0;
125 uint8_t *buf2 = (uint8_t *)"plmn3";
126 OCTET_STRING_t *plmn = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
127 plmn->buf = (uint8_t*)calloc(1,5);
128 memcpy(plmn->buf, buf2, 5);;
131 GNB_ID_Choice_t *gnbchoice = (GNB_ID_Choice_t*)calloc(1,sizeof(GNB_ID_Choice_t));
132 GNB_ID_Choice_PR pres2 = GNB_ID_Choice_PR_gnb_ID;
133 gnbchoice->present = pres2;
134 gnbchoice->choice.gnb_ID = *gnb_bstring;
136 GlobalgNB_ID_t *gnb = (GlobalgNB_ID_t*)calloc(1, sizeof(GlobalgNB_ID_t));
137 gnb->plmn_id = *plmn;
138 gnb->gnb_id = *gnbchoice;
140 GlobalE2node_gNB_ID_t *e2gnb = (GlobalE2node_gNB_ID_t*)calloc(1, sizeof(GlobalE2node_gNB_ID_t));
141 e2gnb->global_gNB_ID = *gnb;
143 GlobalE2node_ID_t *globale2nodeid = (GlobalE2node_ID_t*)calloc(1, sizeof(GlobalE2node_ID_t));
144 GlobalE2node_ID_PR pres;
145 pres = GlobalE2node_ID_PR_gNB;
146 globale2nodeid->present = pres;
147 globale2nodeid->choice.gNB = e2gnb;
149 E2setupRequestIEs_t *e2setuprid = (E2setupRequestIEs_t*)calloc(1, sizeof(E2setupRequestIEs_t));;
150 E2setupRequestIEs__value_PR pres3;
151 pres3 = E2setupRequestIEs__value_PR_GlobalE2node_ID;
153 e2setuprid->criticality = 0;
154 e2setuprid->value.choice.GlobalE2node_ID = *globale2nodeid;
155 e2setuprid->value.present = pres3;
158 auto *ranFlistIEs = (E2setupRequestIEs_t *)calloc(1, sizeof(E2setupRequestIEs_t));
159 ASN_STRUCT_RESET(asn_DEF_E2setupRequestIEs, ranFlistIEs);
160 ranFlistIEs->criticality = 0;
161 ranFlistIEs->id = ProtocolIE_ID_id_RANfunctionsAdded;
162 ranFlistIEs->value.present = E2setupRequestIEs__value_PR_RANfunctions_List;
164 auto *itemIes = (RANfunction_ItemIEs_t *)calloc(1, sizeof(RANfunction_ItemIEs_t));
165 itemIes->id = ProtocolIE_ID_id_RANfunction_Item;
166 itemIes->criticality = Criticality_reject;
167 itemIes->value.present = RANfunction_ItemIEs__value_PR_RANfunction_Item;
168 itemIes->value.choice.RANfunction_Item.ranFunctionID = 1;
170 ASN_SEQUENCE_ADD(&ranFlistIEs->value.choice.RANfunctions_List.list, itemIes);
172 E2setupRequest_t *e2setupreq = (E2setupRequest_t*)calloc(1, sizeof(E2setupRequest_t));
173 ASN_SEQUENCE_ADD(&e2setupreq->protocolIEs.list, e2setuprid);
174 // ASN_SEQUENCE_ADD(&e2setupreq->protocolIEs.list, ranFlistIEs);
176 InitiatingMessage__value_PR pres4;
177 pres4 = InitiatingMessage__value_PR_E2setupRequest;
178 InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
179 // initmsg->procedureCode = 1;
180 initmsg->procedureCode = ProcedureCode_id_E2setup;
181 initmsg->criticality = Criticality_reject;
182 initmsg->value.present = pres4;
183 initmsg->value.choice.E2setupRequest = *e2setupreq;
186 pres5 = E2AP_PDU_PR_initiatingMessage;
189 e2ap_pdu->present = pres5;
190 e2ap_pdu->choice.initiatingMessage = initmsg;
192 fprintf(stderr, "testing PER encoding of e2ap_pdu\n");
194 uint8_t e2apbuffer[8192];
195 size_t e2apbuffer_size = 8192;
198 asn_encode_to_buffer(nullptr,
199 ATS_ALIGNED_BASIC_PER,
201 e2ap_pdu, e2apbuffer, e2apbuffer_size);
203 fprintf(stderr, "er encded is %d\n", er.encoded);
208 void generate_e2apv1_setup_response(E2AP_PDU_t *e2ap_pdu) {
210 E2setupResponseIEs *resp_ies1 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
211 E2setupResponseIEs *resp_ies2 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
212 E2setupResponseIEs *resp_ies3 = (E2setupResponseIEs_t*)calloc(1, sizeof(E2setupResponseIEs_t));
214 uint8_t *buf = (uint8_t *)"gnb1";
216 BIT_STRING_t *ricid_bstring = (BIT_STRING_t*)calloc(1,sizeof(BIT_STRING_t));
217 ricid_bstring->buf = buf;
218 ricid_bstring->size = 4;
219 ricid_bstring->bits_unused = 0;
221 uint8_t *buf2 = (uint8_t *)"plmn3";
222 OCTET_STRING_t *plmn = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
226 GlobalRIC_ID_t *globalricid = (GlobalRIC_ID_t*)calloc(1,sizeof(GlobalRIC_ID_t));
227 globalricid->pLMN_Identity = *plmn;
228 globalricid->ric_ID = *ricid_bstring;
230 E2setupResponseIEs__value_PR pres1;
231 pres1 = E2setupResponseIEs__value_PR_GlobalRIC_ID;
233 resp_ies1->id = ProtocolIE_ID_id_GlobalRIC_ID;
234 resp_ies1->criticality = 0;
235 resp_ies1->value.present = pres1;
236 resp_ies1->value.choice.GlobalRIC_ID = *globalricid;
238 E2setupResponse_t *e2setupresp = (E2setupResponse_t*)calloc(1,sizeof(E2setupResponse_t));
239 int ret = ASN_SEQUENCE_ADD(&e2setupresp->protocolIEs.list, resp_ies1);
242 SuccessfulOutcome__value_PR pres;
243 pres = SuccessfulOutcome__value_PR_E2setupResponse;
244 SuccessfulOutcome_t *successoutcome = (SuccessfulOutcome_t*)calloc(1, sizeof(SuccessfulOutcome_t));
245 successoutcome->procedureCode = 1;
246 successoutcome->criticality = 0;
247 successoutcome->value.present = pres;
248 successoutcome->value.choice.E2setupResponse = *e2setupresp;
250 E2AP_PDU_PR pres5 = E2AP_PDU_PR_successfulOutcome;
252 e2ap_pdu->present = pres5;
253 e2ap_pdu->choice.successfulOutcome = successoutcome;
258 void generate_e2apv1_subscription_request(E2AP_PDU *e2ap_pdu) {
260 fprintf(stderr, "in sub 1\n");
261 RICsubscriptionRequest_IEs_t *ricreqid = (RICsubscriptionRequest_IEs_t*)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));
262 fprintf(stderr, "in sub 2\n");
263 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest_IEs, ricreqid);
264 fprintf(stderr, "in sub 3\n");
265 auto *ricsubrid = (RICsubscriptionRequest_IEs_t*)calloc(1, sizeof(RICsubscriptionRequest_IEs_t));
266 fprintf(stderr, "in sub 4\n");
267 ASN_STRUCT_RESET(asn_DEF_RICsubscriptionRequest_IEs, ricsubrid);
269 fprintf(stderr, "in generate sub\n");
270 uint8_t *buf2 = (uint8_t *)"SubscriptionTriggers";
271 fprintf(stderr, "in gen sub 1\n");
272 OCTET_STRING_t *triggerdef = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
273 triggerdef->buf = (uint8_t *)calloc(1,20);
274 triggerdef->size = 20;
275 memcpy(triggerdef->buf, buf2, triggerdef->size);
278 fprintf(stderr, "sub1\n");
279 ProtocolIE_ID_t proto_id= ProtocolIE_ID_id_RICaction_ToBeSetup_Item;
281 RICaction_ToBeSetup_ItemIEs__value_PR pres6;
282 pres6 = RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item;
286 uint8_t *buf5 = (uint8_t *)"ActionDef";
288 OCTET_STRING_t *actdef = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
289 actdef->buf = (uint8_t *)calloc(1,9);
291 memcpy(triggerdef->buf, buf5, 9);
293 auto *sa = (RICsubsequentAction_t *) calloc(1, sizeof(RICsubsequentAction_t));
294 ASN_STRUCT_RESET(asn_DEF_RICsubsequentAction, sa);
296 sa->ricTimeToWait = RICtimeToWait_w500ms;
297 sa->ricSubsequentActionType = RICsubsequentActionType_continue;
300 RICaction_ToBeSetup_Item_t *action_item = (RICaction_ToBeSetup_Item_t*)calloc(1, sizeof(RICaction_ToBeSetup_Item_t));
301 action_item->ricActionID = 5;
302 action_item->ricActionType = 9;
303 action_item->ricActionDefinition = actdef;
304 action_item->ricSubsequentAction = sa;
308 RICaction_ToBeSetup_ItemIEs_t *action_item_ies = (RICaction_ToBeSetup_ItemIEs_t *)calloc(1, sizeof(RICaction_ToBeSetup_Item_t));
309 action_item_ies->id = proto_id;
310 action_item_ies->criticality = 0;
312 action_item_ies->value.present = pres6;
313 action_item_ies->value.choice.RICaction_ToBeSetup_Item.ricActionID = 5;
314 action_item_ies->value.choice.RICaction_ToBeSetup_Item.ricActionType = RICactionType_report;
315 action_item_ies->value.choice.RICaction_ToBeSetup_Item.ricActionDefinition = actdef;
316 action_item_ies->value.choice.RICaction_ToBeSetup_Item.ricSubsequentAction = sa;
321 RICsubscriptionDetails_t *ricsubdetails = (RICsubscriptionDetails_t*)calloc(1, sizeof(RICsubscriptionDetails_t));
324 ASN_SEQUENCE_ADD(&ricsubdetails->ricAction_ToBeSetup_List.list, action_item_ies);
325 ricsubdetails->ricEventTriggerDefinition = *triggerdef;
331 RICsubscriptionRequest_IEs__value_PR pres3;
333 pres3 = RICsubscriptionRequest_IEs__value_PR_RICsubscriptionDetails;
334 ricsubrid->id = ProtocolIE_ID_id_RICsubscriptionDetails;
337 ricsubrid->criticality = 0;
338 ricsubrid->value.present = pres3;
341 ricsubrid->value.choice.RICsubscriptionDetails.ricEventTriggerDefinition = *triggerdef;
344 ASN_SEQUENCE_ADD(&ricsubrid->value.choice.RICsubscriptionDetails.ricAction_ToBeSetup_List.list, action_item_ies);
349 ricreqid->id = ProtocolIE_ID_id_RICrequestID;
350 ricreqid->criticality = 0;
351 ricreqid->value.present = RICsubscriptionRequest_IEs__value_PR_RICrequestID;
352 ricreqid->value.choice.RICrequestID.ricRequestorID = 22;
353 ricreqid->value.choice.RICrequestID.ricInstanceID = 6;
355 RICsubscriptionRequest_t *ricsubreq = (RICsubscriptionRequest_t*)calloc(1, sizeof(RICsubscriptionRequest_t));
357 ASN_SEQUENCE_ADD(&ricsubreq->protocolIEs.list,ricreqid);
358 ASN_SEQUENCE_ADD(&ricsubreq->protocolIEs.list,ricsubrid);
362 InitiatingMessage__value_PR pres4;
363 pres4 = InitiatingMessage__value_PR_RICsubscriptionRequest;
364 InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
365 initmsg->procedureCode = ProcedureCode_id_RICsubscription;
366 initmsg->criticality = Criticality_reject;
367 initmsg->value.present = pres4;
368 initmsg->value.choice.RICsubscriptionRequest = *ricsubreq;
371 pres5 = E2AP_PDU_PR_initiatingMessage;
374 e2ap_pdu->present = pres5;
375 e2ap_pdu->choice.initiatingMessage = initmsg;
377 char *error_buf = (char*)calloc(300, sizeof(char));;
380 asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
381 printf("error length %d\n", errlen);
382 printf("error buf %s\n", error_buf);
384 // xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu);
390 void generate_e2apv1_indication_request(E2AP_PDU *e2ap_pdu) {
391 fprintf(stderr, "ind1\n");
392 RICindication_IEs_t *ricind_ies = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
393 RICindication_IEs_t *ricind_ies2 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
394 RICindication_IEs_t *ricind_ies3 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
395 RICindication_IEs_t *ricind_ies4 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
396 RICindication_IEs_t *ricind_ies5 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
397 RICindication_IEs_t *ricind_ies6 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
398 RICindication_IEs_t *ricind_ies7 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
399 RICindication_IEs_t *ricind_ies8 = (RICindication_IEs_t*)calloc(1, sizeof(RICindication_IEs_t));
401 RICindication_IEs__value_PR pres3;
403 pres3 = RICindication_IEs__value_PR_RICrequestID;
404 ricind_ies->id = ProtocolIE_ID_id_RICrequestID;
405 ricind_ies->criticality = 0;
406 ricind_ies->value.present = pres3;
407 ricind_ies->value.choice.RICrequestID.ricRequestorID = 25;
408 ricind_ies->value.choice.RICrequestID.ricInstanceID = 3;
410 fprintf(stderr, "ind2\n");
412 pres3 = RICindication_IEs__value_PR_RANfunctionID;
413 ricind_ies2->id = ProtocolIE_ID_id_RANfunctionID;
414 ricind_ies2->criticality = 0;
415 ricind_ies2->value.present = pres3;
416 ricind_ies2->value.choice.RANfunctionID = 70;
419 ricind_ies3->id = ProtocolIE_ID_id_RICactionID;
420 ricind_ies3->criticality = 0;
421 pres3 = RICindication_IEs__value_PR_RICactionID;
422 ricind_ies3->value.present = pres3;
423 ricind_ies3->value.choice.RICactionID = 80;
426 pres3 = RICindication_IEs__value_PR_RICindicationSN;
427 ricind_ies4->id = ProtocolIE_ID_id_RICindicationSN;
428 ricind_ies4->criticality = 0;
429 ricind_ies4->value.present = pres3;
430 ricind_ies4->value.choice.RICindicationSN = 45;
432 pres3 = RICindication_IEs__value_PR_RICindicationType;
433 ricind_ies5->id = ProtocolIE_ID_id_RICindicationType;
434 ricind_ies5->criticality = 0;
435 ricind_ies5->value.present = pres3;
436 ricind_ies5->value.choice.RICindicationType = 0;
439 uint8_t *buf2 = (uint8_t *)"reportheader";
440 OCTET_STRING_t *hdr_str = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
441 hdr_str->buf = (uint8_t*)calloc(1,12);
443 memcpy(hdr_str->buf, buf2, 12);
445 fprintf(stderr, "ind3\n");
447 ricind_ies6->value.choice.RICindicationHeader.buf = (uint8_t*)calloc(1,12);
449 pres3 = RICindication_IEs__value_PR_RICindicationHeader;
450 ricind_ies6->id = ProtocolIE_ID_id_RICindicationHeader;
451 ricind_ies6->criticality = 0;
452 ricind_ies6->value.present = pres3;
453 ricind_ies6->value.choice.RICindicationHeader.size = 12;
454 memcpy(ricind_ies6->value.choice.RICindicationHeader.buf, buf2, 12);
456 ricind_ies7->value.choice.RICindicationMessage.buf = (uint8_t*)calloc(1,8192);
457 uint8_t *buf9 = (uint8_t *)"reportmsg";
458 OCTET_STRING_t *msg_str = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
459 msg_str->buf = (uint8_t*)calloc(1,9);
461 memcpy(msg_str->buf, buf9, 9);
463 fprintf(stderr, "ind4\n");
466 pres3 = RICindication_IEs__value_PR_RICindicationMessage;
467 ricind_ies7->id = ProtocolIE_ID_id_RICindicationMessage;
468 fprintf(stderr, "after encoding message 1\n");
470 ricind_ies7->criticality = 0;
471 ricind_ies7->value.present = pres3;
473 fprintf(stderr, "after encoding message 2\n");
475 fprintf(stderr, "after encoding message 3\n");
476 ricind_ies7->value.choice.RICindicationMessage.size = 9;
478 fprintf(stderr, "after encoding message 4\n");
479 memcpy(ricind_ies7->value.choice.RICindicationMessage.buf, buf9, 9);
481 fprintf(stderr, "after encoding message 5\n");
483 uint8_t *buf4 = (uint8_t *)"cpid";
484 OCTET_STRING_t cpid_str;
489 pres3 = RICindication_IEs__value_PR_RICcallProcessID;
490 ricind_ies8->id = ProtocolIE_ID_id_RICcallProcessID;
492 ricind_ies8->criticality = 0;
493 ricind_ies8->value.present = pres3;
495 ricind_ies8->value.choice.RICcallProcessID = cpid_str;
498 RICindication_t *ricindication = (RICindication_t*)calloc(1, sizeof(RICindication_t));
503 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies);
505 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies2);
507 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies3);
508 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies4);
509 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies5);
511 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies6);
513 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies7);
515 ret = ASN_SEQUENCE_ADD(&ricindication->protocolIEs.list, ricind_ies8);
518 InitiatingMessage__value_PR pres4;
519 pres4 = InitiatingMessage__value_PR_RICindication;
520 InitiatingMessage_t *initmsg = (InitiatingMessage_t*)calloc(1, sizeof(InitiatingMessage_t));
521 initmsg->procedureCode = 5;
522 initmsg->criticality = 1;
523 initmsg->value.present = pres4;
524 initmsg->value.choice.RICindication = *ricindication;
527 pres5 = E2AP_PDU_PR_initiatingMessage;
529 e2ap_pdu->present = pres5;
530 e2ap_pdu->choice.initiatingMessage = initmsg;
532 char *error_buf = (char*)calloc(300, sizeof(char));;
535 asn_check_constraints(&asn_DEF_E2AP_PDU, e2ap_pdu, error_buf, &errlen);
536 printf("error length %d\n", errlen);
537 printf("error buf %s\n", error_buf);
539 // xer_fprint(stderr, &asn_DEF_E2AP_PDU, e2ap_pdu);