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 ==================================================================================
22 * Created on: Apr, 2020
23 * Author: Shraboni Jana
25 /* Classes to handle E2 service model based on e2sm-HelloWorld-v001.asn */
26 #include "e2sm_control.hpp"
29 HWControlMessage::HWControlMessage(void){
31 memset(&_message_fmt1, 0, sizeof(E2SM_HelloWorld_ControlMessage_Format1_t));
34 _message = (E2SM_HelloWorld_ControlMessage_t*)calloc(1, sizeof(E2SM_HelloWorld_ControlMessage_t));
41 HWControlHeader::HWControlHeader(void){
43 memset(&_header_fmt1, 0, sizeof(E2SM_HelloWorld_ControlHeader_Format1_t));
46 _header = ( E2SM_HelloWorld_ControlHeader_t *)calloc(1, sizeof( E2SM_HelloWorld_ControlHeader_t));
53 HWControlMessage::~HWControlMessage(void){
55 mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory");
56 _message->choice.controlMessage_Format1 = 0;
57 ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_ControlMessage, _message);
61 HWControlHeader::~HWControlHeader(void){
63 mdclog_write(MDCLOG_DEBUG, "Freeing event trigger object memory");
64 _header->choice.controlHeader_Format1 = 0;
65 ASN_STRUCT_FREE(asn_DEF_E2SM_HelloWorld_ControlHeader, _header);
68 bool HWControlHeader::encode(unsigned char *buf, size_t *size){
70 ASN_STRUCT_RESET(asn_DEF_E2SM_HelloWorld_ControlHeader, _header);
73 res = setfields(_header);
79 int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_ControlHeader, _header, _errbuf, &_errbuf_len);
81 _error_string.assign(&_errbuf[0], _errbuf_len);
85 xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_ControlHeader, _header);
87 asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_ControlHeader, _header, buf, *size);
89 if(retval.encoded == -1){
90 _error_string.assign(strerror(errno));
93 else if (retval.encoded > *size){
95 ss <<"Error encoding event trigger definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl;
96 _error_string = ss.str();
100 *size = retval.encoded;
106 bool HWControlMessage::encode(unsigned char *buf, size_t *size){
109 res = setfields(_message);
114 int ret_constr = asn_check_constraints(&asn_DEF_E2SM_HelloWorld_ControlMessage, _message, _errbuf, &_errbuf_len);
116 _error_string.assign(&_errbuf[0], _errbuf_len);
120 xer_fprint(stdout, &asn_DEF_E2SM_HelloWorld_ControlMessage, _message);
122 asn_enc_rval_t retval = asn_encode_to_buffer(0, ATS_ALIGNED_BASIC_PER, &asn_DEF_E2SM_HelloWorld_ControlMessage, _message, buf, *size);
124 if(retval.encoded == -1){
125 _error_string.assign(strerror(errno));
128 else if (retval.encoded > *size){
129 std::stringstream ss;
130 ss <<"Error encoding action definition. Reason = encoded pdu size " << retval.encoded << " exceeds buffer size " << *size << std::endl;
131 _error_string = ss.str();
135 *size = retval.encoded;
141 bool HWControlHeader::setfields(E2SM_HelloWorld_ControlHeader_t * _header){
144 _error_string = "Invalid reference for Event Trigger Definition set fields";
148 _header->present = E2SM_HelloWorld_ControlHeader_PR_controlHeader_Format1;
149 _header_fmt1.controlHeaderParam = this->get_hw_header();
150 _header->choice.controlHeader_Format1 = &_header_fmt1;
155 bool HWControlMessage::setfields(E2SM_HelloWorld_ControlMessage_t * _message){
158 _error_string = "Invalid reference for Event Action Definition set fields";
161 _message->present = E2SM_HelloWorld_ControlMessage_PR_controlMessage_Format1;
163 _message_fmt1.controlMsgParam.buf = this->get_hw_message();
164 _message_fmt1.controlMsgParam.size = this->get_hw_message_size();
165 _message->choice.controlMessage_Format1 = &_message_fmt1;