X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fe2-interface.git;a=blobdiff_plain;f=e2sim%2Fprevious%2Fe2apv1sim%2Ftest%2FPendulum%2FPendulum_asn_codec.c;fp=e2sim%2Fprevious%2Fe2apv1sim%2Ftest%2FPendulum%2FPendulum_asn_codec.c;h=0000000000000000000000000000000000000000;hp=9b44adf1e4fa60b4c4fbcc7ac2b2d4c79193563f;hb=f86662b5b6481f27e18313a36355871f3a947193;hpb=a9f02a2b5886990fd81e64f7c218c5d4844f18a3 diff --git a/e2sim/previous/e2apv1sim/test/Pendulum/Pendulum_asn_codec.c b/e2sim/previous/e2apv1sim/test/Pendulum/Pendulum_asn_codec.c deleted file mode 100644 index 9b44adf..0000000 --- a/e2sim/previous/e2apv1sim/test/Pendulum/Pendulum_asn_codec.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * - * Copyright 2019 AT&T Intellectual Property - * Copyright 2019 Nokia - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "Pendulum_asn_codec.h" -#include "per_decoder.h" -#include "per_encoder.h" - -#include "OCTET_STRING.h" - -static int ASN_DEBUG = 0; - -int pendulum_asn_encode(Pendulum_t *pend, uint8_t **buffer, uint32_t *len) -{ - ssize_t encoded; - assert(pend != NULL); - assert(buffer != NULL); - - encoded = aper_encode_to_new_buffer(&asn_DEF_Pendulum, 0, pend, (void **)buffer); - if(encoded < 0){ - perror("Failed to aper encode\n"); - exit(1); - } - - *len = encoded; - //ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_Pendulum, pend); - return encoded; -} - -int pendulum_asn_decode(Pendulum_t *pend, const uint8_t *const buffer, const int len) -{ - asn_dec_rval_t dec_ret; - - // THIS IS IMPORTANT, otherwise: Segmentation fault - memset(pend, 0, sizeof(*pend)); - - assert(buffer != NULL); - - dec_ret = aper_decode(NULL, &asn_DEF_Pendulum, (void **)&pend, buffer, len, 0, 0); - if (dec_ret.code != RC_OK) { - fprintf(stderr, "ERROR: Failed to decode asn1 message\n"); - return -1; - } - - if(ASN_DEBUG) - xer_fprint(stdout, &asn_DEF_Pendulum, pend); - - return 0; -} - -int pendulum_create_asn_msg(uint8_t **buffer, long sequence, - double angle, double torque, const char* msg) -{ - //Create Pendulum payload struct - Pendulum_t *pend; - - pend = calloc(1, sizeof(Pendulum_t)); - if(!pend){ - perror("calloc() failed"); - exit(1); - } - - //convert char* to PrintableString_t* - PrintableString_t *payload = calloc(1, sizeof(PrintableString_t)); - payload->buf = (uint8_t *)msg; - payload->size = strlen(msg); - - pend->strval = payload; - pend->sequence = &sequence; - pend->angle = ∠ - pend->torque = &torque; - - if (ASN_DEBUG) - xer_fprint(stdout, &asn_DEF_Pendulum, pend); - - //Encode Pendulum payload struct to asn1 buffer - uint32_t len; - if(pendulum_asn_encode(pend, buffer, &len) < 0) - { - return -1; - } - //fprintf(stderr, "len = %d\n", len); - - return len; -} - -long pendulum_get_sequence(const uint8_t *const buffer, const int len) -{ - Pendulum_t pend; - pendulum_asn_decode(&pend, buffer, len); - - return *(pend.sequence); -} - -double pendulum_get_angle(const uint8_t *const buffer, const int len) -{ - Pendulum_t pend; - pendulum_asn_decode(&pend, buffer, len); - - return *(pend.angle); -} - -double pendulum_get_torque(const uint8_t *const buffer, const int len) -{ - Pendulum_t pend; - pendulum_asn_decode(&pend, buffer, len); - - return *(pend.torque); -} - -char* pendulum_get_strval(const uint8_t *const buffer, const int len) -{ - Pendulum_t pend; - char* str; - - pendulum_asn_decode(&pend, buffer, len); - - str = (char*)pend.strval->buf; - - return str; -} - -void test_pendulum_msg(void) -{ - uint8_t *buffer = NULL; - uint32_t len = 0; - double angle = 1.9; - len = pendulum_create_asn_msg(&buffer, 0, angle, 0, NULL); - - double ex_angle = pendulum_get_angle(buffer, len); - fprintf(stderr, "Extracted angle = %f\n", ex_angle); -} - -void test_pendulum_asn1(void) -{ - fprintf(stderr, "test_pendulum_asn1\n"); - - Pendulum_t *pend; - - long sequence = 0; /* OPTIONAL */ - double angle = 1.5; /* OPTIONAL */ - //double torque = 0.7; /* OPTIONAL */ - - pend = calloc(1, sizeof(Pendulum_t)); - if(!pend){ - perror("calloc() failed"); - exit(1); - } - - pend->sequence = &sequence; - pend->angle = ∠ - //pend->torque = &torque; - - xer_fprint(stdout, &asn_DEF_Pendulum, pend); - - //encode - uint8_t *buffer = NULL; - uint32_t len; - pendulum_asn_encode(pend, &buffer, &len); - fprintf(stderr, "len = %d\n", len); - - //decode - Pendulum_t dec_pend; - pendulum_asn_decode(&dec_pend, buffer, len); -}