8020049f00805229ffa9b030c1e98f81f3b7d8fb
[ric-plt/submgr.git] / e2ap / pkg / e2ap / msg_e2ap.go
1 /*
2 ==================================================================================
3   Copyright (c) 2019 AT&T Intellectual Property.
4   Copyright (c) 2019 Nokia
5
6    Licensed under the Apache License, Version 2.0 (the "License");
7    you may not use this file except in compliance with the License.
8    You may obtain a copy of the License at
9
10        http://www.apache.org/licenses/LICENSE-2.0
11
12    Unless required by applicable law or agreed to in writing, software
13    distributed under the License is distributed on an "AS IS" BASIS,
14    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15    See the License for the specific language governing permissions and
16    limitations under the License.
17 ==================================================================================
18 */
19
20 package e2ap
21
22 import (
23         "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/conv"
24         "strconv"
25 )
26
27 //-----------------------------------------------------------------------------
28 //
29 //-----------------------------------------------------------------------------
30 const (
31         E2AP_InitiatingMessage   uint64 = 1
32         E2AP_SuccessfulOutcome   uint64 = 2
33         E2AP_UnsuccessfulOutcome uint64 = 3
34 )
35
36 //-----------------------------------------------------------------------------
37 //
38 //-----------------------------------------------------------------------------
39 // E2AP messages
40 // Initiating message
41 const (
42         E2AP_RICSubscriptionRequest       uint64 = 1
43         E2AP_RICSubscriptionDeleteRequest uint64 = 2
44
45         // E2AP_RICServiceUpdate uint64 = 3
46         // E2AP_RICControlRequest uint64 = 4
47         //
48         // //E2AP_X2SetupRequest uint64 = 5;
49         // E2AP_ENDCX2SetupRequest uint64 = 6
50         // E2AP_ResourceStatusRequest uint64 = 7
51         // E2AP_ENBConfigurationUpdate uint64 = 8
52         // E2AP_ENDCConfigurationUpdate uint64 = 9
53         // E2AP_ResetRequest uint64 = 10
54         // E2AP_RICIndication uint64 = 11
55
56         // E2AP_RICServiceQuery uint64 = 12
57         // E2AP_LoadInformation uint64 = 13
58         // E2AP_GNBStatusIndication uint64 = 14
59         // E2AP_ResourceStatusUpdate uint64 = 15
60         // E2AP_ErrorIndication uint64 = 16
61         //
62 )
63
64 // E2AP messages
65 // Successful outcome
66 const (
67         E2AP_RICSubscriptionResponse       uint64 = 1
68         E2AP_RICSubscriptionDeleteResponse uint64 = 2
69
70         // E2AP_RICserviceUpdateAcknowledge uint64 = 3
71         // E2AP_RICcontrolAcknowledge uint64 = 4
72         //
73         // //E2AP_X2SetupResponse uint64 = 5;
74         // E2AP_ENDCX2SetupResponse uint64 = 6
75         // E2AP_ResourceStatusResponse uint64 = 7
76         // E2AP_ENBConfigurationUpdateAcknowledge uint64 = 8
77         // E2AP_ENDCConfigurationUpdateAcknowledge uint64 = 9
78         // E2AP_ResetResponse uint64 = 10
79         //
80 )
81
82 // E2AP messages
83 // Unsuccessful outcome
84 const (
85         E2AP_RICSubscriptionFailure       uint64 = 1
86         E2AP_RICSubscriptionDeleteFailure uint64 = 2
87
88         // E2AP_RICserviceUpdateFailure uint64 = 3
89         // E2AP_RICcontrolFailure uint64 = 4
90         //
91         // //E2AP_X2SetupFailure uint64 = 5;
92         // E2AP_ENDCX2SetupFailure uint64 = 6
93         // E2AP_ResourceStatusFailure uint64 = 7
94         // E2AP_ENBConfigurationUpdateFailure uint64 = 8
95         // E2AP_ENDCConfigurationUpdateFailure uint64 = 9
96         //
97 )
98
99 //-----------------------------------------------------------------------------
100 //
101 //-----------------------------------------------------------------------------
102 type PackedData struct {
103         Buf []byte
104 }
105
106 //-----------------------------------------------------------------------------
107 //
108 //-----------------------------------------------------------------------------
109 type MessageInfo struct {
110         MsgType uint64
111         MsgId   uint64
112 }
113
114 func (msgInfo *MessageInfo) String() string {
115         return "msginfo(" + strconv.FormatUint((uint64)(msgInfo.MsgType), 10) + string(":") + strconv.FormatUint((uint64)(msgInfo.MsgId), 10) + ")"
116 }
117
118 //-----------------------------------------------------------------------------
119 //
120 //-----------------------------------------------------------------------------
121 type RequestId struct {
122         Id  uint32
123         Seq uint32
124 }
125
126 func (rid *RequestId) String() string {
127         return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.Seq), 10)
128 }
129
130 //-----------------------------------------------------------------------------
131 //
132 //-----------------------------------------------------------------------------
133 type FunctionId uint16
134
135 //-----------------------------------------------------------------------------
136 //
137 //-----------------------------------------------------------------------------
138
139 const (
140         E2AP_ENBIDMacroPBits20    uint8 = 20
141         E2AP_ENBIDHomeBits28      uint8 = 28
142         E2AP_ENBIDShortMacroits18 uint8 = 18
143         E2AP_ENBIDlongMacroBits21 uint8 = 21
144 )
145
146 type NodeId struct {
147         Bits uint8
148         Id   uint32
149 }
150
151 func (nid *NodeId) String() string {
152         return strconv.FormatUint((uint64)(nid.Id), 10)
153 }
154
155 //-----------------------------------------------------------------------------
156 //
157 //-----------------------------------------------------------------------------
158 type GlobalNodeId struct {
159         Present      bool
160         PlmnIdentity conv.PlmnIdentityTbcd
161         NodeId       NodeId
162 }
163
164 func (gnid *GlobalNodeId) String() string {
165         return gnid.PlmnIdentity.String() + string(":") + gnid.NodeId.String()
166 }
167
168 //-----------------------------------------------------------------------------
169 //
170 //-----------------------------------------------------------------------------
171 type InterfaceId struct {
172         GlobalEnbId GlobalNodeId
173         GlobalGnbId GlobalNodeId
174 }
175
176 //-----------------------------------------------------------------------------
177 //
178 //-----------------------------------------------------------------------------
179
180 const (
181         E2AP_InterfaceDirectionIncoming uint32 = 0
182         E2AP_InterfaceDirectionOutgoing uint32 = 1
183 )
184
185 type EventTriggerDefinition struct {
186         InterfaceId
187         InterfaceDirection uint32
188         ProcedureCode      uint32
189         TypeOfMessage      uint64
190 }
191
192 /*
193 //-----------------------------------------------------------------------------
194 //
195 //-----------------------------------------------------------------------------
196 type CallProcessId struct {
197   CallProcessIDVal uint32
198 }
199 */
200
201 //-----------------------------------------------------------------------------
202 //
203 //-----------------------------------------------------------------------------
204 type ActionDefinition struct {
205         Present bool
206         StyleId uint64
207         ParamId uint32
208         //ParamValue
209 }
210
211 //-----------------------------------------------------------------------------
212 //
213 //-----------------------------------------------------------------------------
214 const (
215         E2AP_SubSeqActionTypeContinue uint64 = 0
216         E2AP_SubSeqActionTypeWait     uint64 = 1
217 )
218
219 const (
220         E2AP_TimeToWaitZero   uint64 = 0
221         E2AP_TimeToWaitW1ms   uint64 = 1
222         E2AP_TimeToWaitW2ms   uint64 = 2
223         E2AP_TimeToWaitW5ms   uint64 = 3
224         E2AP_TimeToWaitW10ms  uint64 = 4
225         E2AP_TimeToWaitW20ms  uint64 = 4
226         E2AP_TimeToWaitW30ms  uint64 = 5
227         E2AP_TimeToWaitW40ms  uint64 = 6
228         E2AP_TimeToWaitW50ms  uint64 = 7
229         E2AP_TimeToWaitW100ms uint64 = 8
230         E2AP_TimeToWaitW200ms uint64 = 9
231         E2AP_TimeToWaitW500ms uint64 = 10
232         E2AP_TimeToWaitW1s    uint64 = 11
233         E2AP_TimeToWaitW2s    uint64 = 12
234         E2AP_TimeToWaitW5s    uint64 = 13
235         E2AP_TimeToWaitW10s   uint64 = 14
236         E2AP_TimeToWaitW20s   uint64 = 15
237         E2AP_TimeToWaitW60    uint64 = 16
238 )
239
240 type SubsequentAction struct {
241         Present    bool
242         Type       uint64
243         TimetoWait uint64
244 }
245
246 //-----------------------------------------------------------------------------
247 //
248 //-----------------------------------------------------------------------------
249
250 const (
251         E2AP_ActionTypeReport  uint64 = 0
252         E2AP_ActionTypeInsert  uint64 = 1
253         E2AP_ActionTypePolicy  uint64 = 2
254         E2AP_ActionTypeInvalid uint64 = 99 // For RIC internal usage only
255 )
256
257 type ActionToBeSetupItem struct {
258         ActionId   uint64
259         ActionType uint64
260         ActionDefinition
261         SubsequentAction
262 }
263
264 //-----------------------------------------------------------------------------
265 //
266 //-----------------------------------------------------------------------------
267
268 const (
269         E2AP_CauseContent_RadioNetwork uint8 = 1
270         E2AP_CauseContent_Transport    uint8 = 2
271         E2AP_CauseContent_Protocol     uint8 = 3
272         E2AP_CauseContent_Misc         uint8 = 4
273         E2AP_CauseContent_Ric          uint8 = 5
274 )
275
276 //const (
277 //      E2AP_CauseValue_RadioNetwork_ uint8 = 0
278 //)
279 //const (
280 //      E2AP_CauseValue_Transport_ uint8 = 0
281 //)
282 //const (
283 //      E2AP_CauseValue_Protocol_ uint8 = 0
284 //)
285 //const (
286 //      E2AP_CauseValue_Misc_ uint8 = 0
287 //)
288
289 const (
290         E2AP_CauseValue_Ric_function_id_Invalid                            uint8 = 0
291         E2AP_CauseValue_Ric_action_not_supported                           uint8 = 1
292         E2AP_CauseValue_Ric_excessive_actions                              uint8 = 2
293         E2AP_CauseValue_Ric_duplicate_action                               uint8 = 3
294         E2AP_CauseValue_Ric_duplicate_event                                uint8 = 4
295         E2AP_CauseValue_Ric_function_resource_limit                        uint8 = 5
296         E2AP_CauseValue_Ric_request_id_unknown                             uint8 = 6
297         E2AP_CauseValue_Ric_inconsistent_action_subsequent_action_sequence uint8 = 7
298         E2AP_CauseValue_Ric_control_message_invalid                        uint8 = 8
299         E2AP_CauseValue_Ric_call_process_id_invalid                        uint8 = 9
300         E2AP_CauseValue_Ric_function_not_required                          uint8 = 10
301         E2AP_CauseValue_Ric_excessive_functions                            uint8 = 11
302         E2AP_CauseValue_Ric_ric_resource_limi                              uint8 = 12
303 )
304
305 type Cause struct {
306         Content uint8
307         Value   uint8
308 }
309
310 //-----------------------------------------------------------------------------
311 //
312 //-----------------------------------------------------------------------------
313 type ActionAdmittedItem struct {
314         ActionId uint64
315 }
316
317 //-----------------------------------------------------------------------------
318 //
319 //-----------------------------------------------------------------------------
320 type ActionAdmittedList struct {
321         Items []ActionAdmittedItem //16
322 }
323
324 //-----------------------------------------------------------------------------
325 //
326 //-----------------------------------------------------------------------------
327 type ActionNotAdmittedItem struct {
328         ActionId uint64
329         Cause    Cause
330 }
331
332 //-----------------------------------------------------------------------------
333 //
334 //-----------------------------------------------------------------------------
335 type ActionNotAdmittedList struct {
336         Items []ActionNotAdmittedItem //16
337 }
338
339 //-----------------------------------------------------------------------------
340 //
341 //-----------------------------------------------------------------------------
342 const (
343         E2AP_CriticalityReject uint8 = 0
344         E2AP_CriticalityIgnore uint8 = 1
345         E2AP_CriticalityNotify uint8 = 2
346 )
347
348 type CriticalityDiagnosticsIEListItem struct {
349         IeCriticality uint8 //Crit
350         IeID          uint32
351         TypeOfError   uint8
352 }
353
354 //-----------------------------------------------------------------------------
355 //
356 //-----------------------------------------------------------------------------
357 type CriticalityDiagnosticsIEList struct {
358         Items []CriticalityDiagnosticsIEListItem //256
359 }
360
361 //-----------------------------------------------------------------------------
362 //
363 //-----------------------------------------------------------------------------
364 type CriticalityDiagnostics struct {
365         Present         bool
366         ProcCodePresent bool
367         ProcCode        uint64
368         TrigMsgPresent  bool
369         TrigMsg         uint64
370         ProcCritPresent bool
371         ProcCrit        uint8 //Crit
372         CriticalityDiagnosticsIEList
373 }