52239bebcc5fa5d3b25f5741c74f0cb1e2524688
[ric-plt/e2mgr.git] / E2Manager / models / e2_setup_success_response_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 import (
22         "encoding/xml"
23 )
24
25 type E2SetupSuccessResponseMessage struct {
26         XMLName xml.Name `xml:"E2SetupSuccessResponseMessage"`
27         Text    string   `xml:",chardata"`
28         E2APPDU E2APPDU`xml:"E2AP-PDU"`
29 }
30
31 type E2APPDU struct {
32         Text              string `xml:",chardata"`
33         SuccessfulOutcome struct {
34                 Text          string `xml:",chardata"`
35                 ProcedureCode string `xml:"procedureCode"`
36                 Criticality   struct {
37                         Text   string `xml:",chardata"`
38                         Reject string `xml:"reject"`
39                 } `xml:"criticality"`
40                 Value struct {
41                         Text            string `xml:",chardata"`
42                         E2setupResponse struct {
43                                 Text        string `xml:",chardata"`
44                                 ProtocolIEs struct {
45                                         Text               string `xml:",chardata"`
46                                         E2setupResponseIEs []E2setupResponseIEs`xml:"E2setupResponseIEs"`
47                                 } `xml:"protocolIEs"`
48                         } `xml:"E2setupResponse"`
49                 } `xml:"value"`
50         } `xml:"successfulOutcome"`
51 }
52
53 type E2setupResponseIEs struct {
54         Text        string `xml:",chardata"`
55         ID          string `xml:"id"`
56         Criticality struct {
57                 Text   string `xml:",chardata"`
58                 Reject string `xml:"reject"`
59         } `xml:"criticality"`
60         Value struct {
61                 Text        string `xml:",chardata"`
62                 GlobalRICID struct {
63                         Text         string `xml:",chardata"`
64                         PLMNIdentity string `xml:"pLMN-Identity"`
65                         RicID        string `xml:"ric-ID"`
66                 } `xml:"GlobalRIC-ID"`
67                 RANfunctionsIDList struct {
68                         Text                      string `xml:",chardata"`
69                         ProtocolIESingleContainer []ProtocolIESingleContainer `xml:"ProtocolIE-SingleContainer"`
70                 } `xml:"RANfunctionsID-List"`
71         } `xml:"value"`
72 }
73
74 type ProtocolIESingleContainer struct {
75         Text        string `xml:",chardata"`
76         ID          string `xml:"id"`
77         Criticality struct {
78                 Text   string `xml:",chardata"`
79                 Ignore string `xml:"ignore"`
80         } `xml:"criticality"`
81         Value struct {
82                 Text              string `xml:",chardata"`
83                 RANfunctionIDItem struct {
84                         Text                string `xml:",chardata"`
85                         RanFunctionID       string `xml:"ranFunctionID"`
86                         RanFunctionRevision string `xml:"ranFunctionRevision"`
87                 } `xml:"RANfunctionID-Item"`
88         } `xml:"value"`
89 }
90
91 func NewE2SetupSuccessResponseMessage() E2SetupSuccessResponseMessage{
92         msg := E2SetupSuccessResponseMessage{}
93         msg.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs = make([]E2setupResponseIEs, 2)
94         return msg
95 }
96
97 func (m *E2SetupSuccessResponseMessage) SetExtractRanFunctionsIDList(request *E2SetupRequestMessage) {
98         list := &request.E2APPDU.InitiatingMessage.Value.E2setupRequest.ProtocolIEs.E2setupRequestIEs[1].Value.RANfunctionsList
99         ids := make([]ProtocolIESingleContainer,len(list.ProtocolIESingleContainer))
100         for i := 0; i< len(ids); i++{
101                 ids[i] = m.convertToRANfunctionID(list, i)
102         }
103         m.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[1].Value.RANfunctionsIDList.ProtocolIESingleContainer = ids
104 }
105
106 func (m *E2SetupSuccessResponseMessage) convertToRANfunctionID(list *RANfunctionsList, i int) ProtocolIESingleContainer{
107         id := ProtocolIESingleContainer{}
108         id.Value.RANfunctionIDItem.RanFunctionID = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionID
109         id.Value.RANfunctionIDItem.RanFunctionRevision = list.ProtocolIESingleContainer[i].Value.RANfunctionItem.RanFunctionRevision
110         return id
111 }
112
113 func (m *E2SetupSuccessResponseMessage) SetPlmnId(plmnId string){
114         m.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].Value.GlobalRICID.PLMNIdentity = plmnId
115 }
116
117 func (m *E2SetupSuccessResponseMessage) SetRicId(ricId string){
118         m.E2APPDU.SuccessfulOutcome.Value.E2setupResponse.ProtocolIEs.E2setupResponseIEs[0].Value.GlobalRICID.RicID = ricId
119 }