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).
26 "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
30 type E2SetupRequestMessage struct {
31 XMLName xml.Name `xml:"E2SetupRequestMessage"`
32 Text string `xml:",chardata"`
34 Text string `xml:",chardata"`
35 InitiatingMessage struct {
36 Text string `xml:",chardata"`
37 ProcedureCode string `xml:"procedureCode"`
39 Text string `xml:",chardata"`
40 Reject string `xml:"reject"`
43 Text string `xml:",chardata"`
44 E2setupRequest struct {
45 Text string `xml:",chardata"`
47 Text string `xml:",chardata"`
48 E2setupRequestIEs []struct {
49 Text string `xml:",chardata"`
52 Text string `xml:",chardata"`
53 Reject string `xml:"reject"`
56 Text string `xml:",chardata"`
57 GlobalE2nodeID struct {
58 Text string `xml:",chardata"`
60 Text string `xml:",chardata"`
62 Text string `xml:",chardata"`
63 PlmnID string `xml:"plmn-id"`
65 Text string `xml:",chardata"`
66 GnbID string `xml:"gnb-ID"`
68 } `xml:"global-gNB-ID"`
71 Text string `xml:",chardata"`
73 Text string `xml:",chardata"`
74 PlmnID string `xml:"plmn-id"`
76 Text string `xml:",chardata"`
77 GnbID string `xml:"gnb-ID"`
79 } `xml:"global-gNB-ID"`
82 Text string `xml:",chardata"`
83 GlobalNgENBID struct {
84 Text string `xml:",chardata"`
85 PlmnID string `xml:"plmn-id"`
87 Text string `xml:",chardata"`
88 GnbID string `xml:"gnb-ID"`
90 } `xml:"global-ng-eNB-ID"`
93 Text string `xml:",chardata"`
95 Text string `xml:",chardata"`
96 PlmnID string `xml:"plmn-id"`
98 Text string `xml:",chardata"`
99 GnbID string `xml:"gnb-ID"`
101 } `xml:"global-eNB-ID"`
103 } `xml:"GlobalE2node-ID"`
104 RANfunctionsList RANfunctionsList `xml:"RANfunctions-List"`
106 } `xml:"E2setupRequestIEs"`
107 } `xml:"protocolIEs"`
108 } `xml:"E2setupRequest"`
110 } `xml:"initiatingMessage"`
114 type RANfunctionsList struct {
115 Text string `xml:",chardata"`
116 ProtocolIESingleContainer []struct {
117 Text string `xml:",chardata"`
120 Text string `xml:",chardata"`
121 Reject string `xml:"reject"`
122 } `xml:"criticality"`
124 Text string `xml:",chardata"`
125 RANfunctionItem struct {
126 Text string `xml:",chardata"`
127 RanFunctionID string `xml:"ranFunctionID"`
128 RanFunctionDefinition string `xml:"ranFunctionDefinition"`
129 RanFunctionRevision string `xml:"ranFunctionRevision"`
130 } `xml:"RANfunction-Item"`
132 } `xml:"ProtocolIE-SingleContainer"`
135 func (m *E2SetupRequestMessage) GetExtractRanFunctionsList()([]*entities.RanFunction, error){
136 list :=m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList.ProtocolIESingleContainer
137 funcs := make([]*entities.RanFunction, len(list))
138 for i:=0; i < len(funcs); i++{
139 funcs[i] = &entities.RanFunction{}
140 id, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionID, 10, 32)
142 return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.GetExtractRanFunctionsList - Failed parse uint RanFunctionID from %s", list[i].Value.RANfunctionItem.RanFunctionID))
144 funcs[i].RanFunctionId = uint32(id)
145 rev, err := strconv.ParseUint(list[i].Value.RANfunctionItem.RanFunctionRevision, 10, 32)
147 return nil, errors.New(fmt.Sprintf("#e2_setup_request_message.GetExtractRanFunctionsList - Failed parse uint RanFunctionRevision from %s", list[i].Value.RANfunctionItem.RanFunctionRevision))
149 funcs[i].RanFunctionDefinition = list[i].Value.RANfunctionItem.RanFunctionDefinition
150 funcs[i].RanFunctionRevision = uint32(rev)
155 func (m *E2SetupRequestMessage) GetNodeType() entities.Node_Type{
156 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.PlmnID; id!= ""{
157 return entities.Node_GNB
159 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.PlmnID; id!= ""{
160 return entities.Node_GNB
162 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.PlmnID; id!= ""{
163 return entities.Node_ENB
165 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.PlmnID; id!= ""{
166 return entities.Node_GNB
168 return entities.Node_UNKNOWN
171 func (m *E2SetupRequestMessage) GetPlmnId() string{
172 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.PlmnID; id!= ""{
175 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.PlmnID; id!= ""{
178 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.PlmnID; id!= ""{
181 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.PlmnID; id!= ""{
187 func (m *E2SetupRequestMessage) GetNbId() string{
188 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.GnbID.GnbID; id!= ""{
191 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.GnbID.GnbID; id!= ""{
194 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.GnbID.GnbID; id!= ""{
197 if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.GnbID.GnbID; id!= ""{