2 ==================================================================================
3 Copyright (c) 2019 AT&T Intellectual Property.
4 Copyright (c) 2019 Nokia
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
10 http://www.apache.org/licenses/LICENSE-2.0
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 ==================================================================================
22 // #cgo LDFLAGS: -le2ap_wrapper -le2ap -lgnbx2 -lgnbnrt -lstdc++
23 // #include <stdlib.h>
24 // #include <c_types.h>
25 // #include <E2AP_if.h>
26 // #include <memtrack.h>
27 // #include <strings.h>
29 // void initSubsRequest(RICSubscriptionRequest_t *data){
30 // bzero(data,sizeof(RICSubscriptionRequest_t));
32 // void initSubsResponse(RICSubscriptionResponse_t *data){
33 // bzero(data,sizeof(RICSubscriptionResponse_t));
35 // void initSubsFailure(RICSubscriptionFailure_t *data){
36 // bzero(data,sizeof(RICSubscriptionFailure_t));
38 // void initSubsDeleteRequest(RICSubscriptionDeleteRequest_t *data){
39 // bzero(data,sizeof(RICSubscriptionDeleteRequest_t));
41 // void initSubsDeleteResponse(RICSubscriptionDeleteResponse_t *data){
42 // bzero(data,sizeof(RICSubscriptionDeleteResponse_t));
44 // void initSubsDeleteFailure(RICSubscriptionDeleteFailure_t *data){
45 // bzero(data,sizeof(RICSubscriptionDeleteFailure_t));
53 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/conv"
54 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
59 const cLogBufferMaxSize = 40960
60 const cMsgBufferMaxSize = 40960
61 const cMsgBufferExtra = 512
63 //-----------------------------------------------------------------------------
65 //-----------------------------------------------------------------------------
66 func cMessageInfoToMessageInfo(minfo *C.E2MessageInfo_t) *e2ap.MessageInfo {
68 msgInfo := &e2ap.MessageInfo{}
70 switch minfo.messageType {
71 case C.cE2InitiatingMessage:
72 msgInfo.MsgType = e2ap.E2AP_InitiatingMessage
73 switch minfo.messageId {
74 case C.cRICSubscriptionRequest:
75 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionRequest
77 case C.cRICSubscriptionDeleteRequest:
78 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionDeleteRequest
81 case C.cE2SuccessfulOutcome:
82 msgInfo.MsgType = e2ap.E2AP_SuccessfulOutcome
83 switch minfo.messageId {
84 case C.cRICSubscriptionResponse:
85 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionResponse
87 case C.cRICsubscriptionDeleteResponse:
88 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionDeleteResponse
91 case C.cE2UnsuccessfulOutcome:
92 msgInfo.MsgType = e2ap.E2AP_UnsuccessfulOutcome
93 switch minfo.messageId {
94 case C.cRICSubscriptionFailure:
95 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionFailure
97 case C.cRICsubscriptionDeleteFailure:
98 msgInfo.MsgId = e2ap.E2AP_RICSubscriptionDeleteFailure
105 //-----------------------------------------------------------------------------
107 //-----------------------------------------------------------------------------
108 type e2apEntryRequestID struct {
109 entry *C.RICRequestID_t
112 func (e2Item *e2apEntryRequestID) set(id *e2ap.RequestId) error {
113 e2Item.entry.ricRequestorID = (C.uint32_t)(id.Id)
114 e2Item.entry.ricInstanceID = (C.uint32_t)(id.InstanceId)
118 func (e2Item *e2apEntryRequestID) get(id *e2ap.RequestId) error {
119 id.Id = (uint32)(e2Item.entry.ricRequestorID)
120 id.InstanceId = (uint32)(e2Item.entry.ricInstanceID)
124 //-----------------------------------------------------------------------------
126 //-----------------------------------------------------------------------------
127 type e2apEntryActionToBeSetupItem struct {
128 entry *C.RICActionToBeSetupItem_t
131 func (e2Item *e2apEntryActionToBeSetupItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionToBeSetupItem) error {
133 e2Item.entry.ricActionID = (C.ulong)(id.ActionId)
134 e2Item.entry.ricActionType = (C.uint64_t)(id.ActionType)
135 if id.RicActionDefinitionPresent {
136 e2Item.entry.ricActionDefinitionPresent = true
137 if err := (&e2apEntryActionDefinitionChoice{entry: &e2Item.entry.ricActionDefinitionChoice}).set(dynMemHead, &id.ActionDefinitionChoice); err != nil {
141 if id.SubsequentAction.Present {
142 e2Item.entry.ricSubsequentActionPresent = true
143 e2Item.entry.ricSubsequentAction.ricSubsequentActionType = (C.uint64_t)(id.SubsequentAction.Type)
144 e2Item.entry.ricSubsequentAction.ricTimeToWait = (C.uint64_t)(id.SubsequentAction.TimetoWait)
149 func (e2Item *e2apEntryActionToBeSetupItem) get(id *e2ap.ActionToBeSetupItem) error {
151 id.ActionId = (uint64)(e2Item.entry.ricActionID)
152 id.ActionType = (uint64)(e2Item.entry.ricActionType)
153 if e2Item.entry.ricActionDefinitionPresent {
154 id.RicActionDefinitionPresent = true
155 if err := (&e2apEntryActionDefinitionChoice{entry: &e2Item.entry.ricActionDefinitionChoice}).get(&id.ActionDefinitionChoice); err != nil {
159 if e2Item.entry.ricSubsequentActionPresent {
160 id.SubsequentAction.Present = true
161 id.SubsequentAction.Type = (uint64)(e2Item.entry.ricSubsequentAction.ricSubsequentActionType)
162 id.SubsequentAction.TimetoWait = (uint64)(e2Item.entry.ricSubsequentAction.ricTimeToWait)
167 //-----------------------------------------------------------------------------
169 //-----------------------------------------------------------------------------
170 type e2apEntryActionDefinitionChoice struct {
171 entry *C.RICActionDefinitionChoice_t
174 func (e2Item *e2apEntryActionDefinitionChoice) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionDefinitionChoice) error {
176 if id.ActionDefinitionX2Format1Present {
177 e2Item.entry.actionDefinitionX2Format1Present = true
178 errorNro := C.allocActionDefinitionX2Format1(dynMemHead, &e2Item.entry.actionDefinitionX2Format1)
179 if errorNro != C.e2err_OK {
180 return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro)))
182 if err := (&e2apEntryE2SMgNBX2actionDefinition{entry: e2Item.entry.actionDefinitionX2Format1}).set(dynMemHead, &id.ActionDefinitionX2Format1); err != nil {
186 } else if id.ActionDefinitionX2Format2Present {
187 e2Item.entry.actionDefinitionX2Format2Present = true
188 errorNro := C.allocActionDefinitionX2Format2(dynMemHead, &e2Item.entry.actionDefinitionX2Format2)
189 if errorNro != C.e2err_OK {
190 return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro)))
192 if err := (&e2apEntryActionDefinitionFormat2{entry: e2Item.entry.actionDefinitionX2Format2}).set(dynMemHead, &id.ActionDefinitionX2Format2); err != nil {
195 } else if id.ActionDefinitionNRTFormat1Present {
196 e2Item.entry.actionDefinitionNRTFormat1Present = true
197 errorNro := C.allocActionDefinitionNRTFormat1(dynMemHead, &e2Item.entry.actionDefinitionNRTFormat1)
198 if errorNro != C.e2err_OK {
199 return fmt.Errorf("e2err(%s)", C.GoString(C.getE2ErrorString(errorNro)))
201 if err := (&e2apEntryE2SMgNBNRTactionDefinitionFormat1{entry: e2Item.entry.actionDefinitionNRTFormat1}).set(dynMemHead, &id.ActionDefinitionNRTFormat1); err != nil {
205 return fmt.Errorf("Set() Missing mandatory ActionDefinition element")
210 func (e2Item *e2apEntryActionDefinitionChoice) get(id *e2ap.ActionDefinitionChoice) error {
211 if e2Item.entry.actionDefinitionX2Format1Present {
212 id.ActionDefinitionX2Format1Present = true
213 if err := (&e2apEntryE2SMgNBX2actionDefinition{entry: e2Item.entry.actionDefinitionX2Format1}).get(&id.ActionDefinitionX2Format1); err != nil {
216 } else if e2Item.entry.actionDefinitionX2Format2Present {
217 id.ActionDefinitionX2Format2Present = true
218 if err := (&e2apEntryActionDefinitionFormat2{entry: e2Item.entry.actionDefinitionX2Format2}).get(&id.ActionDefinitionX2Format2); err != nil {
221 } else if e2Item.entry.actionDefinitionNRTFormat1Present {
222 id.ActionDefinitionNRTFormat1Present = true
223 if err := (&e2apEntryE2SMgNBNRTactionDefinitionFormat1{entry: e2Item.entry.actionDefinitionNRTFormat1}).get(&id.ActionDefinitionNRTFormat1); err != nil {
227 return fmt.Errorf("Get() Missing mandatory ActionDefinition element")
232 //-----------------------------------------------------------------------------
234 //-----------------------------------------------------------------------------
235 type e2apEntryE2SMgNBX2actionDefinition struct {
236 entry *C.E2SMgNBX2actionDefinition_t
239 func (e2Item *e2apEntryE2SMgNBX2actionDefinition) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.E2SMgNBX2actionDefinition) error {
241 e2Item.entry.styleID = (C.uint64_t)(id.StyleID)
243 e2Item.entry.actionParameterCount = 0
244 for i := 0; i < len(id.ActionParameterItems); i++ {
245 if err := (&e2apEntryActionParameterItem{entry: &e2Item.entry.actionParameterItem[i]}).set(dynMemHead, &id.ActionParameterItems[i]); err != nil {
248 e2Item.entry.actionParameterCount++
253 func (e2Item *e2apEntryE2SMgNBX2actionDefinition) get(id *e2ap.E2SMgNBX2actionDefinition) error {
255 id.StyleID = (uint64)(e2Item.entry.styleID)
258 length := (int)(e2Item.entry.actionParameterCount)
259 id.ActionParameterItems = make([]e2ap.ActionParameterItem, length)
260 for i := 0; i < length; i++ {
261 if err := (&e2apEntryActionParameterItem{entry: &e2Item.entry.actionParameterItem[i]}).get(&id.ActionParameterItems[i]); err != nil {
268 //-----------------------------------------------------------------------------
270 //-----------------------------------------------------------------------------
271 type e2apEntryE2SMgNBNRTactionDefinitionFormat1 struct {
272 entry *C.E2SMgNBNRTActionDefinitionFormat1_t
275 func (e2Item *e2apEntryE2SMgNBNRTactionDefinitionFormat1) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.E2SMgNBNRTActionDefinitionFormat1) error {
277 e2Item.entry.ranParameterCount = 0
278 for i := 0; i < len(id.RanParameterList); i++ {
279 if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterList[i]}).set(dynMemHead, &id.RanParameterList[i]); err != nil {
282 e2Item.entry.ranParameterCount++
287 func (e2Item *e2apEntryE2SMgNBNRTactionDefinitionFormat1) get(id *e2ap.E2SMgNBNRTActionDefinitionFormat1) error {
289 length := (int)(e2Item.entry.ranParameterCount)
290 id.RanParameterList = make([]e2ap.RANParameterItem, length)
291 for i := 0; i < length; i++ {
292 if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterList[i]}).get(&id.RanParameterList[i]); err != nil {
299 //-----------------------------------------------------------------------------
301 //-----------------------------------------------------------------------------
302 type e2apEntryActionParameterItem struct {
303 entry *C.ActionParameterItem_t
306 func (e2Item *e2apEntryActionParameterItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionParameterItem) error {
308 e2Item.entry.parameterID = (C.uint32_t)(id.ParameterID)
309 if err := (&e2apEntryActionParameterValue{entry: &e2Item.entry.actionParameterValue}).set(dynMemHead, &id.ActionParameterValue); err != nil {
315 func (e2Item *e2apEntryActionParameterItem) get(id *e2ap.ActionParameterItem) error {
317 id.ParameterID = (uint32)(e2Item.entry.parameterID)
318 if err := (&e2apEntryActionParameterValue{entry: &e2Item.entry.actionParameterValue}).get(&id.ActionParameterValue); err != nil {
324 //-----------------------------------------------------------------------------
326 //-----------------------------------------------------------------------------
327 type e2apEntryActionParameterValue struct {
328 entry *C.ActionParameterValue_t
331 func (e2Item *e2apEntryActionParameterValue) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionParameterValue) error {
333 if id.ValueIntPresent {
334 e2Item.entry.valueInt = (C.int64_t)(id.ValueInt)
335 e2Item.entry.valueIntPresent = true
336 } else if id.ValueEnumPresent {
337 e2Item.entry.valueEnum = (C.int64_t)(id.ValueEnum)
338 e2Item.entry.valueEnumPresent = true
339 } else if id.ValueBoolPresent {
340 e2Item.entry.valueBool = (C.bool)(id.ValueBool)
341 e2Item.entry.valueBoolPresent = true
342 } else if id.ValueBitSPresent {
343 if C.addBitString(dynMemHead, &e2Item.entry.valueBitS, (C.uint64_t)(id.ValueBitS.Length), unsafe.Pointer(&id.ValueBitS.Data[0]), (C.uint8_t)(id.ValueBitS.UnusedBits)) == false {
344 return fmt.Errorf("Alloc valueBitS fail")
346 e2Item.entry.valueBitSPresent = true
347 } else if id.ValueOctSPresent {
348 if C.addOctetString(dynMemHead, &e2Item.entry.valueOctS, (C.uint64_t)(id.ValueOctS.Length), unsafe.Pointer(&id.ValueOctS.Data[0])) == false {
349 return fmt.Errorf("Alloc valueOctS fail")
351 e2Item.entry.valueOctSPresent = true
352 } else if id.ValuePrtSPresent {
353 if C.addOctetString(dynMemHead, &e2Item.entry.valuePrtS, (C.uint64_t)(id.ValuePrtS.Length), unsafe.Pointer(&id.ValuePrtS.Data[0])) == false {
354 return fmt.Errorf("Alloc valuePrtS fail")
356 e2Item.entry.valuePrtSPresent = true
361 func (e2Item *e2apEntryActionParameterValue) get(id *e2ap.ActionParameterValue) error {
363 if e2Item.entry.valueIntPresent {
364 id.ValueInt = (int64)(e2Item.entry.valueInt)
365 id.ValueIntPresent = true
366 } else if e2Item.entry.valueEnumPresent {
367 id.ValueEnum = (int64)(e2Item.entry.valueEnum)
368 id.ValueEnumPresent = true
369 } else if e2Item.entry.valueBoolPresent {
370 id.ValueBool = (bool)(e2Item.entry.valueBool)
371 id.ValueBoolPresent = true
372 } else if e2Item.entry.valueBitSPresent {
373 id.ValueBitSPresent = true
374 id.ValueBitS.Length = (uint64)(e2Item.entry.valueBitS.byteLength)
375 id.ValueBitS.UnusedBits = (uint8)(e2Item.entry.valueBitS.unusedBits)
376 id.ValueBitS.Data = make([]uint8, id.ValueBitS.Length)
377 C.memcpy(unsafe.Pointer(&id.ValueBitS.Data[0]), unsafe.Pointer(e2Item.entry.valueBitS.data), C.size_t(e2Item.entry.valueBitS.byteLength))
378 } else if e2Item.entry.valueOctSPresent {
379 id.ValueOctSPresent = true
380 id.ValueOctS.Length = (uint64)(e2Item.entry.valueOctS.length)
381 id.ValueOctS.Data = make([]uint8, id.ValueOctS.Length)
382 C.memcpy(unsafe.Pointer(&id.ValueOctS.Data[0]), unsafe.Pointer(e2Item.entry.valueOctS.data), C.size_t(e2Item.entry.valueOctS.length))
383 } else if e2Item.entry.valuePrtSPresent {
384 id.ValuePrtSPresent = true
385 id.ValuePrtS.Length = (uint64)(e2Item.entry.valuePrtS.length)
386 id.ValuePrtS.Data = make([]uint8, id.ValuePrtS.Length)
387 C.memcpy(unsafe.Pointer(&id.ValuePrtS.Data[0]), unsafe.Pointer(e2Item.entry.valuePrtS.data), C.size_t(e2Item.entry.valuePrtS.length))
392 //-----------------------------------------------------------------------------
394 //-----------------------------------------------------------------------------
395 type e2apEntryActionDefinitionFormat2 struct {
396 entry *C.E2SMgNBX2ActionDefinitionFormat2_t
399 func (e2Item *e2apEntryActionDefinitionFormat2) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.ActionDefinitionFormat2) error {
401 e2Item.entry.ranUeGroupCount = 0
402 for i := 0; i < len(id.RanUEgroupItems); i++ {
403 if err := (&e2apEntryRANueGroupItem{entry: &e2Item.entry.ranUeGroupItem[i]}).set(dynMemHead, &id.RanUEgroupItems[i]); err != nil {
406 e2Item.entry.ranUeGroupCount++
411 func (e2Item *e2apEntryActionDefinitionFormat2) get(id *e2ap.ActionDefinitionFormat2) error {
413 length := (int)(e2Item.entry.ranUeGroupCount)
414 id.RanUEgroupItems = make([]e2ap.RANueGroupItem, length)
415 for i := 0; i < length; i++ {
416 if err := (&e2apEntryRANueGroupItem{entry: &e2Item.entry.ranUeGroupItem[i]}).get(&id.RanUEgroupItems[i]); err != nil {
423 //-----------------------------------------------------------------------------
425 //-----------------------------------------------------------------------------
426 type e2apEntryRANueGroupItem struct {
427 entry *C.RANueGroupItem_t
430 func (e2Item *e2apEntryRANueGroupItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupItem) error {
431 e2Item.entry.ranUEgroupID = (C.int64_t)(id.RanUEgroupID)
432 if err := (&e2apEntryRANueGroupDefinition{entry: &e2Item.entry.ranUEgroupDefinition}).set(dynMemHead, &id.RanUEgroupDefinition); err != nil {
435 if err := (&e2apEntryRANimperativePolicy{entry: &e2Item.entry.ranPolicy}).set(dynMemHead, &id.RanPolicy); err != nil {
441 func (e2Item *e2apEntryRANueGroupItem) get(id *e2ap.RANueGroupItem) error {
442 id.RanUEgroupID = (int64)(e2Item.entry.ranUEgroupID)
443 if err := (&e2apEntryRANueGroupDefinition{entry: &e2Item.entry.ranUEgroupDefinition}).get(&id.RanUEgroupDefinition); err != nil {
446 if err := (&e2apEntryRANimperativePolicy{entry: &e2Item.entry.ranPolicy}).get(&id.RanPolicy); err != nil {
452 //-----------------------------------------------------------------------------
454 //-----------------------------------------------------------------------------
455 type e2apEntryRANueGroupDefinition struct {
456 entry *C.RANueGroupDefinition_t
459 func (e2Item *e2apEntryRANueGroupDefinition) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupDefinition) error {
461 e2Item.entry.ranUeGroupDefCount = 0
462 for i := 0; i < len(id.RanUEGroupDefItems); i++ {
463 if err := (&e2apEntryRANueGroupDefItem{entry: &e2Item.entry.ranUeGroupDefItem[i]}).set(dynMemHead, &id.RanUEGroupDefItems[i]); err != nil {
466 e2Item.entry.ranUeGroupDefCount++
471 func (e2Item *e2apEntryRANueGroupDefinition) get(id *e2ap.RANueGroupDefinition) error {
473 length := (int)(e2Item.entry.ranUeGroupDefCount)
474 id.RanUEGroupDefItems = make([]e2ap.RANueGroupDefItem, length)
475 for i := 0; i < length; i++ {
476 if err := (&e2apEntryRANueGroupDefItem{entry: &e2Item.entry.ranUeGroupDefItem[i]}).get(&id.RanUEGroupDefItems[i]); err != nil {
483 //-----------------------------------------------------------------------------
485 //-----------------------------------------------------------------------------
486 type e2apEntryRANimperativePolicy struct {
487 entry *C.RANimperativePolicy_t
490 func (e2Item *e2apEntryRANimperativePolicy) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANimperativePolicy) error {
492 e2Item.entry.ranParameterCount = 0
493 for i := 0; i < len(id.RanParameterItems); i++ {
494 if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterItem[i]}).set(dynMemHead, &id.RanParameterItems[i]); err != nil {
497 e2Item.entry.ranParameterCount++
502 func (e2Item *e2apEntryRANimperativePolicy) get(id *e2ap.RANimperativePolicy) error {
504 length := (int)(e2Item.entry.ranParameterCount)
505 id.RanParameterItems = make([]e2ap.RANParameterItem, length)
506 for i := 0; i < length; i++ {
507 if err := (&e2apEntryRANParameterItem{entry: &e2Item.entry.ranParameterItem[i]}).get(&id.RanParameterItems[i]); err != nil {
514 //-----------------------------------------------------------------------------
516 //-----------------------------------------------------------------------------
517 type e2apEntryRANueGroupDefItem struct {
518 entry *C.RANueGroupDefItem_t
521 func (e2Item *e2apEntryRANueGroupDefItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANueGroupDefItem) error {
523 e2Item.entry.ranParameterID = (C.uint32_t)(id.RanParameterID)
524 e2Item.entry.ranParameterTest = (C.uint8_t)(id.RanParameterTest)
525 if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).set(dynMemHead, &id.RanParameterValue); err != nil {
531 func (e2Item *e2apEntryRANueGroupDefItem) get(id *e2ap.RANueGroupDefItem) error {
533 id.RanParameterID = (uint32)(e2Item.entry.ranParameterID)
534 id.RanParameterTest = (uint8)(e2Item.entry.ranParameterTest)
535 if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).get(&id.RanParameterValue); err != nil {
541 //-----------------------------------------------------------------------------
543 //-----------------------------------------------------------------------------
544 type e2apEntryRANParameterItem struct {
545 entry *C.RANParameterItem_t
548 func (e2Item *e2apEntryRANParameterItem) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANParameterItem) error {
550 e2Item.entry.ranParameterID = (C.uint32_t)(id.RanParameterID)
551 if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).set(dynMemHead, &id.RanParameterValue); err != nil {
557 func (e2Item *e2apEntryRANParameterItem) get(id *e2ap.RANParameterItem) error {
559 id.RanParameterID = (uint8)(e2Item.entry.ranParameterID)
560 if err := (&e2apEntryRANParameterValue{entry: &e2Item.entry.ranParameterValue}).get(&id.RanParameterValue); err != nil {
566 //-----------------------------------------------------------------------------
568 //-----------------------------------------------------------------------------
569 type e2apEntryRANParameterValue struct {
570 entry *C.RANParameterValue_t
573 func (e2Item *e2apEntryRANParameterValue) set(dynMemHead *C.mem_track_hdr_t, id *e2ap.RANParameterValue) error {
575 if id.ValueIntPresent {
576 e2Item.entry.valueInt = (C.int64_t)(id.ValueInt)
577 e2Item.entry.valueIntPresent = true
578 } else if id.ValueEnumPresent {
579 e2Item.entry.valueEnum = (C.int64_t)(id.ValueEnum)
580 e2Item.entry.valueEnumPresent = true
581 } else if id.ValueBoolPresent {
582 e2Item.entry.valueBool = (C.bool)(id.ValueBool)
583 e2Item.entry.valueBoolPresent = true
584 } else if id.ValueBitSPresent {
585 if C.addBitString(dynMemHead, &e2Item.entry.valueBitS, (C.uint64_t)(id.ValueBitS.Length), unsafe.Pointer(&id.ValueBitS.Data[0]), (C.uint8_t)(id.ValueBitS.UnusedBits)) == false {
586 return fmt.Errorf("Alloc valueBitS fail")
588 e2Item.entry.valueBitSPresent = true
589 } else if id.ValueOctSPresent {
590 if C.addOctetString(dynMemHead, &e2Item.entry.valueOctS, (C.uint64_t)(id.ValueOctS.Length), unsafe.Pointer(&id.ValueOctS.Data[0])) == false {
591 return fmt.Errorf("Alloc valueOctS fail")
593 e2Item.entry.valueOctSPresent = true
594 } else if id.ValuePrtSPresent {
595 if C.addOctetString(dynMemHead, &e2Item.entry.valuePrtS, (C.uint64_t)(id.ValuePrtS.Length), unsafe.Pointer(&id.ValuePrtS.Data[0])) == false {
596 return fmt.Errorf("Alloc valuePrtS fail")
598 e2Item.entry.valuePrtSPresent = true
603 func (e2Item *e2apEntryRANParameterValue) get(id *e2ap.RANParameterValue) error {
605 fmt.Printf("RANParameterValue e2Item.entry.valuePrtSPresent = %v\n", e2Item.entry.valuePrtSPresent)
606 if e2Item.entry.valueIntPresent {
607 id.ValueInt = (int64)(e2Item.entry.valueInt)
608 id.ValueIntPresent = true
609 } else if e2Item.entry.valueEnumPresent {
610 id.ValueEnum = (int64)(e2Item.entry.valueEnum)
611 id.ValueEnumPresent = true
612 } else if e2Item.entry.valueBoolPresent {
613 id.ValueBool = (bool)(e2Item.entry.valueBool)
614 id.ValueBoolPresent = true
615 } else if e2Item.entry.valueBitSPresent {
616 id.ValueBitSPresent = true
617 id.ValueBitS.Length = (uint64)(e2Item.entry.valueBitS.byteLength)
618 id.ValueBitS.UnusedBits = (uint8)(e2Item.entry.valueBitS.unusedBits)
619 id.ValueBitS.Data = make([]uint8, id.ValueBitS.Length)
620 C.memcpy(unsafe.Pointer(&id.ValueBitS.Data[0]), unsafe.Pointer(e2Item.entry.valueBitS.data), C.size_t(e2Item.entry.valueBitS.byteLength))
621 } else if e2Item.entry.valueOctSPresent {
622 id.ValueOctSPresent = true
623 id.ValueOctS.Length = (uint64)(e2Item.entry.valueOctS.length)
624 id.ValueOctS.Data = make([]uint8, id.ValueOctS.Length)
625 C.memcpy(unsafe.Pointer(&id.ValueOctS.Data[0]), unsafe.Pointer(e2Item.entry.valueOctS.data), C.size_t(e2Item.entry.valueOctS.length))
626 } else if e2Item.entry.valuePrtSPresent {
627 id.ValuePrtSPresent = true
628 id.ValuePrtS.Length = (uint64)(e2Item.entry.valuePrtS.length)
629 id.ValuePrtS.Data = make([]uint8, id.ValuePrtS.Length)
630 C.memcpy(unsafe.Pointer(&id.ValuePrtS.Data[0]), unsafe.Pointer(e2Item.entry.valuePrtS.data), C.size_t(e2Item.entry.valuePrtS.length))
635 //-----------------------------------------------------------------------------
637 //-----------------------------------------------------------------------------
638 type e2apEntryPlmnIdentity struct {
639 entry *C.PLMNIdentity_t
642 func (plmnId *e2apEntryPlmnIdentity) set(id conv.PlmnIdentityIf) error {
644 buf := new(bytes.Buffer)
647 plmnId.entry.contentLength = (C.uint8_t)(len(data))
648 for i := 0; i < len(data); i++ {
649 plmnId.entry.pLMNIdentityVal[i] = (C.uint8_t)(data[i])
654 func (plmnId *e2apEntryPlmnIdentity) get(id conv.PlmnIdentityIf) error {
655 conlen := (int)(plmnId.entry.contentLength)
656 bcdBuf := make([]uint8, conlen)
657 for i := 0; i < conlen; i++ {
658 bcdBuf[i] = (uint8)(plmnId.entry.pLMNIdentityVal[i])
660 reader := bytes.NewReader(bcdBuf)
661 id.DecodeFrom(reader)
665 //-----------------------------------------------------------------------------
667 //-----------------------------------------------------------------------------
668 type e2apEntryGlobalEnbId struct {
669 entry *C.GlobalNodeID_t
672 func (enbId *e2apEntryGlobalEnbId) checkbits(bits uint8) error {
674 case e2ap.E2AP_ENBIDMacroPBits20:
676 case e2ap.E2AP_ENBIDHomeBits28:
678 case e2ap.E2AP_ENBIDShortMacroits18:
680 case e2ap.E2AP_ENBIDlongMacroBits21:
683 return fmt.Errorf("GlobalEnbId: given bits %d not match allowed: 20,28,18,21", bits)
686 func (enbId *e2apEntryGlobalEnbId) set(id *e2ap.GlobalNodeId) error {
687 if err := enbId.checkbits(id.NodeId.Bits); err != nil {
690 enbId.entry.nodeID.bits = (C.uchar)(id.NodeId.Bits)
691 enbId.entry.nodeID.nodeID = (C.uint32_t)(id.NodeId.Id)
692 return (&e2apEntryPlmnIdentity{entry: &enbId.entry.pLMNIdentity}).set(&id.PlmnIdentity)
695 func (enbId *e2apEntryGlobalEnbId) get(id *e2ap.GlobalNodeId) error {
696 if err := enbId.checkbits((uint8)(enbId.entry.nodeID.bits)); err != nil {
699 id.NodeId.Bits = (uint8)(enbId.entry.nodeID.bits)
700 id.NodeId.Id = (uint32)(enbId.entry.nodeID.nodeID)
701 return (&e2apEntryPlmnIdentity{entry: &enbId.entry.pLMNIdentity}).get(&id.PlmnIdentity)
704 //-----------------------------------------------------------------------------
706 //-----------------------------------------------------------------------------
707 type e2apEntryGlobalGnbId struct {
708 entry *C.GlobalNodeID_t
711 func (gnbId *e2apEntryGlobalGnbId) checkbits(bits uint8) error {
712 if bits < 22 || bits > 32 {
713 return fmt.Errorf("GlobalGnbId: given bits %d not match allowed: 22-32", bits)
718 func (gnbId *e2apEntryGlobalGnbId) set(id *e2ap.GlobalNodeId) error {
719 if err := gnbId.checkbits(id.NodeId.Bits); err != nil {
722 gnbId.entry.nodeID.bits = (C.uchar)(id.NodeId.Bits)
723 gnbId.entry.nodeID.nodeID = (C.uint32_t)(id.NodeId.Id)
724 return (&e2apEntryPlmnIdentity{entry: &gnbId.entry.pLMNIdentity}).set(&id.PlmnIdentity)
727 func (gnbId *e2apEntryGlobalGnbId) get(id *e2ap.GlobalNodeId) error {
728 if err := gnbId.checkbits((uint8)(gnbId.entry.nodeID.bits)); err != nil {
731 id.NodeId.Bits = (uint8)(gnbId.entry.nodeID.bits)
732 id.NodeId.Id = (uint32)(gnbId.entry.nodeID.nodeID)
733 return (&e2apEntryPlmnIdentity{entry: &gnbId.entry.pLMNIdentity}).get(&id.PlmnIdentity)
736 //-----------------------------------------------------------------------------
738 //-----------------------------------------------------------------------------
739 type e2apEntryInterfaceId struct {
740 entry *C.InterfaceID_t
743 func (indId *e2apEntryInterfaceId) set(id *e2ap.InterfaceId) error {
744 if id.GlobalEnbId.Present {
745 indId.entry.globalENBIDPresent = true
746 if err := (&e2apEntryGlobalEnbId{entry: &indId.entry.globalENBID}).set(&id.GlobalEnbId); err != nil {
751 if id.GlobalGnbId.Present {
752 indId.entry.globalGNBIDPresent = true
753 if err := (&e2apEntryGlobalGnbId{entry: &indId.entry.globalGNBID}).set(&id.GlobalGnbId); err != nil {
760 func (indId *e2apEntryInterfaceId) get(id *e2ap.InterfaceId) error {
761 if indId.entry.globalENBIDPresent == true {
762 id.GlobalEnbId.Present = true
763 if err := (&e2apEntryGlobalEnbId{entry: &indId.entry.globalENBID}).get(&id.GlobalEnbId); err != nil {
768 if indId.entry.globalGNBIDPresent == true {
769 id.GlobalGnbId.Present = true
770 if err := (&e2apEntryGlobalGnbId{entry: &indId.entry.globalGNBID}).get(&id.GlobalGnbId); err != nil {
777 //-----------------------------------------------------------------------------
779 //-----------------------------------------------------------------------------
780 type e2apEntryEventTrigger struct {
781 entry *C.RICEventTriggerDefinition_t
784 func (evtTrig *e2apEntryEventTrigger) set(id *e2ap.EventTriggerDefinition) error {
785 if id.NBX2EventTriggerDefinitionPresent {
786 evtTrig.entry.E2SMgNBX2EventTriggerDefinitionPresent = true
787 return (&e2apEntryX2EventTrigger{entry: &evtTrig.entry.e2SMgNBX2eventTriggerDefinition}).set(&id.X2EventTriggerDefinition)
789 } else if id.NBNRTEventTriggerDefinitionPresent {
790 evtTrig.entry.E2SMgNBNRTEventTriggerDefinitionPresent = true
791 return (&e2apEntryNRTEventTrigger{entry: &evtTrig.entry.e2SMgNBNRTEventTriggerDefinition}).set(&id.NBNRTEventTriggerDefinition)
793 return fmt.Errorf("Set() empty EventTriggerDefinition")
796 func (evtTrig *e2apEntryEventTrigger) get(id *e2ap.EventTriggerDefinition) error {
797 if evtTrig.entry.E2SMgNBX2EventTriggerDefinitionPresent {
798 id.NBX2EventTriggerDefinitionPresent = true
799 return (&e2apEntryX2EventTrigger{entry: &evtTrig.entry.e2SMgNBX2eventTriggerDefinition}).get(&id.X2EventTriggerDefinition)
801 } else if evtTrig.entry.E2SMgNBNRTEventTriggerDefinitionPresent {
802 id.NBNRTEventTriggerDefinitionPresent = true
803 return (&e2apEntryNRTEventTrigger{entry: &evtTrig.entry.e2SMgNBNRTEventTriggerDefinition}).get(&id.NBNRTEventTriggerDefinition)
805 return fmt.Errorf("Get() empty EventTriggerDefinition")
808 //-----------------------------------------------------------------------------
810 //-----------------------------------------------------------------------------
811 type e2apEntryX2EventTrigger struct {
812 entry *C.E2SMgNBX2eventTriggerDefinition_t
815 func (evtTrig *e2apEntryX2EventTrigger) set(id *e2ap.X2EventTriggerDefinition) error {
816 evtTrig.entry.interfaceDirection = (C.uint8_t)(id.InterfaceDirection)
817 evtTrig.entry.interfaceMessageType.procedureCode = (C.uint8_t)(id.ProcedureCode)
818 evtTrig.entry.interfaceMessageType.typeOfMessage = (C.uint8_t)(id.TypeOfMessage)
819 return (&e2apEntryInterfaceId{entry: &evtTrig.entry.interfaceID}).set(&id.InterfaceId)
822 func (evtTrig *e2apEntryX2EventTrigger) get(id *e2ap.X2EventTriggerDefinition) error {
823 id.InterfaceDirection = (uint32)(evtTrig.entry.interfaceDirection)
824 id.ProcedureCode = (uint32)(evtTrig.entry.interfaceMessageType.procedureCode)
825 id.TypeOfMessage = (uint64)(evtTrig.entry.interfaceMessageType.typeOfMessage)
826 return (&e2apEntryInterfaceId{entry: &evtTrig.entry.interfaceID}).get(&id.InterfaceId)
829 //-----------------------------------------------------------------------------
831 //-----------------------------------------------------------------------------
832 type e2apEntryNRTEventTrigger struct {
833 entry *C.E2SMgNBNRTEventTriggerDefinition_t
836 func (evtTrig *e2apEntryNRTEventTrigger) set(id *e2ap.NBNRTEventTriggerDefinition) error {
837 evtTrig.entry.eventDefinitionFormat1.triggerNature = (C.uint8_t)(id.TriggerNature)
841 func (evtTrig *e2apEntryNRTEventTrigger) get(id *e2ap.NBNRTEventTriggerDefinition) error {
842 id.TriggerNature = (uint8)(evtTrig.entry.eventDefinitionFormat1.triggerNature)
846 //-----------------------------------------------------------------------------
848 //-----------------------------------------------------------------------------
849 type e2apEntryAdmittedList struct {
850 entry *C.RICActionAdmittedList_t
853 func (item *e2apEntryAdmittedList) set(data *e2ap.ActionAdmittedList) error {
855 if len(data.Items) > 16 {
856 return fmt.Errorf("ActionAdmittedList: too long %d while allowed %d", len(data.Items), 16)
859 item.entry.contentLength = 0
860 for i := 0; i < len(data.Items); i++ {
861 item.entry.ricActionID[item.entry.contentLength] = (C.ulong)(data.Items[i].ActionId)
862 item.entry.contentLength++
867 func (item *e2apEntryAdmittedList) get(data *e2ap.ActionAdmittedList) error {
868 conlen := (int)(item.entry.contentLength)
869 data.Items = make([]e2ap.ActionAdmittedItem, conlen)
870 for i := 0; i < conlen; i++ {
871 data.Items[i].ActionId = (uint64)(item.entry.ricActionID[i])
876 //-----------------------------------------------------------------------------
878 //-----------------------------------------------------------------------------
879 type e2apEntryNotAdmittedList struct {
880 entry *C.RICActionNotAdmittedList_t
883 func (item *e2apEntryNotAdmittedList) set(data *e2ap.ActionNotAdmittedList) error {
885 if len(data.Items) > 16 {
886 return fmt.Errorf("e2apEntryNotAdmittedList: too long %d while allowed %d", len(data.Items), 16)
889 item.entry.contentLength = 0
890 for i := 0; i < len(data.Items); i++ {
891 item.entry.RICActionNotAdmittedItem[item.entry.contentLength].ricActionID = (C.ulong)(data.Items[i].ActionId)
892 item.entry.RICActionNotAdmittedItem[item.entry.contentLength].cause.content = (C.uchar)(data.Items[i].Cause.Content)
893 item.entry.RICActionNotAdmittedItem[item.entry.contentLength].cause.causeVal = (C.uchar)(data.Items[i].Cause.Value)
894 item.entry.contentLength++
900 func (item *e2apEntryNotAdmittedList) get(data *e2ap.ActionNotAdmittedList) error {
901 conlen := (int)(item.entry.contentLength)
902 data.Items = make([]e2ap.ActionNotAdmittedItem, conlen)
903 for i := 0; i < conlen; i++ {
904 data.Items[i].ActionId = (uint64)(item.entry.RICActionNotAdmittedItem[i].ricActionID)
905 data.Items[i].Cause.Content = (uint8)(item.entry.RICActionNotAdmittedItem[i].cause.content)
906 data.Items[i].Cause.Value = (uint8)(item.entry.RICActionNotAdmittedItem[i].cause.causeVal)
911 //-----------------------------------------------------------------------------
913 //-----------------------------------------------------------------------------
914 type e2apEntryCriticalityDiagnostic struct {
915 entry *C.CriticalityDiagnostics__t
918 func (item *e2apEntryCriticalityDiagnostic) set(data *e2ap.CriticalityDiagnostics) error {
920 item.entry.procedureCodePresent = (C.bool)(data.ProcCodePresent)
921 item.entry.procedureCode = (C.uchar)(data.ProcCode)
923 item.entry.triggeringMessagePresent = (C.bool)(data.TrigMsgPresent)
924 item.entry.triggeringMessage = (C.uchar)(data.TrigMsg)
926 item.entry.procedureCriticalityPresent = (C.bool)(data.ProcCritPresent)
927 item.entry.procedureCriticality = (C.uchar)(data.ProcCrit)
929 item.entry.criticalityDiagnosticsIELength = 0
930 item.entry.iEsCriticalityDiagnosticsPresent = false
931 for i := 0; i < len(data.CriticalityDiagnosticsIEList.Items); i++ {
932 item.entry.criticalityDiagnosticsIEListItem[i].iECriticality = (C.uint8_t)(data.CriticalityDiagnosticsIEList.Items[i].IeCriticality)
933 item.entry.criticalityDiagnosticsIEListItem[i].iE_ID = (C.uint32_t)(data.CriticalityDiagnosticsIEList.Items[i].IeID)
934 item.entry.criticalityDiagnosticsIEListItem[i].typeOfError = (C.uint8_t)(data.CriticalityDiagnosticsIEList.Items[i].TypeOfError)
935 item.entry.criticalityDiagnosticsIELength++
936 item.entry.iEsCriticalityDiagnosticsPresent = true
941 func (item *e2apEntryCriticalityDiagnostic) get(data *e2ap.CriticalityDiagnostics) error {
943 data.ProcCodePresent = (bool)(item.entry.procedureCodePresent)
944 data.ProcCode = (uint64)(item.entry.procedureCode)
946 data.TrigMsgPresent = (bool)(item.entry.triggeringMessagePresent)
947 data.TrigMsg = (uint64)(item.entry.triggeringMessage)
949 data.ProcCritPresent = (bool)(item.entry.procedureCriticalityPresent)
950 data.ProcCrit = (uint8)(item.entry.procedureCriticality)
952 if item.entry.iEsCriticalityDiagnosticsPresent == true {
953 conlen := (int)(item.entry.criticalityDiagnosticsIELength)
954 data.CriticalityDiagnosticsIEList.Items = make([]e2ap.CriticalityDiagnosticsIEListItem, conlen)
955 for i := 0; i < conlen; i++ {
956 data.CriticalityDiagnosticsIEList.Items[i].IeCriticality = (uint8)(item.entry.criticalityDiagnosticsIEListItem[i].iECriticality)
957 data.CriticalityDiagnosticsIEList.Items[i].IeID = (uint32)(item.entry.criticalityDiagnosticsIEListItem[i].iE_ID)
958 data.CriticalityDiagnosticsIEList.Items[i].TypeOfError = (uint8)(item.entry.criticalityDiagnosticsIEListItem[i].typeOfError)
965 //-----------------------------------------------------------------------------
967 //-----------------------------------------------------------------------------
968 type e2apEntryCallProcessId struct {
969 entry *C.RICCallProcessID_t
972 func (callProcId *e2apEntryCallProcessId) set(data *e2ap.CallProcessId) error {
973 callProcId.entry.ricCallProcessIDVal = (C.uint64_t)(data.CallProcessIDVal)
977 func (callProcId *e2apEntryCallProcessId) get(data *e2ap.CallProcessId) error {
978 data.CallProcessIDVal = (uint32)(callProcId.entry.ricCallProcessIDVal)
983 //-----------------------------------------------------------------------------
985 //-----------------------------------------------------------------------------
987 type e2apMessagePacker struct {
988 expectedInfo C.E2MessageInfo_t
989 pduMsgInfo C.E2MessageInfo_t
990 pdu *C.e2ap_pdu_ptr_t
996 func (e2apMsg *e2apMessagePacker) init(minfo C.E2MessageInfo_t) {
997 e2apMsg.expectedInfo = minfo
998 e2apMsg.lb = make([]byte, cLogBufferMaxSize)
1000 e2apMsg.p = C.malloc(C.size_t(cMsgBufferMaxSize))
1001 e2apMsg.plen = C.size_t(cMsgBufferMaxSize) - cMsgBufferExtra
1004 func (e2apMsg *e2apMessagePacker) fini() {
1010 func (e2apMsg *e2apMessagePacker) lbString() string {
1011 return "logbuffer(" + string(e2apMsg.lb[:strings.Index(string(e2apMsg.lb[:]), "\000")]) + ")"
1014 func (e2apMsg *e2apMessagePacker) packeddata() *e2ap.PackedData {
1015 return &e2ap.PackedData{C.GoBytes(e2apMsg.p, C.int(e2apMsg.plen))}
1018 func (e2apMsg *e2apMessagePacker) checkerr(errorNro C.uint64_t) error {
1019 if errorNro != C.e2err_OK {
1020 return fmt.Errorf("e2err(%s) %s", C.GoString(C.getE2ErrorString(errorNro)), e2apMsg.lbString())
1025 func (e2apMsg *e2apMessagePacker) unpacktopdu(data *e2ap.PackedData) error {
1026 e2apMsg.pdu = C.unpackE2AP_pdu((C.size_t)(len(data.Buf)), (*C.uchar)(unsafe.Pointer(&data.Buf[0])), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), &e2apMsg.pduMsgInfo)
1027 if e2apMsg.pduMsgInfo.messageType != e2apMsg.expectedInfo.messageType || e2apMsg.pduMsgInfo.messageId != e2apMsg.expectedInfo.messageId {
1028 return fmt.Errorf("unpack e2ap %s %s", e2apMsg.lbString(), e2apMsg.String())
1033 func (e2apMsg *e2apMessagePacker) messageInfoPdu() *e2ap.MessageInfo {
1034 return cMessageInfoToMessageInfo(&e2apMsg.pduMsgInfo)
1037 func (e2apMsg *e2apMessagePacker) messageInfoExpected() *e2ap.MessageInfo {
1038 return cMessageInfoToMessageInfo(&e2apMsg.expectedInfo)
1041 func (e2apMsg *e2apMessagePacker) String() string {
1043 pduInfo := e2apMsg.messageInfoPdu()
1045 ret += "pduinfo(" + pduInfo.String() + ")"
1047 ret += "pduinfo(N/A)"
1049 expInfo := e2apMsg.messageInfoExpected()
1051 ret += " expinfo(" + expInfo.String() + ")"
1053 ret += " expinfo(N/A)"
1058 //-----------------------------------------------------------------------------
1060 //-----------------------------------------------------------------------------
1062 type e2apMsgPackerSubscriptionRequest struct {
1064 msgC *C.RICSubscriptionRequest_t
1065 msgG *e2ap.E2APSubscriptionRequest
1068 func (e2apMsg *e2apMsgPackerSubscriptionRequest) init() {
1069 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2InitiatingMessage, C.cRICSubscriptionRequest})
1070 e2apMsg.msgC = &C.RICSubscriptionRequest_t{}
1071 e2apMsg.msgG = &e2ap.E2APSubscriptionRequest{}
1072 C.initSubsRequest(e2apMsg.msgC)
1075 func (e2apMsg *e2apMsgPackerSubscriptionRequest) Pack(data *e2ap.E2APSubscriptionRequest) (error, *e2ap.PackedData) {
1079 defer e2apMsg.fini()
1082 var dynMemHead C.mem_track_hdr_t
1083 C.mem_track_init(&dynMemHead)
1084 defer C.mem_track_free(&dynMemHead)
1086 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1087 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1090 if err := (&e2apEntryEventTrigger{entry: &e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition}).set(&e2apMsg.msgG.EventTriggerDefinition); err != nil {
1093 if len(e2apMsg.msgG.ActionSetups) > 16 {
1094 return fmt.Errorf("IndicationMessage.InterfaceMessage: too long %d while allowed %d", len(e2apMsg.msgG.ActionSetups), 16), nil
1096 e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength = 0
1097 for i := 0; i < len(e2apMsg.msgG.ActionSetups); i++ {
1098 item := &e2apEntryActionToBeSetupItem{entry: &e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength]}
1099 e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength += 1
1100 if err := item.set(&dynMemHead, &e2apMsg.msgG.ActionSetups[i]); err != nil {
1104 errorNro := C.packRICSubscriptionRequest(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1105 if err := e2apMsg.checkerr(errorNro); err != nil {
1108 return nil, e2apMsg.packeddata()
1111 func (e2apMsg *e2apMsgPackerSubscriptionRequest) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionRequest) {
1114 defer e2apMsg.fini()
1116 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1117 return err, e2apMsg.msgG
1120 var dynMemHead C.mem_track_hdr_t
1121 C.mem_track_init(&dynMemHead)
1122 defer C.mem_track_free(&dynMemHead)
1124 errorNro := C.getRICSubscriptionRequestData(&dynMemHead, e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1125 if err := e2apMsg.checkerr(errorNro); err != nil {
1126 return err, e2apMsg.msgG
1129 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1130 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1131 return err, e2apMsg.msgG
1133 if err := (&e2apEntryEventTrigger{entry: &e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition}).get(&e2apMsg.msgG.EventTriggerDefinition); err != nil {
1134 return err, e2apMsg.msgG
1136 conlen := (int)(e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength)
1137 e2apMsg.msgG.ActionSetups = make([]e2ap.ActionToBeSetupItem, conlen)
1138 for i := 0; i < conlen; i++ {
1139 item := &e2apEntryActionToBeSetupItem{entry: &e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[i]}
1140 if err := item.get(&e2apMsg.msgG.ActionSetups[i]); err != nil {
1141 return err, e2apMsg.msgG
1144 return nil, e2apMsg.msgG
1148 func (e2apMsg *e2apMsgPackerSubscriptionRequest) String() string {
1150 fmt.Fprintln(&b, "ricSubscriptionRequest.")
1151 fmt.Fprintln(&b, " ricRequestID.")
1152 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1153 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1154 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1155 fmt.Fprintln(&b, " ricSubscriptionDetails.")
1156 fmt.Fprintln(&b, " ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.")
1157 fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.octetString.contentLength)
1158 fmt.Fprintln(&b, " interfaceID.globalENBIDPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent)
1159 if e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBIDPresent {
1160 fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.contentLength)
1161 fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[0])
1162 fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[1])
1163 fmt.Fprintln(&b, " interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.pLMNIdentity.pLMNIdentityVal[2])
1164 fmt.Fprintln(&b, " interfaceID.globalENBID.nodeID.bits =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.bits)
1165 fmt.Fprintln(&b, " interfaceID.globalENBID.nodeID.nodeID =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalENBID.nodeID.nodeID)
1167 fmt.Fprintln(&b, " interfaceID.globalGNBIDPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent)
1168 if e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBIDPresent {
1169 fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.contentLength)
1170 fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[0])
1171 fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[1])
1172 fmt.Fprintln(&b, " interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2] =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.pLMNIdentity.pLMNIdentityVal[2])
1173 fmt.Fprintln(&b, " interfaceID.globalGNBID.nodeID.bits =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.bits)
1174 fmt.Fprintln(&b, " interfaceID.globalGNBID.nodeID.nodeID =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceID.globalGNBID.nodeID.nodeID)
1176 fmt.Fprintln(&b, " interfaceDirection = ", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceDirection)
1177 fmt.Fprintln(&b, " interfaceMessageType.procedureCode =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceMessageType.procedureCode)
1178 fmt.Fprintln(&b, " interfaceMessageType.typeOfMessage =", e2apMsg.msgC.ricSubscriptionDetails.ricEventTriggerDefinition.e2SMgNBX2eventTriggerDefinition.interfaceMessageType.typeOfMessage)
1179 fmt.Fprintln(&b, " ricActionToBeSetupItemIEs.")
1180 fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength)
1183 for (C.uchar)(index) < e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.contentLength {
1184 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionID =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionID)
1185 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionType =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionType)
1187 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent)
1188 if e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionPresent {
1189 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format1Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format1Present)
1190 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format2Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionX2Format2Present)
1191 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricActionDefinitionChoice.actionDefinitionNRTFormat1Present)
1192 // Dynamically allocated C-structs are already freed. Can't print those.
1195 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricSubsequentActionPresent =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent)
1196 if e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentActionPresent {
1197 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricSubsequentActionType)
1198 fmt.Fprintln(&b, " ricActionToBeSetupItem[index].ricSubsequentAction.ricTimeToWait =", e2apMsg.msgC.ricSubscriptionDetails.ricActionToBeSetupItemIEs.ricActionToBeSetupItem[index].ricSubsequentAction.ricTimeToWait)
1205 //-----------------------------------------------------------------------------
1207 //-----------------------------------------------------------------------------
1208 type e2apMsgPackerSubscriptionResponse struct {
1210 msgC *C.RICSubscriptionResponse_t
1211 msgG *e2ap.E2APSubscriptionResponse
1214 func (e2apMsg *e2apMsgPackerSubscriptionResponse) init() {
1215 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2SuccessfulOutcome, C.cRICSubscriptionResponse})
1216 e2apMsg.msgC = &C.RICSubscriptionResponse_t{}
1217 e2apMsg.msgG = &e2ap.E2APSubscriptionResponse{}
1218 C.initSubsResponse(e2apMsg.msgC)
1221 func (e2apMsg *e2apMsgPackerSubscriptionResponse) Pack(data *e2ap.E2APSubscriptionResponse) (error, *e2ap.PackedData) {
1223 defer e2apMsg.fini()
1226 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1227 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1230 if err := (&e2apEntryAdmittedList{entry: &e2apMsg.msgC.ricActionAdmittedList}).set(&e2apMsg.msgG.ActionAdmittedList); err != nil {
1233 e2apMsg.msgC.ricActionNotAdmittedListPresent = false
1234 if len(e2apMsg.msgG.ActionNotAdmittedList.Items) > 0 {
1235 e2apMsg.msgC.ricActionNotAdmittedListPresent = true
1236 if err := (&e2apEntryNotAdmittedList{entry: &e2apMsg.msgC.ricActionNotAdmittedList}).set(&e2apMsg.msgG.ActionNotAdmittedList); err != nil {
1241 errorNro := C.packRICSubscriptionResponse(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1242 if err := e2apMsg.checkerr(errorNro); err != nil {
1245 return nil, e2apMsg.packeddata()
1248 func (e2apMsg *e2apMsgPackerSubscriptionResponse) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionResponse) {
1251 defer e2apMsg.fini()
1253 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1254 return err, e2apMsg.msgG
1256 errorNro := C.getRICSubscriptionResponseData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1257 if err := e2apMsg.checkerr(errorNro); err != nil {
1258 return err, e2apMsg.msgG
1261 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1262 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1263 return err, e2apMsg.msgG
1265 if err := (&e2apEntryAdmittedList{entry: &e2apMsg.msgC.ricActionAdmittedList}).get(&e2apMsg.msgG.ActionAdmittedList); err != nil {
1266 return err, e2apMsg.msgG
1268 if e2apMsg.msgC.ricActionNotAdmittedListPresent == true {
1269 if err := (&e2apEntryNotAdmittedList{entry: &e2apMsg.msgC.ricActionNotAdmittedList}).get(&e2apMsg.msgG.ActionNotAdmittedList); err != nil {
1270 return err, e2apMsg.msgG
1273 return nil, e2apMsg.msgG
1276 func (e2apMsg *e2apMsgPackerSubscriptionResponse) String() string {
1278 fmt.Fprintln(&b, "ricSubscriptionResponse.")
1279 fmt.Fprintln(&b, " ricRequestID.")
1280 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1281 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1282 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1283 fmt.Fprintln(&b, " ricActionAdmittedList.")
1284 fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricActionAdmittedList.contentLength)
1287 for (C.uchar)(index) < e2apMsg.msgC.ricActionAdmittedList.contentLength {
1288 fmt.Fprintln(&b, " ricActionAdmittedList.ricActionID[index] =", e2apMsg.msgC.ricActionAdmittedList.ricActionID[index])
1291 if e2apMsg.msgC.ricActionNotAdmittedListPresent {
1292 fmt.Fprintln(&b, " ricActionNotAdmittedListPresent =", e2apMsg.msgC.ricActionNotAdmittedListPresent)
1293 fmt.Fprintln(&b, " ricActionNotAdmittedList.")
1294 fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricActionNotAdmittedList.contentLength)
1296 for (C.uchar)(index) < e2apMsg.msgC.ricActionNotAdmittedList.contentLength {
1297 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].ricActionID =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID)
1298 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].cause.content =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content)
1299 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].cause.causeVal =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal)
1306 //-----------------------------------------------------------------------------
1308 //-----------------------------------------------------------------------------
1309 type e2apMsgPackerSubscriptionFailure struct {
1311 msgC *C.RICSubscriptionFailure_t
1312 msgG *e2ap.E2APSubscriptionFailure
1315 func (e2apMsg *e2apMsgPackerSubscriptionFailure) init() {
1316 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2UnsuccessfulOutcome, C.cRICSubscriptionFailure})
1317 e2apMsg.msgC = &C.RICSubscriptionFailure_t{}
1318 e2apMsg.msgG = &e2ap.E2APSubscriptionFailure{}
1319 C.initSubsFailure(e2apMsg.msgC)
1322 func (e2apMsg *e2apMsgPackerSubscriptionFailure) Pack(data *e2ap.E2APSubscriptionFailure) (error, *e2ap.PackedData) {
1324 defer e2apMsg.fini()
1327 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1328 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1331 if err := (&e2apEntryNotAdmittedList{entry: &e2apMsg.msgC.ricActionNotAdmittedList}).set(&e2apMsg.msgG.ActionNotAdmittedList); err != nil {
1334 e2apMsg.msgC.criticalityDiagnosticsPresent = false
1335 if e2apMsg.msgG.CriticalityDiagnostics.Present {
1336 e2apMsg.msgC.criticalityDiagnosticsPresent = true
1337 if err := (&e2apEntryCriticalityDiagnostic{entry: &e2apMsg.msgC.criticalityDiagnostics}).set(&e2apMsg.msgG.CriticalityDiagnostics); err != nil {
1342 errorNro := C.packRICSubscriptionFailure(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1343 if err := e2apMsg.checkerr(errorNro); err != nil {
1346 return nil, e2apMsg.packeddata()
1349 func (e2apMsg *e2apMsgPackerSubscriptionFailure) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionFailure) {
1351 defer e2apMsg.fini()
1353 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1354 return err, e2apMsg.msgG
1356 errorNro := C.getRICSubscriptionFailureData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1357 if err := e2apMsg.checkerr(errorNro); err != nil {
1358 return err, e2apMsg.msgG
1361 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1362 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1363 return err, e2apMsg.msgG
1365 if err := (&e2apEntryNotAdmittedList{entry: &e2apMsg.msgC.ricActionNotAdmittedList}).get(&e2apMsg.msgG.ActionNotAdmittedList); err != nil {
1366 return err, e2apMsg.msgG
1368 if e2apMsg.msgC.criticalityDiagnosticsPresent == true {
1369 e2apMsg.msgG.CriticalityDiagnostics.Present = true
1370 if err := (&e2apEntryCriticalityDiagnostic{entry: &e2apMsg.msgC.criticalityDiagnostics}).get(&e2apMsg.msgG.CriticalityDiagnostics); err != nil {
1371 return err, e2apMsg.msgG
1374 return nil, e2apMsg.msgG
1377 func (e2apMsg *e2apMsgPackerSubscriptionFailure) String() string {
1379 fmt.Fprintln(&b, "ricSubscriptionFailure.")
1380 fmt.Fprintln(&b, " ricRequestID.")
1381 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1382 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1383 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1384 fmt.Fprintln(&b, " ricActionNotAdmittedList.")
1385 fmt.Fprintln(&b, " contentLength =", e2apMsg.msgC.ricActionNotAdmittedList.contentLength)
1388 for (C.uchar)(index) < e2apMsg.msgC.ricActionNotAdmittedList.contentLength {
1389 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].ricActionID =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].ricActionID)
1390 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].cause.content =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.content)
1391 fmt.Fprintln(&b, " RICActionNotAdmittedItem[index].cause.causeVal =", e2apMsg.msgC.ricActionNotAdmittedList.RICActionNotAdmittedItem[index].cause.causeVal)
1395 if e2apMsg.msgC.criticalityDiagnosticsPresent {
1396 fmt.Fprintln(&b, " criticalityDiagnosticsPresent =", e2apMsg.msgC.criticalityDiagnosticsPresent)
1397 fmt.Fprintln(&b, " criticalityDiagnostics.")
1398 fmt.Fprintln(&b, " procedureCodePresent =", e2apMsg.msgC.criticalityDiagnostics.procedureCodePresent)
1399 fmt.Fprintln(&b, " procedureCode =", e2apMsg.msgC.criticalityDiagnostics.procedureCode)
1400 fmt.Fprintln(&b, " triggeringMessagePresent =", e2apMsg.msgC.criticalityDiagnostics.triggeringMessagePresent)
1401 fmt.Fprintln(&b, " triggeringMessage =", e2apMsg.msgC.criticalityDiagnostics.triggeringMessage)
1402 fmt.Fprintln(&b, " procedureCriticalityPresent=", e2apMsg.msgC.criticalityDiagnostics.procedureCriticalityPresent)
1403 fmt.Fprintln(&b, " procedureCriticality =", e2apMsg.msgC.criticalityDiagnostics.procedureCriticality)
1404 fmt.Fprintln(&b, " iEsCriticalityDiagnosticsPresent =", e2apMsg.msgC.criticalityDiagnostics.iEsCriticalityDiagnosticsPresent)
1405 fmt.Fprintln(&b, " criticalityDiagnosticsIELength =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIELength)
1408 for (C.ushort)(index2) < e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIELength {
1409 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].iECriticality =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iECriticality)
1410 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].iE_ID =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iE_ID)
1411 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].typeOfError =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].typeOfError)
1419 //-----------------------------------------------------------------------------
1421 //-----------------------------------------------------------------------------
1422 type e2apMsgPackerSubscriptionDeleteRequest struct {
1424 msgC *C.RICSubscriptionDeleteRequest_t
1425 msgG *e2ap.E2APSubscriptionDeleteRequest
1428 func (e2apMsg *e2apMsgPackerSubscriptionDeleteRequest) init() {
1429 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2InitiatingMessage, C.cRICSubscriptionDeleteRequest})
1430 e2apMsg.msgC = &C.RICSubscriptionDeleteRequest_t{}
1431 e2apMsg.msgG = &e2ap.E2APSubscriptionDeleteRequest{}
1432 C.initSubsDeleteRequest(e2apMsg.msgC)
1435 func (e2apMsg *e2apMsgPackerSubscriptionDeleteRequest) Pack(data *e2ap.E2APSubscriptionDeleteRequest) (error, *e2ap.PackedData) {
1437 defer e2apMsg.fini()
1440 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1441 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1445 errorNro := C.packRICSubscriptionDeleteRequest(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1446 if err := e2apMsg.checkerr(errorNro); err != nil {
1449 return nil, e2apMsg.packeddata()
1452 func (e2apMsg *e2apMsgPackerSubscriptionDeleteRequest) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionDeleteRequest) {
1454 defer e2apMsg.fini()
1456 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1457 return err, e2apMsg.msgG
1459 errorNro := C.getRICSubscriptionDeleteRequestData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1460 if err := e2apMsg.checkerr(errorNro); err != nil {
1461 return err, e2apMsg.msgG
1464 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1465 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1466 return err, e2apMsg.msgG
1468 return nil, e2apMsg.msgG
1472 func (e2apMsg *e2apMsgPackerSubscriptionDeleteRequest) String() string {
1474 fmt.Fprintln(&b, "ricSubscriptionDeleteRequest.")
1475 fmt.Fprintln(&b, " ricRequestID.")
1476 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1477 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1478 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1482 //-----------------------------------------------------------------------------
1484 //-----------------------------------------------------------------------------
1485 type e2apMsgPackerSubscriptionDeleteResponse struct {
1487 msgC *C.RICSubscriptionDeleteResponse_t
1488 msgG *e2ap.E2APSubscriptionDeleteResponse
1491 func (e2apMsg *e2apMsgPackerSubscriptionDeleteResponse) init() {
1492 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2SuccessfulOutcome, C.cRICsubscriptionDeleteResponse})
1493 e2apMsg.msgC = &C.RICSubscriptionDeleteResponse_t{}
1494 e2apMsg.msgG = &e2ap.E2APSubscriptionDeleteResponse{}
1495 C.initSubsDeleteResponse(e2apMsg.msgC)
1498 func (e2apMsg *e2apMsgPackerSubscriptionDeleteResponse) Pack(data *e2ap.E2APSubscriptionDeleteResponse) (error, *e2ap.PackedData) {
1500 defer e2apMsg.fini()
1503 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1504 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1508 errorNro := C.packRICSubscriptionDeleteResponse(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1509 if err := e2apMsg.checkerr(errorNro); err != nil {
1512 return nil, e2apMsg.packeddata()
1515 func (e2apMsg *e2apMsgPackerSubscriptionDeleteResponse) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionDeleteResponse) {
1517 defer e2apMsg.fini()
1519 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1520 return err, e2apMsg.msgG
1522 errorNro := C.getRICSubscriptionDeleteResponseData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1523 if err := e2apMsg.checkerr(errorNro); err != nil {
1524 return err, e2apMsg.msgG
1527 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1528 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1529 return err, e2apMsg.msgG
1531 return nil, e2apMsg.msgG
1534 func (e2apMsg *e2apMsgPackerSubscriptionDeleteResponse) String() string {
1536 fmt.Fprintln(&b, "ricSubscriptionDeleteResponse.")
1537 fmt.Fprintln(&b, " ricRequestID.")
1538 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1539 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1540 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1544 //-----------------------------------------------------------------------------
1546 //-----------------------------------------------------------------------------
1547 type e2apMsgPackerSubscriptionDeleteFailure struct {
1549 msgC *C.RICSubscriptionDeleteFailure_t
1550 msgG *e2ap.E2APSubscriptionDeleteFailure
1553 func (e2apMsg *e2apMsgPackerSubscriptionDeleteFailure) init() {
1554 e2apMsg.e2apMessagePacker.init(C.E2MessageInfo_t{C.cE2UnsuccessfulOutcome, C.cRICsubscriptionDeleteFailure})
1555 e2apMsg.msgC = &C.RICSubscriptionDeleteFailure_t{}
1556 e2apMsg.msgG = &e2ap.E2APSubscriptionDeleteFailure{}
1557 C.initSubsDeleteFailure(e2apMsg.msgC)
1560 func (e2apMsg *e2apMsgPackerSubscriptionDeleteFailure) Pack(data *e2ap.E2APSubscriptionDeleteFailure) (error, *e2ap.PackedData) {
1562 defer e2apMsg.fini()
1565 e2apMsg.msgC.ranFunctionID = (C.uint16_t)(e2apMsg.msgG.FunctionId)
1566 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).set(&e2apMsg.msgG.RequestId); err != nil {
1569 e2apMsg.msgC.cause.content = (C.uchar)(e2apMsg.msgG.Cause.Content)
1570 e2apMsg.msgC.cause.causeVal = (C.uchar)(e2apMsg.msgG.Cause.Value)
1571 e2apMsg.msgC.criticalityDiagnosticsPresent = false
1572 if e2apMsg.msgG.CriticalityDiagnostics.Present {
1573 e2apMsg.msgC.criticalityDiagnosticsPresent = true
1574 if err := (&e2apEntryCriticalityDiagnostic{entry: &e2apMsg.msgC.criticalityDiagnostics}).set(&e2apMsg.msgG.CriticalityDiagnostics); err != nil {
1579 errorNro := C.packRICSubscriptionDeleteFailure(&e2apMsg.plen, (*C.uchar)(e2apMsg.p), (*C.char)(unsafe.Pointer(&e2apMsg.lb[0])), e2apMsg.msgC)
1580 if err := e2apMsg.checkerr(errorNro); err != nil {
1583 return nil, e2apMsg.packeddata()
1586 func (e2apMsg *e2apMsgPackerSubscriptionDeleteFailure) UnPack(msg *e2ap.PackedData) (error, *e2ap.E2APSubscriptionDeleteFailure) {
1588 defer e2apMsg.fini()
1590 if err := e2apMsg.e2apMessagePacker.unpacktopdu(msg); err != nil {
1591 return err, e2apMsg.msgG
1593 errorNro := C.getRICSubscriptionDeleteFailureData(e2apMsg.e2apMessagePacker.pdu, e2apMsg.msgC)
1594 if err := e2apMsg.checkerr(errorNro); err != nil {
1595 return err, e2apMsg.msgG
1598 e2apMsg.msgG.FunctionId = (e2ap.FunctionId)(e2apMsg.msgC.ranFunctionID)
1599 if err := (&e2apEntryRequestID{entry: &e2apMsg.msgC.ricRequestID}).get(&e2apMsg.msgG.RequestId); err != nil {
1600 return err, e2apMsg.msgG
1602 e2apMsg.msgG.Cause.Content = (uint8)(e2apMsg.msgC.cause.content)
1603 e2apMsg.msgG.Cause.Value = (uint8)(e2apMsg.msgC.cause.causeVal)
1604 if e2apMsg.msgC.criticalityDiagnosticsPresent == true {
1605 e2apMsg.msgG.CriticalityDiagnostics.Present = true
1606 if err := (&e2apEntryCriticalityDiagnostic{entry: &e2apMsg.msgC.criticalityDiagnostics}).get(&e2apMsg.msgG.CriticalityDiagnostics); err != nil {
1607 return err, e2apMsg.msgG
1610 return nil, e2apMsg.msgG
1613 func (e2apMsg *e2apMsgPackerSubscriptionDeleteFailure) String() string {
1615 fmt.Fprintln(&b, "ricSubscriptionDeleteFailure.")
1616 fmt.Fprintln(&b, " ricRequestID.")
1617 fmt.Fprintln(&b, " ricRequestorID =", e2apMsg.msgC.ricRequestID.ricRequestorID)
1618 fmt.Fprintln(&b, " ricInstanceID =", e2apMsg.msgC.ricRequestID.ricInstanceID)
1619 fmt.Fprintln(&b, " ranFunctionID =", e2apMsg.msgC.ranFunctionID)
1621 if e2apMsg.msgC.criticalityDiagnosticsPresent {
1622 fmt.Fprintln(&b, " criticalityDiagnosticsPresent =", e2apMsg.msgC.criticalityDiagnosticsPresent)
1623 fmt.Fprintln(&b, " criticalityDiagnostics.")
1624 fmt.Fprintln(&b, " procedureCodePresent =", e2apMsg.msgC.criticalityDiagnostics.procedureCodePresent)
1625 fmt.Fprintln(&b, " procedureCode =", e2apMsg.msgC.criticalityDiagnostics.procedureCode)
1626 fmt.Fprintln(&b, " triggeringMessagePresent =", e2apMsg.msgC.criticalityDiagnostics.triggeringMessagePresent)
1627 fmt.Fprintln(&b, " triggeringMessage =", e2apMsg.msgC.criticalityDiagnostics.triggeringMessage)
1628 fmt.Fprintln(&b, " procedureCriticalityPresent=", e2apMsg.msgC.criticalityDiagnostics.procedureCriticalityPresent)
1629 fmt.Fprintln(&b, " procedureCriticality =", e2apMsg.msgC.criticalityDiagnostics.procedureCriticality)
1630 fmt.Fprintln(&b, " iEsCriticalityDiagnosticsPresent =", e2apMsg.msgC.criticalityDiagnostics.iEsCriticalityDiagnosticsPresent)
1631 fmt.Fprintln(&b, " criticalityDiagnosticsIELength =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIELength)
1634 for (C.ushort)(index2) < e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIELength {
1635 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].iECriticality =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iECriticality)
1636 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].iE_ID =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].iE_ID)
1637 fmt.Fprintln(&b, " criticalityDiagnosticsIEListItem[index2].typeOfError =", e2apMsg.msgC.criticalityDiagnostics.criticalityDiagnosticsIEListItem[index2].typeOfError)
1645 //-----------------------------------------------------------------------------
1646 // Public E2AP packer creators
1647 //-----------------------------------------------------------------------------
1649 type cppasn1E2APPacker struct{}
1651 func (*cppasn1E2APPacker) NewPackerSubscriptionRequest() e2ap.E2APMsgPackerSubscriptionRequestIf {
1652 return &e2apMsgPackerSubscriptionRequest{}
1655 func (*cppasn1E2APPacker) NewPackerSubscriptionResponse() e2ap.E2APMsgPackerSubscriptionResponseIf {
1656 return &e2apMsgPackerSubscriptionResponse{}
1659 func (*cppasn1E2APPacker) NewPackerSubscriptionFailure() e2ap.E2APMsgPackerSubscriptionFailureIf {
1660 return &e2apMsgPackerSubscriptionFailure{}
1663 func (*cppasn1E2APPacker) NewPackerSubscriptionDeleteRequest() e2ap.E2APMsgPackerSubscriptionDeleteRequestIf {
1664 return &e2apMsgPackerSubscriptionDeleteRequest{}
1667 func (*cppasn1E2APPacker) NewPackerSubscriptionDeleteResponse() e2ap.E2APMsgPackerSubscriptionDeleteResponseIf {
1668 return &e2apMsgPackerSubscriptionDeleteResponse{}
1671 func (*cppasn1E2APPacker) NewPackerSubscriptionDeleteFailure() e2ap.E2APMsgPackerSubscriptionDeleteFailureIf {
1672 return &e2apMsgPackerSubscriptionDeleteFailure{}
1675 func NewAsn1E2Packer() e2ap.E2APPackerIf {
1676 return &cppasn1E2APPacker{}