Commit 1e1ae582 authored by garciay's avatar garciay
Browse files

AcControlPort changes validation

parent d0ed04ac
......@@ -4,6 +4,7 @@
#include <string>
#include <map>
#include <vector>
#include <algorithm>
#include "Params.hh"
#include "loggers.hh"
......@@ -21,8 +22,14 @@ protected:
public:
Layer() : upperLayers(), lowerLayers(), type(std::string("")) { loggers::get_instance().log("Layer::Layer (D)"); };
Layer(const std::string& p_type) : upperLayers(), lowerLayers(), type(std::string(p_type.begin(), p_type.end())) { loggers::get_instance().log("Layer::Layer"); };
virtual ~Layer() { upperLayers.clear(); lowerLayers.clear(); };
void deleteLayer() { };
virtual ~Layer() {
loggers::get_instance().log("Layer::~Layer");
// Double linked list, only remove layers in lowerLayers from the lowest one
std::for_each(lowerLayers.rbegin(), lowerLayers.rend(), [](Layer* it) { delete it; } );
lowerLayers.clear();
upperLayers.clear();
};
void deleteLayer() { loggers::get_instance().log("Layer::deleteLayer"); };
public:
inline void addUpperLayer(Layer* p_layer) {
//loggers::get_instance().log(">>> Layer::addUpperLayer");
......
#include <asn1/asn_application.h>
#include "../Codec.hh"
#include "Codec.hh"
extern "C" {
static int asn1c_collect_encoded_data(const void *buffer, size_t size, void *application_specific_key)
......
......@@ -76,37 +76,30 @@ namespace LibItsGeoNetworking__TestSystem {
// Register this object for AdapterControlPort
GeoNetworkingLayer* p = registration<GeoNetworkingLayer>::get_instance().get_item(std::string("GN"));
if (p != NULL) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Got layer %p", p);
// TODO Use AcCodec to encode into ???
/*TTCN_Buffer encoding_buffer;
send_par.encode(*send_par.get_descriptor(), encoding_buffer, TTCN_EncDec::CT_RAW);
loggers::get_instance().log_to_hexa("AdapterControlPort::outgoing_send: ", encoding_buffer);
OCTETSTRING os(encoding_buffer.get_len(), encoding_buffer.get_data());
OCTETSTRING result = p->trigger_ac_event(os, _params);*/
loggers::get_instance().log("AdapterControlPort::outgoing_send: Got GN layer %p", p);
LibItsGeoNetworking__TypesAndValues::AcGnResponse response;
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(false));
if (send_par.ischosen(LibItsGeoNetworking__TypesAndValues::AcGnPrimitive::ALT_startBeaconing)) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Start beaconing");
p->start_beaconing();
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(false));
p->start_beaconing(send_par.startBeaconing().beaconPacket());
} else if (send_par.ischosen(LibItsGeoNetworking__TypesAndValues::AcGnPrimitive::ALT_stopBeaconing)) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Stop beaconing");
p->stop_beaconing();
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(false));
} else if (send_par.ischosen(LibItsGeoNetworking__TypesAndValues::AcGnPrimitive::ALT_getLongPosVector)) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Get LongPosVector");
const LibItsGeoNetworking__TypesAndValues::LongPosVector* lpv = p->get_lpv(send_par.getLongPosVector().gnAddress());
loggers::get_instance().log("AdapterControlPort::outgoing_send: Return value: %p", lpv);
if (lpv == nullptr) {
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(false));
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(true));
} else {
response.getLongPosVector() = *lpv;
}
} else if (send_par.ischosen(LibItsGeoNetworking__TypesAndValues::AcGnPrimitive::ALT_startPassBeaconing)) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Start pass beaconing");
p->start_pass_beaconing(send_par.startPassBeaconing().beaconHeader());
} else if (send_par.ischosen(LibItsGeoNetworking__TypesAndValues::AcGnPrimitive::ALT_stopPassBeaconing)) {
loggers::get_instance().log("AdapterControlPort::outgoing_send: Stop pass beaconing");
p->stop_pass_beaconing();
} else {
response.failure() = LibItsGeoNetworking__TypesAndValues::AcGnResponseFailure(BOOLEAN(true));
}
......
......@@ -5,13 +5,13 @@
#include "Params.hh"
class EthernetLayer : public Layer {
Params _params;
public:
EthernetLayer(const std::string & p_type, const std::string & param);
virtual ~EthernetLayer() {}
Params _params;
public:
EthernetLayer(const std::string & p_type, const std::string & param);
virtual ~EthernetLayer() {};
virtual void sendData(OCTETSTRING& data, Params& params);
virtual void receiveData(OCTETSTRING& data, Params& info);
virtual void sendData(OCTETSTRING& data, Params& params);
virtual void receiveData(OCTETSTRING& data, Params& info);
};
#endif
......@@ -12,7 +12,7 @@
using namespace LibItsGeoNetworking__TypesAndValues;
GeoNetworkingLayer::GeoNetworkingLayer(const std::string & p_type, const std::string & param) : TLayer<LibItsGeoNetworking__TestSystem::GeoNetworkingPort>(p_type), _params(), _codec(), _beacon(NULL), _location_table(), _sendData(), _timerid{0}, _sev{0}, _its{0}, _freq_nanosecs(0), _mask{0}, _sa{0} {
GeoNetworkingLayer::GeoNetworkingLayer(const std::string & p_type, const std::string & param) : TLayer<LibItsGeoNetworking__TestSystem::GeoNetworkingPort>(p_type), _params(), _codec(), _beacon(nullptr), _location_table(), _pass_beacon_table(), _sendData(), _timerid{0}, _sev{0}, _its{0}, _freq_nanosecs(0), _mask{0}, _sa{0} {
loggers::get_instance().log(">>> GeoNetworkingLayer::GeoNetworkingLayer: %s, %s", to_string().c_str(), param.c_str());
// Setup parameters
......@@ -42,18 +42,24 @@ GeoNetworkingLayer::GeoNetworkingLayer(const std::string & p_type, const std::st
loggers::get_instance().log("GeoNetworkingLayer::GeoNetworkingLayer: register %s/%p", p_type.c_str(), this);
registration<GeoNetworkingLayer>::get_instance().add_item(p_type, this);
// Prepare beaconing operation
fill_beacon(latitude, longitude, ll_address);
Params::const_iterator i = _params.find(Params::beaconing);
if ((i != _params.cend()) && (i->second.compare("1") == 0)) { // Immediate beaconing was requested
// Prepare beaconing operation
fill_beacon(latitude, longitude, ll_address);
start_beaconing();
}
} // End of constructor
} // End of constructor
GeoNetworkingLayer::~GeoNetworkingLayer() {
loggers::get_instance().log(">>> GeoNetworkingLayer::~GeoNetworkingLayer");
if (_timerid != 0) {
timer_delete(_timerid);
}
}
if (_beacon != nullptr) {
delete _beacon;
}
} // End of destructor
void GeoNetworkingLayer::sendMsg(const LibItsGeoNetworking__TestSystem::GeoNetworkingReq& p, Params& params) {
......@@ -90,48 +96,56 @@ void GeoNetworkingLayer::receiveData(OCTETSTRING& data, Params& params) {
if (p.extendedHeader().ispresent()) { // Update location table
const LibItsGeoNetworking__TypesAndValues::ExtendedHeader& ex = p.extendedHeader();
if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_beaconHdr)) { // Receive a beacon
sopv = &ex.beaconHeader().srcPosVector();
sopv = &ex.beaconHeader().srcPosVector();
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_tsbHdr)) { // Receive a topologicallyScopeBroadcast
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_tsbHeader)) {
sopv = &ex.tsbHeader().srcPosVector();
} else {
sopv = &ex.shbHeader().srcPosVector();
}
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_tsbHeader)) {
sopv = &ex.tsbHeader().srcPosVector();
} else {
sopv = &ex.shbHeader().srcPosVector();
}
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_geoBroadcastHdr)) {
sopv = &ex.geoBroadcastHeader().srcPosVector();
sopv = &ex.geoBroadcastHeader().srcPosVector();
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_lsHdr)) { // Receive a location service
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_lsRequestHeader)) { // Receive a LocationService/LsRequest
sopv = &ex.lsRequestHeader().srcPosVector();
// TODO Send LsReply if we are not in context of GN ATS
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_lsRequestHeader)) { // Receive a LocationService/LsRequest
sopv = &ex.lsRequestHeader().srcPosVector();
// TODO Send LsReply if we are not in context of GN ATS
} else {
sopv = &ex.lsReplyHeader().srcPosVector();
}
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_geoAnycastHdr)) { // Receive a GeoAnycast
sopv = &ex.geoAnycastHeader().srcPosVector();
} else {
sopv = &ex.lsReplyHeader().srcPosVector();
}
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_geoAnycastHdr)) { // Receive a GeoAnycast
sopv = &ex.geoAnycastHeader().srcPosVector();
} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_geoUnicastHdr)) {
sopv = &ex.geoUnicastHeader().srcPosVector();
/*} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_saHdr)) { // Receive Service Advertisement
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_xxx)) {
sopv = &ex.xxxHeader().srcPosVector();
} else {
sopv = &ex.xxxHeader().srcPosVector();
}*/
} // else, nothing to do
loggers::get_instance().log("GeoNetworkingLayer::receiveData: sopv is boud: %d", sopv->is_bound());
sopv = &ex.geoUnicastHeader().srcPosVector();
/*} else if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_saHdr)) { // Receive Service Advertisement
if (ex.ischosen(LibItsGeoNetworking__TypesAndValues::ExtendedHeader::ALT_xxx)) {
sopv = &ex.xxxHeader().srcPosVector();
} else {
sopv = &ex.xxxHeader().srcPosVector();
}*/
} // else, nothing to do
loggers::get_instance().log("GeoNetworkingLayer::receiveData: sopv is boud: %d", sopv->is_bound());
if(sopv->is_bound()) {
const LibItsGeoNetworking__TypesAndValues::LongPosVector& lpv = *sopv;
_location_table.add_entry(lpv);
const LibItsGeoNetworking__TypesAndValues::LongPosVector& lpv = *sopv;
_location_table.add_entry(lpv);
}
}
// TODO Add beacon filter for StartPassBeaconing/Stop
// By default incoming beacons are filtered by the test adapter
if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_beaconHdr)) { // Discard beacon
return;
}
} // TODO else security mode, becarfull to duplicate code
if (htst.ischosen(LibItsGeoNetworking__TypesAndValues::HeaderTST::ALT_beaconHdr)) {
loggers::get_instance().log_msg("GeoNetworkingLayer::receiveData: Pass beaconing processing", htst);
if (_pass_beacon_table.empty()) { // Discard beacon
loggers::get_instance().log("GeoNetworkingLayer::receiveData: Pass beaconing table empty, skip it");
return;
} else { // TODO Add beacon filter for StartPassBeaconing/Stop
if (!_pass_beacon_table.has_entry(sopv->gnAddr().mid())) { // Discard beacon
loggers::get_instance().log_msg("GeoNetworkingLayer::receiveData: Not in pass beaconing table, skip it", *sopv);
return;
} // else, continue
}
} // else, continue
} // TODO else security mode, becarefull to duplicate code
// Add lower layers parameters
// 1. Destination MAC address
......@@ -182,7 +196,8 @@ OCTETSTRING GeoNetworkingLayer::trigger_ac_event(OCTETSTRING& data, Params& para
void GeoNetworkingLayer::start_beaconing() {
loggers::get_instance().log(">>> GeoNetworkingLayer::start_beaconing");
loggers::get_instance().log_msg("GeoNetworkingLayer::start_beaconing: _beacon=", *_beacon);
// Establish handler for timer signal
loggers::get_instance().log("GeoNetworkingLayer::start_beaconing: Establishing handler for signal %d\n", _signal_id);
_sa.sa_flags = SA_SIGINFO;
......@@ -225,7 +240,19 @@ void GeoNetworkingLayer::start_beaconing() {
if (sigprocmask(SIG_UNBLOCK, &_mask, NULL) == -1) {
loggers::get_instance().error("GeoNetworkingLayer::start_beaconing: Sigprocmask failure: %d", errno);
}
} // End of start_beacon method
} // End of start_beaconing method
void GeoNetworkingLayer::start_beaconing(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu& p_beacon) {
loggers::get_instance().log_msg(">>> GeoNetworkingLayer::start_beaconing", p_beacon);
// Initialize the beacon
if (_beacon != nullptr) {
delete _beacon;
}
_beacon = new LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu(p_beacon);
start_beaconing(); // TODO Refined adding a boolean return code
} // End of start_beaconing method
void GeoNetworkingLayer::stop_beaconing() {
loggers::get_instance().log(">>> GeoNetworkingLayer::stop_beaconing");
......@@ -239,7 +266,7 @@ void GeoNetworkingLayer::stop_beaconing() {
}
timer_delete(_timerid);
_timerid = 0;
} // End of stop_beacon method
} // End of stop_beaconing method
void GeoNetworkingLayer::send_beacon() {
loggers::get_instance().log(">>> GeoNetworkingLayer::send_beacon");
......@@ -263,6 +290,21 @@ void GeoNetworkingLayer::send_beacon() {
//loggers::get_instance().log("<<< GeoNetworkingLayer::send_beacon");
} // End of send_beacon method
void GeoNetworkingLayer::start_pass_beaconing(const LibItsGeoNetworking__TypesAndValues::BeaconHeader& p_beacon) {
loggers::get_instance().log_msg(">>> GeoNetworkingLayer::start_pass_beaconing", p_beacon);
const LibItsGeoNetworking__TypesAndValues::LongPosVector& lpv = p_beacon.srcPosVector();
if (!_pass_beacon_table.has_entry(lpv.gnAddr().mid())) {
_pass_beacon_table.add_entry(lpv);
} // TODO Refined adding a boolean return code
} // End of start_pass_beaconing method
void GeoNetworkingLayer::stop_pass_beaconing() {
loggers::get_instance().log(">>> GeoNetworkingLayer::stop_pass_beaconing");
_pass_beacon_table.reset();
} // End of stop_pass_beaconing method
const LongPosVector* GeoNetworkingLayer::get_lpv(const GN__Address& p_gn_address)
{
loggers::get_instance().log_msg(">>> GeoNetworkingLayer::get_lpv", p_gn_address);
......@@ -279,58 +321,58 @@ void GeoNetworkingLayer::fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude,
_beacon = new GeoNetworkingPdu();
HeaderTST h;
h.beaconHdr() = BeaconHeaderType(
HeaderType(HeaderType::e__beacon),
0
);
HeaderType(HeaderType::e__beacon),
0
);
ExtendedHeader eh;
eh.beaconHeader() = BeaconHeader(
LongPosVector(
GN__Address(
TypeOfAddress(TypeOfAddress::e__manual),
StationType(StationType::e__roadSideUnit),
33,
p_ll_address
),
0,
p_latitude,
p_longitude,
int2bit(0, 1),
0,
0
)
);
LongPosVector(
GN__Address(
TypeOfAddress(TypeOfAddress::e__manual),
StationType(StationType::e__roadSideUnit),
33,
p_ll_address
),
0,
p_latitude,
p_longitude,
int2bit(0, 1),
0,
0
)
);
_beacon->basicHeader() = BasicHeader(
0,
BasicNextHeader(
BasicNextHeader::e__commonHeader
),
0,
Lifetime(
4,
LtBase(LtBase::e__50ms)
),
5
);
0,
BasicNextHeader(
BasicNextHeader::e__commonHeader
),
0,
Lifetime(
4,
LtBase(LtBase::e__50ms)
),
5
);
_beacon->gnPacket().packet() = GnNonSecuredPacket(
CommonHeader(
NextHeader(
NextHeader::e__any
),
0,
h,
TrafficClass(
SCF(SCF::e__scfDisabled),
ChannelOffload(ChannelOffload::e__choffDisabled),
0
),
int2bit(0, 8),
0,
1,
0
),
OPTIONAL<ExtendedHeader>(eh),
OPTIONAL<GnRawPayload>()
);
CommonHeader(
NextHeader(
NextHeader::e__any
),
0,
h,
TrafficClass(
SCF(SCF::e__scfDisabled),
ChannelOffload(ChannelOffload::e__choffDisabled),
0
),
int2bit(0, 8),
0,
1,
0
),
OPTIONAL<ExtendedHeader>(eh),
OPTIONAL<GnRawPayload>()
);
_beacon->gnPacket().packet().payload().set_to_omit();
_beacon->gnPacket().securedMsg().set_to_omit();
// loggers::get_instance().log_msg("GeoNetworkingLayer::GeoNetworkingLayer: beacon value: ", *p._beacon);
......@@ -347,7 +389,7 @@ class GeoNetworkingFactory: public LayerFactory {
public:
GeoNetworkingFactory();
virtual Layer * createLayer(const std::string & type,
const std::string & param);
const std::string & param);
};
GeoNetworkingFactory::GeoNetworkingFactory() {
......
......@@ -19,6 +19,7 @@ namespace LibItsGeoNetworking__TestSystem {
namespace LibItsGeoNetworking__TypesAndValues {
class GeoNetworkingPdu;
class BeaconHeader;
class LongPosVector;
class GN__Address;
}
......@@ -28,6 +29,7 @@ class GeoNetworkingLayer : public TLayer<LibItsGeoNetworking__TestSystem::GeoNet
GeoNetworkingCodec _codec;
LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu* _beacon;
LocationTable _location_table;
LocationTable _pass_beacon_table;
std::mutex _sendData; // FIXME To be removed, useless
timer_t _timerid;
struct sigevent _sev;
......@@ -36,6 +38,13 @@ class GeoNetworkingLayer : public TLayer<LibItsGeoNetworking__TestSystem::GeoNet
sigset_t _mask;
struct sigaction _sa;
/**
* @desc Initialize a beacon object for a stand alone beaconing
* This object could be replaced in case of start_beaconing call from the Adapter Control Port
* @param p_latitude
* @param p_longitude
* @param p_address
*/
void fill_beacon(INTEGER& p_latitude, INTEGER& p_longitude, OCTETSTRING& p_ll_address);
static void timer_irq_sigalrm_handler(int p_signal, siginfo_t *p_signal_info, void *p_uc);
......@@ -53,8 +62,11 @@ public:
virtual OCTETSTRING trigger_ac_event(OCTETSTRING& data, Params& params);
void start_beaconing();
void start_beaconing(const LibItsGeoNetworking__TypesAndValues::GeoNetworkingPdu& p_beacon);
void stop_beaconing();
void send_beacon();
void start_pass_beaconing(const LibItsGeoNetworking__TypesAndValues::BeaconHeader& p_beacon);
void stop_pass_beaconing();
const LibItsGeoNetworking__TypesAndValues::LongPosVector* get_lpv(const LibItsGeoNetworking__TypesAndValues::GN__Address& p_gn_address);
};
......
......@@ -26,6 +26,9 @@ public:
const bool has_entry(const OCTETSTRING& p_mid) const;
void add_entry(const LibItsGeoNetworking__TypesAndValues::LongPosVector& p_long_pos_vector);
const LibItsGeoNetworking__TypesAndValues::LongPosVector* get_entry(const OCTETSTRING & p_mid) const;
inline const bool empty() const { return _entries_by_mids.empty(); };
inline void reset() { _entries_by_mids.clear(); _entries_by_times.clear(); };
};
#endif
......@@ -169,7 +169,7 @@ void* PcapLayer::run(void* p_this) {
p._running = TRUE;
while (p._running) { // Loop while _running flag is up
if (p._resume.try_lock() == TRUE) { // Previous packet was consumed, lock for the next one
write(p._fd[1], "\n", 1);
write(p._fd[1], "\n", 1); // Any character will do the job
} else { // not ready yet
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
......
......@@ -3,9 +3,9 @@
# 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_unknown,
stationType := e_passengerCar,
stationCountryCode := 0,
mid := '4C5E0C14D2DC'O
mid := '92569202017a'O
}
LibItsGeoNetworking_Pixits.PX_GN_UPPER_LAYER := e_any
......@@ -57,7 +57,8 @@ LogEventTypes:= Yes
# Save sent packet: save_mode=[0|1]
# Single GeoNetworking component port
system.geoNetworkingPort.params := "GN(ll_address=F8CAB8083918,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=F8CAB8083918,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=F8CAB8083918,nic=,file=/home/ubuntu/tmp/test_1_beacon.pcap,filter=ether proto 0x8947,frame_offset=0,save_mode=1)"
system.geoNetworkingPort.params := "GN(ll_address=F8CAB8083918,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=F8CAB8083918,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=BABEBABE0002,nic=,file=/home/ubuntu/tmp/TC_GEONW_PON_BEA_TI_02.pcap,filter=ether proto 0x8947,frame_offset=0,save_mode=1)"
#system.geoNetworkingPort.params := "GN(ll_address=F8CAB8083918,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=F8CAB8083918,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=F8CAB8083918,nic=,file=/home/ubuntu/tmp/test_beacon.pcap,filter=ether proto 0x8947,frame_offset=0,save_mode=1)"
#system.geoNetworkingPort.params := "GN(ll_address=F8CAB8083918,latitude=43551050,longitude=10298730,beaconing=0,expiry=1000,its_aid=141)/ETH(mac_src=F8CAB8083918,mac_bc=FFFFFFFFFFFF,eth_type=8947)/PCAP(mac_src=F8CAB8083918,nic=enp0s8,file=,filter=ether proto 0x8947,frame_offset=0,save_mode=0)"
# Multiple GeoNetworking component port
......@@ -94,7 +95,12 @@ system.utPort.params := "UT/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.16
#TestCodec_GeoNetworking.tc_GeoNet_Port
#TestCodec_GeoNetworking.tc_GeoNet_Port_utPort
#TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_lpv
#TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_beaconing
#TestCodec_GeoNetworking.tc_GeoNet_acPort_getLongPositionVector_1
#TestCodec_GeoNetworking.tc_GeoNet_acPort_getLongPositionVector_2
#TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_beaconing_1
#TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_beaconing_2
#TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_pass_beaconing_1
TestCodec_GeoNetworking.tc_GeoNet_Port_acPort_pass_beaconing_2
#TestCodec_GeoNetworking.tc_GeoNet_MultiPort
#GeoNetworking UpperTester
#TestCodec_GeoNetworking.tc_GeoNet_UtGnInitialize
......@@ -122,25 +128,25 @@ system.utPort.params := "UT/UDP(dst_ip=192.168.56.1,dst_port=12346,src_ip=192.16
#TestCodec_CAM.tc_CamReq
#TestCodec_CAM.tc_Cam_Port
# CAM UpperTester
TestCodec_CAM.tc_Cam_UtCamInitialize
TestCodec_CAM.tc_Cam_UtCamChangePosition
TestCodec_CAM.tc_Cam_UtCamChangeCurvature
TestCodec_CAM.tc_Cam_UtCamChangeSpeed
TestCodec_CAM.tc_Cam_UtCamSetAccelerationControlStatus
TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_lowBeamHeadlightsOn
TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_leftTurnSignalOn
TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_daytimeRunningLightsOn
TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_parkingLightsOn
TestCodec_CAM.tc_Cam_UtCamChangeHeading
TestCodec_CAM.tc_Cam_UtCamSetDriveDirection
TestCodec_CAM.tc_Cam_UtCamChangeYawRate
TestCodec_CAM.tc_Cam_UtCamChangeYawRate_negative
TestCodec_CAM.tc_Cam_UtCamSetStationType
TestCodec_CAM.tc_Cam_UtCamSetVehicleRole
TestCodec_CAM.tc_Cam_UtCamSetDangerousGoods
TestCodec_CAM.tc_Cam_UtCamSetLightBarSirene
TestCodec_CAM.tc_Denm_UtCamTriggerResult
TestCodec_CAM.tc_Cam_UtCamEventInd_1
#TestCodec_CAM.tc_Cam_UtCamInitialize
#TestCodec_CAM.tc_Cam_UtCamChangePosition
#TestCodec_CAM.tc_Cam_UtCamChangeCurvature
#TestCodec_CAM.tc_Cam_UtCamChangeSpeed
#TestCodec_CAM.tc_Cam_UtCamSetAccelerationControlStatus
#TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_lowBeamHeadlightsOn
#TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_leftTurnSignalOn
#TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_daytimeRunningLightsOn
#TestCodec_CAM.tc_Cam_UtCamSetExteriorLightsStatus_parkingLightsOn
#TestCodec_CAM.tc_Cam_UtCamChangeHeading
#TestCodec_CAM.tc_Cam_UtCamSetDriveDirection
#TestCodec_CAM.tc_Cam_UtCamChangeYawRate
#TestCodec_CAM.tc_Cam_UtCamChangeYawRate_negative
#TestCodec_CAM.tc_Cam_UtCamSetStationType
#TestCodec_CAM.tc_Cam_UtCamSetVehicleRole
#TestCodec_CAM.tc_Cam_UtCamSetDangerousGoods
#TestCodec_CAM.tc_Cam_UtCamSetLightBarSirene
#TestCodec_CAM.tc_Denm_UtCamTriggerResult
#TestCodec_CAM.tc_Cam_UtCamEventInd_1
#TestCodec_CAM.tc_Cam_UtCamEventInd_2
# DENM PDU
......
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment