2 * Copyright 2019 AT&T Intellectual Property
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 // Created by adi ENZEL on 6/19/19.
22 #ifndef ASN_DISABLE_OER_SUPPORT
23 #define ASN_DISABLE_OER_SUPPORT // this is to remove the OER do not remove it
37 #include <sys/types.h>
41 #include <mdclog/mdclog.h>
46 #include "../asn1cFiles/ENB-ID.h"
48 #include "../asn1cFiles/E2SM-gNB-X2-actionDefinition.h"
50 #include "../asn1cFiles/E2SM-gNB-X2-callProcessID.h"
51 #include "../asn1cFiles/E2SM-gNB-X2-controlHeader.h"
52 #include "../asn1cFiles/E2SM-gNB-X2-controlMessage.h"
53 #include "../asn1cFiles/E2SM-gNB-X2-indicationHeader.h"
54 #include "../asn1cFiles/E2SM-gNB-X2-indicationMessage.h"
55 #include "../asn1cFiles/E2SM-gNB-X2-eventTriggerDefinition.h"
58 #include "../asn1cFiles/ActionParameter-Item.h"
59 #include "../asn1cFiles/ActionParameter-Value.h"
60 #include "../asn1cFiles/PLMN-Identity.h"
61 #include "../asn1cFiles/GlobalENB-ID.h"
62 #include "../asn1cFiles/GlobalGNB-ID.h"
63 #include "../asn1cFiles/Interface-ID.h"
64 #include "../asn1cFiles/InterfaceMessageType.h"
65 #include "../asn1cFiles/InterfaceProtocolIE-Item.h"
72 PLMN_Identity_t *createPLMN_ID(const unsigned char *data);
79 ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data);
86 GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits);
93 GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId);
100 GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb);
107 Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb);
113 Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb);
117 * @param procedureCode
120 InterfaceMessageType_t *createInterfaceMessageInitiating(ProcedureCode_t procedureCode);
123 * @param procedureCode
126 InterfaceMessageType_t *createInterfaceMessageSuccsesful(ProcedureCode_t procedureCode);
130 * @param procedureCode
133 InterfaceMessageType_t *createInterfaceMessageUnsuccessful(ProcedureCode_t procedureCode);
141 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number);
147 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number);
153 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val);
161 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits);
169 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf);
177 InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value);
184 ActionParameter_Value_t *createActionParameterValue_Int(long number);
191 ActionParameter_Value_t *createActionParameterValue_Enum(long number);
198 ActionParameter_Value_t *createActionParameterValue_Bool(int val);
206 ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits);
214 ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf);
222 ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf);
230 ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val);
237 * @param interfaceProtocolItemList
243 size_t createEventTrigger(Interface_ID_t *interfaceId, long direction,
244 InterfaceMessageType_t *messageType,
245 InterfaceProtocolIE_Item_t interfaceProtocolItemList[],
254 * @param actionParamList
260 size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize,
265 * @param interfaceDirection
273 size_t createE2SM_gNB_X2_indicationHeader(long interfaceDirection,
274 Interface_ID_t *interfaceId,
275 uint8_t *timestamp, //can put NULL if size == 0
288 size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize,
294 * @param callProcess_Id
299 size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id,
303 size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction,
307 size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize,