2 ==================================================================================
4 Copyright (c) 2019-2020 AT&T Intellectual Property.
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
10 http://www.apache.org/licenses/LICENSE-2.0
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 ==================================================================================
20 * e2ap_control_failure.hpp
22 * Author: Shraboni Jana
25 -- **************************************************************
27 -- RIC CONTROL FAILURE
29 -- **************************************************************
30 RICcontrolFailure ::= SEQUENCE {
31 protocolIEs ProtocolIE-Container {{RICcontrolFailure-IEs}},
35 RICcontrolFailure-IEs E2AP-PROTOCOL-IES ::= {
36 { ID id-RICrequestID CRITICALITY reject TYPE RICrequestID PRESENCE mandatory }|
37 { ID id-RANfunctionID CRITICALITY reject TYPE RANfunctionID PRESENCE mandatory }|
38 { ID id-RICcallProcessID CRITICALITY reject TYPE RICcallProcessID PRESENCE optional }|
39 { ID id-Cause CRITICALITY ignore TYPE Cause PRESENCE mandatory } |
40 { ID id-RICcontrolOutcome CRITICALITY reject TYPE RICcontrolOutcome PRESENCE optional },
46 #ifndef SRC_XAPP_ASN_E2AP_E2AP_CONTROL_FAILURE_HPP_
47 #define SRC_XAPP_ASN_E2AP_E2AP_CONTROL_FAILURE_HPP_
51 #include <mdclog/mdclog.h>
55 #include <UnsuccessfulOutcome.h>
56 #include <RICcontrolFailure.h>
57 #include <ProtocolIE-Field.h>
58 #include "e2ap_consts.hpp"
61 class E2APControlFailure{
64 class ControlFailureIEs{
66 long int ricRequestorID , ricInstanceID, ranFunctionID, ricCallProcessID, ricCause, ricSubCause;
68 unsigned char ricCallProcessId[IE_SIZE];
69 size_t ricCallProcessId_size = IE_SIZE;
70 bool is_ricCallProcessId;
71 unsigned char ricControlOutcome[IE_SIZE];
72 size_t ricControlOutcome_size = IE_SIZE;
73 bool is_ricControlOutcome;
76 ControlFailureIEs(void):ricRequestorID(1), ricInstanceID(1),ranFunctionID(1), ricCallProcessID(0),ricCause(1),ricSubCause(1),is_ricControlOutcome(false),is_ricCallProcessId(false){};
77 void* get_ricCallProcessId(){return this->ricCallProcessId;};
78 size_t get_ricCallProcessId_size(){return this->ricCallProcessId_size;};
80 void* get_ricControlOutcome(){return this->ricControlOutcome;};
81 size_t get_ricControlOutcome_size(){return this->ricControlOutcome_size;};
83 long int get_ricRequestorID(){return this->ricRequestorID;};
84 long int get_ricInstanceID(){return this->ricInstanceID;};
85 long int get_ranFunctionID(){return this->ranFunctionID;};
86 long int get_ricCause(){return this->ricCause;};
87 long int get_ricSubCause(){return this->ricCause;};
90 bool get_is_ricCallProcessId(){return is_ricCallProcessId;};
91 bool get_is_ricControlOutcome(){return is_ricControlOutcome;};
94 ControlFailureIEs& set_ricCallProcessID(std::string strCallProcID){
95 is_ricCallProcessId = true; ricCallProcessId_size = strlen(strCallProcID.c_str());
96 memcpy((char*)ricCallProcessId, strCallProcID.c_str(), ricCallProcessId_size);
99 ControlFailureIEs& set_ricCallProcessID(unsigned char* callproc, size_t callproc_size){
100 is_ricCallProcessId = true;
101 memcpy(ricCallProcessId, callproc, callproc_size); ricCallProcessId_size = callproc_size;
106 ControlFailureIEs& set_ricControlOutcome(std::string strOutcome){
107 is_ricControlOutcome = true; ricControlOutcome_size = strlen(strOutcome.c_str());
108 memcpy((char*)ricControlOutcome, strOutcome.c_str(), ricControlOutcome_size);
111 ControlFailureIEs& set_ricControlOutcome(unsigned char* callproc, size_t callproc_size){
112 is_ricControlOutcome = true;
113 memcpy(ricControlOutcome, callproc, callproc_size); ricControlOutcome_size = callproc_size;
118 ControlFailureIEs& set_ricRequestorID(long int reqID){this->ricRequestorID = reqID; return *this;}
119 ControlFailureIEs& set_ricCause(long int cause){this->ricCause = cause; return *this;}
120 ControlFailureIEs& set_ricSubCause(long int cause){this->ricCause = cause; return *this;}
122 ControlFailureIEs& set_ricInstanceID(long int reqID){this->ricInstanceID = reqID; return *this;}
123 ControlFailureIEs& set_ranFunctionID(long int funcID){this->ranFunctionID = funcID; return *this;}
126 E2APControlFailure(ControlFailureIEs &);
127 E2APControlFailure(unsigned char *, size_t *);
128 ~E2APControlFailure(void);
129 bool encode(unsigned char *, size_t *);
130 bool decode(unsigned char *, size_t *);
131 ControlFailureIEs& getIEs(){ return *_cntrlIEs.get();};
132 std::string get_error(void) const {return _error_string ; };
135 E2AP_PDU_t * _e2ap_pdu_obj;
136 UnsuccessfulOutcome_t * _unsuccessMsg;
137 RICcontrolFailure_IEs_t *IE_array;
138 std::string _error_string;
139 bool setfields(UnsuccessfulOutcome_t *);
140 std::unique_ptr<ControlFailureIEs> _cntrlIEs;
142 size_t _errbuf_len = IE_SIZE;
151 #endif /* SRC_XAPP_ASN_E2AP_E2AP_CONTROL_FAILURE_HPP_ */