Devel

Merge request reports

Loading

ccsrc/Asn1c/asn1_recoder.cc

deleted100644 → 0
+0 −56
Changes for ccsrc/Asn1c/asn1_recoder.cc: 0 added lines, 56 removed lines.
Original line number Diff line number Diff line
#include <asn1/asn_application.h>

#include "asn1_recoder.hh"

#include <TTCN3.hh>

extern "C" {
static int asn1c_collect_encoded_data(const void *buffer, size_t size, void *application_specific_key) {
  TTCN_Buffer *tb = (TTCN_Buffer *)application_specific_key;
  tb->put_s(size, (unsigned char *)buffer);
  return 0;
}
}

int asn1_recoder::recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf) {
  int            rc  = -1;
  void *         ptr = NULL;
  asn_dec_rval_t rc_d;
  rc_d = asn_decode(NULL, (asn_transfer_syntax)from, (asn_TYPE_descriptor_s *)&td, &ptr, buf.get_data(), buf.get_len());
  if (rc_d.code == RC_OK) {
    // Encode as PER
    asn_enc_rval_t rc_e;
    buf.clear();
    rc_e = asn_encode(NULL, (asn_transfer_syntax)to, (asn_TYPE_descriptor_s *)&td, ptr, asn1c_collect_encoded_data, &buf);
    rc   = rc_e.encoded;
  }
  if (ptr) {
    ASN_STRUCT_FREE(td, ptr);
  }
  return rc;
}

int asn1_recoder::ber2per(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) 
{
  //return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_CANONICAL_PER, buf);
  //return recode(td, (int)ATS_BER, (int)ATS_ALIGNED_CANONICAL_PER, buf);
  return recode(td, (int)ATS_BER, (int)ATS_ALIGNED_BASIC_PER, buf);
  //return recode(td, (int)ATS_BER, (int)ATS_UNALIGNED_BASIC_PER, buf);
}

int asn1_recoder::per2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf) 
{
  //return recode(td, (int)ATS_UNALIGNED_BASIC_PER, (int)ATS_DER, buf);
  //return recode(td, (int)ATS_ALIGNED_CANONICAL_PER, (int)ATS_BER, buf);
  return recode(td, (int)ATS_ALIGNED_BASIC_PER, (int)ATS_BER, buf);
}

