E2AP Wrapper Implementation
[ric-app/hw.git] / src / xapp-asn / e2ap / e2ap_criticality_diagnostics.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_criticality_diagnostics.hpp
21  *
22  *  Created on: Oct 29, 2020
23  *      Author: Shraboni Jana
24  */
25 /*
26 -- **************************************************************
27 -- copied from 3GPP 38.413 NGAP IEs v15.5.0
28 -- note: ie-Extensions removed
29 -- **************************************************************
30 CriticalityDiagnostics ::= SEQUENCE {
31         procedureCode                                   ProcedureCode                                                   OPTIONAL,
32         triggeringMessage                               TriggeringMessage                                               OPTIONAL,
33         procedureCriticality                    Criticality                                                             OPTIONAL,
34         ricRequestorID                                  RICrequestID                                                    OPTIONAL,
35         iEsCriticalityDiagnostics               CriticalityDiagnostics-IE-List                  OPTIONAL,
36         ...
37 }
38
39 CriticalityDiagnostics-IE-List ::= SEQUENCE (SIZE(1..maxnoofErrors)) OF CriticalityDiagnostics-IE-Item
40
41 CriticalityDiagnostics-IE-Item ::= SEQUENCE {
42         iECriticality           Criticality,
43         iE-ID                           ProtocolIE-ID,
44         typeOfError                     TypeOfError,
45         ...
46 }
47  *
48  */
49
50 #ifndef SRC_XAPP_ASN_E2AP_E2AP_CRITICALITY_DIAGNOSTICS_HPP_
51 #define SRC_XAPP_ASN_E2AP_E2AP_CRITICALITY_DIAGNOSTICS_HPP_
52
53 #include <mdclog/mdclog.h>
54
55 #include <string>
56 #include <memory>
57 #include <sstream>
58 #include <vector>
59
60 #include "e2ap_consts.hpp"
61
62
63 class CriticalityDiagnosticsIEs{
64                         unsigned int typeOferror,iEcriticality;
65                         long int ieID;
66
67
68                 public:
69                         CriticalityDiagnosticsIEs():typeOferror(0), ieID(0), iEcriticality(0){};
70                         CriticalityDiagnosticsIEs& set_typeOferror(unsigned int typ_err){this->typeOferror = typ_err; return *this;};
71                         CriticalityDiagnosticsIEs& set_ieID(long int ieID){this->ieID = ieID; return *this;};
72                         CriticalityDiagnosticsIEs& set_iEcriticality(unsigned int crit){this->iEcriticality =crit; return *this;}
73
74                         unsigned int get_typeOferror(){return this->typeOferror;};
75                         unsigned int get_iEcriticality(){return this->iEcriticality;};
76                         long int get_ieID(){return this->ieID;};
77
78
79 };
80
81 class E2APCriticalityDiagnostics{
82
83         private:
84
85                 long int procedureCode,ricRequestorID, ricInstanceID;
86                 unsigned int triggeringMessage,procedureCriticality;
87                 bool is_criticalityDiagnostics_list;
88                 std::unique_ptr<std::vector<CriticalityDiagnosticsIEs>> _ref_list;
89                 int _count_list;
90
91         public:
92
93         E2APCriticalityDiagnostics():procedureCode(0),ricRequestorID(0),ricInstanceID(0),triggeringMessage(0), procedureCriticality(0),is_criticalityDiagnostics_list(false)
94         { _ref_list = std::make_unique<std::vector<CriticalityDiagnosticsIEs>>(); _count_list = 0;};
95
96         std::vector<CriticalityDiagnosticsIEs> * get_list() const {return _ref_list.get();};
97         int get_list_count() {return _count_list;};
98
99         void add(CriticalityDiagnosticsIEs &ieObj) { _ref_list.get()->push_back(ieObj); _count_list++;};
100         void add(std::vector<CriticalityDiagnosticsIEs> &obj){ *(_ref_list.get()) = obj; _count_list = obj.size();};
101
102         long int get_procedureCode(){return this->procedureCode;};
103         long int get_ricRequestorID(){return this->ricRequestorID;};
104         long int get_ricInstanceID(){return this->ricInstanceID;};
105         unsigned int get_triggeringMessage(){return this->triggeringMessage;};
106         unsigned int get_procedureCriticality(){return this->procedureCriticality;};
107         bool get_is_criticalityDiagnostics_list(){if(this->get_list_count()>0) {is_criticalityDiagnostics_list = true;} return this->is_criticalityDiagnostics_list; };
108
109         E2APCriticalityDiagnostics& set_procedureCode(long int proc_code){this->procedureCode = proc_code; return *this;};
110         E2APCriticalityDiagnostics& set_ricRequestorID(long int req_id){this->ricRequestorID = req_id; return *this;};
111         E2APCriticalityDiagnostics& set_ricInstanceID(long int inst_id){this->ricInstanceID = inst_id; return *this;};
112
113         E2APCriticalityDiagnostics& set_triggeringMessage(unsigned int trigMsg){this->triggeringMessage = trigMsg; return *this;};
114         E2APCriticalityDiagnostics& set_procedureCriticality(unsigned int pvalue){this->triggeringMessage = pvalue; return *this;};
115         E2APCriticalityDiagnostics& set_iEsCriticalityDiagnostics(unsigned int pvalue){this->triggeringMessage = pvalue; return *this;};
116
117
118 };
119
120
121
122
123 #endif /* SRC_XAPP_ASN_E2AP_E2AP_CRITICALITY_DIAGNOSTICS_HPP_ */