update vss_util tool (#2)

This commit is contained in:
tompzf
2025-11-12 15:40:23 +01:00
committed by GitHub
parent 6ed4b1534e
commit 2fb043b2be
37 changed files with 485 additions and 179 deletions

11
.gitignore vendored
View File

@@ -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

View File

@@ -8,7 +8,7 @@
#include "bs_front_door_left.h" #include "bs_front_door_left.h"
/** /**
* @brief ConstructorF * @brief Constructor
*/ */
CBasicServiceFrontDoorLeft::CBasicServiceFrontDoorLeft() CBasicServiceFrontDoorLeft::CBasicServiceFrontDoorLeft()
{ {

View File

@@ -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)

View File

@@ -8,7 +8,7 @@
#include "bs_front_door_right.h" #include "bs_front_door_right.h"
/** /**
* @brief ConstructorF * @brief Constructor
*/ */
CBasicServiceFrontDoorRight::CBasicServiceFrontDoorRight() CBasicServiceFrontDoorRight::CBasicServiceFrontDoorRight()
{ {

View File

@@ -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)

View File

@@ -8,7 +8,7 @@
#include "bs_rear_door_left.h" #include "bs_rear_door_left.h"
/** /**
* @brief ConstructorF * @brief Constructor
*/ */
CBasicServiceRearDoorLeft::CBasicServiceRearDoorLeft() CBasicServiceRearDoorLeft::CBasicServiceRearDoorLeft()
{ {

View File

@@ -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)

View File

@@ -8,7 +8,7 @@
#include "bs_rear_door_right.h" #include "bs_rear_door_right.h"
/** /**
* @brief ConstructorF * @brief Constructor
*/ */
CBasicServiceRearDoorRight::CBasicServiceRearDoorRight() CBasicServiceRearDoorRight::CBasicServiceRearDoorRight()
{ {

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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");
} }
} }

View File

@@ -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;

View File

@@ -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
1 Class name Function name Signal name vss Signal direction type DBC CAN name includes CAN message name
2
3 VD VehicleSpeed Speed vehicleSpeed Vehicle.Speed RX float CAN_Input.Speed
4 VD VehicleTrunk Open trunk Vehicle.Body.Trunk TX boolean CAN_Output.OpenTrunk
5 BS VehicleSpeed Speed vehicleSpeed Vehicle.Speed RX float Vehicle.Speed
6 BS VehicleTrunk Open trunk Vehicle.Body.Trunk TX boolean Vehicle.Body.Trunk

View File

@@ -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)

View File

@@ -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;

View File

@@ -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
1 Class name Function name Signal name vss Signal direction type DBC CAN name includes CAN message name
2
3 VD SteeringWheel SteeringWheel wheelAngle Vehicle.Chassis.SteeringWheel.Angle RX float CAN_Input.SteeringWheel
4 VD VehicleSpeed Speed vehicleSpeed Vehicle.Speed RX float CAN_Input.Speed
5 VD VehicleChassisAxle RearAxle axleAngle Vehicle.Chassis.RearAxle.Row.Wheel TX float CAN_Output.RearAngle
6 VD IsActiveCounter Counter liveCounter Vehicle.Software.Application.IsActiveCounter TX uint8 CAN_Output.IsActiveCounter
7 BS SteeringWheel SteeringWheel wheelAngle Vehicle.Chassis.SteeringWheel.Angle RX float Vehicle.Chassis.SteeringWheel.Angle

View File

@@ -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)

View 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)

View File

@@ -0,0 +1,6 @@
[Configuration]
Version = 100
[[Component]]
Path = "data_dispatch_service.sdv"
Class = "DataDispatchService"

View File

@@ -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"

View File

@@ -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"

View 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

View File

@@ -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)

View File

