a4e432fd343ed549ae81a4a75d3077b052c66922
[ric-plt/e2.git] / RIC-E2-TERMINATION / TEST / e2sm.h
1 /*
2  * Copyright 2019 AT&T Intellectual Property
3  * Copyright 2019 Nokia
4  *
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 //
19 // Created by adi ENZEL on 6/19/19.
20 //
21
22 #ifndef ASN_DISABLE_OER_SUPPORT
23 #define ASN_DISABLE_OER_SUPPORT // this is to remove the OER do not remove it
24 #endif
25
26
27 #ifdef __cplusplus
28 extern "C"
29 {
30 #endif
31
32
33 #ifndef E2_E2SM_H
34 #define E2_E2SM_H
35
36 #include <stdlib.h>
37 #include <sys/types.h>
38 #include <string.h>
39 #include <error.h>
40 #include <errno.h>
41 #include <mdclog/mdclog.h>
42 #include <time.h>
43 #include <math.h>
44
45
46 #include "../asn1cFiles/ENB-ID.h"
47
48 #include "../asn1cFiles/E2SM-gNB-X2-actionDefinition.h"
49
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"
56
57
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"
66
67 /**
68  *
69  * @param data
70  * @return
71  */
72 PLMN_Identity_t *createPLMN_ID(const unsigned char *data);
73 /**
74  *
75  * @param enbType
76  * @param data
77  * @return
78  */
79 ENB_ID_t *createENB_ID(ENB_ID_PR enbType, unsigned char *data);
80 /**
81  *
82  * @param data
83  * @param numOfBits
84  * @return
85  */
86 GNB_ID_t *createGnb_id(const unsigned char *data, int numOfBits);
87 /**
88  *
89  * @param plmnIdentity
90  * @param enbId
91  * @return
92  */
93 GlobalENB_ID_t *createGlobalENB_ID(PLMN_Identity_t *plmnIdentity, ENB_ID_t *enbId);
94 /**
95  *
96  * @param plmnIdentity
97  * @param gnb
98  * @return
99  */
100 GlobalGNB_ID_t *createGlobalGNB_ID(PLMN_Identity_t *plmnIdentity, GNB_ID_t *gnb);
101
102 /**
103  *
104  * @param gnb
105  * @return
106  */
107 Interface_ID_t *createInterfaceIDForGnb(GlobalGNB_ID_t *gnb);
108 /**
109  *
110  * @param enb
111  * @return
112  */
113 Interface_ID_t *createInterfaceIDForEnb(GlobalENB_ID_t *enb);
114
115 /**
116  *
117  * @param procedureCode
118  * @return
119  */
120 InterfaceMessageType_t *createInterfaceMessageInitiating(ProcedureCode_t procedureCode);
121 /**
122  *
123  * @param procedureCode
124  * @return
125  */
126 InterfaceMessageType_t *createInterfaceMessageSuccsesful(ProcedureCode_t procedureCode);
127
128 /**
129  *
130  * @param procedureCode
131  * @return
132  */
133 InterfaceMessageType_t *createInterfaceMessageUnsuccessful(ProcedureCode_t procedureCode);
134
135
136 /**
137  *
138  * @param number
139  * @return
140  */
141 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueInt(long number);
142 /**
143  *
144  * @param number
145  * @return
146  */
147 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueEnum(long number);
148 /**
149  *
150  * @param val
151  * @return
152  */
153 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBool(int val);
154
155 /**
156  *
157  * @param buf
158  * @param numOfBits
159  * @return
160  */
161 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueBitString(unsigned char *buf, int numOfBits);
162
163 /**
164  *
165  * @param buf
166  * @param size
167  * @return
168  */
169 InterfaceProtocolIE_Value_t *createInterfaceProtocolValueOCTETS(uint8_t *buf);
170 /**
171  *
172  * @param id
173  * @param test
174  * @param value
175  * @return
176  */
177 InterfaceProtocolIE_Item_t *createInterfaceProtocolIE_Item(long id, long test, InterfaceProtocolIE_Value_t *value);
178
179 /**
180  *
181  * @param number
182  * @return
183  */
184 ActionParameter_Value_t *createActionParameterValue_Int(long number);
185
186 /**
187  *
188  * @param number
189  * @return
190  */
191 ActionParameter_Value_t *createActionParameterValue_Enum(long number);
192
193 /**
194  *
195  * @param val
196  * @return
197  */
198 ActionParameter_Value_t *createActionParameterValue_Bool(int val);
199
200 /**
201  *
202  * @param buf
203  * @param numOfBits
204  * @return
205  */
206 ActionParameter_Value_t *createActionParameterValue_Bit_String(unsigned char *buf, int numOfBits);
207
208 /**
209  *
210  * @param buf
211  * @param size
212  * @return
213  */
214 ActionParameter_Value_t *createActionParameterValue_OCTETS(uint8_t *buf);
215
216 /**
217  *
218  * @param buf
219  * @param size
220  * @return
221  */
222 ActionParameter_Value_t *createActionParameterValue_PRINTS(char *buf);
223
224 /**
225  *
226  * @param id
227  * @param val
228  * @return
229  */
230 ActionParameter_Item_t *creatActionParameter_Item(long id, ActionParameter_Value_t *val);
231
232 /**
233  *
234  * @param interfaceId
235  * @param direction
236  * @param messageType
237  * @param interfaceProtocolItemList
238  * @param listSize
239  * @param buffer
240  * @param buffer_size
241  * @return
242  */
243 size_t createEventTrigger(Interface_ID_t *interfaceId, long direction,
244                           InterfaceMessageType_t *messageType,
245                           InterfaceProtocolIE_Item_t interfaceProtocolItemList[],
246                           int listSize,
247                           uint8_t *buffer,
248                           size_t buffer_size);
249
250
251 /**
252  *
253  * @param styleId
254  * @param actionParamList
255  * @param listSize
256  * @param buffer
257  * @param buffer_size
258  * @return
259  */
260 size_t createActionDefinition(long styleId, ActionParameter_Item_t actionParamList[], int listSize,
261                               uint8_t *buffer,
262                               size_t buffer_size);
263 /**
264  *
265  * @param interfaceDirection
266  * @param interfaceId
267  * @param timestamp
268  * @param size
269  * @param buffer
270  * @param buffer_size
271  * @return
272  */
273 size_t createE2SM_gNB_X2_indicationHeader(long interfaceDirection,
274                                                                    Interface_ID_t *interfaceId,
275                                                                    uint8_t *timestamp, //can put NULL if size == 0
276                                                                    int size,
277                                                                    uint8_t *buffer,
278                                                                    size_t buffer_size);
279
280 /**
281  *
282  * @param message
283  * @param msgSize
284  * @param buffer
285  * @param buffer_size
286  * @return
287  */
288 size_t createE2SM_gNB_X2_indicationMessage(uint8_t *message, uint msgSize,
289                                                                      uint8_t *buffer,
290                                                                      size_t buffer_size);
291
292 /**
293  *
294  * @param callProcess_Id
295  * @param buffer
296  * @param buffer_size
297  * @return
298  */
299 size_t createE2SM_gNB_X2_callProcessID(long callProcess_Id,
300                                                              uint8_t *buffer,
301                                                              size_t buffer_size);
302
303 size_t createE2SM_gNB_X2_controlHeader(Interface_ID_t *interfaceId, long direction,
304                                                              uint8_t *buffer,
305                                                              size_t buffer_size);
306
307 size_t createE2SM_gNB_X2_controlMessage(uint8_t *message, uint msgSize,
308                                         uint8_t *buffer,
309                                         size_t buffer_size);
310 #endif //E2_E2SM_H
311
312 #ifdef __cplusplus
313 }
314 #endif