Merge R4 branch to master
[ric-plt/e2mgr.git] / E2Manager / models / e2_setup_request_message.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
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
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
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.
16
17 //  This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 //  platform project (RICP).
19
20 package models
21
22 import (
23         "encoding/xml"
24         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
25 )
26
27 type E2SetupRequestMessage struct {
28         XMLName xml.Name `xml:"E2SetupRequestMessage"`
29         Text    string   `xml:",chardata"`
30         E2APPDU struct {
31                 Text              string `xml:",chardata"`
32                 InitiatingMessage struct {
33                         Text          string `xml:",chardata"`
34                         ProcedureCode string `xml:"procedureCode"`
35                         Criticality   struct {
36                                 Text   string `xml:",chardata"`
37                                 Reject string `xml:"reject"`
38                         } `xml:"criticality"`
39                         Value struct {
40                                 Text           string `xml:",chardata"`
41                                 E2setupRequest struct {
42                                         Text        string `xml:",chardata"`
43                                         ProtocolIEs struct {
44                                                 Text              string `xml:",chardata"`
45                                                 E2setupRequestIEs []struct {
46                                                         Text        string `xml:",chardata"`
47                                                         ID          string `xml:"id"`
48                                                         Criticality struct {
49                                                                 Text   string `xml:",chardata"`
50                                                                 Reject string `xml:"reject"`
51                                                         } `xml:"criticality"`
52                                                         Value struct {
53                                                                 Text           string `xml:",chardata"`
54                                                                 GlobalE2nodeID struct {
55                                                                         Text string `xml:",chardata"`
56                                                                         GNB  struct {
57                                                                                 Text        string `xml:",chardata"`
58                                                                                 GlobalGNBID struct {
59                                                                                         Text   string `xml:",chardata"`
60                                                                                         PlmnID string `xml:"plmn-id"`
61                                                                                         GnbID  struct {
62                                                                                                 Text  string `xml:",chardata"`
63                                                                                                 GnbID string `xml:"gnb-ID"`
64                                                                                         } `xml:"gnb-id"`
65                                                                                 } `xml:"global-gNB-ID"`
66                                                                         } `xml:"gNB"`
67                                                                         EnGNB struct {
68                                                                                 Text        string `xml:",chardata"`
69                                                                                 GlobalGNBID struct {
70                                                                                         Text   string `xml:",chardata"`
71                                                                                         PlmnID string `xml:"plmn-id"`
72                                                                                         GnbID  struct {
73                                                                                                 Text  string `xml:",chardata"`
74                                                                                                 GnbID string `xml:"gnb-ID"`
75                                                                                         } `xml:"gnb-id"`
76                                                                                 } `xml:"global-gNB-ID"`
77                                                                         } `xml:"en-gNB"`
78                                                                         NgENB struct {
79                                                                                 Text          string `xml:",chardata"`
80                                                                                 GlobalNgENBID struct {
81                                                                                         Text   string `xml:",chardata"`
82                                                                                         PlmnID string `xml:"plmn-id"`
83                                                                                         GnbID  struct {
84                                                                                                 Text  string `xml:",chardata"`
85                                                                                                 GnbID string `xml:"gnb-ID"`
86                                                                                         } `xml:"gnb-id"`
87                                                                                 } `xml:"global-ng-eNB-ID"`
88                                                                         } `xml:"ng-eNB"`
89                                                                         ENB struct {
90                                                                                 Text        string `xml:",chardata"`
91                                                                                 GlobalENBID struct {
92                                                                                         Text   string `xml:",chardata"`
93                                                                                         PlmnID string `xml:"plmn-id"`
94                                                                                         GnbID  struct {
95                                                                                                 Text  string `xml:",chardata"`
96                                                                                                 GnbID string `xml:"gnb-ID"`
97                                                                                         } `xml:"gnb-id"`
98                                                                                 } `xml:"global-eNB-ID"`
99                                                                         } `xml:"eNB"`
100                                                                 } `xml:"GlobalE2node-ID"`
101                                                                 RANfunctionsList struct {
102                                                                         Text                      string `xml:",chardata"`
103                                                                         ProtocolIESingleContainer []struct {
104                                                                                 Text        string `xml:",chardata"`
105                                                                                 ID          string `xml:"id"`
106                                                                                 Criticality struct {
107                                                                                         Text   string `xml:",chardata"`
108                                                                                         Reject string `xml:"reject"`
109                                                                                 } `xml:"criticality"`
110                                                                                 Value struct {
111                                                                                         Text            string `xml:",chardata"`
112                                                                                         RANfunctionItem struct {
113                                                                                                 Text                  string `xml:",chardata"`
114                                                                                                 RanFunctionID         string `xml:"ranFunctionID"`
115                                                                                                 RanFunctionDefinition string `xml:"ranFunctionDefinition"`
116                                                                                                 RanFunctionRevision   string `xml:"ranFunctionRevision"`
117                                                                                         } `xml:"RANfunction-Item"`
118                                                                                 } `xml:"value"`
119                                                                         } `xml:"ProtocolIE-SingleContainer"`
120                                                                 } `xml:"RANfunctions-List"`
121                                                         } `xml:"value"`
122                                                 } `xml:"E2setupRequestIEs"`
123                                         } `xml:"protocolIEs"`
124                                 } `xml:"E2setupRequest"`
125                         } `xml:"value"`
126                 } `xml:"initiatingMessage"`
127         } `xml:"E2AP-PDU"`
128 }
129
130 func (m *E2SetupRequestMessage) GetNodeType() entities.Node_Type{
131         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.PlmnID; id!= ""{
132                 return entities.Node_GNB
133         }
134         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.PlmnID; id!= ""{
135                 return entities.Node_GNB
136         }
137         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.PlmnID; id!= ""{
138                 return entities.Node_ENB
139         }
140         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.PlmnID; id!= ""{
141                 return entities.Node_GNB
142         }
143         return entities.Node_UNKNOWN
144 }
145
146 func (m *E2SetupRequestMessage) GetPlmnId() string{
147         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.PlmnID; id!= ""{
148                 return id
149         }
150         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.PlmnID; id!= ""{
151                 return id
152         }
153         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.PlmnID; id!= ""{
154                 return id
155         }
156         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.PlmnID; id!= ""{
157                 return id
158         }
159         return ""
160 }
161
162 func (m *E2SetupRequestMessage) GetNbId() string{
163         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.GNB.GlobalGNBID.GnbID.GnbID; id!= ""{
164                 return id
165         }
166         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.EnGNB.GlobalGNBID.GnbID.GnbID; id!= ""{
167                 return id
168         }
169         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.ENB.GlobalENBID.GnbID.GnbID; id!= ""{
170                 return id
171         }
172         if id := m.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[0].Value.GlobalE2nodeID.NgENB.GlobalNgENBID.GnbID.GnbID; id!= ""{
173                 return id
174         }
175         return ""
176 }