int asn1_recoder::ber2oer(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
{
  return recode(td, (int)ATS_BER, (int)ATS_CANONICAL_OER, buf);
}

int asn1_recoder::oer2ber(const asn_TYPE_descriptor_s & td, TTCN_Buffer & buf)
{
  return recode(td, (int)ATS_BASIC_OER, (int)ATS_BER, buf);
}

ccsrc/Asn1c/asn1_recoder.hh

deleted100644 → 0
+0 −29
Changes for ccsrc/Asn1c/asn1_recoder.hh: 0 added lines, 29 removed lines.
Original line number Diff line number Diff line
/*!
 * \file      asn1_recode_per.hh
 * \brief     Header file ASN.1 PER codec based on asn1c external tool.
 * \author    ETSI STF525
 * \copyright ETSI Copyright Notification
 *            No part may be reproduced except as authorized by written permission.
 *            The copyright and the foregoing restriction extend to reproduction in all media.
 *            All rights reserved.
 * \version   0.1
 */
#pragma once

class OCTETSTRING;           //! Forward declaration of TITAN class
class CHARSTRING;            //! Forward declaration of TITAN class
class BITSTRING;             //! Forward declaration of TITAN class
class TTCN_Buffer;           //! Forward declaration of TITAN class
class TTCN_EncDec;           //! Forward declaration of TITAN class
class TTCN_Typedescriptor_t; //! Forward declaration of TITAN class

struct asn_TYPE_descriptor_s; //! Forward declaration of asn1c class

class asn1_recoder {
protected:
  int ber2per(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int per2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int ber2oer(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int oer2ber(const asn_TYPE_descriptor_s &td, TTCN_Buffer &buf);
  int recode(const asn_TYPE_descriptor_s &td, int from, int to, TTCN_Buffer &buf);
}; // End of class asn1_recode_per

ccsrc/Asn1c/module.mk

deleted100644 → 0
+0 −3
Changes for ccsrc/Asn1c/module.mk: 0 added lines, 3 removed lines.
Original line number Diff line number Diff line
sources := asn1_recoder.cc 
includes := .

ccsrc/Asn1c/per_codec.hh

deleted100644 → 0
+0 −80
Changes for ccsrc/Asn1c/per_codec.hh: 0 added lines, 80 removed lines.
Original line number Diff line number Diff line
/*!
 * \file      per_codec.hh
 * \brief     Header file for TITAN message to ASN.1 PER message codec.
 * \author    ETSI STF525
 * \copyright ETSI Copyright Notification
 *            No part may be reproduced except as authorized by written permission.
 *            The copyright and the foregoing restriction extend to reproduction in all media.
 *            All rights reserved.
 * \version   0.1
 */
#pragma once

#include "params.hh"
#include "asn1_recoder.hh"

class BITSTRING;             //! Forward declaration of TITAN class
class TTCN_Typedescriptor_t; //! Forward declaration of TITAN class

struct asn_TYPE_descriptor_s; //! Declare asn1c class

/*!
 * \class per_codec
 * \brief  This class provides the interface for all ASN.1 PER codecs.
 * \remark This class uses asn1c external tool
 */
template<typename TPDU>
class per_codec : public asn1_recoder
{
public: //! \publicsection
  /*!
   * \fn int encode(const TPDU& p_message, BITSTRING& p_bitstring);
   * \brief Encode TITAN message into ASN.1 PER message
   * \param[in]  p_message   The PDU message to encode
   * \param[out] p_bitstring  The encoded PDU message in bit string format
   * \pure
   */
  virtual int encode(const TPDU& p_message, BITSTRING& p_bitstring) = 0;
  /*!
   * \fn int decode(const BITSTRING& p_bitstring, TPDU& p_message);
   * \brief Decode ASN.1 PER message into TITAN message
   * \param[in] p_bitstring  The network message in bit string format to decode
   * \param[out] p_message   The PDU message
   * \pure
   */
  virtual int decode(const BITSTRING& p_bitstring, TPDU& p_message) = 0;
  
protected: //! \protectedsection
  inline int _decode (const TTCN_Typedescriptor_t& ttcn, const asn_TYPE_descriptor_s & td, const BITSTRING& p_data, TPDU& msg);
  inline int _encode (const TTCN_Typedescriptor_t& ttcn, const asn_TYPE_descriptor_s & td, const TPDU& msg, BITSTRING& p_data);
}; // End of class per_codec

#include <TTCN3.hh>

template<class TPDU>
int per_codec<TPDU>::_decode (const TTCN_Typedescriptor_t& ttcn, const asn_TYPE_descriptor_s & td, const BITSTRING& p_data, TPDU& msg) {
  TTCN_Buffer buf(bit2oct(p_data));
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_WARNING);
  int rc = per2ber (td, buf);
  if (rc > 0) {
    msg.decode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ACCEPT_ALL);
    rc = buf.get_len();
  }
  return rc;
}

template<class TPDU>
int per_codec<TPDU>::_encode (const TTCN_Typedescriptor_t& ttcn, const asn_TYPE_descriptor_s & td, const TPDU& msg, BITSTRING& p_data) {
  int rc = -1;
  TTCN_Buffer buf;
  TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT/*WARNING*/);
  msg.encode(ttcn, buf, TTCN_EncDec::CT_BER, BER_ENCODE_DER);
  if (buf.get_len() > 0) {
    rc = ber2per (td, buf);
    if (rc > 0) {
      p_data = oct2bit(OCTETSTRING(buf.get_len(), buf.get_data()));
    }
  }
  return rc;
}

ccsrc/EncDec/LibNGAP_Encdec.cc

deleted100644 → 0
+0 −158
Changes for ccsrc/EncDec/LibNGAP_Encdec.cc: 0 added lines, 158 removed lines.
Original line number Diff line number Diff line
#include "loggers.hh"
#include "LibNGAP_EncdecDeclarations.hh"
//#include "ngap_codec.hh"

