E2AP Wrapper Implementation
[ric-app/hw.git] / src / xapp-asn / e2ap / e2ap_subscription_response.hpp
1 /*
2 ==================================================================================
3
4         Copyright (c) 2019-2020 AT&T Intellectual Property.
5
6    Licensed under the Apache License, Version 2.0 (the "License");
7    you may not use this file except in compliance with the License.
8    You may obtain a copy of the License at
9
10        http://www.apache.org/licenses/LICENSE-2.0
11
12    Unless required by applicable law or agreed to in writing, software
13    distributed under the License is distributed on an "AS IS" BASIS,
14    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15    See the License for the specific language governing permissions and
16    limitations under the License.
17 ==================================================================================
18 */
19 /*
20  * e2ap_subscription_response.hpp
21  *
22  *  Created on: Nov 1, 2020
23  *      Author: Shraboni Jana
24  */
25
26 #ifndef SRC_XAPP_ASN_E2AP_SUBSCRIPTION_RESPONSE_HPP_
27 #define SRC_XAPP_ASN_E2AP_SUBSCRIPTION_RESPONSE_HPP_
28 /*-- **************************************************************
29 --
30 -- RIC SUBSCRIPTION RESPONSE
31 --
32 -- **************************************************************
33 RICsubscriptionResponse ::= SEQUENCE {
34         protocolIEs                                     ProtocolIE-Container{{RICsubscriptionResponse-IEs}},
35         ...
36 }
37
38 RICsubscriptionResponse-IEs E2AP-PROTOCOL-IES ::= {
39         { ID id-RICrequestID                            CRITICALITY reject              TYPE RICrequestID                               PRESENCE mandatory } |
40         { ID id-RANfunctionID                           CRITICALITY reject              TYPE RANfunctionID                              PRESENCE mandatory } |
41         { ID id-RICactions-Admitted                     CRITICALITY reject              TYPE RICaction-Admitted-List    PRESENCE mandatory } |
42         { ID id-RICactions-NotAdmitted          CRITICALITY reject              TYPE RICaction-NotAdmitted-List PRESENCE optional },
43         ...
44 }
45
46
47
48 RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-SingleContainer{{RICaction-Admitted-ItemIEs}}
49
50 RICaction-Admitted-ItemIEs E2AP-PROTOCOL-IES ::= {
51         { ID id-RICaction-Admitted-Item         CRITICALITY ignore              TYPE RICaction-Admitted-Item    PRESENCE mandatory },
52         ...
53 }
54
55 RICaction-Admitted-Item ::= SEQUENCE {
56         ricActionID                                     RICactionID,
57         ...
58 }
59
60 RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-SingleContainer { {RICaction-NotAdmitted-ItemIEs} }
61
62 RICaction-NotAdmitted-ItemIEs E2AP-PROTOCOL-IES ::= {
63         { ID id-RICaction-NotAdmitted-Item      CRITICALITY ignore      TYPE RICaction-NotAdmitted-Item         PRESENCE mandatory },
64         ...
65 }
66
67 RICaction-NotAdmitted-Item ::= SEQUENCE {
68         ricActionID                                     RICactionID,
69         cause                                           Cause,
70         ...
71 }*/
72 #include <mdclog/mdclog.h>
73 #include <vector>
74 #include <iostream>
75 #include <sstream>
76 #include <memory>
77 #include <E2AP-PDU.h>
78 #include <SuccessfulOutcome.h>
79 #include <ProtocolIE-Field.h>
80 #include <ProcedureCode.h>
81 #include "e2ap_consts.hpp"
82 #include "e2ap_action.hpp"
83 class E2APSubscriptionResponse {
84 public:
85
86         class SubscriptionResponseIEs{
87                 private:
88                          long int ricRequestorID, ricInstanceID, ranFunctionID;
89                          RICactionNotAdmittedList *ricActionNotAdmittedlst;
90                          RICactionAdmittedList *ricActionAdmittedlst;
91                          bool is_ricActionAdmitlst;
92                          bool is_ricActionNotAdmitlst;
93                 public:
94                          SubscriptionResponseIEs(void):ricRequestorID(0), ricInstanceID(0),ranFunctionID(0),ricActionNotAdmittedlst(0),ricActionAdmittedlst(0),is_ricActionAdmitlst(false),is_ricActionNotAdmitlst(false){};
95
96                          SubscriptionResponseIEs& set_ricRequestorID(long int req_id){ricRequestorID = req_id; return *this;};
97                          SubscriptionResponseIEs& set_ranFunctionID(long int func_id){ranFunctionID = func_id; return *this;};
98                          SubscriptionResponseIEs& set_ricInstanceID(long int inst_id){ricInstanceID = inst_id; return *this;};
99                          SubscriptionResponseIEs& set_actionsAdmitted_list(RICactionAdmittedList &lstobj){ricActionAdmittedlst= &lstobj;is_ricActionAdmitlst=true;  return *this;};
100                          SubscriptionResponseIEs& set_actionsNotAdmitted_list(RICactionNotAdmittedList &lstobj){ricActionNotAdmittedlst= &lstobj; is_ricActionNotAdmitlst = true; return *this;};
101
102                          long int get_ricInstanceID(){return this->ricInstanceID;};
103                          long int get_ricRequestorID(){return this->ricRequestorID;};
104                          long int get_ranFunctionID(){return this->ranFunctionID;};
105                          bool get_is_ricActionNotAdmitlst(){return this->is_ricActionNotAdmitlst;};
106                          bool get_is_ricActionAdmitlst(){return this->is_ricActionAdmitlst;};
107                          RICactionAdmittedList& get_actionsAdmitted_list()  {return *(this->ricActionAdmittedlst);};
108                          RICactionNotAdmittedList& get_actionsNotAdmitted_list()  {return *(this->ricActionNotAdmittedlst);};
109
110         };
111
112         E2APSubscriptionResponse(SubscriptionResponseIEs&);
113         E2APSubscriptionResponse(unsigned char *, size_t *);
114         ~E2APSubscriptionResponse();
115         bool encode(unsigned char *, size_t * );
116         bool decode(unsigned char*, size_t *);
117         std::string  get_error (void) const {return _error_string ;};
118         SubscriptionResponseIEs& getIEs(){ return *_responseIEs.get();};
119
120
121 private:
122
123         bool setfields(SuccessfulOutcome_t *);
124
125         SuccessfulOutcome_t * _successMsg;
126         E2AP_PDU_t * _e2ap_pdu_obj;
127         RICsubscriptionResponse_IEs_t * IE_array;
128         RICaction_Admitted_ItemIEs_t * ie_admitted_list;
129         RICaction_NotAdmitted_ItemIEs_t * ie_not_admitted_list;
130
131         RICactionAdmittedList _admitlst;
132         RICactionNotAdmittedList _notadmitlst;
133         std::unique_ptr<SubscriptionResponseIEs> _responseIEs;
134
135
136         std::string _error_string;
137     char _errbuf[ERR_LEN];
138         size_t _errbuf_len = ERR_LEN;
139
140 };
141
142
143
144
145 #endif /* SRC_XAPP_ASN_E2AP_SUBSCRIPTION_RESPONSE_HPP_ */