7 #include "encode_kpm.hpp";
11 void encode_kpm(E2SM_KPM_IndicationMessage_t* indicationmessage) {
12 ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage);
13 std::string gn = "GNBCUUP5";
14 std::vector<uint8_t> gnvec(gn.begin(), gn.end());
15 uint8_t *buf = &gnvec[0];
16 OCTET_STRING_t *gnbcuupname = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
17 gnbcuupname->size = 8;
18 gnbcuupname->buf = (uint8_t*)calloc(1,8);
19 memcpy(gnbcuupname->buf, buf, gnbcuupname->size);
22 INTEGER_t *bytesdl = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
25 bytesdl->buf = (uint8_t*)calloc(1,1);
26 memcpy(bytesdl->buf, buffer,1);
29 INTEGER_t *bytesul = (INTEGER_t*)calloc(1, sizeof(INTEGER_t));
32 bytesul->buf = (uint8_t*)calloc(1,1);
33 memcpy(bytesul->buf, buffer1, 1);
36 FQIPERSlicesPerPlmnListItem_t *fqilistitem = (FQIPERSlicesPerPlmnListItem_t*)calloc(1, sizeof(FQIPERSlicesPerPlmnListItem_t));
37 ASN_STRUCT_RESET(asn_DEF_FQIPERSlicesPerPlmnListItem, fqilistitem);
38 fqilistitem->fiveQI = 9;
39 fqilistitem->pDCPBytesDL = bytesdl;
40 fqilistitem->pDCPBytesUL = bytesul;
44 std::string sl = "SLICE4";
45 std::vector<uint8_t> slvec(sl.begin(), sl.end());
46 // uint8_t *buf1 = &slvec[0];
47 uint8_t *buf1 = (uint8_t*)"SLICE4";
48 OCTET_STRING_t *sst = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
50 sst->buf = (uint8_t*)calloc(1,6);
51 memcpy(sst->buf,buf1,sst->size);
53 std::string sd = "SD1";
54 std::vector<uint8_t> sdvec(sd.begin(), sd.end());
55 // uint8_t *bufz = &sdvec[0];
56 uint8_t *bufz = (uint8_t*)"SD1";
57 OCTET_STRING_t *sds = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
59 sds->buf = (uint8_t*)calloc(1,3);
60 memcpy(sds->buf, bufz, sds->size);
63 SNSSAI_t *snssai = (SNSSAI_t*)calloc(1, sizeof(SNSSAI_t));
64 ASN_STRUCT_RESET(asn_DEF_SNSSAI,snssai);
65 snssai->sST.buf = (uint8_t*)calloc(6,1);
67 memcpy(snssai->sST.buf, buf1, 6);
68 snssai->sD = (OCTET_STRING_t*)calloc(1, sizeof(OCTET_STRING_t));
69 snssai->sD->buf = (uint8_t*)calloc(1,3);
71 memcpy(snssai->sD->buf, bufz, 3);
75 SliceToReportListItem_t *slicelistitem = (SliceToReportListItem_t*)calloc(1,sizeof(SliceToReportListItem_t));
76 ASN_STRUCT_RESET(asn_DEF_SliceToReportListItem, slicelistitem);
77 slicelistitem->sliceID = *snssai;
78 int ret = ASN_SEQUENCE_ADD(&slicelistitem->fQIPERSlicesPerPlmnList.list, fqilistitem);
80 uint8_t e2smbuffera[8192];
81 size_t e2smbuffer_sizea = 8192;
84 asn_encode_to_buffer(nullptr,
85 ATS_ALIGNED_BASIC_PER,
86 &asn_DEF_SliceToReportListItem,
87 slicelistitem, e2smbuffera, e2smbuffer_sizea);
88 fprintf(stderr, "inner er encded is %d\n", era.encoded);
89 fprintf(stderr, "after encoding message\n");
91 FGC_CUUP_PM_Format_t *pm_format = (FGC_CUUP_PM_Format_t*)calloc(1,sizeof(FGC_CUUP_PM_Format_t));
92 ASN_STRUCT_RESET(asn_DEF_FGC_CUUP_PM_Format, pm_format);
93 ret = ASN_SEQUENCE_ADD(&pm_format->sliceToReportList.list, slicelistitem);
95 std::string pl = "PLMNID7";
96 std::vector<uint8_t> plvec(pl.begin(), pl.end());
97 uint8_t *buf2 = &plvec[0];
99 OCTET_STRING_t *plmnid = (OCTET_STRING_t*)calloc(1,sizeof(OCTET_STRING_t));
100 plmnid->buf = (uint8_t*)calloc(1,7);
102 memcpy(plmnid->buf, buf2, plmnid->size);
105 PlmnID_List_t *plmnidlist = (PlmnID_List_t*)calloc(1,sizeof(PlmnID_List_t));
106 ASN_STRUCT_RESET(asn_DEF_PlmnID_List, plmnidlist);
107 plmnidlist->pLMN_Identity = *plmnid;
108 plmnidlist->cu_UP_PM_5GC = pm_format;
110 CUUPMeasurement_Container_t *meas_cont = (CUUPMeasurement_Container_t*)calloc(1, sizeof(CUUPMeasurement_Container_t));
111 ASN_STRUCT_RESET(asn_DEF_CUUPMeasurement_Container, meas_cont);
112 ret = ASN_SEQUENCE_ADD(&meas_cont->plmnList.list, plmnidlist);
117 PF_ContainerListItem_t *listitem1 = (PF_ContainerListItem_t*)calloc(1, sizeof(PF_ContainerListItem_t));
118 ASN_STRUCT_RESET(asn_DEF_PF_ContainerListItem, listitem1);
119 listitem1->interface_type = 2;
120 listitem1->o_CU_UP_PM_Container = *meas_cont;
122 OCUUP_PF_Container_t *cuupcont = (OCUUP_PF_Container_t*)calloc(1,sizeof(OCUUP_PF_Container_t));
123 ASN_STRUCT_RESET(asn_DEF_OCUUP_PF_Container, cuupcont);
124 cuupcont->gNB_CU_UP_Name = gnbcuupname;
125 ret = ASN_SEQUENCE_ADD(&cuupcont->pf_ContainerList.list, listitem1);
127 PF_Container_PR pres1 = PF_Container_PR_oCU_UP;
129 PF_Container_t *pfcontainer = (PF_Container_t*)calloc(1, sizeof(PF_Container_t));
130 ASN_STRUCT_RESET(asn_DEF_PF_Container, pfcontainer);
131 pfcontainer->present = pres1;
132 pfcontainer->choice.oCU_UP = *cuupcont;
134 PM_Containers_List_t *containers_list = (PM_Containers_List_t*)calloc(1, sizeof(PM_Containers_List_t));
135 ASN_STRUCT_RESET(asn_DEF_PM_Containers_List, containers_list);
136 containers_list->performanceContainer = pfcontainer;
138 E2SM_KPM_IndicationMessage_Format1_t *format =
139 (E2SM_KPM_IndicationMessage_Format1_t*)calloc(1, sizeof(E2SM_KPM_IndicationMessage_Format1_t));
140 ASN_STRUCT_RESET(asn_DEF_E2SM_KPM_IndicationMessage_Format1, format);
142 ret = ASN_SEQUENCE_ADD(&format->pm_Containers.list, containers_list);
144 E2SM_KPM_IndicationMessage_PR pres = E2SM_KPM_IndicationMessage_PR_indicationMessage_Format1;
146 indicationmessage->present = pres;
148 indicationmessage->choice.indicationMessage_Format1 = *format;
150 char *error_buf = (char*)calloc(300, sizeof(char));
153 asn_check_constraints(&asn_DEF_E2SM_KPM_IndicationMessage, indicationmessage, error_buf, &errlen);
154 printf("error length %d\n", errlen);
155 printf("error buf %s\n", error_buf);
158 uint8_t e2smbuffer[8192];
159 size_t e2smbuffer_size = 8192;
161 uint8_t e2smbuffer2[8192];
162 size_t e2smbuffer_size2 = 8192;
165 asn_encode_to_buffer(nullptr,
166 ATS_ALIGNED_BASIC_PER,
167 &asn_DEF_E2SM_KPM_IndicationMessage,
168 indicationmessage, e2smbuffer, e2smbuffer_size);
170 fprintf(stderr, "er encded is %d\n", er.encoded);
171 fprintf(stderr, "after encoding message\n");