namespace LibNGAP__EncdecDeclarations {

  BITSTRING fx__enc__PDUSessionResourceSetupRequestTransfer(const NGAP__IEs::PDUSessionResourceSetupRequestTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupRequestTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceSetupRequestTransfer(BITSTRING &b, NGAP__IEs::PDUSessionResourceSetupRequestTransfer &p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupRequestTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceReleaseCommandTransfer(const NGAP__IEs::PDUSessionResourceReleaseCommandTransfer &p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceReleaseCommandTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceReleaseCommandTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceReleaseCommandTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceReleaseCommandTransfer");
    return -1;
  }

  BITSTRING fx__enc__UEContextSuspendRequestTransfer(const NGAP__IEs::UEContextSuspendRequestTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__UEContextSuspendRequestTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__UEContextSuspendRequestTransfer(BITSTRING& pdu, NGAP__IEs::UEContextSuspendRequestTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__UEContextSuspendRequestTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceSetupResponseTransfer(const NGAP__IEs::PDUSessionResourceSetupResponseTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupResponseTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceSetupResponseTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceSetupResponseTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupResponseTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyIndicationTransfer(const NGAP__IEs::PDUSessionResourceModifyIndicationTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceModifyIndicationTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyIndicationTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyIndicationTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceModifyIndicationTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer(const NGAP__IEs::PDUSessionResourceSetupUnsuccessfulTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceSetupUnsuccessfulTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceReleaseResponseTransfer(const NGAP__IEs::PDUSessionResourceReleaseResponseTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceReleaseResponseTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceReleaseResponseTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyConfirmTransfer(const NGAP__IEs::PDUSessionResourceModifyConfirmTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyConfirmTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyConfirmTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyIndicationUnsuccessfulTransfer(const NGAP__IEs::PDUSessionResourceModifyIndicationUnsuccessfulTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyIndicationUnsuccessfulTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyIndicationUnsuccessfulTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyResponseTransfer(const NGAP__IEs::PDUSessionResourceModifyResponseTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyResponseTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyResponseTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyUnsuccessfulTransfer(const NGAP__IEs::PDUSessionResourceModifyUnsuccessfulTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyUnsuccessfulTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyUnsuccessfulTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }

  BITSTRING fx__enc__PDUSessionResourceModifyRequestTransfer(const NGAP__IEs::PDUSessionResourceModifyRequestTransfer& p) {
    loggers::get_instance().log_msg(">>> fx__enc__PDUSessionResourceSetupUnsuccessfulTransfer ", p);
    return int2bit(0, 1);
  }

  INTEGER fx__dec__PDUSessionResourceModifyRequestTransfer(BITSTRING& pdu, NGAP__IEs::PDUSessionResourceModifyRequestTransfer& p) {
    loggers::get_instance().log(">>> fx__dec__PDUSessionResourceSetupUnsuccessfulTransfer");
    return -1;
  }


  /****************************************************
   * @desc    External function to encode a .... type
   * @param   value to encode
   * @return  encoded value
   ****************************************************/
  /*BITSTRING fx__enc__ProtocolIE(const LibNGAP__TypesAndValues::ProtocolIE &p) {  
      loggers::get_instance().log_msg(">>> fx__enc__ProtocolIE:: ", p);
      ngap_codec  codec;
      OCTETSTRING os;
      if (codec.encode(p.IE(), os) == -1) {
      loggers::get_instance().warning("fx__enc__ProtocolIE -1 result code was returned");
      return int2bit(0, 1);
    }

    return oct2bit(os);

      return int2bit(0, 8); 
  }*/

  /****************************************************
   * @desc    External function to decode a .... type
   * @param   value to encode
   * @return  encoded value
   ****************************************************/

  /*INTEGER fx__dec__ProtocolIE(BITSTRING &b, LibNGAP__TypesAndValues::ProtocolIE &p) { 
      loggers::get_instance().log(">>> fx__dec__ProtocolIE::");
      return -1;
  }*/

} // namespace LibNGAP__EncdecDeclarations
Loading
Loading