2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
25 type E2SetupSuccessResponseMessage struct {
26 XMLName xml.Name `xml:"E2SetupSuccessResponseMessage"`
27 Text string `xml:",chardata"`
28 E2APPDU E2APPDU `xml:"E2AP-PDU"`
32 XMLName xml.Name `xml:"E2AP-PDU"`
33 Text string `xml:",chardata"`
34 SuccessfulOutcome struct {
35 Text string `xml:",chardata"`
36 ProcedureCode string `xml:"procedureCode"`
38 Text string `xml:",chardata"`
39 Reject string `xml:"reject"`
42 Text string `xml:",chardata"`
43 E2setupResponse struct {
44 Text string `xml:",chardata"`
46 Text string `xml:",chardata"`
47 E2setupResponseIEs []E2setupResponseIEs`xml:"E2setupResponseIEs"`
49 } `xml:"E2setupResponse"`
51 } `xml:"successfulOutcome"`
54 type E2setupResponseIEs struct {
55 Text string `xml:",chardata"`
58 Text string `xml:",chardata"`
59 Reject string `xml:"reject"`
61 Value interface{}`xml:"value"`
64 type GlobalRICID struct {
65 Text string `xml:",chardata"`
67 Text string `xml:",chardata"`
68 PLMNIdentity string `xml:"pLMN-Identity"`
69 RicID string `xml:"ric-ID"`
70 } `xml:"GlobalRIC-ID"`
73 type RANfunctionsIDList struct {
74 Text string `xml:",chardata"`
75 RANfunctionsIDList struct {
76 Text string `xml:",chardata"`
77 ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"`
78 } `xml:"RANfunctionsID-List"`
81 type ProtocolIESingleContainer struct {
82 Text string `xml:",chardata"`
85 Text string `xml:",chardata"`
86 Ignore string `xml:"ignore"`
89 Text string `xml:",chardata"`
90 RANfunctionIDItem struct {
91 Text string `xml:",chardata"`
92 RanFunctionID string `xml:"ranFunctionID"`
93 RanFunctionRevision string `xml:"ranFunctionRevision"`
94 } `xml:"RANfunctionID-Item"`
98 func NewE2SetupSuccessResponseMessage(plmnId string, ricId string, request *E2SetupRequestMessage) E2SetupSuccessResponseMessage{
99 msg := E2SetupSuccessResponseMessage{}
100 msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs = make([]E2setupResponseIEs, 2)
101 msg.E2APPDU.SuccessfulOutcome.ProcedureCode = "1"
102 msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].ID = "4"
103 msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].Value = GlobalRICID{GlobalRICID: struct {
104 Text string `xml:",chardata"`
105 PLMNIdentity string `xml:"pLMN-Identity"`
106 RicID string `xml:"ric-ID"`
107 }{PLMNIdentity:plmnId, RicID:ricId}}
108 msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].ID = "9"
109 msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].Value = RANfunctionsIDList{RANfunctionsIDList: struct {
110 Text string `xml:",chardata"`
111 ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"`
112 }{ProtocolIESingleContainer:extractRanFunctionsIDList(request)}}
116 func extractRanFunctionsIDList(request *E2SetupRequestMessage) []ProtocolIESingleContainer{
117 list := &request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList
118 ids := make([]ProtocolIESingleContainer,len(list.ProtocolIESingleContainer))
119 for i := 0; i< len(ids); i++{
120 ids[i] = convertToRANfunctionID(list, i)
125 func convertToRANfunctionID(list *RANfunctionsList, i int) ProtocolIESingleContainer{
126 id := ProtocolIESingleContainer{}
128 id.Value.RANfunctionIDItem.RanFunctionID = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionID
129 id.Value.RANfunctionIDItem.RanFunctionRevision = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionRevision