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 ==================================================================================
23 #cgo LDFLAGS: -le2ap_wrapper -le2ap
30 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
31 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap_wrapper"
32 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
33 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
36 var packerif e2ap.E2APPackerIf = e2ap_wrapper.NewAsn1E2Packer()
41 //-----------------------------------------------------------------------------
43 //-----------------------------------------------------------------------------
44 func (c *E2ap) FillSubscriptionReqMsgs(params interface{}, subreqList *e2ap.SubscriptionRequestList, restSubscription *RESTSubscription) error {
45 xapp.Logger.Info("FillSubscriptionReqMsgs")
47 p := params.(*models.SubscriptionParams)
49 for _, subscriptionDetail := range p.SubscriptionDetails {
50 subReqMsg := e2ap.E2APSubscriptionRequest{}
52 if p.RANFunctionID != nil {
53 subReqMsg.FunctionId = (e2ap.FunctionId)(*p.RANFunctionID)
55 subReqMsg.RequestId = e2ap.RequestId{uint32(*subscriptionDetail.RequestorID), uint32(*subscriptionDetail.InstanceID)}
57 subReqMsg.EventTriggerDefinition.Data.Data = []byte(subscriptionDetail.EventTriggers.OctetString)
58 subReqMsg.EventTriggerDefinition.Data.Length = uint64(len(subscriptionDetail.EventTriggers.OctetString))
60 for _, actionToBeSetup := range subscriptionDetail.ActionToBeSetupList {
61 actionToBeSetupItem := e2ap.ActionToBeSetupItem{}
62 actionToBeSetupItem.ActionType = e2ap.E2AP_ActionTypeInvalid
63 actionToBeSetupItem.ActionId = uint64(*actionToBeSetup.ActionID)
65 actionToBeSetupItem.ActionType = e2ap.E2AP_ActionTypeStrMap[*actionToBeSetup.ActionType]
66 actionToBeSetupItem.RicActionDefinitionPresent = true
68 if actionToBeSetup.ActionDefinition != nil {
69 actionToBeSetupItem.ActionDefinitionChoice.Data.Data = []byte(actionToBeSetup.ActionDefinition.OctetString)
70 actionToBeSetupItem.ActionDefinitionChoice.Data.Length = uint64(len(actionToBeSetup.ActionDefinition.OctetString))
73 if actionToBeSetup.SubsequentAction != nil {
74 actionToBeSetupItem.SubsequentAction.Present = true
75 actionToBeSetupItem.SubsequentAction.Type = e2ap.E2AP_SubSeqActionTypeStrMap[*actionToBeSetup.SubsequentAction.SubsequentActionType]
76 actionToBeSetupItem.SubsequentAction.TimetoWait = e2ap.E2AP_TimeToWaitStrMap[*actionToBeSetup.SubsequentAction.TimeToWait]
78 subReqMsg.ActionSetups = append(subReqMsg.ActionSetups, actionToBeSetupItem)
80 subreqList.E2APSubscriptionRequests = append(subreqList.E2APSubscriptionRequests, subReqMsg)
85 //-----------------------------------------------------------------------------
87 //-----------------------------------------------------------------------------
88 func (c *E2ap) UnpackSubscriptionRequest(payload []byte) (*e2ap.E2APSubscriptionRequest, error) {
89 e2SubReq := packerif.NewPackerSubscriptionRequest()
90 err, subReq := e2SubReq.UnPack(&e2ap.PackedData{payload})
92 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
97 func (c *E2ap) PackSubscriptionRequest(req *e2ap.E2APSubscriptionRequest) (int, *e2ap.PackedData, error) {
98 e2SubReq := packerif.NewPackerSubscriptionRequest()
99 err, packedData := e2SubReq.Pack(req)
103 return xapp.RIC_SUB_REQ, packedData, nil
106 //-----------------------------------------------------------------------------
108 //-----------------------------------------------------------------------------
109 func (c *E2ap) UnpackSubscriptionResponse(payload []byte) (*e2ap.E2APSubscriptionResponse, error) {
110 e2SubResp := packerif.NewPackerSubscriptionResponse()
111 err, subResp := e2SubResp.UnPack(&e2ap.PackedData{payload})
113 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
118 func (c *E2ap) PackSubscriptionResponse(req *e2ap.E2APSubscriptionResponse) (int, *e2ap.PackedData, error) {
119 e2SubResp := packerif.NewPackerSubscriptionResponse()
120 err, packedData := e2SubResp.Pack(req)
124 return xapp.RIC_SUB_RESP, packedData, nil
127 //-----------------------------------------------------------------------------
129 //-----------------------------------------------------------------------------
130 func (c *E2ap) UnpackSubscriptionFailure(payload []byte) (*e2ap.E2APSubscriptionFailure, error) {
131 e2SubFail := packerif.NewPackerSubscriptionFailure()
132 err, subFail := e2SubFail.UnPack(&e2ap.PackedData{payload})
134 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
139 func (c *E2ap) PackSubscriptionFailure(req *e2ap.E2APSubscriptionFailure) (int, *e2ap.PackedData, error) {
140 e2SubFail := packerif.NewPackerSubscriptionFailure()
141 err, packedData := e2SubFail.Pack(req)
145 return xapp.RIC_SUB_FAILURE, packedData, nil
148 //-----------------------------------------------------------------------------
150 //-----------------------------------------------------------------------------
151 func (c *E2ap) UnpackSubscriptionDeleteRequest(payload []byte) (*e2ap.E2APSubscriptionDeleteRequest, error) {
152 e2SubDelReq := packerif.NewPackerSubscriptionDeleteRequest()
153 err, subDelReq := e2SubDelReq.UnPack(&e2ap.PackedData{payload})
155 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
157 return subDelReq, nil
160 func (c *E2ap) PackSubscriptionDeleteRequest(req *e2ap.E2APSubscriptionDeleteRequest) (int, *e2ap.PackedData, error) {
161 e2SubDelReq := packerif.NewPackerSubscriptionDeleteRequest()
162 err, packedData := e2SubDelReq.Pack(req)
166 return xapp.RIC_SUB_DEL_REQ, packedData, nil
169 //-----------------------------------------------------------------------------
171 //-----------------------------------------------------------------------------
172 func (c *E2ap) UnpackSubscriptionDeleteResponse(payload []byte) (*e2ap.E2APSubscriptionDeleteResponse, error) {
173 e2SubDelResp := packerif.NewPackerSubscriptionDeleteResponse()
174 err, subDelResp := e2SubDelResp.UnPack(&e2ap.PackedData{payload})
176 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
178 return subDelResp, nil
181 func (c *E2ap) PackSubscriptionDeleteResponse(req *e2ap.E2APSubscriptionDeleteResponse) (int, *e2ap.PackedData, error) {
182 e2SubDelResp := packerif.NewPackerSubscriptionDeleteResponse()
183 err, packedData := e2SubDelResp.Pack(req)
187 return xapp.RIC_SUB_DEL_RESP, packedData, nil
190 //-----------------------------------------------------------------------------
192 //-----------------------------------------------------------------------------
193 func (c *E2ap) UnpackSubscriptionDeleteFailure(payload []byte) (*e2ap.E2APSubscriptionDeleteFailure, error) {
194 e2SubDelFail := packerif.NewPackerSubscriptionDeleteFailure()
195 err, subDelFail := e2SubDelFail.UnPack(&e2ap.PackedData{payload})
197 return nil, fmt.Errorf("%s buf[%s]", err.Error(), hex.EncodeToString(payload))
199 return subDelFail, nil
202 func (c *E2ap) PackSubscriptionDeleteFailure(req *e2ap.E2APSubscriptionDeleteFailure) (int, *e2ap.PackedData, error) {
203 e2SubDelFail := packerif.NewPackerSubscriptionDeleteFailure()
204 err, packedData := e2SubDelFail.Pack(req)
208 return xapp.RIC_SUB_DEL_FAILURE, packedData, nil