@@ -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
1 Class name Function name Signal name vss Signal direction type DBC CAN name includes CAN message name
2
3 VD RXClassForBoolean SignalTypeBoolean signalBoolean Vehicle.Chassis.Vehicle.Boolean RX boolean CAN_Input.boolean char
4 VD RXClassForFloat SignalTypeFloat signalFloat Vehicle.Chassis.Vehicle.Float RX float CAN_Input.float char16
5 VD RXClassForDouble SignalTypeDouble signalDouble Vehicle.Chassis.Vehicle.Double RX double CAN_Input.double char32
6 VD RXClassForLongDouble SignalTypeLongDouble signalLongDouble Vehicle.Chassis.Vehicle.LongDouble RX long double CAN_Input.long_double wchar
7 VD RXClassForShort SignalTypeShort signalShort Vehicle.Chassis.Vehicle.Short RX short CAN_Input.short u8string
8 VD RXClassForUnsignedShort SignalTypeUnsignedShort signalUnsignedShort Vehicle.Chassis.Vehicle.UnsignedShort RX unsigned short CAN_Input.unsigned_short u16string
9 VD RXClassForLong SignalTypeLong signalLong Vehicle.Chassis.Vehicle.Long RX long CAN_Input.long u32string
10 VD RXClassForUnsignedLong SignalTypeUnsignedLong signalUnsignedLong Vehicle.Chassis.Vehicle.UnsignedLong RX unsigned long CAN_Input.unsigned_long native
11 VD RXClassForLongLong SignalTypeLongLong signalLongLong Vehicle.Chassis.Vehicle.LongLong RX long long CAN_Input.long_long
12 VD RXClassForUnsignedLongLong SignalTypeUnsignedLongLong signalUnsignedLongLong Vehicle.Chassis.Vehicle.UnsignedLongLong RX unsigned long long CAN_Input.unsigned_long_long
13 VD RXClassForInt8 SignalTypeInt8 signalInt8 Vehicle.Chassis.Vehicle.Int8 RX int8 CAN_Input.int8
14 VD RXClassForUint8 SignalTypeUint8 signalUint8 Vehicle.Chassis.Vehicle.Uint8 RX uint8 CAN_Input.uint8
15 VD RXClassForInt16 SignalTypeInt16 signalInt16 Vehicle.Chassis.Vehicle.Int16 RX int16 CAN_Input.int16
16 VD RXClassForUint16 SignalTypeUint16 signalUint16 Vehicle.Chassis.Vehicle.Uint16 RX uint16 CAN_Input.uint16
17 VD RXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Vehicle.Int32 RX int32 CAN_Input.int32
18 VD RXClassForUint32 SignalTypeUint32 signalUint32 Vehicle.Chassis.Vehicle.Uint32 RX uint32 CAN_Input.uint32
19 VD RXClassForInt64 SignalTypeInt64 signalInt64 Vehicle.Chassis.Vehicle.Int64 RX int64 CAN_Input.int64
20 VD RXClassForUint64 SignalTypeUint64 signalUint64 Vehicle.Chassis.Vehicle.Uint64 RX uint64 CAN_Input.uint64
21 VD RXClassForString SignalTypeString signalString Vehicle.Chassis.Vehicle.String RX string CAN_Input.string
22 VD RXClassForWString SignalTypeWString signalWString Vehicle.Chassis.Vehicle.WString RX wstring CAN_Input.WString
23 VD RXClassForChar SignalTypeChar signalChar Vehicle.Chassis.Vehicle.Char RX char CAN_Input.char
24 VD RXClassForChar16 SignalTypeChar16 signalChar16 Vehicle.Chassis.Vehicle.Char16 RX char16 CAN_Input.char16
25 VD RXClassForChar32 SignalTypeChar32 signalChar32 Vehicle.Chassis.Vehicle.Char32 RX char32 CAN_Input.char32
26 VD RXClassForWChar SignalTypeWChar signalWChar Vehicle.Chassis.Vehicle.WChar RX wchar CAN_Input.wchar
27 VD RXClassForU8String SignalTypeU8String signalU8String Vehicle.Chassis.Vehicle.U8String RX u8string CAN_Input.u8string
28 VD RXClassForU16String SignalTypeU16String signalU16String Vehicle.Chassis.Vehicle.U16String RX u16string CAN_Input.u16string
29 VD RXClassForU32String SignalTypeU32String signalU32String Vehicle.Chassis.Vehicle.U32String RX u32string CAN_Input.u32string
30 VD RXClassForNative SignalTypeNative signalNative Vehicle.Chassis.Vehicle.Native RX native CAN_Input.native
31 VD TXClassForBoolean SignalTypeBoolean signalBoolean Vehicle.Chassis.Vehicle.Boolean TX boolean CAN_Output.boolean
32 VD TXClassForFloat SignalTypeFloat signalFloat Vehicle.Chassis.Vehicle.Float TX float CAN_Output.float
33 VD TXClassForDouble SignalTypeDouble signalDouble Vehicle.Chassis.Vehicle.Double TX double CAN_Output.double
34 VD TXClassForLongDouble SignalTypeLongDouble signalLongDouble Vehicle.Chassis.Vehicle.LongDouble TX long double CAN_Output.long_double
35 VD TXClassForShort SignalTypeShort signalShort Vehicle.Chassis.Vehicle.Short TX short CAN_Output.short
36 VD TXClassForUnsignedShort SignalTypeUnsignedShort signalUnsignedShort Vehicle.Chassis.Vehicle.UnsignedShort TX unsigned short CAN_Output.unsigned_short
37 VD TXClassForLong SignalTypeLong signalLong Vehicle.Chassis.Vehicle.Long TX long CAN_Output.long
38 VD TXClassForUnsignedLong SignalTypeUnsignedLong signalUnsignedLong Vehicle.Chassis.Vehicle.UnsignedLong TX unsigned long CAN_Output.unsigned_long
39 VD TXClassForLongLong SignalTypeLongLong signalLongLong Vehicle.Chassis.Vehicle.LongLong TX long long CAN_Output.long_long
40 VD TXClassForUnsignedLongLong SignalTypeUnsignedLongLong signalUnsignedLongLong Vehicle.Chassis.Vehicle.UnsignedLongLong TX unsigned long long CAN_Output.unsigned_long_long
41 VD TXClassForInt8 SignalTypeInt8 signalInt8 Vehicle.Chassis.Vehicle.Int8 TX int8 CAN_Output.int8
42 VD TXClassForUint8 SignalTypeUint8 signalUint8 Vehicle.Chassis.Vehicle.Uint8 TX uint8 CAN_Output.uint8
43 VD TXClassForInt16 SignalTypeInt16 signalInt16 Vehicle.Chassis.Vehicle.Int16 TX int16 CAN_Output.int16
44 VD TXClassForUint16 SignalTypeUint16 signalUint16 Vehicle.Chassis.Vehicle.Uint16 TX uint16 CAN_Output.uint16
45 VD TXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Vehicle.Int32 TX int32 CAN_Output.int32
46 VD TXClassForUint32 SignalTypeUint32 signalUint32 Vehicle.Chassis.Vehicle.Uint32 TX uint32 CAN_Output.uint32
47 VD TXClassForInt64 SignalTypeInt64 signalInt64 Vehicle.Chassis.Vehicle.Int64 TX int64 CAN_Output.int64
48 VD TXClassForUint64 SignalTypeUint64 signalUint64 Vehicle.Chassis.Vehicle.Uint64 TX uint64 CAN_Output.uint64
49 VD TXClassForString SignalTypeString signalString Vehicle.Chassis.Vehicle.String TX string CAN_Output.string
50 VD TXClassForWString SignalTypeWString signalWString Vehicle.Chassis.Vehicle.WString TX wstring CAN_Output.WString
51 VD TXClassForChar SignalTypeChar signalChar Vehicle.Chassis.Vehicle.Char TX char CAN_Output.char
52 VD TXClassForChar16 SignalTypeChar16 signalChar16 Vehicle.Chassis.Vehicle.Char16 TX char16 CAN_Output.char16
53 VD TXClassForChar32 SignalTypeChar32 signalChar32 Vehicle.Chassis.Vehicle.Char32 TX char32 CAN_Output.char32
54 VD TXClassForWChar SignalTypeWChar signalWChar Vehicle.Chassis.Vehicle.WChar TX wchar CAN_Output.wchar
55 VD TXClassForU8String SignalTypeU8String signalU8String Vehicle.Chassis.Vehicle.U8String TX u8string CAN_Output.u8string
56 VD TXClassForU16String SignalTypeU16String signalU16String Vehicle.Chassis.Vehicle.U16String TX u16string CAN_Output.u16string
57 VD TXClassForU32String SignalTypeU32String signalU32String Vehicle.Chassis.Vehicle.U32String TX u32string CAN_Output.u32string
58 VD TXClassForNative SignalTypeNative signalNative Vehicle.Chassis.Vehicle.Native TX native CAN_Output.native
59 BS RXClassForBoolean SignalTypeBoolean signalBoolean Vehicle.Chassis.Vehicle.Boolean RX boolean Vehicle.Chassis.Vehicle.Boolean
60 BS RXClassForFloat SignalTypeFloat signalFloat Vehicle.Chassis.Vehicle.Float RX float Vehicle.Chassis.Vehicle.Float
61 BS RXClassForDouble SignalTypeDouble signalDouble Vehicle.Chassis.Vehicle.Double RX double Vehicle.Chassis.Vehicle.Double
62 BS RXClassForLongDouble SignalTypeLongDouble signalLongDouble Vehicle.Chassis.Vehicle.LongDouble RX long double Vehicle.Chassis.Vehicle.LongDouble
63 BS RXClassForShort SignalTypeShort signalShort Vehicle.Chassis.Vehicle.Short RX short Vehicle.Chassis.Vehicle.Short
64 BS RXClassForUnsignedShort SignalTypeUnsignedShort signalUnsignedShort Vehicle.Chassis.Vehicle.UnsignedShort RX unsigned short Vehicle.Chassis.Vehicle.UnsignedShort
65 BS RXClassForLong SignalTypeLong signalLong Vehicle.Chassis.Vehicle.Long RX long Vehicle.Chassis.Vehicle.Long
66 BS RXClassForUnsignedLong SignalTypeUnsignedLong signalUnsignedLong Vehicle.Chassis.Vehicle.UnsignedLong RX unsigned long Vehicle.Chassis.Vehicle.UnsignedLong
67 BS RXClassForLongLong SignalTypeLongLong signalLongLong Vehicle.Chassis.Vehicle.LongLong RX long long Vehicle.Chassis.Vehicle.LongLong
68 BS RXClassForUnsignedLongLong SignalTypeUnsignedLongLong signalUnsignedLongLong Vehicle.Chassis.Vehicle.UnsignedLongLong RX unsigned long long Vehicle.Chassis.Vehicle.UnsignedLongLong
69 BS RXClassForInt8 SignalTypeInt8 signalInt8 Vehicle.Chassis.Vehicle.Int8 RX int8 Vehicle.Chassis.Vehicle.Int8
70 BS RXClassForUint8 SignalTypeUint8 signalUint8 Vehicle.Chassis.Vehicle.Uint8 RX uint8 Vehicle.Chassis.Vehicle.Uint8
71 BS RXClassForInt16 SignalTypeInt16 signalInt16 Vehicle.Chassis.Vehicle.Int16 RX int16 Vehicle.Chassis.Vehicle.Int16
72 BS RXClassForUint16 SignalTypeUint16 signalUint16 Vehicle.Chassis.Vehicle.Uint16 RX uint16 Vehicle.Chassis.Vehicle.Uint16
73 BS RXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Vehicle.Int32 RX int32 Vehicle.Chassis.Vehicle.Int32
74 BS RXClassForUint32 SignalTypeUint32 signalUint32 Vehicle.Chassis.Vehicle.Uint32 RX uint32 Vehicle.Chassis.Vehicle.Uint32
75 BS RXClassForInt64 SignalTypeInt64 signalInt64 Vehicle.Chassis.Vehicle.Int64 RX int64 Vehicle.Chassis.Vehicle.Int64
76 BS RXClassForUint64 SignalTypeUint64 signalUint64 Vehicle.Chassis.Vehicle.Uint64 RX uint64 Vehicle.Chassis.Vehicle.Uint64
77 BS RXClassForString SignalTypeString signalString Vehicle.Chassis.Vehicle.String RX string Vehicle.Chassis.Vehicle.String
78 BS RXClassForWString SignalTypeWString signalWString Vehicle.Chassis.Vehicle.WString RX wstring Vehicle.Chassis.Vehicle.WString
79 BS RXClassForChar SignalTypeChar signalChar Vehicle.Chassis.Vehicle.Char RX char Vehicle.Chassis.Vehicle.Char
80 BS RXClassForChar16 SignalTypeChar16 signalChar16 Vehicle.Chassis.Vehicle.Char16 RX char16 Vehicle.Chassis.Vehicle.Char16
81 BS RXClassForChar32 SignalTypeChar32 signalChar32 Vehicle.Chassis.Vehicle.Char32 RX char32 Vehicle.Chassis.Vehicle.Char32
82 BS RXClassForWChar SignalTypeWChar signalWChar Vehicle.Chassis.Vehicle.WChar RX wchar Vehicle.Chassis.Vehicle.WChar
83 BS RXClassForU8String SignalTypeU8String signalU8String Vehicle.Chassis.Vehicle.U8String RX u8string Vehicle.Chassis.Vehicle.U8String
84 BS RXClassForU16String SignalTypeU16String signalU16String Vehicle.Chassis.Vehicle.U16String RX u16string Vehicle.Chassis.Vehicle.U16String
85 BS RXClassForU32String SignalTypeU32String signalU32String Vehicle.Chassis.Vehicle.U32String RX u32string Vehicle.Chassis.Vehicle.U32String
86 BS RXClassForNative SignalTypeNative signalNative Vehicle.Chassis.Vehicle.Native RX native Vehicle.Chassis.Vehicle.Native
87 BS TXClassForBoolean SignalTypeBoolean signalBoolean Vehicle.Chassis.Vehicle.Boolean TX boolean Vehicle.Chassis.Vehicle.Boolean
88 BS TXClassForFloat SignalTypeFloat signalFloat Vehicle.Chassis.Vehicle.Float TX float Vehicle.Chassis.Vehicle.Float
89 BS TXClassForDouble SignalTypeDouble signalDouble Vehicle.Chassis.Vehicle.Double TX double Vehicle.Chassis.Vehicle.Double
90 BS TXClassForLongDouble SignalTypeLongDouble signalLongDouble Vehicle.Chassis.Vehicle.LongDouble TX long double Vehicle.Chassis.Vehicle.LongDouble
91 BS TXClassForShort SignalTypeShort signalShort Vehicle.Chassis.Vehicle.Short TX short Vehicle.Chassis.Vehicle.Short
92 BS TXClassForUnsignedShort SignalTypeUnsignedShort signalUnsignedShort Vehicle.Chassis.Vehicle.UnsignedShort TX unsigned short Vehicle.Chassis.Vehicle.UnsignedShort
93 BS TXClassForLong SignalTypeLong signalLong Vehicle.Chassis.Vehicle.Long TX long Vehicle.Chassis.Vehicle.Long
94 BS TXClassForUnsignedLong SignalTypeUnsignedLong signalUnsignedLong Vehicle.Chassis.Vehicle.UnsignedLong TX unsigned long Vehicle.Chassis.Vehicle.UnsignedLong
95 BS TXClassForLongLong SignalTypeLongLong signalLongLong Vehicle.Chassis.Vehicle.LongLong TX long long Vehicle.Chassis.Vehicle.LongLong
96 BS TXClassForUnsignedLongLong SignalTypeUnsignedLongLong signalUnsignedLongLong Vehicle.Chassis.Vehicle.UnsignedLongLong TX unsigned long long Vehicle.Chassis.Vehicle.UnsignedLongLong
97 BS TXClassForInt8 SignalTypeInt8 signalInt8 Vehicle.Chassis.Vehicle.Int8 TX int8 Vehicle.Chassis.Vehicle.Int8
98 BS TXClassForUint8 SignalTypeUint8 signalUint8 Vehicle.Chassis.Vehicle.Uint8 TX uint8 Vehicle.Chassis.Vehicle.Uint8
99 BS TXClassForInt16 SignalTypeInt16 signalInt16 Vehicle.Chassis.Vehicle.Int16 TX int16 Vehicle.Chassis.Vehicle.Int16
100 BS TXClassForUint16 SignalTypeUint16 signalUint16 Vehicle.Chassis.Vehicle.Uint16 TX uint16 Vehicle.Chassis.Vehicle.Uint16
101 BS TXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Vehicle.Int32 TX int32 Vehicle.Chassis.Vehicle.Int32
102 BS TXClassForUint32 SignalTypeUint32 signalUint32 Vehicle.Chassis.Vehicle.Uint32 TX uint32 Vehicle.Chassis.Vehicle.Uint32
103 BS TXClassForInt64 SignalTypeInt64 signalInt64 Vehicle.Chassis.Vehicle.Int64 TX int64 Vehicle.Chassis.Vehicle.Int64
104 BS TXClassForUint64 SignalTypeUint64 signalUint64 Vehicle.Chassis.Vehicle.Uint64 TX uint64 Vehicle.Chassis.Vehicle.Uint64
105 BS TXClassForString SignalTypeString signalString Vehicle.Chassis.Vehicle.String TX string Vehicle.Chassis.Vehicle.String
106 BS TXClassForWString SignalTypeWString signalWString Vehicle.Chassis.Vehicle.WString TX wstring Vehicle.Chassis.Vehicle.WString
107 BS TXClassForChar SignalTypeChar signalChar Vehicle.Chassis.Vehicle.Char TX char Vehicle.Chassis.Vehicle.Char
108 BS TXClassForChar16 SignalTypeChar16 signalChar16 Vehicle.Chassis.Vehicle.Char16 TX char16 Vehicle.Chassis.Vehicle.Char16
109 BS TXClassForChar32 SignalTypeChar32 signalChar32 Vehicle.Chassis.Vehicle.Char32 TX char32 Vehicle.Chassis.Vehicle.Char32
110 BS TXClassForWChar SignalTypeWChar signalWChar Vehicle.Chassis.Vehicle.WChar TX wchar Vehicle.Chassis.Vehicle.WChar
111 BS TXClassForU8String SignalTypeU8String signalU8String Vehicle.Chassis.Vehicle.U8String TX u8string Vehicle.Chassis.Vehicle.U8String
112 BS TXClassForU16String SignalTypeU16String signalU16String Vehicle.Chassis.Vehicle.U16String TX u16string Vehicle.Chassis.Vehicle.U16String
113 BS TXClassForU32String SignalTypeU32String signalU32String Vehicle.Chassis.Vehicle.U32String TX u32string Vehicle.Chassis.Vehicle.U32String
114 BS TXClassForNative SignalTypeNative signalNative Vehicle.Chassis.Vehicle.Native TX native Vehicle.Chassis.Vehicle.Native

View 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;
1 Class name Function name Signal name vss Signal direction type DBC CAN name includes CAN message name Formula
2
3 VD RXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Body.Int32 RX int32 CAN_Input.int32 int32_t signalInt32 = value.get<int32_t>(); signalInt32 *= 2;
4 VD RXClassForString SignalTypeString signalString Vehicle.Chassis.Body.String RX string CAN_Input.string sdv::string signalString = value.get<sdv::string>(); signalString.append("_string_added");
5 BS RXClassForInt32 SignalTypeInt32 signalInt32 Vehicle.Chassis.Body.Int32 RX int32 Vehicle.Chassis.Body.Int32
6 BS RXClassForString SignalTypeString signalString Vehicle.Chassis.Body.String RX string Vehicle.Chassis.Body.String

View File

@@ -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);

View File

@@ -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)

View File

@@ -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);

View File

@@ -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
}; };
/** /**

View File

@@ -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);
}

View File

@@ -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.
}; };