RICPLT-2910
[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
31 // E2AP messages
32 // Initiating message
33 const E2AP_RICSubscriptionRequest uint64 = 1
34 const E2AP_RICSubscriptionDeleteRequest uint64 = 2
35
36 // const E2AP_RICServiceUpdate uint64 = 3
37 // const E2AP_RICControlRequest uint64 = 4
38 //
39 // //const E2AP_X2SetupRequest uint64 = 5;
40 // const E2AP_ENDCX2SetupRequest uint64 = 6
41 // const E2AP_ResourceStatusRequest uint64 = 7
42 // const E2AP_ENBConfigurationUpdate uint64 = 8
43 // const E2AP_ENDCConfigurationUpdate uint64 = 9
44 // const E2AP_ResetRequest uint64 = 10
45 const E2AP_RICIndication uint64 = 11
46
47 // const E2AP_RICServiceQuery uint64 = 12
48 // const E2AP_LoadInformation uint64 = 13
49 // const E2AP_GNBStatusIndication uint64 = 14
50 // const E2AP_ResourceStatusUpdate uint64 = 15
51 // const E2AP_ErrorIndication uint64 = 16
52 //
53 // // Successful outcome
54 const E2AP_RICSubscriptionResponse uint64 = 1
55 const E2AP_RICSubscriptionDeleteResponse uint64 = 2
56
57 // const E2AP_RICserviceUpdateAcknowledge uint64 = 3
58 // const E2AP_RICcontrolAcknowledge uint64 = 4
59 //
60 // //const E2AP_X2SetupResponse uint64 = 5;
61 // const E2AP_ENDCX2SetupResponse uint64 = 6
62 // const E2AP_ResourceStatusResponse uint64 = 7
63 // const E2AP_ENBConfigurationUpdateAcknowledge uint64 = 8
64 // const E2AP_ENDCConfigurationUpdateAcknowledge uint64 = 9
65 // const E2AP_ResetResponse uint64 = 10
66 //
67 // // Unsuccessful outcome
68 const E2AP_RICSubscriptionFailure uint64 = 1
69 const E2AP_RICSubscriptionDeleteFailure uint64 = 2
70
71 // const E2AP_RICserviceUpdateFailure uint64 = 3
72 // const E2AP_RICcontrolFailure uint64 = 4
73 //
74 // //const E2AP_X2SetupFailure uint64 = 5;
75 // const E2AP_ENDCX2SetupFailure uint64 = 6
76 // const E2AP_ResourceStatusFailure uint64 = 7
77 // const E2AP_ENBConfigurationUpdateFailure uint64 = 8
78 // const E2AP_ENDCConfigurationUpdateFailure uint64 = 9
79 //
80
81 //-----------------------------------------------------------------------------
82 //
83 //-----------------------------------------------------------------------------
84 const E2AP_IndicationTypeReport uint64 = 0
85 const E2AP_IndicationTypeInsert uint64 = 1
86
87 //-----------------------------------------------------------------------------
88 //
89 //-----------------------------------------------------------------------------
90 const E2AP_ActionTypeReport uint64 = 0
91 const E2AP_ActionTypeInsert uint64 = 1
92 const E2AP_ActionTypePolicy uint64 = 2
93
94 //-----------------------------------------------------------------------------
95 //
96 //-----------------------------------------------------------------------------
97 const E2AP_SubSeqActionTypeContinue uint64 = 0
98 const E2AP_SubSeqActionTypeWait uint64 = 1
99
100 //-----------------------------------------------------------------------------
101 //
102 //-----------------------------------------------------------------------------
103 const E2AP_TimeToWaitZero uint64 = 0
104 const E2AP_TimeToWaitW1ms uint64 = 1
105 const E2AP_TimeToWaitW2ms uint64 = 2
106 const E2AP_TimeToWaitW5ms uint64 = 3
107 const E2AP_TimeToWaitW10ms uint64 = 4
108 const E2AP_TimeToWaitW20ms uint64 = 4
109 const E2AP_TimeToWaitW30ms uint64 = 5
110 const E2AP_TimeToWaitW40ms uint64 = 6
111 const E2AP_TimeToWaitW50ms uint64 = 7
112 const E2AP_TimeToWaitW100ms uint64 = 8
113 const E2AP_TimeToWaitW200ms uint64 = 9
114 const E2AP_TimeToWaitW500ms uint64 = 10
115 const E2AP_TimeToWaitW1s uint64 = 11
116 const E2AP_TimeToWaitW2s uint64 = 12
117 const E2AP_TimeToWaitW5s uint64 = 13
118 const E2AP_TimeToWaitW10s uint64 = 14
119 const E2AP_TimeToWaitW20s uint64 = 15
120 const E2AP_TimeToWaitW60 uint64 = 16
121
122 //-----------------------------------------------------------------------------
123 //
124 //-----------------------------------------------------------------------------
125 const E2AP_InterfaceDirectionIncoming uint32 = 0
126 const E2AP_InterfaceDirectionOutgoing uint32 = 1
127
128 //-----------------------------------------------------------------------------
129 //
130 //-----------------------------------------------------------------------------
131 const E2AP_CriticalityReject uint8 = 0
132 const E2AP_CriticalityIgnore uint8 = 1
133 const E2AP_CriticalityNotify uint8 = 2
134
135 //-----------------------------------------------------------------------------
136 //
137 //-----------------------------------------------------------------------------
138 const E2AP_ENBIDMacroPBits20 uint8 = 20
139 const E2AP_ENBIDHomeBits28 uint8 = 28
140 const E2AP_ENBIDShortMacroits18 uint8 = 18
141 const E2AP_ENBIDlongMacroBits21 uint8 = 21
142
143 //-----------------------------------------------------------------------------
144 //
145 //-----------------------------------------------------------------------------
146 const E2AP_InitiatingMessage uint64 = 1
147 const E2AP_SuccessfulOutcome uint64 = 2
148 const E2AP_UnsuccessfulOutcome uint64 = 3
149
150 //-----------------------------------------------------------------------------
151 //
152 //-----------------------------------------------------------------------------
153 type RequestId struct {
154         Id  uint32
155         Seq uint32
156 }
157
158 func (rid *RequestId) String() string {
159         return strconv.FormatUint((uint64)(rid.Id), 10) + string(":") + strconv.FormatUint((uint64)(rid.Seq), 10)
160 }
161
162 //-----------------------------------------------------------------------------
163 //
164 //-----------------------------------------------------------------------------
165 type FunctionId uint16
166
167 //-----------------------------------------------------------------------------
168 //
169 //-----------------------------------------------------------------------------
170 type NodeId struct {
171         Bits uint8
172         Id   uint32
173 }
174
175 func (nid *NodeId) String() string {
176         return strconv.FormatUint((uint64)(nid.Id), 10)
177 }
178
179 //-----------------------------------------------------------------------------
180 //
181 //-----------------------------------------------------------------------------
182 type GlobalNodeId struct {
183         Present      bool
184         PlmnIdentity conv.PlmnIdentity
185         NodeId       NodeId
186 }
187
188 func (gnid *GlobalNodeId) String() string {
189         return gnid.PlmnIdentity.String() + string(":") + gnid.NodeId.String()
190 }
191
192 //-----------------------------------------------------------------------------
193 //
194 //-----------------------------------------------------------------------------
195 type InterfaceId struct {
196         GlobalEnbId GlobalNodeId
197         GlobalGnbId GlobalNodeId
198 }
199
200 //-----------------------------------------------------------------------------
201 //
202 //-----------------------------------------------------------------------------
203 type EventTriggerDefinition struct {
204         InterfaceId
205         InterfaceDirection uint32
206         ProcedureCode      uint32
207         TypeOfMessage      uint64
208 }
209
210 /*
211 //-----------------------------------------------------------------------------
212 //
213 //-----------------------------------------------------------------------------
214 type CallProcessId struct {
215   CallProcessIDVal uint32
216 }
217 */
218
219 //-----------------------------------------------------------------------------
220 //
221 //-----------------------------------------------------------------------------
222 type ActionDefinition struct {
223         Present bool
224         StyleId uint64
225         ParamId uint32
226         //ParamValue
227 }
228
229 //-----------------------------------------------------------------------------
230 //
231 //-----------------------------------------------------------------------------
232 type SubsequentAction struct {
233         Present    bool
234         Type       uint64
235         TimetoWait uint64
236 }
237
238 //-----------------------------------------------------------------------------
239 //
240 //-----------------------------------------------------------------------------
241 type ActionToBeSetupItem struct {
242         ActionId   uint64
243         ActionType uint64
244         ActionDefinition
245         SubsequentAction
246 }
247
248 //-----------------------------------------------------------------------------
249 //
250 //-----------------------------------------------------------------------------
251 type Cause struct {
252         Content  uint8
253         CauseVal uint8
254 }
255
256 //-----------------------------------------------------------------------------
257 //
258 //-----------------------------------------------------------------------------
259 type ActionAdmittedItem struct {
260         ActionId uint64
261 }
262
263 //-----------------------------------------------------------------------------
264 //
265 //-----------------------------------------------------------------------------
266 type ActionAdmittedList struct {
267         Items []ActionAdmittedItem //16
268 }
269
270 //-----------------------------------------------------------------------------
271 //
272 //-----------------------------------------------------------------------------
273 type ActionNotAdmittedItem struct {
274         ActionId uint64
275         Cause    Cause
276 }
277
278 //-----------------------------------------------------------------------------
279 //
280 //-----------------------------------------------------------------------------
281 type ActionNotAdmittedList struct {
282         Items []ActionNotAdmittedItem //16
283 }
284
285 //-----------------------------------------------------------------------------
286 //
287 //-----------------------------------------------------------------------------
288 type CriticalityDiagnosticsIEListItem struct {
289         IeCriticality uint8 //Crit
290         IeID          uint32
291         TypeOfError   uint8
292 }
293
294 //-----------------------------------------------------------------------------
295 //
296 //-----------------------------------------------------------------------------
297 type CriticalityDiagnosticsIEList struct {
298         Items []CriticalityDiagnosticsIEListItem //256
299 }
300
301 //-----------------------------------------------------------------------------
302 //
303 //-----------------------------------------------------------------------------
304 type CriticalityDiagnostics struct {
305         Present         bool
306         ProcCodePresent bool
307         ProcCode        uint64
308         TrigMsgPresent  bool
309         TrigMsg         uint64
310         ProcCritPresent bool
311         ProcCrit        uint8 //Crit
312         CriticalityDiagnosticsIEList
313 }