Commit dee2bc3d authored by Yann Garcia's avatar Yann Garcia
Browse files

AtsCPS code review

parent 44676d27
Loading
Loading
Loading
Loading
+28 −28
Original line number Diff line number Diff line
@@ -8,11 +8,11 @@

namespace LibItsCps__EncdecDeclarations {
  /****************************************************
   * @desc    External function to encode a CpsReq type
   * @desc    External function to encode a CpmReq type
   * @param   value to encode
   * @return  encoded value
   ****************************************************/
  BITSTRING fx__enc__CpsReq(const LibItsCps__TypesAndValues::CpsReq &p_cpsReq) {
  BITSTRING fx__enc__CpsReq(const LibItsCps__TypesAndValues::CpmReq &p_cpsReq) {
    loggers::get_instance().log_msg(">>> fx__enc__CpsReq: ", p_cpsReq);

    cps_codec   codec;
@@ -26,11 +26,11 @@ namespace LibItsCps__EncdecDeclarations {
  }

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

    // Sanity check
@@ -51,7 +51,7 @@ namespace LibItsCps__EncdecDeclarations {
    return 0;
  }

  INTEGER fx__dec__CpsInd(BITSTRING &b, LibItsCps__TypesAndValues::CpsInd &p_cpsInd) {
  INTEGER fx__dec__CpsInd(BITSTRING &b, LibItsCps__TypesAndValues::CpmInd &p_cpsInd) {
    loggers::get_instance().log(">>> fx__dec__CpsInd");

    // Sanity check
@@ -64,11 +64,11 @@ namespace LibItsCps__EncdecDeclarations {
    OCTETSTRING                 is = bit2oct(b);

    // Calculate the size of the lower layers information
    int s = (LibItsCps__TypesAndValues::CpsInd_gnNextHeader_raw_.fieldlength + LibItsCps__TypesAndValues::CpsInd_gnHeaderType_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpsInd_gnHeaderSubtype_raw_.fieldlength + LibItsCps__TypesAndValues::CpsInd_gnLifetime_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpsInd_gnTrafficClass_raw_.fieldlength + LibItsCps__TypesAndValues::CpsInd_btpDestinationPort_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpsInd_btpInfo_raw_.fieldlength + LibItsCps__TypesAndValues::CpsInd_ssp_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpsInd_its__aid_raw_.fieldlength) /
    int s = (LibItsCps__TypesAndValues::CpmInd_gnNextHeader_raw_.fieldlength + LibItsCps__TypesAndValues::CpmInd_gnHeaderType_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpmInd_gnHeaderSubtype_raw_.fieldlength + LibItsCps__TypesAndValues::CpmInd_gnLifetime_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpmInd_gnTrafficClass_raw_.fieldlength + LibItsCps__TypesAndValues::CpmInd_btpDestinationPort_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpmInd_btpInfo_raw_.fieldlength + LibItsCps__TypesAndValues::CpmInd_ssp_raw_.fieldlength +
             LibItsCps__TypesAndValues::CpmInd_its__aid_raw_.fieldlength) /
            8;
    // Decode CA message
    if (codec.decode(OCTETSTRING(is.lengthof() - s, static_cast<const unsigned char *>(is)), cps) == -1) {
@@ -80,91 +80,91 @@ namespace LibItsCps__EncdecDeclarations {
    TTCN_Buffer decoding_buffer(OCTETSTRING(s, static_cast<const unsigned char *>(is) + is.lengthof() - s));
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // gnNextHeader
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_gnNextHeader_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_gnNextHeader_raw_.fieldlength / 8)) {
      p_cpsInd.gnNextHeader().set_to_omit();
    } else {
      OCTETSTRING os;
      os.decode(LibItsCps__TypesAndValues::CpsInd_gnNextHeader_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      os.decode(LibItsCps__TypesAndValues::CpmInd_gnNextHeader_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.gnNextHeader() = oct2int(os);
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: gnNextHeader=", p_cpsInd.gnNextHeader());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // gnHeaderType
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_gnHeaderType_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_gnHeaderType_raw_.fieldlength / 8)) {
      p_cpsInd.gnHeaderType().set_to_omit();
    } else {
      OCTETSTRING os;
      os.decode(LibItsCps__TypesAndValues::CpsInd_gnHeaderType_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      os.decode(LibItsCps__TypesAndValues::CpmInd_gnHeaderType_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.gnHeaderType() = oct2int(os);
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: gnHeaderType=", p_cpsInd.gnHeaderType());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // gnHeaderSubtype
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_gnHeaderSubtype_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_gnHeaderSubtype_raw_.fieldlength / 8)) {
      p_cpsInd.gnHeaderSubtype().set_to_omit();
    } else {
      OCTETSTRING os;
      os.decode(LibItsCps__TypesAndValues::CpsInd_gnHeaderSubtype_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      os.decode(LibItsCps__TypesAndValues::CpmInd_gnHeaderSubtype_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.gnHeaderSubtype() = oct2int(os);
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: gnHeaderSubtype=", p_cpsInd.gnHeaderSubtype());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // gnLifetime
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_gnLifetime_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_gnLifetime_raw_.fieldlength / 8)) {
      p_cpsInd.gnLifetime().set_to_omit();
    } else {
      INTEGER i;
      i.decode(LibItsCps__TypesAndValues::CpsInd_gnLifetime_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      i.decode(LibItsCps__TypesAndValues::CpmInd_gnLifetime_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.gnLifetime() = i;
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: gnLifetime=", p_cpsInd.gnLifetime());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // gnTrafficClass
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_gnTrafficClass_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_gnTrafficClass_raw_.fieldlength / 8)) {
      p_cpsInd.gnTrafficClass().set_to_omit();
    } else {
      OCTETSTRING os;
      os.decode(LibItsCps__TypesAndValues::CpsInd_gnTrafficClass_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      os.decode(LibItsCps__TypesAndValues::CpmInd_gnTrafficClass_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.gnTrafficClass() = oct2int(os);
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: gnTrafficClass=", p_cpsInd.gnTrafficClass());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // btpDestinationPort
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_btpDestinationPort_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_btpDestinationPort_raw_.fieldlength / 8)) {
      p_cpsInd.btpDestinationPort().set_to_omit();
    } else {
      INTEGER i;
      i.decode(LibItsCps__TypesAndValues::CpsInd_btpDestinationPort_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      i.decode(LibItsCps__TypesAndValues::CpmInd_btpDestinationPort_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.btpDestinationPort() = i;
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: btpDestinationPort=", p_cpsInd.btpDestinationPort());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // btpInfo
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_btpInfo_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_btpInfo_raw_.fieldlength / 8)) {
      p_cpsInd.btpInfo().set_to_omit();
    } else {
      INTEGER i;
      i.decode(LibItsCps__TypesAndValues::CpsInd_btpInfo_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      i.decode(LibItsCps__TypesAndValues::CpmInd_btpInfo_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.btpInfo() = i;
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: btpInfo=", p_cpsInd.btpInfo());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // ssp
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_ssp_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_ssp_raw_.fieldlength / 8)) {
      p_cpsInd.ssp().set_to_omit();
    } else {
      BITSTRING bs;
      bs.decode(LibItsCps__TypesAndValues::CpsInd_ssp_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      bs.decode(LibItsCps__TypesAndValues::CpmInd_ssp_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.ssp() = bs;
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: ssp=", p_cpsInd.ssp());
    loggers::get_instance().log_to_hexa("fx__dec__CpsInd: ", decoding_buffer);
    // its__aid
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpsInd_its__aid_raw_.fieldlength / 8)) {
    if (decoding_buffer.get_read_len() < static_cast<size_t>(LibItsCps__TypesAndValues::CpmInd_its__aid_raw_.fieldlength / 8)) {
      p_cpsInd.its__aid().set_to_omit();
    } else {
      INTEGER i;
      i.decode(LibItsCps__TypesAndValues::CpsInd_its__aid_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      i.decode(LibItsCps__TypesAndValues::CpmInd_its__aid_descr_, decoding_buffer, TTCN_EncDec::CT_RAW);
      p_cpsInd.its__aid() = i;
    }
    loggers::get_instance().log_msg("fx__dec__CpsInd: its_aid=", p_cpsInd.its__aid());
+2 −2
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ namespace LibItsCps__TestSystem {

  void CpsPort::user_stop() {}

  void CpsPort::outgoing_send(const LibItsCps__TypesAndValues::CpsReq &send_par) {
  void CpsPort::outgoing_send(const LibItsCps__TypesAndValues::CpmReq &send_par) {
    loggers::get_instance().log_msg(">>> CpsPort::outgoing_send: payload=", send_par);

    float duration;
@@ -79,7 +79,7 @@ namespace LibItsCps__TestSystem {
    loggers::get_instance().set_stop_time(_time_key, duration);
  }

  void CpsPort::receiveMsg(const LibItsCps__TypesAndValues::CpsInd &p_ind, const params& p_params) {
  void CpsPort::receiveMsg(const LibItsCps__TypesAndValues::CpmInd &p_ind, const params& p_params) {
    //loggers::get_instance().log_msg(">>> CpsPort::receive_msg: ", p_ind);
    const params_its& p = static_cast<const params_its&>(p_params);
    loggers::get_instance().log(">>> CpsPort::receive_msg: %s", p.station_id.c_str());
+2 −2
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ namespace LibItsCps__TestSystem {

    void set_parameter(const char *parameter_name, const char *parameter_value);

    void receiveMsg(const LibItsCps__TypesAndValues::CpsInd&, const params&);
    void receiveMsg(const LibItsCps__TypesAndValues::CpmInd&, const params&);

  private:
    /* void Handle_Fd_Event(int fd, boolean is_readable,
@@ -45,7 +45,7 @@ namespace LibItsCps__TestSystem {
    void user_start();
    void user_stop();

    void outgoing_send(const LibItsCps__TypesAndValues::CpsReq &send_par);
    void outgoing_send(const LibItsCps__TypesAndValues::CpmReq &send_par);
  };

} // namespace LibItsCps__TestSystem
+1 −1
Original line number Diff line number Diff line
@@ -7,7 +7,7 @@
class BITSTRING;   //! Forward declaration of TITAN class
class OCTETSTRING; //! Forward declaration of TITAN class

namespace CPS__PDU__Descriptions { //! Forward declaration of asn1c CPS class
namespace CPM__PDU__Descriptions { //! Forward declaration of asn1c CPS class
  class CollectivePerceptionMessage;
}

+4 −4
Original line number Diff line number Diff line
@@ -13,15 +13,15 @@ cps_layer::cps_layer(const std::string &p_type, const std::string &param) : t_la
  loggers::get_instance().log(">>> cps_layer::cps_layer: %s, %s", to_string().c_str(), param.c_str());
  // Setup parameters
  params::convert(_params, param);
  _params.insert(std::make_pair<std::string, std::string>("its_aid", "36"));     // ETSI TS 102 965 V2.1.1 (2021-11) 
  _params.insert(std::make_pair<std::string, std::string>("payload_type", "2")); // CA message id - See ETSI TS 102 894
  _params.insert(std::make_pair<std::string, std::string>("its_aid", "639"));     // ETSI TS 102 965 V2.1.1 (2021-11) 
  _params.insert(std::make_pair<std::string, std::string>("payload_type", "2")); // CP message id - See ETSI TS 102 894

  // Register this object for AdapterControlPort
  loggers::get_instance().log("cps_layer::cps_layer: Register %s/%p", p_type.c_str(), this);
  registration<cps_layer>::get_instance().add_item(p_type, this);
}

void cps_layer::sendMsg(const LibItsCps__TypesAndValues::CpsReq &p, params_its &params) {
void cps_layer::sendMsg(const LibItsCps__TypesAndValues::CpmReq &p, params_its &params) {
  loggers::get_instance().log_msg(">>> cps_layer::sendMsg: ", p);

  // Encode CPS PDU
@@ -53,7 +53,7 @@ void cps_layer::receive_data(OCTETSTRING &data, params &p_params) {
  // Decode the payload
  params_its &params = static_cast<params_its&>(p_params);

  LibItsCps__TypesAndValues::CpsInd p;
  LibItsCps__TypesAndValues::CpmInd p;
  _codec.decode(data, p.msgIn());
  if (!p.msgIn().is_bound()) {
    // Discard it
Loading