Commit b29aa24a authored by garciay's avatar garciay
Browse files

Enhance AtsRSSimulator

parent 9bde916a
Loading
Loading
Loading
Loading
+40 −6
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@
#include "ItsRSUsSimulator_TestSystem.hh"

#include "uppertester_cam_codec.hh"
#include "uppertester_geonetworking_codec.hh"

ConfigRsuSimulatorLayer::ConfigRsuSimulatorLayer(const std::string & p_type, const std::string & param) : t_layer<ItsRSUsSimulator__TestSystem::ConfigRsuSimulatorPort>(p_type), _params(), _codec(), _codec_cam() {
  loggers::get_instance().log(">>> ConfigRsuSimulatorLayer::ConfigRsuSimulatorLayer: %s, %s", to_string().c_str(), param.c_str());
@@ -80,22 +81,24 @@ void ConfigRsuSimulatorLayer::send_data(OCTETSTRING& data, params& params) {
}

void ConfigRsuSimulatorLayer::receive_data(OCTETSTRING& data, params& params)
{
{ // FIXME To be moved into ConfigRsuSimulatorCodec
  loggers::get_instance().log_msg(">>> ConfigRsuSimulatorLayer::receive_data: ", data);

  unsigned char id = *(static_cast<const unsigned char*>(data));
  if (id == 0x00) { // Receive an UtxxInitialise
    process_utinitialize_data(data, params);
  } else if (id == 0x00) { // Receive an UtCamChangeSpeed
  } else if (id == 0x31) { // Receive an UtCamChangeSpeed
    process_ut_cam_changespeed_data(data, params);
  } else if ((id >= 0x50) && (id <= 0x54)) { // Receive an UtGnTrigger
    process_ut_geonetworking_trigger(data, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::receive_data: Unsupported tag %02x", id);
  }
  
}

int ConfigRsuSimulatorLayer::process_utinitialize_data(OCTETSTRING& data, params& params) {
  loggers::get_instance().log("ConfigRsuSimulatorLayer::process_utinitialize_data");
int ConfigRsuSimulatorLayer::process_utinitialize_data(const OCTETSTRING& data, params& params) {
  loggers::get_instance().log(">>> ConfigRsuSimulatorLayer::process_utinitialize_data");
  
  params::const_iterator it = _params.find("ut");
  if (it == _params.cend()) {
@@ -126,8 +129,8 @@ int ConfigRsuSimulatorLayer::process_utinitialize_data(OCTETSTRING& data, params
  return 0;
}

int ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data(OCTETSTRING& data, params& params) {
  loggers::get_instance().log("ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data");
int ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data(const OCTETSTRING& data, params& params) {
  loggers::get_instance().log(">>> ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data");

  params::const_iterator it = _params.find("ut");
  if (it == _params.cend()) {
@@ -149,4 +152,35 @@ int ConfigRsuSimulatorLayer::process_ut_cam_changespeed_data(OCTETSTRING& data,
  return 0;
}

int ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger(const OCTETSTRING& data, params& params) {
  loggers::get_instance().log(">>> ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger");

  params::const_iterator it = _params.find("ut");
  if (it == _params.cend()) {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger: CF layer's ut parameter is missing");
    return -1;
  }

  if (_params[std::string("ut")].compare("gn") == 0) {
    OCTETSTRING payload(data.lengthof() - 1,  1 + static_cast<const unsigned char*>(data));
    loggers::get_instance().log_msg("ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger: payload:", payload);
    TTCN_EncDec::clear_error();
    TTCN_Buffer decoding_buffer(payload);
    LibItsGeoNetworking__TypesAndValues::GenerateGeoUnicastMessage g;
    for (int i = 0; i < g.get_count(); i++) {
      loggers::get_instance().log_to_hexa("ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger: decoding_buffer=", decoding_buffer);
      g.decode(*g.fld_descr(i), decoding_buffer, TTCN_EncDec::CT_RAW);
    }
    LibItsGeoNetworking__TypesAndValues::UtGnTrigger p;
    p.geoUnicast() = g;
    // Pass it to the ports if any
    to_all_upper_ports(p, params);
  } else {
    loggers::get_instance().warning("ConfigRsuSimulatorLayer::process_ut_geonetworking_trigger: Unsupported protocol");
    return -1;
  }

  return 0;
}

ConfigRsuSimulatorLayerFactory ConfigRsuSimulatorLayerFactory::_f;
+3 −2
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ public:
  virtual void receive_data(OCTETSTRING& data, params& params);

private:
  int process_utinitialize_data(OCTETSTRING& data, params& params);
  int process_ut_cam_changespeed_data(OCTETSTRING& data, params& params);
  int process_utinitialize_data(const OCTETSTRING& data, params& params);
  int process_ut_cam_changespeed_data(const OCTETSTRING& data, params& params);
  int process_ut_geonetworking_trigger(const OCTETSTRING& data, params& params);

}; // End of class ConfigRsuSimulatorLayer
+10 −0
Original line number Diff line number Diff line
@@ -153,6 +153,16 @@ namespace ItsRSUsSimulator__TestSystem {
    incoming_message(p_ind);
  }
  
  void ConfigRsuSimulatorPort::receiveMsg (const LibItsGeoNetworking__TypesAndValues::UtGnTrigger& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> ConfigRsuSimulatorPort::receive_msg: ", p_ind);
    // Sanity check
    if (!p_ind.is_bound()) {
      return;
    }

    incoming_message(p_ind);
  }

  void ConfigRsuSimulatorPort::receiveMsg (const LibItsCam__TypesAndValues::UtCamInitialize& p_ind, const params& p_params) {
    loggers::get_instance().log_msg(">>> ConfigRsuSimulatorPort::receive_msg: ", p_ind);
    // Sanity check
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ namespace ItsRSUsSimulator__TestSystem {
    void set_parameter(const char *parameter_name, const char *parameter_value);
    void receiveMsg (const BOOLEAN& p_ind, const params& p_params);
    void receiveMsg (const LibItsGeoNetworking__TypesAndValues::UtGnInitialize& p_ind, const params& p_params);
    void receiveMsg (const LibItsGeoNetworking__TypesAndValues::UtGnTrigger& p_ind, const params& p_params);
    void receiveMsg (const LibItsCam__TypesAndValues::UtCamInitialize& p_ind, const params& p_params);
    void receiveMsg (const LibItsCam__TypesAndValues::UtCamTrigger& p_ind, const params& p_params);
    void receiveMsg (const LibItsDenm__TypesAndValues::UtDenmInitialize& p_ind, const params& p_params);
+2 −4
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@
# This section shall contain the values of all parameters that are defined in your TTCN-3 modules.
LibItsGeoNetworking_Pics.PICS_GN_LOCAL_GN_ADDR := {
  typeOfAddress := e_initial,
  stationType := e_passengerCar,
  stationType := e_unknown, #e_passengerCar,
  stationCountryCode := 0,
  mid := '4C5E0C14D2EA'O
}
@@ -122,11 +122,9 @@ LogEventTypes:= Yes

# Single GeoNetworking component port
system.geoNetworkingPort.params := "GN(ll_address=4C5E0C14D2EB,latitude=43551050,longitude=10298730,beaconing=0,device_mode=0,expiry=500,its_aid=37,secured_mode=0,encrypted_mode=0,certificate=CERT_IUT_F_AT,peer_certificate=CERT_TS_F_AT,sec_db_path=/home/ubuntu/tmp/test_01)/ETH(mac_src=0800275e8e00,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=0800275e8e00,nic=enp0s8,filter=and ether proto 0x8947)"
#system.geoNetworkingPort.params := "GN(ll_address=4C5E0C14D2EB,latitude=43551050,longitude=10298730,beaconing=0,device_mode=0,expiry=500,its_aid=37,secured_mode=1,encrypted_mode=0,certificate=CERT_IUT_F_AT,peer_certificate=CERT_TS_F_AT,sec_db_path=/home/vagrant/tmp/test_01)/ETH(mac_src=0800275e8e00,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=0800275e8e00,nic=eth1,filter=and ether proto 0x8947)"

# Config port based on UDP
system.cfPort.params := "CF(ut=gn)/UDP(dst_ip=192.168.0.253,dst_port=12345,src_ip=192.168.0.250,src_port=12345)/ETH(mac_src=0800275e8e00,mac_dst=080027d2b658,eth_type=0800)/PCAP(mac_src=0800275e8e00,nic=enp0s8,filter=and udp port 12345)"
#system.cfPort.params := "CF(ut=gn)/UDP(dst_ip=192.168.0.253,dst_port=12345,src_ip=192.168.0.250,src_port=12345)/ETH(mac_src=0800275e8e00,mac_dst=dc536045af7e,eth_type=0800)/PCAP(mac_src=0800275e8e00,nic=eth1,filter=and udp port 12345)"
system.cfPort.params := "CF(ut=gn)/UDP(dst_ip=192.168.1.253,dst_port=12345,src_ip=192.168.1.250,src_port=12345)/ETH(mac_src=0800275e8e00,mac_dst=dc536045af7e,eth_type=0800)/PCAP(mac_src=0800275e8e00,nic=enp0s8,filter=and udp port 12345)"

[EXECUTE]
ItsRSUsSimulator_TestCases.TC_RSUSIMU_BV_01
Loading