Commit 650db2d7 authored by garciay's avatar garciay
Browse files

UpperTester/DENM validation

parent 83ccb35c
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -173,5 +173,25 @@ namespace LibItsDenm__EncdecDeclarations {
    return 0;
  }

  /****************************************************
   * @desc    External function to decode a UtDenmEventInd type
   * @param   value to encode
   * @return  encoded value
   ****************************************************/
  INTEGER fx__dec__UtDenmEventInd(BITSTRING& b, LibItsDenm__TypesAndValues::UtDenmEventInd& p)
  {
    loggers::get_instance().log(">>> fx__dec__UtDenmEventInd");

    UpperTesterDenmCodec codec;
    OCTETSTRING is = bit2oct(b);
    std::unique_ptr<Base_Type> ptr = codec.decode(is);
    if (ptr == nullptr) {
      loggers::get_instance().warning("fx__dec__UtDenmEventInd: -1 result code was returned");
      return -1;
    }
    p = static_cast<LibItsDenm__TypesAndValues::UtDenmEventInd&>(*ptr);
    return 0;
  }

} //end namespace
+20 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@

#include "UpperTesterTypes.hh"

#include "DENMCodec.hh"

template <typename T_type> class OPTIONAL;
class TTCN_EncDec;

@@ -261,3 +263,21 @@ int UpperTesterDenmCodec::decode (const OCTETSTRING& data, LibItsDenm__TypesAndV
  loggers::get_instance().log_msg("<<< UpperTesterDenmCodec::decode", msg);
  return 0;
}

int UpperTesterDenmCodec::decode (const OCTETSTRING& data, LibItsDenm__TypesAndValues::UtDenmEventInd& msg, Params* params)
{
  loggers::get_instance().log_to_hexa(">>> UpperTesterDenmCodec::decode: decoding_buffer=", data);

  const unsigned char* ptr = static_cast<const unsigned char*>(data) + 1;
  OCTETSTRING os(2, ptr);
  ptr += 2;
  unsigned int length = oct2int(os);
  loggers::get_instance().log("UpperTesterDenmCodec::decode: DENM message length=%d", length);
  os = OCTETSTRING(length, ptr);
  loggers::get_instance().log_to_hexa("UpperTesterDenmCodec::decode: DENM message=", os);
  DENMCodec codec;
  codec.decode(os, msg.denMsg(), params);
  
  loggers::get_instance().log_msg("<<< UpperTesterDenmCodec::decode", msg);
  return 0;
}
+2 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ class TTCN_Buffer;

namespace LibItsDenm__TypesAndValues {
  class UtDenmResults;
  class UtDenmEventInd;
}

class UpperTesterDenmCodec: public Codec <
@@ -44,5 +45,6 @@ public:
  
private:
  int decode (const OCTETSTRING& data, LibItsDenm__TypesAndValues::UtDenmResults& msg, Params* params = NULL);
  int decode (const OCTETSTRING& data, LibItsDenm__TypesAndValues::UtDenmEventInd& msg, Params* params = NULL);
};
#endif