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