96ef09963552594ddd1cfdb09792d936a9333896
[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         InstanceId uint32
124 }
125
126 func (rid *RequestId) String() string {
127         return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.InstanceId), 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         Data OctetString
187 }
188
189 /*
190 //-----------------------------------------------------------------------------
191 //
192 //-----------------------------------------------------------------------------
193 type CallProcessId struct {
194   CallProcessIDVal uint32
195 }
196 */
197
198 type ActionDefinitionChoice struct {
199         Data OctetString
200 }
201
202 //-----------------------------------------------------------------------------
203 //
204 //-----------------------------------------------------------------------------
205 type BitString struct {
206         UnusedBits uint8
207         Length     uint64
208         Data       []uint8
209 }
210
211 //-----------------------------------------------------------------------------
212 //
213 //-----------------------------------------------------------------------------
214 type OctetString struct {
215         Length uint64
216         Data   []uint8
217 }
218
219 //-----------------------------------------------------------------------------
220 //
221 //-----------------------------------------------------------------------------
222 const (
223         E2AP_SubSeqActionTypeContinue uint64 = 0
224         E2AP_SubSeqActionTypeWait     uint64 = 1
225 )
226
227 const (
228         E2AP_TimeToWaitZero   uint64 = 0
229         E2AP_TimeToWaitW1ms   uint64 = 1
230         E2AP_TimeToWaitW2ms   uint64 = 2
231         E2AP_TimeToWaitW5ms   uint64 = 3
232         E2AP_TimeToWaitW10ms  uint64 = 4
233         E2AP_TimeToWaitW20ms  uint64 = 4
234         E2AP_TimeToWaitW30ms  uint64 = 5
235         E2AP_TimeToWaitW40ms  uint64 = 6
236         E2AP_TimeToWaitW50ms  uint64 = 7
237         E2AP_TimeToWaitW100ms uint64 = 8
238         E2AP_TimeToWaitW200ms uint64 = 9
239         E2AP_TimeToWaitW500ms uint64 = 10
240         E2AP_TimeToWaitW1s    uint64 = 11
241         E2AP_TimeToWaitW2s    uint64 = 12
242         E2AP_TimeToWaitW5s    uint64 = 13
243         E2AP_TimeToWaitW10s   uint64 = 14
244         E2AP_TimeToWaitW20s   uint64 = 15
245         E2AP_TimeToWaitW60    uint64 = 16
246 )
247
248 type SubsequentAction struct {
249         Present    bool
250         Type       uint64
251         TimetoWait uint64
252 }
253
254 //-----------------------------------------------------------------------------
255 //
256 //-----------------------------------------------------------------------------
257
258 const (
259         E2AP_ActionTypeReport  uint64 = 0
260         E2AP_ActionTypeInsert  uint64 = 1
261         E2AP_ActionTypePolicy  uint64 = 2
262         E2AP_ActionTypeInvalid uint64 = 99 // For RIC internal usage only
263 )
264
265 type ActionToBeSetupItem struct {
266         ActionId                   uint64
267         ActionType                 uint64
268         RicActionDefinitionPresent bool
269         ActionDefinitionChoice
270         SubsequentAction
271 }
272
273 //-----------------------------------------------------------------------------
274 //
275 //-----------------------------------------------------------------------------
276
277 const (
278         E2AP_CauseContent_RadioNetwork uint8 = 1
279         E2AP_CauseContent_Transport    uint8 = 2
280         E2AP_CauseContent_Protocol     uint8 = 3
281         E2AP_CauseContent_Misc         uint8 = 4
282         E2AP_CauseContent_Ric          uint8 = 5
283 )
284
285 //const (
286 //      E2AP_CauseValue_RadioNetwork_ uint8 = 0
287 //)
288 //const (
289 //      E2AP_CauseValue_Transport_ uint8 = 0
290 //)
291 //const (
292 //      E2AP_CauseValue_Protocol_ uint8 = 0
293 //)
294 //const (
295 //      E2AP_CauseValue_Misc_ uint8 = 0
296 //)
297
298 const (
299         E2AP_CauseValue_Ric_function_id_Invalid                            uint8 = 0
300         E2AP_CauseValue_Ric_action_not_supported                           uint8 = 1
301         E2AP_CauseValue_Ric_excessive_actions                              uint8 = 2
302         E2AP_CauseValue_Ric_duplicate_action                               uint8 = 3
303         E2AP_CauseValue_Ric_duplicate_event                                uint8 = 4
304         E2AP_CauseValue_Ric_function_resource_limit                        uint8 = 5
305         E2AP_CauseValue_Ric_request_id_unknown                             uint8 = 6
306         E2AP_CauseValue_Ric_inconsistent_action_subsequent_action_sequence uint8 = 7
307         E2AP_CauseValue_Ric_control_message_invalid                        uint8 = 8
308         E2AP_CauseValue_Ric_call_process_id_invalid                        uint8 = 9
309         E2AP_CauseValue_Ric_function_not_required                          uint8 = 10
310         E2AP_CauseValue_Ric_excessive_functions                            uint8 = 11
311         E2AP_CauseValue_Ric_ric_resource_limi                              uint8 = 12
312 )
313
314 type Cause struct {
315         Content uint8
316         Value   uint8
317 }
318
319 //-----------------------------------------------------------------------------
320 //
321 //-----------------------------------------------------------------------------
322 type ActionAdmittedItem struct {
323         ActionId uint64
324 }
325
326 //-----------------------------------------------------------------------------
327 //
328 //-----------------------------------------------------------------------------
329 type ActionAdmittedList struct {
330         Items []ActionAdmittedItem //16
331 }
332
333 //-----------------------------------------------------------------------------
334 //
335 //-----------------------------------------------------------------------------
336 type ActionNotAdmittedItem struct {
337         ActionId uint64
338         Cause    Cause
339 }
340
341 //-----------------------------------------------------------------------------
342 //
343 //-----------------------------------------------------------------------------
344 type ActionNotAdmittedList struct {
345         Items []ActionNotAdmittedItem //16
346 }
347
348 //-----------------------------------------------------------------------------
349 //
350 //-----------------------------------------------------------------------------
351 const (
352         E2AP_CriticalityReject uint8 = 0
353         E2AP_CriticalityIgnore uint8 = 1
354         E2AP_CriticalityNotify uint8 = 2
355 )
356
357 type CriticalityDiagnosticsIEListItem struct {
358         IeCriticality uint8 //Crit
359         IeID          uint32
360         TypeOfError   uint8
361 }
362
363 //-----------------------------------------------------------------------------
364 //
365 //-----------------------------------------------------------------------------
366 type CriticalityDiagnosticsIEList struct {
367         Items []CriticalityDiagnosticsIEListItem //256
368 }
369
370 //-----------------------------------------------------------------------------
371 //
372 //-----------------------------------------------------------------------------
373 type CriticalityDiagnostics struct {
374         Present         bool
375         ProcCodePresent bool
376         ProcCode        uint64
377         TrigMsgPresent  bool
378         TrigMsg         uint64
379         ProcCritPresent bool
380         ProcCrit        uint8 //Crit
381         CriticalityDiagnosticsIEList
382 }