5 #include <e2ap/wrapper.h>
6 #cgo LDFLAGS: -le2apwrapper
7 #cgo CFLAGS: -I/usr/local/include/e2ap
13 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
20 func (c *E2ap) SetRicControlRequestPayload(payload []byte, ricRequestorID uint16, ricRequestSequenceNumber uint16, ranFunctionID uint16,
21 ricControlHdr []byte, ricControlMsg []byte) (newPayload []byte, err error) {
23 cptr := unsafe.Pointer(&payload[0])
24 cptr_ricControlHdr := unsafe.Pointer(&ricControlHdr[0])
25 cptr_ricControlMsg := unsafe.Pointer(&ricControlMsg[0])
27 xapp.Logger.Debug("\n")
28 xapp.Logger.Debug("ricControlHdr\n", ricControlHdr)
29 xapp.Logger.Debug("\n")
30 xapp.Logger.Debug("ricControlMsg\n", ricControlMsg)
31 xapp.Logger.Debug("\n")
33 size := C.e2ap_encode_ric_control_request_message(cptr, C.size_t(len(payload)), C.long(ricRequestorID), C.long(ricRequestSequenceNumber),
34 C.long(ranFunctionID), cptr_ricControlHdr, C.size_t(len(ricControlHdr)), cptr_ricControlMsg, C.size_t(len(ricControlMsg)))
36 return make([]byte, 0), errors.New("e2ap wrapper is unable to set Subscription Request Payload due to wrong or invalid payload")
38 newPayload = C.GoBytes(cptr, (C.int(size)+7)/8)
39 xapp.Logger.Info("SetRicControlHeader is success")
44 func (c *E2ap) GetControlAckMsg(payload []byte) (decodedMsg *ControlAckMsg, err error) {
45 cptr := unsafe.Pointer(&payload[0])
46 decodedMsg = &ControlAckMsg{}
47 decodedCMsg := C.e2ap_decode_ric_control_acknowledge_message(cptr, C.size_t(len(payload)))
48 defer C.e2ap_free_decoded_ric_control_ack(decodedCMsg)
49 if decodedCMsg == nil {
50 return decodedMsg, errors.New("e2ap wrapper is unable to decode indication message due to wrong or invalid payload")
53 decodedMsg.RequestID = int32(decodedCMsg.requestorID)
54 decodedMsg.InstanceId = int32(decodedCMsg.instanceID)
55 decodedMsg.FuncID = int32(decodedCMsg.ranfunctionID)
56 callproc := unsafe.Pointer(decodedCMsg.callProcessID)
57 decodedMsg.CallProcessID = C.GoBytes(callproc, C.int(decodedCMsg.callProcessIDSize))
58 decodedMsg.CallProcessIDLength = int32(decodedCMsg.callProcessIDSize)
59 controlOutcome := unsafe.Pointer(decodedCMsg.ricControlOutCome)
60 decodedMsg.ControlOutcome = C.GoBytes(controlOutcome, C.int(decodedCMsg.ricControlOutComeSize))
61 decodedMsg.ControlOutcomeLength = int32(decodedCMsg.ricControlOutComeSize)
65 func (c *E2ap) GetControlFailureMsg(payload []byte) (decodedMsg *ControlFailureMsg, err error) {
66 cptr := unsafe.Pointer(&payload[0])
67 decodedMsg = &ControlFailureMsg{}
68 decodedCMsg := C.e2ap_decode_ric_control_failure_message(cptr, C.size_t(len(payload)))
69 defer C.e2ap_free_decoded_ric_control_failure(decodedCMsg)
70 if decodedCMsg == nil {
71 return decodedMsg, errors.New("e2ap wrapper is unable to decode control failure message due to wrong or invalid payload")
74 decodedMsg.RequestID = int32(decodedCMsg.requestorID)
75 decodedMsg.InstanceId = int32(decodedCMsg.instanceID)
76 decodedMsg.FuncID = int32(decodedCMsg.ranfunctionID)
77 callproc := unsafe.Pointer(decodedCMsg.callProcessID)
78 decodedMsg.CallProcessID = C.GoBytes(callproc, C.int(decodedCMsg.callProcessIDSize))
79 decodedMsg.CallProcessIDLength = int32(decodedCMsg.callProcessIDSize)
80 decodedMsg.CauseType = int32(decodedCMsg.causeType)
81 decodedMsg.CauseValue = int64(decodedCMsg.causeValue)
82 controlOutcome := unsafe.Pointer(decodedCMsg.ricControlOutCome)
83 decodedMsg.ControlOutcome = C.GoBytes(controlOutcome, C.int(decodedCMsg.ricControlOutComeSize))
84 decodedMsg.ControlOutcomeLength = int32(decodedCMsg.ricControlOutComeSize)