mirror of
https://github.com/eclipse-openvehicle-api/openvehicle-api.git
synced 2026-02-05 15:18:45 +00:00
update vss_util tool (#2)
This commit is contained in:
11
.gitignore
vendored
11
.gitignore
vendored
@@ -57,7 +57,6 @@ doc/_vapi_code
|
|||||||
doc/DoxygenWarning.txt
|
doc/DoxygenWarning.txt
|
||||||
|
|
||||||
# Conan intermediate files and folders
|
# Conan intermediate files and folders
|
||||||
|
|
||||||
cmake_install.cmake
|
cmake_install.cmake
|
||||||
conan.lock
|
conan.lock
|
||||||
conanbuildinfo.cmake
|
conanbuildinfo.cmake
|
||||||
@@ -65,9 +64,13 @@ conanbuildinfo.txt
|
|||||||
conan_imports_manifest.txt
|
conan_imports_manifest.txt
|
||||||
conaninfo.txt
|
conaninfo.txt
|
||||||
graph_info.json
|
graph_info.json
|
||||||
|
# Conan general
|
||||||
|
conan_tools.txt
|
||||||
|
conanbuild.yml
|
||||||
|
conanfile_mingw.py
|
||||||
|
conanfile_unix.py
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
|
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.py[cod]
|
*.py[cod]
|
||||||
*$py.class
|
*$py.class
|
||||||
@@ -100,3 +103,7 @@ sdv_services/can_communication_silkit/sil-kit;*
|
|||||||
|
|
||||||
# CppCheck directories
|
# CppCheck directories
|
||||||
analysis-cppcheck-build-dir/
|
analysis-cppcheck-build-dir/
|
||||||
|
|
||||||
|
#azure & git
|
||||||
|
azure-pipelines.yml
|
||||||
|
refresh_git_branch_list.cmd
|
||||||
BIN
examples/auto_headlamp_example/simulation_artifacts/carla_bridge_coupecar.fmu
LFS
Normal file
BIN
examples/auto_headlamp_example/simulation_artifacts/carla_bridge_coupecar.fmu
LFS
Normal file
Binary file not shown.
BIN
examples/auto_headlamp_example/simulation_artifacts/carla_bridge_patrolcar.fmu
LFS
Normal file
BIN
examples/auto_headlamp_example/simulation_artifacts/carla_bridge_patrolcar.fmu
LFS
Normal file
Binary file not shown.
Binary file not shown.
@@ -8,7 +8,7 @@
|
|||||||
#include "bs_front_door_left.h"
|
#include "bs_front_door_left.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ConstructorF
|
* @brief Constructor
|
||||||
*/
|
*/
|
||||||
CBasicServiceFrontDoorLeft::CBasicServiceFrontDoorLeft()
|
CBasicServiceFrontDoorLeft::CBasicServiceFrontDoorLeft()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool m_leftDoorIsOpen01 { 0 };
|
bool m_leftDoorIsOpen01 { 0 }; ///< open&close state of the door
|
||||||
mutable std::mutex m_leftDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen01Callbacks
|
mutable std::mutex m_leftDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen01Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle01::LeftService::IVSS_SetIsOpen_Event*> m_leftDoorIsOpen01Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle01::LeftService::IVSS_SetIsOpen_Event*> m_leftDoorIsOpen01Callbacks; ///< collection of events to be called
|
||||||
vss::Vehicle::Chassis::Door::Axle01::LeftDevice::IVSS_WriteLock* m_ptrLock = nullptr;
|
vss::Vehicle::Chassis::Door::Axle01::LeftDevice::IVSS_WriteLock* m_ptrLock = nullptr; ///< Interface pointer to lock/unlock the door
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CBasicServiceFrontDoorLeft)
|
DEFINE_SDV_OBJECT(CBasicServiceFrontDoorLeft)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "bs_front_door_right.h"
|
#include "bs_front_door_right.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ConstructorF
|
* @brief Constructor
|
||||||
*/
|
*/
|
||||||
CBasicServiceFrontDoorRight::CBasicServiceFrontDoorRight()
|
CBasicServiceFrontDoorRight::CBasicServiceFrontDoorRight()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool m_rightDoorIsOpen01 { 0 };
|
bool m_rightDoorIsOpen01 { 0 }; ///< open&close state of the door
|
||||||
mutable std::mutex m_rightDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen01Callbacks
|
mutable std::mutex m_rightDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen01Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle01::RightService::IVSS_SetIsOpen_Event*> m_rightDoorIsOpen01Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle01::RightService::IVSS_SetIsOpen_Event*> m_rightDoorIsOpen01Callbacks; ///< collection of events to be called
|
||||||
vss::Vehicle::Chassis::Door::Axle01::RightDevice::IVSS_WriteLock* m_ptrLock = nullptr;
|
vss::Vehicle::Chassis::Door::Axle01::RightDevice::IVSS_WriteLock* m_ptrLock = nullptr; ///< Interface pointer to lock/unlock the door
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CBasicServiceFrontDoorRight)
|
DEFINE_SDV_OBJECT(CBasicServiceFrontDoorRight)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "bs_rear_door_left.h"
|
#include "bs_rear_door_left.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ConstructorF
|
* @brief Constructor
|
||||||
*/
|
*/
|
||||||
CBasicServiceRearDoorLeft::CBasicServiceRearDoorLeft()
|
CBasicServiceRearDoorLeft::CBasicServiceRearDoorLeft()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool m_leftDoorIsOpen02 { 0 };
|
bool m_leftDoorIsOpen02 { 0 }; ///< open&close state of the door
|
||||||
mutable std::mutex m_leftDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen02Callbacks
|
mutable std::mutex m_leftDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen02Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle02::LeftService::IVSS_SetIsOpen_Event*> m_leftDoorIsOpen02Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle02::LeftService::IVSS_SetIsOpen_Event*> m_leftDoorIsOpen02Callbacks; ///< collection of events to be called
|
||||||
vss::Vehicle::Chassis::Door::Axle02::LeftDevice::IVSS_WriteLock* m_ptrLock = nullptr;
|
vss::Vehicle::Chassis::Door::Axle02::LeftDevice::IVSS_WriteLock* m_ptrLock = nullptr; ///< Interface pointer to lock/unlock the door
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CBasicServiceRearDoorLeft)
|
DEFINE_SDV_OBJECT(CBasicServiceRearDoorLeft)
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
#include "bs_rear_door_right.h"
|
#include "bs_rear_door_right.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ConstructorF
|
* @brief Constructor
|
||||||
*/
|
*/
|
||||||
CBasicServiceRearDoorRight::CBasicServiceRearDoorRight()
|
CBasicServiceRearDoorRight::CBasicServiceRearDoorRight()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -84,10 +84,10 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
bool m_rightDoorIsOpen02 { 0 };
|
bool m_rightDoorIsOpen02 { 0 }; ///< open&close state of the door
|
||||||
mutable std::mutex m_rightDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen02Callbacks
|
mutable std::mutex m_rightDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen02Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle02::RightService::IVSS_SetIsOpen_Event*> m_rightDoorIsOpen02Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle02::RightService::IVSS_SetIsOpen_Event*> m_rightDoorIsOpen02Callbacks; ///< collection of events to be called
|
||||||
vss::Vehicle::Chassis::Door::Axle02::RightDevice::IVSS_WriteLock* m_ptrLock = nullptr;
|
vss::Vehicle::Chassis::Door::Axle02::RightDevice::IVSS_WriteLock* m_ptrLock = nullptr; ///< Interface pointer to lock/unlock the door
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CBasicServiceRearDoorRight)
|
DEFINE_SDV_OBJECT(CBasicServiceRearDoorRight)
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
void ExecuteAllCallBacksForLeftDoorIsOpen01(sdv::any_t value);
|
void ExecuteAllCallBacksForLeftDoorIsOpen01(sdv::any_t value);
|
||||||
|
|
||||||
sdv::core::CSignal m_leftLatch01;
|
sdv::core::CSignal m_leftLatch01; ///< Signal to lock/unlock the door
|
||||||
sdv::core::CSignal m_leftDoorIsOpen01Signal; ///< Signal of the vehicle device
|
sdv::core::CSignal m_leftDoorIsOpen01Signal; ///< Open/close signal of the vehicle device
|
||||||
mutable std::mutex m_leftDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen01Callbacks
|
mutable std::mutex m_leftDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen01Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle01::LeftDevice::IVSS_WriteIsOpen_Event*> m_leftDoorIsOpen01Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle01::LeftDevice::IVSS_WriteIsOpen_Event*> m_leftDoorIsOpen01Callbacks; ///< collection of events to be called
|
||||||
|
|
||||||
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CVehicleDeviceFrontDoorLeft)
|
DEFINE_SDV_OBJECT(CVehicleDeviceFrontDoorLeft)
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
void ExecuteAllCallBacksForRightDoorIsOpen01(sdv::any_t value);
|
void ExecuteAllCallBacksForRightDoorIsOpen01(sdv::any_t value);
|
||||||
|
|
||||||
sdv::core::CSignal m_rightLatch01;
|
sdv::core::CSignal m_rightLatch01; ///< Signal to lock/unlock the door
|
||||||
sdv::core::CSignal m_rightDoorIsOpen01Signal; ///< Signal of the vehicle device
|
sdv::core::CSignal m_rightDoorIsOpen01Signal; ///< Open/close signal of the vehicle device
|
||||||
mutable std::mutex m_rightDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen01Callbacks
|
mutable std::mutex m_rightDoorIsOpen01MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen01Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle01::RightDevice::IVSS_WriteIsOpen_Event*> m_rightDoorIsOpen01Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle01::RightDevice::IVSS_WriteIsOpen_Event*> m_rightDoorIsOpen01Callbacks; ///< collection of events to be called
|
||||||
|
|
||||||
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CVehicleDeviceFrontDoorRight)
|
DEFINE_SDV_OBJECT(CVehicleDeviceFrontDoorRight)
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
void ExecuteAllCallBacksForLeftDoorIsOpen02(sdv::any_t value);
|
void ExecuteAllCallBacksForLeftDoorIsOpen02(sdv::any_t value);
|
||||||
|
|
||||||
sdv::core::CSignal m_leftLatch02;
|
sdv::core::CSignal m_leftLatch02; ///< Signal to lock/unlock the door
|
||||||
sdv::core::CSignal m_leftDoorIsOpen02Signal; ///< Signal of the vehicle device
|
sdv::core::CSignal m_leftDoorIsOpen02Signal; ///< Open/close signal of the vehicle device
|
||||||
mutable std::mutex m_leftDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen02Callbacks
|
mutable std::mutex m_leftDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_leftDoorIsOpen02Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle02::LeftDevice::IVSS_WriteIsOpen_Event*> m_leftDoorIsOpen02Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle02::LeftDevice::IVSS_WriteIsOpen_Event*> m_leftDoorIsOpen02Callbacks; ///< collection of events to be called
|
||||||
|
|
||||||
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CVehicleDeviceRearDoorLeft)
|
DEFINE_SDV_OBJECT(CVehicleDeviceRearDoorLeft)
|
||||||
|
|||||||
@@ -90,12 +90,12 @@ private:
|
|||||||
*/
|
*/
|
||||||
void ExecuteAllCallBacksForRightDoorIsOpen02(sdv::any_t value);
|
void ExecuteAllCallBacksForRightDoorIsOpen02(sdv::any_t value);
|
||||||
|
|
||||||
sdv::core::CSignal m_rightLatch02;
|
sdv::core::CSignal m_rightLatch02; ///< Signal to lock/unlock the door
|
||||||
sdv::core::CSignal m_rightDoorIsOpen02Signal; ///< Signal of the vehicle device
|
sdv::core::CSignal m_rightDoorIsOpen02Signal; ///< Open/close signal of the vehicle device
|
||||||
mutable std::mutex m_rightDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen02Callbacks
|
mutable std::mutex m_rightDoorIsOpen02MutexCallbacks; ///< Mutex protecting m_rightDoorIsOpen02Callbacks
|
||||||
std::set<vss::Vehicle::Chassis::Door::Axle02::RightDevice::IVSS_WriteIsOpen_Event*> m_rightDoorIsOpen02Callbacks; ///< collection of events to be called
|
std::set<vss::Vehicle::Chassis::Door::Axle02::RightDevice::IVSS_WriteIsOpen_Event*> m_rightDoorIsOpen02Callbacks; ///< collection of events to be called
|
||||||
|
|
||||||
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
std::atomic<sdv::EObjectStatus> m_status = { sdv::EObjectStatus::initialization_pending }; ///< To update the object status when it changes.
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_SDV_OBJECT(CVehicleDeviceRearDoorRight)
|
DEFINE_SDV_OBJECT(CVehicleDeviceRearDoorRight)
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ void CConsole::WriteSpeed(float value)
|
|||||||
if (m_SpeedVD != value)
|
if (m_SpeedVD != value)
|
||||||
{
|
{
|
||||||
m_SpeedVD = value;
|
m_SpeedVD = value;
|
||||||
PrintValue(g_sVehicleDeviceSpeed, "Vehicle Speed RX", m_SpeedVD, "m/s");
|
PrintValue(g_sVehicleDeviceSpeed, "Vehicle Speed RX", m_SpeedVD, "km/h");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -230,7 +230,7 @@ void CConsole::SetSpeed(float value)
|
|||||||
if (m_SpeedBS != value)
|
if (m_SpeedBS != value)
|
||||||
{
|
{
|
||||||
m_SpeedBS = value;
|
m_SpeedBS = value;
|
||||||
PrintValue(g_sBasicServiceSpeed, "Vehicle Speed RX", m_SpeedBS * 3.6f, "km/h");
|
PrintValue(g_sBasicServiceSpeed, "Vehicle Speed RX", m_SpeedBS, "km/h");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,10 @@
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Open trunk service: opens the trunk if vehicle is not moving
|
* @brief Open trunk example service
|
||||||
|
* @details This complex service checks the speed of the vehicle. in case the vehicle is oving, it prohibits the opening of the trunk.
|
||||||
|
* Input events from basic service: vehicle speed in km/h
|
||||||
|
* Output call for basic service: opening the trunk
|
||||||
*/
|
*/
|
||||||
class CTrunkExampleService : public sdv::CSdvObject
|
class CTrunkExampleService : public sdv::CSdvObject
|
||||||
, public sdv::IObjectControl
|
, public sdv::IObjectControl
|
||||||
@@ -75,12 +78,12 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set vehicleSpeed signal
|
* @brief Set vehicleSpeed signal
|
||||||
* @param[in] value vehicleSpeed
|
* @param[in] value vehicle speed in km/h
|
||||||
*/
|
*/
|
||||||
virtual void SetSpeed(float value) override;
|
virtual void SetSpeed(float value) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Save call to open the trunk. Opening the trunk is onkly allowed when the vehicle is not moving
|
* @brief Save call to open the trunk. Opening the trunk is only allowed when the vehicle is not moving
|
||||||
* @return Returns whether the trunk could be opened or not.
|
* @return Returns whether the trunk could be opened or not.
|
||||||
*/
|
*/
|
||||||
virtual bool PopTrunk() override;
|
virtual bool PopTrunk() override;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name
|
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name
|
||||||
;;;;;;;
|
;;;;;;;
|
||||||
VD;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;CAN_Input.Speed
|
VD;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;CAN_Input.Speed;"float vehicleSpeed = value.get<float>() * 3.6f;"
|
||||||
VD;VehicleTrunk;Open;trunk;Vehicle.Body.Trunk;TX;boolean;CAN_Output.OpenTrunk
|
VD;VehicleTrunk;Open;trunk;Vehicle.Body.Trunk;TX;boolean;CAN_Output.OpenTrunk
|
||||||
BS;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;Vehicle.Speed
|
BS;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;Vehicle.Speed
|
||||||
BS;VehicleTrunk;Open;trunk;Vehicle.Body.Trunk;TX;boolean;Vehicle.Body.Trunk
|
BS;VehicleTrunk;Open;trunk;Vehicle.Body.Trunk;TX;boolean;Vehicle.Body.Trunk
|
||||||
|
|||||||
|
@@ -274,8 +274,8 @@ void CConsole::UpdateData()
|
|||||||
PrintText(g_sDLSteeringWheel, "Data link signals are unavailable!");
|
PrintText(g_sDLSteeringWheel, "Data link signals are unavailable!");
|
||||||
|
|
||||||
// Print basic service event values
|
// Print basic service event values
|
||||||
PrintValue(g_sBSSteeringWheel, "Steering Angle", m_fSteeringWheelAngle * 57.296f , "deg");
|
PrintValue(g_sBSSteeringWheel, "Steering Angle", m_fSteeringWheelAngle, "deg");
|
||||||
PrintValue(g_sBSVehicleSpeed, "Vehicle Speed RX", m_fVehicleSpeed * 3.6f , "km/h");
|
PrintValue(g_sBSVehicleSpeed, "Vehicle Speed RX", m_fVehicleSpeed, "km/h");
|
||||||
|
|
||||||
// Get complex service information
|
// Get complex service information
|
||||||
if (m_pCounterSteeringSvc)
|
if (m_pCounterSteeringSvc)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "complex_service.h"
|
#include "complex_service.h"
|
||||||
|
|
||||||
const float g_fSpeedThreshold = 30.0f / 3.6f;
|
const float g_fSpeedThreshold = 30.0f;
|
||||||
|
|
||||||
CCounterSteeringExampleService::CCounterSteeringExampleService()
|
CCounterSteeringExampleService::CCounterSteeringExampleService()
|
||||||
{
|
{
|
||||||
@@ -141,8 +141,8 @@ void CCounterSteeringExampleService::UpdateRearAxleAngle()
|
|||||||
if (CounterSteeringActive())
|
if (CounterSteeringActive())
|
||||||
{
|
{
|
||||||
// Get steering wheel angle percentage
|
// Get steering wheel angle percentage
|
||||||
// The steering wheel can have values from -16...16 rad.
|
// The steering wheel can have values from -916.736 to 916.736 degrees.
|
||||||
float fSteeringWheelPercent = m_fSteeringWheel / 16.0f;
|
float fSteeringWheelPercent = m_fSteeringWheel / 916.736f;
|
||||||
if (fSteeringWheelPercent > 1.0) fSteeringWheelPercent = 1.0;
|
if (fSteeringWheelPercent > 1.0) fSteeringWheelPercent = 1.0;
|
||||||
if (fSteeringWheelPercent < -1.0) fSteeringWheelPercent = -1.0;
|
if (fSteeringWheelPercent < -1.0) fSteeringWheelPercent = -1.0;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name
|
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name
|
||||||
;;;;;;;
|
;;;;;;;
|
||||||
VD;SteeringWheel;SteeringWheel;wheelAngle;Vehicle.Chassis.SteeringWheel.Angle;RX;float;CAN_Input.SteeringWheel
|
VD;SteeringWheel;SteeringWheel;wheelAngle;Vehicle.Chassis.SteeringWheel.Angle;RX;float;CAN_Input.SteeringWheel;"float wheelAngle = value.get<float>() * 57.296f ;"
|
||||||
VD;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;CAN_Input.Speed
|
VD;VehicleSpeed;Speed;vehicleSpeed;Vehicle.Speed;RX;float;CAN_Input.Speed;"float vehicleSpeed = value.get<float>() * 3.6f;"
|
||||||
VD;VehicleChassisAxle;RearAxle;axleAngle;Vehicle.Chassis.RearAxle.Row.Wheel;TX;float;CAN_Output.RearAngle
|
VD;VehicleChassisAxle;RearAxle;axleAngle;Vehicle.Chassis.RearAxle.Row.Wheel;TX;float;CAN_Output.RearAngle
|
||||||
VD;IsActiveCounter;Counter;liveCounter;Vehicle.Software.Application.IsActiveCounter;TX;uint8;CAN_Output.IsActiveCounter
|
VD;IsActiveCounter;Counter;liveCounter;Vehicle.Software.Application.IsActiveCounter;TX;uint8;CAN_Output.IsActiveCounter
|
||||||
BS;SteeringWheel;SteeringWheel;wheelAngle;Vehicle.Chassis.SteeringWheel.Angle;RX;float;Vehicle.Chassis.SteeringWheel.Angle
|
BS;SteeringWheel;SteeringWheel;wheelAngle;Vehicle.Chassis.SteeringWheel.Angle;RX;float;Vehicle.Chassis.SteeringWheel.Angle
|
||||||
|
|||||||
|
@@ -124,4 +124,4 @@ endif()
|
|||||||
add_subdirectory(dbc_util)
|
add_subdirectory(dbc_util)
|
||||||
add_subdirectory(vss_util)
|
add_subdirectory(vss_util)
|
||||||
add_subdirectory(test_vss)
|
add_subdirectory(test_vss)
|
||||||
|
add_subdirectory(test_vss_formula)
|
||||||
|
|||||||
59
framework_tests/test_vss_formula/CMakeLists.txt
Normal file
59
framework_tests/test_vss_formula/CMakeLists.txt
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# Define project
|
||||||
|
project (VSSComponentsFormulaTests VERSION 1.0 LANGUAGES CXX)
|
||||||
|
|
||||||
|
# Use new policy for project version settings and default warning level
|
||||||
|
cmake_policy(SET CMP0048 NEW) # requires CMake 3.14
|
||||||
|
cmake_policy(SET CMP0092 NEW) # requires CMake 3.15
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
|
|
||||||
|
# Libary symbols are hidden by default
|
||||||
|
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
|
||||||
|
|
||||||
|
# Include directory to the core framework
|
||||||
|
include_directories(${SDV_FRAMEWORK_DEV_INCLUDE})
|
||||||
|
file (COPY ${PROJECT_SOURCE_DIR}/config/rxformulatypeint32.toml DESTINATION ${CMAKE_BINARY_DIR}/bin/config/)
|
||||||
|
file (COPY ${PROJECT_SOURCE_DIR}/config/rxformulatypestring.toml DESTINATION ${CMAKE_BINARY_DIR}/bin/config/)
|
||||||
|
|
||||||
|
# VSS util component formula test executable
|
||||||
|
add_executable(ComponentFormulaTest_VSSComponents load_components_test.cpp)
|
||||||
|
|
||||||
|
include_directories(${CMAKE_CURRENT_LIST_DIR}/../vss_util/generated/with_formula/vss_files/)
|
||||||
|
|
||||||
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||||
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||||
|
target_link_libraries(ComponentFormulaTest_VSSComponents ${CMAKE_THREAD_LIBS_INIT} GTest::GTest)
|
||||||
|
if (WIN32)
|
||||||
|
target_link_libraries(ComponentFormulaTest_VSSComponents Ws2_32 Winmm Rpcrt4.lib)
|
||||||
|
else()
|
||||||
|
target_link_libraries(ComponentFormulaTest_VSSComponents ${CMAKE_DL_LIBS} rt)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
target_link_libraries(ComponentFormulaTest_VSSComponents GTest::GTest Rpcrt4.lib)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add the VSS utility component formula test
|
||||||
|
add_test(NAME ComponentFormulaTest_VSSComponents COMMAND ComponentFormulaTest_VSSComponents WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
# Execute the test
|
||||||
|
add_custom_command(TARGET ComponentFormulaTest_VSSComponents POST_BUILD
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E env TEST_EXECUTION_MODE=CMake "$<TARGET_FILE:ComponentFormulaTest_VSSComponents>" --gtest_output=xml:${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ComponentFormulaTest_VSSComponents.xml
|
||||||
|
VERBATIM
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build dependencies
|
||||||
|
add_dependencies(ComponentFormulaTest_VSSComponents
|
||||||
|
testcase5_vd_rxclassforint32_rx testcase5_vd_rxclassforint32_rx
|
||||||
|
testcase5_vd_rxclassforstring_rx testcase5_vd_rxclassforstring_rx)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[Configuration]
|
||||||
|
Version = 100
|
||||||
|
|
||||||
|
[[Component]]
|
||||||
|
Path = "data_dispatch_service.sdv"
|
||||||
|
Class = "DataDispatchService"
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Configuration]
|
||||||
|
Version = 100
|
||||||
|
|
||||||
|
[[Component]]
|
||||||
|
Path = "testcase5_vd_rxclassforint32_rx.sdv"
|
||||||
|
Class = "Vehicle.Chassis.Body.Int32_Device"
|
||||||
|
|
||||||
|
[[Component]]
|
||||||
|
Path = "testcase5_bs_rxclassforint32_rx.sdv"
|
||||||
|
Class = "Vehicle.Chassis.Body.Int32_Service"
|
||||||
|
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
[Configuration]
|
||||||
|
Version = 100
|
||||||
|
|
||||||
|
[[Component]]
|
||||||
|
Path = "testcase5_vd_rxclassforstring_rx.sdv"
|
||||||
|
Class = "Vehicle.Chassis.Body.String_Device"
|
||||||
|
|
||||||
|
[[Component]]
|
||||||
|
Path = "testcase5_bs_rxclassforstring_rx.sdv"
|
||||||
|
Class = "Vehicle.Chassis.Body.String_Service"
|
||||||
|
|
||||||
104
framework_tests/test_vss_formula/load_components_test.cpp
Normal file
104
framework_tests/test_vss_formula/load_components_test.cpp
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
#include <fstream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
|
#include <support/signal_support.h>
|
||||||
|
#include <interfaces/dispatch.h>
|
||||||
|
#include <support/app_control.h>
|
||||||
|
#include <signal_identifier.h>
|
||||||
|
#include <vss_vehiclechassisbodyint32_vd_rx.h>
|
||||||
|
#include <vss_vehiclechassisbodystring_vd_rx.h>
|
||||||
|
#include <vss_vehiclechassisbodyint32_bs_rx.h>
|
||||||
|
#include <vss_vehiclechassisbodystring_bs_rx.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
bool InitializeAppControl(sdv::app::CAppControl* appControl, const std::string& configFileName)
|
||||||
|
{
|
||||||
|
auto bResult = appControl->AddModuleSearchDir("../../bin");
|
||||||
|
bResult &= appControl->Startup("");
|
||||||
|
appControl->SetConfigMode();
|
||||||
|
bResult &= appControl->AddConfigSearchDir("../../tests/bin/config");
|
||||||
|
|
||||||
|
if (!configFileName.empty())
|
||||||
|
{
|
||||||
|
bResult &= appControl->LoadConfig(configFileName.c_str()) == sdv::core::EConfigProcessResult::successful;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TEST(VSSComponentTest, RXInt32)
|
||||||
|
{
|
||||||
|
sdv::app::CAppControl appControl;
|
||||||
|
|
||||||
|
auto bResult = InitializeAppControl(&appControl, "data_dispatch_service.toml");
|
||||||
|
ASSERT_EQ(bResult, true);
|
||||||
|
|
||||||
|
sdv::core::CDispatchService dispatch;
|
||||||
|
sdv::core::CSignal signalRx;
|
||||||
|
signalRx = dispatch.RegisterRxSignal(testcase5::dsSignalInt32);
|
||||||
|
ASSERT_TRUE(signalRx);
|
||||||
|
|
||||||
|
bResult &= appControl.LoadConfig("rxformulatypeint32.toml") == sdv::core::EConfigProcessResult::successful;
|
||||||
|
ASSERT_EQ(bResult, true);
|
||||||
|
|
||||||
|
auto basicService = sdv::core::GetObject("Vehicle.Chassis.Body.Int32_Service").GetInterface<vss::Vehicle::Chassis::Body::Int32Service::IVSS_GetSignalTypeInt32>();
|
||||||
|
ASSERT_TRUE(basicService);
|
||||||
|
|
||||||
|
appControl.SetRunningMode();
|
||||||
|
const int32_t expected = 123;
|
||||||
|
signalRx.Write(expected);
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
||||||
|
ASSERT_EQ(expected * 2, basicService->GetSignalTypeInt32());
|
||||||
|
|
||||||
|
signalRx.Reset();
|
||||||
|
appControl.Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(VSSComponentTest, RXString)
|
||||||
|
{
|
||||||
|
sdv::app::CAppControl appControl;
|
||||||
|
|
||||||
|
auto bResult = InitializeAppControl(&appControl, "data_dispatch_service.toml");
|
||||||
|
ASSERT_EQ(bResult, true);
|
||||||
|
|
||||||
|
sdv::core::CDispatchService dispatch;
|
||||||
|
sdv::core::CSignal signalRx;
|
||||||
|
signalRx = dispatch.RegisterRxSignal(testcase5::dsSignalString);
|
||||||
|
ASSERT_TRUE(signalRx);
|
||||||
|
|
||||||
|
bResult &= appControl.LoadConfig("rxformulatypestring.toml") == sdv::core::EConfigProcessResult::successful;
|
||||||
|
ASSERT_EQ(bResult, true);
|
||||||
|
|
||||||
|
auto basicService = sdv::core::GetObject("Vehicle.Chassis.Body.String_Service").GetInterface<vss::Vehicle::Chassis::Body::StringService::IVSS_GetSignalTypeString>();
|
||||||
|
ASSERT_TRUE(basicService);
|
||||||
|
|
||||||
|
appControl.SetRunningMode();
|
||||||
|
std::string expected = "some text written";
|
||||||
|
signalRx.Write(expected);
|
||||||
|
expected.append("_string_added");
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(3));
|
||||||
|
ASSERT_EQ(expected, basicService->GetSignalTypeString());
|
||||||
|
|
||||||
|
signalRx.Reset();
|
||||||
|
appControl.Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int main(int argc, char* argv[])
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
::testing::InitGoogleTest(&argc, argv);
|
||||||
|
int result = RUN_ALL_TESTS();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
#pragma GCC diagnostic pop
|
||||||
|
#endif
|
||||||
@@ -40,6 +40,17 @@ if(VSS_CONFIGURATION_FAILED)
|
|||||||
message(FATAL_ERROR "Configuration failed due to missing folders.")
|
message(FATAL_ERROR "Configuration failed due to missing folders.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Execute vss_with_formula to create IDL files testcase with vehcile device has a convertion formula
|
||||||
|
message("Create interface code for 'vss_with_formula.csv'.")
|
||||||
|
execute_process(COMMAND "${SDV_VSS_UTIL}" "${CMAKE_CURRENT_LIST_DIR}/vss_with_formula.csv" "-O${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/" --prefixtestcase5 --version1.0.0.1 --enable_components)
|
||||||
|
set(MULTIPLE_NAMES_FOLDER "${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/")
|
||||||
|
if(EXISTS "${WITH_FORMULA_FOLDER}")
|
||||||
|
message(STATUS "(OK) Folder exists: ${WITH_FORMULA_FOLDER}")
|
||||||
|
else()
|
||||||
|
message(WARNING "(Fail) Folder does NOT exist: ${WITH_FORMULA_FOLDER}")
|
||||||
|
set(VSS_CONFIGURATION_FAILED TRUE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# Execute idl_compiler to create interface code for 'vss_unique_names.csv'.
|
# Execute idl_compiler to create interface code for 'vss_unique_names.csv'.
|
||||||
message("vss_unique_names.csv: compile all 8 idl files")
|
message("vss_unique_names.csv: compile all 8 idl files")
|
||||||
@@ -203,6 +214,13 @@ execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generat
|
|||||||
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/vss_vehiclechassisvehiclewchar_vd_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/vss_vehiclechassisvehiclewchar_vd_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/vss_vehiclechassisvehiclewchar_vd_tx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/vss_vehiclechassisvehiclewchar_vd_tx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/all_types/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
|
|
||||||
|
# Execute idl_compiler to create interface code for 'vss_with_formula.csv'.
|
||||||
|
message("vss_with_formula.csv: compile all 4 idl files")
|
||||||
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/vss_vehiclechassisbodyint32_vd_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/vss_vehiclechassisbodystring_vd_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/vss_vehiclechassisbodyint32_bs_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
|
execute_process(COMMAND "${SDV_IDL_COMPILER}" "${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/vss_vehiclechassisbodystring_bs_rx.idl" "-O${CMAKE_CURRENT_LIST_DIR}/generated/with_formula/vss_files/" "-I${SDV_FRAMEWORK_DEV_INCLUDE}" -Igenerated/vss_files/ --no_ps)
|
||||||
|
|
||||||
# Compile all components from 'vss_all_types.csv'.
|
# Compile all components from 'vss_all_types.csv'.
|
||||||
message("vss_all_types.csv: compile 112 components")
|
message("vss_all_types.csv: compile 112 components")
|
||||||
add_subdirectory(generated/all_types/vss_files/vd_rxclassforboolean)
|
add_subdirectory(generated/all_types/vss_files/vd_rxclassforboolean)
|
||||||
@@ -321,5 +339,9 @@ add_subdirectory(generated/all_types/vss_files/bs_txclassforunsignedlong)
|
|||||||
add_subdirectory(generated/all_types/vss_files/bs_txclassforunsignedlonglong)
|
add_subdirectory(generated/all_types/vss_files/bs_txclassforunsignedlonglong)
|
||||||
add_subdirectory(generated/all_types/vss_files/bs_txclassforunsignedshort)
|
add_subdirectory(generated/all_types/vss_files/bs_txclassforunsignedshort)
|
||||||
|
|
||||||
|
# Compile all components from 'vss_with_formula.csv'.
|
||||||
|
message("vss_all_types.csv: compile 4 components")
|
||||||
|
add_subdirectory(generated/with_formula/vss_files/vd_rxclassforint32)
|
||||||
|
add_subdirectory(generated/with_formula/vss_files/vd_rxclassforstring)
|
||||||
|
add_subdirectory(generated/with_formula/vss_files/bs_rxclassforint32)
|
||||||
|
add_subdirectory(generated/with_formula/vss_files/bs_rxclassforstring)
|
||||||
|
|||||||
@@ -1,114 +1,114 @@
|
|||||||
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name;;;;;
|
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name
|
||||||
;;;;;;;;;;;;
|
;;;;;;;
|
||||||
VD;RXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;RX;boolean;CAN_Input.boolean;;;;;char
|
VD;RXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;RX;boolean;CAN_Input.boolean
|
||||||
VD;RXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;RX;float;CAN_Input.float;;;;;char16
|
VD;RXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;RX;float;CAN_Input.float
|
||||||
VD;RXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;RX;double;CAN_Input.double;;;;;char32
|
VD;RXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;RX;double;CAN_Input.double
|
||||||
VD;RXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;RX;long double;CAN_Input.long_double;;;;;wchar
|
VD;RXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;RX;long double;CAN_Input.long_double
|
||||||
VD;RXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;RX;short;CAN_Input.short;;;;;u8string
|
VD;RXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;RX;short;CAN_Input.short
|
||||||
VD;RXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;RX;unsigned short;CAN_Input.unsigned_short;;;;;u16string
|
VD;RXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;RX;unsigned short;CAN_Input.unsigned_short
|
||||||
VD;RXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;RX;long;CAN_Input.long;;;;;u32string
|
VD;RXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;RX;long;CAN_Input.long
|
||||||
VD;RXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;RX;unsigned long;CAN_Input.unsigned_long;;;;;native
|
VD;RXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;RX;unsigned long;CAN_Input.unsigned_long
|
||||||
VD;RXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;RX;long long;CAN_Input.long_long;;;;;
|
VD;RXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;RX;long long;CAN_Input.long_long
|
||||||
VD;RXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;RX;unsigned long long;CAN_Input.unsigned_long_long;;;;;
|
VD;RXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;RX;unsigned long long;CAN_Input.unsigned_long_long
|
||||||
VD;RXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;RX;int8;CAN_Input.int8;;;;;
|
VD;RXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;RX;int8;CAN_Input.int8
|
||||||
VD;RXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;RX;uint8;CAN_Input.uint8;;;;;
|
VD;RXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;RX;uint8;CAN_Input.uint8
|
||||||
VD;RXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;RX;int16;CAN_Input.int16;;;;;
|
VD;RXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;RX;int16;CAN_Input.int16
|
||||||
VD;RXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;RX;uint16;CAN_Input.uint16;;;;;
|
VD;RXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;RX;uint16;CAN_Input.uint16
|
||||||
VD;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;RX;int32;CAN_Input.int32;;;;;
|
VD;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;RX;int32;CAN_Input.int32
|
||||||
VD;RXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;RX;uint32;CAN_Input.uint32;;;;;
|
VD;RXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;RX;uint32;CAN_Input.uint32
|
||||||
VD;RXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;RX;int64;CAN_Input.int64;;;;;
|
VD;RXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;RX;int64;CAN_Input.int64
|
||||||
VD;RXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;RX;uint64;CAN_Input.uint64;;;;;
|
VD;RXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;RX;uint64;CAN_Input.uint64
|
||||||
VD;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;RX;string;CAN_Input.string;;;;;
|
VD;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;RX;string;CAN_Input.string
|
||||||
VD;RXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;RX;wstring;CAN_Input.WString;;;;;
|
VD;RXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;RX;wstring;CAN_Input.WString
|
||||||
VD;RXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;RX;char;CAN_Input.char;;;;;
|
VD;RXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;RX;char;CAN_Input.char
|
||||||
VD;RXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;RX;char16;CAN_Input.char16;;;;;
|
VD;RXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;RX;char16;CAN_Input.char16
|
||||||
VD;RXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;RX;char32;CAN_Input.char32;;;;;
|
VD;RXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;RX;char32;CAN_Input.char32
|
||||||
VD;RXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;RX;wchar;CAN_Input.wchar;;;;;
|
VD;RXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;RX;wchar;CAN_Input.wchar
|
||||||
VD;RXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;RX;u8string;CAN_Input.u8string;;;;;
|
VD;RXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;RX;u8string;CAN_Input.u8string
|
||||||
VD;RXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;RX;u16string;CAN_Input.u16string;;;;;
|
VD;RXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;RX;u16string;CAN_Input.u16string
|
||||||
VD;RXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;RX;u32string;CAN_Input.u32string;;;;;
|
VD;RXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;RX;u32string;CAN_Input.u32string
|
||||||
VD;RXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;RX;native;CAN_Input.native;;;;;
|
VD;RXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;RX;native;CAN_Input.native
|
||||||
VD;TXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;TX;boolean;CAN_Output.boolean;;;;;
|
VD;TXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;TX;boolean;CAN_Output.boolean
|
||||||
VD;TXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;TX;float;CAN_Output.float;;;;;
|
VD;TXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;TX;float;CAN_Output.float
|
||||||
VD;TXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;TX;double;CAN_Output.double;;;;;
|
VD;TXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;TX;double;CAN_Output.double
|
||||||
VD;TXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;TX;long double;CAN_Output.long_double;;;;;
|
VD;TXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;TX;long double;CAN_Output.long_double
|
||||||
VD;TXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;TX;short;CAN_Output.short;;;;;
|
VD;TXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;TX;short;CAN_Output.short
|
||||||
VD;TXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;TX;unsigned short;CAN_Output.unsigned_short;;;;;
|
VD;TXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;TX;unsigned short;CAN_Output.unsigned_short
|
||||||
VD;TXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;TX;long;CAN_Output.long;;;;;
|
VD;TXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;TX;long;CAN_Output.long
|
||||||
VD;TXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;TX;unsigned long;CAN_Output.unsigned_long;;;;;
|
VD;TXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;TX;unsigned long;CAN_Output.unsigned_long
|
||||||
VD;TXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;TX;long long;CAN_Output.long_long;;;;;
|
VD;TXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;TX;long long;CAN_Output.long_long
|
||||||
VD;TXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;TX;unsigned long long;CAN_Output.unsigned_long_long;;;;;
|
VD;TXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;TX;unsigned long long;CAN_Output.unsigned_long_long
|
||||||
VD;TXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;TX;int8;CAN_Output.int8;;;;;
|
VD;TXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;TX;int8;CAN_Output.int8
|
||||||
VD;TXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;TX;uint8;CAN_Output.uint8;;;;;
|
VD;TXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;TX;uint8;CAN_Output.uint8
|
||||||
VD;TXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;TX;int16;CAN_Output.int16;;;;;
|
VD;TXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;TX;int16;CAN_Output.int16
|
||||||
VD;TXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;TX;uint16;CAN_Output.uint16;;;;;
|
VD;TXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;TX;uint16;CAN_Output.uint16
|
||||||
VD;TXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;TX;int32;CAN_Output.int32;;;;;
|
VD;TXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;TX;int32;CAN_Output.int32
|
||||||
VD;TXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;TX;uint32;CAN_Output.uint32;;;;;
|
VD;TXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;TX;uint32;CAN_Output.uint32
|
||||||
VD;TXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;TX;int64;CAN_Output.int64;;;;;
|
VD;TXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;TX;int64;CAN_Output.int64
|
||||||
VD;TXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;TX;uint64;CAN_Output.uint64;;;;;
|
VD;TXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;TX;uint64;CAN_Output.uint64
|
||||||
VD;TXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;TX;string;CAN_Output.string;;;;;
|
VD;TXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;TX;string;CAN_Output.string
|
||||||
VD;TXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;TX;wstring;CAN_Output.WString;;;;;
|
VD;TXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;TX;wstring;CAN_Output.WString
|
||||||
VD;TXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;TX;char;CAN_Output.char;;;;;
|
VD;TXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;TX;char;CAN_Output.char
|
||||||
VD;TXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;TX;char16;CAN_Output.char16;;;;;
|
VD;TXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;TX;char16;CAN_Output.char16
|
||||||
VD;TXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;TX;char32;CAN_Output.char32;;;;;
|
VD;TXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;TX;char32;CAN_Output.char32
|
||||||
VD;TXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;TX;wchar;CAN_Output.wchar;;;;;
|
VD;TXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;TX;wchar;CAN_Output.wchar
|
||||||
VD;TXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;TX;u8string;CAN_Output.u8string;;;;;
|
VD;TXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;TX;u8string;CAN_Output.u8string
|
||||||
VD;TXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;TX;u16string;CAN_Output.u16string;;;;;
|
VD;TXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;TX;u16string;CAN_Output.u16string
|
||||||
VD;TXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;TX;u32string;CAN_Output.u32string;;;;;
|
VD;TXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;TX;u32string;CAN_Output.u32string
|
||||||
VD;TXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;TX;native;CAN_Output.native;;;;;
|
VD;TXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;TX;native;CAN_Output.native
|
||||||
BS;RXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;RX;boolean;Vehicle.Chassis.Vehicle.Boolean;;;;;
|
BS;RXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;RX;boolean;Vehicle.Chassis.Vehicle.Boolean
|
||||||
BS;RXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;RX;float;Vehicle.Chassis.Vehicle.Float;;;;;
|
BS;RXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;RX;float;Vehicle.Chassis.Vehicle.Float
|
||||||
BS;RXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;RX;double;Vehicle.Chassis.Vehicle.Double;;;;;
|
BS;RXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;RX;double;Vehicle.Chassis.Vehicle.Double
|
||||||
BS;RXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;RX;long double;Vehicle.Chassis.Vehicle.LongDouble;;;;;
|
BS;RXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;RX;long double;Vehicle.Chassis.Vehicle.LongDouble
|
||||||
BS;RXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;RX;short;Vehicle.Chassis.Vehicle.Short;;;;;
|
BS;RXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;RX;short;Vehicle.Chassis.Vehicle.Short
|
||||||
BS;RXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;RX;unsigned short;Vehicle.Chassis.Vehicle.UnsignedShort;;;;;
|
BS;RXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;RX;unsigned short;Vehicle.Chassis.Vehicle.UnsignedShort
|
||||||
BS;RXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;RX;long;Vehicle.Chassis.Vehicle.Long;;;;;
|
BS;RXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;RX;long;Vehicle.Chassis.Vehicle.Long
|
||||||
BS;RXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;RX;unsigned long;Vehicle.Chassis.Vehicle.UnsignedLong;;;;;
|
BS;RXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;RX;unsigned long;Vehicle.Chassis.Vehicle.UnsignedLong
|
||||||
BS;RXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;RX;long long;Vehicle.Chassis.Vehicle.LongLong;;;;;
|
BS;RXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;RX;long long;Vehicle.Chassis.Vehicle.LongLong
|
||||||
BS;RXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;RX;unsigned long long;Vehicle.Chassis.Vehicle.UnsignedLongLong;;;;;
|
BS;RXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;RX;unsigned long long;Vehicle.Chassis.Vehicle.UnsignedLongLong
|
||||||
BS;RXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;RX;int8;Vehicle.Chassis.Vehicle.Int8;;;;;
|
BS;RXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;RX;int8;Vehicle.Chassis.Vehicle.Int8
|
||||||
BS;RXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;RX;uint8;Vehicle.Chassis.Vehicle.Uint8;;;;;
|
BS;RXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;RX;uint8;Vehicle.Chassis.Vehicle.Uint8
|
||||||
BS;RXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;RX;int16;Vehicle.Chassis.Vehicle.Int16;;;;;
|
BS;RXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;RX;int16;Vehicle.Chassis.Vehicle.Int16
|
||||||
BS;RXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;RX;uint16;Vehicle.Chassis.Vehicle.Uint16;;;;;
|
BS;RXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;RX;uint16;Vehicle.Chassis.Vehicle.Uint16
|
||||||
BS;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;RX;int32;Vehicle.Chassis.Vehicle.Int32;;;;;
|
BS;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;RX;int32;Vehicle.Chassis.Vehicle.Int32
|
||||||
BS;RXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;RX;uint32;Vehicle.Chassis.Vehicle.Uint32;;;;;
|
BS;RXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;RX;uint32;Vehicle.Chassis.Vehicle.Uint32
|
||||||
BS;RXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;RX;int64;Vehicle.Chassis.Vehicle.Int64;;;;;
|
BS;RXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;RX;int64;Vehicle.Chassis.Vehicle.Int64
|
||||||
BS;RXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;RX;uint64;Vehicle.Chassis.Vehicle.Uint64;;;;;
|
BS;RXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;RX;uint64;Vehicle.Chassis.Vehicle.Uint64
|
||||||
BS;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;RX;string;Vehicle.Chassis.Vehicle.String;;;;;
|
BS;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;RX;string;Vehicle.Chassis.Vehicle.String
|
||||||
BS;RXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;RX;wstring;Vehicle.Chassis.Vehicle.WString;;;;;
|
BS;RXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;RX;wstring;Vehicle.Chassis.Vehicle.WString
|
||||||
BS;RXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;RX;char;Vehicle.Chassis.Vehicle.Char;;;;;
|
BS;RXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;RX;char;Vehicle.Chassis.Vehicle.Char
|
||||||
BS;RXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;RX;char16;Vehicle.Chassis.Vehicle.Char16;;;;;
|
BS;RXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;RX;char16;Vehicle.Chassis.Vehicle.Char16
|
||||||
BS;RXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;RX;char32;Vehicle.Chassis.Vehicle.Char32;;;;;
|
BS;RXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;RX;char32;Vehicle.Chassis.Vehicle.Char32
|
||||||
BS;RXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;RX;wchar;Vehicle.Chassis.Vehicle.WChar;;;;;
|
BS;RXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;RX;wchar;Vehicle.Chassis.Vehicle.WChar
|
||||||
BS;RXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;RX;u8string;Vehicle.Chassis.Vehicle.U8String;;;;;
|
BS;RXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;RX;u8string;Vehicle.Chassis.Vehicle.U8String
|
||||||
BS;RXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;RX;u16string;Vehicle.Chassis.Vehicle.U16String;;;;;
|
BS;RXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;RX;u16string;Vehicle.Chassis.Vehicle.U16String
|
||||||
BS;RXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;RX;u32string;Vehicle.Chassis.Vehicle.U32String;;;;;
|
BS;RXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;RX;u32string;Vehicle.Chassis.Vehicle.U32String
|
||||||
BS;RXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;RX;native;Vehicle.Chassis.Vehicle.Native;;;;;
|
BS;RXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;RX;native;Vehicle.Chassis.Vehicle.Native
|
||||||
BS;TXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;TX;boolean;Vehicle.Chassis.Vehicle.Boolean;;;;;
|
BS;TXClassForBoolean;SignalTypeBoolean;signalBoolean;Vehicle.Chassis.Vehicle.Boolean;TX;boolean;Vehicle.Chassis.Vehicle.Boolean
|
||||||
BS;TXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;TX;float;Vehicle.Chassis.Vehicle.Float;;;;;
|
BS;TXClassForFloat;SignalTypeFloat;signalFloat;Vehicle.Chassis.Vehicle.Float;TX;float;Vehicle.Chassis.Vehicle.Float
|
||||||
BS;TXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;TX;double;Vehicle.Chassis.Vehicle.Double;;;;;
|
BS;TXClassForDouble;SignalTypeDouble;signalDouble;Vehicle.Chassis.Vehicle.Double;TX;double;Vehicle.Chassis.Vehicle.Double
|
||||||
BS;TXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;TX;long double;Vehicle.Chassis.Vehicle.LongDouble;;;;;
|
BS;TXClassForLongDouble;SignalTypeLongDouble;signalLongDouble;Vehicle.Chassis.Vehicle.LongDouble;TX;long double;Vehicle.Chassis.Vehicle.LongDouble
|
||||||
BS;TXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;TX;short;Vehicle.Chassis.Vehicle.Short;;;;;
|
BS;TXClassForShort;SignalTypeShort;signalShort;Vehicle.Chassis.Vehicle.Short;TX;short;Vehicle.Chassis.Vehicle.Short
|
||||||
BS;TXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;TX;unsigned short;Vehicle.Chassis.Vehicle.UnsignedShort;;;;;
|
BS;TXClassForUnsignedShort;SignalTypeUnsignedShort;signalUnsignedShort;Vehicle.Chassis.Vehicle.UnsignedShort;TX;unsigned short;Vehicle.Chassis.Vehicle.UnsignedShort
|
||||||
BS;TXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;TX;long;Vehicle.Chassis.Vehicle.Long;;;;;
|
BS;TXClassForLong;SignalTypeLong;signalLong;Vehicle.Chassis.Vehicle.Long;TX;long;Vehicle.Chassis.Vehicle.Long
|
||||||
BS;TXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;TX;unsigned long;Vehicle.Chassis.Vehicle.UnsignedLong;;;;;
|
BS;TXClassForUnsignedLong;SignalTypeUnsignedLong;signalUnsignedLong;Vehicle.Chassis.Vehicle.UnsignedLong;TX;unsigned long;Vehicle.Chassis.Vehicle.UnsignedLong
|
||||||
BS;TXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;TX;long long;Vehicle.Chassis.Vehicle.LongLong;;;;;
|
BS;TXClassForLongLong;SignalTypeLongLong;signalLongLong;Vehicle.Chassis.Vehicle.LongLong;TX;long long;Vehicle.Chassis.Vehicle.LongLong
|
||||||
BS;TXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;TX;unsigned long long;Vehicle.Chassis.Vehicle.UnsignedLongLong;;;;;
|
BS;TXClassForUnsignedLongLong;SignalTypeUnsignedLongLong;signalUnsignedLongLong;Vehicle.Chassis.Vehicle.UnsignedLongLong;TX;unsigned long long;Vehicle.Chassis.Vehicle.UnsignedLongLong
|
||||||
BS;TXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;TX;int8;Vehicle.Chassis.Vehicle.Int8;;;;;
|
BS;TXClassForInt8;SignalTypeInt8;signalInt8;Vehicle.Chassis.Vehicle.Int8;TX;int8;Vehicle.Chassis.Vehicle.Int8
|
||||||
BS;TXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;TX;uint8;Vehicle.Chassis.Vehicle.Uint8;;;;;
|
BS;TXClassForUint8;SignalTypeUint8;signalUint8;Vehicle.Chassis.Vehicle.Uint8;TX;uint8;Vehicle.Chassis.Vehicle.Uint8
|
||||||
BS;TXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;TX;int16;Vehicle.Chassis.Vehicle.Int16;;;;;
|
BS;TXClassForInt16;SignalTypeInt16;signalInt16;Vehicle.Chassis.Vehicle.Int16;TX;int16;Vehicle.Chassis.Vehicle.Int16
|
||||||
BS;TXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;TX;uint16;Vehicle.Chassis.Vehicle.Uint16;;;;;
|
BS;TXClassForUint16;SignalTypeUint16;signalUint16;Vehicle.Chassis.Vehicle.Uint16;TX;uint16;Vehicle.Chassis.Vehicle.Uint16
|
||||||
BS;TXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;TX;int32;Vehicle.Chassis.Vehicle.Int32;;;;;
|
BS;TXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Vehicle.Int32;TX;int32;Vehicle.Chassis.Vehicle.Int32
|
||||||
BS;TXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;TX;uint32;Vehicle.Chassis.Vehicle.Uint32;;;;;
|
BS;TXClassForUint32;SignalTypeUint32;signalUint32;Vehicle.Chassis.Vehicle.Uint32;TX;uint32;Vehicle.Chassis.Vehicle.Uint32
|
||||||
BS;TXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;TX;int64;Vehicle.Chassis.Vehicle.Int64;;;;;
|
BS;TXClassForInt64;SignalTypeInt64;signalInt64;Vehicle.Chassis.Vehicle.Int64;TX;int64;Vehicle.Chassis.Vehicle.Int64
|
||||||
BS;TXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;TX;uint64;Vehicle.Chassis.Vehicle.Uint64;;;;;
|
BS;TXClassForUint64;SignalTypeUint64;signalUint64;Vehicle.Chassis.Vehicle.Uint64;TX;uint64;Vehicle.Chassis.Vehicle.Uint64
|
||||||
BS;TXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;TX;string;Vehicle.Chassis.Vehicle.String;;;;;
|
BS;TXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Vehicle.String;TX;string;Vehicle.Chassis.Vehicle.String
|
||||||
BS;TXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;TX;wstring;Vehicle.Chassis.Vehicle.WString;;;;;
|
BS;TXClassForWString;SignalTypeWString;signalWString;Vehicle.Chassis.Vehicle.WString;TX;wstring;Vehicle.Chassis.Vehicle.WString
|
||||||
BS;TXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;TX;char;Vehicle.Chassis.Vehicle.Char;;;;;
|
BS;TXClassForChar;SignalTypeChar;signalChar;Vehicle.Chassis.Vehicle.Char;TX;char;Vehicle.Chassis.Vehicle.Char
|
||||||
BS;TXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;TX;char16;Vehicle.Chassis.Vehicle.Char16;;;;;
|
BS;TXClassForChar16;SignalTypeChar16;signalChar16;Vehicle.Chassis.Vehicle.Char16;TX;char16;Vehicle.Chassis.Vehicle.Char16
|
||||||
BS;TXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;TX;char32;Vehicle.Chassis.Vehicle.Char32;;;;;
|
BS;TXClassForChar32;SignalTypeChar32;signalChar32;Vehicle.Chassis.Vehicle.Char32;TX;char32;Vehicle.Chassis.Vehicle.Char32
|
||||||
BS;TXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;TX;wchar;Vehicle.Chassis.Vehicle.WChar;;;;;
|
BS;TXClassForWChar;SignalTypeWChar;signalWChar;Vehicle.Chassis.Vehicle.WChar;TX;wchar;Vehicle.Chassis.Vehicle.WChar
|
||||||
BS;TXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;TX;u8string;Vehicle.Chassis.Vehicle.U8String;;;;;
|
BS;TXClassForU8String;SignalTypeU8String;signalU8String;Vehicle.Chassis.Vehicle.U8String;TX;u8string;Vehicle.Chassis.Vehicle.U8String
|
||||||
BS;TXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;TX;u16string;Vehicle.Chassis.Vehicle.U16String;;;;;
|
BS;TXClassForU16String;SignalTypeU16String;signalU16String;Vehicle.Chassis.Vehicle.U16String;TX;u16string;Vehicle.Chassis.Vehicle.U16String
|
||||||
BS;TXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;TX;u32string;Vehicle.Chassis.Vehicle.U32String;;;;;
|
BS;TXClassForU32String;SignalTypeU32String;signalU32String;Vehicle.Chassis.Vehicle.U32String;TX;u32string;Vehicle.Chassis.Vehicle.U32String
|
||||||
BS;TXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;TX;native;Vehicle.Chassis.Vehicle.Native;;;;;
|
BS;TXClassForNative;SignalTypeNative;signalNative;Vehicle.Chassis.Vehicle.Native;TX;native;Vehicle.Chassis.Vehicle.Native
|
||||||
|
|||||||
|
6
framework_tests/vss_util/vss_with_formula.csv
Normal file
6
framework_tests/vss_util/vss_with_formula.csv
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
;Class name;Function name;Signal name;vss;Signal direction;type;DBC CAN name includes CAN message name;Formula
|
||||||
|
;;;;;;;;
|
||||||
|
VD;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Body.Int32;RX;int32;CAN_Input.int32;"int32_t signalInt32 = value.get<int32_t>(); signalInt32 *= 2;"
|
||||||
|
VD;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Body.String;RX;string;CAN_Input.string;"sdv::string signalString = value.get<sdv::string>(); signalString.append(""_string_added"");"
|
||||||
|
BS;RXClassForInt32;SignalTypeInt32;signalInt32;Vehicle.Chassis.Body.Int32;RX;int32;Vehicle.Chassis.Body.Int32;
|
||||||
|
BS;RXClassForString;SignalTypeString;signalString;Vehicle.Chassis.Body.String;RX;string;Vehicle.Chassis.Body.String;
|
||||||
|
@@ -32,13 +32,14 @@ void CCSVFileReader::Help()
|
|||||||
std::cout << " [required] Column 'CAN name' must contain a character '.' (for vehicle device signal)." << std::endl;
|
std::cout << " [required] Column 'CAN name' must contain a character '.' (for vehicle device signal)." << std::endl;
|
||||||
std::cout << " [required] Last column: in case of vehicle device it is 'CAN name'." << std::endl;
|
std::cout << " [required] Last column: in case of vehicle device it is 'CAN name'." << std::endl;
|
||||||
std::cout << " [required] Last column: in case of basic service it is avss from vehicle device." << std::endl;
|
std::cout << " [required] Last column: in case of basic service it is avss from vehicle device." << std::endl;
|
||||||
|
std::cout << " [optional] additonal column: c++ code to recalulate the signal value in the vehicle device." << std::endl;
|
||||||
std::cout << " [recommended] Cells may be empty. In that case either a default string is created or previous entry is used." << std::endl;
|
std::cout << " [recommended] Cells may be empty. In that case either a default string is created or previous entry is used." << std::endl;
|
||||||
std::cout << " [recommended] Column Class name should start with uppercase character." << std::endl;
|
std::cout << " [recommended] Column Class name should start with uppercase character." << std::endl;
|
||||||
std::cout << " [recommended] Column Function name should start with uppercase character." << std::endl;
|
std::cout << " [recommended] Column Function name should start with uppercase character." << std::endl;
|
||||||
std::cout << " [recommended] Column Signal name should start with lowercase character." << std::endl;
|
std::cout << " [recommended] Column Signal name should start with lowercase character." << std::endl;
|
||||||
std::cout << "Summary can be found in file 'summary.txt'." << std::endl;
|
std::cout << "Summary can be found in file 'summary.txt'." << std::endl;
|
||||||
std::cout << "Columns:" << std::endl;
|
std::cout << "Columns:" << std::endl;
|
||||||
std::cout << "Device Type ';' Class name ';' Function name ';' Signal name ';' Interface (vss) ';' Direction ';' Signal value type ';' 'CAN name' or Interface(vss)" << std::endl;
|
std::cout << "Device Type ';' Class name ';' Function name ';' Signal name ';' Interface (vss) ';' Direction ';' Signal value type ';' 'CAN name' or Interface(vss); Formula (is optional, normally empty)" << std::endl;
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
std::cout << "e.g." << std::endl;
|
std::cout << "e.g." << std::endl;
|
||||||
std::cout << "VD ';' FrontWheel ';' SetAverageAngle ';' averageAngle ';' Vehicle.Chassis.Axle.Row.Wheel.AverageAngle ';' RX ';' float ';' CANMsg.Angle" << std::endl;
|
std::cout << "VD ';' FrontWheel ';' SetAverageAngle ';' averageAngle ';' Vehicle.Chassis.Axle.Row.Wheel.AverageAngle ';' RX ';' float ';' CANMsg.Angle" << std::endl;
|
||||||
@@ -82,7 +83,28 @@ void CCSVFileReader::ReadLine(const std::string& ssLine, const uint32_t index, s
|
|||||||
{
|
{
|
||||||
item = Trim(item);
|
item = Trim(item);
|
||||||
auto cType = GetCTypeFromIDLType(item); // maybe its a IDL type
|
auto cType = GetCTypeFromIDLType(item); // maybe its a IDL type
|
||||||
if (MustNotContainSpaces(item) || (cType.size() != 0))
|
|
||||||
|
if ((parts.size() == (vssVDColumns::column_vdFormula)) && !item.empty())
|
||||||
|
{
|
||||||
|
// we have the formula column, if not empty, collect everything
|
||||||
|
auto collectItem = item;
|
||||||
|
while (std::getline(ss, item, ';'))
|
||||||
|
{
|
||||||
|
collectItem.append(";");
|
||||||
|
collectItem.append(item);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove " from front and end
|
||||||
|
if (!collectItem.empty() && collectItem.front() == '"' && collectItem.back() == '"') {
|
||||||
|
collectItem = collectItem.substr(1, collectItem.size() - 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace all occurrences of "" with "
|
||||||
|
collectItem = std::regex_replace(collectItem, std::regex("\"\""), "\"");
|
||||||
|
|
||||||
|
parts.push_back(collectItem);
|
||||||
|
}
|
||||||
|
else if (MustNotContainSpaces(item) || (cType.size() != 0))
|
||||||
{
|
{
|
||||||
parts.push_back(item);
|
parts.push_back(item);
|
||||||
}
|
}
|
||||||
@@ -94,6 +116,10 @@ void CCSVFileReader::ReadLine(const std::string& ssLine, const uint32_t index, s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (parts.size() == (endColumn - 1))
|
||||||
|
{
|
||||||
|
parts.push_back("");
|
||||||
|
}
|
||||||
if (parts.size() >= endColumn)
|
if (parts.size() >= endColumn)
|
||||||
{
|
{
|
||||||
ParseColumns(parts, index);
|
ParseColumns(parts, index);
|
||||||
@@ -140,7 +166,7 @@ void CCSVFileReader::ParseColumns(const std::vector<std::string>& parts, const u
|
|||||||
signal.className = GenerateDefaultIfEmpty(parts[vssVDColumns::column_className], "ClassName", index);
|
signal.className = GenerateDefaultIfEmpty(parts[vssVDColumns::column_className], "ClassName", index);
|
||||||
|
|
||||||
if (AddFunctionVDDefinition(signal, parts[vssVDColumns::column_functionName], parts[vssVDColumns::column_signalName],
|
if (AddFunctionVDDefinition(signal, parts[vssVDColumns::column_functionName], parts[vssVDColumns::column_signalName],
|
||||||
parts[vssVDColumns::column_canSignalName], parts[vssVDColumns::column_signalCType], index))
|
parts[vssVDColumns::column_canSignalName], parts[vssVDColumns::column_signalCType], parts[vssVDColumns::column_vdFormula], index))
|
||||||
{
|
{
|
||||||
ValidateVDCodeStyle(signal, m_verbose);
|
ValidateVDCodeStyle(signal, m_verbose);
|
||||||
m_vdSignals.push_back(signal);
|
m_vdSignals.push_back(signal);
|
||||||
@@ -185,7 +211,7 @@ bool CCSVFileReader::AddToExistingVDSignal(std::vector <SSignalVDDefinition>& si
|
|||||||
|
|
||||||
|
|
||||||
AddFunctionVDDefinition(signal, parts[vssVDColumns::column_functionName], parts[vssVDColumns::column_signalName],
|
AddFunctionVDDefinition(signal, parts[vssVDColumns::column_functionName], parts[vssVDColumns::column_signalName],
|
||||||
parts[vssVDColumns::column_canSignalName], parts[vssVDColumns::column_signalCType], index);
|
parts[vssVDColumns::column_canSignalName], parts[vssVDColumns::column_signalCType], parts[vssVDColumns::column_vdFormula], index);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -215,7 +241,7 @@ bool CCSVFileReader::AddToExistingBSSignal(std::vector <SSignalBSDefinition>& si
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool CCSVFileReader::AddFunctionVDDefinition(SSignalVDDefinition& signal, const std::string& functionName, const std::string& signalName,
|
bool CCSVFileReader::AddFunctionVDDefinition(SSignalVDDefinition& signal, const std::string& functionName, const std::string& signalName,
|
||||||
const std::string& canSignalName, const std::string& idlType, const uint32_t index)
|
const std::string& canSignalName, const std::string& idlType, const std::string& formula, const uint32_t index)
|
||||||
{
|
{
|
||||||
if (!MustContainDotOrIsEmpty(canSignalName, true)) // can signal must must not be empty
|
if (!MustContainDotOrIsEmpty(canSignalName, true)) // can signal must must not be empty
|
||||||
{
|
{
|
||||||
@@ -238,6 +264,7 @@ bool CCSVFileReader::AddFunctionVDDefinition(SSignalVDDefinition& signal, const
|
|||||||
func.signalName = GenerateDefaultIfEmpty(signalName, "variableName", index);
|
func.signalName = GenerateDefaultIfEmpty(signalName, "variableName", index);
|
||||||
func.canSignalName = canSignalName;
|
func.canSignalName = canSignalName;
|
||||||
func.idlType = idlType;
|
func.idlType = idlType;
|
||||||
|
func.formula = formula;
|
||||||
|
|
||||||
ValidateVDCodeStyle(func, m_verbose);
|
ValidateVDCodeStyle(func, m_verbose);
|
||||||
signal.vecFunctions.push_back(func);
|
signal.vecFunctions.push_back(func);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
#define CSV_FILE_READER_H
|
#define CSV_FILE_READER_H
|
||||||
|
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
#include <regex>
|
||||||
#include "vss_helper.h"
|
#include "vss_helper.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -54,6 +55,7 @@ private:
|
|||||||
column_signalCType,
|
column_signalCType,
|
||||||
column_canSignalName,
|
column_canSignalName,
|
||||||
column_vdDefinition = column_canSignalName,
|
column_vdDefinition = column_canSignalName,
|
||||||
|
column_vdFormula,
|
||||||
column_end
|
column_end
|
||||||
} vssVDColumns;
|
} vssVDColumns;
|
||||||
|
|
||||||
@@ -116,11 +118,12 @@ private:
|
|||||||
* @param[in] signalName signal name
|
* @param[in] signalName signal name
|
||||||
* @param[in] canSignalName can signal name
|
* @param[in] canSignalName can signal name
|
||||||
* @param[in] idlType idl type
|
* @param[in] idlType idl type
|
||||||
|
* @param[in] formula code to convert signal value in vehicle device
|
||||||
* @param[in] index line number
|
* @param[in] index line number
|
||||||
* @return True if function definition was added, otherwise false
|
* @return True if function definition was added, otherwise false
|
||||||
*/
|
*/
|
||||||
bool AddFunctionVDDefinition(SSignalVDDefinition& signal, const std::string& functionName,
|
bool AddFunctionVDDefinition(SSignalVDDefinition& signal, const std::string& functionName, const std::string& signalName,
|
||||||
const std::string& signalName, const std::string& canSignalName, const std::string& idlType, const uint32_t index);
|
const std::string& canSignalName, const std::string& idlType, const std::string& formula, const uint32_t index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief add function definition to the container of an existing signal (basic service)
|
* @brief add function definition to the container of an existing signal (basic service)
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ extern "C" int main(int iArgc, const char* rgszArgv[])
|
|||||||
rArgVerboseDef.AddSubOptionName("verbose");
|
rArgVerboseDef.AddSubOptionName("verbose");
|
||||||
cmdln.DefineSubOption("prefix", ssPrefix, "prefix, used by cmake library and signal definition in signal_identifier.h file.");
|
cmdln.DefineSubOption("prefix", ssPrefix, "prefix, used by cmake library and signal definition in signal_identifier.h file.");
|
||||||
cmdln.DefineSubOption("enable_components", bEnableComponents, "Creates additionally to the idl files the code for the components.");
|
cmdln.DefineSubOption("enable_components", bEnableComponents, "Creates additionally to the idl files the code for the components.");
|
||||||
cmdln.DefineSubOption("version", ssVersion, "Optional: version information of the dbc file.");
|
cmdln.DefineSubOption("version", ssVersion, "Optional: version information for the created files.");
|
||||||
cmdln.DefineOption("O", pathOutputDir, "Set output directory (required).");
|
cmdln.DefineOption("O", pathOutputDir, "Set output directory (required).");
|
||||||
cmdln.DefineDefaultArgument(ssVSSFileName, "Excel file.");
|
cmdln.DefineDefaultArgument(ssVSSFileName, "Excel file.");
|
||||||
cmdln.Parse(static_cast<size_t>(iArgc), rgszArgv);
|
cmdln.Parse(static_cast<size_t>(iArgc), rgszArgv);
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ public:
|
|||||||
std::string functionName; ///< signal value set function name
|
std::string functionName; ///< signal value set function name
|
||||||
std::string signalName; ///< signal name
|
std::string signalName; ///< signal name
|
||||||
std::string canSignalName; ///< can signal name (combination of signak messages and signal name)
|
std::string canSignalName; ///< can signal name (combination of signak messages and signal name)
|
||||||
|
std::string formula; ///< c++ code if the value has to be converted
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -418,6 +418,27 @@ std::string CVSSVDCodingRX::Code_VD_RXRegister( const std::string& class_name, c
|
|||||||
mapKeywords["signal_name"] = function.signalName;
|
mapKeywords["signal_name"] = function.signalName;
|
||||||
mapKeywords["value_ctype"] = GetCTypeFromIDLType(function.idlType);
|
mapKeywords["value_ctype"] = GetCTypeFromIDLType(function.idlType);
|
||||||
mapKeywords["class_name_lowercase"] = class_name_lowercase;
|
mapKeywords["class_name_lowercase"] = class_name_lowercase;
|
||||||
|
if (!function.formula.empty())
|
||||||
|
{
|
||||||
|
auto formula = " " + function.formula;
|
||||||
|
std::string target = ";";
|
||||||
|
std::string replacement = ";\n";
|
||||||
|
|
||||||
|
size_t pos = 0;
|
||||||
|
while ((pos = formula.find(target, pos)) != std::string::npos)
|
||||||
|
{
|
||||||
|
formula.replace(pos, target.length(), replacement);
|
||||||
|
pos += replacement.length();
|
||||||
|
}
|
||||||
|
|
||||||
|
mapKeywords["convertFormula"] = formula;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
std::stringstream formula;
|
||||||
|
formula << Code_VD_RXFormular(function);
|
||||||
|
mapKeywords["convertFormula"] = formula.str();
|
||||||
|
}
|
||||||
|
|
||||||
return ReplaceKeywords(R"code(
|
return ReplaceKeywords(R"code(
|
||||||
/**
|
/**
|
||||||
@@ -452,13 +473,7 @@ void CVehicleDevice%class_name%::Unregister%function_name%Event(vss::%vssWithCol
|
|||||||
*/
|
*/
|
||||||
void CVehicleDevice%class_name%::ExecuteAllCallBacksFor%start_with_uppercase%(sdv::any_t value)
|
void CVehicleDevice%class_name%::ExecuteAllCallBacksFor%start_with_uppercase%(sdv::any_t value)
|
||||||
{
|
{
|
||||||
%value_ctype% %signal_name% = value.get<%value_ctype%>();
|
%convertFormula%
|
||||||
|
|
||||||
//
|
|
||||||
// TODO:
|
|
||||||
// Convert vehicle specific value to abstract unit/range
|
|
||||||
//
|
|
||||||
|
|
||||||
std::lock_guard<std::mutex> lock(m_%signal_name%MutexCallbacks);
|
std::lock_guard<std::mutex> lock(m_%signal_name%MutexCallbacks);
|
||||||
for (const auto& callback : m_%signal_name%Callbacks)
|
for (const auto& callback : m_%signal_name%Callbacks)
|
||||||
{
|
{
|
||||||
@@ -467,3 +482,18 @@ void CVehicleDevice%class_name%::ExecuteAllCallBacksFor%start_with_uppercase%(sd
|
|||||||
}
|
}
|
||||||
)code", mapKeywords);
|
)code", mapKeywords);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string CVSSVDCodingRX::Code_VD_RXFormular(const SFunctionVDDefinition& function) const
|
||||||
|
{
|
||||||
|
CKeywordMap mapKeywords;
|
||||||
|
mapKeywords["signal_name"] = function.signalName;
|
||||||
|
mapKeywords["value_ctype"] = GetCTypeFromIDLType(function.idlType);
|
||||||
|
|
||||||
|
return ReplaceKeywords(R"code( %value_ctype% %signal_name% = value.get<%value_ctype%>();
|
||||||
|
|
||||||
|
//
|
||||||
|
// TODO:
|
||||||
|
// Convert vehicle specific value to abstract unit/range
|
||||||
|
//
|
||||||
|
)code", mapKeywords);
|
||||||
|
}
|
||||||
|
|||||||
@@ -143,6 +143,13 @@ protected:
|
|||||||
std::string Code_VD_RXRegister(const std::string& class_name, const SFunctionVDDefinition& function,
|
std::string Code_VD_RXRegister(const std::string& class_name, const SFunctionVDDefinition& function,
|
||||||
const std::string& vssWithColons) const;
|
const std::string& vssWithColons) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief create code to get the value or use use user defined c++ code
|
||||||
|
* @param[in] function function definition structure
|
||||||
|
* @return default code to get the value
|
||||||
|
*/
|
||||||
|
std::string Code_VD_RXFormular(const SFunctionVDDefinition& function) const;
|
||||||
|
|
||||||
std::string m_ssPrefix; ///< prefix, used by cmake library and signal definition in signal_identifier.h file.
|
std::string m_ssPrefix; ///< prefix, used by cmake library and signal definition in signal_identifier.h file.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user