diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..54b0fab --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,14 @@ +{ + "name": "ft_analytics", + "image": "ft_analytics:latest", + "workspaceFolder": "/workspaces/can_viewer", + "runArgs": [ + "--net=host", + "--privileged" + ], + "settings": {}, + "extensions": [ + "ms-iot.vscode-ros", + "ms-python.python" + ] +} diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..6ff834b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,46 @@ +FROM ubuntu:24.04 + +ENV PIP_BREAK_SYSTEM_PACKAGES=1 \ + SHELL=/bin/bash + +ARG USERNAME=can_viewer +ARG USER_UID=1000 +ARG USER_GID=${USER_UID} + +RUN if id -u "${USER_UID}" >/dev/null 2>&1; then \ + userdel "$(id -un "${USER_UID}")"; \ + fi \ + && groupadd --gid "${USER_GID}" "${USERNAME}" \ + && useradd --uid "${USER_UID}" --gid "${USER_GID}" -m "${USERNAME}" \ + && apt-get update \ + && apt-get install -y --no-install-recommends sudo \ + && echo "${USERNAME} ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} \ + && chmod 0440 /etc/sudoers.d/${USERNAME} + +RUN apt-get update \ + && apt-get upgrade -y \ + && apt-get install -y --no-install-recommends \ + python3-pip \ + nano \ + python3-rosdep \ + && rm -rf /var/lib/apt/lists/* + +RUN pip3 install --no-cache-dir python-can cantools + +RUN echo "source /opt/ros/jazzy/setup.bash" \ + >> /home/${USERNAME}/.bashrc \ + && echo "source /workspaces/can_viewer/install/setup.bash" \ + >> /home/${USERNAME}/.bashrc + +RUN usermod --shell /bin/bash -aG video ${USERNAME} + +WORKDIR /workspaces/can_viewer +COPY --chown=${USERNAME}:${USERNAME} ros2_ws/src ros2_ws/src + +RUN rosdep update \ + && rosdep install -r --rosdistro jazzy \ + --from-paths ros2_ws/src --ignore-src -y + +USER ${USERNAME} + +CMD ["/bin/bash"] diff --git a/ros2_ws/src/ft_can_transceiver_lib/.DS_Store b/ros2_ws/src/ft_can_transceiver_lib/.DS_Store new file mode 100644 index 0000000..98a169a Binary files /dev/null and b/ros2_ws/src/ft_can_transceiver_lib/.DS_Store differ diff --git a/ros2_ws/src/ft_can_transceiver_lib/.gitignore b/ros2_ws/src/ft_can_transceiver_lib/.gitignore new file mode 100644 index 0000000..d163863 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/CMakeLists.txt b/ros2_ws/src/ft_can_transceiver_lib/CMakeLists.txt new file mode 100644 index 0000000..0539460 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/CMakeLists.txt @@ -0,0 +1,77 @@ +cmake_minimum_required(VERSION 3.8) +project(ft_can_transceiver_lib) + +# include for standard directories +include(GNUInstallDirs) + +# include for creating config.cmake +include(CMakePackageConfigHelpers) + +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") + add_compile_options(-Wall -Wextra -Wpedantic) +endif() + +set(AUTOGENERATED_FILE_NAME can1) +set(AUTOGENERATED_FILE_NAME_TRANSCEIVER transceiver) +set(CAN_DBC_FILE_NAME can/CANdbcFT25/CAN1MainFT25.dbc) + +execute_process( + COMMAND python3 "-m" "cantools" "generate_c_source" "--prune" "${CMAKE_CURRENT_SOURCE_DIR}/dbc/${CAN_DBC_FILE_NAME}" "--database-name" "${AUTOGENERATED_FILE_NAME}" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src" + ) + +execute_process( + COMMAND mkdir -p ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME} + COMMAND mv ${CMAKE_CURRENT_SOURCE_DIR}/src/${AUTOGENERATED_FILE_NAME}.h ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME}/${AUTOGENERATED_FILE_NAME}.h + COMMAND mv ${CMAKE_CURRENT_SOURCE_DIR}/src/${AUTOGENERATED_FILE_NAME}.c ${CMAKE_CURRENT_SOURCE_DIR}/src/${AUTOGENERATED_FILE_NAME}.cpp + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/src" +) + +execute_process( + COMMAND python3 "-m" "cantools" + "generate_c_source_transceiver" "${CMAKE_CURRENT_SOURCE_DIR}/dbc/${CAN_DBC_FILE_NAME}" + "--prune" + "--database-name" "${AUTOGENERATED_FILE_NAME}" + "--output-headers" "include/${PROJECT_NAME}" + "--output-sources" "src" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + ) + +include_directories(include/${PROJECT_NAME}) +include_directories(include) + +add_library(${PROJECT_NAME} SHARED src/${AUTOGENERATED_FILE_NAME}.cpp src/${AUTOGENERATED_FILE_NAME_TRANSCEIVER}.cpp) + +# Link the desire include directories of the library - different for build and install +target_include_directories(${PROJECT_NAME} + PUBLIC + "$" + "$" + ) + +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} +) + +install(DIRECTORY include/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +install(EXPORT ${PROJECT_NAME}Targets + FILE ${PROJECT_NAME}Targets.cmake + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} +) \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/Config.cmake.in b/ros2_ws/src/ft_can_transceiver_lib/Config.cmake.in new file mode 100644 index 0000000..87de509 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/ft_can_transceiver_libTargets.cmake") + diff --git a/ros2_ws/src/ft_can_transceiver_lib/README.md b/ros2_ws/src/ft_can_transceiver_lib/README.md new file mode 100644 index 0000000..cd9c7b7 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/README.md @@ -0,0 +1,127 @@ +# can-transceiver-lib +Generates a cpp library from a DBC file using the cantools DBC parser and extended generator. + +# Install + +## cantools extended generator + +1. Get the extended generator + + git clone --branch extend_codegen https://github.com/rimakoe/cantools.git + +1. Install it in your python using + + pip install -e ./path/to/cantools + +1. Verify the installation with + + pip freeze + + You should see something like + + -e + +## transceiver library + +1. Create a build folder inside the repo and go into it + + mkdir build && cd build + +1. Use cmake to build and install the library + + cmake .. && sudo make install + +Now you are able to link the library in every c++ project. + + + + \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/.place_your_dbc_here b/ros2_ws/src/ft_can_transceiver_lib/dbc/.place_your_dbc_here new file mode 100644 index 0000000..83161e6 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/.place_your_dbc_here @@ -0,0 +1 @@ +placeholder to keep filestructure \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CAN5-Main.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CAN5-Main.ini new file mode 100644 index 0000000..1ca0192 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CAN5-Main.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,156,100,50,50,100,100,100,71,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.dbc new file mode 100644 index 0000000..b7644f7 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.dbc @@ -0,0 +1,78 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Shunt AMS ABX + + +BO_ 1280 AMS_Log: 3 AMS + SG_ AMS_Log_voltage7 m1 : 8|8@1+ (0.0196078,0) [0|5] "V" ABX + SG_ AMS_Log_voltage0 m0 : 8|8@1+ (0.0196078,0) [0|5] "V" ABX + SG_ AMS_Log_slave_ID : 4|4@1+ (1,0) [0|15] "" ABX + SG_ AMS_Log_frame M : 0|4@1+ (1,0) [0|15] "" ABX + +BO_ 10 AMS_Status: 6 AMS + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" ABX + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" ABX + SG_ SOC : 8|8@1+ (0.392157,0) [0|100] "%" ABX + SG_ Min_cell_volt : 23|16@0+ (7.62951E-005,0) [0|5] "V" ABX + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.9375] "°C" ABX + +BO_ 66 AMS_Panic: 8 AMS + SG_ AMS_Error_arg : 8|56@1+ (1,0) [0|7.20576E+016] "" ABX + SG_ AMS_Error : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 11 AMS_In: 1 ABX + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "°C" ABX + + + +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" 0 "No Description" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.ini new file mode 100644 index 0000000..4fd7f7e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN1-AMS.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,131,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.dbc new file mode 100644 index 0000000..916f1fc --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.dbc @@ -0,0 +1,78 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: +BU_: ABX PDU SDCL SSU +BO_ 17 SDCL_tx: 1 SDCL + SG_ sdcl_sdc_in : 0|1@1+ (1,0) [0|1] "" ABX + SG_ sdcl_sdc_ready : 1|1@1+ (1,0) [0|1] "" ABX + SG_ ts_start_muxed : 2|1@1+ (1,0) [0|1] "" ABX + +BO_ 16 SDCL_rx: 1 ABX + SG_ as_driving_mode : 0|1@1+ (1,0) [0|1] "" SDCL + SG_ as_close_sdc : 1|1@1+ (1,0) [0|1] "" SDCL + SG_ sdcl_heartbeat : 2|1@1+ (1,0) [0|1] "" SDCL + +BO_ 7 PDU_Setpoints: 6 ABX + SG_ EPSC : 23|1@1+ (1,0) [0|1] "" PDU + SG_ Fans : 8|1@1+ (1,0) [0|1] "" PDU + SG_ BBMC : 9|1@1+ (1,0) [0|1] "" PDU + SG_ Pumps : 10|1@1+ (1,0) [0|1] "" PDU + SG_ STW : 11|1@1+ (1,0) [0|1] "" PDU + SG_ Sensorbox : 12|1@1+ (1,0) [0|1] "" PDU + SG_ Soundbox : 14|1@1+ (1,0) [0|1] "" PDU + SG_ Misc : 15|1@1+ (1,0) [0|1] "" PDU + SG_ PDM : 22|1@1+ (1,0) [0|1] "" PDU + SG_ Autobox : 21|1@1+ (1,0) [0|1] "" PDU + SG_ Inverters : 20|1@1+ (1,0) [0|1] "" PDU + SG_ PWR_Servo_1 : 19|1@1+ (1,0) [0|1] "" PDU + SG_ HV_Box : 16|1@1+ (1,0) [0|1] "" PDU + SG_ Circuit_Switch_Valve : 31|1@1+ (1,0) [0|1] "" PDU + SG_ SB_Release_Valve : 30|1@1+ (1,0) [0|1] "" PDU + SG_ EBS_B_Valve : 29|1@1+ (1,0) [0|1] "" PDU + SG_ PWR_Servo : 17|1@1+ (1,0) [0|1] "" PDU + SG_ EBS_A_Valve : 28|1@1+ (1,0) [0|1] "" PDU + SG_ SDC : 27|1@1+ (1,0) [0|1] "" PDU + SG_ HydPowerPack : 26|1@1+ (1,0) [0|1] "" PDU + SG_ AMS : 25|1@1+ (1,0) [0|1] "" PDU + SG_ PWR_19V : 13|1@1+ (1,0) [0|1] "" PDU + SG_ HydPowerPack_DutyCycle : 32|8@1+ (1,0) [0|100] "%" PDU + SG_ Fan_DutyCycle : 40|8@1+ (1,0) [0|100] "%" PDU + SG_ Z_Stabi : 18|1@1+ (1,0) [0|1] "" PDU + +BO_ 8 PDU_Call: 1 ABX + SG_ PDU_Call : 0|8@1+ (1,0) [0|255] "" PDU + +BO_ 9 PDU_Response: 1 PDU + SG_ PDU_Response : 0|8@1+ (1,0) [0|255] "" ABX + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.ini new file mode 100644 index 0000000..0d7411e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN4-PDU.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN5-Main.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN5-Main.dbc new file mode 100644 index 0000000..93f763f --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT22/CAN5-Main.dbc @@ -0,0 +1,309 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: +BU_: ABX STW FSG_Logger RES EPSC XSens PDMV +BO_ 1 Error: 1 XSens + +BO_ 2 Warning: 1 XSens + SG_ WarningCode : 7|8@0+ (1,0) [0|0] "" ABX + +BO_ 5 SampleTime: 4 XSens + SG_ Timestamp : 7|32@0+ (1,0) [0|0] "us" ABX + +BO_ 6 GroupCounter: 2 XSens + SG_ Counter : 7|16@0+ (1,0) [0|0] "" ABX + +BO_ 17 StatusWord: 4 XSens + SG_ SelfTestOk : 24|1@1+ (1,0) [0|1] "" ABX + SG_ OrientationValid : 25|1@1+ (1,0) [0|1] "" ABX + SG_ GpsValid : 26|1@1+ (1,0) [0|1] "" ABX + SG_ NoRotation : 28|2@0+ (1,0) [0|3] "" ABX + SG_ RepresentativeMotion : 29|1@1+ (1,0) [0|1] "" ABX + SG_ ExternalClockSynced : 30|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccX : 16|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccY : 17|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccZ : 18|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrX : 19|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrY : 20|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrZ : 21|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagX : 22|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagY : 23|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagZ : 8|1@1+ (1,0) [0|1] "" ABX + SG_ Retransmitted : 10|1@1+ (1,0) [0|1] "" ABX + SG_ ClippingDetected : 11|1@1+ (1,0) [0|1] "" ABX + SG_ Interpolated : 12|1@1+ (1,0) [0|1] "" ABX + SG_ SyncIn : 13|1@1+ (1,0) [0|1] "" ABX + SG_ SyncOut : 14|1@1+ (1,0) [0|1] "" ABX + SG_ FilterMode : 1|3@0+ (1,0) [0|1] "" ABX + SG_ HaveGnssTimePulse : 2|1@1+ (1,0) [0|1] "" ABX + SG_ RtkStatus : 4|2@0+ (1,0) [0|1] "" ABX + +BO_ 33 Quaternion: 8 XSens + SG_ Q1 : 7|16@0- (3.05176e-05,0) [-1|1] "" ABX + SG_ Q2 : 23|16@0- (3.05176e-05,0) [-1|1] "" ABX + SG_ Q3 : 39|16@0- (3.05176e-05,0) [-1|1] "" ABX + SG_ Q4 : 55|16@0- (3.05176e-05,0) [-1|1] "" ABX + +BO_ 49 DeltaV: 7 XSens + SG_ X : 7|16@0- (7.62939e-06,0) [-0.25|0.25] "m/s" ABX + SG_ Y : 23|16@0- (7.62939e-06,0) [-0.25|0.25] "m/s" ABX + SG_ Z : 39|16@0- (7.62939e-06,0) [-0.25|0.25] "m/s" ABX + SG_ Exponent : 55|8@0+ (1,0) [0|0] "" ABX + +BO_ 50 RateOfTurn: 6 XSens + SG_ gyrX : 7|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ gyrY : 23|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ gyrZ : 39|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + +BO_ 51 DeltaQ: 8 XSens + SG_ DeltaQ1 : 7|16@0- (3.05185e-05,0) [-1|1] "m/s²" ABX + SG_ DeltaQ2 : 23|16@0- (3.05185e-05,0) [-1|1] "m/s²" ABX + SG_ DeltaQ3 : 39|16@0- (3.05185e-05,0) [-1|1] "m/s²" ABX + SG_ DeltaQ4 : 55|16@0- (3.05185e-05,0) [-1|1] "m/s²" ABX + +BO_ 52 Acceleration: 6 XSens + SG_ accX : 7|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ accY : 23|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ accZ : 39|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + +BO_ 53 FreeAcceleration: 6 XSens + SG_ FreeAccX : 7|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ FreeAccY : 23|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ FreeAccZ : 39|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + +BO_ 97 RateOfTurnHR: 6 XSens + SG_ HrGyrX : 7|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ HrGyrY : 23|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ HrGyrZ : 39|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + +BO_ 98 AccelerationHR: 6 XSens + SG_ HrAccX : 7|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ HrAccY : 23|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ HrAccZ : 39|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + +BO_ 65 MagneticField: 6 XSens + SG_ magX : 7|16@0- (0.000976563,0) [-32|32] "a.u." ABX + SG_ magY : 23|16@0- (0.000976563,0) [-32|32] "a.u" ABX + SG_ magZ : 39|16@0- (0.000976563,0) [-32|32] "a.u" ABX + +BO_ 81 Temperature: 2 XSens + SG_ Temperature : 7|16@0- (0.00390625,0) [-40|85] "degC" ABX + +BO_ 82 BarometricPressure: 4 XSens + SG_ Pressure : 7|32@0- (3.05176e-05,0) [30000|125000] "Pa" ABX + +BO_ 7 UTC: 8 XSens + SG_ year : 7|8@0+ (1,0) [0|0] "Y" ABX + SG_ month : 15|8@0+ (1,0) [1|12] "M" ABX + SG_ day : 23|8@0+ (1,0) [1|31] "D" ABX + SG_ hour : 31|8@0+ (1,0) [0|24] "h" ABX + SG_ minute : 39|8@0+ (1,0) [0|60] "m" ABX + SG_ second : 47|8@0+ (1,0) [0|60] "s" ABX + SG_ tenthms : 55|16@0+ (1,0) [0|0] "ms/10" ABX + +BO_ 34 EulerAngles: 6 XSens + SG_ roll : 7|16@0- (0.0078125,0) [-180|180] "deg" ABX + SG_ pitch : 23|16@0- (0.0078125,0) [-90|90] "deg" ABX + SG_ yaw : 39|16@0- (0.0078125,0) [-180|180] "deg" ABX + +BO_ 113 LongLat: 8 XSens + SG_ latitude : 7|32@0- (5.96046e-08,0) [-90|90] "deg" ABX + SG_ longitude : 39|32@0- (1.19209e-07,0) [-180|180] "deg" ABX + +BO_ 114 AltitudeEllipsoid: 4 XSens + SG_ altEllipsoid : 7|32@0+ (3.05176e-05,0) [0|50000] "m" ABX + +BO_ 115 PositionEcef_X: 4 XSens + SG_ PositionEcef_X : 7|32@0- (0.00390625,0) [-6.5e+06|6.5e+06] "m" ABX + +BO_ 116 PositionEcef_Y: 4 XSens + SG_ PositionEcef_Y : 7|32@0- (0.00390625,0) [-6.5e+06|6.5e+06] "m" ABX + +BO_ 117 PositionEcef_Z: 4 XSens + SG_ PositionEcef_Z : 7|32@0- (0.00390625,0) [-6.5e+06|6.5e+06] "m" ABX + +BO_ 118 Velocity: 6 XSens + SG_ velX : 7|16@0- (0.015625,0) [-500|500] "m/s" ABX + SG_ velY : 23|16@0- (0.015625,0) [-500|500] "m/s" ABX + SG_ velZ : 39|16@0- (0.015625,0) [-500|500] "m/s" ABX + +BO_ 1040 AS_Mission_fb: 1 ABX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" STW + +BO_ 1024 STW_mission_selected: 1 STW + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" ABX + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FSG_Logger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FSG_Logger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FSG_Logger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FSG_Logger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FSG_Logger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FSG_Logger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FSG_Logger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FSG_Logger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FSG_Logger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FSG_Logger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FSG_Logger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FSG_Logger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FSG_Logger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FSG_Logger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FSG_Logger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FSG_Logger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FSG_Logger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FSG_Logger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FSG_Logger + +BO_ 801 EPSC_out: 8 EPSC + SG_ EPSC_measured_steering_angle : 0|12@1- (0.1,0) [-120|120] "°" ABX + SG_ EPSC_measured_rpm : 12|12@1- (1,0) [-120|120] "rpm" ABX + SG_ EPSC_measured_current : 24|12@1+ (0.1,0) [0|20] "A" ABX + SG_ EPSC_measured_voltage : 36|12@1+ (0.1,0) [0|20] "V" ABX + SG_ EPSC_measured_temperature : 48|12@1+ (1,0) [0|200] "°C" ABX + SG_ EPSC_measured_flag1 : 60|1@1+ (1,0) [0|1] "" ABX + SG_ EPSC_measured_flag2 : 61|1@1+ (1,0) [0|1] "" ABX + SG_ EPSC_measured_flag3 : 62|1@1+ (1,0) [0|1] "" ABX + SG_ EPSC_measured_flag4 : 63|1@1+ (1,0) [0|1] "" ABX + +BO_ 291 EPSC_In: 8 ABX + SG_ EPSC_mode M : 0|8@1+ (1,0) [0|1] "" EPSC + SG_ EPSC_desired_steering_angle : 8|16@1- (0.0001,0) [-10000|10000] "" EPSC + SG_ EPSC_Kp_pos : 24|8@1+ (0.1,0) [0|25.6] "" EPSC + SG_ EPSC_Kp_rpm m0 : 32|8@1+ (0.1,0) [0|25.6] "" EPSC + SG_ EPSC_Ki_rpm m0 : 40|8@1+ (0.1,0) [0|25.6] "" EPSC + SG_ EPSC_Kp_curr m0 : 48|8@1+ (0.1,0) [0|25.6] "" EPSC + SG_ EPSC_Ki_curr m0 : 56|8@1+ (0.1,0) [0|25.6] "" EPSC + SG_ EPSC_Ki_pos m1 : 32|8@1+ (0.1,0) [0|25.6] "" EPSC + +BO_ 1041 STW_control: 1 ABX + SG_ STW_debugMode : 0|1@1+ (1,0) [0|1] "" STW + +BO_ 1025 STW_buttons: 1 STW + SG_ STW_button_left : 0|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_right : 1|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_R2D : 2|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_Enter : 3|1@1+ (1,0) [0|1] "" ABX + +BO_ 1042 STW_status: 6 ABX + SG_ InvL_ready : 8|1@1+ (1,0) [0|0] "" STW + SG_ iniChk_state : 24|8@1+ (1,0) [0|255] "" STW + SG_ InvR_ready : 9|1@1+ (1,0) [0|0] "" STW + SG_ AS_state : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ SDC_BFL : 10|1@1+ (1,0) [0|0] "" STW + SG_ SDC_BRL : 11|1@1+ (1,0) [0|0] "" STW + SG_ SDC_ACC : 12|1@1+ (1,0) [0|0] "" STW + SG_ SDC_HVB : 13|1@1+ (1,0) [0|0] "" STW + SG_ Lap_Count : 16|6@1+ (1,0) [0|64] "" STW + SG_ ERR_SDC : 32|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AMS : 33|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvL : 43|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvR : 44|1@1+ (1,0) [0|1] "" STW + SG_ ERR_IniChk : 35|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ConMon : 36|1@1+ (1,0) [0|1] "" STW + SG_ ERR_SCS : 37|1@1+ (1,0) [0|1] "" STW + SG_ ERR_sBSPD : 38|1@1+ (1,0) [0|1] "" STW + SG_ ERR_APPSp : 39|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AS : 40|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ROS : 41|1@1+ (1,0) [0|1] "" STW + SG_ ERR_RES : 42|1@1+ (1,0) [0|1] "" STW + SG_ ERR_PDU : 34|1@1+ (1,0) [0|1] "" STW + SG_ R2D_Progress : 4|4@1+ (1,0) [0|15] "" STW + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FSG_Logger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FSG_Logger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FSG_Logger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FSG_Logger + +CM_ BU_ XSens "Generic Xsens Motion Sensor"; +CM_ SG_ 17 SelfTestOk "Set when the self test result was ok"; +CM_ SG_ 17 OrientationValid "Set when the computed orientation is valid. The orientation may be invalid during startup or when the XSens data is clipping during violent (for the device) motion"; +CM_ SG_ 17 GpsValid "Set when the device has a GPS receiver and the receiver says that there is a GPS position fix."; +CM_ SG_ 17 RepresentativeMotion "Indicates if the In-Run Compass Calibration is doing the representative motion analysis"; +CM_ SG_ 17 ExternalClockSynced "Indicates whether the internal clock is synced with an external clock (Either GNNS or custom provided clock sync)"; +CM_ SG_ 17 ClipAccX "Indicates if there was clipping on the X-axis of the accelerometer"; +CM_ SG_ 17 ClipAccY "Indicates if there was clipping on the Y-axis of the accelerometer"; +CM_ SG_ 17 ClipAccZ "Indicates if there was clipping on the Z-axis of the accelerometer"; +CM_ SG_ 17 ClipGyrX "Indicates if there was clipping on the X-axis of the gyroscope"; +CM_ SG_ 17 ClipGyrY "Indicates if there was clipping on the Y-axis of the gyroscope"; +CM_ SG_ 17 ClipGyrZ "Indicates if there was clipping on the Z-axis of the gyroscope"; +CM_ SG_ 17 ClipMagX "Indicates if there was clipping on the X-axis of the magnetometer"; +CM_ SG_ 17 ClipMagY "Indicates if there was clipping on the Y-axis of the magnetometer"; +CM_ SG_ 17 ClipMagZ "Indicates if there was clipping on the Z-axis of the magnetometer"; +CM_ SG_ 17 Retransmitted "When set Indicates the sample was received as a retransmission"; +CM_ SG_ 17 ClippingDetected "When set Indicates clipping has occurred"; +CM_ SG_ 17 Interpolated "When set Indicates the sample is an interpolation between other samples"; +CM_ SG_ 17 SyncIn "When set indicates a sync-in event has been triggered"; +CM_ SG_ 17 SyncOut "When set Indicates a sync-out event has been generated"; +CM_ SG_ 17 FilterMode "Mask for the 3 bit filter mode field"; +CM_ SG_ 17 HaveGnssTimePulse "Indicates that the 1PPS GNSS time pulse is present"; +CM_ SG_ 17 RtkStatus "Mask for 2 bit RTK status field"; +CM_ BO_ 7 "UTC Time in the following format YYMMDDhhmmss plus tenth of a milli second"; +VAL_ 17 SelfTestOk 0 "false" 1 "true"; +VAL_ 17 OrientationValid 0 "false" 1 "true"; +VAL_ 17 GpsValid 0 "false" 1 "true"; +VAL_ 17 NoRotation 1 "Aborted" 2 "SamplesRejected" 3 "RunningNormally"; +VAL_ 17 RepresentativeMotion 0 "false" 1 "true"; +VAL_ 17 ExternalClockSynced 0 "false" 1 "true"; +VAL_ 17 ClipAccX 0 "false" 1 "true"; +VAL_ 17 ClipAccY 0 "false" 1 "true"; +VAL_ 17 ClipAccZ 0 "false" 1 "true"; +VAL_ 17 ClipGyrX 0 "false" 1 "true"; +VAL_ 17 ClipGyrY 0 "false" 1 "true"; +VAL_ 17 ClipGyrZ 0 "false" 1 "true"; +VAL_ 17 ClipMagX 0 "false" 1 "true"; +VAL_ 17 ClipMagY 0 "false" 1 "true"; +VAL_ 17 ClipMagZ 0 "false" 1 "true"; +VAL_ 17 Retransmitted 0 "false" 1 "true"; +VAL_ 17 ClippingDetected 0 "false" 1 "true"; +VAL_ 17 Interpolated 0 "false" 1 "true"; +VAL_ 17 SyncIn 0 "false" 1 "true"; +VAL_ 17 SyncOut 0 "false" 1 "true"; +VAL_ 17 FilterMode 0 "false" 1 "true"; +VAL_ 17 HaveGnssTimePulse 0 "false" 1 "true"; +VAL_ 17 RtkStatus 0 "No RTK" 1 "RTK floating" 2 "RTK fixed"; +VAL_ 1040 Mission_selection 7 "MissionSelection_manual" 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross"; +VAL_ 1024 Mission_selection 7 "MissionSelection_manual" 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross"; +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish"; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated"; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross"; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available"; +VAL_ 291 EPSC_mode 0 "Triple_Control_Loop" 1 "Single_Control_Loop"; +VAL_ 1042 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error"; +VAL_ 1042 AS_state 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency"; +VAL_ 1042 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success"; diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.dbc new file mode 100644 index 0000000..263f769 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.dbc @@ -0,0 +1,1731 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Jetson SSU TTS_RL TTS_RR TTS_FR TTS_FL Shunt AMS ABX SDCL PDU PDMV XSens STW EPSC + + +BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ STW_debugMode : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 273 ABX_Accel: 6 Vector__XXX + SG_ ABX_Accel_Z : 32|16@1- (0.001,0) [-32.768|32.767] "g" Vector__XXX + SG_ ABX_Accel_Y : 16|16@1- (0.001,0) [-32.768|32.767] "g" Vector__XXX + SG_ ABX_Accel_X : 0|16@1- (0.001,0) [-32.768|32.767] "g" Vector__XXX + +BO_ 1043 ABX_ParamConfirm: 1 Vector__XXX + SG_ ABX_ParamConfirm : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 272 ABX_Hydraulics: 3 Vector__XXX + SG_ ABX_Hyd_PB : 12|12@1+ (0.1,0) [0|409.5] "bar" Vector__XXX + SG_ ABX_Hyd_PA : 0|12@1+ (0.1,0) [0|409.5] "bar" Vector__XXX + +BO_ 225 JetsonTX: 7 Jetson + SG_ Jetson_Torque_Ratio : 32|8@1+ (0.00392156862745098,0) [0|1] "" ABX + SG_ Jetson_Brake_Ratio : 24|8@1+ (0.00392156862745098,0) [0|1] "" ABX + SG_ Jetson_Cones_Actual : 48|8@1+ (1,0) [0|255] "" ABX + SG_ Jetson_Cones_All : 40|8@1+ (1,0) [0|255] "" ABX + SG_ Jetson_Lap_Count : 4|4@1+ (1,0) [0|15] "" ABX + SG_ Jetson_Steering_Angle : 16|8@1- (0.00784313725490196,0) [-1|1] "" ABX + SG_ Jetson_Speed_Target : 8|8@1+ (0.2,0) [0|51] "" ABX + SG_ Jetson_AS_OK : 1|1@1+ (1,0) [0|1] "Bool" ABX + SG_ Jetson_AS_Mission_Complete : 0|1@1+ (1,0) [0|1] "Bool" ABX + +BO_ 1536 AMS_Slave0_Log0: 8 AMS + SG_ AMS_Slave0_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1537 AMS_Slave0_Log1: 8 AMS + SG_ AMS_Slave0_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1538 AMS_Slave0_Log2: 8 AMS + SG_ AMS_Slave0_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1539 AMS_Slave0_Log3: 8 AMS + SG_ AMS_Slave0_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1540 AMS_Slave0_Log4: 6 AMS + SG_ AMS_Slave0_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave0_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1541 AMS_Slave0_Log5: 8 AMS + SG_ AMS_Slave0_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1542 AMS_Slave0_Log6: 8 AMS + SG_ AMS_Slave0_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1543 AMS_Slave0_Log7: 8 AMS + SG_ AMS_Slave0_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1544 AMS_Slave0_Log8: 8 AMS + SG_ AMS_Slave0_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1552 AMS_Slave1_Log0: 8 AMS + SG_ AMS_Slave1_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1553 AMS_Slave1_Log1: 8 AMS + SG_ AMS_Slave1_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1554 AMS_Slave1_Log2: 8 AMS + SG_ AMS_Slave1_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1555 AMS_Slave1_Log3: 8 AMS + SG_ AMS_Slave1_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1556 AMS_Slave1_Log4: 6 AMS + SG_ AMS_Slave1_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave1_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1557 AMS_Slave1_Log5: 8 AMS + SG_ AMS_Slave1_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1558 AMS_Slave1_Log6: 8 AMS + SG_ AMS_Slave1_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1559 AMS_Slave1_Log7: 8 AMS + SG_ AMS_Slave1_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1560 AMS_Slave1_Log8: 8 AMS + SG_ AMS_Slave1_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1568 AMS_Slave2_Log0: 8 AMS + SG_ AMS_Slave2_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1569 AMS_Slave2_Log1: 8 AMS + SG_ AMS_Slave2_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1570 AMS_Slave2_Log2: 8 AMS + SG_ AMS_Slave2_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1571 AMS_Slave2_Log3: 8 AMS + SG_ AMS_Slave2_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1572 AMS_Slave2_Log4: 6 AMS + SG_ AMS_Slave2_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave2_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1573 AMS_Slave2_Log5: 8 AMS + SG_ AMS_Slave2_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1574 AMS_Slave2_Log6: 8 AMS + SG_ AMS_Slave2_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1575 AMS_Slave2_Log7: 8 AMS + SG_ AMS_Slave2_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1576 AMS_Slave2_Log8: 8 AMS + SG_ AMS_Slave2_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1584 AMS_Slave3_Log0: 8 AMS + SG_ AMS_Slave3_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1585 AMS_Slave3_Log1: 8 AMS + SG_ AMS_Slave3_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1586 AMS_Slave3_Log2: 8 AMS + SG_ AMS_Slave3_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1587 AMS_Slave3_Log3: 8 AMS + SG_ AMS_Slave3_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1588 AMS_Slave3_Log4: 6 AMS + SG_ AMS_Slave3_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave3_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1589 AMS_Slave3_Log5: 8 AMS + SG_ AMS_Slave3_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1590 AMS_Slave3_Log6: 8 AMS + SG_ AMS_Slave3_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1591 AMS_Slave3_Log7: 8 AMS + SG_ AMS_Slave3_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1592 AMS_Slave3_Log8: 8 AMS + SG_ AMS_Slave3_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1600 AMS_Slave4_Log0: 8 AMS + SG_ AMS_Slave4_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1601 AMS_Slave4_Log1: 8 AMS + SG_ AMS_Slave4_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1602 AMS_Slave4_Log2: 8 AMS + SG_ AMS_Slave4_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1603 AMS_Slave4_Log3: 8 AMS + SG_ AMS_Slave4_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1604 AMS_Slave4_Log4: 6 AMS + SG_ AMS_Slave4_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave4_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1605 AMS_Slave4_Log5: 8 AMS + SG_ AMS_Slave4_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1606 AMS_Slave4_Log6: 8 AMS + SG_ AMS_Slave4_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1607 AMS_Slave4_Log7: 8 AMS + SG_ AMS_Slave4_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1608 AMS_Slave4_Log8: 8 AMS + SG_ AMS_Slave4_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1616 AMS_Slave5_Log0: 8 AMS + SG_ AMS_Slave5_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1617 AMS_Slave5_Log1: 8 AMS + SG_ AMS_Slave5_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1618 AMS_Slave5_Log2: 8 AMS + SG_ AMS_Slave5_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1619 AMS_Slave5_Log3: 8 AMS + SG_ AMS_Slave5_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1620 AMS_Slave5_Log4: 6 AMS + SG_ AMS_Slave5_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave5_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1621 AMS_Slave5_Log5: 8 AMS + SG_ AMS_Slave5_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1622 AMS_Slave5_Log6: 8 AMS + SG_ AMS_Slave5_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1623 AMS_Slave5_Log7: 8 AMS + SG_ AMS_Slave5_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1624 AMS_Slave5_Log8: 8 AMS + SG_ AMS_Slave5_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1632 AMS_Slave6_Log0: 8 AMS + SG_ AMS_Slave6_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1633 AMS_Slave6_Log1: 8 AMS + SG_ AMS_Slave6_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1634 AMS_Slave6_Log2: 8 AMS + SG_ AMS_Slave6_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1635 AMS_Slave6_Log3: 8 AMS + SG_ AMS_Slave6_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1636 AMS_Slave6_Log4: 6 AMS + SG_ AMS_Slave6_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave6_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1637 AMS_Slave6_Log5: 8 AMS + SG_ AMS_Slave6_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1638 AMS_Slave6_Log6: 8 AMS + SG_ AMS_Slave6_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1639 AMS_Slave6_Log7: 8 AMS + SG_ AMS_Slave6_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1640 AMS_Slave6_Log8: 8 AMS + SG_ AMS_Slave6_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1648 AMS_Slave7_Log0: 8 AMS + SG_ AMS_Slave7_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1649 AMS_Slave7_Log1: 8 AMS + SG_ AMS_Slave7_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1650 AMS_Slave7_Log2: 8 AMS + SG_ AMS_Slave7_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1651 AMS_Slave7_Log3: 8 AMS + SG_ AMS_Slave7_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1652 AMS_Slave7_Log4: 6 AMS + SG_ AMS_Slave7_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave7_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1653 AMS_Slave7_Log5: 8 AMS + SG_ AMS_Slave7_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1654 AMS_Slave7_Log6: 8 AMS + SG_ AMS_Slave7_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1655 AMS_Slave7_Log7: 8 AMS + SG_ AMS_Slave7_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1656 AMS_Slave7_Log8: 8 AMS + SG_ AMS_Slave7_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1664 AMS_Slave8_Log0: 8 AMS + SG_ AMS_Slave8_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1665 AMS_Slave8_Log1: 8 AMS + SG_ AMS_Slave8_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1666 AMS_Slave8_Log2: 8 AMS + SG_ AMS_Slave8_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1667 AMS_Slave8_Log3: 8 AMS + SG_ AMS_Slave8_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1668 AMS_Slave8_Log4: 6 AMS + SG_ AMS_Slave8_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave8_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1669 AMS_Slave8_Log5: 8 AMS + SG_ AMS_Slave8_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1670 AMS_Slave8_Log6: 8 AMS + SG_ AMS_Slave8_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1671 AMS_Slave8_Log7: 8 AMS + SG_ AMS_Slave8_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1672 AMS_Slave8_Log8: 8 AMS + SG_ AMS_Slave8_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1680 AMS_Slave9_Log0: 8 AMS + SG_ AMS_Slave9_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1681 AMS_Slave9_Log1: 8 AMS + SG_ AMS_Slave9_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1682 AMS_Slave9_Log2: 8 AMS + SG_ AMS_Slave9_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1683 AMS_Slave9_Log3: 8 AMS + SG_ AMS_Slave9_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1684 AMS_Slave9_Log4: 6 AMS + SG_ AMS_Slave9_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave9_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1685 AMS_Slave9_Log5: 8 AMS + SG_ AMS_Slave9_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1686 AMS_Slave9_Log6: 8 AMS + SG_ AMS_Slave9_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1687 AMS_Slave9_Log7: 8 AMS + SG_ AMS_Slave9_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1688 AMS_Slave9_Log8: 8 AMS + SG_ AMS_Slave9_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1696 AMS_Slave10_Log0: 8 AMS + SG_ AMS_Slave10_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1697 AMS_Slave10_Log1: 8 AMS + SG_ AMS_Slave10_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1698 AMS_Slave10_Log2: 8 AMS + SG_ AMS_Slave10_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1699 AMS_Slave10_Log3: 8 AMS + SG_ AMS_Slave10_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave10_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1700 AMS_Slave10_Log4: 6 AMS + SG_ AMS_Slave10_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave10_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1701 AMS_Slave10_Log5: 8 AMS + SG_ AMS_Slave10_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1702 AMS_Slave10_Log6: 8 AMS + SG_ AMS_Slave10_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1703 AMS_Slave10_Log7: 8 AMS + SG_ AMS_Slave10_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1704 AMS_Slave10_Log8: 8 AMS + SG_ AMS_Slave10_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1712 AMS_Slave11_Log0: 8 AMS + SG_ AMS_Slave11_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1713 AMS_Slave11_Log1: 8 AMS + SG_ AMS_Slave11_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1714 AMS_Slave11_Log2: 8 AMS + SG_ AMS_Slave11_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1715 AMS_Slave11_Log3: 8 AMS + SG_ AMS_Slave11_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave11_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1716 AMS_Slave11_Log4: 6 AMS + SG_ AMS_Slave11_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave11_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1717 AMS_Slave11_Log5: 8 AMS + SG_ AMS_Slave11_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1718 AMS_Slave11_Log6: 8 AMS + SG_ AMS_Slave11_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1719 AMS_Slave11_Log7: 8 AMS + SG_ AMS_Slave11_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1720 AMS_Slave11_Log8: 8 AMS + SG_ AMS_Slave11_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1728 AMS_Slave12_Log0: 8 AMS + SG_ AMS_Slave12_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1729 AMS_Slave12_Log1: 8 AMS + SG_ AMS_Slave12_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1730 AMS_Slave12_Log2: 8 AMS + SG_ AMS_Slave12_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1731 AMS_Slave12_Log3: 8 AMS + SG_ AMS_Slave12_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave12_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1732 AMS_Slave12_Log4: 6 AMS + SG_ AMS_Slave12_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave12_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1733 AMS_Slave12_Log5: 8 AMS + SG_ AMS_Slave12_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1734 AMS_Slave12_Log6: 8 AMS + SG_ AMS_Slave12_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1735 AMS_Slave12_Log7: 8 AMS + SG_ AMS_Slave12_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1736 AMS_Slave12_Log8: 8 AMS + SG_ AMS_Slave12_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave12_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1744 AMS_Slave13_Log0: 8 AMS + SG_ AMS_Slave13_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1745 AMS_Slave13_Log1: 8 AMS + SG_ AMS_Slave13_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1746 AMS_Slave13_Log2: 8 AMS + SG_ AMS_Slave13_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1747 AMS_Slave13_Log3: 8 AMS + SG_ AMS_Slave13_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave13_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1748 AMS_Slave13_Log4: 6 AMS + SG_ AMS_Slave13_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave13_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1749 AMS_Slave13_Log5: 8 AMS + SG_ AMS_Slave13_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1750 AMS_Slave13_Log6: 8 AMS + SG_ AMS_Slave13_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1751 AMS_Slave13_Log7: 8 AMS + SG_ AMS_Slave13_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1752 AMS_Slave13_Log8: 8 AMS + SG_ AMS_Slave13_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave13_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1760 AMS_Slave14_Log0: 8 AMS + SG_ AMS_Slave14_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1761 AMS_Slave14_Log1: 8 AMS + SG_ AMS_Slave14_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1762 AMS_Slave14_Log2: 8 AMS + SG_ AMS_Slave14_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1763 AMS_Slave14_Log3: 8 AMS + SG_ AMS_Slave14_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave14_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1764 AMS_Slave14_Log4: 6 AMS + SG_ AMS_Slave14_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave14_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1765 AMS_Slave14_Log5: 8 AMS + SG_ AMS_Slave14_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1766 AMS_Slave14_Log6: 8 AMS + SG_ AMS_Slave14_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1767 AMS_Slave14_Log7: 8 AMS + SG_ AMS_Slave14_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1768 AMS_Slave14_Log8: 8 AMS + SG_ AMS_Slave14_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave14_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1776 AMS_Slave15_Log0: 8 AMS + SG_ AMS_Slave15_V3 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V2 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V1 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V0 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1777 AMS_Slave15_Log1: 8 AMS + SG_ AMS_Slave15_V7 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V6 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V5 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V4 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1778 AMS_Slave15_Log2: 8 AMS + SG_ AMS_Slave15_V11 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V10 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V9 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V8 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1779 AMS_Slave15_Log3: 8 AMS + SG_ AMS_Slave15_V15 : 55|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V14 : 39|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V13 : 23|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave15_V12 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1780 AMS_Slave15_Log4: 6 AMS + SG_ AMS_Slave15_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave15_V16 : 7|16@0+ (0.0001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1781 AMS_Slave15_Log5: 8 AMS + SG_ AMS_Slave15_T7 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T6 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T5 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T4 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T3 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T2 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T1 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1782 AMS_Slave15_Log6: 8 AMS + SG_ AMS_Slave15_T15 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T14 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T13 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T12 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T11 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T10 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T9 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1783 AMS_Slave15_Log7: 8 AMS + SG_ AMS_Slave15_T23 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T22 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T21 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T20 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T19 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T18 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T17 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 1784 AMS_Slave15_Log8: 8 AMS + SG_ AMS_Slave15_T31 : 56|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T30 : 48|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T29 : 40|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T28 : 32|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T27 : 24|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T26 : 16|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T25 : 8|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave15_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 224 JetsonRX: 4 ABX + SG_ Jetson_AllowTorque : 24|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ Jetson_Reset : 7|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ Jetson_Power_Off : 6|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ Jetson_Speed_XSens : 16|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ Jetson_Speed : 8|8@1+ (0.2,0) [0|51] "m/s" Jetson + SG_ Jetson_AS_State : 3|3@1+ (1,0) [0|5] "" Jetson + SG_ Jetson_AS_Mission : 0|3@1+ (1,0) [0|7] "int" Jetson + +BO_ 143 AMS_Slave15Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 142 AMS_Slave14Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 141 AMS_Slave13Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 140 AMS_Slave12Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 139 AMS_Slave11Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 138 AMS_Slave10Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 137 AMS_Slave9Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 136 AMS_Slave8Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 135 AMS_Slave7Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 134 AMS_Slave6Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 133 AMS_Slave5Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 132 AMS_Slave4Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 131 AMS_Slave3Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 130 AMS_Slave2Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 129 AMS_Slave1Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 265 ABX_Misc: 7 ABX + SG_ ABX_LV_Voltage : 48|8@1+ (0.0588235294117647,0) [0|15] "V" Vector__XXX + SG_ ABX_LV_SoC : 40|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ ABX_DriverProtocol : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ ABX_Distance_total : 24|16@1+ (0.01,0) [0|655.35] "km" Vector__XXX + SG_ ABX_Distance_session : 8|16@1+ (1,0) [0|65535] "m" Vector__XXX + +BO_ 12 AMS_Error: 2 AMS + SG_ AMS_Error_Arg : 8|8@1- (1,0) [0|0] "" ABX + SG_ AMS_Error_Kind : 0|8@1- (1,0) [0|0] "" ABX + +BO_ 264 ABX_CoolingSys_Internal: 8 ABX + SG_ ABX_CS_T_MotR : 48|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_MotL : 32|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvR : 16|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + +BO_ 262 ABX_CoolingSys_Acc: 6 ABX + SG_ ABX_CS_T_AccOut : 32|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_T_AccIn : 16|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_P_AccOut : 8|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_AccIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + +BO_ 263 ABX_CoolingSys_MotInv: 8 ABX + SG_ ABX_CS_P_MotRIn : 24|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_T_RadIn : 52|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_T_MotIn : 42|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_T_InvIn : 32|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_P_RadIn : 16|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_MotLIn : 8|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_InvIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + +BO_ 261 ABX_BrakeT: 8 ABX + SG_ ABX_BrakeT_RR : 48|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_RL : 32|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FR : 16|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + +BO_ 260 ABX_Wheelspeed: 8 ABX + SG_ ABX_Wheelspeed_RR : 48|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_RL : 32|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FR : 16|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + +BO_ 259 ABX_Dampers: 8 ABX + SG_ ABX_DamperRoll_R : 48|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_DamperRoll_F : 16|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_DamperHeave_R : 32|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_DamperHeave_F : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + +BO_ 258 ABX_Timings: 8 ABX + SG_ ABX_Sectortime_last : 48|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Sectortime_best : 32|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_last : 16|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + +BO_ 257 ABX_Driver: 8 ABX + SG_ ABX_Sectorcounter : 56|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Lapcounter : 48|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Steering_Angle : 32|8@1- (1,0) [-128|127] "�" Vector__XXX + SG_ ABX_Speed : 40|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ ABX_BrakeP_R : 20|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_BrakeP_F : 8|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_APPS_percent : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + +BO_ 1792 TTS_Config: 1 ABX + SG_ TTS_NewID : 0|2@1+ (1,0) [0|3] "" Vector__XXX + +BO_ 1796 TTS_RR: 8 TTS_RR + SG_ TTS_RR_Outer : 48|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RR_Inner : 0|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RR_CenterOut : 36|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RR_CenterIn : 12|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RR_Center : 24|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + +BO_ 1795 TTS_RL: 8 TTS_RL + SG_ TTS_RL_Outer : 0|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RL_Inner : 48|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RL_CenterIn : 36|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RL_CenterOut : 12|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_RL_Center : 24|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + +BO_ 1794 TTS_FR: 8 TTS_FR + SG_ TTS_FR_Outer : 48|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FR_Inner : 0|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FR_CenterIn : 12|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FR_CenterOut : 36|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FR_Center : 24|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + +BO_ 1793 TTS_FL: 8 TTS_FL + SG_ TTS_FL_Outer : 0|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FL_Inner : 48|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FL_CenterIn : 36|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FL_CenterOut : 12|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_FL_Center : 24|12@1- (0.1,150) [-54.8|354.7] "�C" Vector__XXX + +BO_ 1026 STW_Param_Set: 5 STW + SG_ STW_Param_BBal m0 : 15|32@0+ (0.1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Type M : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_SLIPREF m1 : 15|32@0+ (0.01,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRP m3 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRON m4 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRI m5 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_EnduPowerLimit m6 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test3 m7 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test4 m8 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_MUMAX m2 : 15|32@0+ (0.1,0) [0|1] "" Vector__XXX + +BO_ 128 AMS_Slave0Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_SoC : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.0001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 1280 SSU_Message: 4 SSU + SG_ SSU_AirTemp : 16|16@1- (0.1,0) [-20|80] "�C" Vector__XXX + SG_ SSU_AirPressure : 0|16@1- (1,0) [-1000|1000] "Pa" Vector__XXX + +BO_ 10 AMS_Status: 6 AMS + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" ABX + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" ABX + SG_ SOC : 8|8@1+ (1,0) [0|100] "%" ABX + SG_ Min_cell_volt : 23|16@0+ (0.0001,0) [0|5] "V" ABX + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.94] "°C" ABX + +BO_ 9 AMS_SlavePanic: 8 AMS + SG_ AMS_SlavePanic_Kind : 15|8@0+ (1,0) [0|7.20576E+016] "" ABX + SG_ AMS_SlavePanic_SlaveID : 0|8@1+ (1,0) [0|255] "" ABX + SG_ AMS_SlavePanic_Arg : 23|32@0+ (1,0) [0|7.20576E+016] "" ABX + +BO_ 11 AMS_In: 1 ABX + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + SG_ Inverters_discharged : 1|1@1+ (1,0) [0|1] "" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "°C" ABX + +BO_ 16 SDCL_tx: 4 SDCL + SG_ asms_state : 0|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_1 : 1|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_2 : 2|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_3 : 3|1@1+ (1,0) [0|1] "" ABX + SG_ heartbeat_ok : 4|1@1+ (1,0) [0|1] "" ABX + SG_ sdcl_sdc_ready : 5|1@1+ (1,0) [0|1] "" ABX + SG_ ts_start_muxed : 6|1@1+ (1,0) [0|1] "" ABX + SG_ latch_init_open : 8|1@1+ (1,0) [0|1] "" ABX + SG_ latch_closed : 9|1@1+ (1,0) [0|1] "" ABX + SG_ latch_reopened : 10|1@1+ (1,0) [0|1] "" ABX + SG_ as_mission : 11|3@1+ (1,0) [0|7] "" ABX + +BO_ 15 SDCL_rx: 3 ABX + SG_ as_close_sdc : 0|1@1+ (1,0) [0|1] "" SDCL + SG_ sdcl_heartbeat : 1|1@1+ (1,0) [0|1] "" SDCL + SG_ asb_error : 2|1@1+ (1,0) [0|1] "" SDCL + SG_ as_mission : 4|3@1+ (1,0) [0|7] "" SDCL + +BO_ 200 PDU_Command: 6 ABX + SG_ PDU_led3_rx : 13|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led2_rx : 14|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led1_rx : 15|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_rx : 1|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_misc_rx : 2|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_alwayson_rx : 3|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_shutdown_circuit_rx : 4|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_ebs_valve_2_rx : 5|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_mode_valve_2_rx : 6|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_inverter_rx : 7|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_mode_valve_1_rx : 8|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_steering_rx : 9|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_ebs_valve_1_rx : 10|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_service_brake_rx : 11|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_sensorbox_rx : 12|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_PWM_fans_rx : 23|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_PWM_aggregat_rx : 31|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_PWM_pump_rx : 39|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_checksum_rx : 47|8@0+ (1,0) [0|255] "" PDU + +BO_ 201 PDU_Response: 6 PDU + SG_ PDU_led3_tx : 13|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led2_tx : 14|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led1_tx : 15|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_tx : 1|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_misc_tx : 2|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_alwayson_tx : 3|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_shutdown_circuit_tx : 4|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_evs_valve_2_tx : 5|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_mode_valve_2_tx : 6|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_inverter_tx : 7|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_mode_valve_1_tx : 8|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_steering_tx : 9|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_ebs_valve_1_tx : 10|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_service_brake_tx : 11|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_sensorbox_tx : 12|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_PWM_fans_tx : 23|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_PWM_aggregat : 31|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_PWM_pump : 39|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_checksum_tx : 47|8@0+ (1,0) [0|255] "" ABX + +BO_ 514 TxPDO: 6 ABX + SG_ pdm_output2_shortcircuit : 21|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_shortcircuit : 20|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_cablebreak : 19|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_cablebreak : 18|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_controllerrange : 17|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_controllerrange : 16|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_shutdown : 13|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_warning : 12|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_currentoverload : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_shortcircuit : 10|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_cablebreak : 9|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_middleposition : 8|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_statewarning : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_startupmissing : 4|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_timeout : 3|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_greater_32v : 2|1@1+ (1,0) [0|1] "" ABX + SG_ pdm_powersupply_less_8v : 1|1@1+ (1,0) [0|1] "" ABX + SG_ PDM_analoginput : 32|16@1+ (1,0) [0|65535] "%." ABX + +BO_ 1 XSens_Error: 1 XSens + +BO_ 2 XSens_Warning: 1 XSens + SG_ WarningCode : 7|8@0+ (1,0) [0|0] "" ABX + +BO_ 5 XSens_SampleTime: 4 XSens + SG_ Timestamp : 7|32@0+ (1,0) [0|0] "us" ABX + +BO_ 6 XSens_GroupCounter: 2 XSens + SG_ Counter : 7|16@0+ (1,0) [0|0] "" ABX + +BO_ 17 XSens_StatusWord: 4 XSens + SG_ SelfTestOk : 24|1@1+ (1,0) [0|1] "" ABX + SG_ OrientationValid : 25|1@1+ (1,0) [0|1] "" ABX + SG_ GpsValid : 26|1@1+ (1,0) [0|1] "" ABX + SG_ NoRotation : 28|2@0+ (1,0) [0|3] "" ABX + SG_ RepresentativeMotion : 29|1@1+ (1,0) [0|1] "" ABX + SG_ ExternalClockSynced : 30|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccX : 16|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccY : 17|1@1+ (1,0) [0|1] "" ABX + SG_ ClipAccZ : 18|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrX : 19|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrY : 20|1@1+ (1,0) [0|1] "" ABX + SG_ ClipGyrZ : 21|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagX : 22|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagY : 23|1@1+ (1,0) [0|1] "" ABX + SG_ ClipMagZ : 8|1@1+ (1,0) [0|1] "" ABX + SG_ Retransmitted : 10|1@1+ (1,0) [0|1] "" ABX + SG_ ClippingDetected : 11|1@1+ (1,0) [0|1] "" ABX + SG_ Interpolated : 12|1@1+ (1,0) [0|1] "" ABX + SG_ SyncIn : 13|1@1+ (1,0) [0|1] "" ABX + SG_ SyncOut : 14|1@1+ (1,0) [0|1] "" ABX + SG_ FilterMode : 1|3@0+ (1,0) [0|1] "" ABX + SG_ HaveGnssTimePulse : 2|1@1+ (1,0) [0|1] "" ABX + SG_ RtkStatus : 4|2@0+ (1,0) [0|1] "" ABX + +BO_ 50 XSens_RateOfTurn: 6 XSens + SG_ XSens_gyrX : 7|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ XSens_gyrY : 23|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + SG_ XSens_gyrZ : 39|16@0- (0.00195313,0) [-35|35] "rad/s" ABX + +BO_ 52 XSens_Acceleration: 6 XSens + SG_ XSens_accX : 7|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ XSens_accY : 23|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + SG_ XSens_accZ : 39|16@0- (0.00390625,0) [-100|100] "m/s²" ABX + +BO_ 113 XSens_LongLat: 8 XSens + SG_ latitude : 7|32@0- (5.96046E-008,0) [-90|90] "deg" ABX + SG_ longitude : 39|32@0- (1.19209E-007,0) [-180|180] "deg" ABX + +BO_ 118 XSens_Velocity: 6 XSens + SG_ velX : 7|16@0- (0.015625,0) [-500|500] "m/s" ABX + SG_ velY : 23|16@0- (0.015625,0) [-500|500] "m/s" ABX + SG_ velZ : 39|16@0- (0.015625,0) [-500|500] "m/s" ABX + +BO_ 1040 AS_Mission_fb: 1 ABX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" STW + +BO_ 1024 STW_mission_selected: 1 STW + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" ABX + +BO_ 801 EPSC_out: 8 EPSC + SG_ EPSC_measured_steering_angle : 7|16@0- (7.20721E-005,0) [-13875|13875] "part of full steering" ABX + SG_ EPSC_measured_rpm : 39|12@0- (0.1,0) [-204.8|204.7] "rpm" ABX + SG_ EPSC_measured_current : 23|8@0+ (0.1,0) [0|25.5] "A" ABX + SG_ EPSC_measured_voltage : 31|8@0+ (0.1,0) [0|20] "V" ABX + SG_ EPSC_measured_temperature : 43|10@0+ (0.1,0) [0|102.3] "°C" ABX + SG_ EPSC_measured_internal_temp : 49|10@0+ (0.1,0) [0|102.3] "°C" ABX + +BO_ 291 EPSC_Steering_In: 2 ABX + SG_ EPSC_desired_steering_angle : 7|16@0- (0.0001,0) [-10000|10000] "" EPSC + +BO_ 1025 STW_buttons: 1 STW + SG_ STW_button_left : 0|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_right : 1|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_R2D : 2|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_Enter : 3|1@1+ (1,0) [0|1] "" ABX + +BO_ 1042 STW_status: 6 ABX + SG_ InvL_ready : 8|1@1+ (1,0) [0|0] "" STW + SG_ iniChk_state : 24|8@1+ (1,0) [0|255] "" STW + SG_ InvR_ready : 9|1@1+ (1,0) [0|0] "" STW + SG_ AS_State_STW : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ SDC_BFL : 10|1@1+ (1,0) [0|0] "" STW + SG_ SDC_BRL : 11|1@1+ (1,0) [0|0] "" STW + SG_ SDC_ACC : 12|1@1+ (1,0) [0|0] "" STW + SG_ SDC_HVB : 13|1@1+ (1,0) [0|0] "" STW + SG_ Lap_Count : 16|6@1+ (1,0) [0|64] "" STW + SG_ ERR_SDC : 32|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AMS : 33|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvL : 43|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvR : 44|1@1+ (1,0) [0|1] "" STW + SG_ ERR_IniChk : 35|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ConMon : 36|1@1+ (1,0) [0|1] "" STW + SG_ ERR_SCS : 37|1@1+ (1,0) [0|1] "" STW + SG_ ERR_sBSPD : 38|1@1+ (1,0) [0|1] "" STW + SG_ ERR_APPSp : 39|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AS : 40|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ROS : 41|1@1+ (1,0) [0|1] "" STW + SG_ ERR_RES : 42|1@1+ (1,0) [0|1] "" STW + SG_ ERR_PDU : 34|1@1+ (1,0) [0|1] "" STW + SG_ R2D_Progress : 4|4@1+ (1,0) [0|15] "" STW + +BO_ 202 PDU_Current_1: 8 PDU + SG_ PDU_alwayson_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_misc_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_inverter_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_shutdown_circuit_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 203 PDU_Current_2: 8 PDU + SG_ PDU_fans_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_pump_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_aggregat_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_steering_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 204 PDU_Current_3: 8 PDU + SG_ PDU_ebs_valve_1_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_ebs_valve_2_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_mode_valve_1_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_mode_valve_2_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 205 PDU_Current_4: 8 PDU + SG_ PDU_sensorbox_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_service_brake_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_servos_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_shutdown_circuit_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 292 EPSC_Config_In: 7 ABX + SG_ EPSC_Ki_curr m1 : 55|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_curr m1 : 47|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_rpm m1 : 39|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_rpm m1 : 31|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_pos m1 : 23|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_pos m1 : 15|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_should_calibrate : 7|1@0- (1,0) [0|1] "" Vector__XXX + SG_ EPSC_should_change_mode M : 6|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_mode m1 : 5|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag3 : 4|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag4 : 3|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag5 : 2|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag6 : 1|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag7 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + + + +CM_ BU_ XSens "Generic Xsens Motion Sensor"; +CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider."; +CM_ BO_ 225 "Cycle Time: 100ms"; +CM_ BO_ 224 "Cycle Time: 50ms"; +CM_ SG_ 224 Jetson_AS_Mission "AS Mission Selection"; +CM_ BO_ 265 "Cycle time: 1s"; +CM_ BO_ 264 "Cycle time: 100ms"; +CM_ BO_ 262 "Cycle time: 100ms"; +CM_ BO_ 263 "Cycle time: 100ms"; +CM_ BO_ 261 "Cycle time: 100ms"; +CM_ BO_ 260 "Cycle time: 10ms"; +CM_ BO_ 259 "Cycle time: 10ms"; +CM_ BO_ 258 "Cycle time: 1s"; +CM_ BO_ 257 "Cycle time: 10ms"; +CM_ BO_ 1792 "Sent only if TTS positions swapped"; +CM_ SG_ 17 SelfTestOk "Set when the self test result was ok"; +CM_ SG_ 17 OrientationValid "Set when the computed orientation is valid. The orientation may be invalid during startup or when the XSens data is clipping during violent (for the device) motion"; +CM_ SG_ 17 GpsValid "Set when the device has a GPS receiver and the receiver says that there is a GPS position fix."; +CM_ SG_ 17 RepresentativeMotion "Indicates if the In-Run Compass Calibration is doing the representative motion analysis"; +CM_ SG_ 17 ExternalClockSynced "Indicates whether the internal clock is synced with an external clock (Either GNNS or custom provided clock sync)"; +CM_ SG_ 17 ClipAccX "Indicates if there was clipping on the X-axis of the accelerometer"; +CM_ SG_ 17 ClipAccY "Indicates if there was clipping on the Y-axis of the accelerometer"; +CM_ SG_ 17 ClipAccZ "Indicates if there was clipping on the Z-axis of the accelerometer"; +CM_ SG_ 17 ClipGyrX "Indicates if there was clipping on the X-axis of the gyroscope"; +CM_ SG_ 17 ClipGyrY "Indicates if there was clipping on the Y-axis of the gyroscope"; +CM_ SG_ 17 ClipGyrZ "Indicates if there was clipping on the Z-axis of the gyroscope"; +CM_ SG_ 17 ClipMagX "Indicates if there was clipping on the X-axis of the magnetometer"; +CM_ SG_ 17 ClipMagY "Indicates if there was clipping on the Y-axis of the magnetometer"; +CM_ SG_ 17 ClipMagZ "Indicates if there was clipping on the Z-axis of the magnetometer"; +CM_ SG_ 17 Retransmitted "When set Indicates the sample was received as a retransmission"; +CM_ SG_ 17 ClippingDetected "When set Indicates clipping has occurred"; +CM_ SG_ 17 Interpolated "When set Indicates the sample is an interpolation between other samples"; +CM_ SG_ 17 SyncIn "When set indicates a sync-in event has been triggered"; +CM_ SG_ 17 SyncOut "When set Indicates a sync-out event has been generated"; +CM_ SG_ 17 FilterMode "Mask for the 3 bit filter mode field"; +CM_ SG_ 17 HaveGnssTimePulse "Indicates that the 1PPS GNSS time pulse is present"; +CM_ SG_ 17 RtkStatus "Mask for 2 bit RTK status field"; +CM_ SG_ 801 EPSC_measured_steering_angle "+-13875 equals to +-1.0, so the factor is 1/13875"; +VAL_ 12 AMS_Error_Kind 5 "Shunt Overtemperature" 4 "Shunt Overcurrent" 3 "Shunt Timeout" 2 "Slave Panic" 1 "Slave Timeout" 0 "None" ; +VAL_ 1026 STW_Param_Type 0 "BrakeBalance" 1 "TractionControl1" 2 "TractionControl2" 3 "TorqueMap" 4 "Test1" 5 "Test2" 6 "Test3" 7 "Test4" ; +VAL_ 1026 STW_Param_ASRON 0 "OFF" 1 "ON" ; +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" ; +VAL_ 9 AMS_SlavePanic_Kind 0 "Overtemperature" 1 "Undertemperature" 2 "Overvoltage" 3 "Undervoltage" 4 "Too_few_working_temperature_sensors" 5 "Open_cell_connection" ; +VAL_ 17 SelfTestOk 0 "false" 1 "true" ; +VAL_ 17 OrientationValid 0 "false" 1 "true" ; +VAL_ 17 GpsValid 0 "false" 1 "true" ; +VAL_ 17 NoRotation 1 "Aborted" 2 "SamplesRejected" 3 "RunningNormally" ; +VAL_ 17 RepresentativeMotion 0 "false" 1 "true" ; +VAL_ 17 ExternalClockSynced 0 "false" 1 "true" ; +VAL_ 17 ClipAccX 0 "false" 1 "true" ; +VAL_ 17 ClipAccY 0 "false" 1 "true" ; +VAL_ 17 ClipAccZ 0 "false" 1 "true" ; +VAL_ 17 ClipGyrX 0 "false" 1 "true" ; +VAL_ 17 ClipGyrY 0 "false" 1 "true" ; +VAL_ 17 ClipGyrZ 0 "false" 1 "true" ; +VAL_ 17 ClipMagX 0 "false" 1 "true" ; +VAL_ 17 ClipMagY 0 "false" 1 "true" ; +VAL_ 17 ClipMagZ 0 "false" 1 "true" ; +VAL_ 17 Retransmitted 0 "false" 1 "true" ; +VAL_ 17 ClippingDetected 0 "false" 1 "true" ; +VAL_ 17 Interpolated 0 "false" 1 "true" ; +VAL_ 17 SyncIn 0 "false" 1 "true" ; +VAL_ 17 SyncOut 0 "false" 1 "true" ; +VAL_ 17 FilterMode 0 "false" 1 "true" ; +VAL_ 17 HaveGnssTimePulse 0 "false" 1 "true" ; +VAL_ 17 RtkStatus 0 "No RTK" 1 "RTK floating" 2 "RTK fixed" ; +VAL_ 1040 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1024 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1042 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error" ; +VAL_ 1042 AS_State_STW 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency" ; +VAL_ 1042 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.ini new file mode 100644 index 0000000..5ad104a --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN1-MainFT23.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,73,50,100,100,100,136,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.dbc new file mode 100644 index 0000000..2134486 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.dbc @@ -0,0 +1,93 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1298 DV_ContinuousMonitoring: 1 ABX + SG_ Pressure_charged : 5|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ PDU_comm_alive : 2|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ Position_sensors_closed : 4|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_error : 3|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_comm_alive : 1|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ SDC_opened : 0|1@1+ (1,0) [0|1] "bool" FS_Datalogger + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.ini new file mode 100644 index 0000000..0d7411e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN2_FS_DVLogger.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.dbc new file mode 100644 index 0000000..01e3147 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.dbc @@ -0,0 +1,76 @@ +VERSION "created by canmatrix" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX FSG_Logger RES + + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FSG_Logger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FSG_Logger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FSG_Logger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FSG_Logger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FSG_Logger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FSG_Logger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FSG_Logger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FSG_Logger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FSG_Logger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FSG_Logger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FSG_Logger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FSG_Logger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FSG_Logger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FSG_Logger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FSG_Logger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FSG_Logger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FSG_Logger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FSG_Logger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FSG_Logger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FSG_Logger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FSG_Logger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FSG_Logger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FSG_Logger + + + +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.ini new file mode 100644 index 0000000..0d7411e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4-FSGDatalogger.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.dbc new file mode 100644 index 0000000..9324854 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.dbc @@ -0,0 +1,104 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 401 RES_PDO: 7 RES + SG_ RES_Signal_Strength : 48|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ RES_Switch : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_Go_Signal : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 0 NMT_Operational: 2 Vector__XXX + SG_ NMT_Node_ID : 8|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ NMT_Command : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1298 DV_ContinuousMonitoring: 1 ABX + SG_ Pressure_charged : 5|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ PDU_comm_alive : 2|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ Position_sensors_closed : 4|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_error : 3|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_comm_alive : 1|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ SDC_opened : 0|1@1+ (1,0) [0|1] "bool" FS_Datalogger + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +CM_ SG_ 0 NMT_Node_ID "Needs to be 17 for RES"; +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.ini b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.ini new file mode 100644 index 0000000..0d7411e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT23/CAN4_FS_DVLogger_RES.ini @@ -0,0 +1,165 @@ +[View_Vehicles] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Vehicle] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,250, +[View_VehicleNetworks] +HIDDEN=3, +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,150, +[View_VehicleNetwork] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleNetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_VehicleNetworkSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150, +[View_VehicleControlUnit] +HIDDEN= +ORDER=0,1,2,3,4, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,250,150, +[View_VehicleGateways] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,250,100, +[View_VehicleGatewaySignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6, +DEFINITIONS= +COLUMNWIDTHS=250,250,250,250,250,250,250, +[View_Networks] +HIDDEN=2, +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,150, +[View_Network] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_NetworkTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,100,150, +[View_NetworkTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,100,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NetworkNodeGroup] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Ecus] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_Ecu] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,150, +[View_EnvVars] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,50,50,100,100,150, +[View_EnvVar] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,100,50,50,50,50,100,100,150, +[View_NodeGroups] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_NodeGroup] +HIDDEN= +ORDER=0,1,2,3, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,150, +[View_Nodes] +HIDDEN= +ORDER=0,1,2, +DEFINITIONS= +COLUMNWIDTHS=250,100,150, +[View_Node] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxMessages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,250,55,100,50,100,100,150, +[View_NodeTxMsg] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeRxSignals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150,-1, +[View_NodeTxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_NodeRxSigs] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,250,50,100,100,100,50,50,50,50,100,100,150, +[View_Messages] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7, +DEFINITIONS= +COLUMNWIDTHS=250,55,100,50,100,100,100,150, +[View_Message] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14, +DEFINITIONS= +COLUMNWIDTHS=250,250,100,50,50,100,100,100,50,50,50,50,100,100,150, +[View_Signals] +HIDDEN= +ORDER=0,1,2,3,4,5,6,7,8,9,10,11,12, +DEFINITIONS= +COLUMNWIDTHS=250,50,100,100,100,50,50,50,50,100,100,150,100, +[View_ValueTables] +HIDDEN= +ORDER=0,1, +DEFINITIONS= +COLUMNWIDTHS=250,150, +[View_AttrDefs] +HIDDEN=6, +ORDER=0,1,2,3,4,5, +DEFINITIONS= +COLUMNWIDTHS=250,100,100,50,50,100,150, diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1MainFT24.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1MainFT24.dbc new file mode 100644 index 0000000..b8c88af --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1MainFT24.dbc @@ -0,0 +1,2218 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: VN200 PG ACU SSU TTS_RL TTS_RR TTS_FR TTS_FL Shunt AMS ABX SDCL PDU PDMV STW EPSC + + +BO_ 2147483648 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + SG_ PDU_mode_valve_1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led3_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led2_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_mode_valve_1_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PG_Errorbit : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ TTS_NewID : 0|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ PG_ready : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PG_active : 0|1@1+ (1,0) [0|255] "" Vector__XXX + SG_ AMS_Slave9_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave9_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave8_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_Slave11_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave11_V16 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V15 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V14 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V13 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V12 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V9 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V8 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V11 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V10 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V7 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V6 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V5 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V4 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V3 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V2 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V1 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave11_V0 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_FailedSensors : 0|32@1+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave10_V16 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V15 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V14 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V13 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V12 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V9 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V8 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V11 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V10 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V7 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V6 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V5 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V4 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V3 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V2 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V1 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V0 : 0|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave0_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V0 : 0|16@0+ (0.001,0) [0|6.5535] "mV" Vector__XXX + SG_ AMS_Slave0_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave0_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V8 : 0|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + SG_ AMS_Slave1_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave1_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave2_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave3_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave4_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave5_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V6 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave6_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_V1 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V3 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V2 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V0 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V7 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V6 : 0|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + SG_ AMS_Slave7_V5 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V4 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V11 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V10 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V9 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V8 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V15 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V14 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V13 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V12 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_FailedSensors : 0|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave7_V16 : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + +BO_ 206 PDU_Voltages: 2 PDU + SG_ LV_Voltage : 7|16@0+ (0.001,0) [0|20] "V" Vector__XXX + +BO_ 1283 PG_TX_Details: 4 PG + SG_ PGE_Voltage_Cell12 m12 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell11 m11 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell10 m10 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell09 m9 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell08 m8 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell07 m7 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell06 m6 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell05 m5 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell04 m4 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell03 m3 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell02 m2 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Voltage_Cell01 m1 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Temperature_Cell12 m12 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell11 m11 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell10 m10 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell09 m9 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell08 m8 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell07 m7 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell06 m6 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell05 m5 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell04 m4 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell03 m3 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell02 m2 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell01 m1 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Temperature_Cell00 m0 : 24|8@1- (1,0) [0|100] "degC" Vector__XXX + SG_ PGE_Voltage_Cell00 m0 : 15|16@0- (0.001,0) [0|10] "V" ABX + SG_ PGE_Cell_ID M : 0|8@1+ (1,0) [0|12] "" Vector__XXX + +BO_ 1720 AMS_Slave11_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1704 AMS_Slave10_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1688 AMS_Slave9_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1672 AMS_Slave8_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1656 AMS_Slave7_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1640 AMS_Slave6_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1624 AMS_Slave5_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1608 AMS_Slave4_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1592 AMS_Slave3_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1576 AMS_Slave2_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1560 AMS_Slave1_Log8: 8 Vector__XXX + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1718 AMS_Slave11_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1702 AMS_Slave10_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1686 AMS_Slave9_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1670 AMS_Slave8_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1654 AMS_Slave7_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1638 AMS_Slave6_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1622 AMS_Slave5_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1606 AMS_Slave4_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1590 AMS_Slave3_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1574 AMS_Slave2_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1558 AMS_Slave1_Log6: 8 Vector__XXX + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1719 AMS_Slave11_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1703 AMS_Slave10_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1687 AMS_Slave9_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1671 AMS_Slave8_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1655 AMS_Slave7_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1639 AMS_Slave6_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1623 AMS_Slave5_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1607 AMS_Slave4_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1591 AMS_Slave3_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1575 AMS_Slave2_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1559 AMS_Slave1_Log7: 8 Vector__XXX + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1717 AMS_Slave11_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1701 AMS_Slave10_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1685 AMS_Slave9_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1669 AMS_Slave8_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1653 AMS_Slave7_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1637 AMS_Slave6_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1621 AMS_Slave5_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1605 AMS_Slave4_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1589 AMS_Slave3_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1573 AMS_Slave2_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1557 AMS_Slave1_Log5: 8 Vector__XXX + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1716 AMS_Slave11_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1700 AMS_Slave10_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1684 AMS_Slave9_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1668 AMS_Slave8_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1652 AMS_Slave7_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1636 AMS_Slave6_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1620 AMS_Slave5_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1604 AMS_Slave4_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1588 AMS_Slave3_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1572 AMS_Slave2_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1556 AMS_Slave1_Log4: 6 Vector__XXX + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1715 AMS_Slave11_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1699 AMS_Slave10_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1683 AMS_Slave9_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1667 AMS_Slave8_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1651 AMS_Slave7_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1635 AMS_Slave6_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1619 AMS_Slave5_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1603 AMS_Slave4_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1587 AMS_Slave3_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1571 AMS_Slave2_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1555 AMS_Slave1_Log3: 8 Vector__XXX + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1714 AMS_Slave11_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1698 AMS_Slave10_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1682 AMS_Slave9_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1666 AMS_Slave8_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1650 AMS_Slave7_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1634 AMS_Slave6_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1618 AMS_Slave5_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1602 AMS_Slave4_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1586 AMS_Slave3_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1570 AMS_Slave2_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1554 AMS_Slave1_Log2: 8 Vector__XXX + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1713 AMS_Slave11_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1697 AMS_Slave10_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1681 AMS_Slave9_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1665 AMS_Slave8_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1649 AMS_Slave7_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1633 AMS_Slave6_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1617 AMS_Slave5_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1601 AMS_Slave4_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1585 AMS_Slave3_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1569 AMS_Slave2_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1553 AMS_Slave1_Log1: 8 Vector__XXX + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1712 AMS_Slave11_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1696 AMS_Slave10_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1680 AMS_Slave9_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1664 AMS_Slave8_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1648 AMS_Slave7_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1632 AMS_Slave6_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1616 AMS_Slave5_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1600 AMS_Slave4_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1584 AMS_Slave3_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1568 AMS_Slave2_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1552 AMS_Slave1_Log0: 8 Vector__XXX + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1722 AMS_Slave11_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1706 AMS_Slave10_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1690 AMS_Slave9_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1674 AMS_Slave8_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1658 AMS_Slave7_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1642 AMS_Slave6_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1626 AMS_Slave5_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1610 AMS_Slave4_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1594 AMS_Slave3_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1578 AMS_Slave2_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1562 AMS_Slave1_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1721 AMS_Slave11_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1705 AMS_Slave10_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1689 AMS_Slave9_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1673 AMS_Slave8_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1657 AMS_Slave7_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1641 AMS_Slave6_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1625 AMS_Slave5_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1609 AMS_Slave4_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1593 AMS_Slave3_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1577 AMS_Slave2_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1561 AMS_Slave1_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1546 AMS_Slave0_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1545 AMS_Slave0_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 199 PDU_Heartbeat: 1 ABX + SG_ PDU_Heartbeat : 0|1@1- (1,0) [0|0] "" Vector__XXX + +BO_ 5 VN200_GNSS_LL: 8 VN200 + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" VN200 + SG_ Longitude : 16|16@1- (0.05,0) [-1638.4|1638.35] "" VN200 + SG_ UncertaintyN : 32|16@1+ (0.0001,0) [0|6.5535] "" VN200 + SG_ UncertaintyE : 48|16@1+ (0.0001,0) [0|6.5535] "" VN200 + +BO_ 1 VN200_IMU_ACC_ANG: 8 VN200 + SG_ AccAngZ : 40|20@1- (0.0001,0) [-52.4288|52.4287] "" VN200 + SG_ AccAngY : 20|20@1- (0.0001,0) [-52.4288|52.4287] "" VN200 + SG_ AccAngX : 0|20@1- (0.0001,0) [0|0] "" VN200 + +BO_ 2 VN200_IMU_ACC_LIN: 8 VN200 + SG_ AccLinZ : 40|20@1- (0.0001,0) [-52.4288|52.4287] "" VN200 + SG_ AccLinY : 20|20@1- (0.0001,0) [-52.4288|52.4287] "" VN200 + SG_ AccLinX : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" VN200 + +BO_ 17 VN200_INS_LL: 8 VN200 + SG_ UncertaintyN : 32|16@1+ (0.0001,0) [0|6.5535] "" VN200 + SG_ UncertaintyE : 48|16@1+ (0.001,0) [0|65.535] "" VN200 + SG_ Longitude : 16|16@1- (0.05,0) [-1638.4|1638.35] "" VN200 + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" VN200 + +BO_ 50 VN200_INS_VEL: 8 VN200 + SG_ VelLinZ : 32|16@1+ (0.001,0) [0|0] "" VN200 + SG_ VelLinY : 16|16@1+ (0.001,0) [0|65.535] "" VN200 + SG_ VelLinX : 0|16@1+ (0.001,0) [0|0] "" VN200 + SG_ Uncertainity : 48|16@1+ (0.0001,0) [0|6.5535] "" VN200 + +BO_ 6 VN200_INS_YPR: 8 VN200 + SG_ Yaw : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Pitch : 16|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Roll : 32|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Uncertainty : 48|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + +BO_ 136 AMS_Slave8Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|159.375] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 139 AMS_Slave11Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 138 AMS_Slave10Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 137 AMS_Slave9Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 1281 PG_RX: 2 ABX + SG_ PG_ESC_percent : 8|8@1+ (1,0) [0|100] "%_Duty_Cycle_PWM" PG + SG_ PG_command : 0|8@1+ (1,0) [0|3] "" PG + +BO_ 273 ABX_Accel: 8 ABX + SG_ ABX_Accel_Z : 32|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_Y : 16|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_X : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + +BO_ 272 ABX_Hydraulics: 8 ABX + SG_ ABX_Hyd_PB : 16|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + SG_ ABX_Hyd_PA : 0|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + +BO_ 1043 ABX_ParamConfirm: 8 ABX + SG_ ABX_ParamConfirm : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1282 PG_TX: 8 PG + SG_ PG_inverter_voltage : 40|8@1+ (1,0) [0|100] "V" ABX + SG_ PG_temperature : 56|8@1+ (1,0) [0|255] "degC" ABX + SG_ PG_State : 0|4@1+ (1,0) [0|7] "" ABX + SG_ PG_Powerground_Status : 8|8@1+ (1,0) [0|100] "%_PWM" Vector__XXX + SG_ PG_SOC : 24|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ PG_Error_BMStimeout : 16|1@1+ (1,0) [0|1] "" ABX + SG_ PG_current_measurement : 48|8@1+ (1,0) [0|0] "A" ABX + SG_ PG_battery_voltage : 32|8@1+ (1,0) [0|100] "V" ABX + SG_ PG_Error_BMSfault : 17|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_TemperatureError : 18|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_CurrentError : 19|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_CurrentSensorMissing : 20|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_VoltageError : 21|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_VoltageMissing : 22|1@1+ (1,0) [0|1] "" ABX + SG_ PG_Error_StateTransitionFail : 23|1@1+ (1,0) [0|1] "" ABX + +BO_ 227 ACU_TX_Commands: 8 ABX + SG_ ABX_Steering_Angle_Right : 40|8@1- (0.0156863,0) [-2.00784|1.99216] "" ACU + SG_ ABX_Steering_Angle_Left : 32|8@1- (0.0156863,0) [-2.00784|1.99216] "" ACU + SG_ ABX_Speed_RR : 24|8@1+ (0.2,0) [0|51] "" ACU + SG_ ABX_Speed_RL : 16|8@1+ (0.2,0) [0|51] "" ACU + SG_ ABX_Speed_FR : 8|8@1+ (0.2,0) [0|51] "" ACU + SG_ ABX_Speed_FL : 0|8@1+ (0.2,0) [0|51] "" ACU + +BO_ 226 ACU_RX_Commands: 8 ACU + SG_ ACU_Steering_Angle_Left : 24|8@1- (0.016,0) [-2.048|2.032] "" Vector__XXX + SG_ ACU_Steering_Angle_Right : 16|8@1- (0.016,0) [-2.048|2.032] "" Vector__XXX + SG_ ACU_Speed_Target_right : 8|8@1+ (1.2,0) [0|306] "m/s" Vector__XXX + SG_ ACU_Speed_Target_left : 0|8@1+ (1.2,0) [0|306] "" Vector__XXX + +BO_ 225 ACU_RX: 7 ACU + SG_ ACU_PG : 25|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_DRS : 24|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_Cones_Actual : 16|8@1+ (1,0) [0|255] "" ABX + SG_ ACU_Cones_All : 8|8@1+ (1,0) [0|255] "" ABX + SG_ ACU_Lap_Count : 4|4@1+ (1,0) [0|15] "" ABX + SG_ ACU_AS_OK : 1|1@1+ (1,0) [0|1] "Bool" ABX + SG_ ACU_AS_Mission_Complete : 0|1@1+ (1,0) [0|1] "Bool" ABX + +BO_ 1536 AMS_Slave0_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1537 AMS_Slave0_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1538 AMS_Slave0_Log2: 8 AMS + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1539 AMS_Slave0_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1540 AMS_Slave0_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1541 AMS_Slave0_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1542 AMS_Slave0_Log6: 8 AMS + SG_ AMS_SlaveID_T15 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T14 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T13 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T12 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T11 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T10 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1543 AMS_Slave0_Log7: 8 AMS + SG_ AMS_SlaveID_T23 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T22 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T21 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T20 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T19 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T18 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T17 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T16 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1544 AMS_Slave0_Log8: 8 AMS + SG_ AMS_SlaveID_T31 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T30 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T29 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T28 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T27 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T26 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T25 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T24 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 224 ACU_TX: 4 ABX + SG_ ABX_ConMon_Error : 10|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AllowTorque : 8|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Reset : 7|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Power_Off : 6|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_AS_State : 3|3@1+ (1,0) [0|5] "" ACU + SG_ ACU_AS_Mission : 0|3@1+ (1,0) [0|7] "int" ACU + +BO_ 135 AMS_Slave7Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 134 AMS_Slave6Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 133 AMS_Slave5Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 132 AMS_Slave4Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 131 AMS_Slave3Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 130 AMS_Slave2Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 129 AMS_Slave1Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_Sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 265 ABX_Misc: 7 ABX + SG_ ABX_LV_SoC : 40|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ ABX_Distance_session : 8|16@1+ (1,0) [0|65535] "m" Vector__XXX + +BO_ 12 AMS_Error: 2 AMS + SG_ AMS_Error_Arg : 8|8@1- (1,0) [0|0] "" ABX + SG_ AMS_Error_Kind : 0|8@1- (1,0) [0|0] "" ABX + +BO_ 264 ABX_CoolingSys_Internal: 8 ABX + SG_ ABX_CS_T_MotR : 48|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_CS_T_MotL : 32|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_CS_T_InvR : 16|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_CS_T_InvL : 0|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + +BO_ 263 ABX_CoolingSys_MotInv: 8 ABX + SG_ ABX_CS_P_MotRIn : 24|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_T_MotIn : 42|10@1+ (0.1,0) [0|102.3] "degC" Vector__XXX + SG_ ABX_CS_T_InvIn : 32|10@1+ (0.1,0) [0|102.3] "degC" Vector__XXX + SG_ ABX_CS_P_MotLIn : 8|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_InvIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + +BO_ 261 ABX_BrakeT: 8 ABX + SG_ ABX_BrakeT_RR : 48|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_BrakeT_RL : 32|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_BrakeT_FR : 16|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ ABX_BrakeT_FL : 0|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + +BO_ 260 ABX_Wheelspeed: 8 ABX + SG_ ABX_Wheelspeed_RR : 48|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_RL : 32|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FR : 16|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + +BO_ 259 ABX_Dampers: 8 ABX + SG_ ABX_Damper_RR : 48|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FR : 16|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_RL : 32|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + +BO_ 258 ABX_Timings: 8 ABX + SG_ ABX_Sectortime_last : 48|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Sectortime_best : 32|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_last : 16|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + +BO_ 257 ABX_Driver: 8 ABX + SG_ ABX_BrakeP_R : 20|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_Sectorcounter : 56|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Lapcounter : 48|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Steering_Angle : 32|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ ABX_Speed : 40|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ ABX_BrakeP_F : 8|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_APPS_percent : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + +BO_ 1796 TTS_RR: 8 TTS_RR + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OutetRight : 48|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1795 TTS_RL: 8 TTS_RL + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1794 TTS_FR: 8 TTS_FR + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1793 TTS_FL: 8 TTS_FL + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1026 STW_Param_Set: 5 STW + SG_ STW_Param_Plim m0 : 15|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Type M : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Tlim m1 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TVec m3 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_PG m4 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Reku m5 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test2 m6 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test3 m7 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test4 m8 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Slim m2 : 15|32@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 128 AMS_Slave0Status: 8 AMS + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 1280 SSU_Message: 4 SSU + SG_ SSU_AirTemp : 16|16@1- (0.1,0) [-20|80] "degC" Vector__XXX + SG_ SSU_AirPressure : 0|16@1- (1,0) [-1000|1000] "Pa" Vector__XXX + +BO_ 10 AMS_Status: 8 AMS + SG_ AMS_IMD_State : 48|7@1+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_IMD_ok : 55|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" ABX + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" ABX + SG_ SOC : 8|8@1+ (1,0) [0|100] "%" ABX + SG_ Min_cell_volt : 23|16@0+ (0.001,0) [0|65.535] "V" ABX + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.94] "degC" ABX + +BO_ 9 AMS_SlavePanic: 8 AMS + SG_ AMS_SlavePanic_Kind : 15|8@0+ (1,0) [0|7.20576E+016] "" ABX + SG_ AMS_SlavePanic_SlaveID : 0|8@1+ (1,0) [0|255] "" ABX + SG_ AMS_SlavePanic_Arg : 23|32@0+ (1,0) [0|7.20576E+016] "" ABX + +BO_ 11 AMS_In: 1 ABX + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + SG_ Inverters_discharged : 1|1@1+ (1,0) [0|1] "" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "degC" ABX + +BO_ 16 SDCL_tx: 4 SDCL + SG_ asms_state : 0|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_1 : 1|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_2 : 2|1@1+ (1,0) [0|1] "" ABX + SG_ sdc_state_3 : 3|1@1+ (1,0) [0|1] "" ABX + SG_ heartbeat_ok : 4|1@1+ (1,0) [0|1] "" ABX + SG_ sdcl_sdc_ready : 5|1@1+ (1,0) [0|1] "" ABX + SG_ ts_start_muxed : 6|1@1+ (1,0) [0|1] "" ABX + SG_ latch_init_open : 8|1@1+ (1,0) [0|1] "" ABX + SG_ latch_closed : 9|1@1+ (1,0) [0|1] "" ABX + SG_ latch_reopened : 10|1@1+ (1,0) [0|1] "" ABX + SG_ as_mission : 11|3@1+ (1,0) [0|7] "" ABX + +BO_ 15 SDCL_rx: 3 ABX + SG_ as_close_sdc : 0|1@1+ (1,0) [0|1] "" SDCL + SG_ sdcl_heartbeat : 1|1@1+ (1,0) [0|1] "" SDCL + SG_ asb_error : 2|1@1+ (1,0) [0|1] "" SDCL + SG_ as_mission : 4|3@1+ (1,0) [0|7] "" SDCL + +BO_ 200 PDU_Command: 7 ABX + SG_ PDU_servos_regler_rx : 2|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_rx : 5|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_rx : 3|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_radiator_fans_rx : 23|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servo_rx : 14|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_misc_rx : 15|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_alwayson_rx : 7|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_shutdown_circuit_rx : 6|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_ebs_valve_2_rx : 12|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_cs_valve_rx : 11|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_inverter_rx : 1|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_steering_rx : 8|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_ebs_valve_1_rx : 13|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_aggregat_rx : 9|1@0+ (1,0) [0|1] "" PDU + SG_ PDU_PWM_TSAC_fans_rx : 31|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_PWM_aggregat_rx : 39|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_PWM_pump_rx : 47|8@0+ (1,0) [0|255] "" PDU + SG_ PDU_checksum_rx : 55|8@0+ (1,0) [0|255] "" PDU + +BO_ 201 PDU_Response: 7 PDU + SG_ PDU_ebs_valve_2_tx : 12|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_PWM_TSAC_fans : 23|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servos_regler_tx : 2|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_tx : 3|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_tx : 5|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_tx : 14|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_misc_tx : 15|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_alwayson_tx : 7|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_shutdown_circuit_tx : 6|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_aggregat_tx : 9|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_inverter_tx : 1|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_steering_tx : 8|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_ebs_valve_1_tx : 13|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_cs_valve_tx : 11|1@0+ (1,0) [0|1] "" ABX + SG_ PDU_PWM_radiatot_fans_tx : 31|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_PWM_aggregat : 39|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_PWM_pump : 47|8@0+ (1,0) [0|255] "" ABX + SG_ PDU_heartbeat_ok_tx : 55|8@0+ (1,0) [0|255] "" ABX + +BO_ 514 TxPDO: 6 ABX + SG_ pdm_output2_shortcircuit : 21|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_shortcircuit : 20|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_cablebreak : 19|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_cablebreak : 18|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_controllerrange : 17|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_controllerrange : 16|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_shutdown : 13|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_warning : 12|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_currentoverload : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_shortcircuit : 10|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_cablebreak : 9|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_middleposition : 8|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_statewarning : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_startupmissing : 4|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_timeout : 3|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_greater_32v : 2|1@1+ (1,0) [0|1] "" ABX + SG_ pdm_powersupply_less_8v : 1|1@1+ (1,0) [0|1] "" ABX + SG_ PDM_analoginput : 32|16@1+ (1,0) [0|65535] "%." ABX + +BO_ 1040 AS_Mission_fb: 1 ABX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" STW + +BO_ 1024 STW_mission_selected: 1 STW + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" ABX + +BO_ 801 EPSC_out: 8 EPSC + SG_ EPSC_measured_steering_angle : 7|16@0- (7.20721E-005,0) [-13875|13875] "part of full steering" ABX + SG_ EPSC_measured_rpm : 39|12@0- (0.1,0) [-204.8|204.7] "rpm" ABX + SG_ EPSC_measured_current : 23|8@0+ (0.1,0) [0|25.5] "A" ABX + SG_ EPSC_measured_voltage : 31|8@0+ (0.1,0) [0|20] "V" ABX + SG_ EPSC_measured_temperature : 43|10@0+ (0.1,0) [0|102.3] "degC" ABX + SG_ EPSC_measured_internal_temp : 49|10@0+ (0.1,0) [0|102.3] "degC" ABX + +BO_ 291 EPSC_Steering_In: 2 ABX + SG_ EPSC_desired_steering_angle : 7|16@0- (0.0001,0) [-10000|10000] "" EPSC + +BO_ 1025 STW_buttons: 1 STW + SG_ STW_button_DRS : 4|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_Enter : 3|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_PG : 2|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_Reku : 1|1@1+ (1,0) [0|1] "" ABX + SG_ STW_button_TV : 0|1@1+ (1,0) [0|1] "" ABX + +BO_ 1042 STW_status: 6 ABX + SG_ InvL_ready : 8|1@1+ (1,0) [0|0] "" STW + SG_ iniChk_state : 24|8@1+ (1,0) [0|255] "" STW + SG_ InvR_ready : 9|1@1+ (1,0) [0|0] "" STW + SG_ AS_State_STW : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ SDC_BFL : 10|1@1+ (1,0) [0|0] "" STW + SG_ SDC_BRL : 11|1@1+ (1,0) [0|0] "" STW + SG_ SDC_ACC : 12|1@1+ (1,0) [0|0] "" STW + SG_ SDC_HVB : 13|1@1+ (1,0) [0|0] "" STW + SG_ Lap_Count : 16|6@1+ (1,0) [0|64] "" STW + SG_ ERR_SDC : 32|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AMS : 33|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvL : 43|1@1+ (1,0) [0|1] "" STW + SG_ ERR_InvR : 44|1@1+ (1,0) [0|1] "" STW + SG_ ERR_IniChk : 35|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ConMon : 36|1@1+ (1,0) [0|1] "" STW + SG_ ERR_SCS : 37|1@1+ (1,0) [0|1] "" STW + SG_ ERR_sBSPD : 38|1@1+ (1,0) [0|1] "" STW + SG_ ERR_APPSp : 39|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AS : 40|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ROS : 41|1@1+ (1,0) [0|1] "" STW + SG_ ERR_RES : 42|1@1+ (1,0) [0|1] "" STW + SG_ ERR_PDU : 34|1@1+ (1,0) [0|1] "" STW + SG_ R2D_Progress : 4|4@1+ (1,0) [0|15] "" STW + +BO_ 202 PDU_Current_1: 8 PDU + SG_ PDU_alwayson_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_misc_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_inverter_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_shutdown_circuit_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 203 PDU_Current_2: 8 PDU + SG_ PDU_tsac__fans_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_pump_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_aggregat_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_steering_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 204 PDU_Current_3: 8 PDU + SG_ PDU_ebs_valve_1_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_ebs_valve_2_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_mode_cs_valve_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_mode_gss_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 205 PDU_Current_4: 8 PDU + SG_ PDU_radiator_fans_curr : 7|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_ACU_curr : 23|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_servos_curr : 39|16@0+ (1,0) [0|65535] "" ABX + SG_ PDU_lidar_curr : 55|16@0+ (1,0) [0|65535] "" ABX + +BO_ 292 EPSC_Config_In: 7 ABX + SG_ EPSC_Ki_curr m1 : 55|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_curr m1 : 47|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_rpm m1 : 39|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_rpm m1 : 31|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_pos m1 : 23|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_pos m1 : 15|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_should_calibrate : 7|1@0- (1,0) [0|1] "" Vector__XXX + SG_ EPSC_should_change_mode M : 6|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_mode m1 : 5|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag3 : 4|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag4 : 3|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag5 : 2|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag6 : 1|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag7 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + + + +CM_ BO_ 225 "Cycle Time: 100ms"; +CM_ BO_ 224 "Cycle Time: 50ms"; +CM_ SG_ 224 ACU_AS_Mission "AS Mission Selection"; +CM_ BO_ 265 "Cycle time: 1s"; +CM_ BO_ 264 "Cycle time: 100ms"; +CM_ BO_ 263 "Cycle time: 100ms"; +CM_ BO_ 261 "Cycle time: 100ms"; +CM_ BO_ 260 "Cycle time: 10ms"; +CM_ BO_ 259 "Cycle time: 10ms"; +CM_ BO_ 258 "Cycle time: 1s"; +CM_ SG_ 801 EPSC_measured_steering_angle "+-13875 equals to +-1.0, so the factor is 1/13875"; +VAL_ 1281 PG_command 0 "PG_INACTIVE" 1 "PG_READY" 2 "PG_ACTIVE" 15 "PG_CHARGING" ; +VAL_ 1282 PG_State 0 "PG_INACTIVE" 1 "PG_PRECHARGE" 2 "PG_READY" 3 "PG_ACTIVE" 4 "PG_DISCHARGE" 5 "PG_CHARGING_PRECHARGE" 6 "PG_CHARGING" 7 "PG_ERROR" ; +VAL_ 12 AMS_Error_Kind 5 "Shunt Overtemperature" 4 "Shunt Overcurrent" 3 "Shunt Timeout" 2 "Slave Panic" 1 "Slave Timeout" 0 "None" ; +VAL_ 1026 STW_Param_Type 0 "BrakeBalance" 1 "TractionControl1" 2 "TractionControl2" 3 "TorqueMap" 4 "Test1" 5 "Test2" 6 "Test3" 7 "Test4" ; +VAL_ 1026 STW_Param_PG 0 "OFF" 1 "ON" ; +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" ; +VAL_ 9 AMS_SlavePanic_Kind 0 "Overtemperature" 1 "Undertemperature" 2 "Overvoltage" 3 "Undervoltage" 4 "Too_few_working_temperature_sensors" 5 "Open_cell_connection" ; +VAL_ 1040 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1024 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1042 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error" ; +VAL_ 1042 AS_State_STW 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency" ; +VAL_ 1042 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1_Charger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1_Charger.dbc new file mode 100644 index 0000000..19bad03 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN1_Charger.dbc @@ -0,0 +1,1434 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: VN200 PG ACU SSU TTS_RL TTS_RR TTS_FR TTS_FL Shunt AMS ABX SDCL PDU PDMV STW EPSC + + +BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ AMS_Slave_T32 : 0|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ New_Signal_712 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_711 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ PDU_mode_valve_1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led3_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led2_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_mode_valve_1_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PG_Errorbit : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ TTS_NewID : 0|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ PG_ready : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PG_active : 0|1@1+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_Heartbeat : 0|1@1- (1,0) [0|0] "" Vector__XXX + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" Vector__XXX + SG_ Longitude : 0|16@1- (0.05,0) [-1638.4|1638.35] "" Vector__XXX + SG_ UncertaintyN : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ UncertaintyE : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ AccAngZ : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccAngY : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccAngX : 0|20@1- (0.0001,0) [0|0] "" Vector__XXX + SG_ AccLinZ : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccLinY : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccLinX : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ UncertaintyN : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ UncertaintyE : 0|16@1+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ Longitude : 0|16@1- (0.05,0) [-1638.4|1638.35] "" Vector__XXX + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" Vector__XXX + SG_ VelLinZ : 0|16@1+ (0.001,0) [0|0] "" Vector__XXX + SG_ VelLinY : 0|16@1+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ VelLinX : 0|16@1+ (0.001,0) [0|0] "" Vector__XXX + SG_ Uncertainity : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ Yaw : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Pitch : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Roll : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Uncertainty : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ AMS_Slave9_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_Slave11_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ PG_percent : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_state : 0|8@1+ (1,0) [0|3] "" Vector__XXX + SG_ ABX_Accel_Z : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_Y : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_X : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Hyd_PB : 0|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + SG_ ABX_Hyd_PA : 0|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + SG_ ABX_ParamConfirm : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_inverter_voltage : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_temperature : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_State : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ PG_Powerground_Status : 0|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ PG_SOC : 0|12@1+ (1,0) [0|0] "" Vector__XXX + SG_ PG_Error : 0|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ PG_current_measurement : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ PG_battery_voltage : 0|8@1+ (1,0) [0|4095] "" Vector__XXX + SG_ ABX_Steering_Angle_Right : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ABX_Steering_Angle_Left : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ABX_Speed_RR : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_RL : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_FR : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_FL : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ACU_Steering_Angle_Left : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ACU_Steering_Angle_Right : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ACU_Speed_Target_right : 0|8@1+ (1.2,0) [0|306] "m/s" Vector__XXX + SG_ ACU_Speed_Target_left : 0|8@1+ (1.2,0) [0|306] "" Vector__XXX + SG_ ACU_PG : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_DRS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_Cones_Actual : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ACU_Cones_All : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ACU_Lap_Count : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AS_OK : 0|1@1+ (1,0) [0|1] "Bool" Vector__XXX + SG_ ACU_AS_Mission_Complete : 0|1@1+ (1,0) [0|1] "Bool" Vector__XXX + SG_ AMS_Slave0_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ ABX_ConMon_Error : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AllowTorque : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Reset : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Power_Off : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_AS_State : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ ACU_AS_Mission : 0|3@1+ (1,0) [0|7] "int" Vector__XXX + SG_ ABX_LV_SoC : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ ABX_Distance_total : 0|16@1+ (0.01,0) [0|655.35] "km" Vector__XXX + SG_ ABX_Distance_session : 0|16@1+ (1,0) [0|65535] "m" Vector__XXX + SG_ ABX_CS_T_MotR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_MotL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_P_MotRIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_T_MotIn : 0|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_T_InvIn : 0|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_P_MotLIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_InvIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_BrakeT_RR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_RL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_Wheelspeed_RR : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_RL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FR : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Damper_RR : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FR : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_RL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Sectortime_last : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Sectortime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_last : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_BrakeP_R : 0|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_Sectorcounter : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Lapcounter : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Steering_Angle : 0|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ ABX_Speed : 0|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ ABX_BrakeP_F : 0|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_APPS_percent : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OutetRight : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ STW_Param_BBal : 0|32@0+ (0.1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Type : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_SLIPREF : 0|32@0+ (0.01,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRP : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRON : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRI : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_EnduPowerLimit : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test3 : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test4 : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_MUMAX : 0|32@0+ (0.1,0) [0|1] "" Vector__XXX + SG_ SSU_AirTemp : 0|16@1- (0.1,0) [-20|80] "�C" Vector__XXX + SG_ SSU_AirPressure : 0|16@1- (1,0) [-1000|1000] "Pa" Vector__XXX + SG_ asms_state : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_1 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_2 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_3 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ heartbeat_ok : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdcl_sdc_ready : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ts_start_muxed : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_init_open : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_closed : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_reopened : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ as_mission : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ as_close_sdc : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdcl_heartbeat : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ asb_error : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ as_mission : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ PDU_servos_regler_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_radiator_fans_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servo_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_misc_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_alwayson_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_shutdown_circuit_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_2_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_cs_valve_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_inverter_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_steering_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_aggregat_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_TSAC_fans_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_aggregat_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_pump_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_checksum_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_ebs_valve_2_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_TSAC_fans : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servos_regler_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_misc_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_alwayson_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_shutdown_circuit_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_aggregat_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_inverter_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_steering_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_1_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_cs_valve_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_radiatot_fans_tx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_aggregat : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_pump : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_checksum_tx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ pdm_output2_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_controllerrange : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_controllerrange : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_shutdown : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_warning : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_currentoverload : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_middleposition : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_statewarning : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_startupmissing : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_timeout : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_greater_32v : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_less_8v : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDM_analoginput : 0|16@1+ (1,0) [0|65535] "%." Vector__XXX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" Vector__XXX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" Vector__XXX + SG_ EPSC_measured_steering_angle : 0|16@0- (7.20721E-005,0) [-13875|13875] "part of full steering" Vector__XXX + SG_ EPSC_measured_rpm : 0|12@0- (0.1,0) [-204.8|204.7] "rpm" Vector__XXX + SG_ EPSC_measured_current : 0|8@0+ (0.1,0) [0|25.5] "A" Vector__XXX + SG_ EPSC_measured_voltage : 0|8@0+ (0.1,0) [0|20] "V" Vector__XXX + SG_ EPSC_measured_temperature : 0|10@0+ (0.1,0) [0|102.3] "°C" Vector__XXX + SG_ EPSC_measured_internal_temp : 0|10@0+ (0.1,0) [0|102.3] "°C" Vector__XXX + SG_ EPSC_desired_steering_angle : 0|16@0- (0.0001,0) [-10000|10000] "" Vector__XXX + SG_ STW_button_PG : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_left : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_right : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_DRS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_Enter : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ InvL_ready : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ iniChk_state : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ InvR_ready : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ AS_State_STW : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ SDC_BFL : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_BRL : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_ACC : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_HVB : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Lap_Count : 0|6@1+ (1,0) [0|64] "" Vector__XXX + SG_ ERR_SDC : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_AMS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_InvL : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_InvR : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_IniChk : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_ConMon : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_SCS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_sBSPD : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_APPSp : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_AS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_ROS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_RES : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_PDU : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ R2D_Progress : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ PDU_alwayson_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_misc_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_inverter_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_shutdown_circuit_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_tsac__fans_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_pump_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_aggregat_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_steering_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ebs_valve_1_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ebs_valve_2_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_mode_cs_valve_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_mode_gss_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_radiator_fans_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ACU_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_servos_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_lidar_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ EPSC_Ki_curr : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_curr : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_rpm : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_rpm : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_pos : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_pos : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_should_calibrate : 0|1@0- (1,0) [0|1] "" Vector__XXX + SG_ EPSC_should_change_mode : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_mode : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag3 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag4 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag5 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag6 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag7 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 140 AMS_Slave12Status1: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 1737 AMS_Slave12_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1732 AMS_Slave12_Log4: 8 Vector__XXX + SG_ AMS_Slave12_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave12_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1731 AMS_Slave12_Log3: 8 Vector__XXX + SG_ AMS_Slave12_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1730 AMS_Slave12_Log2: 8 Vector__XXX + SG_ AMS_Slave12_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1738 AMS_Slave12_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1729 AMS_Slave12_Log1: 8 Vector__XXX + SG_ AMS_Slave12_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1728 AMS_Slave12_Log0: 8 Vector__XXX + SG_ AMS_Slave12_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1722 AMS_Slave11_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1706 AMS_Slave10_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1690 AMS_Slave9_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1674 AMS_Slave8_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1658 AMS_Slave7_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1642 AMS_Slave6_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1626 AMS_Slave5_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1610 AMS_Slave4_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1594 AMS_Slave3_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1578 AMS_Slave2_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1562 AMS_Slave1_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1721 AMS_Slave11_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1705 AMS_Slave10_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1689 AMS_Slave9_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1673 AMS_Slave8_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1657 AMS_Slave7_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1641 AMS_Slave6_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1625 AMS_Slave5_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1609 AMS_Slave4_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1593 AMS_Slave3_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1577 AMS_Slave2_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1561 AMS_Slave1_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1546 AMS_Slave0_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1545 AMS_Slave0_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1684 AMS_Slave9_Log4: 8 Vector__XXX + SG_ AMS_Slave9_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave9_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1683 AMS_Slave9_Log3: 8 Vector__XXX + SG_ AMS_Slave9_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1682 AMS_Slave9_Log2: 8 Vector__XXX + SG_ AMS_Slave9_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1681 AMS_Slave9_Log1: 8 Vector__XXX + SG_ AMS_Slave9_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1680 AMS_Slave9_Log0: 8 Vector__XXX + SG_ AMS_Slave9_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 136 AMS_Slave8Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|159.375] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 1668 AMS_Slave8_Log4: 8 Vector__XXX + SG_ AMS_Slave8_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave8_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1667 AMS_Slave8_Log3: 8 Vector__XXX + SG_ AMS_Slave8_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1666 AMS_Slave8_Log2: 8 Vector__XXX + SG_ AMS_Slave8_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1665 AMS_Slave8_Log1: 8 Vector__XXX + SG_ AMS_Slave8_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1664 AMS_Slave8_Log0: 8 Vector__XXX + SG_ AMS_Slave8_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 139 AMS_Slave11Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 138 AMS_Slave10Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 1716 AMS_Slave11_Log4: 8 Vector__XXX + SG_ AMS_Slave12_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave12_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1715 AMS_Slave11_Log3: 8 Vector__XXX + SG_ AMS_Slave12_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1714 AMS_Slave11_Log2: 8 Vector__XXX + SG_ AMS_Slave12_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1713 AMS_Slave11_Log1: 8 Vector__XXX + SG_ AMS_Slave12_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1712 AMS_Slave11_Log0: 8 Vector__XXX + SG_ AMS_Slave12_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1700 AMS_Slave10_Log4: 8 Vector__XXX + SG_ AMS_Slave10_FailedSensors : 16|32@1+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave10_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1699 AMS_Slave10_Log3: 8 Vector__XXX + SG_ AMS_Slave10_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1698 AMS_Slave10_Log2: 8 Vector__XXX + SG_ AMS_Slave10_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1697 AMS_Slave10_Log1: 8 Vector__XXX + SG_ AMS_Slave10_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1696 AMS_Slave10_Log0: 8 Vector__XXX + SG_ AMS_Slave10_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 137 AMS_Slave9Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 1536 AMS_Slave0_Log0: 8 AMS + SG_ AMS_Slave0_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V0 : 7|16@0+ (0.001,0) [0|6.5535] "mV" Vector__XXX + +BO_ 1537 AMS_Slave0_Log1: 8 AMS + SG_ AMS_Slave0_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1538 AMS_Slave0_Log2: 8 AMS + SG_ AMS_Slave0_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1539 AMS_Slave0_Log3: 8 AMS + SG_ AMS_Slave0_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1540 AMS_Slave0_Log4: 6 AMS + SG_ AMS_Slave0_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave0_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1552 AMS_Slave1_Log0: 8 AMS + SG_ AMS_Slave1_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1553 AMS_Slave1_Log1: 8 AMS + SG_ AMS_Slave1_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1554 AMS_Slave1_Log2: 8 AMS + SG_ AMS_Slave1_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V8 : 7|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + +BO_ 1555 AMS_Slave1_Log3: 8 AMS + SG_ AMS_Slave1_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1556 AMS_Slave1_Log4: 6 AMS + SG_ AMS_Slave1_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave1_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1568 AMS_Slave2_Log0: 8 AMS + SG_ AMS_Slave2_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1569 AMS_Slave2_Log1: 8 AMS + SG_ AMS_Slave2_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1570 AMS_Slave2_Log2: 8 AMS + SG_ AMS_Slave2_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1571 AMS_Slave2_Log3: 8 AMS + SG_ AMS_Slave2_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1572 AMS_Slave2_Log4: 6 AMS + SG_ AMS_Slave2_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave2_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1584 AMS_Slave3_Log0: 8 AMS + SG_ AMS_Slave3_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1585 AMS_Slave3_Log1: 8 AMS + SG_ AMS_Slave3_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1586 AMS_Slave3_Log2: 8 AMS + SG_ AMS_Slave3_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1587 AMS_Slave3_Log3: 8 AMS + SG_ AMS_Slave3_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1588 AMS_Slave3_Log4: 6 AMS + SG_ AMS_Slave3_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave3_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1600 AMS_Slave4_Log0: 8 AMS + SG_ AMS_Slave4_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1601 AMS_Slave4_Log1: 8 AMS + SG_ AMS_Slave4_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1602 AMS_Slave4_Log2: 8 AMS + SG_ AMS_Slave4_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1603 AMS_Slave4_Log3: 8 AMS + SG_ AMS_Slave4_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1604 AMS_Slave4_Log4: 6 AMS + SG_ AMS_Slave4_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave4_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1616 AMS_Slave5_Log0: 8 AMS + SG_ AMS_Slave5_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1617 AMS_Slave5_Log1: 8 AMS + SG_ AMS_Slave5_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1618 AMS_Slave5_Log2: 8 AMS + SG_ AMS_Slave5_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1619 AMS_Slave5_Log3: 8 AMS + SG_ AMS_Slave5_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1620 AMS_Slave5_Log4: 6 AMS + SG_ AMS_Slave5_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave5_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1632 AMS_Slave6_Log0: 8 AMS + SG_ AMS_Slave6_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1633 AMS_Slave6_Log1: 8 AMS + SG_ AMS_Slave6_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1634 AMS_Slave6_Log2: 8 AMS + SG_ AMS_Slave6_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1635 AMS_Slave6_Log3: 8 AMS + SG_ AMS_Slave6_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1636 AMS_Slave6_Log4: 6 AMS + SG_ AMS_Slave6_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave6_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1648 AMS_Slave7_Log0: 8 AMS + SG_ AMS_Slave7_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1649 AMS_Slave7_Log1: 8 AMS + SG_ AMS_Slave7_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V6 : 39|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + SG_ AMS_Slave7_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1650 AMS_Slave7_Log2: 8 AMS + SG_ AMS_Slave7_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1651 AMS_Slave7_Log3: 8 AMS + SG_ AMS_Slave7_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1652 AMS_Slave7_Log4: 6 AMS + SG_ AMS_Slave7_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave7_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 135 AMS_Slave7Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 134 AMS_Slave6Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 133 AMS_Slave5Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 132 AMS_Slave4Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 131 AMS_Slave3Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 130 AMS_Slave2Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 129 AMS_Slave1Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_Sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 12 AMS_Error: 2 AMS + SG_ AMS_Error_Arg : 8|8@1- (1,0) [0|0] "" ABX + SG_ AMS_Error_Kind : 0|8@1- (1,0) [0|0] "" ABX + +BO_ 128 AMS_Slave0Status: 8 AMS + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 10 AMS_Status: 6 AMS + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" ABX + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" ABX + SG_ SOC : 8|8@1+ (1,0) [0|100] "%" ABX + SG_ Min_cell_volt : 23|16@0+ (0.001,0) [0|65.535] "V" ABX + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.94] "°C" ABX + +BO_ 9 AMS_SlavePanic: 8 AMS + SG_ AMS_SlavePanic_Kind : 15|8@0+ (1,0) [0|7.20576E+016] "" ABX + SG_ AMS_SlavePanic_SlaveID : 0|8@1+ (1,0) [0|255] "" ABX + SG_ AMS_SlavePanic_Arg : 23|32@0+ (1,0) [0|7.20576E+016] "" ABX + +BO_ 11 AMS_In: 1 ABX + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + SG_ Inverters_discharged : 1|1@1+ (1,0) [0|1] "" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "°C" ABX + + + +CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider."; +CM_ SG_ 3221225472 ACU_AS_Mission "AS Mission Selection"; +CM_ SG_ 3221225472 EPSC_measured_steering_angle "+-13875 equals to +-1.0, so the factor is 1/13875"; +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "BusType" ""; +BA_ "BusType" "CAN"; +VAL_ 3221225472 STW_Param_Type 0 "BrakeBalance" 1 "TractionControl1" 2 "TractionControl2" 3 "TorqueMap" 4 "Test1" 5 "Test2" 6 "Test3" 7 "Test4" ; +VAL_ 3221225472 STW_Param_ASRON 0 "OFF" 1 "ON" ; +VAL_ 3221225472 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 3221225472 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error" ; +VAL_ 3221225472 AS_State_STW 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency" ; +VAL_ 3221225472 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success" ; +VAL_ 12 AMS_Error_Kind 5 "Shunt Overtemperature" 4 "Shunt Overcurrent" 3 "Shunt Timeout" 2 "Slave Panic" 1 "Slave Timeout" 0 "None" ; +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" ; +VAL_ 9 AMS_SlavePanic_Kind 0 "Overtemperature" 1 "Undertemperature" 2 "Overvoltage" 3 "Undervoltage" 4 "Too_few_working_temperature_sensors" 5 "Open_cell_connection" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN2_FS_DVLogger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN2_FS_DVLogger.dbc new file mode 100644 index 0000000..2be12b1 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN2_FS_DVLogger.dbc @@ -0,0 +1,99 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 1347 RES_Czech: 8 Vector__XXX + SG_ RES_Switch : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_Signal_Quality : 8|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ RES_Go : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1298 DV_ContinuousMonitoring: 1 ABX + SG_ Pressure_charged : 5|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ PDU_comm_alive : 2|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ Position_sensors_closed : 4|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_error : 3|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_comm_alive : 1|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ SDC_opened : 0|1@1+ (1,0) [0|1] "bool" FS_Datalogger + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN4_FS_DVLogger_RES.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN4_FS_DVLogger_RES.dbc new file mode 100644 index 0000000..5253538 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT24/CAN4_FS_DVLogger_RES.dbc @@ -0,0 +1,96 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 401 RES_PDO: 7 RES + SG_ RES_Signal_Strength : 48|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ RES_Switch : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_Go_Signal : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 0 NMT_Operational: 2 Vector__XXX + SG_ NMT_Node_ID : 8|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ NMT_Command : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-30|30] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-30|30] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-128|127] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [0|0] "°/s" FS_Datalogger + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +CM_ SG_ 0 NMT_Node_ID "Needs to be 17 for RES"; +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1MainFT25.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1MainFT25.dbc new file mode 100644 index 0000000..eac547d --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1MainFT25.dbc @@ -0,0 +1,856 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: Dashboard Sensornode_R Sensornode_F VN200 ACU SSU TTS_RL TTS_RR TTS_FR TTS_FL Shunt AMS FTCU PDU PDMV STW EPSC + + +BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ New_Signal_547 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_546 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_545 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_544 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_543 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_542 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_541 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_540 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_539 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDO_Read_Write : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ New_Signal_542 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1910 Inverter_Velocity: 8 Vector__XXX + SG_ Inverter_2_Velocity : 32|32@1- (0.001,0) [-2147483.648|2147483.647] "" Vector__XXX + SG_ Inverter_1_Velocity : 0|32@1- (0.001,0) [-2147483.648|2147483.647] "" Vector__XXX + +BO_ 1920 Inverter_Errors_Warnings: 8 Vector__XXX + SG_ Inverter_2_Warnings : 48|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Inverter_2_Errors : 32|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Inverter_1_Warnings : 16|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Inverter_1_Errors : 0|16@1+ (1,0) [0|65535] "" Vector__XXX + +BO_ 1913 Inverter_Torque_Actual_CW: 8 Vector__XXX + SG_ Inverter_2_Torque_Actual : 48|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_2_ControlWord : 32|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Inverter_1_Torque_Actual : 16|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_1_ControlWord : 0|16@1+ (1,0) [0|65535] "" Vector__XXX + +BO_ 1912 Inverter_Temperatur: 8 Vector__XXX + SG_ Inverter_2_Temp_Mot : 48|16@1- (1,0) [-128|127] "" Vector__XXX + SG_ Inverter_2_Temp_Inv : 32|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_1_Temp_Mot : 16|16@1- (1,0) [-128|127] "" Vector__XXX + SG_ Inverter_1_Temp_Inv : 0|16@1- (1,0) [-128|127] "" Vector__XXX + +BO_ 1911 Inverter_Torque_wanted: 8 Vector__XXX + SG_ Inverter_2_Torque_Desired : 48|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_1_Torque_Desired : 32|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_2_Torque_Demanded : 16|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Inverter_1_Torque_Demanded : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + +BO_ 1843 SDO_Telemetrie_Rx_Node1: 8 Vector__XXX + SG_ SDO_data : 32|32@1+ (1,0) [0|4294967295] "" Vector__XXX + SG_ SDO_OD_subindex : 24|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ SDO_OD_index : 8|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ SDO_command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1841 SDO_Telemetrie_Rx_Node2: 8 Vector__XXX + SG_ SDO_data : 32|32@1+ (1,0) [0|4294967295] "" Vector__XXX + SG_ SDO_OD_subindex : 24|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ SDO_OD_index : 8|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ SDO_command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1842 SDO_Telemetrie_Tx: 8 Vector__XXX + SG_ SDO_data : 32|32@1+ (1,0) [0|4294967295] "" Vector__XXX + SG_ SDO_OD_subindex : 24|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ SDO_OD_index : 8|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ SDO_command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1840 Laptop_SDO_Node: 1 Vector__XXX + SG_ Node_ID_SDO : 0|2@1+ (1,0) [0|3] "" Vector__XXX + +BO_ 1811 XSens_LongLat: 8 Vector__XXX + SG_ XSens_longitude : 32|32@1- (1.19209E-07,0) [-255.999378194432|255.999378075223] "deg" Vector__XXX + SG_ XSens_latitude : 0|32@1- (5.96046E-08,0) [-127.999903845581|127.999903785976] "deg" Vector__XXX + +BO_ 1810 XSens_rateofturn: 6 Vector__XXX + SG_ XSens_gyZ : 32|16@1- (0.00195313,0) [-64.00016384|63.99821071] "rad/s" Vector__XXX + SG_ XSens_gyY : 16|16@1- (0.00195313,0) [-64.00016384|63.99821071] "rad/s" Vector__XXX + SG_ XSens_gyrX : 0|16@1- (0.00195313,0) [-64.00016384|63.99821071] "rad/s" Vector__XXX + +BO_ 1809 XSens_Acceleration: 6 Vector__XXX + SG_ XSens_accZ : 32|16@1- (0.00390625,0) [-128|127.99609375] "m/s^2" Vector__XXX + SG_ XSens_accY : 16|16@1- (0.00390625,0) [-128|127.99609375] "m/s^2" Vector__XXX + SG_ XSens_accX : 0|16@1- (0.00390625,0) [-128|127.99609375] "m/s^2" Vector__XXX + +BO_ 1812 XSens_Velocity: 6 Vector__XXX + SG_ XSens_velZ : 32|16@1- (0.015625,0) [-512|511.984375] "m/s" Vector__XXX + SG_ XSens_velY : 16|16@1- (0.015625,0) [-512|511.984375] "m/s" Vector__XXX + SG_ XSens_velX : 0|16@1- (0.015625,0) [-512|511.984375] "m/s" Vector__XXX + +BO_ 1824 Telemetrie: 7 Vector__XXX + SG_ TS_deactivate : 15|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ Traction_Control_on : 14|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ Reku_on : 13|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Torque_Vectoring_on : 12|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Torque_ohne_Limit_R : 48|8@1+ (10,0) [0|2550] "" Vector__XXX + SG_ Torque_ohne_Limit_L : 40|8@1+ (10,0) [0|2550] "" Vector__XXX + SG_ Torque_Limit_dynamisch : 32|8@1+ (10,0) [0|2550] "" Vector__XXX + SG_ Powermap : 4|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ Power_Limit : 24|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ Pressure_Sensor_ok : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ASP_ok : 10|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Torque_Limit : 16|8@1+ (10,0) [0|2550] "" Vector__XXX + SG_ Allow_Torque : 9|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Brake_ok : 8|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ APPS_ok : 7|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ Ini_Check_error_State : 0|4@1+ (1,0) [0|15] "" Vector__XXX + +BO_ 1829 Override_Powermap: 8 Vector__XXX + SG_ Laptopp_Power_Map : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ Laptop_TV : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ Laptop_TC_P : 32|16@1+ (0.1,0) [0|65535] "" Vector__XXX + SG_ Laptop_TC_Mumax : 48|8@1+ (0.01,1) [1|3.55] "" Vector__XXX + SG_ Laptop_TC_I : 16|16@1+ (0.1,0) [0|6553.5] "" Vector__XXX + SG_ Laptop_TC : 4|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Laptop_slipref : 8|8@1+ (0.01,0) [0|2.55] "" Vector__XXX + SG_ Laptop_Reku : 3|1@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1828 Override_Laptop_2: 5 Vector__XXX + SG_ Laptop_Torque_Lim : 32|8@1+ (10,0) [0|1500] "" Vector__XXX + SG_ Laptop_Powerlimit : 24|8@1+ (1,0) [0|80] "" Vector__XXX + SG_ manual_input_torque : 8|12@1+ (1,0) [0|4095] "" Vector__XXX + SG_ AS_State : 3|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ AS_Mission : 0|3@1+ (1,0) [0|7] "" Vector__XXX + +BO_ 1827 Override_EPSC_Cooling: 8 Vector__XXX + SG_ TS_cooling_PWM : 24|8@1+ (0.005,0) [0|1.275] "" Vector__XXX + SG_ TS_cooling_enable : 13|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ AC_cooling_PWM : 16|8@1+ (0.005,0) [0|1.275] "" Vector__XXX + SG_ AC_Cooling_enable : 12|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_mode : 10|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ EPSC_manual_angle : 0|10@1- (1,0) [-512|511] "" Vector__XXX + +BO_ 1825 Override_Laptop: 3 Vector__XXX + SG_ override_torque_input : 19|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_TC_parameter : 18|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_Power_Map : 17|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_TS_Cooling_enable : 16|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_PN_V2_enable : 15|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_PN_V1_enable : 14|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_Lidar_enable : 13|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_Heartbeat : 12|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_EPSC_enable : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_DRS_enable : 10|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_ACU_enable : 9|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_PDU_AC_Cooling_enable : 8|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_EPSC_mode : 7|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_AS_State : 6|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_AS_Mission : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ override_APPS : 4|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ Fake_TS_Active : 3|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Fake_Soundbox_R2D : 2|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Fake_Soundbox_Emergency : 1|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Fake_R2D : 0|1@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1826 APPS_Override: 5 Vector__XXX + SG_ APPS_1_min : 30|10@1+ (0.01,0) [0|10.23] "" Vector__XXX + SG_ APPS_1_max : 20|10@1+ (0.01,0) [0|10.23] "" Vector__XXX + SG_ APPS_0_min : 10|10@1+ (0.01,0) [0|10.23] "" Vector__XXX + SG_ APPS_0_max : 0|10@1+ (0.01,0) [0|10.23] "" Vector__XXX + +BO_ 259 FTCU_Damper: 8 Vector__XXX + SG_ FTCU_Damper_RR : 48|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ FTCU_Damper_RL : 32|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ FTCU_Damper_FR : 16|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ FTCU_Damper_FL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + +BO_ 1043 FTCU_ParamConfirm: 1 Vector__XXX + SG_ FTCU_Param_Confirm : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 209 Sensornode_F_10Hz: 3 Sensornode_F + SG_ BDTS_FL : 8|8@1+ (2,0) [0|510] "degC" FTCU + SG_ BDTS_FR : 16|8@1+ (2,0) [0|510] "degC" FTCU + SG_ LS_L : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ LS_R : 1|1@1+ (1,0) [0|1] "" FTCU + SG_ SDC_M_pre_BOTS : 2|1@1+ (1,0) [0|1] "" FTCU + SG_ SDC_M_post_INS : 3|1@1+ (1,0) [0|1] "" FTCU + SG_ SDC_M_post_BSPD : 4|1@1+ (1,0) [0|1] "" FTCU + +BO_ 211 Sensornode_F_100Hz_1: 7 Sensornode_F + SG_ APPS_1 : 0|8@1+ (0.00392157,0) [0|1] "" FTCU + SG_ APPS_2 : 8|8@1+ (0.00392157,0) [0|1] "" FTCU + SG_ BP_F : 16|8@1+ (2,0) [0|510] "" FTCU + SG_ WSS_FL : 40|8@1+ (1,0) [0|255] "notches" FTCU + SG_ WSS_FR : 48|8@1+ (1,0) [0|255] "notches" FTCU + SG_ SAS : 24|12@1+ (1,0) [0|4095] "" FTCU + +BO_ 213 Sensornode_F_100Hz_2: 3 Sensornode_F + SG_ DS_FL : 0|12@1+ (1,0) [0|4095] "" FTCU + SG_ DS_FR : 12|12@1+ (1,0) [0|4095] "" FTCU + +BO_ 215 Sensornode_F_1kHz: 3 Sensornode_F + SG_ SLS_FL : 0|12@1+ (1,0) [0|4095] "" FTCU + SG_ SLS_FR : 12|12@1+ (1,0) [0|4095] "" FTCU + +BO_ 210 Sensornode_R_10Hz: 7 Sensornode_R + SG_ BDTS_RL : 8|8@1+ (2,0) [0|510] "degC" FTCU + SG_ BDTS_RR : 16|8@1+ (2,0) [0|510] "degC" FTCU + SG_ ExtTSOn : 0|1@1+ (1,0) [0|1] "" FTCU + SG_ SDC_M_pre_TSMS : 1|1@1+ (1,0) [0|1] "" FTCU + SG_ SDC_M_post_TSMS : 2|1@1+ (1,0) [0|1] "" FTCU + SG_ WT_BAT : 24|8@1+ (1,0) [0|255] "degC" FTCU + SG_ WT_DT : 32|8@1+ (1,0) [0|255] "degC" FTCU + SG_ WP_BAT : 40|8@1+ (1,0) [0|255] "" FTCU + SG_ WP_DT : 48|8@1+ (1,0) [0|255] "" FTCU + +BO_ 212 Sensornode_R_100Hz: 8 Sensornode_R + SG_ EBS_APS_1 : 0|8@1+ (0.1,0) [0|25.5] "" FTCU + SG_ EBS_APS_2 : 8|8@1+ (0.1,0) [0|25.5] "" FTCU + SG_ BP_R : 16|8@1+ (2,0) [0|510] "" FTCU + SG_ DS_RL : 40|12@1+ (1,0) [0|4095] "" FTCU + SG_ DS_RR : 52|12@1+ (1,0) [0|4095] "" FTCU + SG_ WSS_RL : 24|8@1+ (1,0) [0|255] "notches" FTCU + SG_ WSS_RR : 32|8@1+ (1,0) [0|255] "notches" FTCU + +BO_ 216 Sensornode_R_1kHz: 3 Sensornode_R + SG_ SLS_RL : 0|12@1+ (1,0) [0|4095] "" FTCU + SG_ SLS_RR : 12|12@1+ (1,0) [0|4095] "" FTCU + +BO_ 220 PWM_DutyCycle: 7 FTCU + SG_ DC_DRS : 0|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_ASSI_Y : 8|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_ASSI_B : 16|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_BL : 24|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_Fans_DT : 32|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_Fans_BAT : 40|8@1+ (1,0) [0|255] "/255" Sensornode_R + SG_ DC_SBX : 48|8@1+ (1,0) [0|255] "/255" Sensornode_R + +BO_ 221 PWM_Config: 6 FTCU + SG_ Freq_PWM1_DRS_Lighting : 0|16@1+ (1,0) [0|65535] "Hz" Sensornode_R + SG_ Freq_PWM3_Fans : 16|16@1+ (1,0) [0|65535] "Hz" Sensornode_R + SG_ Freq_PWM2_SBX : 32|16@1+ (1,0) [0|65535] "Hz" Sensornode_R + +BO_ 1056 Dashboard_In: 1 FTCU + SG_ Dashboard_SDC_out : 4|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Dashboard_SDC_in : 3|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Dashboard_Race_Key : 2|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Dashboard_TS_Activate_Button : 1|1@1+ (1,0) [0|1] "" Dashboard + SG_ Dashboard_R2D_Button : 0|1@1+ (1,0) [0|1] "" Dashboard + +BO_ 129 AMS_Slave1Status: 8 AMS + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_Temp_Sensor : 15|8@0+ (1,0) [0|1] "%" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + +BO_ 1568 AMS_Slave2_Log0: 8 AMS + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1569 AMS_Slave2_Log1: 8 AMS + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1570 AMS_Slave2_Log2: 8 AMS + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1571 AMS_Slave2_Log3: 8 AMS + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1572 AMS_Slave2_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1573 AMS_Slave2_Log5: 8 AMS + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + +BO_ 1622 AMS_Slave5_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1606 AMS_Slave4_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1590 AMS_Slave3_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1574 AMS_Slave2_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1558 AMS_Slave1_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1621 AMS_Slave5_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1605 AMS_Slave4_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1589 AMS_Slave3_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1557 AMS_Slave1_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1620 AMS_Slave5_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1604 AMS_Slave4_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1588 AMS_Slave3_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1556 AMS_Slave1_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1619 AMS_Slave5_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1603 AMS_Slave4_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1587 AMS_Slave3_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1555 AMS_Slave1_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1618 AMS_Slave5_Log2: 8 AMS + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1602 AMS_Slave4_Log2: 8 AMS + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1586 AMS_Slave3_Log2: 8 AMS + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1554 AMS_Slave1_Log2: 8 AMS + SG_ AMS_SlaveID_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1617 AMS_Slave5_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1601 AMS_Slave4_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1585 AMS_Slave3_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1553 AMS_Slave1_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1616 AMS_Slave5_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1600 AMS_Slave4_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1584 AMS_Slave3_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1552 AMS_Slave1_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 206 PDU_Heartbeat: 1 FTCU + SG_ PDU_Heartbeat : 0|1@1- (1,0) [0|0] "" Vector__XXX + +BO_ 272 FTCU_Pneumatik: 8 FTCU + SG_ FTCU_Tank_Pressure_2 : 16|12@1+ (0.01,0) [0|409.5] "" Vector__XXX + SG_ FTCU_Tank_Pressure_1 : 0|12@1+ (0.01,0) [0|40.95] "" Vector__XXX + +BO_ 227 ACU_TX_Commands: 6 FTCU + SG_ ABX_Speed_FR : 8|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Steering_Angle_Right : 40|8@1- (0.0156863,0) [-2.00784|1.99216] "" ACU + SG_ ABX_Steering_Angle_Left : 32|8@1- (0.0156863,0) [-2.00784|1.99216] "" ACU + SG_ ABX_Speed_RR : 24|8@1+ (0.2,0) [0|51] "" ACU + SG_ ABX_Speed_RL : 16|8@1+ (0.2,0) [0|51] "" ACU + SG_ ABX_Speed_FL : 0|8@1+ (0.2,0) [0|51] "" ACU + +BO_ 226 ACU_RX_Commands: 4 ACU + SG_ ACU_Steering_Angle_Left : 24|8@1- (0.016,0) [-2.048|2.032] "" Vector__XXX + SG_ ACU_Steering_Angle_Right : 16|8@1- (0.016,0) [-2.048|2.032] "" Vector__XXX + SG_ ACU_Speed_Target_right : 8|8@1+ (1.2,0) [0|306] "m/s" Vector__XXX + SG_ ACU_Speed_Target_left : 0|8@1+ (1.2,0) [0|306] "" Vector__XXX + +BO_ 225 ACU_RX: 3 ACU + SG_ ACU_DRS : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_Cones_Actual : 16|8@1+ (1,0) [0|255] "" FTCU + SG_ ACU_Cones_All : 8|8@1+ (1,0) [0|255] "" FTCU + SG_ ACU_Lap_Count : 3|4@1+ (1,0) [0|15] "" FTCU + SG_ ACU_AS_OK : 1|1@1+ (1,0) [0|1] "Bool" FTCU + SG_ ACU_AS_Mission_Complete : 0|1@1+ (1,0) [0|1] "Bool" FTCU + +BO_ 1536 AMS_Slave0_Log0: 8 AMS + SG_ AMS_SlaveID_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1537 AMS_Slave0_Log1: 8 AMS + SG_ AMS_SlaveID_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1539 AMS_Slave0_Log3: 8 AMS + SG_ AMS_SlaveID_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveID_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" FTCU + +BO_ 1540 AMS_Slave0_Log4: 6 AMS + SG_ AMS_SlaveID_FailedSensors : 23|32@0+ (1,0) [0|0] "" FTCU + +BO_ 1541 AMS_Slave0_Log5: 8 AMS + SG_ AMS_SlaveID_T4 : 32|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T7 : 56|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T6 : 48|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T5 : 40|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T3 : 24|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T2 : 16|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T1 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T0 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 1542 AMS_Slave0_Log6: 8 AMS + SG_ AMS_SlaveID_T9 : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_SlaveID_T8 : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 224 ACU_TX: 2 FTCU + SG_ ABX_ConMon_Error : 9|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AllowTorque : 8|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Reset : 7|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Power_Off : 6|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_AS_State : 3|3@1+ (1,0) [0|5] "" ACU + SG_ ACU_AS_Mission : 0|3@1+ (1,0) [0|7] "int" ACU + +BO_ 133 AMS_Slave5Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" FTCU + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + +BO_ 132 AMS_Slave4Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" FTCU + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" FTCU + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + +BO_ 131 AMS_Slave3Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" FTCU + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + +BO_ 130 AMS_Slave2Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" FTCU + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + +BO_ 12 AMS_Error: 2 AMS + SG_ AMS_Error_Arg : 8|8@1- (1,0) [0|0] "" FTCU + SG_ AMS_Error_Kind : 0|8@1- (1,0) [0|0] "" FTCU + +BO_ 263 FTCU_Cooling: 8 FTCU + SG_ FTCU_Water_Pressure_1 : 8|8@1+ (0.01,0) [0|2.55] "bar" Vector__XXX + SG_ FTCU_Water_Temperature_1 : 16|10@1+ (0.1,0) [0|102.3] "Deg" Vector__XXX + SG_ FTCU_Flow_rate : 36|10@1+ (0.1,0) [0|102.3] "degC" Vector__XXX + SG_ FTCU_Water_Temperature_2 : 26|10@1+ (0.1,0) [0|102.3] "degC" Vector__XXX + SG_ FTCU_Water_Pressure_2 : 0|8@1+ (0.01,0) [0|2.55] "bar" Vector__XXX + +BO_ 261 FTCU_BrakeT: 8 FTCU + SG_ FTCU_BrakeT_RR : 48|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ FTCU_BrakeT_RL : 32|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ FTCU_BrakeT_FR : 16|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + SG_ FTCU_BrakeT_FL : 0|16@1+ (0.01,0) [0|655.35] "degC" Vector__XXX + +BO_ 260 FTCU_Wheelspeed: 8 FTCU + SG_ FTCU_Distance_Session : 48|16@1+ (1,0) [0|65535] "m" Vector__XXX + SG_ FTCU_Wheelspeed_RR : 36|12@1- (0.05,0) [-102.4|102.35] "1/s" Vector__XXX + SG_ FTCU_Wheelspeed_RL : 24|12@1- (0.05,0) [-102.4|102.35] "1/s" Vector__XXX + SG_ FTCU_Wheelspeed_FR : 12|12@1- (0.05,0) [-102.4|102.35] "1/s" Vector__XXX + SG_ FTCU_Wheelspeed_FL : 0|12@1- (0.05,0) [-102.4|102.35] "1/s" Vector__XXX + +BO_ 258 FTCU_Timings: 8 FTCU + SG_ FTCU_Sectortime_last : 48|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ FTCU_Sectortime_best : 32|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ FTCU_Laptime_last : 16|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ FTCU_Laptime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + +BO_ 273 FTCU_Driver: 8 FTCU + SG_ FTCU_Brake_Pressure_R : 20|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ FTCU_Sectorcounter : 56|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ FTCU_Lapcounter : 48|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ FTCU_Steering_Angle : 32|8@1- (1,0) [-128|127] "Deg" Vector__XXX + SG_ FTCU_Speed : 40|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ FTCU_Brake_Pressure_F : 8|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ FTCU_APPS_Percent : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + +BO_ 1796 TTS_RR: 8 TTS_RR + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OutetRight : 48|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1795 TTS_RL: 8 TTS_RL + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1794 TTS_FR: 8 TTS_FR + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1793 TTS_FL: 8 TTS_FL + SG_ TTS_Status : 60|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "degC" Vector__XXX + SG_ TTS_OuterRight : 48|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterRight : 36|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_CenterLeft : 12|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + SG_ TTS_Center : 24|12@1+ (0.1,0) [0|409.5] "degC" Vector__XXX + +BO_ 1026 STW_Param_Set: 6 STW + SG_ STW_Param_TC_Slipref m10 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TC_Mumax m9 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TC_I m8 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Plim m2 : 16|32@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Set M : 0|16@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Tlim m1 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TC_P m7 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Reku m6 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TC_on m5 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_TV_on m4 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Discipline m3 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Slim m0 : 16|32@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 128 AMS_Slave0Status: 8 AMS + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" FTCU + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" FTCU + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" FTCU + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" FTCU + +BO_ 1280 SSU_Message: 4 SSU + SG_ SSU_Pressure : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ SSU_AirTemp : 16|16@1- (0.1,0) [-20|80] "degC" Vector__XXX + +BO_ 10 AMS_Status: 8 AMS + SG_ AMS_IMD_State : 48|7@1+ (1,0) [0|0] "" FTCU + SG_ AMS_IMD_ok : 55|1@1+ (1,0) [0|0] "" FTCU + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" FTCU + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" FTCU + SG_ SOC : 8|8@1+ (1,0) [0|100] "%" FTCU + SG_ Min_cell_volt : 23|16@0+ (0.001,0) [0|65.535] "V" FTCU + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.94] "degC" FTCU + +BO_ 9 AMS_SlavePanic: 8 AMS + SG_ AMS_SlavePanic_Kind : 15|8@0+ (1,0) [0|7.20576E+16] "" FTCU + SG_ AMS_SlavePanic_SlaveID : 0|8@1+ (1,0) [0|255] "" FTCU + SG_ AMS_SlavePanic_Arg : 23|32@0+ (1,0) [0|7.20576E+16] "" FTCU + +BO_ 11 AMS_In: 1 FTCU + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + SG_ Inverters_discharged : 1|1@1+ (1,0) [0|1] "" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "degC" FTCU + +BO_ 200 PDU_Command: 7 FTCU + SG_ PDU_enable_EBS_C : 11|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_enable_TS_Cooling : 3|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_enable_lldar : 5|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDU__enable_ACU : 8|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_enable_DRS : 6|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_misc : 0|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_sdc : 1|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_EBS_B : 10|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_inverter : 2|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_EPSC : 7|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_EBS_A : 9|1@1+ (1,0) [0|1] "" PDU + SG_ PDU_enable_ACC_Cooling : 4|1@1+ (1,0) [0|1] "" PDU + +BO_ 201 PDU_Response: 7 PDU + SG_ PDU_ebs_valve_2_tx : 12|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_PWM_TSAC_fans : 23|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servos_regler_tx : 2|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_tx : 3|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_tx : 5|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_tx : 14|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_misc_tx : 15|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_alwayson_tx : 7|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_shutdown_circuit_tx : 6|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_aggregat_tx : 9|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_inverter_tx : 1|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_steering_tx : 8|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_ebs_valve_1_tx : 13|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_cs_valve_tx : 11|1@0+ (1,0) [0|1] "" FTCU + SG_ PDU_PWM_radiatot_fans_tx : 31|8@0+ (1,0) [0|255] "" FTCU + SG_ PDU_PWM_aggregat : 39|8@0+ (1,0) [0|255] "" FTCU + SG_ PDU_PWM_pump : 47|8@0+ (1,0) [0|255] "" FTCU + SG_ PDU_heartbeat_ok_tx : 55|8@0+ (1,0) [0|255] "" FTCU + +BO_ 1040 AS_Mission_fb: 1 FTCU + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" STW + +BO_ 1024 STW_mission_selected: 1 STW + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" FTCU + +BO_ 293 EPSC_out: 8 EPSC + SG_ EPSC_measured_steering_angle : 16|16@1+ (0.01,0) [0|360] "deg" FTCU + SG_ EPSC_measured_rpm : 0|16@1- (0.1,0) [-3276.8|3276.7] "rpm" FTCU + SG_ EPSC_measured_current : 56|8@1+ (0.1,0) [0|25.5] "A" FTCU + SG_ EPSC_measured_voltage : 42|10@1+ (0.1,0) [0|102.3] "V" FTCU + SG_ EPSC_measured_MOSFET_temperature : 32|10@1+ (0.1,0) [0|102.3] "degC" FTCU + +BO_ 291 EPSC_Steering_In: 2 FTCU + SG_ EPSC_desired_steering_angle : 0|10@1- (1,0) [-0.0512|0.0511] "" EPSC + +BO_ 1025 STW_buttons: 1 STW + SG_ STW_button_DRS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_3 : 3|1@1+ (1,0) [0|1] "" FTCU + SG_ STW_button_2 : 2|1@1+ (1,0) [0|1] "" FTCU + SG_ STW_button_1 : 1|1@1+ (1,0) [0|1] "" FTCU + SG_ STW_button_4 : 4|1@1+ (1,0) [0|1] "" FTCU + +BO_ 1042 STW_status: 7 FTCU + SG_ SDC_Status : 28|4@0+ (1,0) [0|15] "" Vector__XXX + SG_ Energy_per_Lap : 32|16@1+ (0.001,0) [0|65.535] "kWh" STW + SG_ Inv1_ready : 30|1@1+ (1,0) [0|0] "" STW + SG_ iniChk_state : 48|8@1+ (1,0) [0|255] "" STW + SG_ Inv2_ready : 29|1@1+ (1,0) [0|0] "" STW + SG_ AS_State_STW : 12|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ Lap_Count : 0|6@1+ (1,0) [0|64] "" STW + SG_ ERR_SDC : 24|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AMS : 23|1@1+ (1,0) [0|1] "" STW + SG_ ERR_Inv1 : 22|1@1+ (1,0) [0|1] "" STW + SG_ ERR_Inv2 : 21|1@1+ (1,0) [0|1] "" STW + SG_ ERR_IniChk : 20|1@1+ (1,0) [0|1] "" STW + SG_ ERR_ConMon : 19|1@1+ (1,0) [0|1] "" STW + SG_ ERR_SCS : 18|1@1+ (1,0) [0|1] "" STW + SG_ ERR_sBSPD : 17|1@1+ (1,0) [0|1] "" STW + SG_ ERR_APPSp : 16|1@1+ (1,0) [0|1] "" STW + SG_ ERR_AS : 15|1@1+ (1,0) [0|1] "" STW + SG_ ERR_RES : 7|1@1+ (1,0) [0|1] "" STW + SG_ ERR_PDU : 6|1@1+ (1,0) [0|1] "" STW + SG_ R2D_Progress : 8|4@1+ (1,0) [0|15] "" STW + +BO_ 202 PDU_Current_1: 8 PDU + SG_ PDU_always_on_current : 0|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_LVMS_current : 16|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_ASMS_current : 32|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_MISC_current : 48|16@1+ (1,0) [0|65535] "" FTCU + +BO_ 203 PDU_Current_2: 8 PDU + SG_ PDU_SDC_current : 0|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_Inverter_current : 16|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_TS_Cooling_current : 32|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_ACC_Cooling_current : 48|16@1+ (1,0) [0|65535] "" FTCU + +BO_ 204 PDU_Current_3: 8 PDU + SG_ PDU_Lidar_current : 0|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_DRS_current : 16|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_EPSC_current : 32|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_ACU_current : 48|16@1+ (1,0) [0|65535] "" FTCU + +BO_ 205 PDU_Current_4: 8 PDU + SG_ PDU_EBS_A_current : 0|16@1+ (1,0) [0|65535] "" FTCU + SG_ PDU_EBS_B_current : 16|16@1+ (1,0) [0|65535] "" FTCU + +BO_ 292 EPSC_Config_In: 6 FTCU + SG_ EPSC_Config_P_Gain : 0|16@1+ (0.01,0) [0|655.35] "" Vector__XXX + SG_ EPSC_Config_D_Gain : 32|16@1+ (0.01,0) [0|655.35] "" Vector__XXX + SG_ EPSC_Config_I_Gain : 16|16@1+ (0.01,0) [0|655.35] "" Vector__XXX + + + +CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider."; +CM_ SG_ 3221225472 SDO_Read_Write "0: Read +1: Write +"; +CM_ SG_ 1840 Node_ID_SDO "0: beide Nodes +1: Node 1 +2: Node 2"; +CM_ SG_ 221 Freq_PWM1_DRS_Lighting "DRS+Lighting,Default=500Hz"; +CM_ SG_ 221 Freq_PWM3_Fans "Fans,Default=20kHz"; +CM_ SG_ 221 Freq_PWM2_SBX "SBX,Default=313Hz"; +CM_ BO_ 225 "Cycle Time: 100ms"; +CM_ BO_ 224 "Cycle Time: 50ms"; +CM_ SG_ 224 ACU_AS_Mission "AS Mission Selection"; +CM_ BO_ 263 "Cycle time: 100ms"; +CM_ BO_ 261 "Cycle time: 100ms"; +CM_ BO_ 260 "Cycle time: 10ms"; +CM_ BO_ 258 "Cycle time: 1s"; +BA_DEF_ "BusType" STRING ; +BA_DEF_ "MultiplexExtEnabled" ENUM "No","Yes"; +BA_DEF_DEF_ "BusType" "CAN"; +BA_DEF_DEF_ "MultiplexExtEnabled" "No"; +VAL_ 12 AMS_Error_Kind 5 "Shunt Overtemperature" 4 "Shunt Overcurrent" 3 "Shunt Timeout" 2 "Slave Panic" 1 "Slave Timeout" 0 "None" ; +VAL_ 1026 STW_Param_Set 10 "TC_Slipref" 9 "TC_Mumax" 8 "TC_I" 0 "SpeedLimit" 1 "Torque Limit" 2 "PowerLimit" 3 "Discipline" 4 "TV_on" 5 "TC_on" 6 "Reku_on" 7 "TC_P" ; +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" ; +VAL_ 9 AMS_SlavePanic_Kind 0 "Overtemperature" 1 "Undertemperature" 2 "Overvoltage" 3 "Undervoltage" 4 "Too_few_temp_sensors" 5 "Open_cell_connection" ; +VAL_ 1040 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1024 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 1042 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error" ; +VAL_ 1042 AS_State_STW 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency" ; +VAL_ 1042 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1_Charger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1_Charger.dbc new file mode 100644 index 0000000..19bad03 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN1_Charger.dbc @@ -0,0 +1,1434 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: VN200 PG ACU SSU TTS_RL TTS_RR TTS_FR TTS_FL Shunt AMS ABX SDCL PDU PDMV STW EPSC + + +BO_ 3221225472 VECTOR__INDEPENDENT_SIG_MSG: 0 Vector__XXX + SG_ AMS_Slave_T32 : 0|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ New_Signal_712 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ New_Signal_711 : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ PDU_mode_valve_1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led3_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led2_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_led1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_mode_valve_1_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_sensorbox_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PG_Errorbit : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ TTS_NewID : 0|2@1+ (1,0) [0|3] "" Vector__XXX + SG_ PG_ready : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PG_active : 0|1@1+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_Heartbeat : 0|1@1- (1,0) [0|0] "" Vector__XXX + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" Vector__XXX + SG_ Longitude : 0|16@1- (0.05,0) [-1638.4|1638.35] "" Vector__XXX + SG_ UncertaintyN : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ UncertaintyE : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ AccAngZ : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccAngY : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccAngX : 0|20@1- (0.0001,0) [0|0] "" Vector__XXX + SG_ AccLinZ : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccLinY : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ AccLinX : 0|20@1- (0.0001,0) [-52.4288|52.4287] "" Vector__XXX + SG_ UncertaintyN : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ UncertaintyE : 0|16@1+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ Longitude : 0|16@1- (0.05,0) [-1638.4|1638.35] "" Vector__XXX + SG_ Latitude : 0|16@1- (0.005,0) [-163.84|163.835] "" Vector__XXX + SG_ VelLinZ : 0|16@1+ (0.001,0) [0|0] "" Vector__XXX + SG_ VelLinY : 0|16@1+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ VelLinX : 0|16@1+ (0.001,0) [0|0] "" Vector__XXX + SG_ Uncertainity : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ Yaw : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Pitch : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Roll : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ Uncertainty : 0|16@1+ (0.0001,0) [0|6.5535] "" Vector__XXX + SG_ AMS_Slave9_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave9_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave8_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 0|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 0|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 0|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 0|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_Slave11_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave11_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave10_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ PG_percent : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_state : 0|8@1+ (1,0) [0|3] "" Vector__XXX + SG_ ABX_Accel_Z : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_Y : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Accel_X : 0|16@1- (0.001,0) [-32.768|32.767] "" Vector__XXX + SG_ ABX_Hyd_PB : 0|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + SG_ ABX_Hyd_PA : 0|12@1+ (0.1,0) [0|409.5] "" Vector__XXX + SG_ ABX_ParamConfirm : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_inverter_voltage : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_temperature : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ PG_State : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ PG_Powerground_Status : 0|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ PG_SOC : 0|12@1+ (1,0) [0|0] "" Vector__XXX + SG_ PG_Error : 0|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ PG_current_measurement : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ PG_battery_voltage : 0|8@1+ (1,0) [0|4095] "" Vector__XXX + SG_ ABX_Steering_Angle_Right : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ABX_Steering_Angle_Left : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ABX_Speed_RR : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_RL : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_FR : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ABX_Speed_FL : 0|8@1+ (0.2,0) [0|51] "" Vector__XXX + SG_ ACU_Steering_Angle_Left : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ACU_Steering_Angle_Right : 0|8@1- (0.0156862745,0) [-2.007843136|1.9921568615] "" Vector__XXX + SG_ ACU_Speed_Target_right : 0|8@1+ (1.2,0) [0|306] "m/s" Vector__XXX + SG_ ACU_Speed_Target_left : 0|8@1+ (1.2,0) [0|306] "" Vector__XXX + SG_ ACU_PG : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_DRS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ACU_Cones_Actual : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ACU_Cones_All : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ACU_Lap_Count : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AS_OK : 0|1@1+ (1,0) [0|1] "Bool" Vector__XXX + SG_ ACU_AS_Mission_Complete : 0|1@1+ (1,0) [0|1] "Bool" Vector__XXX + SG_ AMS_Slave0_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave0_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave1_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave2_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave3_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave4_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave5_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave6_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T7 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T6 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T5 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T4 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T3 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T2 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T1 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T0 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T15 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T14 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T13 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T12 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T11 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T10 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T9 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T8 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T23 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T22 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T21 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T20 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T19 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T18 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T17 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T16 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T31 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T30 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T29 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T28 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T27 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T26 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T25 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ AMS_Slave7_T24 : 0|8@1- (1,0) [-128|127] "degC" Vector__XXX + SG_ ABX_ConMon_Error : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ ACU_AllowTorque : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Reset : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_Power_Off : 0|1@1+ (1,0) [0|1] "bool" Vector__XXX + SG_ ACU_AS_State : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ ACU_AS_Mission : 0|3@1+ (1,0) [0|7] "int" Vector__XXX + SG_ ABX_LV_SoC : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ ABX_Distance_total : 0|16@1+ (0.01,0) [0|655.35] "km" Vector__XXX + SG_ ABX_Distance_session : 0|16@1+ (1,0) [0|65535] "m" Vector__XXX + SG_ ABX_CS_T_MotR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_MotL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_T_InvL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_CS_P_MotRIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_T_MotIn : 0|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_T_InvIn : 0|10@1+ (0.1,0) [0|102.3] "�C" Vector__XXX + SG_ ABX_CS_P_MotLIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_CS_P_InvIn : 0|8@1+ (0.02,0) [0|4] "bar" Vector__XXX + SG_ ABX_BrakeT_RR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_RL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FR : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_BrakeT_FL : 0|16@1+ (0.01,0) [0|655.35] "�C" Vector__XXX + SG_ ABX_Wheelspeed_RR : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_RL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FR : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Wheelspeed_FL : 0|16@1- (0.001,0) [-32.768|32.767] "1/s" Vector__XXX + SG_ ABX_Damper_RR : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FR : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_RL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Damper_FL : 0|16@1+ (0.01,0) [0|75] "mm" Vector__XXX + SG_ ABX_Sectortime_last : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Sectortime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_last : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_Laptime_best : 0|16@1+ (0.01,0) [0|655.35] "s" Vector__XXX + SG_ ABX_BrakeP_R : 0|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_Sectorcounter : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Lapcounter : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ ABX_Steering_Angle : 0|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ ABX_Speed : 0|8@1+ (0.2,0) [0|51] "m/s" Vector__XXX + SG_ ABX_BrakeP_F : 0|12@1+ (0.1,0) [0|160] "bar" Vector__XXX + SG_ ABX_APPS_percent : 0|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OutetRight : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Status : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ TTS_OuterLeft : 0|12@1+ (0.1,0) [-54.8|354.7] "�C" Vector__XXX + SG_ TTS_OuterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterRight : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_CenterLeft : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ TTS_Center : 0|12@1+ (0.1,0) [0|409.5] "�C" Vector__XXX + SG_ STW_Param_BBal : 0|32@0+ (0.1,0) [0|0] "" Vector__XXX + SG_ STW_Param_Type : 0|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ STW_Param_SLIPREF : 0|32@0+ (0.01,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRP : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRON : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_ASRI : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_EnduPowerLimit : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test3 : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_Test4 : 0|32@0+ (1,0) [0|1] "" Vector__XXX + SG_ STW_Param_MUMAX : 0|32@0+ (0.1,0) [0|1] "" Vector__XXX + SG_ SSU_AirTemp : 0|16@1- (0.1,0) [-20|80] "�C" Vector__XXX + SG_ SSU_AirPressure : 0|16@1- (1,0) [-1000|1000] "Pa" Vector__XXX + SG_ asms_state : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_1 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_2 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdc_state_3 : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ heartbeat_ok : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdcl_sdc_ready : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ts_start_muxed : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_init_open : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_closed : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ latch_reopened : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ as_mission : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ as_close_sdc : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ sdcl_heartbeat : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ asb_error : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ as_mission : 0|3@1+ (1,0) [0|7] "" Vector__XXX + SG_ PDU_servos_regler_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_radiator_fans_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servo_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_misc_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_alwayson_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_shutdown_circuit_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_2_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_cs_valve_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_inverter_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_steering_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_1_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_aggregat_rx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_TSAC_fans_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_aggregat_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_pump_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_checksum_rx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_ebs_valve_2_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_TSAC_fans : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_servos_regler_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ACU_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_lidar_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_servo_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_misc_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_alwayson_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_shutdown_circuit_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_aggregat_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_inverter_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_steering_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_ebs_valve_1_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_cs_valve_tx : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ PDU_PWM_radiatot_fans_tx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_aggregat : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_PWM_pump : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ PDU_checksum_tx : 0|8@0+ (1,0) [0|255] "" Vector__XXX + SG_ pdm_output2_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output2_controllerrange : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_output1_controllerrange : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_shutdown : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_temperature_warning : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_currentoverload : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_shortcircuit : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_cablebreak : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_analoginput_middleposition : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_statewarning : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_startupmissing : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_canbus_timeout : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_greater_32v : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ pdm_powersupply_less_8v : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ PDM_analoginput : 0|16@1+ (1,0) [0|65535] "%." Vector__XXX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" Vector__XXX + SG_ Mission_selection : 0|3@1+ (1,0) [1|7] "" Vector__XXX + SG_ EPSC_measured_steering_angle : 0|16@0- (7.20721E-005,0) [-13875|13875] "part of full steering" Vector__XXX + SG_ EPSC_measured_rpm : 0|12@0- (0.1,0) [-204.8|204.7] "rpm" Vector__XXX + SG_ EPSC_measured_current : 0|8@0+ (0.1,0) [0|25.5] "A" Vector__XXX + SG_ EPSC_measured_voltage : 0|8@0+ (0.1,0) [0|20] "V" Vector__XXX + SG_ EPSC_measured_temperature : 0|10@0+ (0.1,0) [0|102.3] "°C" Vector__XXX + SG_ EPSC_measured_internal_temp : 0|10@0+ (0.1,0) [0|102.3] "°C" Vector__XXX + SG_ EPSC_desired_steering_angle : 0|16@0- (0.0001,0) [-10000|10000] "" Vector__XXX + SG_ STW_button_PG : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_left : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_right : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_DRS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ STW_button_Enter : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ InvL_ready : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ iniChk_state : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ InvR_ready : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ AS_State_STW : 0|3@1+ (1,0) [0|5] "" Vector__XXX + SG_ SDC_BFL : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_BRL : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_ACC : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ SDC_HVB : 0|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Lap_Count : 0|6@1+ (1,0) [0|64] "" Vector__XXX + SG_ ERR_SDC : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_AMS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_InvL : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_InvR : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_IniChk : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_ConMon : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_SCS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_sBSPD : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_APPSp : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_AS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_ROS : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_RES : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ ERR_PDU : 0|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ R2D_Progress : 0|4@1+ (1,0) [0|15] "" Vector__XXX + SG_ PDU_alwayson_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_misc_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_inverter_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_shutdown_circuit_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_tsac__fans_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_pump_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_aggregat_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_steering_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ebs_valve_1_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ebs_valve_2_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_mode_cs_valve_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_mode_gss_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_radiator_fans_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_ACU_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_servos_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ PDU_lidar_curr : 0|16@0+ (1,0) [0|65535] "" Vector__XXX + SG_ EPSC_Ki_curr : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_curr : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_rpm : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_rpm : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Ki_pos : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_Kp_pos : 0|8@0+ (0.1,0) [0|25.6] "" Vector__XXX + SG_ EPSC_should_calibrate : 0|1@0- (1,0) [0|1] "" Vector__XXX + SG_ EPSC_should_change_mode : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_mode : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag3 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag4 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag5 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag6 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ EPSC_flag7 : 0|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 140 AMS_Slave12Status1: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 1737 AMS_Slave12_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1732 AMS_Slave12_Log4: 8 Vector__XXX + SG_ AMS_Slave12_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave12_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1731 AMS_Slave12_Log3: 8 Vector__XXX + SG_ AMS_Slave12_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1730 AMS_Slave12_Log2: 8 Vector__XXX + SG_ AMS_Slave12_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1738 AMS_Slave12_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1729 AMS_Slave12_Log1: 8 Vector__XXX + SG_ AMS_Slave12_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1728 AMS_Slave12_Log0: 8 Vector__XXX + SG_ AMS_Slave12_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1722 AMS_Slave11_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1706 AMS_Slave10_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1690 AMS_Slave9_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1674 AMS_Slave8_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1658 AMS_Slave7_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1642 AMS_Slave6_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1626 AMS_Slave5_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1610 AMS_Slave4_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1594 AMS_Slave3_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1578 AMS_Slave2_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1562 AMS_Slave1_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1721 AMS_Slave11_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1705 AMS_Slave10_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1689 AMS_Slave9_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1673 AMS_Slave8_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1657 AMS_Slave7_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1641 AMS_Slave6_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1625 AMS_Slave5_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1609 AMS_Slave4_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1593 AMS_Slave3_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1577 AMS_Slave2_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1561 AMS_Slave1_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1546 AMS_Slave0_Log10: 8 Vector__XXX + SG_ AMS_SlaveID_T41 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T40 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1545 AMS_Slave0_Log9: 8 Vector__XXX + SG_ AMS_SlaveID_T39 : 56|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T38 : 48|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T37 : 40|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T36 : 32|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T35 : 24|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T34 : 16|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T33 : 8|8@1- (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveID_T32 : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 1684 AMS_Slave9_Log4: 8 Vector__XXX + SG_ AMS_Slave9_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave9_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1683 AMS_Slave9_Log3: 8 Vector__XXX + SG_ AMS_Slave9_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1682 AMS_Slave9_Log2: 8 Vector__XXX + SG_ AMS_Slave9_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1681 AMS_Slave9_Log1: 8 Vector__XXX + SG_ AMS_Slave9_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1680 AMS_Slave9_Log0: 8 Vector__XXX + SG_ AMS_Slave9_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave9_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 136 AMS_Slave8Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|159.375] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 1668 AMS_Slave8_Log4: 8 Vector__XXX + SG_ AMS_Slave8_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave8_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1667 AMS_Slave8_Log3: 8 Vector__XXX + SG_ AMS_Slave8_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1666 AMS_Slave8_Log2: 8 Vector__XXX + SG_ AMS_Slave8_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1665 AMS_Slave8_Log1: 8 Vector__XXX + SG_ AMS_Slave8_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1664 AMS_Slave8_Log0: 8 Vector__XXX + SG_ AMS_Slave8_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave8_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 139 AMS_Slave11Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + +BO_ 138 AMS_Slave10Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + +BO_ 1716 AMS_Slave11_Log4: 8 Vector__XXX + SG_ AMS_Slave12_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave12_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1715 AMS_Slave11_Log3: 8 Vector__XXX + SG_ AMS_Slave12_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1714 AMS_Slave11_Log2: 8 Vector__XXX + SG_ AMS_Slave12_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1713 AMS_Slave11_Log1: 8 Vector__XXX + SG_ AMS_Slave12_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1712 AMS_Slave11_Log0: 8 Vector__XXX + SG_ AMS_Slave12_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave12_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1700 AMS_Slave10_Log4: 8 Vector__XXX + SG_ AMS_Slave10_FailedSensors : 16|32@1+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave10_V16 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1699 AMS_Slave10_Log3: 8 Vector__XXX + SG_ AMS_Slave10_V15 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V14 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V13 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V12 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1698 AMS_Slave10_Log2: 8 Vector__XXX + SG_ AMS_Slave10_V9 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V8 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V11 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V10 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1697 AMS_Slave10_Log1: 8 Vector__XXX + SG_ AMS_Slave10_V7 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V6 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V5 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V4 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 1696 AMS_Slave10_Log0: 8 Vector__XXX + SG_ AMS_Slave10_V3 : 55|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V2 : 39|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V1 : 23|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + SG_ AMS_Slave10_V0 : 7|16@0+ (0.001,0) [0|65.535] "" Vector__XXX + +BO_ 137 AMS_Slave9Status: 8 Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 1536 AMS_Slave0_Log0: 8 AMS + SG_ AMS_Slave0_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V0 : 7|16@0+ (0.001,0) [0|6.5535] "mV" Vector__XXX + +BO_ 1537 AMS_Slave0_Log1: 8 AMS + SG_ AMS_Slave0_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1538 AMS_Slave0_Log2: 8 AMS + SG_ AMS_Slave0_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1539 AMS_Slave0_Log3: 8 AMS + SG_ AMS_Slave0_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave0_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1540 AMS_Slave0_Log4: 6 AMS + SG_ AMS_Slave0_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave0_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1552 AMS_Slave1_Log0: 8 AMS + SG_ AMS_Slave1_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1553 AMS_Slave1_Log1: 8 AMS + SG_ AMS_Slave1_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1554 AMS_Slave1_Log2: 8 AMS + SG_ AMS_Slave1_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V8 : 7|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + +BO_ 1555 AMS_Slave1_Log3: 8 AMS + SG_ AMS_Slave1_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave1_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1556 AMS_Slave1_Log4: 6 AMS + SG_ AMS_Slave1_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave1_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1568 AMS_Slave2_Log0: 8 AMS + SG_ AMS_Slave2_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1569 AMS_Slave2_Log1: 8 AMS + SG_ AMS_Slave2_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1570 AMS_Slave2_Log2: 8 AMS + SG_ AMS_Slave2_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1571 AMS_Slave2_Log3: 8 AMS + SG_ AMS_Slave2_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave2_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1572 AMS_Slave2_Log4: 6 AMS + SG_ AMS_Slave2_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave2_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1584 AMS_Slave3_Log0: 8 AMS + SG_ AMS_Slave3_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1585 AMS_Slave3_Log1: 8 AMS + SG_ AMS_Slave3_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1586 AMS_Slave3_Log2: 8 AMS + SG_ AMS_Slave3_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1587 AMS_Slave3_Log3: 8 AMS + SG_ AMS_Slave3_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave3_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1588 AMS_Slave3_Log4: 6 AMS + SG_ AMS_Slave3_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave3_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1600 AMS_Slave4_Log0: 8 AMS + SG_ AMS_Slave4_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1601 AMS_Slave4_Log1: 8 AMS + SG_ AMS_Slave4_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1602 AMS_Slave4_Log2: 8 AMS + SG_ AMS_Slave4_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1603 AMS_Slave4_Log3: 8 AMS + SG_ AMS_Slave4_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave4_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1604 AMS_Slave4_Log4: 6 AMS + SG_ AMS_Slave4_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave4_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1616 AMS_Slave5_Log0: 8 AMS + SG_ AMS_Slave5_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1617 AMS_Slave5_Log1: 8 AMS + SG_ AMS_Slave5_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1618 AMS_Slave5_Log2: 8 AMS + SG_ AMS_Slave5_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1619 AMS_Slave5_Log3: 8 AMS + SG_ AMS_Slave5_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave5_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1620 AMS_Slave5_Log4: 6 AMS + SG_ AMS_Slave5_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave5_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1632 AMS_Slave6_Log0: 8 AMS + SG_ AMS_Slave6_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1633 AMS_Slave6_Log1: 8 AMS + SG_ AMS_Slave6_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V6 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1634 AMS_Slave6_Log2: 8 AMS + SG_ AMS_Slave6_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1635 AMS_Slave6_Log3: 8 AMS + SG_ AMS_Slave6_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave6_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1636 AMS_Slave6_Log4: 6 AMS + SG_ AMS_Slave6_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave6_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1648 AMS_Slave7_Log0: 8 AMS + SG_ AMS_Slave7_V1 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V3 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V2 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V0 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1649 AMS_Slave7_Log1: 8 AMS + SG_ AMS_Slave7_V7 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V6 : 39|16@0+ (0.001,0) [0|65.535] "V" Vector__XXX + SG_ AMS_Slave7_V5 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V4 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1650 AMS_Slave7_Log2: 8 AMS + SG_ AMS_Slave7_V11 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V10 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V9 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V8 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1651 AMS_Slave7_Log3: 8 AMS + SG_ AMS_Slave7_V15 : 55|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V14 : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V13 : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_Slave7_V12 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 1652 AMS_Slave7_Log4: 6 AMS + SG_ AMS_Slave7_FailedSensors : 23|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_Slave7_V16 : 7|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + +BO_ 135 AMS_Slave7Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|255] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 134 AMS_Slave6Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 133 AMS_Slave5Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 132 AMS_Slave4Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|1] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 131 AMS_Slave3Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 130 AMS_Slave2Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 129 AMS_Slave1Status: 8 AMS + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_Sensor : 15|8@0+ (1,0) [0|1] "%" Vector__XXX + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 12 AMS_Error: 2 AMS + SG_ AMS_Error_Arg : 8|8@1- (1,0) [0|0] "" ABX + SG_ AMS_Error_Kind : 0|8@1- (1,0) [0|0] "" ABX + +BO_ 128 AMS_Slave0Status: 8 AMS + SG_ AMS_SlaveStatus_MinCellVolt : 23|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_ID : 6|7@0+ (1,0) [0|0] "" Vector__XXX + SG_ AMS_SlaveStatus_Error : 7|1@0+ (1,0) [0|1] "" Vector__XXX + SG_ AMS_SlaveStatus_Temp_sensor : 15|8@0+ (1,0) [-128|127] "%" Vector__XXX + SG_ AMS_SlaveStatus_MaxCellVolt : 39|16@0+ (0.001,0) [0|6.5535] "V" Vector__XXX + SG_ AMS_SlaveStatus_MaxTemp : 51|12@0- (0.0625,0) [0|1] "degC" Vector__XXX + +BO_ 10 AMS_Status: 6 AMS + SG_ AMS_State : 0|7@1+ (1,0) [0|1] "" ABX + SG_ SDC_Closed : 7|1@1+ (1,0) [0|1] "" ABX + SG_ SOC : 8|8@1+ (1,0) [0|100] "%" ABX + SG_ Min_cell_volt : 23|16@0+ (0.001,0) [0|65.535] "V" ABX + SG_ Max_cell_temp : 39|16@0+ (0.0625,0) [0|4095.94] "°C" ABX + +BO_ 9 AMS_SlavePanic: 8 AMS + SG_ AMS_SlavePanic_Kind : 15|8@0+ (1,0) [0|7.20576E+016] "" ABX + SG_ AMS_SlavePanic_SlaveID : 0|8@1+ (1,0) [0|255] "" ABX + SG_ AMS_SlavePanic_Arg : 23|32@0+ (1,0) [0|7.20576E+016] "" ABX + +BO_ 11 AMS_In: 1 ABX + SG_ TS_activate : 0|1@1+ (1,0) [0|1] "" AMS + SG_ Lap_Number : 2|6@1+ (1,0) [0|64] "Laps" AMS + SG_ Inverters_discharged : 1|1@1+ (1,0) [0|1] "" AMS + +BO_ 1313 Shunt_Current: 6 Shunt + SG_ Shunt_Current : 23|32@0- (0.001,0) [-2000000|2000000] "A" AMS + +BO_ 1314 Shunt_Voltage1: 6 Shunt + SG_ Shunt_Voltage1 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1315 Shunt_Voltage2: 6 Shunt + SG_ Shunt_Voltage2 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1316 Shunt_Voltage3: 6 Shunt + SG_ Shunt_Voltage3 : 23|32@0- (0.001,0) [-2000000|2000000] "V" AMS + +BO_ 1317 Shunt_Temperature: 6 Shunt + SG_ Shunt_Temperature : 23|32@0+ (0.1,0) [0|1000] "°C" ABX + + + +CM_ BO_ 3221225472 "This is a message for not used signals, created by Vector CANdb++ DBC OLE DB Provider."; +CM_ SG_ 3221225472 ACU_AS_Mission "AS Mission Selection"; +CM_ SG_ 3221225472 EPSC_measured_steering_angle "+-13875 equals to +-1.0, so the factor is 1/13875"; +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "BusType" ""; +BA_ "BusType" "CAN"; +VAL_ 3221225472 STW_Param_Type 0 "BrakeBalance" 1 "TractionControl1" 2 "TractionControl2" 3 "TorqueMap" 4 "Test1" 5 "Test2" 6 "Test3" 7 "Test4" ; +VAL_ 3221225472 STW_Param_ASRON 0 "OFF" 1 "ON" ; +VAL_ 3221225472 Mission_selection 1 "MissionSelection_acceleration" 2 "MissionSelection_skidpad" 3 "MissionSelection_trackdrive" 4 "MissionSelection_braketest" 5 "MissionSelection_inspection" 6 "MissionSelection_autocross" 7 "MissionSelection_manual" ; +VAL_ 3221225472 iniChk_state 0 "Start" 1 "WD_Check" 2 "WD_OK" 3 "ASB_Check_1" 4 "ASB_Check_2" 5 "Wait_TS" 6 "EBS_Check_A" 7 "EBS_Check_B" 8 "Done" 9 "Error" ; +VAL_ 3221225472 AS_State_STW 0 "AS_Off" 1 "AS_Manual" 2 "AS_Ready" 3 "AS_Driving" 4 "AS_Finished" 5 "AS_Emergency" ; +VAL_ 3221225472 R2D_Progress 0 "R2D_None" 1 "R2D_TSMS" 2 "R2D_TSActive" 3 "R2D_Resetting_Nodes" 4 "R2D_Resetting_Comms" 5 "R2D_Waiting_Init" 6 "R2D_Init_Stage1" 7 "R2D_Init_Stage2" 15 "R2D_Init_Success" ; +VAL_ 12 AMS_Error_Kind 5 "Shunt Overtemperature" 4 "Shunt Overcurrent" 3 "Shunt Timeout" 2 "Slave Panic" 1 "Slave Timeout" 0 "None" ; +VAL_ 10 AMS_State 0 "TS_INACTIVE" 1 "TS_ACTIVE" 2 "TS_PRECHARGE" 3 "TS_DISCHARGE" 4 "TS_ERROR" ; +VAL_ 9 AMS_SlavePanic_Kind 0 "Overtemperature" 1 "Undertemperature" 2 "Overvoltage" 3 "Undervoltage" 4 "Too_few_working_temperature_sensors" 5 "Open_cell_connection" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN2_FS_DVLogger.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN2_FS_DVLogger.dbc new file mode 100644 index 0000000..2be12b1 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN2_FS_DVLogger.dbc @@ -0,0 +1,99 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 1347 RES_Czech: 8 Vector__XXX + SG_ RES_Switch : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_Signal_Quality : 8|8@1+ (1,0) [0|100] "" Vector__XXX + SG_ RES_Go : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1298 DV_ContinuousMonitoring: 1 ABX + SG_ Pressure_charged : 5|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ PDU_comm_alive : 2|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ Position_sensors_closed : 4|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_error : 3|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ AS_comm_alive : 1|1@1+ (1,0) [0|1] "bool" FS_Datalogger + SG_ SDC_opened : 0|1@1+ (1,0) [0|1] "bool" FS_Datalogger + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-60|60] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-100|100] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [-200|200] "°/s" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN4_FS_DVLogger_RES.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN4_FS_DVLogger_RES.dbc new file mode 100644 index 0000000..5253538 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/CAN4_FS_DVLogger_RES.dbc @@ -0,0 +1,96 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: ABX RES FS_Datalogger + + +BO_ 401 RES_PDO: 7 RES + SG_ RES_Signal_Strength : 48|8@1+ (1,0) [0|100] "%" Vector__XXX + SG_ RES_Switch : 1|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_Go_Signal : 2|1@1+ (1,0) [0|1] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 0 NMT_Operational: 2 Vector__XXX + SG_ NMT_Node_ID : 8|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ NMT_Command : 0|1@1+ (1,0) [0|1] "" Vector__XXX + +BO_ 1072 FS_Datalogger_Status: 6 FS_Datalogger + SG_ Current : 32|16@1+ (64,0) [0|4194240] "mA" ABX + SG_ Voltage : 16|16@1+ (16,0) [0|1048560] "mV" ABX + SG_ Status_Triggered_Current : 11|1@1- (1,0) [0|0] "" ABX + SG_ Status_Triggered_Voltage : 10|1@1- (1,0) [0|0] "" ABX + SG_ Status_Logging : 9|1@1- (1,0) [0|0] "" ABX + SG_ Status_Ready : 8|1@1- (1,0) [0|0] "" ABX + SG_ MsgCnt : 0|8@1+ (1,0) [0|255] "" ABX + +BO_ 1280 DV_driving_dynamics_1: 8 ABX + SG_ Speed_actual : 0|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Speed_target : 8|8@1+ (1,0) [0|250] "km/h" FS_Datalogger + SG_ Steering_angle_actual : 16|8@1- (0.5,0) [-30|30] "°" FS_Datalogger + SG_ Steering_angle_target : 24|8@1- (0.5,0) [-30|30] "°" FS_Datalogger + SG_ Brake_hydr_actual : 32|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Brake_hydr_target : 40|8@1+ (1,0) [0|100] "%" FS_Datalogger + SG_ Motor_moment_actual : 48|8@1- (1,0) [-100|100] "%" FS_Datalogger + SG_ Motor_moment_target : 56|8@1- (1,0) [-128|127] "%" FS_Datalogger + +BO_ 1281 DV_driving_dynamics_2: 6 ABX + SG_ Yaw_rate : 32|16@1- (0.0078125,0) [0|0] "°/s" FS_Datalogger + SG_ Acceleration_longitudinal : 0|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + SG_ Acceleration_lateral : 16|16@1- (0.00195313,0) [-50|50] "m/s^2" FS_Datalogger + +BO_ 1282 DV_system_status: 5 ABX + SG_ AS_state : 0|3@1+ (1,0) [1|5] "" FS_Datalogger + SG_ EBS_state : 3|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ AMI_state : 5|3@1+ (1,0) [1|6] "" FS_Datalogger + SG_ Steering_state : 8|1@1+ (1,0) [0|1] "" FS_Datalogger + SG_ Service_brake_state : 9|2@1+ (1,0) [1|3] "" FS_Datalogger + SG_ Lap_counter : 11|4@1+ (1,0) [0|10] "" FS_Datalogger + SG_ Cones_count_actual : 15|8@1+ (1,0) [0|250] "" FS_Datalogger + SG_ Cones_count_all : 23|17@1+ (1,0) [0|131000] "" FS_Datalogger + +BO_ 1297 DV_SEBSS_Pressures: 8 ABX + SG_ EBS_Pressure_tank_A : 0|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ EBS_Pressure_tank_B : 16|16@1+ (0.1,0) [0|50] "Bar" FS_Datalogger + SG_ Brake_Pressure_front : 32|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + SG_ Brake_Pressure_rear : 48|16@1+ (0.1,0) [0|200] "Bar" FS_Datalogger + + + +CM_ SG_ 0 NMT_Node_ID "Needs to be 17 for RES"; +VAL_ 1282 AS_state 1 "AS_state_off" 2 "AS_state_ready" 3 "AS_state_driving" 4 "AS_state_emergency_brake" 5 "AS_state_finish" ; +VAL_ 1282 EBS_state 1 "EBS_state_unavailable" 2 "EBS_state_armed" 3 "EBS_state_activated" ; +VAL_ 1282 AMI_state 1 "AMI_state_acceleration" 2 "AMI_state_skidpad" 3 "AMI_state_trackdrive" 4 "AMI_state_braketest" 5 "AMI_state_inspection" 6 "AMI_state_autocross" ; +VAL_ 1282 Service_brake_state 1 "Service_brake_state_disengaged" 2 "Service_brake_state_engaged" 3 "Service_brake_state_available" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/FT25CANOpen.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/FT25CANOpen.dbc new file mode 100644 index 0000000..c6459b3 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/FT25CANOpen.dbc @@ -0,0 +1,170 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: + + +BO_ 4 New_Message_27: 8 Vector__XXX + SG_ New_Signal_67 : 15|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 3 New_Message_26: 8 Vector__XXX + SG_ New_Signal_66 : 15|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 2 New_Message_25: 8 Vector__XXX + SG_ New_Signal_65 : 15|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1 New_Message_24: 8 Vector__XXX + SG_ New_Signal_64 : 15|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1409 SDO_T_Node_1: 8 Vector__XXX + SG_ payload : 32|32@1- (1,0) [0|0] "" Vector__XXX + SG_ od_subindex : 24|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ OD_index : 8|16@1+ (1,0) [0|0] "" Vector__XXX + SG_ command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1410 SDO_T_Node_2: 8 Vector__XXX + SG_ payload : 32|32@1- (1,0) [0|0] "" Vector__XXX + SG_ od_subindex : 24|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ OD_index : 8|16@1+ (1,0) [0|0] "" Vector__XXX + SG_ command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1538 SDO_R_Node_2: 8 Vector__XXX + SG_ payload : 32|32@1- (1,0) [0|0] "" Vector__XXX + SG_ od_subindex : 24|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ OD_index : 8|16@1+ (1,0) [0|0] "" Vector__XXX + SG_ command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 1537 SDO_R_Node_1: 8 Vector__XXX + SG_ payload : 32|32@1- (1,0) [0|0] "" Vector__XXX + SG_ od_subindex : 24|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ OD_index : 8|16@1+ (1,0) [0|0] "" Vector__XXX + SG_ command_byte : 0|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 401 RES_TxPDO: 8 Vector__XXX + SG_ RES_Switch : 1|1@1- (1,0) [0|0] "" Vector__XXX + SG_ RES_Signal_Strength : 8|8@1+ (1,0) [-128|127] "" Vector__XXX + SG_ RES_Go_Signal : 2|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ RES_EStop : 0|1@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 353 EMCY_Node81: 8 Vector__XXX + SG_ Errors : 3|5@1- (1,0) [0|0] "" Vector__XXX + SG_ Error_Register : 2|1@1+ (1,0) [0|0] "" Vector__XXX + SG_ Emergency_Error_Code : 0|2@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 130 EMCY_Node2: 8 Vector__XXX + SG_ Emergency_Error_Code : 0|2@1+ (1,0) [0|0] "" Vector__XXX + SG_ Errors : 3|5@1- (1,0) [0|0] "" Vector__XXX + SG_ Error_Register : 2|1@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 129 EMCY_Node1: 8 Vector__XXX + SG_ Emergency_Error_Code : 0|2@1+ (1,0) [0|0] "" Vector__XXX + SG_ Errors : 3|5@1- (1,0) [0|0] "" Vector__XXX + SG_ Error_Register : 2|1@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1921 Heartbeat_Node81: 8 Vector__XXX + SG_ Heartbeat : 0|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1794 Heartbeat_Node2: 8 Vector__XXX + SG_ Heartbeat : 0|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 1793 Heartbeat_Node1: 8 Vector__XXX + SG_ Heartbeat : 0|8@1+ (1,0) [0|0] "" Vector__XXX + +BO_ 128 SYNC: 1 Vector__XXX + SG_ Sync_frame : 0|8@1- (1,0) [0|0] "" Vector__XXX + +BO_ 0 NMT_Command: 2 Vector__XXX + SG_ Requested_State : 0|8@1+ (1,0) [0|255] "" Vector__XXX + SG_ Node_ID : 8|8@1+ (1,0) [0|255] "" Vector__XXX + +BO_ 514 INV_R_RxPDO_1: 6 Vector__XXX + SG_ Target_Velocity : 16|32@1- (1,0) [-2147483648|2147483647] "" Vector__XXX + SG_ Target_Torque : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + +BO_ 513 INV_L_RxPDO_1: 6 Vector__XXX + SG_ Target_Velocity : 16|32@1- (1,0) [-2147483648|2147483647] "" Vector__XXX + SG_ Target_Torque : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + +BO_ 1154 INV_R_TxPDO_4: 8 Vector__XXX + SG_ Velocity_R : 32|32@1- (0.001,0) [-2147483.648|2147483.647] "1/s" Vector__XXX + SG_ ActualFlux_R : 16|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ DemandedFlux_R : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + +BO_ 898 INV_R_TxPDO_3: 8 Vector__XXX + SG_ ActualTorque_R : 48|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ DemandedTorque_R : 32|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Errors_R : 16|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Warnings_R : 0|16@1+ (1,0) [0|65535] "" Vector__XXX + +BO_ 642 INV_R_TxPDO_2: 7 Vector__XXX + SG_ OperationMode_R : 48|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ Controlword_R : 32|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ U_phase_R : 0|32@1- (1,0) [-2147483648|2147483647] "V" Vector__XXX + +BO_ 386 INV_R_TxPDO_1: 8 Vector__XXX + SG_ T_Mot_R : 32|32@1- (1,0) [-2147483648|2147483647] "°C" Vector__XXX + SG_ T_Inv_R : 0|32@1- (1,0) [-2147483648|2147483647] "°C" Vector__XXX + +BO_ 1153 INV_L_TxPDO_4: 8 Vector__XXX + SG_ Velocity_L : 32|32@1- (0.001,0) [-2147483.648|2147483.647] "1/s" Vector__XXX + SG_ ActualFlux_L : 16|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ DemandedFlux_L : 0|16@1- (1,0) [-32768|32767] "" Vector__XXX + +BO_ 897 INV_L_TxPDO_3: 8 Vector__XXX + SG_ ActualTorque_L : 48|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ DemandedTorque_L : 32|16@1- (1,0) [-32768|32767] "" Vector__XXX + SG_ Errors_L : 16|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ Warnings_L : 0|16@1+ (1,0) [0|65535] "" Vector__XXX + +BO_ 385 INV_L_TxPDO_1: 8 Vector__XXX + SG_ T_Mot_L : 32|32@1- (1,0) [-2147483648|2147483647] "°C" Vector__XXX + SG_ T_Inv_L : 0|32@1- (1,0) [-3.4E+38|3.4E+38] "°C" Vector__XXX + +BO_ 641 INV_L_TxPDO_2: 7 Vector__XXX + SG_ OperationMode_L : 48|8@1- (1,0) [-128|127] "" Vector__XXX + SG_ Controlword_L : 32|16@1+ (1,0) [0|65535] "" Vector__XXX + SG_ U_phase_L : 0|32@1- (1,0) [-2147483648|2147483647] "V" Vector__XXX + + + +BA_DEF_ "MultiplexExtEnabled" ENUM "No","Yes"; +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "MultiplexExtEnabled" "No"; +BA_DEF_DEF_ "BusType" "CAN"; +SIG_VALTYPE_ 386 T_Mot_R : 1; +SIG_VALTYPE_ 386 T_Inv_R : 1; +SIG_VALTYPE_ 385 T_Mot_L : 1; +SIG_VALTYPE_ 385 T_Inv_L : 1; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/XCP.dbc b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/XCP.dbc new file mode 100644 index 0000000..803df4d --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/can/CANdbcFT25/XCP.dbc @@ -0,0 +1,52 @@ +VERSION "" + + +NS_ : + NS_DESC_ + CM_ + BA_DEF_ + BA_ + VAL_ + CAT_DEF_ + CAT_ + FILTER + BA_DEF_DEF_ + EV_DATA_ + ENVVAR_DATA_ + SGTYPE_ + SGTYPE_VAL_ + BA_DEF_SGTYPE_ + BA_SGTYPE_ + SIG_TYPE_REF_ + VAL_TABLE_ + SIG_GROUP_ + SIG_VALTYPE_ + SIGTYPE_VALTYPE_ + BO_TX_BU_ + BA_DEF_REL_ + BA_REL_ + BA_DEF_DEF_REL_ + BU_SG_REL_ + BU_EV_REL_ + BU_BO_REL_ + SG_MUL_VAL_ + +BS_: + +BU_: +VAL_TABLE_ XCP_CMD_Values 246 "SET_MTA" 245 "UPLOAD" ; + + +BO_ 2 XCP_MOSI: 8 Vector__XXX + SG_ XCP_Upload_Len m245 : 8|8@1+ (1,0) [0|0] "" Vector__XXX + SG_ XCP_MTA m246 : 15|32@0+ (1,0) [0|0] "" Vector__XXX + SG_ XCP_CMD M : 0|8@1+ (1,0) [0|0] "" Vector__XXX + + + +BA_DEF_ "MultiplexExtEnabled" ENUM "No","Yes"; +BA_DEF_ "BusType" STRING ; +BA_DEF_DEF_ "MultiplexExtEnabled" "No"; +BA_DEF_DEF_ "BusType" "CAN"; +VAL_ 2 XCP_CMD 246 "SET_MTA" 245 "UPLOAD" ; + diff --git a/ros2_ws/src/ft_can_transceiver_lib/dbc/candocs.txt b/ros2_ws/src/ft_can_transceiver_lib/dbc/candocs.txt new file mode 100644 index 0000000..12b8f26 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/dbc/candocs.txt @@ -0,0 +1,10473 @@ +Warning: this file might be possibly outdated !!!!! +================================= Messages ================================= + + ------------------------------------------------------------------------ + + Name: VN200_GNSS_LL + Id: 0x5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Latitude + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- Longitude + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- UncertaintyN + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- UncertaintyE + + Signal tree: + + -- {root} + +-- Latitude + +-- Longitude + +-- UncertaintyN + +-- UncertaintyE + + ------------------------------------------------------------------------ + + Name: VN200_IMU_ACC_ANG + Id: 0x1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 2 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- AccAngX + +---+---+---+---+---+---+---+---+ + B 3 |-------------------------------| + y +---+---+---+---+---+---+---+---+ + t 4 |<------------------------------| + e +---+---+---+---+---+---+---+---+ + +-- AccAngY + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 6 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- AccAngZ + + Signal tree: + + -- {root} + +-- AccAngX + +-- AccAngY + +-- AccAngZ + + ------------------------------------------------------------------------ + + Name: VN200_IMU_ACC_LIN + Id: 0x2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 2 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- AccLinX + +---+---+---+---+---+---+---+---+ + B 3 |-------------------------------| + y +---+---+---+---+---+---+---+---+ + t 4 |<------------------------------| + e +---+---+---+---+---+---+---+---+ + +-- AccLinY + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 6 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- AccLinZ + + Signal tree: + + -- {root} + +-- AccLinX + +-- AccLinY + +-- AccLinZ + + ------------------------------------------------------------------------ + + Name: VN200_INS_LL + Id: 0x11 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Latitude + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- Longitude + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- UncertaintyN + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- UncertaintyE + + Signal tree: + + -- {root} + +-- Latitude + +-- Longitude + +-- UncertaintyN + +-- UncertaintyE + + ------------------------------------------------------------------------ + + Name: VN200_INS_VEL + Id: 0x32 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- VelLinX + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- VelLinY + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- VelLinZ + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Uncertainity + + Signal tree: + + -- {root} + +-- VelLinX + +-- VelLinY + +-- VelLinZ + +-- Uncertainity + + ------------------------------------------------------------------------ + + Name: YN200_INS_YPR + Id: 0x6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Yaw + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- Pitch + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Roll + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- Uncertainty + + Signal tree: + + -- {root} + +-- Yaw + +-- Pitch + +-- Roll + +-- Uncertainty + + ------------------------------------------------------------------------ + + Name: PG_TX_2 + Id: 0x503 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 2 | | | | | | | | | + B +---+---+---+---+---+---+---+---+ + y 3 | | | | | | | | | + t +---+---+---+---+---+---+---+---+ + e 4 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 5 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log8 + Id: 0x6c8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave12_T24 + +-- AMS_Slave12_T25 + +-- AMS_Slave12_T26 + +-- AMS_Slave12_T27 + +-- AMS_Slave12_T28 + +-- AMS_Slave12_T29 + +-- AMS_Slave12_T30 + +-- AMS_Slave12_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log8 + Id: 0x698 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave9_T24 + +-- AMS_Slave9_T25 + +-- AMS_Slave9_T26 + +-- AMS_Slave9_T27 + +-- AMS_Slave9_T28 + +-- AMS_Slave9_T29 + +-- AMS_Slave9_T30 + +-- AMS_Slave9_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log7 + Id: 0x697 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave9_T16 + +-- AMS_Slave9_T17 + +-- AMS_Slave9_T18 + +-- AMS_Slave9_T19 + +-- AMS_Slave9_T20 + +-- AMS_Slave9_T21 + +-- AMS_Slave9_T22 + +-- AMS_Slave9_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log6 + Id: 0x696 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave9_T8 + +-- AMS_Slave9_T9 + +-- AMS_Slave9_T10 + +-- AMS_Slave9_T11 + +-- AMS_Slave9_T12 + +-- AMS_Slave9_T13 + +-- AMS_Slave9_T14 + +-- AMS_Slave9_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log5 + Id: 0x695 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave9_T0 + +-- AMS_Slave9_T1 + +-- AMS_Slave9_T2 + +-- AMS_Slave9_T3 + +-- AMS_Slave9_T4 + +-- AMS_Slave9_T5 + +-- AMS_Slave9_T6 + +-- AMS_Slave9_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log4 + Id: 0x694 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave9_V16 + +-- AMS_Slave9_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log3 + Id: 0x693 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave9_V12 + +-- AMS_Slave9_V13 + +-- AMS_Slave9_V14 + +-- AMS_Slave9_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log2 + Id: 0x692 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave9_V8 + +-- AMS_Slave9_V9 + +-- AMS_Slave9_V10 + +-- AMS_Slave9_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log1 + Id: 0x691 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave9_V4 + +-- AMS_Slave9_V5 + +-- AMS_Slave9_V6 + +-- AMS_Slave9_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9_Log0 + Id: 0x690 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave9_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave9_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave9_V0 + +-- AMS_Slave9_V1 + +-- AMS_Slave9_V2 + +-- AMS_Slave9_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8Status + Id: 0x88 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log8 + Id: 0x688 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave8_T24 + +-- AMS_Slave8_T25 + +-- AMS_Slave8_T26 + +-- AMS_Slave8_T27 + +-- AMS_Slave8_T28 + +-- AMS_Slave8_T29 + +-- AMS_Slave8_T30 + +-- AMS_Slave8_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log7 + Id: 0x687 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave8_T16 + +-- AMS_Slave8_T17 + +-- AMS_Slave8_T18 + +-- AMS_Slave8_T19 + +-- AMS_Slave8_T20 + +-- AMS_Slave8_T21 + +-- AMS_Slave8_T22 + +-- AMS_Slave8_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log6 + Id: 0x686 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave8_T8 + +-- AMS_Slave8_T9 + +-- AMS_Slave8_T10 + +-- AMS_Slave8_T11 + +-- AMS_Slave8_T12 + +-- AMS_Slave8_T13 + +-- AMS_Slave8_T14 + +-- AMS_Slave8_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log5 + Id: 0x685 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave8_T0 + +-- AMS_Slave8_T1 + +-- AMS_Slave8_T2 + +-- AMS_Slave8_T3 + +-- AMS_Slave8_T4 + +-- AMS_Slave8_T5 + +-- AMS_Slave8_T6 + +-- AMS_Slave8_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log4 + Id: 0x684 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave8_V16 + +-- AMS_Slave8_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log3 + Id: 0x683 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave8_V12 + +-- AMS_Slave8_V13 + +-- AMS_Slave8_V14 + +-- AMS_Slave8_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log2 + Id: 0x682 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave8_V8 + +-- AMS_Slave8_V9 + +-- AMS_Slave8_V10 + +-- AMS_Slave8_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log1 + Id: 0x681 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave8_V4 + +-- AMS_Slave8_V5 + +-- AMS_Slave8_V6 + +-- AMS_Slave8_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave8_Log0 + Id: 0x680 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave8_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave8_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave8_V0 + +-- AMS_Slave8_V1 + +-- AMS_Slave8_V2 + +-- AMS_Slave8_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15Status + Id: 0x8f + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave14Status + Id: 0x8e + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave13Status + Id: 0x8d + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave12Status + Id: 0x8c + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave11Status + Id: 0x8b + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave10Status + Id: 0x8a + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log8 + Id: 0x6f8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave15_T24 + +-- AMS_Slave15_T25 + +-- AMS_Slave15_T26 + +-- AMS_Slave15_T27 + +-- AMS_Slave15_T28 + +-- AMS_Slave15_T29 + +-- AMS_Slave15_T30 + +-- AMS_Slave15_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log8 + Id: 0x6e8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave14_T24 + +-- AMS_Slave14_T25 + +-- AMS_Slave14_T26 + +-- AMS_Slave14_T27 + +-- AMS_Slave14_T28 + +-- AMS_Slave14_T29 + +-- AMS_Slave14_T30 + +-- AMS_Slave14_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log8 + Id: 0x6d8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave13_T24 + +-- AMS_Slave13_T25 + +-- AMS_Slave13_T26 + +-- AMS_Slave13_T27 + +-- AMS_Slave13_T28 + +-- AMS_Slave13_T29 + +-- AMS_Slave13_T30 + +-- AMS_Slave13_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log7 + Id: 0x6c7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave12_T16 + +-- AMS_Slave12_T17 + +-- AMS_Slave12_T18 + +-- AMS_Slave12_T19 + +-- AMS_Slave12_T20 + +-- AMS_Slave12_T21 + +-- AMS_Slave12_T22 + +-- AMS_Slave12_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log8 + Id: 0x6b8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave11_T24 + +-- AMS_Slave11_T25 + +-- AMS_Slave11_T26 + +-- AMS_Slave11_T27 + +-- AMS_Slave11_T28 + +-- AMS_Slave11_T29 + +-- AMS_Slave11_T30 + +-- AMS_Slave11_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log7 + Id: 0x6f7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave15_T16 + +-- AMS_Slave15_T17 + +-- AMS_Slave15_T18 + +-- AMS_Slave15_T19 + +-- AMS_Slave15_T20 + +-- AMS_Slave15_T21 + +-- AMS_Slave15_T22 + +-- AMS_Slave15_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log7 + Id: 0x6e7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave14_T16 + +-- AMS_Slave14_T17 + +-- AMS_Slave14_T18 + +-- AMS_Slave14_T19 + +-- AMS_Slave14_T20 + +-- AMS_Slave14_T21 + +-- AMS_Slave14_T22 + +-- AMS_Slave14_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log7 + Id: 0x6d7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave13_T16 + +-- AMS_Slave13_T17 + +-- AMS_Slave13_T18 + +-- AMS_Slave13_T19 + +-- AMS_Slave13_T20 + +-- AMS_Slave13_T21 + +-- AMS_Slave13_T22 + +-- AMS_Slave13_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log6 + Id: 0x6c6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T11 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_T10 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave12_T8 + +-- AMS_Slave12_T9 + +-- AMS_Slave12_T11 + +-- AMS_Slave12_T10 + +-- AMS_Slave12_T12 + +-- AMS_Slave12_T13 + +-- AMS_Slave12_T14 + +-- AMS_Slave12_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log7 + Id: 0x6b7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave11_T16 + +-- AMS_Slave11_T17 + +-- AMS_Slave11_T18 + +-- AMS_Slave11_T19 + +-- AMS_Slave11_T20 + +-- AMS_Slave11_T21 + +-- AMS_Slave11_T22 + +-- AMS_Slave11_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log6 + Id: 0x6f6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave15_T8 + +-- AMS_Slave15_T9 + +-- AMS_Slave15_T10 + +-- AMS_Slave15_T11 + +-- AMS_Slave15_T12 + +-- AMS_Slave15_T13 + +-- AMS_Slave15_T14 + +-- AMS_Slave15_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log6 + Id: 0x6e6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave14_T8 + +-- AMS_Slave14_T9 + +-- AMS_Slave14_T10 + +-- AMS_Slave14_T11 + +-- AMS_Slave14_T12 + +-- AMS_Slave14_T13 + +-- AMS_Slave14_T14 + +-- AMS_Slave14_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log6 + Id: 0x6d6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave13_T8 + +-- AMS_Slave13_T9 + +-- AMS_Slave13_T10 + +-- AMS_Slave13_T11 + +-- AMS_Slave13_T12 + +-- AMS_Slave13_T13 + +-- AMS_Slave13_T14 + +-- AMS_Slave13_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log5 + Id: 0x6c5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave12_T0 + +-- AMS_Slave12_T1 + +-- AMS_Slave12_T2 + +-- AMS_Slave12_T3 + +-- AMS_Slave12_T4 + +-- AMS_Slave12_T5 + +-- AMS_Slave12_T6 + +-- AMS_Slave12_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log6 + Id: 0x6b6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave11_T8 + +-- AMS_Slave11_T9 + +-- AMS_Slave11_T10 + +-- AMS_Slave11_T11 + +-- AMS_Slave11_T12 + +-- AMS_Slave11_T13 + +-- AMS_Slave11_T14 + +-- AMS_Slave11_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log5 + Id: 0x6f5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave15_T0 + +-- AMS_Slave15_T1 + +-- AMS_Slave15_T2 + +-- AMS_Slave15_T3 + +-- AMS_Slave15_T4 + +-- AMS_Slave15_T5 + +-- AMS_Slave15_T6 + +-- AMS_Slave15_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log5 + Id: 0x6e5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave14_T0 + +-- AMS_Slave14_T1 + +-- AMS_Slave14_T2 + +-- AMS_Slave14_T3 + +-- AMS_Slave14_T4 + +-- AMS_Slave14_T5 + +-- AMS_Slave14_T6 + +-- AMS_Slave14_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log5 + Id: 0x6d5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave13_T0 + +-- AMS_Slave13_T1 + +-- AMS_Slave13_T2 + +-- AMS_Slave13_T3 + +-- AMS_Slave13_T4 + +-- AMS_Slave13_T5 + +-- AMS_Slave13_T6 + +-- AMS_Slave13_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log4 + Id: 0x6c4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave12_V16 + +-- AMS_Slave12_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log5 + Id: 0x6b5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave11_T0 + +-- AMS_Slave11_T1 + +-- AMS_Slave11_T2 + +-- AMS_Slave11_T3 + +-- AMS_Slave11_T4 + +-- AMS_Slave11_T5 + +-- AMS_Slave11_T6 + +-- AMS_Slave11_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log4 + Id: 0x6f4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave15_V16 + +-- AMS_Slave15_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log4 + Id: 0x6e4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave14_V16 + +-- AMS_Slave14_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log4 + Id: 0x6d4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave13_V16 + +-- AMS_Slave13_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log3 + Id: 0x6c3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave12_V12 + +-- AMS_Slave12_V13 + +-- AMS_Slave12_V14 + +-- AMS_Slave12_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log4 + Id: 0x6b4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V16 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave11_V16 + +-- AMS_Slave11_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log3 + Id: 0x6f3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave15_V12 + +-- AMS_Slave15_V13 + +-- AMS_Slave15_V14 + +-- AMS_Slave15_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log3 + Id: 0x6e3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave14_V12 + +-- AMS_Slave14_V13 + +-- AMS_Slave14_V14 + +-- AMS_Slave14_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log3 + Id: 0x6d3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave13_V12 + +-- AMS_Slave13_V13 + +-- AMS_Slave13_V14 + +-- AMS_Slave13_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log2 + Id: 0x6c2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave12_V8 + +-- AMS_Slave12_V9 + +-- AMS_Slave12_V10 + +-- AMS_Slave12_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log3 + Id: 0x6b3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave11_V12 + +-- AMS_Slave11_V13 + +-- AMS_Slave11_V14 + +-- AMS_Slave11_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log2 + Id: 0x6f2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave15_V8 + +-- AMS_Slave15_V9 + +-- AMS_Slave15_V10 + +-- AMS_Slave15_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log2 + Id: 0x6e2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave14_V8 + +-- AMS_Slave14_V9 + +-- AMS_Slave14_V10 + +-- AMS_Slave14_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log2 + Id: 0x6d2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave13_V8 + +-- AMS_Slave13_V9 + +-- AMS_Slave13_V10 + +-- AMS_Slave13_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log1 + Id: 0x6c1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave12_V4 + +-- AMS_Slave12_V5 + +-- AMS_Slave12_V6 + +-- AMS_Slave12_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log2 + Id: 0x6b2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave11_V8 + +-- AMS_Slave11_V9 + +-- AMS_Slave11_V10 + +-- AMS_Slave11_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log1 + Id: 0x6f1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave15_V4 + +-- AMS_Slave15_V5 + +-- AMS_Slave15_V6 + +-- AMS_Slave15_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log1 + Id: 0x6e1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave14_V4 + +-- AMS_Slave14_V5 + +-- AMS_Slave14_V6 + +-- AMS_Slave14_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log1 + Id: 0x6d1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave13_V4 + +-- AMS_Slave13_V5 + +-- AMS_Slave13_V6 + +-- AMS_Slave13_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave12_Log0 + Id: 0x6c0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave12_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave12_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave12_V0 + +-- AMS_Slave12_V1 + +-- AMS_Slave12_V2 + +-- AMS_Slave12_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log1 + Id: 0x6b1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave11_V4 + +-- AMS_Slave11_V5 + +-- AMS_Slave11_V6 + +-- AMS_Slave11_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave15_Log0 + Id: 0x6f0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave15_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave15_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave15_V0 + +-- AMS_Slave15_V1 + +-- AMS_Slave15_V2 + +-- AMS_Slave15_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave14_Log0 + Id: 0x6e0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave14_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave14_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave14_V0 + +-- AMS_Slave14_V1 + +-- AMS_Slave14_V2 + +-- AMS_Slave14_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave13_Log0 + Id: 0x6d0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave13_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave13_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave13_V0 + +-- AMS_Slave13_V1 + +-- AMS_Slave13_V2 + +-- AMS_Slave13_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave11_Log0 + Id: 0x6b0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave11_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave11_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave11_V0 + +-- AMS_Slave11_V1 + +-- AMS_Slave11_V2 + +-- AMS_Slave11_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log8 + Id: 0x6a8 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave10_T24 + +-- AMS_Slave10_T25 + +-- AMS_Slave10_T26 + +-- AMS_Slave10_T27 + +-- AMS_Slave10_T28 + +-- AMS_Slave10_T29 + +-- AMS_Slave10_T30 + +-- AMS_Slave10_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log7 + Id: 0x6a7 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave10_T16 + +-- AMS_Slave10_T17 + +-- AMS_Slave10_T18 + +-- AMS_Slave10_T19 + +-- AMS_Slave10_T20 + +-- AMS_Slave10_T21 + +-- AMS_Slave10_T22 + +-- AMS_Slave10_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log6 + Id: 0x6a6 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave10_T8 + +-- AMS_Slave10_T9 + +-- AMS_Slave10_T10 + +-- AMS_Slave10_T11 + +-- AMS_Slave10_T12 + +-- AMS_Slave10_T13 + +-- AMS_Slave10_T14 + +-- AMS_Slave10_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log5 + Id: 0x6a5 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave10_T0 + +-- AMS_Slave10_T1 + +-- AMS_Slave10_T2 + +-- AMS_Slave10_T3 + +-- AMS_Slave10_T4 + +-- AMS_Slave10_T5 + +-- AMS_Slave10_T6 + +-- AMS_Slave10_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log4 + Id: 0x6a4 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V16 + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y 3 |-------------------------------| + t +---+---+---+---+---+---+---+---+ + e 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_FailedSensors + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_Slave10_V16 + +-- AMS_Slave10_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log3 + Id: 0x6a3 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave10_V12 + +-- AMS_Slave10_V13 + +-- AMS_Slave10_V14 + +-- AMS_Slave10_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log2 + Id: 0x6a2 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave10_V8 + +-- AMS_Slave10_V9 + +-- AMS_Slave10_V10 + +-- AMS_Slave10_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log1 + Id: 0x6a1 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave10_V4 + +-- AMS_Slave10_V5 + +-- AMS_Slave10_V6 + +-- AMS_Slave10_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave10_Log0 + Id: 0x6a0 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave10_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave10_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave10_V0 + +-- AMS_Slave10_V1 + +-- AMS_Slave10_V2 + +-- AMS_Slave10_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave9Status + Id: 0x89 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + B 2 | | | | | | | | | + y +---+---+---+---+---+---+---+---+ + t 3 | | | | | | | | | + e +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: PG_RX + Id: 0x501 + Length: 2 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | |<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + B | | +-- PG_inactive + y | +-- PG_active + t +-- PG_ready + e +---+---+---+---+---+---+---+---+ + 1 | |<-------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PG_percent + + Signal tree: + + -- {root} + +-- PG_inactive + +-- PG_active + +-- PG_ready + +-- PG_percent + + ------------------------------------------------------------------------ + + Name: ABX_Accel + Id: 0x111 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Accel_X + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + B 3 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t +-- ABX_Accel_Y + e +---+---+---+---+---+---+---+---+ + 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Accel_Z + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_Accel_X + +-- ABX_Accel_Y + +-- ABX_Accel_Z + + ------------------------------------------------------------------------ + + Name: ABX_Hydraulics + Id: 0x110 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Hyd_PA + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y 3 | | | | |<--------------| + t +---+---+---+---+---+---+---+---+ + e +-- ABX_Hyd_PB + +---+---+---+---+---+---+---+---+ + 4 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 5 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_Hyd_PA + +-- ABX_Hyd_PB + + ------------------------------------------------------------------------ + + Name: ABX_ParamConfirm + Id: 0x413 + Length: 8 bytes + Cycle time: - ms + Senders: - + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_ParamConfirm + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 | | | | | | | | | + y +---+---+---+---+---+---+---+---+ + t 3 | | | | | | | | | + e +---+---+---+---+---+---+---+---+ + 4 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 5 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_ParamConfirm + + ------------------------------------------------------------------------ + + Name: PG_TX + Id: 0x502 + Length: 8 bytes + Cycle time: - ms + Senders: PG + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |--------------x|<---------x|<-x| + +---+---+---+---+---+---+---+---+ + | +-- PG_Errorbit + +-- PG_State + +---+---+---+---+---+---+---+---+ + 1 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- PG_Powerground_State + +---+---+---+---+---+---+---+---+ + 2 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- PG_Error + B +---+---+---+---+---+---+---+---+ + y 3 |--------------x|<--------------| + t +---+---+---+---+---+---+---+---+ + e +-- PG_SOC + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- PG_battery_voltage + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 6 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- PG_current_measurement + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- PG_temperature + + Signal tree: + + -- {root} + +-- PG_Errorbit + +-- PG_State + +-- PG_Powerground_State + +-- PG_Error + +-- PG_SOC + +-- PG_battery_voltage + +-- PG_current_measurement + +-- PG_temperature + + ------------------------------------------------------------------------ + + Name: ACU_TX_Commands + Id: 0xe3 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Speed_FL + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Speed_FR + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Speed_RL + B +---+---+---+---+---+---+---+---+ + y 3 |<-----------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- ABX_Speed_RR + +---+---+---+---+---+---+---+---+ + 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Steering_Angle_Left + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Steering_Angle_Right + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_Speed_FL + +-- ABX_Speed_FR + +-- ABX_Speed_RL + +-- ABX_Speed_RR + +-- ABX_Steering_Angle_Left + +-- ABX_Steering_Angle_Right + + ------------------------------------------------------------------------ + + Name: ACU_RX_Commands + Id: 0xe2 + Length: 8 bytes + Cycle time: - ms + Senders: ACU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ACU_Speed_Target_left + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ACU_Speed_Target_right + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- ACU_Steering_Angle_Right + t +---+---+---+---+---+---+---+---+ + e 3 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ACU_Steering_Angle_Left + +---+---+---+---+---+---+---+---+ + 4 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 5 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ACU_Speed_Target_left + +-- ACU_Speed_Target_right + +-- ACU_Steering_Angle_Right + +-- ACU_Steering_Angle_Left + + ------------------------------------------------------------------------ + + Name: ACU_RX + Id: 0xe1 + Length: 7 bytes + Cycle time: - ms + Senders: ACU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-------------x| | |<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | +-- ACU_AS_Mission_Complete + | +-- ACU_AS_OK + +-- ACU_Lap_Count + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ACU_Cones_All + +---+---+---+---+---+---+---+---+ + B 2 |<-----------------------------x| + y +---+---+---+---+---+---+---+---+ + t +-- ACU_Cones_Actual + e +---+---+---+---+---+---+---+---+ + 3 | | | | | | |<-x|<-x| + +---+---+---+---+---+---+---+---+ + | +-- ACU_DRS + +-- ACU_PG + +---+---+---+---+---+---+---+---+ + 4 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 5 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ACU_AS_Mission_Complete + +-- ACU_AS_OK + +-- ACU_Lap_Count + +-- ACU_Cones_All + +-- ACU_Cones_Actual + +-- ACU_DRS + +-- ACU_PG + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log0 + Id: 0x600 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave0_V0 + +-- AMS_Slave0_V1 + +-- AMS_Slave0_V2 + +-- AMS_Slave0_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log1 + Id: 0x601 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave0_V4 + +-- AMS_Slave0_V5 + +-- AMS_Slave0_V6 + +-- AMS_Slave0_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log2 + Id: 0x602 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave0_V8 + +-- AMS_Slave0_V9 + +-- AMS_Slave0_V10 + +-- AMS_Slave0_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log3 + Id: 0x603 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave0_V12 + +-- AMS_Slave0_V13 + +-- AMS_Slave0_V14 + +-- AMS_Slave0_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log4 + Id: 0x604 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave0_V16 + +-- AMS_Slave0_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log5 + Id: 0x605 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave0_T0 + +-- AMS_Slave0_T1 + +-- AMS_Slave0_T2 + +-- AMS_Slave0_T3 + +-- AMS_Slave0_T4 + +-- AMS_Slave0_T5 + +-- AMS_Slave0_T6 + +-- AMS_Slave0_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log6 + Id: 0x606 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave0_T8 + +-- AMS_Slave0_T9 + +-- AMS_Slave0_T10 + +-- AMS_Slave0_T11 + +-- AMS_Slave0_T12 + +-- AMS_Slave0_T13 + +-- AMS_Slave0_T14 + +-- AMS_Slave0_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log7 + Id: 0x607 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave0_T16 + +-- AMS_Slave0_T17 + +-- AMS_Slave0_T18 + +-- AMS_Slave0_T19 + +-- AMS_Slave0_T20 + +-- AMS_Slave0_T21 + +-- AMS_Slave0_T22 + +-- AMS_Slave0_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave0_Log8 + Id: 0x608 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave0_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave0_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave0_T24 + +-- AMS_Slave0_T25 + +-- AMS_Slave0_T26 + +-- AMS_Slave0_T27 + +-- AMS_Slave0_T28 + +-- AMS_Slave0_T29 + +-- AMS_Slave0_T30 + +-- AMS_Slave0_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log0 + Id: 0x610 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave1_V0 + +-- AMS_Slave1_V1 + +-- AMS_Slave1_V2 + +-- AMS_Slave1_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log1 + Id: 0x611 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave1_V4 + +-- AMS_Slave1_V5 + +-- AMS_Slave1_V6 + +-- AMS_Slave1_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log2 + Id: 0x612 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave1_V8 + +-- AMS_Slave1_V9 + +-- AMS_Slave1_V10 + +-- AMS_Slave1_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log3 + Id: 0x613 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave1_V12 + +-- AMS_Slave1_V13 + +-- AMS_Slave1_V14 + +-- AMS_Slave1_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log4 + Id: 0x614 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave1_V16 + +-- AMS_Slave1_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log5 + Id: 0x615 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave1_T0 + +-- AMS_Slave1_T1 + +-- AMS_Slave1_T2 + +-- AMS_Slave1_T3 + +-- AMS_Slave1_T4 + +-- AMS_Slave1_T5 + +-- AMS_Slave1_T6 + +-- AMS_Slave1_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log6 + Id: 0x616 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave1_T8 + +-- AMS_Slave1_T9 + +-- AMS_Slave1_T10 + +-- AMS_Slave1_T11 + +-- AMS_Slave1_T12 + +-- AMS_Slave1_T13 + +-- AMS_Slave1_T14 + +-- AMS_Slave1_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log7 + Id: 0x617 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave1_T16 + +-- AMS_Slave1_T17 + +-- AMS_Slave1_T18 + +-- AMS_Slave1_T19 + +-- AMS_Slave1_T20 + +-- AMS_Slave1_T21 + +-- AMS_Slave1_T22 + +-- AMS_Slave1_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave1_Log8 + Id: 0x618 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave1_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave1_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave1_T24 + +-- AMS_Slave1_T25 + +-- AMS_Slave1_T26 + +-- AMS_Slave1_T27 + +-- AMS_Slave1_T28 + +-- AMS_Slave1_T29 + +-- AMS_Slave1_T30 + +-- AMS_Slave1_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log0 + Id: 0x620 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave2_V0 + +-- AMS_Slave2_V1 + +-- AMS_Slave2_V2 + +-- AMS_Slave2_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log1 + Id: 0x621 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave2_V4 + +-- AMS_Slave2_V5 + +-- AMS_Slave2_V6 + +-- AMS_Slave2_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log2 + Id: 0x622 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave2_V8 + +-- AMS_Slave2_V9 + +-- AMS_Slave2_V10 + +-- AMS_Slave2_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log3 + Id: 0x623 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave2_V12 + +-- AMS_Slave2_V13 + +-- AMS_Slave2_V14 + +-- AMS_Slave2_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log4 + Id: 0x624 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave2_V16 + +-- AMS_Slave2_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log5 + Id: 0x625 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave2_T0 + +-- AMS_Slave2_T1 + +-- AMS_Slave2_T2 + +-- AMS_Slave2_T3 + +-- AMS_Slave2_T4 + +-- AMS_Slave2_T5 + +-- AMS_Slave2_T6 + +-- AMS_Slave2_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log6 + Id: 0x626 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave2_T8 + +-- AMS_Slave2_T9 + +-- AMS_Slave2_T10 + +-- AMS_Slave2_T11 + +-- AMS_Slave2_T12 + +-- AMS_Slave2_T13 + +-- AMS_Slave2_T14 + +-- AMS_Slave2_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log7 + Id: 0x627 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave2_T16 + +-- AMS_Slave2_T17 + +-- AMS_Slave2_T18 + +-- AMS_Slave2_T19 + +-- AMS_Slave2_T20 + +-- AMS_Slave2_T21 + +-- AMS_Slave2_T22 + +-- AMS_Slave2_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave2_Log8 + Id: 0x628 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave2_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave2_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave2_T24 + +-- AMS_Slave2_T25 + +-- AMS_Slave2_T26 + +-- AMS_Slave2_T27 + +-- AMS_Slave2_T28 + +-- AMS_Slave2_T29 + +-- AMS_Slave2_T30 + +-- AMS_Slave2_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log0 + Id: 0x630 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave3_V0 + +-- AMS_Slave3_V1 + +-- AMS_Slave3_V2 + +-- AMS_Slave3_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log1 + Id: 0x631 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave3_V4 + +-- AMS_Slave3_V5 + +-- AMS_Slave3_V6 + +-- AMS_Slave3_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log2 + Id: 0x632 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave3_V8 + +-- AMS_Slave3_V9 + +-- AMS_Slave3_V10 + +-- AMS_Slave3_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log3 + Id: 0x633 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave3_V12 + +-- AMS_Slave3_V13 + +-- AMS_Slave3_V14 + +-- AMS_Slave3_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log4 + Id: 0x634 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave3_V16 + +-- AMS_Slave3_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log5 + Id: 0x635 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave3_T0 + +-- AMS_Slave3_T1 + +-- AMS_Slave3_T2 + +-- AMS_Slave3_T3 + +-- AMS_Slave3_T4 + +-- AMS_Slave3_T5 + +-- AMS_Slave3_T6 + +-- AMS_Slave3_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log6 + Id: 0x636 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave3_T8 + +-- AMS_Slave3_T9 + +-- AMS_Slave3_T10 + +-- AMS_Slave3_T11 + +-- AMS_Slave3_T12 + +-- AMS_Slave3_T13 + +-- AMS_Slave3_T14 + +-- AMS_Slave3_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log7 + Id: 0x637 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave3_T16 + +-- AMS_Slave3_T17 + +-- AMS_Slave3_T18 + +-- AMS_Slave3_T19 + +-- AMS_Slave3_T20 + +-- AMS_Slave3_T21 + +-- AMS_Slave3_T22 + +-- AMS_Slave3_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave3_Log8 + Id: 0x638 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave3_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave3_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave3_T24 + +-- AMS_Slave3_T25 + +-- AMS_Slave3_T26 + +-- AMS_Slave3_T27 + +-- AMS_Slave3_T28 + +-- AMS_Slave3_T29 + +-- AMS_Slave3_T30 + +-- AMS_Slave3_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log0 + Id: 0x640 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave4_V0 + +-- AMS_Slave4_V1 + +-- AMS_Slave4_V2 + +-- AMS_Slave4_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log1 + Id: 0x641 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave4_V4 + +-- AMS_Slave4_V5 + +-- AMS_Slave4_V6 + +-- AMS_Slave4_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log2 + Id: 0x642 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave4_V8 + +-- AMS_Slave4_V9 + +-- AMS_Slave4_V10 + +-- AMS_Slave4_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log3 + Id: 0x643 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave4_V12 + +-- AMS_Slave4_V13 + +-- AMS_Slave4_V14 + +-- AMS_Slave4_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log4 + Id: 0x644 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave4_V16 + +-- AMS_Slave4_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log5 + Id: 0x645 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave4_T0 + +-- AMS_Slave4_T1 + +-- AMS_Slave4_T2 + +-- AMS_Slave4_T3 + +-- AMS_Slave4_T4 + +-- AMS_Slave4_T5 + +-- AMS_Slave4_T6 + +-- AMS_Slave4_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log6 + Id: 0x646 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave4_T8 + +-- AMS_Slave4_T9 + +-- AMS_Slave4_T10 + +-- AMS_Slave4_T11 + +-- AMS_Slave4_T12 + +-- AMS_Slave4_T13 + +-- AMS_Slave4_T14 + +-- AMS_Slave4_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log7 + Id: 0x647 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave4_T16 + +-- AMS_Slave4_T17 + +-- AMS_Slave4_T18 + +-- AMS_Slave4_T19 + +-- AMS_Slave4_T20 + +-- AMS_Slave4_T21 + +-- AMS_Slave4_T22 + +-- AMS_Slave4_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave4_Log8 + Id: 0x648 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave4_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave4_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave4_T24 + +-- AMS_Slave4_T25 + +-- AMS_Slave4_T26 + +-- AMS_Slave4_T27 + +-- AMS_Slave4_T28 + +-- AMS_Slave4_T29 + +-- AMS_Slave4_T30 + +-- AMS_Slave4_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log0 + Id: 0x650 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave5_V0 + +-- AMS_Slave5_V1 + +-- AMS_Slave5_V2 + +-- AMS_Slave5_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log1 + Id: 0x651 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave5_V4 + +-- AMS_Slave5_V5 + +-- AMS_Slave5_V6 + +-- AMS_Slave5_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log2 + Id: 0x652 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave5_V8 + +-- AMS_Slave5_V9 + +-- AMS_Slave5_V10 + +-- AMS_Slave5_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log3 + Id: 0x653 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave5_V12 + +-- AMS_Slave5_V13 + +-- AMS_Slave5_V14 + +-- AMS_Slave5_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log4 + Id: 0x654 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave5_V16 + +-- AMS_Slave5_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log5 + Id: 0x655 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave5_T0 + +-- AMS_Slave5_T1 + +-- AMS_Slave5_T2 + +-- AMS_Slave5_T3 + +-- AMS_Slave5_T4 + +-- AMS_Slave5_T5 + +-- AMS_Slave5_T6 + +-- AMS_Slave5_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log6 + Id: 0x656 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave5_T8 + +-- AMS_Slave5_T9 + +-- AMS_Slave5_T10 + +-- AMS_Slave5_T11 + +-- AMS_Slave5_T12 + +-- AMS_Slave5_T13 + +-- AMS_Slave5_T14 + +-- AMS_Slave5_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log7 + Id: 0x657 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave5_T16 + +-- AMS_Slave5_T17 + +-- AMS_Slave5_T18 + +-- AMS_Slave5_T19 + +-- AMS_Slave5_T20 + +-- AMS_Slave5_T21 + +-- AMS_Slave5_T22 + +-- AMS_Slave5_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave5_Log8 + Id: 0x658 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave5_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave5_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave5_T24 + +-- AMS_Slave5_T25 + +-- AMS_Slave5_T26 + +-- AMS_Slave5_T27 + +-- AMS_Slave5_T28 + +-- AMS_Slave5_T29 + +-- AMS_Slave5_T30 + +-- AMS_Slave5_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log0 + Id: 0x660 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave6_V0 + +-- AMS_Slave6_V1 + +-- AMS_Slave6_V2 + +-- AMS_Slave6_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log1 + Id: 0x661 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave6_V4 + +-- AMS_Slave6_V5 + +-- AMS_Slave6_V6 + +-- AMS_Slave6_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log2 + Id: 0x662 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave6_V8 + +-- AMS_Slave6_V9 + +-- AMS_Slave6_V10 + +-- AMS_Slave6_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log3 + Id: 0x663 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave6_V12 + +-- AMS_Slave6_V13 + +-- AMS_Slave6_V14 + +-- AMS_Slave6_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log4 + Id: 0x664 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave6_V16 + +-- AMS_Slave6_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log5 + Id: 0x665 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave6_T0 + +-- AMS_Slave6_T1 + +-- AMS_Slave6_T2 + +-- AMS_Slave6_T3 + +-- AMS_Slave6_T4 + +-- AMS_Slave6_T5 + +-- AMS_Slave6_T6 + +-- AMS_Slave6_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log6 + Id: 0x666 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave6_T8 + +-- AMS_Slave6_T9 + +-- AMS_Slave6_T10 + +-- AMS_Slave6_T11 + +-- AMS_Slave6_T12 + +-- AMS_Slave6_T13 + +-- AMS_Slave6_T14 + +-- AMS_Slave6_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log7 + Id: 0x667 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave6_T16 + +-- AMS_Slave6_T17 + +-- AMS_Slave6_T18 + +-- AMS_Slave6_T19 + +-- AMS_Slave6_T20 + +-- AMS_Slave6_T21 + +-- AMS_Slave6_T22 + +-- AMS_Slave6_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave6_Log8 + Id: 0x668 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave6_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave6_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave6_T24 + +-- AMS_Slave6_T25 + +-- AMS_Slave6_T26 + +-- AMS_Slave6_T27 + +-- AMS_Slave6_T28 + +-- AMS_Slave6_T29 + +-- AMS_Slave6_T30 + +-- AMS_Slave6_T31 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log0 + Id: 0x670 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V0 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_V1 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V2 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V3 + + Signal tree: + + -- {root} + +-- AMS_Slave7_V0 + +-- AMS_Slave7_V1 + +-- AMS_Slave7_V2 + +-- AMS_Slave7_V3 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log1 + Id: 0x671 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V4 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_V5 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V6 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V7 + + Signal tree: + + -- {root} + +-- AMS_Slave7_V4 + +-- AMS_Slave7_V5 + +-- AMS_Slave7_V6 + +-- AMS_Slave7_V7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log2 + Id: 0x672 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V8 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_V9 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V10 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V11 + + Signal tree: + + -- {root} + +-- AMS_Slave7_V8 + +-- AMS_Slave7_V9 + +-- AMS_Slave7_V10 + +-- AMS_Slave7_V11 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log3 + Id: 0x673 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V12 + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_V13 + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V14 + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V15 + + Signal tree: + + -- {root} + +-- AMS_Slave7_V12 + +-- AMS_Slave7_V13 + +-- AMS_Slave7_V14 + +-- AMS_Slave7_V15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log4 + Id: 0x674 + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_V16 + B +---+---+---+---+---+---+---+---+ + y 2 |<------------------------------| + t +---+---+---+---+---+---+---+---+ + e 3 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_FailedSensors + + Signal tree: + + -- {root} + +-- AMS_Slave7_V16 + +-- AMS_Slave7_FailedSensors + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log5 + Id: 0x675 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T0 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T1 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T2 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_T3 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T4 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T5 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T6 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T7 + + Signal tree: + + -- {root} + +-- AMS_Slave7_T0 + +-- AMS_Slave7_T1 + +-- AMS_Slave7_T2 + +-- AMS_Slave7_T3 + +-- AMS_Slave7_T4 + +-- AMS_Slave7_T5 + +-- AMS_Slave7_T6 + +-- AMS_Slave7_T7 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log6 + Id: 0x676 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T8 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T9 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T10 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_T11 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T12 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T13 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T14 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T15 + + Signal tree: + + -- {root} + +-- AMS_Slave7_T8 + +-- AMS_Slave7_T9 + +-- AMS_Slave7_T10 + +-- AMS_Slave7_T11 + +-- AMS_Slave7_T12 + +-- AMS_Slave7_T13 + +-- AMS_Slave7_T14 + +-- AMS_Slave7_T15 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log7 + Id: 0x677 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T16 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T17 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T18 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_T19 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T20 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T21 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T22 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T23 + + Signal tree: + + -- {root} + +-- AMS_Slave7_T16 + +-- AMS_Slave7_T17 + +-- AMS_Slave7_T18 + +-- AMS_Slave7_T19 + +-- AMS_Slave7_T20 + +-- AMS_Slave7_T21 + +-- AMS_Slave7_T22 + +-- AMS_Slave7_T23 + + ------------------------------------------------------------------------ + + Name: AMS_Slave7_Log8 + Id: 0x678 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T24 + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T25 + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T26 + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Slave7_T27 + t +---+---+---+---+---+---+---+---+ + e 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T28 + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T29 + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T30 + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Slave7_T31 + + Signal tree: + + -- {root} + +-- AMS_Slave7_T24 + +-- AMS_Slave7_T25 + +-- AMS_Slave7_T26 + +-- AMS_Slave7_T27 + +-- AMS_Slave7_T28 + +-- AMS_Slave7_T29 + +-- AMS_Slave7_T30 + +-- AMS_Slave7_T31 + + ------------------------------------------------------------------------ + + Name: ACU_TX + Id: 0xe0 + Length: 4 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-x|<---------x|<---------x| + +---+---+---+---+---+---+---+---+ + | | | +-- ACU_AS_Mission + | | +-- ACU_AS_State + | +-- ACU_Power_Off + B +-- ACU_Reset + y +---+---+---+---+---+---+---+---+ + t 1 | | |<-------------x| |<-x| + e +---+---+---+---+---+---+---+---+ + | +-- ACU_AllowTorque + +-- ABX_ConMon_Error + +---+---+---+---+---+---+---+---+ + 2 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 3 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ACU_AS_Mission + +-- ACU_AS_State + +-- ACU_Power_Off + +-- ACU_Reset + +-- ACU_AllowTorque + +-- ABX_ConMon_Error + + ------------------------------------------------------------------------ + + Name: AMS_Slave7Status + Id: 0x87 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave6Status + Id: 0x86 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave5Status + Id: 0x85 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave4Status + Id: 0x84 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave3Status + Id: 0x83 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave2Status + Id: 0x82 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: AMS_Slave1Status + Id: 0x81 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_Sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_Sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: ABX_Misc + Id: 0x109 + Length: 7 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Distance_session + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Distance_total + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_LV_SoC + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_Distance_session + +-- ABX_Distance_total + +-- ABX_LV_SoC + + ------------------------------------------------------------------------ + + Name: AMS_Error + Id: 0xc + Length: 2 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- AMS_Error_Kind + t +---+---+---+---+---+---+---+---+ + e 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_Error_Arg + + Signal tree: + + -- {root} + +-- AMS_Error_Kind + +-- AMS_Error_Arg + + Signal choices: + + AMS_Error_Kind + 0 None + 1 Slave Timeout + 2 Slave Panic + 3 Shunt Timeout + 4 Shunt Overcurrent + 5 Shunt Overtemperature + + ------------------------------------------------------------------------ + + Name: ABX_CoolingSys_Internal + Id: 0x108 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_T_InvL + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- ABX_CS_T_InvR + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_T_MotL + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_T_MotR + + Signal tree: + + -- {root} + +-- ABX_CS_T_InvL + +-- ABX_CS_T_InvR + +-- ABX_CS_T_MotL + +-- ABX_CS_T_MotR + + ------------------------------------------------------------------------ + + Name: ABX_CoolingSys_MotInv + Id: 0x107 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_P_InvIn + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_P_MotLIn + +---+---+---+---+---+---+---+---+ + 2 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 3 |<-----------------------------x| + y +---+---+---+---+---+---+---+---+ + t +-- ABX_CS_P_MotRIn + e +---+---+---+---+---+---+---+---+ + 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |----------------------x|<------| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_T_InvIn + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_CS_T_MotIn + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- ABX_CS_P_InvIn + +-- ABX_CS_P_MotLIn + +-- ABX_CS_P_MotRIn + +-- ABX_CS_T_InvIn + +-- ABX_CS_T_MotIn + + ------------------------------------------------------------------------ + + Name: ABX_BrakeT + Id: 0x105 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_BrakeT_FL + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- ABX_BrakeT_FR + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_BrakeT_RL + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_BrakeT_RR + + Signal tree: + + -- {root} + +-- ABX_BrakeT_FL + +-- ABX_BrakeT_FR + +-- ABX_BrakeT_RL + +-- ABX_BrakeT_RR + + ------------------------------------------------------------------------ + + Name: ABX_Wheelspeed + Id: 0x104 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Wheelspeed_FL + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- ABX_Wheelspeed_FR + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Wheelspeed_RL + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Wheelspeed_RR + + Signal tree: + + -- {root} + +-- ABX_Wheelspeed_FL + +-- ABX_Wheelspeed_FR + +-- ABX_Wheelspeed_RL + +-- ABX_Wheelspeed_RR + + ------------------------------------------------------------------------ + + Name: ABX_Dampers + Id: 0x103 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_DamperHeave_F + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- ABX_DamperRoll_F + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_DamperHeave_R + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_DamperRoll_R + + Signal tree: + + -- {root} + +-- ABX_DamperHeave_F + +-- ABX_DamperRoll_F + +-- ABX_DamperHeave_R + +-- ABX_DamperRoll_R + + ------------------------------------------------------------------------ + + Name: ABX_Timings + Id: 0x102 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Laptime_best + +---+---+---+---+---+---+---+---+ + 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- ABX_Laptime_last + t +---+---+---+---+---+---+---+---+ + e 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Sectortime_best + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_Sectortime_last + + Signal tree: + + -- {root} + +-- ABX_Laptime_best + +-- ABX_Laptime_last + +-- ABX_Sectortime_best + +-- ABX_Sectortime_last + + ------------------------------------------------------------------------ + + Name: ABX_Driver + Id: 0x101 + Length: 8 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_APPS_percent + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 2 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- ABX_BrakeP_F + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + +---+---+---+---+---+---+---+---+ + B +-- ABX_BrakeP_R + y +---+---+---+---+---+---+---+---+ + t 4 |<-----------------------------x| + e +---+---+---+---+---+---+---+---+ + +-- ABX_Steering_Angle + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Speed + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Lapcounter + +---+---+---+---+---+---+---+---+ + 7 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- ABX_Sectorcounter + + Signal tree: + + -- {root} + +-- ABX_APPS_percent + +-- ABX_BrakeP_F + +-- ABX_BrakeP_R + +-- ABX_Steering_Angle + +-- ABX_Speed + +-- ABX_Lapcounter + +-- ABX_Sectorcounter + + ------------------------------------------------------------------------ + + Name: TTS_Config + Id: 0x700 + Length: 1 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + B 0 | | | | | | |<-----x| + y +---+---+---+---+---+---+---+---+ + t +-- TTS_NewID + e + + Signal tree: + + -- {root} + +-- TTS_NewID + + ------------------------------------------------------------------------ + + Name: TTS_RR + Id: 0x704 + Length: 8 bytes + Cycle time: - ms + Senders: TTS_RR + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RR_Inner + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RR_CenterIn + +---+---+---+---+---+---+---+---+ + B 3 |------------------------------x| + y +---+---+---+---+---+---+---+---+ + t 4 |--------------x|<--------------| + e +---+---+---+---+---+---+---+---+ + +-- TTS_RR_Center + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RR_CenterOut + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RR_Outer + + Signal tree: + + -- {root} + +-- TTS_RR_Inner + +-- TTS_RR_CenterIn + +-- TTS_RR_Center + +-- TTS_RR_CenterOut + +-- TTS_RR_Outer + + ------------------------------------------------------------------------ + + Name: TTS_RL + Id: 0x703 + Length: 8 bytes + Cycle time: - ms + Senders: TTS_RL + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RL_Outer + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RL_CenterOut + +---+---+---+---+---+---+---+---+ + B 3 |------------------------------x| + y +---+---+---+---+---+---+---+---+ + t 4 |--------------x|<--------------| + e +---+---+---+---+---+---+---+---+ + +-- TTS_RL_Center + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RL_CenterIn + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_RL_Inner + + Signal tree: + + -- {root} + +-- TTS_RL_Outer + +-- TTS_RL_CenterOut + +-- TTS_RL_Center + +-- TTS_RL_CenterIn + +-- TTS_RL_Inner + + ------------------------------------------------------------------------ + + Name: TTS_FR + Id: 0x702 + Length: 8 bytes + Cycle time: - ms + Senders: TTS_FR + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FR_Inner + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FR_CenterIn + +---+---+---+---+---+---+---+---+ + B 3 |------------------------------x| + y +---+---+---+---+---+---+---+---+ + t 4 |--------------x|<--------------| + e +---+---+---+---+---+---+---+---+ + +-- TTS_FR_Center + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FR_CenterOut + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FR_Outer + + Signal tree: + + -- {root} + +-- TTS_FR_Inner + +-- TTS_FR_CenterIn + +-- TTS_FR_Center + +-- TTS_FR_CenterOut + +-- TTS_FR_Outer + + ------------------------------------------------------------------------ + + Name: TTS_FL + Id: 0x701 + Length: 8 bytes + Cycle time: - ms + Senders: TTS_FL + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FL_Outer + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FL_CenterOut + +---+---+---+---+---+---+---+---+ + B 3 |------------------------------x| + y +---+---+---+---+---+---+---+---+ + t 4 |--------------x|<--------------| + e +---+---+---+---+---+---+---+---+ + +-- TTS_FL_Center + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FL_CenterIn + +---+---+---+---+---+---+---+---+ + 6 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 7 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + +-- TTS_FL_Inner + + Signal tree: + + -- {root} + +-- TTS_FL_Outer + +-- TTS_FL_CenterOut + +-- TTS_FL_Center + +-- TTS_FL_CenterIn + +-- TTS_FL_Inner + + ------------------------------------------------------------------------ + + Name: STW_Param_Set + Id: 0x402 + Length: 5 bytes + Cycle time: - ms + Senders: STW + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- STW_Param_Type + +---+---+---+---+---+---+---+---+ + 1 |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| + +---+---+---+---+---+---+---+---+ + 2 |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| + +---+---+---+---+---+---+---+---+ + B 3 |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| + y +---+---+---+---+---+---+---+---+ + t 4 |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| + e +---+---+---+---+---+---+---+---+ + +-- STW_Param_ASRI + +-- STW_Param_ASRON + +-- STW_Param_ASRP + +-- STW_Param_BBal + +-- STW_Param_EnduPowerLimit + +-- STW_Param_MUMAX + +-- STW_Param_SLIPREF + +-- STW_Param_Test3 + +-- STW_Param_Test4 + + Signal tree: + + -- {root} + +-- STW_Param_Type + +-- BrakeBalance (0) + | +-- STW_Param_BBal + +-- TractionControl1 (1) + | +-- STW_Param_SLIPREF + +-- TractionControl2 (2) + | +-- STW_Param_MUMAX + +-- TorqueMap (3) + | +-- STW_Param_ASRP + +-- Test1 (4) + | +-- STW_Param_ASRON + +-- Test2 (5) + | +-- STW_Param_ASRI + +-- Test3 (6) + | +-- STW_Param_EnduPowerLimit + +-- Test4 (7) + | +-- STW_Param_Test3 + +-- 8 + +-- STW_Param_Test4 + + Signal choices: + + STW_Param_Type + 0 BrakeBalance + 1 TractionControl1 + 2 TractionControl2 + 3 TorqueMap + 4 Test1 + 5 Test2 + 6 Test3 + 7 Test4 + + STW_Param_ASRON + 0 OFF + 1 ON + + ------------------------------------------------------------------------ + + Name: AMS_Slave0Status + Id: 0x80 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Error + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_Temp_sensor + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y 3 |------------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- AMS_SlaveStatus_MinCellVolt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxCellVolt + +---+---+---+---+---+---+---+---+ + 6 | | | | |<--------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlaveStatus_MaxTemp + + Signal tree: + + -- {root} + +-- AMS_SlaveStatus_Error + +-- AMS_SlaveStatus_ID + +-- AMS_SlaveStatus_Temp_sensor + +-- AMS_SlaveStatus_MinCellVolt + +-- AMS_SlaveStatus_MaxCellVolt + +-- AMS_SlaveStatus_MaxTemp + + ------------------------------------------------------------------------ + + Name: SSU_Message + Id: 0x500 + Length: 4 bytes + Cycle time: - ms + Senders: SSU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 1 |<------------------------------| + B +---+---+---+---+---+---+---+---+ + y +-- SSU_AirPressure + t +---+---+---+---+---+---+---+---+ + e 2 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 3 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- SSU_AirTemp + + Signal tree: + + -- {root} + +-- SSU_AirPressure + +-- SSU_AirTemp + + ------------------------------------------------------------------------ + + Name: AMS_Status + Id: 0xa + Length: 6 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-------------------------x| + +---+---+---+---+---+---+---+---+ + | +-- AMS_State + +-- SDC_Closed + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + B +-- SOC + y +---+---+---+---+---+---+---+---+ + t 2 |<------------------------------| + e +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Min_cell_volt + +---+---+---+---+---+---+---+---+ + 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Max_cell_temp + + Signal tree: + + -- {root} + +-- AMS_State + +-- SDC_Closed + +-- SOC + +-- Min_cell_volt + +-- Max_cell_temp + + Signal choices: + + AMS_State + 0 TS_INACTIVE + 1 TS_ACTIVE + 2 TS_PRECHARGE + 3 TS_DISCHARGE + 4 TS_ERROR + + ------------------------------------------------------------------------ + + Name: AMS_SlavePanic + Id: 0x9 + Length: 8 bytes + Cycle time: - ms + Senders: AMS + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlavePanic_SlaveID + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlavePanic_Kind + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- AMS_SlavePanic_Arg + +---+---+---+---+---+---+---+---+ + 6 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 7 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- AMS_SlavePanic_SlaveID + +-- AMS_SlavePanic_Kind + +-- AMS_SlavePanic_Arg + + Signal choices: + + AMS_SlavePanic_Kind + 0 Overtemperature + 1 Undertemperature + 2 Overvoltage + 3 Undervoltage + 4 Too_few_working_temperature_sensors + 5 Open_cell_connection + + ------------------------------------------------------------------------ + + Name: AMS_In + Id: 0xb + Length: 1 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + B 0 |<---------------------x|<-x|<-x| + y +---+---+---+---+---+---+---+---+ + t | | +-- TS_activate + e | +-- Inverters_discharged + +-- Lap_Number + + Signal tree: + + -- {root} + +-- TS_activate + +-- Inverters_discharged + +-- Lap_Number + + ------------------------------------------------------------------------ + + Name: Shunt_Current + Id: 0x521 + Length: 6 bytes + Cycle time: - ms + Senders: Shunt + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Shunt_Current + + Signal tree: + + -- {root} + +-- Shunt_Current + + ------------------------------------------------------------------------ + + Name: Shunt_Voltage1 + Id: 0x522 + Length: 6 bytes + Cycle time: - ms + Senders: Shunt + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Shunt_Voltage1 + + Signal tree: + + -- {root} + +-- Shunt_Voltage1 + + ------------------------------------------------------------------------ + + Name: Shunt_Voltage2 + Id: 0x523 + Length: 6 bytes + Cycle time: - ms + Senders: Shunt + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Shunt_Voltage2 + + Signal tree: + + -- {root} + +-- Shunt_Voltage2 + + ------------------------------------------------------------------------ + + Name: Shunt_Voltage3 + Id: 0x524 + Length: 6 bytes + Cycle time: - ms + Senders: Shunt + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Shunt_Voltage3 + + Signal tree: + + -- {root} + +-- Shunt_Voltage3 + + ------------------------------------------------------------------------ + + Name: Shunt_Temperature + Id: 0x525 + Length: 6 bytes + Cycle time: - ms + Senders: Shunt + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + B 2 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 3 |-------------------------------| + e +---+---+---+---+---+---+---+---+ + 4 |-------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- Shunt_Temperature + + Signal tree: + + -- {root} + +-- Shunt_Temperature + + ------------------------------------------------------------------------ + + Name: SDCL_tx + Id: 0x10 + Length: 4 bytes + Cycle time: - ms + Senders: SDCL + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | |<-x|<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | | +-- asms_state + | | | | | +-- sdc_state_1 + | | | | +-- sdc_state_2 + | | | +-- sdc_state_3 + | | +-- heartbeat_ok + | +-- sdcl_sdc_ready + B +-- ts_start_muxed + y +---+---+---+---+---+---+---+---+ + t 1 | | |<---------x|<-x|<-x|<-x| + e +---+---+---+---+---+---+---+---+ + | | | +-- latch_init_open + | | +-- latch_closed + | +-- latch_reopened + +-- as_mission + +---+---+---+---+---+---+---+---+ + 2 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 3 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- asms_state + +-- sdc_state_1 + +-- sdc_state_2 + +-- sdc_state_3 + +-- heartbeat_ok + +-- sdcl_sdc_ready + +-- ts_start_muxed + +-- latch_init_open + +-- latch_closed + +-- latch_reopened + +-- as_mission + + ------------------------------------------------------------------------ + + Name: SDCL_rx + Id: 0xf + Length: 3 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | |<---------x| |<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | +-- as_close_sdc + B | | +-- sdcl_heartbeat + y | +-- asb_error + t +-- as_mission + e +---+---+---+---+---+---+---+---+ + 1 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 2 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + + Signal tree: + + -- {root} + +-- as_close_sdc + +-- sdcl_heartbeat + +-- asb_error + +-- as_mission + + ------------------------------------------------------------------------ + + Name: PDU_Command + Id: 0xc8 + Length: 7 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-x|<-x| |<-x|<-x|<-x| | + +---+---+---+---+---+---+---+---+ + | | | | | +-- PDU_inverter_rx + | | | | +-- PDU_servos_regler_rx + | | | +-- PDU_ACU_rx + | | +-- PDU_lidar_rx + | +-- PDU_shutdown_circuit_rx + +-- PDU_alwayson_rx + +---+---+---+---+---+---+---+---+ + 1 |<-x|<-x|<-x|<-x|<-x| |<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | | +-- PDU_steering_rx + | | | | | +-- PDU_aggregat_rx + | | | | +-- PDU_cs_valve_rx + | | | +-- PDU_ebs_valve_2_rx + | | +-- PDU_ebs_valve_1_rx + B | +-- PDU_servo_rx + y +-- PDU_misc_rx + t +---+---+---+---+---+---+---+---+ + e 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_radiator_fans_rx + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_TSAC_fans_rx + +---+---+---+---+---+---+---+---+ + 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_aggregat_rx + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_pump_rx + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_checksum_rx + + Signal tree: + + -- {root} + +-- PDU_alwayson_rx + +-- PDU_shutdown_circuit_rx + +-- PDU_lidar_rx + +-- PDU_ACU_rx + +-- PDU_servos_regler_rx + +-- PDU_inverter_rx + +-- PDU_misc_rx + +-- PDU_servo_rx + +-- PDU_ebs_valve_1_rx + +-- PDU_ebs_valve_2_rx + +-- PDU_cs_valve_rx + +-- PDU_aggregat_rx + +-- PDU_steering_rx + +-- PDU_PWM_radiator_fans_rx + +-- PDU_PWM_TSAC_fans_rx + +-- PDU_PWM_aggregat_rx + +-- PDU_PWM_pump_rx + +-- PDU_checksum_rx + + ------------------------------------------------------------------------ + + Name: PDU_Response + Id: 0xc9 + Length: 7 bytes + Cycle time: - ms + Senders: PDU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-x|<-x| |<-x|<-x|<-x| | + +---+---+---+---+---+---+---+---+ + | | | | | +-- PDU_inverter_tx + | | | | +-- PDU_servos_regler_tx + | | | +-- PDU_ACU_tx + | | +-- PDU_lidar_tx + | +-- PDU_shutdown_circuit_tx + +-- PDU_alwayson_tx + +---+---+---+---+---+---+---+---+ + 1 |<-x|<-x|<-x|<-x|<-x| |<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | | +-- PDU_steering_tx + | | | | | +-- PDU_aggregat_tx + | | | | +-- PDU_cs_valve_tx + | | | +-- PDU_ebs_valve_2_tx + | | +-- PDU_ebs_valve_1_tx + B | +-- PDU_servo_tx + y +-- PDU_misc_tx + t +---+---+---+---+---+---+---+---+ + e 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_TSAC_fans + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_radiatot_fans_tx + +---+---+---+---+---+---+---+---+ + 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_aggregat + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_PWM_pump + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_checksum_tx + + Signal tree: + + -- {root} + +-- PDU_alwayson_tx + +-- PDU_shutdown_circuit_tx + +-- PDU_lidar_tx + +-- PDU_ACU_tx + +-- PDU_servos_regler_tx + +-- PDU_inverter_tx + +-- PDU_misc_tx + +-- PDU_servo_tx + +-- PDU_ebs_valve_1_tx + +-- PDU_ebs_valve_2_tx + +-- PDU_cs_valve_tx + +-- PDU_aggregat_tx + +-- PDU_steering_tx + +-- PDU_PWM_TSAC_fans + +-- PDU_PWM_radiatot_fans_tx + +-- PDU_PWM_aggregat + +-- PDU_PWM_pump + +-- PDU_checksum_tx + + ------------------------------------------------------------------------ + + Name: TxPDO + Id: 0x202 + Length: 6 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | |<-x|<-x|<-x|<-x|<-x| | + +---+---+---+---+---+---+---+---+ + | | | | +-- pdm_powersupply_less_8v + | | | +-- pdm_powersupply_greater_32v + | | +-- pdm_canbus_timeout + | +-- pdm_canbus_startupmissing + +-- pdm_canbus_statewarning + +---+---+---+---+---+---+---+---+ + 1 | | |<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | +-- pdm_analoginput_middleposition + | | | | +-- pdm_analoginput_cablebreak + | | | +-- pdm_analoginput_shortcircuit + | | +-- pdm_analoginput_currentoverload + B | +-- pdm_temperature_warning + y +-- pdm_temperature_shutdown + t +---+---+---+---+---+---+---+---+ + e 2 | | |<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | +-- pdm_output1_controllerrange + | | | | +-- pdm_output2_controllerrange + | | | +-- pdm_output1_cablebreak + | | +-- pdm_output2_cablebreak + | +-- pdm_output1_shortcircuit + +-- pdm_output2_shortcircuit + +---+---+---+---+---+---+---+---+ + 3 | | | | | | | | | + +---+---+---+---+---+---+---+---+ + 4 |------------------------------x| + +---+---+---+---+---+---+---+---+ + 5 |<------------------------------| + +---+---+---+---+---+---+---+---+ + +-- PDM_analoginput + + Signal tree: + + -- {root} + +-- pdm_powersupply_less_8v + +-- pdm_powersupply_greater_32v + +-- pdm_canbus_timeout + +-- pdm_canbus_startupmissing + +-- pdm_canbus_statewarning + +-- pdm_analoginput_middleposition + +-- pdm_analoginput_cablebreak + +-- pdm_analoginput_shortcircuit + +-- pdm_analoginput_currentoverload + +-- pdm_temperature_warning + +-- pdm_temperature_shutdown + +-- pdm_output1_controllerrange + +-- pdm_output2_controllerrange + +-- pdm_output1_cablebreak + +-- pdm_output2_cablebreak + +-- pdm_output1_shortcircuit + +-- pdm_output2_shortcircuit + +-- PDM_analoginput + + ------------------------------------------------------------------------ + + Name: AS_Mission_fb + Id: 0x410 + Length: 1 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + B 0 | | | | | |<---------x| + y +---+---+---+---+---+---+---+---+ + t +-- Mission_selection + e + + Signal tree: + + -- {root} + +-- Mission_selection + + Signal choices: + + Mission_selection + 1 MissionSelection_acceleration + 2 MissionSelection_skidpad + 3 MissionSelection_trackdrive + 4 MissionSelection_braketest + 5 MissionSelection_inspection + 6 MissionSelection_autocross + 7 MissionSelection_manual + + ------------------------------------------------------------------------ + + Name: STW_mission_selected + Id: 0x400 + Length: 1 bytes + Cycle time: - ms + Senders: STW + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + B 0 | | | | | |<---------x| + y +---+---+---+---+---+---+---+---+ + t +-- Mission_selection + e + + Signal tree: + + -- {root} + +-- Mission_selection + + Signal choices: + + Mission_selection + 1 MissionSelection_acceleration + 2 MissionSelection_skidpad + 3 MissionSelection_trackdrive + 4 MissionSelection_braketest + 5 MissionSelection_inspection + 6 MissionSelection_autocross + 7 MissionSelection_manual + + ------------------------------------------------------------------------ + + Name: EPSC_out + Id: 0x321 + Length: 8 bytes + Cycle time: - ms + Senders: EPSC + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_measured_steering_angle + +---+---+---+---+---+---+---+---+ + 2 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_measured_current + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- EPSC_measured_voltage + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |--------------x|<--------------| + +---+---+---+---+---+---+---+---+ + +-- EPSC_measured_rpm + +---+---+---+---+---+---+---+---+ + 6 |----------------------x|<------| + +---+---+---+---+---+---+---+---+ + +-- EPSC_measured_temperature + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_measured_internal_temp + + Signal tree: + + -- {root} + +-- EPSC_measured_steering_angle + +-- EPSC_measured_current + +-- EPSC_measured_voltage + +-- EPSC_measured_rpm + +-- EPSC_measured_temperature + +-- EPSC_measured_internal_temp + + ------------------------------------------------------------------------ + + Name: EPSC_Steering_In + Id: 0x123 + Length: 2 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + B 0 |<------------------------------| + y +---+---+---+---+---+---+---+---+ + t 1 |------------------------------x| + e +---+---+---+---+---+---+---+---+ + +-- EPSC_desired_steering_angle + + Signal tree: + + -- {root} + +-- EPSC_desired_steering_angle + + ------------------------------------------------------------------------ + + Name: STW_buttons + Id: 0x401 + Length: 1 bytes + Cycle time: - ms + Senders: STW + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 | | | |<-x|<-x|<-x|<-x|<-x| + B +---+---+---+---+---+---+---+---+ + y | | | | +-- STW_button_Enter + t | | | +-- STW_button_DRS + e | | +-- STW_button_right + | +-- STW_button_left + +-- STW_button_PG + + Signal tree: + + -- {root} + +-- STW_button_Enter + +-- STW_button_DRS + +-- STW_button_right + +-- STW_button_left + +-- STW_button_PG + + ------------------------------------------------------------------------ + + Name: STW_status + Id: 0x412 + Length: 6 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-------------x| |<---------x| + +---+---+---+---+---+---+---+---+ + | +-- AS_State_STW + +-- R2D_Progress + +---+---+---+---+---+---+---+---+ + 1 | | |<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | +-- InvL_ready + | | | | +-- InvR_ready + | | | +-- SDC_BFL + | | +-- SDC_BRL + | +-- SDC_ACC + +-- SDC_HVB + +---+---+---+---+---+---+---+---+ + 2 | | |<---------------------x| + +---+---+---+---+---+---+---+---+ + +-- Lap_Count + B +---+---+---+---+---+---+---+---+ + y 3 |<-----------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- iniChk_state + +---+---+---+---+---+---+---+---+ + 4 |<-x|<-x|<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | | | +-- ERR_SDC + | | | | | | +-- ERR_AMS + | | | | | +-- ERR_PDU + | | | | +-- ERR_IniChk + | | | +-- ERR_ConMon + | | +-- ERR_SCS + | +-- ERR_sBSPD + +-- ERR_APPSp + +---+---+---+---+---+---+---+---+ + 5 | | | |<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | +-- ERR_AS + | | | +-- ERR_ROS + | | +-- ERR_RES + | +-- ERR_InvL + +-- ERR_InvR + + Signal tree: + + -- {root} + +-- AS_State_STW + +-- R2D_Progress + +-- InvL_ready + +-- InvR_ready + +-- SDC_BFL + +-- SDC_BRL + +-- SDC_ACC + +-- SDC_HVB + +-- Lap_Count + +-- iniChk_state + +-- ERR_SDC + +-- ERR_AMS + +-- ERR_PDU + +-- ERR_IniChk + +-- ERR_ConMon + +-- ERR_SCS + +-- ERR_sBSPD + +-- ERR_APPSp + +-- ERR_AS + +-- ERR_ROS + +-- ERR_RES + +-- ERR_InvL + +-- ERR_InvR + + Signal choices: + + AS_State_STW + 0 AS_Off + 1 AS_Manual + 2 AS_Ready + 3 AS_Driving + 4 AS_Finished + 5 AS_Emergency + + R2D_Progress + 0 R2D_None + 1 R2D_TSMS + 2 R2D_TSActive + 3 R2D_Resetting_Nodes + 4 R2D_Resetting_Comms + 5 R2D_Waiting_Init + 6 R2D_Init_Stage1 + 7 R2D_Init_Stage2 + 15 R2D_Init_Success + + iniChk_state + 0 Start + 1 WD_Check + 2 WD_OK + 3 ASB_Check_1 + 4 ASB_Check_2 + 5 Wait_TS + 6 EBS_Check_A + 7 EBS_Check_B + 8 Done + 9 Error + + ------------------------------------------------------------------------ + + Name: PDU_Current_1 + Id: 0xca + Length: 8 bytes + Cycle time: - ms + Senders: PDU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_alwayson_curr + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- PDU_misc_curr + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_inverter_curr + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_shutdown_circuit_curr + + Signal tree: + + -- {root} + +-- PDU_alwayson_curr + +-- PDU_misc_curr + +-- PDU_inverter_curr + +-- PDU_shutdown_circuit_curr + + ------------------------------------------------------------------------ + + Name: PDU_Current_2 + Id: 0xcb + Length: 8 bytes + Cycle time: - ms + Senders: PDU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_tsac__fans_curr + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- PDU_pump_curr + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_aggregat_curr + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_steering_curr + + Signal tree: + + -- {root} + +-- PDU_tsac__fans_curr + +-- PDU_pump_curr + +-- PDU_aggregat_curr + +-- PDU_steering_curr + + ------------------------------------------------------------------------ + + Name: PDU_Current_3 + Id: 0xcc + Length: 8 bytes + Cycle time: - ms + Senders: PDU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_ebs_valve_1_curr + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- PDU_ebs_valve_2_curr + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_mode_cs_valve_curr + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_mode_gss_curr + + Signal tree: + + -- {root} + +-- PDU_ebs_valve_1_curr + +-- PDU_ebs_valve_2_curr + +-- PDU_mode_cs_valve_curr + +-- PDU_mode_gss_curr + + ------------------------------------------------------------------------ + + Name: PDU_Current_4 + Id: 0xcd + Length: 8 bytes + Cycle time: - ms + Senders: PDU + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 1 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_radiator_fans_curr + +---+---+---+---+---+---+---+---+ + 2 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 3 |------------------------------x| + B +---+---+---+---+---+---+---+---+ + y +-- PDU_ACU_curr + t +---+---+---+---+---+---+---+---+ + e 4 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 5 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_servos_curr + +---+---+---+---+---+---+---+---+ + 6 |<------------------------------| + +---+---+---+---+---+---+---+---+ + 7 |------------------------------x| + +---+---+---+---+---+---+---+---+ + +-- PDU_lidar_curr + + Signal tree: + + -- {root} + +-- PDU_radiator_fans_curr + +-- PDU_ACU_curr + +-- PDU_servos_curr + +-- PDU_lidar_curr + + ------------------------------------------------------------------------ + + Name: EPSC_Config_In + Id: 0x124 + Length: 7 bytes + Cycle time: - ms + Senders: ABX + Layout: + + Bit + + 7 6 5 4 3 2 1 0 + +---+---+---+---+---+---+---+---+ + 0 |<-x|<-x|<-x|<-x|<-x|<-x|<-x|<-x| + +---+---+---+---+---+---+---+---+ + | | | | | | | +-- EPSC_flag7 + | | | | | | +-- EPSC_flag6 + | | | | | +-- EPSC_flag5 + | | | | +-- EPSC_flag4 + | | | +-- EPSC_flag3 + | | +-- EPSC_mode + | +-- EPSC_should_change_mode + +-- EPSC_should_calibrate + +---+---+---+---+---+---+---+---+ + 1 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_Kp_pos + B +---+---+---+---+---+---+---+---+ + y 2 |<-----------------------------x| + t +---+---+---+---+---+---+---+---+ + e +-- EPSC_Ki_pos + +---+---+---+---+---+---+---+---+ + 3 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_Kp_rpm + +---+---+---+---+---+---+---+---+ + 4 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_Ki_rpm + +---+---+---+---+---+---+---+---+ + 5 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_Kp_curr + +---+---+---+---+---+---+---+---+ + 6 |<-----------------------------x| + +---+---+---+---+---+---+---+---+ + +-- EPSC_Ki_curr + + Signal tree: + + -- {root} + +-- EPSC_should_calibrate + +-- EPSC_should_change_mode + | +-- 1 + | +-- EPSC_mode + | +-- EPSC_Kp_pos + | +-- EPSC_Ki_pos + | +-- EPSC_Kp_rpm + | +-- EPSC_Ki_rpm + | +-- EPSC_Kp_curr + | +-- EPSC_Ki_curr + +-- EPSC_flag3 + +-- EPSC_flag4 + +-- EPSC_flag5 + +-- EPSC_flag6 + +-- EPSC_flag7 + + ------------------------------------------------------------------------ diff --git a/ros2_ws/src/ft_can_transceiver_lib/include/.DS_Store b/ros2_ws/src/ft_can_transceiver_lib/include/.DS_Store new file mode 100644 index 0000000..d3b0eae Binary files /dev/null and b/ros2_ws/src/ft_can_transceiver_lib/include/.DS_Store differ diff --git a/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h new file mode 100644 index 0000000..1899d03 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h @@ -0,0 +1,24612 @@ +/** + * @file can1.h + * + * @brief This header file was generated by cantools version 40.2.3 Sun Jul 20 11:04:58 2025. + * + * @copyright Copyright (c) 2018-2019 Erik Moqvist + * + * @par License + * The MIT License (MIT) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef CAN1_H +#define CAN1_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#ifndef EINVAL +# define EINVAL 22 +#endif + +/* Frame ids. */ +#define CAN1_INVERTER_VELOCITY_FRAME_ID (0x776u) +#define CAN1_INVERTER_ERRORS_WARNINGS_FRAME_ID (0x780u) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_FRAME_ID (0x779u) +#define CAN1_INVERTER_TEMPERATUR_FRAME_ID (0x778u) +#define CAN1_INVERTER_TORQUE_WANTED_FRAME_ID (0x777u) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_FRAME_ID (0x733u) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_FRAME_ID (0x731u) +#define CAN1_SDO_TELEMETRIE_TX_FRAME_ID (0x732u) +#define CAN1_LAPTOP_SDO_NODE_FRAME_ID (0x730u) +#define CAN1_X_SENS_LONG_LAT_FRAME_ID (0x713u) +#define CAN1_X_SENS_RATEOFTURN_FRAME_ID (0x712u) +#define CAN1_X_SENS_ACCELERATION_FRAME_ID (0x711u) +#define CAN1_X_SENS_VELOCITY_FRAME_ID (0x714u) +#define CAN1_TELEMETRIE_FRAME_ID (0x720u) +#define CAN1_OVERRIDE_POWERMAP_FRAME_ID (0x725u) +#define CAN1_OVERRIDE_LAPTOP_2_FRAME_ID (0x724u) +#define CAN1_OVERRIDE_EPSC_COOLING_FRAME_ID (0x723u) +#define CAN1_OVERRIDE_LAPTOP_FRAME_ID (0x721u) +#define CAN1_APPS_OVERRIDE_FRAME_ID (0x722u) +#define CAN1_FTCU_DAMPER_FRAME_ID (0x103u) +#define CAN1_FTCU_PARAM_CONFIRM_FRAME_ID (0x413u) +#define CAN1_SENSORNODE_F_10_HZ_FRAME_ID (0xd1u) +#define CAN1_SENSORNODE_F_100_HZ_1_FRAME_ID (0xd3u) +#define CAN1_SENSORNODE_F_100_HZ_2_FRAME_ID (0xd5u) +#define CAN1_SENSORNODE_F_1K_HZ_FRAME_ID (0xd7u) +#define CAN1_SENSORNODE_R_10_HZ_FRAME_ID (0xd2u) +#define CAN1_SENSORNODE_R_100_HZ_FRAME_ID (0xd4u) +#define CAN1_SENSORNODE_R_1K_HZ_FRAME_ID (0xd8u) +#define CAN1_PWM_DUTY_CYCLE_FRAME_ID (0xdcu) +#define CAN1_PWM_CONFIG_FRAME_ID (0xddu) +#define CAN1_DASHBOARD_IN_FRAME_ID (0x420u) +#define CAN1_AMS_SLAVE1_STATUS_FRAME_ID (0x81u) +#define CAN1_AMS_SLAVE2_LOG0_FRAME_ID (0x620u) +#define CAN1_AMS_SLAVE2_LOG1_FRAME_ID (0x621u) +#define CAN1_AMS_SLAVE2_LOG2_FRAME_ID (0x622u) +#define CAN1_AMS_SLAVE2_LOG3_FRAME_ID (0x623u) +#define CAN1_AMS_SLAVE2_LOG4_FRAME_ID (0x624u) +#define CAN1_AMS_SLAVE2_LOG5_FRAME_ID (0x625u) +#define CAN1_AMS_SLAVE5_LOG6_FRAME_ID (0x656u) +#define CAN1_AMS_SLAVE4_LOG6_FRAME_ID (0x646u) +#define CAN1_AMS_SLAVE3_LOG6_FRAME_ID (0x636u) +#define CAN1_AMS_SLAVE2_LOG6_FRAME_ID (0x626u) +#define CAN1_AMS_SLAVE1_LOG6_FRAME_ID (0x616u) +#define CAN1_AMS_SLAVE5_LOG5_FRAME_ID (0x655u) +#define CAN1_AMS_SLAVE4_LOG5_FRAME_ID (0x645u) +#define CAN1_AMS_SLAVE3_LOG5_FRAME_ID (0x635u) +#define CAN1_AMS_SLAVE1_LOG5_FRAME_ID (0x615u) +#define CAN1_AMS_SLAVE5_LOG4_FRAME_ID (0x654u) +#define CAN1_AMS_SLAVE4_LOG4_FRAME_ID (0x644u) +#define CAN1_AMS_SLAVE3_LOG4_FRAME_ID (0x634u) +#define CAN1_AMS_SLAVE1_LOG4_FRAME_ID (0x614u) +#define CAN1_AMS_SLAVE5_LOG3_FRAME_ID (0x653u) +#define CAN1_AMS_SLAVE4_LOG3_FRAME_ID (0x643u) +#define CAN1_AMS_SLAVE3_LOG3_FRAME_ID (0x633u) +#define CAN1_AMS_SLAVE1_LOG3_FRAME_ID (0x613u) +#define CAN1_AMS_SLAVE5_LOG2_FRAME_ID (0x652u) +#define CAN1_AMS_SLAVE4_LOG2_FRAME_ID (0x642u) +#define CAN1_AMS_SLAVE3_LOG2_FRAME_ID (0x632u) +#define CAN1_AMS_SLAVE1_LOG2_FRAME_ID (0x612u) +#define CAN1_AMS_SLAVE5_LOG1_FRAME_ID (0x651u) +#define CAN1_AMS_SLAVE4_LOG1_FRAME_ID (0x641u) +#define CAN1_AMS_SLAVE3_LOG1_FRAME_ID (0x631u) +#define CAN1_AMS_SLAVE1_LOG1_FRAME_ID (0x611u) +#define CAN1_AMS_SLAVE5_LOG0_FRAME_ID (0x650u) +#define CAN1_AMS_SLAVE4_LOG0_FRAME_ID (0x640u) +#define CAN1_AMS_SLAVE3_LOG0_FRAME_ID (0x630u) +#define CAN1_AMS_SLAVE1_LOG0_FRAME_ID (0x610u) +#define CAN1_PDU_HEARTBEAT_FRAME_ID (0xceu) +#define CAN1_FTCU_PNEUMATIK_FRAME_ID (0x110u) +#define CAN1_ACU_TX_COMMANDS_FRAME_ID (0xe3u) +#define CAN1_ACU_RX_COMMANDS_FRAME_ID (0xe2u) +#define CAN1_ACU_RX_FRAME_ID (0xe1u) +#define CAN1_AMS_SLAVE0_LOG0_FRAME_ID (0x600u) +#define CAN1_AMS_SLAVE0_LOG1_FRAME_ID (0x601u) +#define CAN1_AMS_SLAVE0_LOG3_FRAME_ID (0x603u) +#define CAN1_AMS_SLAVE0_LOG4_FRAME_ID (0x604u) +#define CAN1_AMS_SLAVE0_LOG5_FRAME_ID (0x605u) +#define CAN1_AMS_SLAVE0_LOG6_FRAME_ID (0x606u) +#define CAN1_ACU_TX_FRAME_ID (0xe0u) +#define CAN1_AMS_SLAVE5_STATUS_FRAME_ID (0x85u) +#define CAN1_AMS_SLAVE4_STATUS_FRAME_ID (0x84u) +#define CAN1_AMS_SLAVE3_STATUS_FRAME_ID (0x83u) +#define CAN1_AMS_SLAVE2_STATUS_FRAME_ID (0x82u) +#define CAN1_AMS_ERROR_FRAME_ID (0x0cu) +#define CAN1_FTCU_COOLING_FRAME_ID (0x107u) +#define CAN1_FTCU_BRAKE_T_FRAME_ID (0x105u) +#define CAN1_FTCU_WHEELSPEED_FRAME_ID (0x104u) +#define CAN1_FTCU_TIMINGS_FRAME_ID (0x102u) +#define CAN1_FTCU_DRIVER_FRAME_ID (0x111u) +#define CAN1_TTS_RR_FRAME_ID (0x704u) +#define CAN1_TTS_RL_FRAME_ID (0x703u) +#define CAN1_TTS_FR_FRAME_ID (0x702u) +#define CAN1_TTS_FL_FRAME_ID (0x701u) +#define CAN1_STW_PARAM_SET_FRAME_ID (0x402u) +#define CAN1_AMS_SLAVE0_STATUS_FRAME_ID (0x80u) +#define CAN1_SSU_MESSAGE_FRAME_ID (0x500u) +#define CAN1_AMS_STATUS_FRAME_ID (0x0au) +#define CAN1_AMS_SLAVE_PANIC_FRAME_ID (0x09u) +#define CAN1_AMS_IN_FRAME_ID (0x0bu) +#define CAN1_SHUNT_CURRENT_FRAME_ID (0x521u) +#define CAN1_SHUNT_VOLTAGE1_FRAME_ID (0x522u) +#define CAN1_SHUNT_VOLTAGE2_FRAME_ID (0x523u) +#define CAN1_SHUNT_VOLTAGE3_FRAME_ID (0x524u) +#define CAN1_SHUNT_TEMPERATURE_FRAME_ID (0x525u) +#define CAN1_PDU_COMMAND_FRAME_ID (0xc8u) +#define CAN1_PDU_RESPONSE_FRAME_ID (0xc9u) +#define CAN1_AS_MISSION_FB_FRAME_ID (0x410u) +#define CAN1_STW_MISSION_SELECTED_FRAME_ID (0x400u) +#define CAN1_EPSC_OUT_FRAME_ID (0x125u) +#define CAN1_EPSC_STEERING_IN_FRAME_ID (0x123u) +#define CAN1_STW_BUTTONS_FRAME_ID (0x401u) +#define CAN1_STW_STATUS_FRAME_ID (0x412u) +#define CAN1_PDU_CURRENT_1_FRAME_ID (0xcau) +#define CAN1_PDU_CURRENT_2_FRAME_ID (0xcbu) +#define CAN1_PDU_CURRENT_3_FRAME_ID (0xccu) +#define CAN1_PDU_CURRENT_4_FRAME_ID (0xcdu) +#define CAN1_EPSC_CONFIG_IN_FRAME_ID (0x124u) + +/* Frame lengths in bytes. */ +#define CAN1_INVERTER_VELOCITY_LENGTH (8u) +#define CAN1_INVERTER_ERRORS_WARNINGS_LENGTH (8u) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_LENGTH (8u) +#define CAN1_INVERTER_TEMPERATUR_LENGTH (8u) +#define CAN1_INVERTER_TORQUE_WANTED_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_TX_LENGTH (8u) +#define CAN1_LAPTOP_SDO_NODE_LENGTH (1u) +#define CAN1_X_SENS_LONG_LAT_LENGTH (8u) +#define CAN1_X_SENS_RATEOFTURN_LENGTH (6u) +#define CAN1_X_SENS_ACCELERATION_LENGTH (6u) +#define CAN1_X_SENS_VELOCITY_LENGTH (6u) +#define CAN1_TELEMETRIE_LENGTH (7u) +#define CAN1_OVERRIDE_POWERMAP_LENGTH (8u) +#define CAN1_OVERRIDE_LAPTOP_2_LENGTH (5u) +#define CAN1_OVERRIDE_EPSC_COOLING_LENGTH (8u) +#define CAN1_OVERRIDE_LAPTOP_LENGTH (3u) +#define CAN1_APPS_OVERRIDE_LENGTH (5u) +#define CAN1_FTCU_DAMPER_LENGTH (8u) +#define CAN1_FTCU_PARAM_CONFIRM_LENGTH (1u) +#define CAN1_SENSORNODE_F_10_HZ_LENGTH (3u) +#define CAN1_SENSORNODE_F_100_HZ_1_LENGTH (7u) +#define CAN1_SENSORNODE_F_100_HZ_2_LENGTH (3u) +#define CAN1_SENSORNODE_F_1K_HZ_LENGTH (3u) +#define CAN1_SENSORNODE_R_10_HZ_LENGTH (7u) +#define CAN1_SENSORNODE_R_100_HZ_LENGTH (8u) +#define CAN1_SENSORNODE_R_1K_HZ_LENGTH (3u) +#define CAN1_PWM_DUTY_CYCLE_LENGTH (7u) +#define CAN1_PWM_CONFIG_LENGTH (6u) +#define CAN1_DASHBOARD_IN_LENGTH (1u) +#define CAN1_AMS_SLAVE1_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE2_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE4_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE3_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE1_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE5_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG0_LENGTH (8u) +#define CAN1_PDU_HEARTBEAT_LENGTH (1u) +#define CAN1_FTCU_PNEUMATIK_LENGTH (8u) +#define CAN1_ACU_TX_COMMANDS_LENGTH (6u) +#define CAN1_ACU_RX_COMMANDS_LENGTH (4u) +#define CAN1_ACU_RX_LENGTH (3u) +#define CAN1_AMS_SLAVE0_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE0_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG6_LENGTH (8u) +#define CAN1_ACU_TX_LENGTH (2u) +#define CAN1_AMS_SLAVE5_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE4_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE3_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE2_STATUS_LENGTH (8u) +#define CAN1_AMS_ERROR_LENGTH (2u) +#define CAN1_FTCU_COOLING_LENGTH (8u) +#define CAN1_FTCU_BRAKE_T_LENGTH (8u) +#define CAN1_FTCU_WHEELSPEED_LENGTH (8u) +#define CAN1_FTCU_TIMINGS_LENGTH (8u) +#define CAN1_FTCU_DRIVER_LENGTH (8u) +#define CAN1_TTS_RR_LENGTH (8u) +#define CAN1_TTS_RL_LENGTH (8u) +#define CAN1_TTS_FR_LENGTH (8u) +#define CAN1_TTS_FL_LENGTH (8u) +#define CAN1_STW_PARAM_SET_LENGTH (6u) +#define CAN1_AMS_SLAVE0_STATUS_LENGTH (8u) +#define CAN1_SSU_MESSAGE_LENGTH (4u) +#define CAN1_AMS_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE_PANIC_LENGTH (8u) +#define CAN1_AMS_IN_LENGTH (1u) +#define CAN1_SHUNT_CURRENT_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE1_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE2_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE3_LENGTH (6u) +#define CAN1_SHUNT_TEMPERATURE_LENGTH (6u) +#define CAN1_PDU_COMMAND_LENGTH (7u) +#define CAN1_PDU_RESPONSE_LENGTH (7u) +#define CAN1_AS_MISSION_FB_LENGTH (1u) +#define CAN1_STW_MISSION_SELECTED_LENGTH (1u) +#define CAN1_EPSC_OUT_LENGTH (8u) +#define CAN1_EPSC_STEERING_IN_LENGTH (2u) +#define CAN1_STW_BUTTONS_LENGTH (1u) +#define CAN1_STW_STATUS_LENGTH (7u) +#define CAN1_PDU_CURRENT_1_LENGTH (8u) +#define CAN1_PDU_CURRENT_2_LENGTH (8u) +#define CAN1_PDU_CURRENT_3_LENGTH (8u) +#define CAN1_PDU_CURRENT_4_LENGTH (8u) +#define CAN1_EPSC_CONFIG_IN_LENGTH (6u) + +/* Extended or standard frame types. */ +#define CAN1_INVERTER_VELOCITY_IS_EXTENDED (0) +#define CAN1_INVERTER_ERRORS_WARNINGS_IS_EXTENDED (0) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_IS_EXTENDED (0) +#define CAN1_INVERTER_TEMPERATUR_IS_EXTENDED (0) +#define CAN1_INVERTER_TORQUE_WANTED_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_TX_IS_EXTENDED (0) +#define CAN1_LAPTOP_SDO_NODE_IS_EXTENDED (0) +#define CAN1_X_SENS_LONG_LAT_IS_EXTENDED (0) +#define CAN1_X_SENS_RATEOFTURN_IS_EXTENDED (0) +#define CAN1_X_SENS_ACCELERATION_IS_EXTENDED (0) +#define CAN1_X_SENS_VELOCITY_IS_EXTENDED (0) +#define CAN1_TELEMETRIE_IS_EXTENDED (0) +#define CAN1_OVERRIDE_POWERMAP_IS_EXTENDED (0) +#define CAN1_OVERRIDE_LAPTOP_2_IS_EXTENDED (0) +#define CAN1_OVERRIDE_EPSC_COOLING_IS_EXTENDED (0) +#define CAN1_OVERRIDE_LAPTOP_IS_EXTENDED (0) +#define CAN1_APPS_OVERRIDE_IS_EXTENDED (0) +#define CAN1_FTCU_DAMPER_IS_EXTENDED (0) +#define CAN1_FTCU_PARAM_CONFIRM_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_10_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_100_HZ_1_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_100_HZ_2_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_1K_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_10_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_100_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_1K_HZ_IS_EXTENDED (0) +#define CAN1_PWM_DUTY_CYCLE_IS_EXTENDED (0) +#define CAN1_PWM_CONFIG_IS_EXTENDED (0) +#define CAN1_DASHBOARD_IN_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG0_IS_EXTENDED (0) +#define CAN1_PDU_HEARTBEAT_IS_EXTENDED (0) +#define CAN1_FTCU_PNEUMATIK_IS_EXTENDED (0) +#define CAN1_ACU_TX_COMMANDS_IS_EXTENDED (0) +#define CAN1_ACU_RX_COMMANDS_IS_EXTENDED (0) +#define CAN1_ACU_RX_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG6_IS_EXTENDED (0) +#define CAN1_ACU_TX_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_ERROR_IS_EXTENDED (0) +#define CAN1_FTCU_COOLING_IS_EXTENDED (0) +#define CAN1_FTCU_BRAKE_T_IS_EXTENDED (0) +#define CAN1_FTCU_WHEELSPEED_IS_EXTENDED (0) +#define CAN1_FTCU_TIMINGS_IS_EXTENDED (0) +#define CAN1_FTCU_DRIVER_IS_EXTENDED (0) +#define CAN1_TTS_RR_IS_EXTENDED (0) +#define CAN1_TTS_RL_IS_EXTENDED (0) +#define CAN1_TTS_FR_IS_EXTENDED (0) +#define CAN1_TTS_FL_IS_EXTENDED (0) +#define CAN1_STW_PARAM_SET_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_STATUS_IS_EXTENDED (0) +#define CAN1_SSU_MESSAGE_IS_EXTENDED (0) +#define CAN1_AMS_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE_PANIC_IS_EXTENDED (0) +#define CAN1_AMS_IN_IS_EXTENDED (0) +#define CAN1_SHUNT_CURRENT_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE1_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE2_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE3_IS_EXTENDED (0) +#define CAN1_SHUNT_TEMPERATURE_IS_EXTENDED (0) +#define CAN1_PDU_COMMAND_IS_EXTENDED (0) +#define CAN1_PDU_RESPONSE_IS_EXTENDED (0) +#define CAN1_AS_MISSION_FB_IS_EXTENDED (0) +#define CAN1_STW_MISSION_SELECTED_IS_EXTENDED (0) +#define CAN1_EPSC_OUT_IS_EXTENDED (0) +#define CAN1_EPSC_STEERING_IN_IS_EXTENDED (0) +#define CAN1_STW_BUTTONS_IS_EXTENDED (0) +#define CAN1_STW_STATUS_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_1_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_2_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_3_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_4_IS_EXTENDED (0) +#define CAN1_EPSC_CONFIG_IN_IS_EXTENDED (0) + +/* Frame cycle times in milliseconds. */ + + +/* Signal choices. */ +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_NONE_CHOICE (0) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SLAVE__TIMEOUT_CHOICE (1) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SLAVE__PANIC_CHOICE (2) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__TIMEOUT_CHOICE (3) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__OVERCURRENT_CHOICE (4) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__OVERTEMPERATURE_CHOICE (5) + +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_SPEED_LIMIT_CHOICE (0u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TORQUE__LIMIT_CHOICE (1u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_POWER_LIMIT_CHOICE (2u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_DISCIPLINE_CHOICE (3u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TV_ON_CHOICE (4u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_ON_CHOICE (5u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_REKU_ON_CHOICE (6u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_P_CHOICE (7u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_I_CHOICE (8u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_MUMAX_CHOICE (9u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_SLIPREF_CHOICE (10u) + +#define CAN1_AMS_STATUS_AMS_STATE_INACTIVE_CHOICE (0u) +#define CAN1_AMS_STATUS_AMS_STATE_ACTIVE_CHOICE (1u) +#define CAN1_AMS_STATUS_AMS_STATE_PRECHARGE_CHOICE (2u) +#define CAN1_AMS_STATUS_AMS_STATE_DISCHARGE_CHOICE (3u) +#define CAN1_AMS_STATUS_AMS_STATE_ERROR_CHOICE (4u) + +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OVERTEMPERATURE_CHOICE (0u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_UNDERTEMPERATURE_CHOICE (1u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OVERVOLTAGE_CHOICE (2u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_UNDERVOLTAGE_CHOICE (3u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_TOO_FEW_TEMP_SENSORS_CHOICE (4u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OPEN_CELL_CONNECTION_CHOICE (5u) + +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_ACCELERATION_CHOICE (1u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_SKIDPAD_CHOICE (2u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_TRACKDRIVE_CHOICE (3u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_BRAKETEST_CHOICE (4u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_INSPECTION_CHOICE (5u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_AUTOCROSS_CHOICE (6u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_MANUAL_CHOICE (7u) + +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_ACCELERATION_CHOICE (1u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_SKIDPAD_CHOICE (2u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_TRACKDRIVE_CHOICE (3u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_BRAKETEST_CHOICE (4u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_INSPECTION_CHOICE (5u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_AUTOCROSS_CHOICE (6u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_MANUAL_CHOICE (7u) + +#define CAN1_STW_STATUS_R2_D_PROGRESS_NONE_CHOICE (0u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_TSMS_CHOICE (1u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_TS_ACTIVE_CHOICE (2u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_RESETTING_NODES_CHOICE (3u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_RESETTING_COMMS_CHOICE (4u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_WAITING_INIT_CHOICE (5u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_STAGE1_CHOICE (6u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_STAGE2_CHOICE (7u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_SUCCESS_CHOICE (15u) + +#define CAN1_STW_STATUS_AS_STATE_STW_OFF_CHOICE (0u) +#define CAN1_STW_STATUS_AS_STATE_STW_MANUAL_CHOICE (1u) +#define CAN1_STW_STATUS_AS_STATE_STW_READY_CHOICE (2u) +#define CAN1_STW_STATUS_AS_STATE_STW_DRIVING_CHOICE (3u) +#define CAN1_STW_STATUS_AS_STATE_STW_FINISHED_CHOICE (4u) +#define CAN1_STW_STATUS_AS_STATE_STW_EMERGENCY_CHOICE (5u) + +#define CAN1_STW_STATUS_INI_CHK_STATE_START_CHOICE (0u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WD_CHECK_CHOICE (1u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WD_OK_CHOICE (2u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ASB_CHECK_1_CHOICE (3u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ASB_CHECK_2_CHOICE (4u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WAIT_TS_CHOICE (5u) +#define CAN1_STW_STATUS_INI_CHK_STATE_EBS_CHECK_A_CHOICE (6u) +#define CAN1_STW_STATUS_INI_CHK_STATE_EBS_CHECK_B_CHOICE (7u) +#define CAN1_STW_STATUS_INI_CHK_STATE_DONE_CHOICE (8u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ERROR_CHOICE (9u) + +/* Frame Names. */ +#define CAN1_INVERTER_VELOCITY_NAME "Inverter_Velocity" +#define CAN1_INVERTER_ERRORS_WARNINGS_NAME "Inverter_Errors_Warnings" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_NAME "Inverter_Torque_Actual_CW" +#define CAN1_INVERTER_TEMPERATUR_NAME "Inverter_Temperatur" +#define CAN1_INVERTER_TORQUE_WANTED_NAME "Inverter_Torque_wanted" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_NAME "SDO_Telemetrie_Rx_Node1" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_NAME "SDO_Telemetrie_Rx_Node2" +#define CAN1_SDO_TELEMETRIE_TX_NAME "SDO_Telemetrie_Tx" +#define CAN1_LAPTOP_SDO_NODE_NAME "Laptop_SDO_Node" +#define CAN1_X_SENS_LONG_LAT_NAME "XSens_LongLat" +#define CAN1_X_SENS_RATEOFTURN_NAME "XSens_rateofturn" +#define CAN1_X_SENS_ACCELERATION_NAME "XSens_Acceleration" +#define CAN1_X_SENS_VELOCITY_NAME "XSens_Velocity" +#define CAN1_TELEMETRIE_NAME "Telemetrie" +#define CAN1_OVERRIDE_POWERMAP_NAME "Override_Powermap" +#define CAN1_OVERRIDE_LAPTOP_2_NAME "Override_Laptop_2" +#define CAN1_OVERRIDE_EPSC_COOLING_NAME "Override_EPSC_Cooling" +#define CAN1_OVERRIDE_LAPTOP_NAME "Override_Laptop" +#define CAN1_APPS_OVERRIDE_NAME "APPS_Override" +#define CAN1_FTCU_DAMPER_NAME "FTCU_Damper" +#define CAN1_FTCU_PARAM_CONFIRM_NAME "FTCU_ParamConfirm" +#define CAN1_SENSORNODE_F_10_HZ_NAME "Sensornode_F_10Hz" +#define CAN1_SENSORNODE_F_100_HZ_1_NAME "Sensornode_F_100Hz_1" +#define CAN1_SENSORNODE_F_100_HZ_2_NAME "Sensornode_F_100Hz_2" +#define CAN1_SENSORNODE_F_1K_HZ_NAME "Sensornode_F_1kHz" +#define CAN1_SENSORNODE_R_10_HZ_NAME "Sensornode_R_10Hz" +#define CAN1_SENSORNODE_R_100_HZ_NAME "Sensornode_R_100Hz" +#define CAN1_SENSORNODE_R_1K_HZ_NAME "Sensornode_R_1kHz" +#define CAN1_PWM_DUTY_CYCLE_NAME "PWM_DutyCycle" +#define CAN1_PWM_CONFIG_NAME "PWM_Config" +#define CAN1_DASHBOARD_IN_NAME "Dashboard_In" +#define CAN1_AMS_SLAVE1_STATUS_NAME "AMS_Slave1Status" +#define CAN1_AMS_SLAVE2_LOG0_NAME "AMS_Slave2_Log0" +#define CAN1_AMS_SLAVE2_LOG1_NAME "AMS_Slave2_Log1" +#define CAN1_AMS_SLAVE2_LOG2_NAME "AMS_Slave2_Log2" +#define CAN1_AMS_SLAVE2_LOG3_NAME "AMS_Slave2_Log3" +#define CAN1_AMS_SLAVE2_LOG4_NAME "AMS_Slave2_Log4" +#define CAN1_AMS_SLAVE2_LOG5_NAME "AMS_Slave2_Log5" +#define CAN1_AMS_SLAVE5_LOG6_NAME "AMS_Slave5_Log6" +#define CAN1_AMS_SLAVE4_LOG6_NAME "AMS_Slave4_Log6" +#define CAN1_AMS_SLAVE3_LOG6_NAME "AMS_Slave3_Log6" +#define CAN1_AMS_SLAVE2_LOG6_NAME "AMS_Slave2_Log6" +#define CAN1_AMS_SLAVE1_LOG6_NAME "AMS_Slave1_Log6" +#define CAN1_AMS_SLAVE5_LOG5_NAME "AMS_Slave5_Log5" +#define CAN1_AMS_SLAVE4_LOG5_NAME "AMS_Slave4_Log5" +#define CAN1_AMS_SLAVE3_LOG5_NAME "AMS_Slave3_Log5" +#define CAN1_AMS_SLAVE1_LOG5_NAME "AMS_Slave1_Log5" +#define CAN1_AMS_SLAVE5_LOG4_NAME "AMS_Slave5_Log4" +#define CAN1_AMS_SLAVE4_LOG4_NAME "AMS_Slave4_Log4" +#define CAN1_AMS_SLAVE3_LOG4_NAME "AMS_Slave3_Log4" +#define CAN1_AMS_SLAVE1_LOG4_NAME "AMS_Slave1_Log4" +#define CAN1_AMS_SLAVE5_LOG3_NAME "AMS_Slave5_Log3" +#define CAN1_AMS_SLAVE4_LOG3_NAME "AMS_Slave4_Log3" +#define CAN1_AMS_SLAVE3_LOG3_NAME "AMS_Slave3_Log3" +#define CAN1_AMS_SLAVE1_LOG3_NAME "AMS_Slave1_Log3" +#define CAN1_AMS_SLAVE5_LOG2_NAME "AMS_Slave5_Log2" +#define CAN1_AMS_SLAVE4_LOG2_NAME "AMS_Slave4_Log2" +#define CAN1_AMS_SLAVE3_LOG2_NAME "AMS_Slave3_Log2" +#define CAN1_AMS_SLAVE1_LOG2_NAME "AMS_Slave1_Log2" +#define CAN1_AMS_SLAVE5_LOG1_NAME "AMS_Slave5_Log1" +#define CAN1_AMS_SLAVE4_LOG1_NAME "AMS_Slave4_Log1" +#define CAN1_AMS_SLAVE3_LOG1_NAME "AMS_Slave3_Log1" +#define CAN1_AMS_SLAVE1_LOG1_NAME "AMS_Slave1_Log1" +#define CAN1_AMS_SLAVE5_LOG0_NAME "AMS_Slave5_Log0" +#define CAN1_AMS_SLAVE4_LOG0_NAME "AMS_Slave4_Log0" +#define CAN1_AMS_SLAVE3_LOG0_NAME "AMS_Slave3_Log0" +#define CAN1_AMS_SLAVE1_LOG0_NAME "AMS_Slave1_Log0" +#define CAN1_PDU_HEARTBEAT_NAME "PDU_Heartbeat" +#define CAN1_FTCU_PNEUMATIK_NAME "FTCU_Pneumatik" +#define CAN1_ACU_TX_COMMANDS_NAME "ACU_TX_Commands" +#define CAN1_ACU_RX_COMMANDS_NAME "ACU_RX_Commands" +#define CAN1_ACU_RX_NAME "ACU_RX" +#define CAN1_AMS_SLAVE0_LOG0_NAME "AMS_Slave0_Log0" +#define CAN1_AMS_SLAVE0_LOG1_NAME "AMS_Slave0_Log1" +#define CAN1_AMS_SLAVE0_LOG3_NAME "AMS_Slave0_Log3" +#define CAN1_AMS_SLAVE0_LOG4_NAME "AMS_Slave0_Log4" +#define CAN1_AMS_SLAVE0_LOG5_NAME "AMS_Slave0_Log5" +#define CAN1_AMS_SLAVE0_LOG6_NAME "AMS_Slave0_Log6" +#define CAN1_ACU_TX_NAME "ACU_TX" +#define CAN1_AMS_SLAVE5_STATUS_NAME "AMS_Slave5Status" +#define CAN1_AMS_SLAVE4_STATUS_NAME "AMS_Slave4Status" +#define CAN1_AMS_SLAVE3_STATUS_NAME "AMS_Slave3Status" +#define CAN1_AMS_SLAVE2_STATUS_NAME "AMS_Slave2Status" +#define CAN1_AMS_ERROR_NAME "AMS_Error" +#define CAN1_FTCU_COOLING_NAME "FTCU_Cooling" +#define CAN1_FTCU_BRAKE_T_NAME "FTCU_BrakeT" +#define CAN1_FTCU_WHEELSPEED_NAME "FTCU_Wheelspeed" +#define CAN1_FTCU_TIMINGS_NAME "FTCU_Timings" +#define CAN1_FTCU_DRIVER_NAME "FTCU_Driver" +#define CAN1_TTS_RR_NAME "TTS_RR" +#define CAN1_TTS_RL_NAME "TTS_RL" +#define CAN1_TTS_FR_NAME "TTS_FR" +#define CAN1_TTS_FL_NAME "TTS_FL" +#define CAN1_STW_PARAM_SET_NAME "STW_Param_Set" +#define CAN1_AMS_SLAVE0_STATUS_NAME "AMS_Slave0Status" +#define CAN1_SSU_MESSAGE_NAME "SSU_Message" +#define CAN1_AMS_STATUS_NAME "AMS_Status" +#define CAN1_AMS_SLAVE_PANIC_NAME "AMS_SlavePanic" +#define CAN1_AMS_IN_NAME "AMS_In" +#define CAN1_SHUNT_CURRENT_NAME "Shunt_Current" +#define CAN1_SHUNT_VOLTAGE1_NAME "Shunt_Voltage1" +#define CAN1_SHUNT_VOLTAGE2_NAME "Shunt_Voltage2" +#define CAN1_SHUNT_VOLTAGE3_NAME "Shunt_Voltage3" +#define CAN1_SHUNT_TEMPERATURE_NAME "Shunt_Temperature" +#define CAN1_PDU_COMMAND_NAME "PDU_Command" +#define CAN1_PDU_RESPONSE_NAME "PDU_Response" +#define CAN1_AS_MISSION_FB_NAME "AS_Mission_fb" +#define CAN1_STW_MISSION_SELECTED_NAME "STW_mission_selected" +#define CAN1_EPSC_OUT_NAME "EPSC_out" +#define CAN1_EPSC_STEERING_IN_NAME "EPSC_Steering_In" +#define CAN1_STW_BUTTONS_NAME "STW_buttons" +#define CAN1_STW_STATUS_NAME "STW_status" +#define CAN1_PDU_CURRENT_1_NAME "PDU_Current_1" +#define CAN1_PDU_CURRENT_2_NAME "PDU_Current_2" +#define CAN1_PDU_CURRENT_3_NAME "PDU_Current_3" +#define CAN1_PDU_CURRENT_4_NAME "PDU_Current_4" +#define CAN1_EPSC_CONFIG_IN_NAME "EPSC_Config_In" + +/* Signal Names. */ +#define CAN1_INVERTER_VELOCITY_INVERTER_1_VELOCITY_NAME "Inverter_1_Velocity" +#define CAN1_INVERTER_VELOCITY_INVERTER_2_VELOCITY_NAME "Inverter_2_Velocity" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_1_ERRORS_NAME "Inverter_1_Errors" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_1_WARNINGS_NAME "Inverter_1_Warnings" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_2_ERRORS_NAME "Inverter_2_Errors" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_2_WARNINGS_NAME "Inverter_2_Warnings" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_1_CONTROL_WORD_NAME "Inverter_1_ControlWord" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_1_TORQUE_ACTUAL_NAME "Inverter_1_Torque_Actual" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_2_CONTROL_WORD_NAME "Inverter_2_ControlWord" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_2_TORQUE_ACTUAL_NAME "Inverter_2_Torque_Actual" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_1_TEMP_INV_NAME "Inverter_1_Temp_Inv" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_1_TEMP_MOT_NAME "Inverter_1_Temp_Mot" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_2_TEMP_INV_NAME "Inverter_2_Temp_Inv" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_2_TEMP_MOT_NAME "Inverter_2_Temp_Mot" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_1_TORQUE_DEMANDED_NAME "Inverter_1_Torque_Demanded" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_2_TORQUE_DEMANDED_NAME "Inverter_2_Torque_Demanded" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_1_TORQUE_DESIRED_NAME "Inverter_1_Torque_Desired" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_2_TORQUE_DESIRED_NAME "Inverter_2_Torque_Desired" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_DATA_NAME "SDO_data" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_DATA_NAME "SDO_data" +#define CAN1_SDO_TELEMETRIE_TX_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_TX_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_TX_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_TX_SDO_DATA_NAME "SDO_data" +#define CAN1_LAPTOP_SDO_NODE_NODE_ID_SDO_NAME "Node_ID_SDO" +#define CAN1_X_SENS_LONG_LAT_X_SENS_LATITUDE_NAME "XSens_latitude" +#define CAN1_X_SENS_LONG_LAT_X_SENS_LONGITUDE_NAME "XSens_longitude" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GYR_X_NAME "XSens_gyrX" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GY_Y_NAME "XSens_gyY" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GY_Z_NAME "XSens_gyZ" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_X_NAME "XSens_accX" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_Y_NAME "XSens_accY" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_Z_NAME "XSens_accZ" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_X_NAME "XSens_velX" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_Y_NAME "XSens_velY" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_Z_NAME "XSens_velZ" +#define CAN1_TELEMETRIE_INI_CHECK_ERROR_STATE_NAME "Ini_Check_error_State" +#define CAN1_TELEMETRIE_POWERMAP_NAME "Powermap" +#define CAN1_TELEMETRIE_APPS_OK_NAME "APPS_ok" +#define CAN1_TELEMETRIE_BRAKE_OK_NAME "Brake_ok" +#define CAN1_TELEMETRIE_ALLOW_TORQUE_NAME "Allow_Torque" +#define CAN1_TELEMETRIE_ASP_OK_NAME "ASP_ok" +#define CAN1_TELEMETRIE_PRESSURE_SENSOR_OK_NAME "Pressure_Sensor_ok" +#define CAN1_TELEMETRIE_TORQUE_VECTORING_ON_NAME "Torque_Vectoring_on" +#define CAN1_TELEMETRIE_REKU_ON_NAME "Reku_on" +#define CAN1_TELEMETRIE_TRACTION_CONTROL_ON_NAME "Traction_Control_on" +#define CAN1_TELEMETRIE_TS_DEACTIVATE_NAME "TS_deactivate" +#define CAN1_TELEMETRIE_TORQUE_LIMIT_NAME "Torque_Limit" +#define CAN1_TELEMETRIE_POWER_LIMIT_NAME "Power_Limit" +#define CAN1_TELEMETRIE_TORQUE_LIMIT_DYNAMISCH_NAME "Torque_Limit_dynamisch" +#define CAN1_TELEMETRIE_TORQUE_OHNE_LIMIT_L_NAME "Torque_ohne_Limit_L" +#define CAN1_TELEMETRIE_TORQUE_OHNE_LIMIT_R_NAME "Torque_ohne_Limit_R" +#define CAN1_OVERRIDE_POWERMAP_LAPTOPP_POWER_MAP_NAME "Laptopp_Power_Map" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_REKU_NAME "Laptop_Reku" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_NAME "Laptop_TC" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TV_NAME "Laptop_TV" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_SLIPREF_NAME "Laptop_slipref" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_I_NAME "Laptop_TC_I" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_P_NAME "Laptop_TC_P" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_MUMAX_NAME "Laptop_TC_Mumax" +#define CAN1_OVERRIDE_LAPTOP_2_AS_MISSION_NAME "AS_Mission" +#define CAN1_OVERRIDE_LAPTOP_2_AS_STATE_NAME "AS_State" +#define CAN1_OVERRIDE_LAPTOP_2_MANUAL_INPUT_TORQUE_NAME "manual_input_torque" +#define CAN1_OVERRIDE_LAPTOP_2_LAPTOP_POWERLIMIT_NAME "Laptop_Powerlimit" +#define CAN1_OVERRIDE_LAPTOP_2_LAPTOP_TORQUE_LIM_NAME "Laptop_Torque_Lim" +#define CAN1_OVERRIDE_EPSC_COOLING_EPSC_MANUAL_ANGLE_NAME "EPSC_manual_angle" +#define CAN1_OVERRIDE_EPSC_COOLING_EPSC_MODE_NAME "EPSC_mode" +#define CAN1_OVERRIDE_EPSC_COOLING_AC_COOLING_ENABLE_NAME "AC_Cooling_enable" +#define CAN1_OVERRIDE_EPSC_COOLING_TS_COOLING_ENABLE_NAME "TS_cooling_enable" +#define CAN1_OVERRIDE_EPSC_COOLING_AC_COOLING_PWM_NAME "AC_cooling_PWM" +#define CAN1_OVERRIDE_EPSC_COOLING_TS_COOLING_PWM_NAME "TS_cooling_PWM" +#define CAN1_OVERRIDE_LAPTOP_FAKE_R2_D_NAME "Fake_R2D" +#define CAN1_OVERRIDE_LAPTOP_FAKE_SOUNDBOX_EMERGENCY_NAME "Fake_Soundbox_Emergency" +#define CAN1_OVERRIDE_LAPTOP_FAKE_SOUNDBOX_R2_D_NAME "Fake_Soundbox_R2D" +#define CAN1_OVERRIDE_LAPTOP_FAKE_TS_ACTIVE_NAME "Fake_TS_Active" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_APPS_NAME "override_APPS" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_AS_MISSION_NAME "override_AS_Mission" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_AS_STATE_NAME "override_AS_State" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_EPSC_MODE_NAME "override_EPSC_mode" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_AC_COOLING_ENABLE_NAME "override_PDU_AC_Cooling_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_ACU_ENABLE_NAME "override_PDU_ACU_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_DRS_ENABLE_NAME "override_PDU_DRS_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_EPSC_ENABLE_NAME "override_PDU_EPSC_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_HEARTBEAT_NAME "override_PDU_Heartbeat" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_LIDAR_ENABLE_NAME "override_PDU_Lidar_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_PN_V1_ENABLE_NAME "override_PDU_PN_V1_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_PN_V2_ENABLE_NAME "override_PDU_PN_V2_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_TS_COOLING_ENABLE_NAME "override_PDU_TS_Cooling_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_POWER_MAP_NAME "override_Power_Map" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_TC_PARAMETER_NAME "override_TC_parameter" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_TORQUE_INPUT_NAME "override_torque_input" +#define CAN1_APPS_OVERRIDE_APPS_0_MAX_NAME "APPS_0_max" +#define CAN1_APPS_OVERRIDE_APPS_0_MIN_NAME "APPS_0_min" +#define CAN1_APPS_OVERRIDE_APPS_1_MAX_NAME "APPS_1_max" +#define CAN1_APPS_OVERRIDE_APPS_1_MIN_NAME "APPS_1_min" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_FL_NAME "FTCU_Damper_FL" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_FR_NAME "FTCU_Damper_FR" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_RL_NAME "FTCU_Damper_RL" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_RR_NAME "FTCU_Damper_RR" +#define CAN1_FTCU_PARAM_CONFIRM_FTCU_PARAM_CONFIRM_NAME "FTCU_Param_Confirm" +#define CAN1_SENSORNODE_F_10_HZ_LS_L_NAME "LS_L" +#define CAN1_SENSORNODE_F_10_HZ_LS_R_NAME "LS_R" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_PRE_BOTS_NAME "SDC_M_pre_BOTS" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_POST_INS_NAME "SDC_M_post_INS" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_POST_BSPD_NAME "SDC_M_post_BSPD" +#define CAN1_SENSORNODE_F_10_HZ_BDTS_FL_NAME "BDTS_FL" +#define CAN1_SENSORNODE_F_10_HZ_BDTS_FR_NAME "BDTS_FR" +#define CAN1_SENSORNODE_F_100_HZ_1_APPS_1_NAME "APPS_1" +#define CAN1_SENSORNODE_F_100_HZ_1_APPS_2_NAME "APPS_2" +#define CAN1_SENSORNODE_F_100_HZ_1_BP_F_NAME "BP_F" +#define CAN1_SENSORNODE_F_100_HZ_1_SAS_NAME "SAS" +#define CAN1_SENSORNODE_F_100_HZ_1_WSS_FL_NAME "WSS_FL" +#define CAN1_SENSORNODE_F_100_HZ_1_WSS_FR_NAME "WSS_FR" +#define CAN1_SENSORNODE_F_100_HZ_2_DS_FL_NAME "DS_FL" +#define CAN1_SENSORNODE_F_100_HZ_2_DS_FR_NAME "DS_FR" +#define CAN1_SENSORNODE_F_1K_HZ_SLS_FL_NAME "SLS_FL" +#define CAN1_SENSORNODE_F_1K_HZ_SLS_FR_NAME "SLS_FR" +#define CAN1_SENSORNODE_R_10_HZ_EXT_TS_ON_NAME "ExtTSOn" +#define CAN1_SENSORNODE_R_10_HZ_SDC_M_PRE_TSMS_NAME "SDC_M_pre_TSMS" +#define CAN1_SENSORNODE_R_10_HZ_SDC_M_POST_TSMS_NAME "SDC_M_post_TSMS" +#define CAN1_SENSORNODE_R_10_HZ_BDTS_RL_NAME "BDTS_RL" +#define CAN1_SENSORNODE_R_10_HZ_BDTS_RR_NAME "BDTS_RR" +#define CAN1_SENSORNODE_R_10_HZ_WT_BAT_NAME "WT_BAT" +#define CAN1_SENSORNODE_R_10_HZ_WT_DT_NAME "WT_DT" +#define CAN1_SENSORNODE_R_10_HZ_WP_BAT_NAME "WP_BAT" +#define CAN1_SENSORNODE_R_10_HZ_WP_DT_NAME "WP_DT" +#define CAN1_SENSORNODE_R_100_HZ_EBS_APS_1_NAME "EBS_APS_1" +#define CAN1_SENSORNODE_R_100_HZ_EBS_APS_2_NAME "EBS_APS_2" +#define CAN1_SENSORNODE_R_100_HZ_BP_R_NAME "BP_R" +#define CAN1_SENSORNODE_R_100_HZ_WSS_RL_NAME "WSS_RL" +#define CAN1_SENSORNODE_R_100_HZ_WSS_RR_NAME "WSS_RR" +#define CAN1_SENSORNODE_R_100_HZ_DS_RL_NAME "DS_RL" +#define CAN1_SENSORNODE_R_100_HZ_DS_RR_NAME "DS_RR" +#define CAN1_SENSORNODE_R_1K_HZ_SLS_RL_NAME "SLS_RL" +#define CAN1_SENSORNODE_R_1K_HZ_SLS_RR_NAME "SLS_RR" +#define CAN1_PWM_DUTY_CYCLE_DC_DRS_NAME "DC_DRS" +#define CAN1_PWM_DUTY_CYCLE_DC_ASSI_Y_NAME "DC_ASSI_Y" +#define CAN1_PWM_DUTY_CYCLE_DC_ASSI_B_NAME "DC_ASSI_B" +#define CAN1_PWM_DUTY_CYCLE_DC_BL_NAME "DC_BL" +#define CAN1_PWM_DUTY_CYCLE_DC_FANS_DT_NAME "DC_Fans_DT" +#define CAN1_PWM_DUTY_CYCLE_DC_FANS_BAT_NAME "DC_Fans_BAT" +#define CAN1_PWM_DUTY_CYCLE_DC_SBX_NAME "DC_SBX" +#define CAN1_PWM_CONFIG_FREQ_PWM1_DRS_LIGHTING_NAME "Freq_PWM1_DRS_Lighting" +#define CAN1_PWM_CONFIG_FREQ_PWM3_FANS_NAME "Freq_PWM3_Fans" +#define CAN1_PWM_CONFIG_FREQ_PWM2_SBX_NAME "Freq_PWM2_SBX" +#define CAN1_DASHBOARD_IN_DASHBOARD_R2_D_BUTTON_NAME "Dashboard_R2D_Button" +#define CAN1_DASHBOARD_IN_DASHBOARD_TS_ACTIVATE_BUTTON_NAME "Dashboard_TS_Activate_Button" +#define CAN1_DASHBOARD_IN_DASHBOARD_RACE_KEY_NAME "Dashboard_Race_Key" +#define CAN1_DASHBOARD_IN_DASHBOARD_SDC_IN_NAME "Dashboard_SDC_in" +#define CAN1_DASHBOARD_IN_DASHBOARD_SDC_OUT_NAME "Dashboard_SDC_out" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_Sensor" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE2_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE5_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE5_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE4_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE4_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE3_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE3_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE2_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE2_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE1_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE1_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE5_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE4_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE3_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE1_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_PDU_HEARTBEAT_PDU_HEARTBEAT_NAME "PDU_Heartbeat" +#define CAN1_FTCU_PNEUMATIK_FTCU_TANK_PRESSURE_1_NAME "FTCU_Tank_Pressure_1" +#define CAN1_FTCU_PNEUMATIK_FTCU_TANK_PRESSURE_2_NAME "FTCU_Tank_Pressure_2" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_FL_NAME "ABX_Speed_FL" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_FR_NAME "ABX_Speed_FR" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_RL_NAME "ABX_Speed_RL" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_RR_NAME "ABX_Speed_RR" +#define CAN1_ACU_TX_COMMANDS_ABX_STEERING_ANGLE_LEFT_NAME "ABX_Steering_Angle_Left" +#define CAN1_ACU_TX_COMMANDS_ABX_STEERING_ANGLE_RIGHT_NAME "ABX_Steering_Angle_Right" +#define CAN1_ACU_RX_COMMANDS_ACU_SPEED_TARGET_LEFT_NAME "ACU_Speed_Target_left" +#define CAN1_ACU_RX_COMMANDS_ACU_SPEED_TARGET_RIGHT_NAME "ACU_Speed_Target_right" +#define CAN1_ACU_RX_COMMANDS_ACU_STEERING_ANGLE_RIGHT_NAME "ACU_Steering_Angle_Right" +#define CAN1_ACU_RX_COMMANDS_ACU_STEERING_ANGLE_LEFT_NAME "ACU_Steering_Angle_Left" +#define CAN1_ACU_RX_ACU_AS_MISSION_COMPLETE_NAME "ACU_AS_Mission_Complete" +#define CAN1_ACU_RX_ACU_AS_OK_NAME "ACU_AS_OK" +#define CAN1_ACU_RX_ACU_DRS_NAME "ACU_DRS" +#define CAN1_ACU_RX_ACU_LAP_COUNT_NAME "ACU_Lap_Count" +#define CAN1_ACU_RX_ACU_CONES_ALL_NAME "ACU_Cones_All" +#define CAN1_ACU_RX_ACU_CONES_ACTUAL_NAME "ACU_Cones_Actual" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE0_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE0_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE0_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_ACU_TX_ACU_AS_MISSION_NAME "ACU_AS_Mission" +#define CAN1_ACU_TX_ACU_AS_STATE_NAME "ACU_AS_State" +#define CAN1_ACU_TX_ACU_POWER_OFF_NAME "ACU_Power_Off" +#define CAN1_ACU_TX_ACU_RESET_NAME "ACU_Reset" +#define CAN1_ACU_TX_ACU_ALLOW_TORQUE_NAME "ACU_AllowTorque" +#define CAN1_ACU_TX_ABX_CON_MON_ERROR_NAME "ABX_ConMon_Error" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_NAME "AMS_Error_Kind" +#define CAN1_AMS_ERROR_AMS_ERROR_ARG_NAME "AMS_Error_Arg" +#define CAN1_FTCU_COOLING_FTCU_WATER_PRESSURE_2_NAME "FTCU_Water_Pressure_2" +#define CAN1_FTCU_COOLING_FTCU_WATER_PRESSURE_1_NAME "FTCU_Water_Pressure_1" +#define CAN1_FTCU_COOLING_FTCU_WATER_TEMPERATURE_1_NAME "FTCU_Water_Temperature_1" +#define CAN1_FTCU_COOLING_FTCU_WATER_TEMPERATURE_2_NAME "FTCU_Water_Temperature_2" +#define CAN1_FTCU_COOLING_FTCU_FLOW_RATE_NAME "FTCU_Flow_rate" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_FL_NAME "FTCU_BrakeT_FL" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_FR_NAME "FTCU_BrakeT_FR" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_RL_NAME "FTCU_BrakeT_RL" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_RR_NAME "FTCU_BrakeT_RR" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_FL_NAME "FTCU_Wheelspeed_FL" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_FR_NAME "FTCU_Wheelspeed_FR" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_RL_NAME "FTCU_Wheelspeed_RL" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_RR_NAME "FTCU_Wheelspeed_RR" +#define CAN1_FTCU_WHEELSPEED_FTCU_DISTANCE_SESSION_NAME "FTCU_Distance_Session" +#define CAN1_FTCU_TIMINGS_FTCU_LAPTIME_BEST_NAME "FTCU_Laptime_best" +#define CAN1_FTCU_TIMINGS_FTCU_LAPTIME_LAST_NAME "FTCU_Laptime_last" +#define CAN1_FTCU_TIMINGS_FTCU_SECTORTIME_BEST_NAME "FTCU_Sectortime_best" +#define CAN1_FTCU_TIMINGS_FTCU_SECTORTIME_LAST_NAME "FTCU_Sectortime_last" +#define CAN1_FTCU_DRIVER_FTCU_APPS_PERCENT_NAME "FTCU_APPS_Percent" +#define CAN1_FTCU_DRIVER_FTCU_BRAKE_PRESSURE_F_NAME "FTCU_Brake_Pressure_F" +#define CAN1_FTCU_DRIVER_FTCU_BRAKE_PRESSURE_R_NAME "FTCU_Brake_Pressure_R" +#define CAN1_FTCU_DRIVER_FTCU_STEERING_ANGLE_NAME "FTCU_Steering_Angle" +#define CAN1_FTCU_DRIVER_FTCU_SPEED_NAME "FTCU_Speed" +#define CAN1_FTCU_DRIVER_FTCU_LAPCOUNTER_NAME "FTCU_Lapcounter" +#define CAN1_FTCU_DRIVER_FTCU_SECTORCOUNTER_NAME "FTCU_Sectorcounter" +#define CAN1_TTS_RR_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_RR_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_RR_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_RR_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_RR_TTS_OUTET_RIGHT_NAME "TTS_OutetRight" +#define CAN1_TTS_RR_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_RL_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_RL_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_RL_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_RL_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_RL_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_RL_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_FR_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_FR_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_FR_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_FR_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_FR_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_FR_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_FL_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_FL_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_FL_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_FL_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_FL_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_FL_TTS_STATUS_NAME "TTS_Status" +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_NAME "STW_Param_Set" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_SLIPREF_NAME "STW_Param_TC_Slipref" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_MUMAX_NAME "STW_Param_TC_Mumax" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_I_NAME "STW_Param_TC_I" +#define CAN1_STW_PARAM_SET_STW_PARAM_PLIM_NAME "STW_Param_Plim" +#define CAN1_STW_PARAM_SET_STW_PARAM_TLIM_NAME "STW_Param_Tlim" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_P_NAME "STW_Param_TC_P" +#define CAN1_STW_PARAM_SET_STW_PARAM_REKU_NAME "STW_Param_Reku" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_ON_NAME "STW_Param_TC_on" +#define CAN1_STW_PARAM_SET_STW_PARAM_TV_ON_NAME "STW_Param_TV_on" +#define CAN1_STW_PARAM_SET_STW_PARAM_DISCIPLINE_NAME "STW_Param_Discipline" +#define CAN1_STW_PARAM_SET_STW_PARAM_SLIM_NAME "STW_Param_Slim" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_SSU_MESSAGE_SSU_PRESSURE_NAME "SSU_Pressure" +#define CAN1_SSU_MESSAGE_SSU_AIR_TEMP_NAME "SSU_AirTemp" +#define CAN1_AMS_STATUS_AMS_STATE_NAME "AMS_State" +#define CAN1_AMS_STATUS_SDC_CLOSED_NAME "SDC_Closed" +#define CAN1_AMS_STATUS_SOC_NAME "SOC" +#define CAN1_AMS_STATUS_MIN_CELL_VOLT_NAME "Min_cell_volt" +#define CAN1_AMS_STATUS_MAX_CELL_TEMP_NAME "Max_cell_temp" +#define CAN1_AMS_STATUS_AMS_IMD_STATE_NAME "AMS_IMD_State" +#define CAN1_AMS_STATUS_AMS_IMD_OK_NAME "AMS_IMD_ok" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_SLAVE_ID_NAME "AMS_SlavePanic_SlaveID" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_NAME "AMS_SlavePanic_Kind" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_ARG_NAME "AMS_SlavePanic_Arg" +#define CAN1_AMS_IN_TS_ACTIVATE_NAME "TS_activate" +#define CAN1_AMS_IN_INVERTERS_DISCHARGED_NAME "Inverters_discharged" +#define CAN1_AMS_IN_LAP_NUMBER_NAME "Lap_Number" +#define CAN1_SHUNT_CURRENT_SHUNT_CURRENT_NAME "Shunt_Current" +#define CAN1_SHUNT_VOLTAGE1_SHUNT_VOLTAGE1_NAME "Shunt_Voltage1" +#define CAN1_SHUNT_VOLTAGE2_SHUNT_VOLTAGE2_NAME "Shunt_Voltage2" +#define CAN1_SHUNT_VOLTAGE3_SHUNT_VOLTAGE3_NAME "Shunt_Voltage3" +#define CAN1_SHUNT_TEMPERATURE_SHUNT_TEMPERATURE_NAME "Shunt_Temperature" +#define CAN1_PDU_COMMAND_PDU_ENABLE_MISC_NAME "PDU_enable_misc" +#define CAN1_PDU_COMMAND_PDU_ENABLE_SDC_NAME "PDU_enable_sdc" +#define CAN1_PDU_COMMAND_PDU_ENABLE_INVERTER_NAME "PDU_enable_inverter" +#define CAN1_PDU_COMMAND_PDU_ENABLE_TS_COOLING_NAME "PDU_enable_TS_Cooling" +#define CAN1_PDU_COMMAND_PDU_ENABLE_ACC_COOLING_NAME "PDU_enable_ACC_Cooling" +#define CAN1_PDU_COMMAND_PDU_ENABLE_LLDAR_NAME "PDU_enable_lldar" +#define CAN1_PDU_COMMAND_PDU_ENABLE_DRS_NAME "PDU_enable_DRS" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EPSC_NAME "PDU_enable_EPSC" +#define CAN1_PDU_COMMAND_PDU_ENABLE_ACU_NAME "PDU__enable_ACU" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_A_NAME "PDU_enable_EBS_A" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_B_NAME "PDU_enable_EBS_B" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_C_NAME "PDU_enable_EBS_C" +#define CAN1_PDU_RESPONSE_PDU_ALWAYSON_TX_NAME "PDU_alwayson_tx" +#define CAN1_PDU_RESPONSE_PDU_SHUTDOWN_CIRCUIT_TX_NAME "PDU_shutdown_circuit_tx" +#define CAN1_PDU_RESPONSE_PDU_LIDAR_TX_NAME "PDU_lidar_tx" +#define CAN1_PDU_RESPONSE_PDU_ACU_TX_NAME "PDU_ACU_tx" +#define CAN1_PDU_RESPONSE_PDU_SERVOS_REGLER_TX_NAME "PDU_servos_regler_tx" +#define CAN1_PDU_RESPONSE_PDU_INVERTER_TX_NAME "PDU_inverter_tx" +#define CAN1_PDU_RESPONSE_PDU_MISC_TX_NAME "PDU_misc_tx" +#define CAN1_PDU_RESPONSE_PDU_SERVO_TX_NAME "PDU_servo_tx" +#define CAN1_PDU_RESPONSE_PDU_EBS_VALVE_1_TX_NAME "PDU_ebs_valve_1_tx" +#define CAN1_PDU_RESPONSE_PDU_EBS_VALVE_2_TX_NAME "PDU_ebs_valve_2_tx" +#define CAN1_PDU_RESPONSE_PDU_CS_VALVE_TX_NAME "PDU_cs_valve_tx" +#define CAN1_PDU_RESPONSE_PDU_AGGREGAT_TX_NAME "PDU_aggregat_tx" +#define CAN1_PDU_RESPONSE_PDU_STEERING_TX_NAME "PDU_steering_tx" +#define CAN1_PDU_RESPONSE_PDU_PWM_TSAC_FANS_NAME "PDU_PWM_TSAC_fans" +#define CAN1_PDU_RESPONSE_PDU_PWM_RADIATOT_FANS_TX_NAME "PDU_PWM_radiatot_fans_tx" +#define CAN1_PDU_RESPONSE_PDU_PWM_AGGREGAT_NAME "PDU_PWM_aggregat" +#define CAN1_PDU_RESPONSE_PDU_PWM_PUMP_NAME "PDU_PWM_pump" +#define CAN1_PDU_RESPONSE_PDU_HEARTBEAT_OK_TX_NAME "PDU_heartbeat_ok_tx" +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_NAME "Mission_selection" +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_NAME "Mission_selection" +#define CAN1_EPSC_OUT_EPSC_MEASURED_RPM_NAME "EPSC_measured_rpm" +#define CAN1_EPSC_OUT_EPSC_MEASURED_STEERING_ANGLE_NAME "EPSC_measured_steering_angle" +#define CAN1_EPSC_OUT_EPSC_MEASURED_MOSFET_TEMPERATURE_NAME "EPSC_measured_MOSFET_temperature" +#define CAN1_EPSC_OUT_EPSC_MEASURED_VOLTAGE_NAME "EPSC_measured_voltage" +#define CAN1_EPSC_OUT_EPSC_MEASURED_CURRENT_NAME "EPSC_measured_current" +#define CAN1_EPSC_STEERING_IN_EPSC_DESIRED_STEERING_ANGLE_NAME "EPSC_desired_steering_angle" +#define CAN1_STW_BUTTONS_STW_BUTTON_DRS_NAME "STW_button_DRS" +#define CAN1_STW_BUTTONS_STW_BUTTON_1_NAME "STW_button_1" +#define CAN1_STW_BUTTONS_STW_BUTTON_2_NAME "STW_button_2" +#define CAN1_STW_BUTTONS_STW_BUTTON_3_NAME "STW_button_3" +#define CAN1_STW_BUTTONS_STW_BUTTON_4_NAME "STW_button_4" +#define CAN1_STW_STATUS_LAP_COUNT_NAME "Lap_Count" +#define CAN1_STW_STATUS_ERR_PDU_NAME "ERR_PDU" +#define CAN1_STW_STATUS_ERR_RES_NAME "ERR_RES" +#define CAN1_STW_STATUS_R2_D_PROGRESS_NAME "R2D_Progress" +#define CAN1_STW_STATUS_AS_STATE_STW_NAME "AS_State_STW" +#define CAN1_STW_STATUS_ERR_AS_NAME "ERR_AS" +#define CAN1_STW_STATUS_ERR_APP_SP_NAME "ERR_APPSp" +#define CAN1_STW_STATUS_ERR_S_BSPD_NAME "ERR_sBSPD" +#define CAN1_STW_STATUS_ERR_SCS_NAME "ERR_SCS" +#define CAN1_STW_STATUS_ERR_CON_MON_NAME "ERR_ConMon" +#define CAN1_STW_STATUS_ERR_INI_CHK_NAME "ERR_IniChk" +#define CAN1_STW_STATUS_ERR_INV2_NAME "ERR_Inv2" +#define CAN1_STW_STATUS_ERR_INV1_NAME "ERR_Inv1" +#define CAN1_STW_STATUS_ERR_AMS_NAME "ERR_AMS" +#define CAN1_STW_STATUS_ERR_SDC_NAME "ERR_SDC" +#define CAN1_STW_STATUS_SDC_STATUS_NAME "SDC_Status" +#define CAN1_STW_STATUS_INV2_READY_NAME "Inv2_ready" +#define CAN1_STW_STATUS_INV1_READY_NAME "Inv1_ready" +#define CAN1_STW_STATUS_ENERGY_PER_LAP_NAME "Energy_per_Lap" +#define CAN1_STW_STATUS_INI_CHK_STATE_NAME "iniChk_state" +#define CAN1_PDU_CURRENT_1_PDU_ALWAYS_ON_CURRENT_NAME "PDU_always_on_current" +#define CAN1_PDU_CURRENT_1_PDU_LVMS_CURRENT_NAME "PDU_LVMS_current" +#define CAN1_PDU_CURRENT_1_PDU_ASMS_CURRENT_NAME "PDU_ASMS_current" +#define CAN1_PDU_CURRENT_1_PDU_MISC_CURRENT_NAME "PDU_MISC_current" +#define CAN1_PDU_CURRENT_2_PDU_SDC_CURRENT_NAME "PDU_SDC_current" +#define CAN1_PDU_CURRENT_2_PDU_INVERTER_CURRENT_NAME "PDU_Inverter_current" +#define CAN1_PDU_CURRENT_2_PDU_TS_COOLING_CURRENT_NAME "PDU_TS_Cooling_current" +#define CAN1_PDU_CURRENT_2_PDU_ACC_COOLING_CURRENT_NAME "PDU_ACC_Cooling_current" +#define CAN1_PDU_CURRENT_3_PDU_LIDAR_CURRENT_NAME "PDU_Lidar_current" +#define CAN1_PDU_CURRENT_3_PDU_DRS_CURRENT_NAME "PDU_DRS_current" +#define CAN1_PDU_CURRENT_3_PDU_EPSC_CURRENT_NAME "PDU_EPSC_current" +#define CAN1_PDU_CURRENT_3_PDU_ACU_CURRENT_NAME "PDU_ACU_current" +#define CAN1_PDU_CURRENT_4_PDU_EBS_A_CURRENT_NAME "PDU_EBS_A_current" +#define CAN1_PDU_CURRENT_4_PDU_EBS_B_CURRENT_NAME "PDU_EBS_B_current" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_P_GAIN_NAME "EPSC_Config_P_Gain" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_I_GAIN_NAME "EPSC_Config_I_Gain" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_D_GAIN_NAME "EPSC_Config_D_Gain" + +/** + * Signals in message Inverter_Velocity. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_velocity_t { + /** + * Range: -2147483648..2147483647 (-2147483.648..2147483.647 -) + * Scale: 0.001 + * Offset: 0 + */ + int32_t inverter_1_velocity; + + /** + * Range: -2147483648..2147483647 (-2147483.648..2147483.647 -) + * Scale: 0.001 + * Offset: 0 + */ + int32_t inverter_2_velocity; +}; + +/** + * Signals in message Inverter_Errors_Warnings. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_errors_warnings_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_errors; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_warnings; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_errors; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_warnings; +}; + +/** + * Signals in message Inverter_Torque_Actual_CW. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_torque_actual_cw_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_control_word; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_actual; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_control_word; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_actual; +}; + +/** + * Signals in message Inverter_Temperatur. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_temperatur_t { + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_temp_inv; + + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_temp_mot; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_temp_inv; + + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_temp_mot; +}; + +/** + * Signals in message Inverter_Torque_wanted. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_torque_wanted_t { + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_demanded; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_demanded; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_desired; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_desired; +}; + +/** + * Signals in message SDO_Telemetrie_Rx_Node1. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_rx_node1_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message SDO_Telemetrie_Rx_Node2. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_rx_node2_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message SDO_Telemetrie_Tx. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_tx_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message Laptop_SDO_Node. + * + * All signal values are as on the CAN bus. + */ +struct can1_laptop_sdo_node_t { + /** + * 0: beide Nodes + * 1: Node 1 + * 2: Node 2 + * + * Range: 0..3 (0..3 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t node_id_sdo; +}; + +/** + * Signals in message XSens_LongLat. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_long_lat_t { + /** + * Range: -2147483648..2147483647 (-127.9999..127.9999 deg) + * Scale: 5.96046e-08 + * Offset: 0 + */ + int32_t x_sens_latitude; + + /** + * Range: -2147483648..2147483647 (-255.99938..255.99938 deg) + * Scale: 1.19209e-07 + * Offset: 0 + */ + int32_t x_sens_longitude; +}; + +/** + * Signals in message XSens_rateofturn. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_rateofturn_t { + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gyr_x; + + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gy_y; + + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gy_z; +}; + +/** + * Signals in message XSens_Acceleration. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_acceleration_t { + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_x; + + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_y; + + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_z; +}; + +/** + * Signals in message XSens_Velocity. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_velocity_t { + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_x; + + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_y; + + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_z; +}; + +/** + * Signals in message Telemetrie. + * + * All signal values are as on the CAN bus. + */ +struct can1_telemetrie_t { + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ini_check_error_state; + + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t powermap; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t apps_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t brake_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t allow_torque; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t asp_ok; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pressure_sensor_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t torque_vectoring_on; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t reku_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t traction_control_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_deactivate; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_limit; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t power_limit; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_limit_dynamisch; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_ohne_limit_l; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_ohne_limit_r; +}; + +/** + * Signals in message Override_Powermap. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_powermap_t { + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptopp_power_map; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_reku; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_tc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_tv; + + /** + * Range: 0..255 (0..2.55 -) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t laptop_slipref; + + /** + * Range: 0..65535 (0..6553.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t laptop_tc_i; + + /** + * Range: 0..655350 (0..65535 -) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t laptop_tc_p; + + /** + * Range: 0..255 (1..3.55 -) + * Scale: 0.01 + * Offset: 1 + */ + uint8_t laptop_tc_mumax; +}; + +/** + * Signals in message Override_Laptop_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_laptop_2_t { + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_mission; + + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_state; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t manual_input_torque; + + /** + * Range: 0..80 (0..80 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_powerlimit; + + /** + * Range: 0..150 (0..1500 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t laptop_torque_lim; +}; + +/** + * Signals in message Override_EPSC_Cooling. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_epsc_cooling_t { + /** + * Range: -512..511 (-512..511 -) + * Scale: 1 + * Offset: 0 + */ + int16_t epsc_manual_angle; + + /** + * Range: 0..3 (0..3 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t epsc_mode; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ac_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_cooling_enable; + + /** + * Range: 0..255 (0..1.275 -) + * Scale: 0.005 + * Offset: 0 + */ + uint8_t ac_cooling_pwm; + + /** + * Range: 0..255 (0..1.275 -) + * Scale: 0.005 + * Offset: 0 + */ + uint8_t ts_cooling_pwm; +}; + +/** + * Signals in message Override_Laptop. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_laptop_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_r2_d; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_soundbox_emergency; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_soundbox_r2_d; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_ts_active; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_apps; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_as_mission; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_as_state; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_epsc_mode; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_ac_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_acu_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_drs_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_epsc_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_heartbeat; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_lidar_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_pn_v1_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_pn_v2_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_ts_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_power_map; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_tc_parameter; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_torque_input; +}; + +/** + * Signals in message APPS_Override. + * + * All signal values are as on the CAN bus. + */ +struct can1_apps_override_t { + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_0_max; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_0_min; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_1_max; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_1_min; +}; + +/** + * Signals in message FTCU_Damper. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_damper_t { + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_fl; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_fr; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_rl; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_rr; +}; + +/** + * Signals in message FTCU_ParamConfirm. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_param_confirm_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_param_confirm; +}; + +/** + * Signals in message Sensornode_F_10Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_10_hz_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ls_l; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ls_r; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_pre_bots; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_ins; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_bspd; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_fl; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_fr; +}; + +/** + * Signals in message Sensornode_F_100Hz_1. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_100_hz_1_t { + /** + * Range: 0..255 (0..1 -) + * Scale: 0.00392157 + * Offset: 0 + */ + uint8_t apps_1; + + /** + * Range: 0..255 (0..1 -) + * Scale: 0.00392157 + * Offset: 0 + */ + uint8_t apps_2; + + /** + * Range: 0..255 (0..510 -) + * Scale: 2 + * Offset: 0 + */ + uint8_t bp_f; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sas; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_fl; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_fr; +}; + +/** + * Signals in message Sensornode_F_100Hz_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_100_hz_2_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_fl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_fr; +}; + +/** + * Signals in message Sensornode_F_1kHz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_1k_hz_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_fl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_fr; +}; + +/** + * Signals in message Sensornode_R_10Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_10_hz_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ext_ts_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_pre_tsms; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_tsms; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_rl; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_rr; + + /** + * Range: 0..255 (0..255 degC) + * Scale: 1 + * Offset: 0 + */ + uint8_t wt_bat; + + /** + * Range: 0..255 (0..255 degC) + * Scale: 1 + * Offset: 0 + */ + uint8_t wt_dt; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t wp_bat; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t wp_dt; +}; + +/** + * Signals in message Sensornode_R_100Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_100_hz_t { + /** + * Range: 0..255 (0..25.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t ebs_aps_1; + + /** + * Range: 0..255 (0..25.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t ebs_aps_2; + + /** + * Range: 0..255 (0..510 -) + * Scale: 2 + * Offset: 0 + */ + uint8_t bp_r; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_rl; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_rr; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_rl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_rr; +}; + +/** + * Signals in message Sensornode_R_1kHz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_1k_hz_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_rl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_rr; +}; + +/** + * Signals in message PWM_DutyCycle. + * + * All signal values are as on the CAN bus. + */ +struct can1_pwm_duty_cycle_t { + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_drs; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_assi_y; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_assi_b; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_bl; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_fans_dt; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_fans_bat; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_sbx; +}; + +/** + * Signals in message PWM_Config. + * + * All signal values are as on the CAN bus. + */ +struct can1_pwm_config_t { + /** + * DRS+Lighting,Default=500Hz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm1_drs_lighting; + + /** + * Fans,Default=20kHz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm3_fans; + + /** + * SBX,Default=313Hz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm2_sbx; +}; + +/** + * Signals in message Dashboard_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_dashboard_in_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_r2_d_button; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_ts_activate_button; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_race_key; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_sdc_in; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_sdc_out; +}; + +/** + * Signals in message AMS_Slave1Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave2_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave2_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave2_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave2_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave2_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave2_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave5_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave4_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave3_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave2_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave1_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave5_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave4_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave3_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave1_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave5_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave4_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave3_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave1_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave5_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave4_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave3_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave1_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave5_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave4_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave3_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave1_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave5_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave4_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave3_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave1_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave5_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave4_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave3_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave1_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message PDU_Heartbeat. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_heartbeat_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t pdu_heartbeat; +}; + +/** + * Signals in message FTCU_Pneumatik. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_pneumatik_t { + /** + * Range: 0..4095 (0..40.95 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_tank_pressure_1; + + /** + * Range: 0..40950 (0..409.5 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_tank_pressure_2; +}; + +/** + * Signals in message ACU_TX_Commands. + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_tx_commands_t { + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_fl; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_fr; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_rl; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_rr; + + /** + * Range: -128..127 (-2.00784..1.99216 -) + * Scale: 0.0156863 + * Offset: 0 + */ + int8_t abx_steering_angle_left; + + /** + * Range: -128..127 (-2.00784..1.99216 -) + * Scale: 0.0156863 + * Offset: 0 + */ + int8_t abx_steering_angle_right; +}; + +/** + * Signals in message ACU_RX_Commands. + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_rx_commands_t { + /** + * Range: 0..255 (0..306 -) + * Scale: 1.2 + * Offset: 0 + */ + uint8_t acu_speed_target_left; + + /** + * Range: 0..255 (0..306 m/s) + * Scale: 1.2 + * Offset: 0 + */ + uint8_t acu_speed_target_right; + + /** + * Range: -128..127 (-2.048..2.032 -) + * Scale: 0.016 + * Offset: 0 + */ + int8_t acu_steering_angle_right; + + /** + * Range: -128..127 (-2.048..2.032 -) + * Scale: 0.016 + * Offset: 0 + */ + int8_t acu_steering_angle_left; +}; + +/** + * Signals in message ACU_RX. + * + * Cycle Time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_rx_t { + /** + * Range: 0..1 (0..1 Bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_mission_complete; + + /** + * Range: 0..1 (0..1 Bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_ok; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_drs; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_lap_count; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_cones_all; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_cones_actual; +}; + +/** + * Signals in message AMS_Slave0_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave0_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave0_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave0_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave0_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave0_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message ACU_TX. + * + * Cycle Time: 50ms + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_tx_t { + /** + * AS Mission Selection + * + * Range: 0..7 (0..7 int) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_mission; + + /** + * Range: 0..5 (0..5 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_state; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_power_off; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_reset; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_allow_torque; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t abx_con_mon_error; +}; + +/** + * Signals in message AMS_Slave5Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave4Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..1000 (0..1 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..1000 (0..1 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave3Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave2Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Error. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_error_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_error_kind; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_error_arg; +}; + +/** + * Signals in message FTCU_Cooling. + * + * Cycle time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_cooling_t { + /** + * Range: 0..255 (0..2.55 bar) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t ftcu_water_pressure_2; + + /** + * Range: 0..255 (0..2.55 bar) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t ftcu_water_pressure_1; + + /** + * Range: 0..1023 (0..102.3 Deg) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_water_temperature_1; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_water_temperature_2; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_flow_rate; +}; + +/** + * Signals in message FTCU_BrakeT. + * + * Cycle time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_brake_t_t { + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_fl; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_fr; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_rl; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_rr; +}; + +/** + * Signals in message FTCU_Wheelspeed. + * + * Cycle time: 10ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_wheelspeed_t { + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_fl; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_fr; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_rl; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_rr; + + /** + * Range: 0..65535 (0..65535 m) + * Scale: 1 + * Offset: 0 + */ + uint16_t ftcu_distance_session; +}; + +/** + * Signals in message FTCU_Timings. + * + * Cycle time: 1s + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_timings_t { + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_laptime_best; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_laptime_last; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_sectortime_best; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_sectortime_last; +}; + +/** + * Signals in message FTCU_Driver. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_driver_t { + /** + * Range: 0..100 (0..100 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_apps_percent; + + /** + * Range: 0..1600 (0..160 bar) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_brake_pressure_f; + + /** + * Range: 0..1600 (0..160 bar) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_brake_pressure_r; + + /** + * Range: -128..127 (-128..127 Deg) + * Scale: 1 + * Offset: 0 + */ + int8_t ftcu_steering_angle; + + /** + * Range: 0..255 (0..51 m/s) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t ftcu_speed; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_lapcounter; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_sectorcounter; +}; + +/** + * Signals in message TTS_RR. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_rr_t { + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outet_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_RL. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_rl_t { + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_FR. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_fr_t { + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_FL. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_fl_t { + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message STW_Param_Set. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_param_set_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint16_t stw_param_set; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_slipref; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_mumax; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_i; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_plim; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tlim; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_p; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_reku; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tv_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_discipline; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_slim; +}; + +/** + * Signals in message AMS_Slave0Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: -128..127 (-128..127 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message SSU_Message. + * + * All signal values are as on the CAN bus. + */ +struct can1_ssu_message_t { + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t ssu_pressure; + + /** + * Range: -200..800 (-20..80 degC) + * Scale: 0.1 + * Offset: 0 + */ + int16_t ssu_air_temp; +}; + +/** + * Signals in message AMS_Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_state; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_closed; + + /** + * Range: 0..100 (0..100 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t soc; + + /** + * Range: 0..65535 (0..65.535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t min_cell_volt; + + /** + * Range: 0..65535 (0..4095.94 degC) + * Scale: 0.0625 + * Offset: 0 + */ + uint16_t max_cell_temp; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_imd_state; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_imd_ok; +}; + +/** + * Signals in message AMS_SlavePanic. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave_panic_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_panic_slave_id; + + /** + * Range: 0..72057600000000000 (0..7.20576e+16 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_panic_kind; + + /** + * Range: 0..72057600000000000 (0..7.20576e+16 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_panic_arg; +}; + +/** + * Signals in message AMS_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_in_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_activate; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t inverters_discharged; + + /** + * Range: 0..64 (0..64 Laps) + * Scale: 1 + * Offset: 0 + */ + uint8_t lap_number; +}; + +/** + * Signals in message Shunt_Current. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_current_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 A) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_current; +}; + +/** + * Signals in message Shunt_Voltage1. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage1_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage1; +}; + +/** + * Signals in message Shunt_Voltage2. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage2_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage2; +}; + +/** + * Signals in message Shunt_Voltage3. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage3_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage3; +}; + +/** + * Signals in message Shunt_Temperature. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_temperature_t { + /** + * Range: 0..10000 (0..1000 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint32_t shunt_temperature; +}; + +/** + * Signals in message PDU_Command. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_command_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_misc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_sdc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_inverter; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ts_cooling; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_acc_cooling; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_lldar; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_drs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_epsc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_acu; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_a; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_b; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_c; +}; + +/** + * Signals in message PDU_Response. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_response_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_alwayson_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_shutdown_circuit_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_lidar_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_acu_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_servos_regler_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_inverter_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_misc_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_servo_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_ebs_valve_1_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_ebs_valve_2_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_cs_valve_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_aggregat_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_steering_tx; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_tsac_fans; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_radiatot_fans_tx; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_aggregat; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_pump; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_heartbeat_ok_tx; +}; + +/** + * Signals in message AS_Mission_fb. + * + * All signal values are as on the CAN bus. + */ +struct can1_as_mission_fb_t { + /** + * Range: 1..7 (1..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t mission_selection; +}; + +/** + * Signals in message STW_mission_selected. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_mission_selected_t { + /** + * Range: 1..7 (1..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t mission_selection; +}; + +/** + * Signals in message EPSC_out. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_out_t { + /** + * Range: -32768..32767 (-3276.8..3276.7 rpm) + * Scale: 0.1 + * Offset: 0 + */ + int16_t epsc_measured_rpm; + + /** + * Range: 0..36000 (0..360 deg) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_measured_steering_angle; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t epsc_measured_mosfet_temperature; + + /** + * Range: 0..1023 (0..102.3 V) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t epsc_measured_voltage; + + /** + * Range: 0..255 (0..25.5 A) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t epsc_measured_current; +}; + +/** + * Signals in message EPSC_Steering_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_steering_in_t { + /** + * Range: 0..0 (-0.0512..0.0511 -) + * Scale: 1 + * Offset: 0 + */ + int16_t epsc_desired_steering_angle; +}; + +/** + * Signals in message STW_buttons. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_buttons_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_drs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_1; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_2; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_3; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_4; +}; + +/** + * Signals in message STW_status. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_status_t { + /** + * Range: 0..64 (0..64 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t lap_count; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_pdu; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_res; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t r2_d_progress; + + /** + * Range: 0..5 (0..5 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_state_stw; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_as; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_app_sp; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_s_bspd; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_scs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_con_mon; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_ini_chk; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_inv2; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_inv1; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_ams; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_sdc; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_status; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t inv2_ready; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t inv1_ready; + + /** + * Range: 0..65535 (0..65.535 kWh) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t energy_per_lap; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ini_chk_state; +}; + +/** + * Signals in message PDU_Current_1. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_1_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_always_on_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_lvms_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_asms_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_misc_current; +}; + +/** + * Signals in message PDU_Current_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_2_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_sdc_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_inverter_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ts_cooling_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_acc_cooling_current; +}; + +/** + * Signals in message PDU_Current_3. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_3_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_lidar_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_drs_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_epsc_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_acu_current; +}; + +/** + * Signals in message PDU_Current_4. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_4_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ebs_a_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ebs_b_current; +}; + +/** + * Signals in message EPSC_Config_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_config_in_t { + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_p_gain; + + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_i_gain; + + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_d_gain; +}; + +/** + * Pack message Inverter_Velocity. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_velocity_pack( + uint8_t *dst_p, + const struct can1_inverter_velocity_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Velocity. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_velocity_unpack( + struct can1_inverter_velocity_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Velocity. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_velocity_init(struct can1_inverter_velocity_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_inverter_velocity_inverter_1_velocity_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_velocity_inverter_1_velocity_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_velocity_inverter_1_velocity_is_in_range(int32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_inverter_velocity_inverter_2_velocity_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_velocity_inverter_2_velocity_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_velocity_inverter_2_velocity_is_in_range(int32_t value); + +/** + * Pack message Inverter_Errors_Warnings. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_errors_warnings_pack( + uint8_t *dst_p, + const struct can1_inverter_errors_warnings_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Errors_Warnings. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_errors_warnings_unpack( + struct can1_inverter_errors_warnings_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Errors_Warnings. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_errors_warnings_init(struct can1_inverter_errors_warnings_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_1_errors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_1_errors_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_1_errors_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_1_warnings_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_1_warnings_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_1_warnings_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_2_errors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_2_errors_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_2_errors_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_2_warnings_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_2_warnings_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_2_warnings_is_in_range(uint16_t value); + +/** + * Pack message Inverter_Torque_Actual_CW. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_torque_actual_cw_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_actual_cw_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Torque_Actual_CW. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_torque_actual_cw_unpack( + struct can1_inverter_torque_actual_cw_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Torque_Actual_CW. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_torque_actual_cw_init(struct can1_inverter_torque_actual_cw_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_torque_actual_cw_inverter_1_control_word_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_1_control_word_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_1_control_word_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_actual_cw_inverter_1_torque_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_1_torque_actual_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_1_torque_actual_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_torque_actual_cw_inverter_2_control_word_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_2_control_word_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_2_control_word_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_actual_cw_inverter_2_torque_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_2_torque_actual_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_2_torque_actual_is_in_range(int16_t value); + +/** + * Pack message Inverter_Temperatur. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_temperatur_pack( + uint8_t *dst_p, + const struct can1_inverter_temperatur_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Temperatur. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_temperatur_unpack( + struct can1_inverter_temperatur_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Temperatur. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_temperatur_init(struct can1_inverter_temperatur_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_1_temp_inv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_1_temp_inv_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_1_temp_inv_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_1_temp_mot_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_1_temp_mot_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_1_temp_mot_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_2_temp_inv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_2_temp_inv_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_2_temp_inv_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_2_temp_mot_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_2_temp_mot_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_2_temp_mot_is_in_range(int16_t value); + +/** + * Pack message Inverter_Torque_wanted. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_torque_wanted_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_wanted_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Torque_wanted. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_torque_wanted_unpack( + struct can1_inverter_torque_wanted_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Torque_wanted. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_torque_wanted_init(struct can1_inverter_torque_wanted_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_1_torque_demanded_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_1_torque_demanded_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_1_torque_demanded_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_2_torque_demanded_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_2_torque_demanded_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_2_torque_demanded_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_1_torque_desired_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_1_torque_desired_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_1_torque_desired_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_2_torque_desired_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_2_torque_desired_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_2_torque_desired_is_in_range(int16_t value); + +/** + * Pack message SDO_Telemetrie_Rx_Node1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_rx_node1_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node1_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Rx_Node1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_rx_node1_unpack( + struct can1_sdo_telemetrie_rx_node1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Rx_Node1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_rx_node1_init(struct can1_sdo_telemetrie_rx_node1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node1_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_rx_node1_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node1_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_rx_node1_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message SDO_Telemetrie_Rx_Node2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_rx_node2_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node2_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Rx_Node2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_rx_node2_unpack( + struct can1_sdo_telemetrie_rx_node2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Rx_Node2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_rx_node2_init(struct can1_sdo_telemetrie_rx_node2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node2_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_rx_node2_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node2_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_rx_node2_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message SDO_Telemetrie_Tx. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_tx_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_tx_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Tx. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_tx_unpack( + struct can1_sdo_telemetrie_tx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Tx. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_tx_init(struct can1_sdo_telemetrie_tx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_tx_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_tx_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_tx_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_tx_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message Laptop_SDO_Node. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_laptop_sdo_node_pack( + uint8_t *dst_p, + const struct can1_laptop_sdo_node_t *src_p, + size_t size); + +/** + * Unpack message Laptop_SDO_Node. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_laptop_sdo_node_unpack( + struct can1_laptop_sdo_node_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Laptop_SDO_Node. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_laptop_sdo_node_init(struct can1_laptop_sdo_node_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_laptop_sdo_node_node_id_sdo_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_laptop_sdo_node_node_id_sdo_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_laptop_sdo_node_node_id_sdo_is_in_range(uint8_t value); + +/** + * Pack message XSens_LongLat. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_long_lat_pack( + uint8_t *dst_p, + const struct can1_x_sens_long_lat_t *src_p, + size_t size); + +/** + * Unpack message XSens_LongLat. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_long_lat_unpack( + struct can1_x_sens_long_lat_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_LongLat. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_long_lat_init(struct can1_x_sens_long_lat_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_x_sens_long_lat_x_sens_latitude_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_long_lat_x_sens_latitude_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_long_lat_x_sens_latitude_is_in_range(int32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_x_sens_long_lat_x_sens_longitude_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_long_lat_x_sens_longitude_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_long_lat_x_sens_longitude_is_in_range(int32_t value); + +/** + * Pack message XSens_rateofturn. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_rateofturn_pack( + uint8_t *dst_p, + const struct can1_x_sens_rateofturn_t *src_p, + size_t size); + +/** + * Unpack message XSens_rateofturn. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_rateofturn_unpack( + struct can1_x_sens_rateofturn_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_rateofturn. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_rateofturn_init(struct can1_x_sens_rateofturn_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gyr_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gyr_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gyr_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gy_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gy_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gy_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gy_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gy_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gy_z_is_in_range(int16_t value); + +/** + * Pack message XSens_Acceleration. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_acceleration_pack( + uint8_t *dst_p, + const struct can1_x_sens_acceleration_t *src_p, + size_t size); + +/** + * Unpack message XSens_Acceleration. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_acceleration_unpack( + struct can1_x_sens_acceleration_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_Acceleration. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_acceleration_init(struct can1_x_sens_acceleration_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_z_is_in_range(int16_t value); + +/** + * Pack message XSens_Velocity. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_velocity_pack( + uint8_t *dst_p, + const struct can1_x_sens_velocity_t *src_p, + size_t size); + +/** + * Unpack message XSens_Velocity. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_velocity_unpack( + struct can1_x_sens_velocity_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_Velocity. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_velocity_init(struct can1_x_sens_velocity_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_z_is_in_range(int16_t value); + +/** + * Pack message Telemetrie. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_telemetrie_pack( + uint8_t *dst_p, + const struct can1_telemetrie_t *src_p, + size_t size); + +/** + * Unpack message Telemetrie. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_telemetrie_unpack( + struct can1_telemetrie_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Telemetrie. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_telemetrie_init(struct can1_telemetrie_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_ini_check_error_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_ini_check_error_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_ini_check_error_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_powermap_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_powermap_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_powermap_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_apps_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_apps_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_apps_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_brake_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_brake_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_brake_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_allow_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_allow_torque_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_allow_torque_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_asp_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_asp_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_asp_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_pressure_sensor_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_pressure_sensor_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_pressure_sensor_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_vectoring_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_vectoring_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_vectoring_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_reku_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_reku_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_reku_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_traction_control_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_traction_control_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_traction_control_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_ts_deactivate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_ts_deactivate_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_ts_deactivate_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_limit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_limit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_limit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_power_limit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_power_limit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_power_limit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_limit_dynamisch_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_limit_dynamisch_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_limit_dynamisch_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_ohne_limit_l_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_ohne_limit_l_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_ohne_limit_l_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_ohne_limit_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_ohne_limit_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_ohne_limit_r_is_in_range(uint8_t value); + +/** + * Pack message Override_Powermap. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_powermap_pack( + uint8_t *dst_p, + const struct can1_override_powermap_t *src_p, + size_t size); + +/** + * Unpack message Override_Powermap. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_powermap_unpack( + struct can1_override_powermap_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Powermap. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_powermap_init(struct can1_override_powermap_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptopp_power_map_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptopp_power_map_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptopp_power_map_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_reku_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_reku_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_reku_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tv_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tv_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_slipref_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_slipref_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_slipref_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_powermap_laptop_tc_i_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_i_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_i_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_powermap_laptop_tc_p_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_p_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_p_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tc_mumax_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_mumax_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_mumax_is_in_range(uint8_t value); + +/** + * Pack message Override_Laptop_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_laptop_2_pack( + uint8_t *dst_p, + const struct can1_override_laptop_2_t *src_p, + size_t size); + +/** + * Unpack message Override_Laptop_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_laptop_2_unpack( + struct can1_override_laptop_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Laptop_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_laptop_2_init(struct can1_override_laptop_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_laptop_2_manual_input_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_manual_input_torque_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_manual_input_torque_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_laptop_powerlimit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_laptop_powerlimit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_laptop_powerlimit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_laptop_torque_lim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_laptop_torque_lim_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_laptop_torque_lim_is_in_range(uint8_t value); + +/** + * Pack message Override_EPSC_Cooling. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_epsc_cooling_pack( + uint8_t *dst_p, + const struct can1_override_epsc_cooling_t *src_p, + size_t size); + +/** + * Unpack message Override_EPSC_Cooling. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_epsc_cooling_unpack( + struct can1_override_epsc_cooling_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_EPSC_Cooling. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_epsc_cooling_init(struct can1_override_epsc_cooling_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_override_epsc_cooling_epsc_manual_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_epsc_manual_angle_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_epsc_manual_angle_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_epsc_mode_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_epsc_mode_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_epsc_mode_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ac_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ac_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ac_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ts_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ts_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ts_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ac_cooling_pwm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ac_cooling_pwm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ac_cooling_pwm_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ts_cooling_pwm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ts_cooling_pwm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ts_cooling_pwm_is_in_range(uint8_t value); + +/** + * Pack message Override_Laptop. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_laptop_pack( + uint8_t *dst_p, + const struct can1_override_laptop_t *src_p, + size_t size); + +/** + * Unpack message Override_Laptop. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_laptop_unpack( + struct can1_override_laptop_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Laptop. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_laptop_init(struct can1_override_laptop_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_r2_d_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_r2_d_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_r2_d_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_soundbox_emergency_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_soundbox_emergency_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_soundbox_emergency_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_soundbox_r2_d_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_soundbox_r2_d_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_soundbox_r2_d_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_ts_active_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_ts_active_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_ts_active_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_apps_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_apps_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_apps_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_epsc_mode_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_epsc_mode_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_epsc_mode_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_ac_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_ac_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_ac_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_acu_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_acu_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_acu_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_drs_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_drs_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_drs_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_epsc_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_epsc_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_epsc_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_heartbeat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_heartbeat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_heartbeat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_lidar_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_lidar_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_lidar_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_pn_v1_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_pn_v1_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_pn_v1_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_pn_v2_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_pn_v2_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_pn_v2_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_ts_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_ts_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_ts_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_power_map_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_power_map_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_power_map_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_tc_parameter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_tc_parameter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_tc_parameter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_torque_input_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_torque_input_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_torque_input_is_in_range(uint8_t value); + +/** + * Pack message APPS_Override. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_apps_override_pack( + uint8_t *dst_p, + const struct can1_apps_override_t *src_p, + size_t size); + +/** + * Unpack message APPS_Override. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_apps_override_unpack( + struct can1_apps_override_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from APPS_Override. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_apps_override_init(struct can1_apps_override_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_0_max_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_0_max_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_0_max_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_0_min_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_0_min_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_0_min_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_1_max_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_1_max_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_1_max_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_1_min_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_1_min_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_1_min_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Damper. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_damper_pack( + uint8_t *dst_p, + const struct can1_ftcu_damper_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Damper. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_damper_unpack( + struct can1_ftcu_damper_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Damper. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_damper_init(struct can1_ftcu_damper_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_fr_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_rr_is_in_range(uint16_t value); + +/** + * Pack message FTCU_ParamConfirm. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_param_confirm_pack( + uint8_t *dst_p, + const struct can1_ftcu_param_confirm_t *src_p, + size_t size); + +/** + * Unpack message FTCU_ParamConfirm. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_param_confirm_unpack( + struct can1_ftcu_param_confirm_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_ParamConfirm. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_param_confirm_init(struct can1_ftcu_param_confirm_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_param_confirm_ftcu_param_confirm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_param_confirm_ftcu_param_confirm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_param_confirm_ftcu_param_confirm_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_10Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_10_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_10Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_10_hz_unpack( + struct can1_sensornode_f_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_10Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_10_hz_init(struct can1_sensornode_f_10_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_ls_l_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_ls_l_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_ls_l_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_ls_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_ls_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_ls_r_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_pre_bots_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_pre_bots_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_pre_bots_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_post_ins_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_post_ins_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_post_ins_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_post_bspd_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_post_bspd_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_post_bspd_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_bdts_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_bdts_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_bdts_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_bdts_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_bdts_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_bdts_fr_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_100Hz_1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_100_hz_1_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_1_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_100Hz_1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_100_hz_1_unpack( + struct can1_sensornode_f_100_hz_1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_100Hz_1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_100_hz_1_init(struct can1_sensornode_f_100_hz_1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_apps_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_apps_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_apps_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_apps_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_apps_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_apps_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_bp_f_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_bp_f_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_bp_f_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_1_sas_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_sas_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_sas_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_wss_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_wss_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_wss_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_wss_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_wss_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_wss_fr_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_100Hz_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_100_hz_2_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_2_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_100Hz_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_100_hz_2_unpack( + struct can1_sensornode_f_100_hz_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_100Hz_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_100_hz_2_init(struct can1_sensornode_f_100_hz_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_2_ds_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_2_ds_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_2_ds_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_2_ds_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_2_ds_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_2_ds_fr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_F_1kHz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_1k_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_1kHz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_1k_hz_unpack( + struct can1_sensornode_f_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_1kHz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_1k_hz_init(struct can1_sensornode_f_1k_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_1k_hz_sls_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_1k_hz_sls_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_1k_hz_sls_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_1k_hz_sls_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_1k_hz_sls_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_1k_hz_sls_fr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_R_10Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_10_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_10Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_10_hz_unpack( + struct can1_sensornode_r_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_10Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_10_hz_init(struct can1_sensornode_r_10_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_ext_ts_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_ext_ts_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_ext_ts_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_sdc_m_pre_tsms_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_sdc_m_pre_tsms_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_sdc_m_pre_tsms_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_sdc_m_post_tsms_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_sdc_m_post_tsms_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_sdc_m_post_tsms_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_bdts_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_bdts_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_bdts_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_bdts_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_bdts_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_bdts_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wt_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wt_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wt_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wt_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wt_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wt_dt_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wp_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wp_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wp_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wp_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wp_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wp_dt_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_R_100Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_100_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_100_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_100Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_100_hz_unpack( + struct can1_sensornode_r_100_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_100Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_100_hz_init(struct can1_sensornode_r_100_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_ebs_aps_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ebs_aps_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ebs_aps_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_ebs_aps_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ebs_aps_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ebs_aps_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_bp_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_bp_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_bp_r_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_wss_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_wss_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_wss_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_wss_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_wss_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_wss_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_100_hz_ds_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ds_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ds_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_100_hz_ds_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ds_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ds_rr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_R_1kHz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_1k_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_1kHz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_1k_hz_unpack( + struct can1_sensornode_r_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_1kHz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_1k_hz_init(struct can1_sensornode_r_1k_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_1k_hz_sls_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_1k_hz_sls_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_1k_hz_sls_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_1k_hz_sls_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_1k_hz_sls_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_1k_hz_sls_rr_is_in_range(uint16_t value); + +/** + * Pack message PWM_DutyCycle. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pwm_duty_cycle_pack( + uint8_t *dst_p, + const struct can1_pwm_duty_cycle_t *src_p, + size_t size); + +/** + * Unpack message PWM_DutyCycle. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pwm_duty_cycle_unpack( + struct can1_pwm_duty_cycle_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PWM_DutyCycle. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pwm_duty_cycle_init(struct can1_pwm_duty_cycle_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_assi_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_assi_y_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_assi_y_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_assi_b_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_assi_b_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_assi_b_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_bl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_bl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_bl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_fans_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_fans_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_fans_dt_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_fans_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_fans_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_fans_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_sbx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_sbx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_sbx_is_in_range(uint8_t value); + +/** + * Pack message PWM_Config. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pwm_config_pack( + uint8_t *dst_p, + const struct can1_pwm_config_t *src_p, + size_t size); + +/** + * Unpack message PWM_Config. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pwm_config_unpack( + struct can1_pwm_config_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PWM_Config. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pwm_config_init(struct can1_pwm_config_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm1_drs_lighting_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm1_drs_lighting_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm1_drs_lighting_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm3_fans_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm3_fans_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm3_fans_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm2_sbx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm2_sbx_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm2_sbx_is_in_range(uint16_t value); + +/** + * Pack message Dashboard_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_dashboard_in_pack( + uint8_t *dst_p, + const struct can1_dashboard_in_t *src_p, + size_t size); + +/** + * Unpack message Dashboard_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_dashboard_in_unpack( + struct can1_dashboard_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Dashboard_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_dashboard_in_init(struct can1_dashboard_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_r2_d_button_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_r2_d_button_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_r2_d_button_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_ts_activate_button_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_ts_activate_button_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_ts_activate_button_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_race_key_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_race_key_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_race_key_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_sdc_in_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_sdc_in_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_sdc_in_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_sdc_out_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_sdc_out_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_sdc_out_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave1Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_status_unpack( + struct can1_ams_slave1_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_status_init(struct can1_ams_slave1_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave1_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave2_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log0_unpack( + struct can1_ams_slave2_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log0_init(struct can1_ams_slave2_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log1_unpack( + struct can1_ams_slave2_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log1_init(struct can1_ams_slave2_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log2_unpack( + struct can1_ams_slave2_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log2_init(struct can1_ams_slave2_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log3_unpack( + struct can1_ams_slave2_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log3_init(struct can1_ams_slave2_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log4_unpack( + struct can1_ams_slave2_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log4_init(struct can1_ams_slave2_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave2_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave2_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log5_unpack( + struct can1_ams_slave2_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log5_init(struct can1_ams_slave2_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log6_unpack( + struct can1_ams_slave5_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log6_init(struct can1_ams_slave5_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave4_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log6_unpack( + struct can1_ams_slave4_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log6_init(struct can1_ams_slave4_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave3_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log6_unpack( + struct can1_ams_slave3_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log6_init(struct can1_ams_slave3_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave2_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log6_unpack( + struct can1_ams_slave2_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log6_init(struct can1_ams_slave2_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave1_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log6_unpack( + struct can1_ams_slave1_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log6_init(struct can1_ams_slave1_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log5_unpack( + struct can1_ams_slave5_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log5_init(struct can1_ams_slave5_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave4_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log5_unpack( + struct can1_ams_slave4_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log5_init(struct can1_ams_slave4_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave3_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log5_unpack( + struct can1_ams_slave3_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log5_init(struct can1_ams_slave3_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave1_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log5_unpack( + struct can1_ams_slave1_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log5_init(struct can1_ams_slave1_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log4_unpack( + struct can1_ams_slave5_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log4_init(struct can1_ams_slave5_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave5_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave4_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log4_unpack( + struct can1_ams_slave4_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log4_init(struct can1_ams_slave4_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave4_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave3_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log4_unpack( + struct can1_ams_slave3_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log4_init(struct can1_ams_slave3_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave3_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave1_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log4_unpack( + struct can1_ams_slave1_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log4_init(struct can1_ams_slave1_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave1_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave5_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log3_unpack( + struct can1_ams_slave5_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log3_init(struct can1_ams_slave5_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log3_unpack( + struct can1_ams_slave4_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log3_init(struct can1_ams_slave4_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log3_unpack( + struct can1_ams_slave3_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log3_init(struct can1_ams_slave3_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log3_unpack( + struct can1_ams_slave1_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log3_init(struct can1_ams_slave1_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log2_unpack( + struct can1_ams_slave5_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log2_init(struct can1_ams_slave5_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log2_unpack( + struct can1_ams_slave4_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log2_init(struct can1_ams_slave4_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log2_unpack( + struct can1_ams_slave3_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log2_init(struct can1_ams_slave3_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log2_unpack( + struct can1_ams_slave1_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log2_init(struct can1_ams_slave1_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log1_unpack( + struct can1_ams_slave5_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log1_init(struct can1_ams_slave5_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log1_unpack( + struct can1_ams_slave4_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log1_init(struct can1_ams_slave4_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log1_unpack( + struct can1_ams_slave3_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log1_init(struct can1_ams_slave3_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log1_unpack( + struct can1_ams_slave1_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log1_init(struct can1_ams_slave1_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log0_unpack( + struct can1_ams_slave5_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log0_init(struct can1_ams_slave5_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log0_unpack( + struct can1_ams_slave4_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log0_init(struct can1_ams_slave4_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log0_unpack( + struct can1_ams_slave3_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log0_init(struct can1_ams_slave3_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log0_unpack( + struct can1_ams_slave1_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log0_init(struct can1_ams_slave1_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message PDU_Heartbeat. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_heartbeat_pack( + uint8_t *dst_p, + const struct can1_pdu_heartbeat_t *src_p, + size_t size); + +/** + * Unpack message PDU_Heartbeat. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_heartbeat_unpack( + struct can1_pdu_heartbeat_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Heartbeat. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_heartbeat_init(struct can1_pdu_heartbeat_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_pdu_heartbeat_pdu_heartbeat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_heartbeat_pdu_heartbeat_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_heartbeat_pdu_heartbeat_is_in_range(int8_t value); + +/** + * Pack message FTCU_Pneumatik. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_pneumatik_pack( + uint8_t *dst_p, + const struct can1_ftcu_pneumatik_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Pneumatik. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_pneumatik_unpack( + struct can1_ftcu_pneumatik_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Pneumatik. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_pneumatik_init(struct can1_ftcu_pneumatik_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_pneumatik_ftcu_tank_pressure_1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_pneumatik_ftcu_tank_pressure_1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_pneumatik_ftcu_tank_pressure_2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_pneumatik_ftcu_tank_pressure_2_is_in_range(uint16_t value); + +/** + * Pack message ACU_TX_Commands. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_tx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_tx_commands_t *src_p, + size_t size); + +/** + * Unpack message ACU_TX_Commands. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_tx_commands_unpack( + struct can1_acu_tx_commands_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_TX_Commands. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_tx_commands_init(struct can1_acu_tx_commands_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_fr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_tx_commands_abx_steering_angle_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_steering_angle_left_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_steering_angle_left_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_tx_commands_abx_steering_angle_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_steering_angle_right_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_steering_angle_right_is_in_range(int8_t value); + +/** + * Pack message ACU_RX_Commands. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_rx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_rx_commands_t *src_p, + size_t size); + +/** + * Unpack message ACU_RX_Commands. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_rx_commands_unpack( + struct can1_acu_rx_commands_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_RX_Commands. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_rx_commands_init(struct can1_acu_rx_commands_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_commands_acu_speed_target_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_speed_target_left_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_speed_target_left_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_commands_acu_speed_target_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_speed_target_right_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_speed_target_right_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_rx_commands_acu_steering_angle_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_steering_angle_right_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_steering_angle_right_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_rx_commands_acu_steering_angle_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_steering_angle_left_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_steering_angle_left_is_in_range(int8_t value); + +/** + * Pack message ACU_RX. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_rx_pack( + uint8_t *dst_p, + const struct can1_acu_rx_t *src_p, + size_t size); + +/** + * Unpack message ACU_RX. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_rx_unpack( + struct can1_acu_rx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_RX. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_rx_init(struct can1_acu_rx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_as_mission_complete_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_as_mission_complete_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_as_mission_complete_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_as_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_as_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_as_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_lap_count_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_lap_count_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_lap_count_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_cones_all_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_cones_all_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_cones_all_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_cones_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_cones_actual_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_cones_actual_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave0_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log0_unpack( + struct can1_ams_slave0_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log0_init(struct can1_ams_slave0_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log1_unpack( + struct can1_ams_slave0_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log1_init(struct can1_ams_slave0_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log3_unpack( + struct can1_ams_slave0_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log3_init(struct can1_ams_slave0_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log4_unpack( + struct can1_ams_slave0_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log4_init(struct can1_ams_slave0_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave0_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave0_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log5_unpack( + struct can1_ams_slave0_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log5_init(struct can1_ams_slave0_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave0_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log6_unpack( + struct can1_ams_slave0_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log6_init(struct can1_ams_slave0_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message ACU_TX. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_tx_pack( + uint8_t *dst_p, + const struct can1_acu_tx_t *src_p, + size_t size); + +/** + * Unpack message ACU_TX. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_tx_unpack( + struct can1_acu_tx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_TX. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_tx_init(struct can1_acu_tx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_power_off_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_power_off_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_power_off_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_reset_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_reset_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_reset_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_allow_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_allow_torque_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_allow_torque_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_abx_con_mon_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_abx_con_mon_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_abx_con_mon_error_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave5Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_status_unpack( + struct can1_ams_slave5_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_status_init(struct can1_ams_slave5_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave5_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave4Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_status_unpack( + struct can1_ams_slave4_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_status_init(struct can1_ams_slave4_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave4_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave3Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_status_unpack( + struct can1_ams_slave3_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_status_init(struct can1_ams_slave3_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave3_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave2Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_status_unpack( + struct can1_ams_slave2_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_status_init(struct can1_ams_slave2_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave2_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Error. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_error_pack( + uint8_t *dst_p, + const struct can1_ams_error_t *src_p, + size_t size); + +/** + * Unpack message AMS_Error. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_error_unpack( + struct can1_ams_error_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Error. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_error_init(struct can1_ams_error_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_error_ams_error_kind_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_error_ams_error_kind_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_error_ams_error_kind_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_error_ams_error_arg_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_error_ams_error_arg_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_error_ams_error_arg_is_in_range(int8_t value); + +/** + * Pack message FTCU_Cooling. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_cooling_pack( + uint8_t *dst_p, + const struct can1_ftcu_cooling_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Cooling. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_cooling_unpack( + struct can1_ftcu_cooling_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Cooling. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_cooling_init(struct can1_ftcu_cooling_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_cooling_ftcu_water_pressure_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_pressure_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_pressure_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_cooling_ftcu_water_pressure_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_pressure_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_pressure_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_water_temperature_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_temperature_1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_temperature_1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_water_temperature_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_temperature_2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_temperature_2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_flow_rate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_flow_rate_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_flow_rate_is_in_range(uint16_t value); + +/** + * Pack message FTCU_BrakeT. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_brake_t_pack( + uint8_t *dst_p, + const struct can1_ftcu_brake_t_t *src_p, + size_t size); + +/** + * Unpack message FTCU_BrakeT. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_brake_t_unpack( + struct can1_ftcu_brake_t_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_BrakeT. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_brake_t_init(struct can1_ftcu_brake_t_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_fr_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_rr_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Wheelspeed. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_wheelspeed_pack( + uint8_t *dst_p, + const struct can1_ftcu_wheelspeed_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Wheelspeed. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_wheelspeed_unpack( + struct can1_ftcu_wheelspeed_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Wheelspeed. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_wheelspeed_init(struct can1_ftcu_wheelspeed_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_wheelspeed_ftcu_distance_session_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_distance_session_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_distance_session_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Timings. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_timings_pack( + uint8_t *dst_p, + const struct can1_ftcu_timings_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Timings. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_timings_unpack( + struct can1_ftcu_timings_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Timings. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_timings_init(struct can1_ftcu_timings_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_laptime_best_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_laptime_best_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_laptime_best_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_laptime_last_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_laptime_last_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_laptime_last_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_sectortime_best_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_sectortime_best_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_sectortime_best_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_sectortime_last_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_sectortime_last_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_sectortime_last_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Driver. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_driver_pack( + uint8_t *dst_p, + const struct can1_ftcu_driver_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Driver. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_driver_unpack( + struct can1_ftcu_driver_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Driver. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_driver_init(struct can1_ftcu_driver_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_apps_percent_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_apps_percent_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_apps_percent_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_driver_ftcu_brake_pressure_f_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_brake_pressure_f_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_brake_pressure_f_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_driver_ftcu_brake_pressure_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_brake_pressure_r_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_brake_pressure_r_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ftcu_driver_ftcu_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_steering_angle_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_steering_angle_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_speed_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_speed_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_speed_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_lapcounter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_lapcounter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_lapcounter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_sectorcounter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_sectorcounter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_sectorcounter_is_in_range(uint8_t value); + +/** + * Pack message TTS_RR. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_rr_pack( + uint8_t *dst_p, + const struct can1_tts_rr_t *src_p, + size_t size); + +/** + * Unpack message TTS_RR. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_rr_unpack( + struct can1_tts_rr_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_RR. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_rr_init(struct can1_tts_rr_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_outet_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_outet_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_outet_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_rr_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_RL. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_rl_pack( + uint8_t *dst_p, + const struct can1_tts_rl_t *src_p, + size_t size); + +/** + * Unpack message TTS_RL. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_rl_unpack( + struct can1_tts_rl_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_RL. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_rl_init(struct can1_tts_rl_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_rl_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_FR. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_fr_pack( + uint8_t *dst_p, + const struct can1_tts_fr_t *src_p, + size_t size); + +/** + * Unpack message TTS_FR. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_fr_unpack( + struct can1_tts_fr_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_FR. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_fr_init(struct can1_tts_fr_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_fr_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_FL. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_fl_pack( + uint8_t *dst_p, + const struct can1_tts_fl_t *src_p, + size_t size); + +/** + * Unpack message TTS_FL. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_fl_unpack( + struct can1_tts_fl_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_FL. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_fl_init(struct can1_tts_fl_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_fl_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_status_is_in_range(uint8_t value); + +/** + * Pack message STW_Param_Set. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_param_set_pack( + uint8_t *dst_p, + const struct can1_stw_param_set_t *src_p, + size_t size); + +/** + * Unpack message STW_Param_Set. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_param_set_unpack( + struct can1_stw_param_set_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_Param_Set. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_param_set_init(struct can1_stw_param_set_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_stw_param_set_stw_param_set_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_set_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_set_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_slipref_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_slipref_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_slipref_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_mumax_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_mumax_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_mumax_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_i_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_i_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_i_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_plim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_plim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_plim_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tlim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tlim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tlim_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_p_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_p_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_p_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_reku_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_reku_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_reku_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_on_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_on_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tv_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tv_on_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tv_on_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_discipline_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_discipline_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_discipline_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_slim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_slim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_slim_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave0Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_status_unpack( + struct can1_ams_slave0_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_status_init(struct can1_ams_slave0_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave0_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message SSU_Message. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ssu_message_pack( + uint8_t *dst_p, + const struct can1_ssu_message_t *src_p, + size_t size); + +/** + * Unpack message SSU_Message. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ssu_message_unpack( + struct can1_ssu_message_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SSU_Message. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ssu_message_init(struct can1_ssu_message_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ssu_message_ssu_pressure_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ssu_message_ssu_pressure_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ssu_message_ssu_pressure_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ssu_message_ssu_air_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ssu_message_ssu_air_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ssu_message_ssu_air_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_status_pack( + uint8_t *dst_p, + const struct can1_ams_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_status_unpack( + struct can1_ams_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_status_init(struct can1_ams_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_sdc_closed_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_sdc_closed_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_sdc_closed_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_soc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_soc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_soc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_status_max_cell_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_max_cell_temp_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_max_cell_temp_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_imd_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_imd_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_imd_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_imd_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_imd_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_imd_ok_is_in_range(uint8_t value); + +/** + * Pack message AMS_SlavePanic. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave_panic_pack( + uint8_t *dst_p, + const struct can1_ams_slave_panic_t *src_p, + size_t size); + +/** + * Unpack message AMS_SlavePanic. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave_panic_unpack( + struct can1_ams_slave_panic_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_SlavePanic. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave_panic_init(struct can1_ams_slave_panic_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave_panic_ams_slave_panic_slave_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_slave_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_slave_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave_panic_ams_slave_panic_kind_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_kind_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_kind_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave_panic_ams_slave_panic_arg_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_arg_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_arg_is_in_range(uint32_t value); + +/** + * Pack message AMS_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_in_pack( + uint8_t *dst_p, + const struct can1_ams_in_t *src_p, + size_t size); + +/** + * Unpack message AMS_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_in_unpack( + struct can1_ams_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_in_init(struct can1_ams_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_ts_activate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_ts_activate_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_ts_activate_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_inverters_discharged_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_inverters_discharged_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_inverters_discharged_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_lap_number_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_lap_number_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_lap_number_is_in_range(uint8_t value); + +/** + * Pack message Shunt_Current. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_current_pack( + uint8_t *dst_p, + const struct can1_shunt_current_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Current. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_current_unpack( + struct can1_shunt_current_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Current. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_current_init(struct can1_shunt_current_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_current_shunt_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_current_shunt_current_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_current_shunt_current_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage1_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage1_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage1_unpack( + struct can1_shunt_voltage1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage1_init(struct can1_shunt_voltage1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage1_shunt_voltage1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage1_shunt_voltage1_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage1_shunt_voltage1_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage2_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage2_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage2_unpack( + struct can1_shunt_voltage2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage2_init(struct can1_shunt_voltage2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage2_shunt_voltage2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage2_shunt_voltage2_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage2_shunt_voltage2_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage3_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage3_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage3_unpack( + struct can1_shunt_voltage3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage3_init(struct can1_shunt_voltage3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage3_shunt_voltage3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage3_shunt_voltage3_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage3_shunt_voltage3_is_in_range(int32_t value); + +/** + * Pack message Shunt_Temperature. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_temperature_pack( + uint8_t *dst_p, + const struct can1_shunt_temperature_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Temperature. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_temperature_unpack( + struct can1_shunt_temperature_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Temperature. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_temperature_init(struct can1_shunt_temperature_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_shunt_temperature_shunt_temperature_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_temperature_shunt_temperature_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_temperature_shunt_temperature_is_in_range(uint32_t value); + +/** + * Pack message PDU_Command. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_command_pack( + uint8_t *dst_p, + const struct can1_pdu_command_t *src_p, + size_t size); + +/** + * Unpack message PDU_Command. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_command_unpack( + struct can1_pdu_command_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Command. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_command_init(struct can1_pdu_command_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_misc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_misc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_misc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_sdc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_sdc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_sdc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_inverter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_inverter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_inverter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ts_cooling_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ts_cooling_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ts_cooling_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_acc_cooling_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_acc_cooling_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_acc_cooling_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_lldar_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_lldar_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_lldar_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_epsc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_epsc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_epsc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_acu_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_acu_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_acu_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_a_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_a_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_a_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_b_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_b_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_b_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_c_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_c_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_c_is_in_range(uint8_t value); + +/** + * Pack message PDU_Response. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_response_pack( + uint8_t *dst_p, + const struct can1_pdu_response_t *src_p, + size_t size); + +/** + * Unpack message PDU_Response. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_response_unpack( + struct can1_pdu_response_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Response. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_response_init(struct can1_pdu_response_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_alwayson_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_alwayson_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_alwayson_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_shutdown_circuit_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_shutdown_circuit_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_shutdown_circuit_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_lidar_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_lidar_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_lidar_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_acu_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_acu_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_acu_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_servos_regler_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_servos_regler_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_servos_regler_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_inverter_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_inverter_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_inverter_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_misc_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_misc_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_misc_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_servo_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_servo_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_servo_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_ebs_valve_1_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_ebs_valve_1_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_ebs_valve_1_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_ebs_valve_2_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_ebs_valve_2_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_ebs_valve_2_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_cs_valve_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_cs_valve_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_cs_valve_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_aggregat_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_aggregat_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_aggregat_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_steering_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_steering_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_steering_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_tsac_fans_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_tsac_fans_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_tsac_fans_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_radiatot_fans_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_radiatot_fans_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_radiatot_fans_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_aggregat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_aggregat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_aggregat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_pump_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_pump_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_pump_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_heartbeat_ok_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_heartbeat_ok_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_heartbeat_ok_tx_is_in_range(uint8_t value); + +/** + * Pack message AS_Mission_fb. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_as_mission_fb_pack( + uint8_t *dst_p, + const struct can1_as_mission_fb_t *src_p, + size_t size); + +/** + * Unpack message AS_Mission_fb. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_as_mission_fb_unpack( + struct can1_as_mission_fb_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AS_Mission_fb. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_as_mission_fb_init(struct can1_as_mission_fb_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_as_mission_fb_mission_selection_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_as_mission_fb_mission_selection_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_as_mission_fb_mission_selection_is_in_range(uint8_t value); + +/** + * Pack message STW_mission_selected. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_mission_selected_pack( + uint8_t *dst_p, + const struct can1_stw_mission_selected_t *src_p, + size_t size); + +/** + * Unpack message STW_mission_selected. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_mission_selected_unpack( + struct can1_stw_mission_selected_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_mission_selected. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_mission_selected_init(struct can1_stw_mission_selected_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_mission_selected_mission_selection_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_mission_selected_mission_selection_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_mission_selected_mission_selection_is_in_range(uint8_t value); + +/** + * Pack message EPSC_out. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_out_pack( + uint8_t *dst_p, + const struct can1_epsc_out_t *src_p, + size_t size); + +/** + * Unpack message EPSC_out. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_out_unpack( + struct can1_epsc_out_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_out. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_out_init(struct can1_epsc_out_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_epsc_out_epsc_measured_rpm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_rpm_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_rpm_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_steering_angle_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_steering_angle_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_mosfet_temperature_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_mosfet_temperature_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_mosfet_temperature_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_voltage_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_voltage_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_voltage_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_epsc_out_epsc_measured_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_current_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_current_is_in_range(uint8_t value); + +/** + * Pack message EPSC_Steering_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_steering_in_pack( + uint8_t *dst_p, + const struct can1_epsc_steering_in_t *src_p, + size_t size); + +/** + * Unpack message EPSC_Steering_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_steering_in_unpack( + struct can1_epsc_steering_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_Steering_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_steering_in_init(struct can1_epsc_steering_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_epsc_steering_in_epsc_desired_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_steering_in_epsc_desired_steering_angle_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_steering_in_epsc_desired_steering_angle_is_in_range(int16_t value); + +/** + * Pack message STW_buttons. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_buttons_pack( + uint8_t *dst_p, + const struct can1_stw_buttons_t *src_p, + size_t size); + +/** + * Unpack message STW_buttons. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_buttons_unpack( + struct can1_stw_buttons_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_buttons. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_buttons_init(struct can1_stw_buttons_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_3_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_3_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_4_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_4_is_in_range(uint8_t value); + +/** + * Pack message STW_status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_status_pack( + uint8_t *dst_p, + const struct can1_stw_status_t *src_p, + size_t size); + +/** + * Unpack message STW_status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_status_unpack( + struct can1_stw_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_status_init(struct can1_stw_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_lap_count_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_lap_count_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_lap_count_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_pdu_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_pdu_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_pdu_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_res_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_res_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_res_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_r2_d_progress_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_r2_d_progress_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_r2_d_progress_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_as_state_stw_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_as_state_stw_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_as_state_stw_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_as_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_as_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_as_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_app_sp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_app_sp_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_app_sp_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_s_bspd_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_s_bspd_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_s_bspd_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_scs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_scs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_scs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_con_mon_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_con_mon_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_con_mon_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_ini_chk_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_ini_chk_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_ini_chk_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_inv2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_inv2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_inv2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_inv1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_inv1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_inv1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_ams_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_ams_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_ams_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_sdc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_sdc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_sdc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_sdc_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_sdc_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_sdc_status_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_inv2_ready_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_inv2_ready_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_inv2_ready_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_inv1_ready_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_inv1_ready_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_inv1_ready_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_stw_status_energy_per_lap_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_energy_per_lap_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_energy_per_lap_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_ini_chk_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_ini_chk_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_ini_chk_state_is_in_range(uint8_t value); + +/** + * Pack message PDU_Current_1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_1_pack( + uint8_t *dst_p, + const struct can1_pdu_current_1_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_1_unpack( + struct can1_pdu_current_1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_1_init(struct can1_pdu_current_1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_always_on_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_always_on_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_always_on_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_lvms_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_lvms_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_lvms_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_asms_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_asms_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_asms_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_misc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_misc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_misc_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_2_pack( + uint8_t *dst_p, + const struct can1_pdu_current_2_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_2_unpack( + struct can1_pdu_current_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_2_init(struct can1_pdu_current_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_sdc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_sdc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_sdc_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_inverter_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_inverter_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_inverter_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_ts_cooling_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_ts_cooling_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_ts_cooling_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_acc_cooling_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_acc_cooling_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_acc_cooling_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_3_pack( + uint8_t *dst_p, + const struct can1_pdu_current_3_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_3_unpack( + struct can1_pdu_current_3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_3_init(struct can1_pdu_current_3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_lidar_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_lidar_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_lidar_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_drs_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_drs_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_drs_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_epsc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_epsc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_epsc_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_acu_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_acu_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_acu_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_4_pack( + uint8_t *dst_p, + const struct can1_pdu_current_4_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_4_unpack( + struct can1_pdu_current_4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_4_init(struct can1_pdu_current_4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_4_pdu_ebs_a_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_4_pdu_ebs_a_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_4_pdu_ebs_a_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_4_pdu_ebs_b_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_4_pdu_ebs_b_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_4_pdu_ebs_b_current_is_in_range(uint16_t value); + +/** + * Pack message EPSC_Config_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_config_in_pack( + uint8_t *dst_p, + const struct can1_epsc_config_in_t *src_p, + size_t size); + +/** + * Unpack message EPSC_Config_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_config_in_unpack( + struct can1_epsc_config_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_Config_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_config_in_init(struct can1_epsc_config_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_p_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_p_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_p_gain_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_i_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_i_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_i_gain_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_d_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_d_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_d_gain_is_in_range(uint16_t value); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp new file mode 100644 index 0000000..ca30c8a --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp @@ -0,0 +1,5489 @@ +#ifndef _ENDEC_HPP_ +#define _ENDEC_HPP_ + +#include "can1.h" +#include + +namespace canlib { +// frame structures +namespace frame { +namespace decoded { +namespace can1 { +struct inverter_velocity_t { + double inverter_1_velocity; + double inverter_2_velocity; +inverter_velocity_t() { + this->inverter_1_velocity = 0.0; + this->inverter_2_velocity = 0.0; +} + +inverter_velocity_t( + double inverter_1_velocity, + double inverter_2_velocity) { + this->inverter_1_velocity = inverter_1_velocity; + this->inverter_2_velocity = inverter_2_velocity; +} + +}; +struct inverter_errors_warnings_t { + double inverter_1_errors; + double inverter_1_warnings; + double inverter_2_errors; + double inverter_2_warnings; +inverter_errors_warnings_t() { + this->inverter_1_errors = 0.0; + this->inverter_1_warnings = 0.0; + this->inverter_2_errors = 0.0; + this->inverter_2_warnings = 0.0; +} + +inverter_errors_warnings_t( + double inverter_1_errors, + double inverter_1_warnings, + double inverter_2_errors, + double inverter_2_warnings) { + this->inverter_1_errors = inverter_1_errors; + this->inverter_1_warnings = inverter_1_warnings; + this->inverter_2_errors = inverter_2_errors; + this->inverter_2_warnings = inverter_2_warnings; +} + +}; +struct inverter_torque_actual_cw_t { + double inverter_1_control_word; + double inverter_1_torque_actual; + double inverter_2_control_word; + double inverter_2_torque_actual; +inverter_torque_actual_cw_t() { + this->inverter_1_control_word = 0.0; + this->inverter_1_torque_actual = 0.0; + this->inverter_2_control_word = 0.0; + this->inverter_2_torque_actual = 0.0; +} + +inverter_torque_actual_cw_t( + double inverter_1_control_word, + double inverter_1_torque_actual, + double inverter_2_control_word, + double inverter_2_torque_actual) { + this->inverter_1_control_word = inverter_1_control_word; + this->inverter_1_torque_actual = inverter_1_torque_actual; + this->inverter_2_control_word = inverter_2_control_word; + this->inverter_2_torque_actual = inverter_2_torque_actual; +} + +}; +struct inverter_temperatur_t { + double inverter_1_temp_inv; + double inverter_1_temp_mot; + double inverter_2_temp_inv; + double inverter_2_temp_mot; +inverter_temperatur_t() { + this->inverter_1_temp_inv = 0.0; + this->inverter_1_temp_mot = 0.0; + this->inverter_2_temp_inv = 0.0; + this->inverter_2_temp_mot = 0.0; +} + +inverter_temperatur_t( + double inverter_1_temp_inv, + double inverter_1_temp_mot, + double inverter_2_temp_inv, + double inverter_2_temp_mot) { + this->inverter_1_temp_inv = inverter_1_temp_inv; + this->inverter_1_temp_mot = inverter_1_temp_mot; + this->inverter_2_temp_inv = inverter_2_temp_inv; + this->inverter_2_temp_mot = inverter_2_temp_mot; +} + +}; +struct inverter_torque_wanted_t { + double inverter_1_torque_demanded; + double inverter_2_torque_demanded; + double inverter_1_torque_desired; + double inverter_2_torque_desired; +inverter_torque_wanted_t() { + this->inverter_1_torque_demanded = 0.0; + this->inverter_2_torque_demanded = 0.0; + this->inverter_1_torque_desired = 0.0; + this->inverter_2_torque_desired = 0.0; +} + +inverter_torque_wanted_t( + double inverter_1_torque_demanded, + double inverter_2_torque_demanded, + double inverter_1_torque_desired, + double inverter_2_torque_desired) { + this->inverter_1_torque_demanded = inverter_1_torque_demanded; + this->inverter_2_torque_demanded = inverter_2_torque_demanded; + this->inverter_1_torque_desired = inverter_1_torque_desired; + this->inverter_2_torque_desired = inverter_2_torque_desired; +} + +}; +struct sdo_telemetrie_rx_node1_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_rx_node1_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_rx_node1_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct sdo_telemetrie_rx_node2_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_rx_node2_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_rx_node2_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct sdo_telemetrie_tx_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_tx_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_tx_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct laptop_sdo_node_t { + double node_id_sdo; +laptop_sdo_node_t() { + this->node_id_sdo = 0.0; +} + +laptop_sdo_node_t( + double node_id_sdo) { + this->node_id_sdo = node_id_sdo; +} + +}; +struct x_sens_long_lat_t { + double x_sens_latitude; + double x_sens_longitude; +x_sens_long_lat_t() { + this->x_sens_latitude = 0.0; + this->x_sens_longitude = 0.0; +} + +x_sens_long_lat_t( + double x_sens_latitude, + double x_sens_longitude) { + this->x_sens_latitude = x_sens_latitude; + this->x_sens_longitude = x_sens_longitude; +} + +}; +struct x_sens_rateofturn_t { + double x_sens_gyr_x; + double x_sens_gy_y; + double x_sens_gy_z; +x_sens_rateofturn_t() { + this->x_sens_gyr_x = 0.0; + this->x_sens_gy_y = 0.0; + this->x_sens_gy_z = 0.0; +} + +x_sens_rateofturn_t( + double x_sens_gyr_x, + double x_sens_gy_y, + double x_sens_gy_z) { + this->x_sens_gyr_x = x_sens_gyr_x; + this->x_sens_gy_y = x_sens_gy_y; + this->x_sens_gy_z = x_sens_gy_z; +} + +}; +struct x_sens_acceleration_t { + double x_sens_acc_x; + double x_sens_acc_y; + double x_sens_acc_z; +x_sens_acceleration_t() { + this->x_sens_acc_x = 0.0; + this->x_sens_acc_y = 0.0; + this->x_sens_acc_z = 0.0; +} + +x_sens_acceleration_t( + double x_sens_acc_x, + double x_sens_acc_y, + double x_sens_acc_z) { + this->x_sens_acc_x = x_sens_acc_x; + this->x_sens_acc_y = x_sens_acc_y; + this->x_sens_acc_z = x_sens_acc_z; +} + +}; +struct x_sens_velocity_t { + double x_sens_vel_x; + double x_sens_vel_y; + double x_sens_vel_z; +x_sens_velocity_t() { + this->x_sens_vel_x = 0.0; + this->x_sens_vel_y = 0.0; + this->x_sens_vel_z = 0.0; +} + +x_sens_velocity_t( + double x_sens_vel_x, + double x_sens_vel_y, + double x_sens_vel_z) { + this->x_sens_vel_x = x_sens_vel_x; + this->x_sens_vel_y = x_sens_vel_y; + this->x_sens_vel_z = x_sens_vel_z; +} + +}; +struct telemetrie_t { + double ini_check_error_state; + double powermap; + double apps_ok; + double brake_ok; + double allow_torque; + double asp_ok; + double pressure_sensor_ok; + double torque_vectoring_on; + double reku_on; + double traction_control_on; + double ts_deactivate; + double torque_limit; + double power_limit; + double torque_limit_dynamisch; + double torque_ohne_limit_l; + double torque_ohne_limit_r; +telemetrie_t() { + this->ini_check_error_state = 0.0; + this->powermap = 0.0; + this->apps_ok = 0.0; + this->brake_ok = 0.0; + this->allow_torque = 0.0; + this->asp_ok = 0.0; + this->pressure_sensor_ok = 0.0; + this->torque_vectoring_on = 0.0; + this->reku_on = 0.0; + this->traction_control_on = 0.0; + this->ts_deactivate = 0.0; + this->torque_limit = 0.0; + this->power_limit = 0.0; + this->torque_limit_dynamisch = 0.0; + this->torque_ohne_limit_l = 0.0; + this->torque_ohne_limit_r = 0.0; +} + +telemetrie_t( + double ini_check_error_state, + double powermap, + double apps_ok, + double brake_ok, + double allow_torque, + double asp_ok, + double pressure_sensor_ok, + double torque_vectoring_on, + double reku_on, + double traction_control_on, + double ts_deactivate, + double torque_limit, + double power_limit, + double torque_limit_dynamisch, + double torque_ohne_limit_l, + double torque_ohne_limit_r) { + this->ini_check_error_state = ini_check_error_state; + this->powermap = powermap; + this->apps_ok = apps_ok; + this->brake_ok = brake_ok; + this->allow_torque = allow_torque; + this->asp_ok = asp_ok; + this->pressure_sensor_ok = pressure_sensor_ok; + this->torque_vectoring_on = torque_vectoring_on; + this->reku_on = reku_on; + this->traction_control_on = traction_control_on; + this->ts_deactivate = ts_deactivate; + this->torque_limit = torque_limit; + this->power_limit = power_limit; + this->torque_limit_dynamisch = torque_limit_dynamisch; + this->torque_ohne_limit_l = torque_ohne_limit_l; + this->torque_ohne_limit_r = torque_ohne_limit_r; +} + +}; +struct override_powermap_t { + double laptopp_power_map; + double laptop_reku; + double laptop_tc; + double laptop_tv; + double laptop_slipref; + double laptop_tc_i; + double laptop_tc_p; + double laptop_tc_mumax; +override_powermap_t() { + this->laptopp_power_map = 0.0; + this->laptop_reku = 0.0; + this->laptop_tc = 0.0; + this->laptop_tv = 0.0; + this->laptop_slipref = 0.0; + this->laptop_tc_i = 0.0; + this->laptop_tc_p = 0.0; + this->laptop_tc_mumax = 0.0; +} + +override_powermap_t( + double laptopp_power_map, + double laptop_reku, + double laptop_tc, + double laptop_tv, + double laptop_slipref, + double laptop_tc_i, + double laptop_tc_p, + double laptop_tc_mumax) { + this->laptopp_power_map = laptopp_power_map; + this->laptop_reku = laptop_reku; + this->laptop_tc = laptop_tc; + this->laptop_tv = laptop_tv; + this->laptop_slipref = laptop_slipref; + this->laptop_tc_i = laptop_tc_i; + this->laptop_tc_p = laptop_tc_p; + this->laptop_tc_mumax = laptop_tc_mumax; +} + +}; +struct override_laptop_2_t { + double as_mission; + double as_state; + double manual_input_torque; + double laptop_powerlimit; + double laptop_torque_lim; +override_laptop_2_t() { + this->as_mission = 0.0; + this->as_state = 0.0; + this->manual_input_torque = 0.0; + this->laptop_powerlimit = 0.0; + this->laptop_torque_lim = 0.0; +} + +override_laptop_2_t( + double as_mission, + double as_state, + double manual_input_torque, + double laptop_powerlimit, + double laptop_torque_lim) { + this->as_mission = as_mission; + this->as_state = as_state; + this->manual_input_torque = manual_input_torque; + this->laptop_powerlimit = laptop_powerlimit; + this->laptop_torque_lim = laptop_torque_lim; +} + +}; +struct override_epsc_cooling_t { + double epsc_manual_angle; + double epsc_mode; + double ac_cooling_enable; + double ts_cooling_enable; + double ac_cooling_pwm; + double ts_cooling_pwm; +override_epsc_cooling_t() { + this->epsc_manual_angle = 0.0; + this->epsc_mode = 0.0; + this->ac_cooling_enable = 0.0; + this->ts_cooling_enable = 0.0; + this->ac_cooling_pwm = 0.0; + this->ts_cooling_pwm = 0.0; +} + +override_epsc_cooling_t( + double epsc_manual_angle, + double epsc_mode, + double ac_cooling_enable, + double ts_cooling_enable, + double ac_cooling_pwm, + double ts_cooling_pwm) { + this->epsc_manual_angle = epsc_manual_angle; + this->epsc_mode = epsc_mode; + this->ac_cooling_enable = ac_cooling_enable; + this->ts_cooling_enable = ts_cooling_enable; + this->ac_cooling_pwm = ac_cooling_pwm; + this->ts_cooling_pwm = ts_cooling_pwm; +} + +}; +struct override_laptop_t { + double fake_r2_d; + double fake_soundbox_emergency; + double fake_soundbox_r2_d; + double fake_ts_active; + double override_apps; + double override_as_mission; + double override_as_state; + double override_epsc_mode; + double override_pdu_ac_cooling_enable; + double override_pdu_acu_enable; + double override_pdu_drs_enable; + double override_pdu_epsc_enable; + double override_pdu_heartbeat; + double override_pdu_lidar_enable; + double override_pdu_pn_v1_enable; + double override_pdu_pn_v2_enable; + double override_pdu_ts_cooling_enable; + double override_power_map; + double override_tc_parameter; + double override_torque_input; +override_laptop_t() { + this->fake_r2_d = 0.0; + this->fake_soundbox_emergency = 0.0; + this->fake_soundbox_r2_d = 0.0; + this->fake_ts_active = 0.0; + this->override_apps = 0.0; + this->override_as_mission = 0.0; + this->override_as_state = 0.0; + this->override_epsc_mode = 0.0; + this->override_pdu_ac_cooling_enable = 0.0; + this->override_pdu_acu_enable = 0.0; + this->override_pdu_drs_enable = 0.0; + this->override_pdu_epsc_enable = 0.0; + this->override_pdu_heartbeat = 0.0; + this->override_pdu_lidar_enable = 0.0; + this->override_pdu_pn_v1_enable = 0.0; + this->override_pdu_pn_v2_enable = 0.0; + this->override_pdu_ts_cooling_enable = 0.0; + this->override_power_map = 0.0; + this->override_tc_parameter = 0.0; + this->override_torque_input = 0.0; +} + +override_laptop_t( + double fake_r2_d, + double fake_soundbox_emergency, + double fake_soundbox_r2_d, + double fake_ts_active, + double override_apps, + double override_as_mission, + double override_as_state, + double override_epsc_mode, + double override_pdu_ac_cooling_enable, + double override_pdu_acu_enable, + double override_pdu_drs_enable, + double override_pdu_epsc_enable, + double override_pdu_heartbeat, + double override_pdu_lidar_enable, + double override_pdu_pn_v1_enable, + double override_pdu_pn_v2_enable, + double override_pdu_ts_cooling_enable, + double override_power_map, + double override_tc_parameter, + double override_torque_input) { + this->fake_r2_d = fake_r2_d; + this->fake_soundbox_emergency = fake_soundbox_emergency; + this->fake_soundbox_r2_d = fake_soundbox_r2_d; + this->fake_ts_active = fake_ts_active; + this->override_apps = override_apps; + this->override_as_mission = override_as_mission; + this->override_as_state = override_as_state; + this->override_epsc_mode = override_epsc_mode; + this->override_pdu_ac_cooling_enable = override_pdu_ac_cooling_enable; + this->override_pdu_acu_enable = override_pdu_acu_enable; + this->override_pdu_drs_enable = override_pdu_drs_enable; + this->override_pdu_epsc_enable = override_pdu_epsc_enable; + this->override_pdu_heartbeat = override_pdu_heartbeat; + this->override_pdu_lidar_enable = override_pdu_lidar_enable; + this->override_pdu_pn_v1_enable = override_pdu_pn_v1_enable; + this->override_pdu_pn_v2_enable = override_pdu_pn_v2_enable; + this->override_pdu_ts_cooling_enable = override_pdu_ts_cooling_enable; + this->override_power_map = override_power_map; + this->override_tc_parameter = override_tc_parameter; + this->override_torque_input = override_torque_input; +} + +}; +struct apps_override_t { + double apps_0_max; + double apps_0_min; + double apps_1_max; + double apps_1_min; +apps_override_t() { + this->apps_0_max = 0.0; + this->apps_0_min = 0.0; + this->apps_1_max = 0.0; + this->apps_1_min = 0.0; +} + +apps_override_t( + double apps_0_max, + double apps_0_min, + double apps_1_max, + double apps_1_min) { + this->apps_0_max = apps_0_max; + this->apps_0_min = apps_0_min; + this->apps_1_max = apps_1_max; + this->apps_1_min = apps_1_min; +} + +}; +struct ftcu_damper_t { + double ftcu_damper_fl; + double ftcu_damper_fr; + double ftcu_damper_rl; + double ftcu_damper_rr; +ftcu_damper_t() { + this->ftcu_damper_fl = 0.0; + this->ftcu_damper_fr = 0.0; + this->ftcu_damper_rl = 0.0; + this->ftcu_damper_rr = 0.0; +} + +ftcu_damper_t( + double ftcu_damper_fl, + double ftcu_damper_fr, + double ftcu_damper_rl, + double ftcu_damper_rr) { + this->ftcu_damper_fl = ftcu_damper_fl; + this->ftcu_damper_fr = ftcu_damper_fr; + this->ftcu_damper_rl = ftcu_damper_rl; + this->ftcu_damper_rr = ftcu_damper_rr; +} + +}; +struct ftcu_param_confirm_t { + double ftcu_param_confirm; +ftcu_param_confirm_t() { + this->ftcu_param_confirm = 0.0; +} + +ftcu_param_confirm_t( + double ftcu_param_confirm) { + this->ftcu_param_confirm = ftcu_param_confirm; +} + +}; +struct sensornode_f_10_hz_t { + double ls_l; + double ls_r; + double sdc_m_pre_bots; + double sdc_m_post_ins; + double sdc_m_post_bspd; + double bdts_fl; + double bdts_fr; +sensornode_f_10_hz_t() { + this->ls_l = 0.0; + this->ls_r = 0.0; + this->sdc_m_pre_bots = 0.0; + this->sdc_m_post_ins = 0.0; + this->sdc_m_post_bspd = 0.0; + this->bdts_fl = 0.0; + this->bdts_fr = 0.0; +} + +sensornode_f_10_hz_t( + double ls_l, + double ls_r, + double sdc_m_pre_bots, + double sdc_m_post_ins, + double sdc_m_post_bspd, + double bdts_fl, + double bdts_fr) { + this->ls_l = ls_l; + this->ls_r = ls_r; + this->sdc_m_pre_bots = sdc_m_pre_bots; + this->sdc_m_post_ins = sdc_m_post_ins; + this->sdc_m_post_bspd = sdc_m_post_bspd; + this->bdts_fl = bdts_fl; + this->bdts_fr = bdts_fr; +} + +}; +struct sensornode_f_100_hz_1_t { + double apps_1; + double apps_2; + double bp_f; + double sas; + double wss_fl; + double wss_fr; +sensornode_f_100_hz_1_t() { + this->apps_1 = 0.0; + this->apps_2 = 0.0; + this->bp_f = 0.0; + this->sas = 0.0; + this->wss_fl = 0.0; + this->wss_fr = 0.0; +} + +sensornode_f_100_hz_1_t( + double apps_1, + double apps_2, + double bp_f, + double sas, + double wss_fl, + double wss_fr) { + this->apps_1 = apps_1; + this->apps_2 = apps_2; + this->bp_f = bp_f; + this->sas = sas; + this->wss_fl = wss_fl; + this->wss_fr = wss_fr; +} + +}; +struct sensornode_f_100_hz_2_t { + double ds_fl; + double ds_fr; +sensornode_f_100_hz_2_t() { + this->ds_fl = 0.0; + this->ds_fr = 0.0; +} + +sensornode_f_100_hz_2_t( + double ds_fl, + double ds_fr) { + this->ds_fl = ds_fl; + this->ds_fr = ds_fr; +} + +}; +struct sensornode_f_1k_hz_t { + double sls_fl; + double sls_fr; +sensornode_f_1k_hz_t() { + this->sls_fl = 0.0; + this->sls_fr = 0.0; +} + +sensornode_f_1k_hz_t( + double sls_fl, + double sls_fr) { + this->sls_fl = sls_fl; + this->sls_fr = sls_fr; +} + +}; +struct sensornode_r_10_hz_t { + double ext_ts_on; + double sdc_m_pre_tsms; + double sdc_m_post_tsms; + double bdts_rl; + double bdts_rr; + double wt_bat; + double wt_dt; + double wp_bat; + double wp_dt; +sensornode_r_10_hz_t() { + this->ext_ts_on = 0.0; + this->sdc_m_pre_tsms = 0.0; + this->sdc_m_post_tsms = 0.0; + this->bdts_rl = 0.0; + this->bdts_rr = 0.0; + this->wt_bat = 0.0; + this->wt_dt = 0.0; + this->wp_bat = 0.0; + this->wp_dt = 0.0; +} + +sensornode_r_10_hz_t( + double ext_ts_on, + double sdc_m_pre_tsms, + double sdc_m_post_tsms, + double bdts_rl, + double bdts_rr, + double wt_bat, + double wt_dt, + double wp_bat, + double wp_dt) { + this->ext_ts_on = ext_ts_on; + this->sdc_m_pre_tsms = sdc_m_pre_tsms; + this->sdc_m_post_tsms = sdc_m_post_tsms; + this->bdts_rl = bdts_rl; + this->bdts_rr = bdts_rr; + this->wt_bat = wt_bat; + this->wt_dt = wt_dt; + this->wp_bat = wp_bat; + this->wp_dt = wp_dt; +} + +}; +struct sensornode_r_100_hz_t { + double ebs_aps_1; + double ebs_aps_2; + double bp_r; + double wss_rl; + double wss_rr; + double ds_rl; + double ds_rr; +sensornode_r_100_hz_t() { + this->ebs_aps_1 = 0.0; + this->ebs_aps_2 = 0.0; + this->bp_r = 0.0; + this->wss_rl = 0.0; + this->wss_rr = 0.0; + this->ds_rl = 0.0; + this->ds_rr = 0.0; +} + +sensornode_r_100_hz_t( + double ebs_aps_1, + double ebs_aps_2, + double bp_r, + double wss_rl, + double wss_rr, + double ds_rl, + double ds_rr) { + this->ebs_aps_1 = ebs_aps_1; + this->ebs_aps_2 = ebs_aps_2; + this->bp_r = bp_r; + this->wss_rl = wss_rl; + this->wss_rr = wss_rr; + this->ds_rl = ds_rl; + this->ds_rr = ds_rr; +} + +}; +struct sensornode_r_1k_hz_t { + double sls_rl; + double sls_rr; +sensornode_r_1k_hz_t() { + this->sls_rl = 0.0; + this->sls_rr = 0.0; +} + +sensornode_r_1k_hz_t( + double sls_rl, + double sls_rr) { + this->sls_rl = sls_rl; + this->sls_rr = sls_rr; +} + +}; +struct pwm_duty_cycle_t { + double dc_drs; + double dc_assi_y; + double dc_assi_b; + double dc_bl; + double dc_fans_dt; + double dc_fans_bat; + double dc_sbx; +pwm_duty_cycle_t() { + this->dc_drs = 0.0; + this->dc_assi_y = 0.0; + this->dc_assi_b = 0.0; + this->dc_bl = 0.0; + this->dc_fans_dt = 0.0; + this->dc_fans_bat = 0.0; + this->dc_sbx = 0.0; +} + +pwm_duty_cycle_t( + double dc_drs, + double dc_assi_y, + double dc_assi_b, + double dc_bl, + double dc_fans_dt, + double dc_fans_bat, + double dc_sbx) { + this->dc_drs = dc_drs; + this->dc_assi_y = dc_assi_y; + this->dc_assi_b = dc_assi_b; + this->dc_bl = dc_bl; + this->dc_fans_dt = dc_fans_dt; + this->dc_fans_bat = dc_fans_bat; + this->dc_sbx = dc_sbx; +} + +}; +struct pwm_config_t { + double freq_pwm1_drs_lighting; + double freq_pwm3_fans; + double freq_pwm2_sbx; +pwm_config_t() { + this->freq_pwm1_drs_lighting = 0.0; + this->freq_pwm3_fans = 0.0; + this->freq_pwm2_sbx = 0.0; +} + +pwm_config_t( + double freq_pwm1_drs_lighting, + double freq_pwm3_fans, + double freq_pwm2_sbx) { + this->freq_pwm1_drs_lighting = freq_pwm1_drs_lighting; + this->freq_pwm3_fans = freq_pwm3_fans; + this->freq_pwm2_sbx = freq_pwm2_sbx; +} + +}; +struct dashboard_in_t { + double dashboard_r2_d_button; + double dashboard_ts_activate_button; + double dashboard_race_key; + double dashboard_sdc_in; + double dashboard_sdc_out; +dashboard_in_t() { + this->dashboard_r2_d_button = 0.0; + this->dashboard_ts_activate_button = 0.0; + this->dashboard_race_key = 0.0; + this->dashboard_sdc_in = 0.0; + this->dashboard_sdc_out = 0.0; +} + +dashboard_in_t( + double dashboard_r2_d_button, + double dashboard_ts_activate_button, + double dashboard_race_key, + double dashboard_sdc_in, + double dashboard_sdc_out) { + this->dashboard_r2_d_button = dashboard_r2_d_button; + this->dashboard_ts_activate_button = dashboard_ts_activate_button; + this->dashboard_race_key = dashboard_race_key; + this->dashboard_sdc_in = dashboard_sdc_in; + this->dashboard_sdc_out = dashboard_sdc_out; +} + +}; +struct ams_slave1_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave1_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave1_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave2_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave2_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave2_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave2_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave2_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave2_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave2_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave2_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave2_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave2_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave2_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave2_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave2_log4_t { + double ams_slave_id_failed_sensors; +ams_slave2_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave2_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave2_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave2_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave2_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave5_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave5_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave5_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave4_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave4_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave4_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave3_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave3_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave3_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave2_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave2_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave2_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave1_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave1_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave1_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave5_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave5_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave5_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave4_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave4_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave4_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave3_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave3_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave3_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave1_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave1_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave1_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave5_log4_t { + double ams_slave_id_failed_sensors; +ams_slave5_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave5_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave4_log4_t { + double ams_slave_id_failed_sensors; +ams_slave4_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave4_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave3_log4_t { + double ams_slave_id_failed_sensors; +ams_slave3_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave3_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave1_log4_t { + double ams_slave_id_failed_sensors; +ams_slave1_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave1_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave5_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave5_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave5_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave4_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave4_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave4_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave3_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave3_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave3_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave1_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave1_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave1_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave5_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave5_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave5_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave4_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave4_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave4_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave3_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave3_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave3_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave1_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave1_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave1_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave5_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave5_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave5_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave4_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave4_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave4_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave3_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave3_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave3_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave1_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave1_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave1_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave5_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave5_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave5_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave4_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave4_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave4_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave3_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave3_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave3_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave1_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave1_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave1_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct pdu_heartbeat_t { + double pdu_heartbeat; +pdu_heartbeat_t() { + this->pdu_heartbeat = 0.0; +} + +pdu_heartbeat_t( + double pdu_heartbeat) { + this->pdu_heartbeat = pdu_heartbeat; +} + +}; +struct ftcu_pneumatik_t { + double ftcu_tank_pressure_1; + double ftcu_tank_pressure_2; +ftcu_pneumatik_t() { + this->ftcu_tank_pressure_1 = 0.0; + this->ftcu_tank_pressure_2 = 0.0; +} + +ftcu_pneumatik_t( + double ftcu_tank_pressure_1, + double ftcu_tank_pressure_2) { + this->ftcu_tank_pressure_1 = ftcu_tank_pressure_1; + this->ftcu_tank_pressure_2 = ftcu_tank_pressure_2; +} + +}; +struct acu_tx_commands_t { + double abx_speed_fl; + double abx_speed_fr; + double abx_speed_rl; + double abx_speed_rr; + double abx_steering_angle_left; + double abx_steering_angle_right; +acu_tx_commands_t() { + this->abx_speed_fl = 0.0; + this->abx_speed_fr = 0.0; + this->abx_speed_rl = 0.0; + this->abx_speed_rr = 0.0; + this->abx_steering_angle_left = 0.0; + this->abx_steering_angle_right = 0.0; +} + +acu_tx_commands_t( + double abx_speed_fl, + double abx_speed_fr, + double abx_speed_rl, + double abx_speed_rr, + double abx_steering_angle_left, + double abx_steering_angle_right) { + this->abx_speed_fl = abx_speed_fl; + this->abx_speed_fr = abx_speed_fr; + this->abx_speed_rl = abx_speed_rl; + this->abx_speed_rr = abx_speed_rr; + this->abx_steering_angle_left = abx_steering_angle_left; + this->abx_steering_angle_right = abx_steering_angle_right; +} + +}; +struct acu_rx_commands_t { + double acu_speed_target_left; + double acu_speed_target_right; + double acu_steering_angle_right; + double acu_steering_angle_left; +acu_rx_commands_t() { + this->acu_speed_target_left = 0.0; + this->acu_speed_target_right = 0.0; + this->acu_steering_angle_right = 0.0; + this->acu_steering_angle_left = 0.0; +} + +acu_rx_commands_t( + double acu_speed_target_left, + double acu_speed_target_right, + double acu_steering_angle_right, + double acu_steering_angle_left) { + this->acu_speed_target_left = acu_speed_target_left; + this->acu_speed_target_right = acu_speed_target_right; + this->acu_steering_angle_right = acu_steering_angle_right; + this->acu_steering_angle_left = acu_steering_angle_left; +} + +}; +struct acu_rx_t { + double acu_as_mission_complete; + double acu_as_ok; + double acu_drs; + double acu_lap_count; + double acu_cones_all; + double acu_cones_actual; +acu_rx_t() { + this->acu_as_mission_complete = 0.0; + this->acu_as_ok = 0.0; + this->acu_drs = 0.0; + this->acu_lap_count = 0.0; + this->acu_cones_all = 0.0; + this->acu_cones_actual = 0.0; +} + +acu_rx_t( + double acu_as_mission_complete, + double acu_as_ok, + double acu_drs, + double acu_lap_count, + double acu_cones_all, + double acu_cones_actual) { + this->acu_as_mission_complete = acu_as_mission_complete; + this->acu_as_ok = acu_as_ok; + this->acu_drs = acu_drs; + this->acu_lap_count = acu_lap_count; + this->acu_cones_all = acu_cones_all; + this->acu_cones_actual = acu_cones_actual; +} + +}; +struct ams_slave0_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave0_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave0_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave0_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave0_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave0_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave0_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave0_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave0_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave0_log4_t { + double ams_slave_id_failed_sensors; +ams_slave0_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave0_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave0_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave0_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave0_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave0_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave0_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave0_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct acu_tx_t { + double acu_as_mission; + double acu_as_state; + double acu_power_off; + double acu_reset; + double acu_allow_torque; + double abx_con_mon_error; +acu_tx_t() { + this->acu_as_mission = 0.0; + this->acu_as_state = 0.0; + this->acu_power_off = 0.0; + this->acu_reset = 0.0; + this->acu_allow_torque = 0.0; + this->abx_con_mon_error = 0.0; +} + +acu_tx_t( + double acu_as_mission, + double acu_as_state, + double acu_power_off, + double acu_reset, + double acu_allow_torque, + double abx_con_mon_error) { + this->acu_as_mission = acu_as_mission; + this->acu_as_state = acu_as_state; + this->acu_power_off = acu_power_off; + this->acu_reset = acu_reset; + this->acu_allow_torque = acu_allow_torque; + this->abx_con_mon_error = abx_con_mon_error; +} + +}; +struct ams_slave5_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave5_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave5_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave4_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave4_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave4_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave3_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave3_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave3_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave2_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave2_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave2_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_error_t { + double ams_error_kind; + double ams_error_arg; +ams_error_t() { + this->ams_error_kind = 0.0; + this->ams_error_arg = 0.0; +} + +ams_error_t( + double ams_error_kind, + double ams_error_arg) { + this->ams_error_kind = ams_error_kind; + this->ams_error_arg = ams_error_arg; +} + +}; +struct ftcu_cooling_t { + double ftcu_water_pressure_2; + double ftcu_water_pressure_1; + double ftcu_water_temperature_1; + double ftcu_water_temperature_2; + double ftcu_flow_rate; +ftcu_cooling_t() { + this->ftcu_water_pressure_2 = 0.0; + this->ftcu_water_pressure_1 = 0.0; + this->ftcu_water_temperature_1 = 0.0; + this->ftcu_water_temperature_2 = 0.0; + this->ftcu_flow_rate = 0.0; +} + +ftcu_cooling_t( + double ftcu_water_pressure_2, + double ftcu_water_pressure_1, + double ftcu_water_temperature_1, + double ftcu_water_temperature_2, + double ftcu_flow_rate) { + this->ftcu_water_pressure_2 = ftcu_water_pressure_2; + this->ftcu_water_pressure_1 = ftcu_water_pressure_1; + this->ftcu_water_temperature_1 = ftcu_water_temperature_1; + this->ftcu_water_temperature_2 = ftcu_water_temperature_2; + this->ftcu_flow_rate = ftcu_flow_rate; +} + +}; +struct ftcu_brake_t_t { + double ftcu_brake_t_fl; + double ftcu_brake_t_fr; + double ftcu_brake_t_rl; + double ftcu_brake_t_rr; +ftcu_brake_t_t() { + this->ftcu_brake_t_fl = 0.0; + this->ftcu_brake_t_fr = 0.0; + this->ftcu_brake_t_rl = 0.0; + this->ftcu_brake_t_rr = 0.0; +} + +ftcu_brake_t_t( + double ftcu_brake_t_fl, + double ftcu_brake_t_fr, + double ftcu_brake_t_rl, + double ftcu_brake_t_rr) { + this->ftcu_brake_t_fl = ftcu_brake_t_fl; + this->ftcu_brake_t_fr = ftcu_brake_t_fr; + this->ftcu_brake_t_rl = ftcu_brake_t_rl; + this->ftcu_brake_t_rr = ftcu_brake_t_rr; +} + +}; +struct ftcu_wheelspeed_t { + double ftcu_wheelspeed_fl; + double ftcu_wheelspeed_fr; + double ftcu_wheelspeed_rl; + double ftcu_wheelspeed_rr; + double ftcu_distance_session; +ftcu_wheelspeed_t() { + this->ftcu_wheelspeed_fl = 0.0; + this->ftcu_wheelspeed_fr = 0.0; + this->ftcu_wheelspeed_rl = 0.0; + this->ftcu_wheelspeed_rr = 0.0; + this->ftcu_distance_session = 0.0; +} + +ftcu_wheelspeed_t( + double ftcu_wheelspeed_fl, + double ftcu_wheelspeed_fr, + double ftcu_wheelspeed_rl, + double ftcu_wheelspeed_rr, + double ftcu_distance_session) { + this->ftcu_wheelspeed_fl = ftcu_wheelspeed_fl; + this->ftcu_wheelspeed_fr = ftcu_wheelspeed_fr; + this->ftcu_wheelspeed_rl = ftcu_wheelspeed_rl; + this->ftcu_wheelspeed_rr = ftcu_wheelspeed_rr; + this->ftcu_distance_session = ftcu_distance_session; +} + +}; +struct ftcu_timings_t { + double ftcu_laptime_best; + double ftcu_laptime_last; + double ftcu_sectortime_best; + double ftcu_sectortime_last; +ftcu_timings_t() { + this->ftcu_laptime_best = 0.0; + this->ftcu_laptime_last = 0.0; + this->ftcu_sectortime_best = 0.0; + this->ftcu_sectortime_last = 0.0; +} + +ftcu_timings_t( + double ftcu_laptime_best, + double ftcu_laptime_last, + double ftcu_sectortime_best, + double ftcu_sectortime_last) { + this->ftcu_laptime_best = ftcu_laptime_best; + this->ftcu_laptime_last = ftcu_laptime_last; + this->ftcu_sectortime_best = ftcu_sectortime_best; + this->ftcu_sectortime_last = ftcu_sectortime_last; +} + +}; +struct ftcu_driver_t { + double ftcu_apps_percent; + double ftcu_brake_pressure_f; + double ftcu_brake_pressure_r; + double ftcu_steering_angle; + double ftcu_speed; + double ftcu_lapcounter; + double ftcu_sectorcounter; +ftcu_driver_t() { + this->ftcu_apps_percent = 0.0; + this->ftcu_brake_pressure_f = 0.0; + this->ftcu_brake_pressure_r = 0.0; + this->ftcu_steering_angle = 0.0; + this->ftcu_speed = 0.0; + this->ftcu_lapcounter = 0.0; + this->ftcu_sectorcounter = 0.0; +} + +ftcu_driver_t( + double ftcu_apps_percent, + double ftcu_brake_pressure_f, + double ftcu_brake_pressure_r, + double ftcu_steering_angle, + double ftcu_speed, + double ftcu_lapcounter, + double ftcu_sectorcounter) { + this->ftcu_apps_percent = ftcu_apps_percent; + this->ftcu_brake_pressure_f = ftcu_brake_pressure_f; + this->ftcu_brake_pressure_r = ftcu_brake_pressure_r; + this->ftcu_steering_angle = ftcu_steering_angle; + this->ftcu_speed = ftcu_speed; + this->ftcu_lapcounter = ftcu_lapcounter; + this->ftcu_sectorcounter = ftcu_sectorcounter; +} + +}; +struct tts_rr_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outet_right; + double tts_status; +tts_rr_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outet_right = 0.0; + this->tts_status = 0.0; +} + +tts_rr_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outet_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outet_right = tts_outet_right; + this->tts_status = tts_status; +} + +}; +struct tts_rl_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_rl_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_rl_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct tts_fr_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_fr_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_fr_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct tts_fl_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_fl_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_fl_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct stw_param_set_t { + double stw_param_set; + double stw_param_tc_slipref; + double stw_param_tc_mumax; + double stw_param_tc_i; + double stw_param_plim; + double stw_param_tlim; + double stw_param_tc_p; + double stw_param_reku; + double stw_param_tc_on; + double stw_param_tv_on; + double stw_param_discipline; + double stw_param_slim; +stw_param_set_t() { + this->stw_param_set = 0.0; + this->stw_param_tc_slipref = 0.0; + this->stw_param_tc_mumax = 0.0; + this->stw_param_tc_i = 0.0; + this->stw_param_plim = 0.0; + this->stw_param_tlim = 0.0; + this->stw_param_tc_p = 0.0; + this->stw_param_reku = 0.0; + this->stw_param_tc_on = 0.0; + this->stw_param_tv_on = 0.0; + this->stw_param_discipline = 0.0; + this->stw_param_slim = 0.0; +} + +stw_param_set_t( + double stw_param_set, + double stw_param_tc_slipref, + double stw_param_tc_mumax, + double stw_param_tc_i, + double stw_param_plim, + double stw_param_tlim, + double stw_param_tc_p, + double stw_param_reku, + double stw_param_tc_on, + double stw_param_tv_on, + double stw_param_discipline, + double stw_param_slim) { + this->stw_param_set = stw_param_set; + this->stw_param_tc_slipref = stw_param_tc_slipref; + this->stw_param_tc_mumax = stw_param_tc_mumax; + this->stw_param_tc_i = stw_param_tc_i; + this->stw_param_plim = stw_param_plim; + this->stw_param_tlim = stw_param_tlim; + this->stw_param_tc_p = stw_param_tc_p; + this->stw_param_reku = stw_param_reku; + this->stw_param_tc_on = stw_param_tc_on; + this->stw_param_tv_on = stw_param_tv_on; + this->stw_param_discipline = stw_param_discipline; + this->stw_param_slim = stw_param_slim; +} + +}; +struct ams_slave0_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave0_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave0_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ssu_message_t { + double ssu_pressure; + double ssu_air_temp; +ssu_message_t() { + this->ssu_pressure = 0.0; + this->ssu_air_temp = 0.0; +} + +ssu_message_t( + double ssu_pressure, + double ssu_air_temp) { + this->ssu_pressure = ssu_pressure; + this->ssu_air_temp = ssu_air_temp; +} + +}; +struct ams_status_t { + double ams_state; + double sdc_closed; + double soc; + double min_cell_volt; + double max_cell_temp; + double ams_imd_state; + double ams_imd_ok; +ams_status_t() { + this->ams_state = 0.0; + this->sdc_closed = 0.0; + this->soc = 0.0; + this->min_cell_volt = 0.0; + this->max_cell_temp = 0.0; + this->ams_imd_state = 0.0; + this->ams_imd_ok = 0.0; +} + +ams_status_t( + double ams_state, + double sdc_closed, + double soc, + double min_cell_volt, + double max_cell_temp, + double ams_imd_state, + double ams_imd_ok) { + this->ams_state = ams_state; + this->sdc_closed = sdc_closed; + this->soc = soc; + this->min_cell_volt = min_cell_volt; + this->max_cell_temp = max_cell_temp; + this->ams_imd_state = ams_imd_state; + this->ams_imd_ok = ams_imd_ok; +} + +}; +struct ams_slave_panic_t { + double ams_slave_panic_slave_id; + double ams_slave_panic_kind; + double ams_slave_panic_arg; +ams_slave_panic_t() { + this->ams_slave_panic_slave_id = 0.0; + this->ams_slave_panic_kind = 0.0; + this->ams_slave_panic_arg = 0.0; +} + +ams_slave_panic_t( + double ams_slave_panic_slave_id, + double ams_slave_panic_kind, + double ams_slave_panic_arg) { + this->ams_slave_panic_slave_id = ams_slave_panic_slave_id; + this->ams_slave_panic_kind = ams_slave_panic_kind; + this->ams_slave_panic_arg = ams_slave_panic_arg; +} + +}; +struct ams_in_t { + double ts_activate; + double inverters_discharged; + double lap_number; +ams_in_t() { + this->ts_activate = 0.0; + this->inverters_discharged = 0.0; + this->lap_number = 0.0; +} + +ams_in_t( + double ts_activate, + double inverters_discharged, + double lap_number) { + this->ts_activate = ts_activate; + this->inverters_discharged = inverters_discharged; + this->lap_number = lap_number; +} + +}; +struct shunt_current_t { + double shunt_current; +shunt_current_t() { + this->shunt_current = 0.0; +} + +shunt_current_t( + double shunt_current) { + this->shunt_current = shunt_current; +} + +}; +struct shunt_voltage1_t { + double shunt_voltage1; +shunt_voltage1_t() { + this->shunt_voltage1 = 0.0; +} + +shunt_voltage1_t( + double shunt_voltage1) { + this->shunt_voltage1 = shunt_voltage1; +} + +}; +struct shunt_voltage2_t { + double shunt_voltage2; +shunt_voltage2_t() { + this->shunt_voltage2 = 0.0; +} + +shunt_voltage2_t( + double shunt_voltage2) { + this->shunt_voltage2 = shunt_voltage2; +} + +}; +struct shunt_voltage3_t { + double shunt_voltage3; +shunt_voltage3_t() { + this->shunt_voltage3 = 0.0; +} + +shunt_voltage3_t( + double shunt_voltage3) { + this->shunt_voltage3 = shunt_voltage3; +} + +}; +struct shunt_temperature_t { + double shunt_temperature; +shunt_temperature_t() { + this->shunt_temperature = 0.0; +} + +shunt_temperature_t( + double shunt_temperature) { + this->shunt_temperature = shunt_temperature; +} + +}; +struct pdu_command_t { + double pdu_enable_misc; + double pdu_enable_sdc; + double pdu_enable_inverter; + double pdu_enable_ts_cooling; + double pdu_enable_acc_cooling; + double pdu_enable_lldar; + double pdu_enable_drs; + double pdu_enable_epsc; + double pdu_enable_acu; + double pdu_enable_ebs_a; + double pdu_enable_ebs_b; + double pdu_enable_ebs_c; +pdu_command_t() { + this->pdu_enable_misc = 0.0; + this->pdu_enable_sdc = 0.0; + this->pdu_enable_inverter = 0.0; + this->pdu_enable_ts_cooling = 0.0; + this->pdu_enable_acc_cooling = 0.0; + this->pdu_enable_lldar = 0.0; + this->pdu_enable_drs = 0.0; + this->pdu_enable_epsc = 0.0; + this->pdu_enable_acu = 0.0; + this->pdu_enable_ebs_a = 0.0; + this->pdu_enable_ebs_b = 0.0; + this->pdu_enable_ebs_c = 0.0; +} + +pdu_command_t( + double pdu_enable_misc, + double pdu_enable_sdc, + double pdu_enable_inverter, + double pdu_enable_ts_cooling, + double pdu_enable_acc_cooling, + double pdu_enable_lldar, + double pdu_enable_drs, + double pdu_enable_epsc, + double pdu_enable_acu, + double pdu_enable_ebs_a, + double pdu_enable_ebs_b, + double pdu_enable_ebs_c) { + this->pdu_enable_misc = pdu_enable_misc; + this->pdu_enable_sdc = pdu_enable_sdc; + this->pdu_enable_inverter = pdu_enable_inverter; + this->pdu_enable_ts_cooling = pdu_enable_ts_cooling; + this->pdu_enable_acc_cooling = pdu_enable_acc_cooling; + this->pdu_enable_lldar = pdu_enable_lldar; + this->pdu_enable_drs = pdu_enable_drs; + this->pdu_enable_epsc = pdu_enable_epsc; + this->pdu_enable_acu = pdu_enable_acu; + this->pdu_enable_ebs_a = pdu_enable_ebs_a; + this->pdu_enable_ebs_b = pdu_enable_ebs_b; + this->pdu_enable_ebs_c = pdu_enable_ebs_c; +} + +}; +struct pdu_response_t { + double pdu_alwayson_tx; + double pdu_shutdown_circuit_tx; + double pdu_lidar_tx; + double pdu_acu_tx; + double pdu_servos_regler_tx; + double pdu_inverter_tx; + double pdu_misc_tx; + double pdu_servo_tx; + double pdu_ebs_valve_1_tx; + double pdu_ebs_valve_2_tx; + double pdu_cs_valve_tx; + double pdu_aggregat_tx; + double pdu_steering_tx; + double pdu_pwm_tsac_fans; + double pdu_pwm_radiatot_fans_tx; + double pdu_pwm_aggregat; + double pdu_pwm_pump; + double pdu_heartbeat_ok_tx; +pdu_response_t() { + this->pdu_alwayson_tx = 0.0; + this->pdu_shutdown_circuit_tx = 0.0; + this->pdu_lidar_tx = 0.0; + this->pdu_acu_tx = 0.0; + this->pdu_servos_regler_tx = 0.0; + this->pdu_inverter_tx = 0.0; + this->pdu_misc_tx = 0.0; + this->pdu_servo_tx = 0.0; + this->pdu_ebs_valve_1_tx = 0.0; + this->pdu_ebs_valve_2_tx = 0.0; + this->pdu_cs_valve_tx = 0.0; + this->pdu_aggregat_tx = 0.0; + this->pdu_steering_tx = 0.0; + this->pdu_pwm_tsac_fans = 0.0; + this->pdu_pwm_radiatot_fans_tx = 0.0; + this->pdu_pwm_aggregat = 0.0; + this->pdu_pwm_pump = 0.0; + this->pdu_heartbeat_ok_tx = 0.0; +} + +pdu_response_t( + double pdu_alwayson_tx, + double pdu_shutdown_circuit_tx, + double pdu_lidar_tx, + double pdu_acu_tx, + double pdu_servos_regler_tx, + double pdu_inverter_tx, + double pdu_misc_tx, + double pdu_servo_tx, + double pdu_ebs_valve_1_tx, + double pdu_ebs_valve_2_tx, + double pdu_cs_valve_tx, + double pdu_aggregat_tx, + double pdu_steering_tx, + double pdu_pwm_tsac_fans, + double pdu_pwm_radiatot_fans_tx, + double pdu_pwm_aggregat, + double pdu_pwm_pump, + double pdu_heartbeat_ok_tx) { + this->pdu_alwayson_tx = pdu_alwayson_tx; + this->pdu_shutdown_circuit_tx = pdu_shutdown_circuit_tx; + this->pdu_lidar_tx = pdu_lidar_tx; + this->pdu_acu_tx = pdu_acu_tx; + this->pdu_servos_regler_tx = pdu_servos_regler_tx; + this->pdu_inverter_tx = pdu_inverter_tx; + this->pdu_misc_tx = pdu_misc_tx; + this->pdu_servo_tx = pdu_servo_tx; + this->pdu_ebs_valve_1_tx = pdu_ebs_valve_1_tx; + this->pdu_ebs_valve_2_tx = pdu_ebs_valve_2_tx; + this->pdu_cs_valve_tx = pdu_cs_valve_tx; + this->pdu_aggregat_tx = pdu_aggregat_tx; + this->pdu_steering_tx = pdu_steering_tx; + this->pdu_pwm_tsac_fans = pdu_pwm_tsac_fans; + this->pdu_pwm_radiatot_fans_tx = pdu_pwm_radiatot_fans_tx; + this->pdu_pwm_aggregat = pdu_pwm_aggregat; + this->pdu_pwm_pump = pdu_pwm_pump; + this->pdu_heartbeat_ok_tx = pdu_heartbeat_ok_tx; +} + +}; +struct as_mission_fb_t { + double mission_selection; +as_mission_fb_t() { + this->mission_selection = 0.0; +} + +as_mission_fb_t( + double mission_selection) { + this->mission_selection = mission_selection; +} + +}; +struct stw_mission_selected_t { + double mission_selection; +stw_mission_selected_t() { + this->mission_selection = 0.0; +} + +stw_mission_selected_t( + double mission_selection) { + this->mission_selection = mission_selection; +} + +}; +struct epsc_out_t { + double epsc_measured_rpm; + double epsc_measured_steering_angle; + double epsc_measured_mosfet_temperature; + double epsc_measured_voltage; + double epsc_measured_current; +epsc_out_t() { + this->epsc_measured_rpm = 0.0; + this->epsc_measured_steering_angle = 0.0; + this->epsc_measured_mosfet_temperature = 0.0; + this->epsc_measured_voltage = 0.0; + this->epsc_measured_current = 0.0; +} + +epsc_out_t( + double epsc_measured_rpm, + double epsc_measured_steering_angle, + double epsc_measured_mosfet_temperature, + double epsc_measured_voltage, + double epsc_measured_current) { + this->epsc_measured_rpm = epsc_measured_rpm; + this->epsc_measured_steering_angle = epsc_measured_steering_angle; + this->epsc_measured_mosfet_temperature = epsc_measured_mosfet_temperature; + this->epsc_measured_voltage = epsc_measured_voltage; + this->epsc_measured_current = epsc_measured_current; +} + +}; +struct epsc_steering_in_t { + double epsc_desired_steering_angle; +epsc_steering_in_t() { + this->epsc_desired_steering_angle = 0.0; +} + +epsc_steering_in_t( + double epsc_desired_steering_angle) { + this->epsc_desired_steering_angle = epsc_desired_steering_angle; +} + +}; +struct stw_buttons_t { + double stw_button_drs; + double stw_button_1; + double stw_button_2; + double stw_button_3; + double stw_button_4; +stw_buttons_t() { + this->stw_button_drs = 0.0; + this->stw_button_1 = 0.0; + this->stw_button_2 = 0.0; + this->stw_button_3 = 0.0; + this->stw_button_4 = 0.0; +} + +stw_buttons_t( + double stw_button_drs, + double stw_button_1, + double stw_button_2, + double stw_button_3, + double stw_button_4) { + this->stw_button_drs = stw_button_drs; + this->stw_button_1 = stw_button_1; + this->stw_button_2 = stw_button_2; + this->stw_button_3 = stw_button_3; + this->stw_button_4 = stw_button_4; +} + +}; +struct stw_status_t { + double lap_count; + double err_pdu; + double err_res; + double r2_d_progress; + double as_state_stw; + double err_as; + double err_app_sp; + double err_s_bspd; + double err_scs; + double err_con_mon; + double err_ini_chk; + double err_inv2; + double err_inv1; + double err_ams; + double err_sdc; + double sdc_status; + double inv2_ready; + double inv1_ready; + double energy_per_lap; + double ini_chk_state; +stw_status_t() { + this->lap_count = 0.0; + this->err_pdu = 0.0; + this->err_res = 0.0; + this->r2_d_progress = 0.0; + this->as_state_stw = 0.0; + this->err_as = 0.0; + this->err_app_sp = 0.0; + this->err_s_bspd = 0.0; + this->err_scs = 0.0; + this->err_con_mon = 0.0; + this->err_ini_chk = 0.0; + this->err_inv2 = 0.0; + this->err_inv1 = 0.0; + this->err_ams = 0.0; + this->err_sdc = 0.0; + this->sdc_status = 0.0; + this->inv2_ready = 0.0; + this->inv1_ready = 0.0; + this->energy_per_lap = 0.0; + this->ini_chk_state = 0.0; +} + +stw_status_t( + double lap_count, + double err_pdu, + double err_res, + double r2_d_progress, + double as_state_stw, + double err_as, + double err_app_sp, + double err_s_bspd, + double err_scs, + double err_con_mon, + double err_ini_chk, + double err_inv2, + double err_inv1, + double err_ams, + double err_sdc, + double sdc_status, + double inv2_ready, + double inv1_ready, + double energy_per_lap, + double ini_chk_state) { + this->lap_count = lap_count; + this->err_pdu = err_pdu; + this->err_res = err_res; + this->r2_d_progress = r2_d_progress; + this->as_state_stw = as_state_stw; + this->err_as = err_as; + this->err_app_sp = err_app_sp; + this->err_s_bspd = err_s_bspd; + this->err_scs = err_scs; + this->err_con_mon = err_con_mon; + this->err_ini_chk = err_ini_chk; + this->err_inv2 = err_inv2; + this->err_inv1 = err_inv1; + this->err_ams = err_ams; + this->err_sdc = err_sdc; + this->sdc_status = sdc_status; + this->inv2_ready = inv2_ready; + this->inv1_ready = inv1_ready; + this->energy_per_lap = energy_per_lap; + this->ini_chk_state = ini_chk_state; +} + +}; +struct pdu_current_1_t { + double pdu_always_on_current; + double pdu_lvms_current; + double pdu_asms_current; + double pdu_misc_current; +pdu_current_1_t() { + this->pdu_always_on_current = 0.0; + this->pdu_lvms_current = 0.0; + this->pdu_asms_current = 0.0; + this->pdu_misc_current = 0.0; +} + +pdu_current_1_t( + double pdu_always_on_current, + double pdu_lvms_current, + double pdu_asms_current, + double pdu_misc_current) { + this->pdu_always_on_current = pdu_always_on_current; + this->pdu_lvms_current = pdu_lvms_current; + this->pdu_asms_current = pdu_asms_current; + this->pdu_misc_current = pdu_misc_current; +} + +}; +struct pdu_current_2_t { + double pdu_sdc_current; + double pdu_inverter_current; + double pdu_ts_cooling_current; + double pdu_acc_cooling_current; +pdu_current_2_t() { + this->pdu_sdc_current = 0.0; + this->pdu_inverter_current = 0.0; + this->pdu_ts_cooling_current = 0.0; + this->pdu_acc_cooling_current = 0.0; +} + +pdu_current_2_t( + double pdu_sdc_current, + double pdu_inverter_current, + double pdu_ts_cooling_current, + double pdu_acc_cooling_current) { + this->pdu_sdc_current = pdu_sdc_current; + this->pdu_inverter_current = pdu_inverter_current; + this->pdu_ts_cooling_current = pdu_ts_cooling_current; + this->pdu_acc_cooling_current = pdu_acc_cooling_current; +} + +}; +struct pdu_current_3_t { + double pdu_lidar_current; + double pdu_drs_current; + double pdu_epsc_current; + double pdu_acu_current; +pdu_current_3_t() { + this->pdu_lidar_current = 0.0; + this->pdu_drs_current = 0.0; + this->pdu_epsc_current = 0.0; + this->pdu_acu_current = 0.0; +} + +pdu_current_3_t( + double pdu_lidar_current, + double pdu_drs_current, + double pdu_epsc_current, + double pdu_acu_current) { + this->pdu_lidar_current = pdu_lidar_current; + this->pdu_drs_current = pdu_drs_current; + this->pdu_epsc_current = pdu_epsc_current; + this->pdu_acu_current = pdu_acu_current; +} + +}; +struct pdu_current_4_t { + double pdu_ebs_a_current; + double pdu_ebs_b_current; +pdu_current_4_t() { + this->pdu_ebs_a_current = 0.0; + this->pdu_ebs_b_current = 0.0; +} + +pdu_current_4_t( + double pdu_ebs_a_current, + double pdu_ebs_b_current) { + this->pdu_ebs_a_current = pdu_ebs_a_current; + this->pdu_ebs_b_current = pdu_ebs_b_current; +} + +}; +struct epsc_config_in_t { + double epsc_config_p_gain; + double epsc_config_i_gain; + double epsc_config_d_gain; +epsc_config_in_t() { + this->epsc_config_p_gain = 0.0; + this->epsc_config_i_gain = 0.0; + this->epsc_config_d_gain = 0.0; +} + +epsc_config_in_t( + double epsc_config_p_gain, + double epsc_config_i_gain, + double epsc_config_d_gain) { + this->epsc_config_p_gain = epsc_config_p_gain; + this->epsc_config_i_gain = epsc_config_i_gain; + this->epsc_config_d_gain = epsc_config_d_gain; +} + +}; + +} +} +} + +// encode functions +namespace encode { +namespace can1 { +inline can1_inverter_velocity_t inverter_velocity(const frame::decoded::can1::inverter_velocity_t frame_decoded) { + can1_inverter_velocity_t frame_encoded; + frame_encoded.inverter_1_velocity = can1_inverter_velocity_inverter_1_velocity_encode(frame_decoded.inverter_1_velocity); + frame_encoded.inverter_2_velocity = can1_inverter_velocity_inverter_2_velocity_encode(frame_decoded.inverter_2_velocity); + return frame_encoded; +} + +inline can1_inverter_errors_warnings_t inverter_errors_warnings(const frame::decoded::can1::inverter_errors_warnings_t frame_decoded) { + can1_inverter_errors_warnings_t frame_encoded; + frame_encoded.inverter_1_errors = can1_inverter_errors_warnings_inverter_1_errors_encode(frame_decoded.inverter_1_errors); + frame_encoded.inverter_1_warnings = can1_inverter_errors_warnings_inverter_1_warnings_encode(frame_decoded.inverter_1_warnings); + frame_encoded.inverter_2_errors = can1_inverter_errors_warnings_inverter_2_errors_encode(frame_decoded.inverter_2_errors); + frame_encoded.inverter_2_warnings = can1_inverter_errors_warnings_inverter_2_warnings_encode(frame_decoded.inverter_2_warnings); + return frame_encoded; +} + +inline can1_inverter_torque_actual_cw_t inverter_torque_actual_cw(const frame::decoded::can1::inverter_torque_actual_cw_t frame_decoded) { + can1_inverter_torque_actual_cw_t frame_encoded; + frame_encoded.inverter_1_control_word = can1_inverter_torque_actual_cw_inverter_1_control_word_encode(frame_decoded.inverter_1_control_word); + frame_encoded.inverter_1_torque_actual = can1_inverter_torque_actual_cw_inverter_1_torque_actual_encode(frame_decoded.inverter_1_torque_actual); + frame_encoded.inverter_2_control_word = can1_inverter_torque_actual_cw_inverter_2_control_word_encode(frame_decoded.inverter_2_control_word); + frame_encoded.inverter_2_torque_actual = can1_inverter_torque_actual_cw_inverter_2_torque_actual_encode(frame_decoded.inverter_2_torque_actual); + return frame_encoded; +} + +inline can1_inverter_temperatur_t inverter_temperatur(const frame::decoded::can1::inverter_temperatur_t frame_decoded) { + can1_inverter_temperatur_t frame_encoded; + frame_encoded.inverter_1_temp_inv = can1_inverter_temperatur_inverter_1_temp_inv_encode(frame_decoded.inverter_1_temp_inv); + frame_encoded.inverter_1_temp_mot = can1_inverter_temperatur_inverter_1_temp_mot_encode(frame_decoded.inverter_1_temp_mot); + frame_encoded.inverter_2_temp_inv = can1_inverter_temperatur_inverter_2_temp_inv_encode(frame_decoded.inverter_2_temp_inv); + frame_encoded.inverter_2_temp_mot = can1_inverter_temperatur_inverter_2_temp_mot_encode(frame_decoded.inverter_2_temp_mot); + return frame_encoded; +} + +inline can1_inverter_torque_wanted_t inverter_torque_wanted(const frame::decoded::can1::inverter_torque_wanted_t frame_decoded) { + can1_inverter_torque_wanted_t frame_encoded; + frame_encoded.inverter_1_torque_demanded = can1_inverter_torque_wanted_inverter_1_torque_demanded_encode(frame_decoded.inverter_1_torque_demanded); + frame_encoded.inverter_2_torque_demanded = can1_inverter_torque_wanted_inverter_2_torque_demanded_encode(frame_decoded.inverter_2_torque_demanded); + frame_encoded.inverter_1_torque_desired = can1_inverter_torque_wanted_inverter_1_torque_desired_encode(frame_decoded.inverter_1_torque_desired); + frame_encoded.inverter_2_torque_desired = can1_inverter_torque_wanted_inverter_2_torque_desired_encode(frame_decoded.inverter_2_torque_desired); + return frame_encoded; +} + +inline can1_sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1(const frame::decoded::can1::sdo_telemetrie_rx_node1_t frame_decoded) { + can1_sdo_telemetrie_rx_node1_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_rx_node1_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_rx_node1_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node1_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_rx_node1_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2(const frame::decoded::can1::sdo_telemetrie_rx_node2_t frame_decoded) { + can1_sdo_telemetrie_rx_node2_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_rx_node2_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_rx_node2_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node2_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_rx_node2_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_sdo_telemetrie_tx_t sdo_telemetrie_tx(const frame::decoded::can1::sdo_telemetrie_tx_t frame_decoded) { + can1_sdo_telemetrie_tx_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_tx_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_tx_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_tx_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_tx_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_laptop_sdo_node_t laptop_sdo_node(const frame::decoded::can1::laptop_sdo_node_t frame_decoded) { + can1_laptop_sdo_node_t frame_encoded; + frame_encoded.node_id_sdo = can1_laptop_sdo_node_node_id_sdo_encode(frame_decoded.node_id_sdo); + return frame_encoded; +} + +inline can1_x_sens_long_lat_t x_sens_long_lat(const frame::decoded::can1::x_sens_long_lat_t frame_decoded) { + can1_x_sens_long_lat_t frame_encoded; + frame_encoded.x_sens_latitude = can1_x_sens_long_lat_x_sens_latitude_encode(frame_decoded.x_sens_latitude); + frame_encoded.x_sens_longitude = can1_x_sens_long_lat_x_sens_longitude_encode(frame_decoded.x_sens_longitude); + return frame_encoded; +} + +inline can1_x_sens_rateofturn_t x_sens_rateofturn(const frame::decoded::can1::x_sens_rateofturn_t frame_decoded) { + can1_x_sens_rateofturn_t frame_encoded; + frame_encoded.x_sens_gyr_x = can1_x_sens_rateofturn_x_sens_gyr_x_encode(frame_decoded.x_sens_gyr_x); + frame_encoded.x_sens_gy_y = can1_x_sens_rateofturn_x_sens_gy_y_encode(frame_decoded.x_sens_gy_y); + frame_encoded.x_sens_gy_z = can1_x_sens_rateofturn_x_sens_gy_z_encode(frame_decoded.x_sens_gy_z); + return frame_encoded; +} + +inline can1_x_sens_acceleration_t x_sens_acceleration(const frame::decoded::can1::x_sens_acceleration_t frame_decoded) { + can1_x_sens_acceleration_t frame_encoded; + frame_encoded.x_sens_acc_x = can1_x_sens_acceleration_x_sens_acc_x_encode(frame_decoded.x_sens_acc_x); + frame_encoded.x_sens_acc_y = can1_x_sens_acceleration_x_sens_acc_y_encode(frame_decoded.x_sens_acc_y); + frame_encoded.x_sens_acc_z = can1_x_sens_acceleration_x_sens_acc_z_encode(frame_decoded.x_sens_acc_z); + return frame_encoded; +} + +inline can1_x_sens_velocity_t x_sens_velocity(const frame::decoded::can1::x_sens_velocity_t frame_decoded) { + can1_x_sens_velocity_t frame_encoded; + frame_encoded.x_sens_vel_x = can1_x_sens_velocity_x_sens_vel_x_encode(frame_decoded.x_sens_vel_x); + frame_encoded.x_sens_vel_y = can1_x_sens_velocity_x_sens_vel_y_encode(frame_decoded.x_sens_vel_y); + frame_encoded.x_sens_vel_z = can1_x_sens_velocity_x_sens_vel_z_encode(frame_decoded.x_sens_vel_z); + return frame_encoded; +} + +inline can1_telemetrie_t telemetrie(const frame::decoded::can1::telemetrie_t frame_decoded) { + can1_telemetrie_t frame_encoded; + frame_encoded.ini_check_error_state = can1_telemetrie_ini_check_error_state_encode(frame_decoded.ini_check_error_state); + frame_encoded.powermap = can1_telemetrie_powermap_encode(frame_decoded.powermap); + frame_encoded.apps_ok = can1_telemetrie_apps_ok_encode(frame_decoded.apps_ok); + frame_encoded.brake_ok = can1_telemetrie_brake_ok_encode(frame_decoded.brake_ok); + frame_encoded.allow_torque = can1_telemetrie_allow_torque_encode(frame_decoded.allow_torque); + frame_encoded.asp_ok = can1_telemetrie_asp_ok_encode(frame_decoded.asp_ok); + frame_encoded.pressure_sensor_ok = can1_telemetrie_pressure_sensor_ok_encode(frame_decoded.pressure_sensor_ok); + frame_encoded.torque_vectoring_on = can1_telemetrie_torque_vectoring_on_encode(frame_decoded.torque_vectoring_on); + frame_encoded.reku_on = can1_telemetrie_reku_on_encode(frame_decoded.reku_on); + frame_encoded.traction_control_on = can1_telemetrie_traction_control_on_encode(frame_decoded.traction_control_on); + frame_encoded.ts_deactivate = can1_telemetrie_ts_deactivate_encode(frame_decoded.ts_deactivate); + frame_encoded.torque_limit = can1_telemetrie_torque_limit_encode(frame_decoded.torque_limit); + frame_encoded.power_limit = can1_telemetrie_power_limit_encode(frame_decoded.power_limit); + frame_encoded.torque_limit_dynamisch = can1_telemetrie_torque_limit_dynamisch_encode(frame_decoded.torque_limit_dynamisch); + frame_encoded.torque_ohne_limit_l = can1_telemetrie_torque_ohne_limit_l_encode(frame_decoded.torque_ohne_limit_l); + frame_encoded.torque_ohne_limit_r = can1_telemetrie_torque_ohne_limit_r_encode(frame_decoded.torque_ohne_limit_r); + return frame_encoded; +} + +inline can1_override_powermap_t override_powermap(const frame::decoded::can1::override_powermap_t frame_decoded) { + can1_override_powermap_t frame_encoded; + frame_encoded.laptopp_power_map = can1_override_powermap_laptopp_power_map_encode(frame_decoded.laptopp_power_map); + frame_encoded.laptop_reku = can1_override_powermap_laptop_reku_encode(frame_decoded.laptop_reku); + frame_encoded.laptop_tc = can1_override_powermap_laptop_tc_encode(frame_decoded.laptop_tc); + frame_encoded.laptop_tv = can1_override_powermap_laptop_tv_encode(frame_decoded.laptop_tv); + frame_encoded.laptop_slipref = can1_override_powermap_laptop_slipref_encode(frame_decoded.laptop_slipref); + frame_encoded.laptop_tc_i = can1_override_powermap_laptop_tc_i_encode(frame_decoded.laptop_tc_i); + frame_encoded.laptop_tc_p = can1_override_powermap_laptop_tc_p_encode(frame_decoded.laptop_tc_p); + frame_encoded.laptop_tc_mumax = can1_override_powermap_laptop_tc_mumax_encode(frame_decoded.laptop_tc_mumax); + return frame_encoded; +} + +inline can1_override_laptop_2_t override_laptop_2(const frame::decoded::can1::override_laptop_2_t frame_decoded) { + can1_override_laptop_2_t frame_encoded; + frame_encoded.as_mission = can1_override_laptop_2_as_mission_encode(frame_decoded.as_mission); + frame_encoded.as_state = can1_override_laptop_2_as_state_encode(frame_decoded.as_state); + frame_encoded.manual_input_torque = can1_override_laptop_2_manual_input_torque_encode(frame_decoded.manual_input_torque); + frame_encoded.laptop_powerlimit = can1_override_laptop_2_laptop_powerlimit_encode(frame_decoded.laptop_powerlimit); + frame_encoded.laptop_torque_lim = can1_override_laptop_2_laptop_torque_lim_encode(frame_decoded.laptop_torque_lim); + return frame_encoded; +} + +inline can1_override_epsc_cooling_t override_epsc_cooling(const frame::decoded::can1::override_epsc_cooling_t frame_decoded) { + can1_override_epsc_cooling_t frame_encoded; + frame_encoded.epsc_manual_angle = can1_override_epsc_cooling_epsc_manual_angle_encode(frame_decoded.epsc_manual_angle); + frame_encoded.epsc_mode = can1_override_epsc_cooling_epsc_mode_encode(frame_decoded.epsc_mode); + frame_encoded.ac_cooling_enable = can1_override_epsc_cooling_ac_cooling_enable_encode(frame_decoded.ac_cooling_enable); + frame_encoded.ts_cooling_enable = can1_override_epsc_cooling_ts_cooling_enable_encode(frame_decoded.ts_cooling_enable); + frame_encoded.ac_cooling_pwm = can1_override_epsc_cooling_ac_cooling_pwm_encode(frame_decoded.ac_cooling_pwm); + frame_encoded.ts_cooling_pwm = can1_override_epsc_cooling_ts_cooling_pwm_encode(frame_decoded.ts_cooling_pwm); + return frame_encoded; +} + +inline can1_override_laptop_t override_laptop(const frame::decoded::can1::override_laptop_t frame_decoded) { + can1_override_laptop_t frame_encoded; + frame_encoded.fake_r2_d = can1_override_laptop_fake_r2_d_encode(frame_decoded.fake_r2_d); + frame_encoded.fake_soundbox_emergency = can1_override_laptop_fake_soundbox_emergency_encode(frame_decoded.fake_soundbox_emergency); + frame_encoded.fake_soundbox_r2_d = can1_override_laptop_fake_soundbox_r2_d_encode(frame_decoded.fake_soundbox_r2_d); + frame_encoded.fake_ts_active = can1_override_laptop_fake_ts_active_encode(frame_decoded.fake_ts_active); + frame_encoded.override_apps = can1_override_laptop_override_apps_encode(frame_decoded.override_apps); + frame_encoded.override_as_mission = can1_override_laptop_override_as_mission_encode(frame_decoded.override_as_mission); + frame_encoded.override_as_state = can1_override_laptop_override_as_state_encode(frame_decoded.override_as_state); + frame_encoded.override_epsc_mode = can1_override_laptop_override_epsc_mode_encode(frame_decoded.override_epsc_mode); + frame_encoded.override_pdu_ac_cooling_enable = can1_override_laptop_override_pdu_ac_cooling_enable_encode(frame_decoded.override_pdu_ac_cooling_enable); + frame_encoded.override_pdu_acu_enable = can1_override_laptop_override_pdu_acu_enable_encode(frame_decoded.override_pdu_acu_enable); + frame_encoded.override_pdu_drs_enable = can1_override_laptop_override_pdu_drs_enable_encode(frame_decoded.override_pdu_drs_enable); + frame_encoded.override_pdu_epsc_enable = can1_override_laptop_override_pdu_epsc_enable_encode(frame_decoded.override_pdu_epsc_enable); + frame_encoded.override_pdu_heartbeat = can1_override_laptop_override_pdu_heartbeat_encode(frame_decoded.override_pdu_heartbeat); + frame_encoded.override_pdu_lidar_enable = can1_override_laptop_override_pdu_lidar_enable_encode(frame_decoded.override_pdu_lidar_enable); + frame_encoded.override_pdu_pn_v1_enable = can1_override_laptop_override_pdu_pn_v1_enable_encode(frame_decoded.override_pdu_pn_v1_enable); + frame_encoded.override_pdu_pn_v2_enable = can1_override_laptop_override_pdu_pn_v2_enable_encode(frame_decoded.override_pdu_pn_v2_enable); + frame_encoded.override_pdu_ts_cooling_enable = can1_override_laptop_override_pdu_ts_cooling_enable_encode(frame_decoded.override_pdu_ts_cooling_enable); + frame_encoded.override_power_map = can1_override_laptop_override_power_map_encode(frame_decoded.override_power_map); + frame_encoded.override_tc_parameter = can1_override_laptop_override_tc_parameter_encode(frame_decoded.override_tc_parameter); + frame_encoded.override_torque_input = can1_override_laptop_override_torque_input_encode(frame_decoded.override_torque_input); + return frame_encoded; +} + +inline can1_apps_override_t apps_override(const frame::decoded::can1::apps_override_t frame_decoded) { + can1_apps_override_t frame_encoded; + frame_encoded.apps_0_max = can1_apps_override_apps_0_max_encode(frame_decoded.apps_0_max); + frame_encoded.apps_0_min = can1_apps_override_apps_0_min_encode(frame_decoded.apps_0_min); + frame_encoded.apps_1_max = can1_apps_override_apps_1_max_encode(frame_decoded.apps_1_max); + frame_encoded.apps_1_min = can1_apps_override_apps_1_min_encode(frame_decoded.apps_1_min); + return frame_encoded; +} + +inline can1_ftcu_damper_t ftcu_damper(const frame::decoded::can1::ftcu_damper_t frame_decoded) { + can1_ftcu_damper_t frame_encoded; + frame_encoded.ftcu_damper_fl = can1_ftcu_damper_ftcu_damper_fl_encode(frame_decoded.ftcu_damper_fl); + frame_encoded.ftcu_damper_fr = can1_ftcu_damper_ftcu_damper_fr_encode(frame_decoded.ftcu_damper_fr); + frame_encoded.ftcu_damper_rl = can1_ftcu_damper_ftcu_damper_rl_encode(frame_decoded.ftcu_damper_rl); + frame_encoded.ftcu_damper_rr = can1_ftcu_damper_ftcu_damper_rr_encode(frame_decoded.ftcu_damper_rr); + return frame_encoded; +} + +inline can1_ftcu_param_confirm_t ftcu_param_confirm(const frame::decoded::can1::ftcu_param_confirm_t frame_decoded) { + can1_ftcu_param_confirm_t frame_encoded; + frame_encoded.ftcu_param_confirm = can1_ftcu_param_confirm_ftcu_param_confirm_encode(frame_decoded.ftcu_param_confirm); + return frame_encoded; +} + +inline can1_sensornode_f_10_hz_t sensornode_f_10_hz(const frame::decoded::can1::sensornode_f_10_hz_t frame_decoded) { + can1_sensornode_f_10_hz_t frame_encoded; + frame_encoded.ls_l = can1_sensornode_f_10_hz_ls_l_encode(frame_decoded.ls_l); + frame_encoded.ls_r = can1_sensornode_f_10_hz_ls_r_encode(frame_decoded.ls_r); + frame_encoded.sdc_m_pre_bots = can1_sensornode_f_10_hz_sdc_m_pre_bots_encode(frame_decoded.sdc_m_pre_bots); + frame_encoded.sdc_m_post_ins = can1_sensornode_f_10_hz_sdc_m_post_ins_encode(frame_decoded.sdc_m_post_ins); + frame_encoded.sdc_m_post_bspd = can1_sensornode_f_10_hz_sdc_m_post_bspd_encode(frame_decoded.sdc_m_post_bspd); + frame_encoded.bdts_fl = can1_sensornode_f_10_hz_bdts_fl_encode(frame_decoded.bdts_fl); + frame_encoded.bdts_fr = can1_sensornode_f_10_hz_bdts_fr_encode(frame_decoded.bdts_fr); + return frame_encoded; +} + +inline can1_sensornode_f_100_hz_1_t sensornode_f_100_hz_1(const frame::decoded::can1::sensornode_f_100_hz_1_t frame_decoded) { + can1_sensornode_f_100_hz_1_t frame_encoded; + frame_encoded.apps_1 = can1_sensornode_f_100_hz_1_apps_1_encode(frame_decoded.apps_1); + frame_encoded.apps_2 = can1_sensornode_f_100_hz_1_apps_2_encode(frame_decoded.apps_2); + frame_encoded.bp_f = can1_sensornode_f_100_hz_1_bp_f_encode(frame_decoded.bp_f); + frame_encoded.sas = can1_sensornode_f_100_hz_1_sas_encode(frame_decoded.sas); + frame_encoded.wss_fl = can1_sensornode_f_100_hz_1_wss_fl_encode(frame_decoded.wss_fl); + frame_encoded.wss_fr = can1_sensornode_f_100_hz_1_wss_fr_encode(frame_decoded.wss_fr); + return frame_encoded; +} + +inline can1_sensornode_f_100_hz_2_t sensornode_f_100_hz_2(const frame::decoded::can1::sensornode_f_100_hz_2_t frame_decoded) { + can1_sensornode_f_100_hz_2_t frame_encoded; + frame_encoded.ds_fl = can1_sensornode_f_100_hz_2_ds_fl_encode(frame_decoded.ds_fl); + frame_encoded.ds_fr = can1_sensornode_f_100_hz_2_ds_fr_encode(frame_decoded.ds_fr); + return frame_encoded; +} + +inline can1_sensornode_f_1k_hz_t sensornode_f_1k_hz(const frame::decoded::can1::sensornode_f_1k_hz_t frame_decoded) { + can1_sensornode_f_1k_hz_t frame_encoded; + frame_encoded.sls_fl = can1_sensornode_f_1k_hz_sls_fl_encode(frame_decoded.sls_fl); + frame_encoded.sls_fr = can1_sensornode_f_1k_hz_sls_fr_encode(frame_decoded.sls_fr); + return frame_encoded; +} + +inline can1_sensornode_r_10_hz_t sensornode_r_10_hz(const frame::decoded::can1::sensornode_r_10_hz_t frame_decoded) { + can1_sensornode_r_10_hz_t frame_encoded; + frame_encoded.ext_ts_on = can1_sensornode_r_10_hz_ext_ts_on_encode(frame_decoded.ext_ts_on); + frame_encoded.sdc_m_pre_tsms = can1_sensornode_r_10_hz_sdc_m_pre_tsms_encode(frame_decoded.sdc_m_pre_tsms); + frame_encoded.sdc_m_post_tsms = can1_sensornode_r_10_hz_sdc_m_post_tsms_encode(frame_decoded.sdc_m_post_tsms); + frame_encoded.bdts_rl = can1_sensornode_r_10_hz_bdts_rl_encode(frame_decoded.bdts_rl); + frame_encoded.bdts_rr = can1_sensornode_r_10_hz_bdts_rr_encode(frame_decoded.bdts_rr); + frame_encoded.wt_bat = can1_sensornode_r_10_hz_wt_bat_encode(frame_decoded.wt_bat); + frame_encoded.wt_dt = can1_sensornode_r_10_hz_wt_dt_encode(frame_decoded.wt_dt); + frame_encoded.wp_bat = can1_sensornode_r_10_hz_wp_bat_encode(frame_decoded.wp_bat); + frame_encoded.wp_dt = can1_sensornode_r_10_hz_wp_dt_encode(frame_decoded.wp_dt); + return frame_encoded; +} + +inline can1_sensornode_r_100_hz_t sensornode_r_100_hz(const frame::decoded::can1::sensornode_r_100_hz_t frame_decoded) { + can1_sensornode_r_100_hz_t frame_encoded; + frame_encoded.ebs_aps_1 = can1_sensornode_r_100_hz_ebs_aps_1_encode(frame_decoded.ebs_aps_1); + frame_encoded.ebs_aps_2 = can1_sensornode_r_100_hz_ebs_aps_2_encode(frame_decoded.ebs_aps_2); + frame_encoded.bp_r = can1_sensornode_r_100_hz_bp_r_encode(frame_decoded.bp_r); + frame_encoded.wss_rl = can1_sensornode_r_100_hz_wss_rl_encode(frame_decoded.wss_rl); + frame_encoded.wss_rr = can1_sensornode_r_100_hz_wss_rr_encode(frame_decoded.wss_rr); + frame_encoded.ds_rl = can1_sensornode_r_100_hz_ds_rl_encode(frame_decoded.ds_rl); + frame_encoded.ds_rr = can1_sensornode_r_100_hz_ds_rr_encode(frame_decoded.ds_rr); + return frame_encoded; +} + +inline can1_sensornode_r_1k_hz_t sensornode_r_1k_hz(const frame::decoded::can1::sensornode_r_1k_hz_t frame_decoded) { + can1_sensornode_r_1k_hz_t frame_encoded; + frame_encoded.sls_rl = can1_sensornode_r_1k_hz_sls_rl_encode(frame_decoded.sls_rl); + frame_encoded.sls_rr = can1_sensornode_r_1k_hz_sls_rr_encode(frame_decoded.sls_rr); + return frame_encoded; +} + +inline can1_pwm_duty_cycle_t pwm_duty_cycle(const frame::decoded::can1::pwm_duty_cycle_t frame_decoded) { + can1_pwm_duty_cycle_t frame_encoded; + frame_encoded.dc_drs = can1_pwm_duty_cycle_dc_drs_encode(frame_decoded.dc_drs); + frame_encoded.dc_assi_y = can1_pwm_duty_cycle_dc_assi_y_encode(frame_decoded.dc_assi_y); + frame_encoded.dc_assi_b = can1_pwm_duty_cycle_dc_assi_b_encode(frame_decoded.dc_assi_b); + frame_encoded.dc_bl = can1_pwm_duty_cycle_dc_bl_encode(frame_decoded.dc_bl); + frame_encoded.dc_fans_dt = can1_pwm_duty_cycle_dc_fans_dt_encode(frame_decoded.dc_fans_dt); + frame_encoded.dc_fans_bat = can1_pwm_duty_cycle_dc_fans_bat_encode(frame_decoded.dc_fans_bat); + frame_encoded.dc_sbx = can1_pwm_duty_cycle_dc_sbx_encode(frame_decoded.dc_sbx); + return frame_encoded; +} + +inline can1_pwm_config_t pwm_config(const frame::decoded::can1::pwm_config_t frame_decoded) { + can1_pwm_config_t frame_encoded; + frame_encoded.freq_pwm1_drs_lighting = can1_pwm_config_freq_pwm1_drs_lighting_encode(frame_decoded.freq_pwm1_drs_lighting); + frame_encoded.freq_pwm3_fans = can1_pwm_config_freq_pwm3_fans_encode(frame_decoded.freq_pwm3_fans); + frame_encoded.freq_pwm2_sbx = can1_pwm_config_freq_pwm2_sbx_encode(frame_decoded.freq_pwm2_sbx); + return frame_encoded; +} + +inline can1_dashboard_in_t dashboard_in(const frame::decoded::can1::dashboard_in_t frame_decoded) { + can1_dashboard_in_t frame_encoded; + frame_encoded.dashboard_r2_d_button = can1_dashboard_in_dashboard_r2_d_button_encode(frame_decoded.dashboard_r2_d_button); + frame_encoded.dashboard_ts_activate_button = can1_dashboard_in_dashboard_ts_activate_button_encode(frame_decoded.dashboard_ts_activate_button); + frame_encoded.dashboard_race_key = can1_dashboard_in_dashboard_race_key_encode(frame_decoded.dashboard_race_key); + frame_encoded.dashboard_sdc_in = can1_dashboard_in_dashboard_sdc_in_encode(frame_decoded.dashboard_sdc_in); + frame_encoded.dashboard_sdc_out = can1_dashboard_in_dashboard_sdc_out_encode(frame_decoded.dashboard_sdc_out); + return frame_encoded; +} + +inline can1_ams_slave1_status_t ams_slave1_status(const frame::decoded::can1::ams_slave1_status_t frame_decoded) { + can1_ams_slave1_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave1_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave1_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave1_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave1_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave1_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave1_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave2_log0_t ams_slave2_log0(const frame::decoded::can1::ams_slave2_log0_t frame_decoded) { + can1_ams_slave2_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave2_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave2_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave2_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave2_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave2_log1_t ams_slave2_log1(const frame::decoded::can1::ams_slave2_log1_t frame_decoded) { + can1_ams_slave2_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave2_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave2_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave2_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave2_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave2_log2_t ams_slave2_log2(const frame::decoded::can1::ams_slave2_log2_t frame_decoded) { + can1_ams_slave2_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave2_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave2_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave2_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave2_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave2_log3_t ams_slave2_log3(const frame::decoded::can1::ams_slave2_log3_t frame_decoded) { + can1_ams_slave2_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave2_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave2_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave2_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave2_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave2_log4_t ams_slave2_log4(const frame::decoded::can1::ams_slave2_log4_t frame_decoded) { + can1_ams_slave2_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave2_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave2_log5_t ams_slave2_log5(const frame::decoded::can1::ams_slave2_log5_t frame_decoded) { + can1_ams_slave2_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave2_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave2_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave2_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave2_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave2_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave2_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave2_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave2_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave5_log6_t ams_slave5_log6(const frame::decoded::can1::ams_slave5_log6_t frame_decoded) { + can1_ams_slave5_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave5_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave5_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave4_log6_t ams_slave4_log6(const frame::decoded::can1::ams_slave4_log6_t frame_decoded) { + can1_ams_slave4_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave4_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave4_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave3_log6_t ams_slave3_log6(const frame::decoded::can1::ams_slave3_log6_t frame_decoded) { + can1_ams_slave3_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave3_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave3_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave2_log6_t ams_slave2_log6(const frame::decoded::can1::ams_slave2_log6_t frame_decoded) { + can1_ams_slave2_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave2_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave2_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave1_log6_t ams_slave1_log6(const frame::decoded::can1::ams_slave1_log6_t frame_decoded) { + can1_ams_slave1_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave1_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave1_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave5_log5_t ams_slave5_log5(const frame::decoded::can1::ams_slave5_log5_t frame_decoded) { + can1_ams_slave5_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave5_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave5_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave5_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave5_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave5_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave5_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave5_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave5_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave4_log5_t ams_slave4_log5(const frame::decoded::can1::ams_slave4_log5_t frame_decoded) { + can1_ams_slave4_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave4_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave4_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave4_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave4_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave4_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave4_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave4_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave4_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave3_log5_t ams_slave3_log5(const frame::decoded::can1::ams_slave3_log5_t frame_decoded) { + can1_ams_slave3_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave3_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave3_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave3_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave3_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave3_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave3_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave3_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave3_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave1_log5_t ams_slave1_log5(const frame::decoded::can1::ams_slave1_log5_t frame_decoded) { + can1_ams_slave1_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave1_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave1_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave1_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave1_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave1_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave1_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave1_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave1_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave5_log4_t ams_slave5_log4(const frame::decoded::can1::ams_slave5_log4_t frame_decoded) { + can1_ams_slave5_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave5_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave4_log4_t ams_slave4_log4(const frame::decoded::can1::ams_slave4_log4_t frame_decoded) { + can1_ams_slave4_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave4_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave3_log4_t ams_slave3_log4(const frame::decoded::can1::ams_slave3_log4_t frame_decoded) { + can1_ams_slave3_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave3_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave1_log4_t ams_slave1_log4(const frame::decoded::can1::ams_slave1_log4_t frame_decoded) { + can1_ams_slave1_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave1_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave5_log3_t ams_slave5_log3(const frame::decoded::can1::ams_slave5_log3_t frame_decoded) { + can1_ams_slave5_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave5_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave5_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave5_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave5_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave4_log3_t ams_slave4_log3(const frame::decoded::can1::ams_slave4_log3_t frame_decoded) { + can1_ams_slave4_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave4_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave4_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave4_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave4_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave3_log3_t ams_slave3_log3(const frame::decoded::can1::ams_slave3_log3_t frame_decoded) { + can1_ams_slave3_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave3_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave3_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave3_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave3_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave1_log3_t ams_slave1_log3(const frame::decoded::can1::ams_slave1_log3_t frame_decoded) { + can1_ams_slave1_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave1_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave1_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave1_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave1_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave5_log2_t ams_slave5_log2(const frame::decoded::can1::ams_slave5_log2_t frame_decoded) { + can1_ams_slave5_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave5_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave5_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave5_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave5_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave4_log2_t ams_slave4_log2(const frame::decoded::can1::ams_slave4_log2_t frame_decoded) { + can1_ams_slave4_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave4_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave4_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave4_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave4_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave3_log2_t ams_slave3_log2(const frame::decoded::can1::ams_slave3_log2_t frame_decoded) { + can1_ams_slave3_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave3_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave3_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave3_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave3_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave1_log2_t ams_slave1_log2(const frame::decoded::can1::ams_slave1_log2_t frame_decoded) { + can1_ams_slave1_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave1_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave1_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave1_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave1_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave5_log1_t ams_slave5_log1(const frame::decoded::can1::ams_slave5_log1_t frame_decoded) { + can1_ams_slave5_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave5_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave5_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave5_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave5_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave4_log1_t ams_slave4_log1(const frame::decoded::can1::ams_slave4_log1_t frame_decoded) { + can1_ams_slave4_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave4_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave4_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave4_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave4_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave3_log1_t ams_slave3_log1(const frame::decoded::can1::ams_slave3_log1_t frame_decoded) { + can1_ams_slave3_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave3_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave3_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave3_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave3_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave1_log1_t ams_slave1_log1(const frame::decoded::can1::ams_slave1_log1_t frame_decoded) { + can1_ams_slave1_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave1_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave1_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave1_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave1_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave5_log0_t ams_slave5_log0(const frame::decoded::can1::ams_slave5_log0_t frame_decoded) { + can1_ams_slave5_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave5_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave5_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave5_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave5_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave4_log0_t ams_slave4_log0(const frame::decoded::can1::ams_slave4_log0_t frame_decoded) { + can1_ams_slave4_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave4_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave4_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave4_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave4_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave3_log0_t ams_slave3_log0(const frame::decoded::can1::ams_slave3_log0_t frame_decoded) { + can1_ams_slave3_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave3_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave3_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave3_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave3_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave1_log0_t ams_slave1_log0(const frame::decoded::can1::ams_slave1_log0_t frame_decoded) { + can1_ams_slave1_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave1_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave1_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave1_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave1_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_pdu_heartbeat_t pdu_heartbeat(const frame::decoded::can1::pdu_heartbeat_t frame_decoded) { + can1_pdu_heartbeat_t frame_encoded; + frame_encoded.pdu_heartbeat = can1_pdu_heartbeat_pdu_heartbeat_encode(frame_decoded.pdu_heartbeat); + return frame_encoded; +} + +inline can1_ftcu_pneumatik_t ftcu_pneumatik(const frame::decoded::can1::ftcu_pneumatik_t frame_decoded) { + can1_ftcu_pneumatik_t frame_encoded; + frame_encoded.ftcu_tank_pressure_1 = can1_ftcu_pneumatik_ftcu_tank_pressure_1_encode(frame_decoded.ftcu_tank_pressure_1); + frame_encoded.ftcu_tank_pressure_2 = can1_ftcu_pneumatik_ftcu_tank_pressure_2_encode(frame_decoded.ftcu_tank_pressure_2); + return frame_encoded; +} + +inline can1_acu_tx_commands_t acu_tx_commands(const frame::decoded::can1::acu_tx_commands_t frame_decoded) { + can1_acu_tx_commands_t frame_encoded; + frame_encoded.abx_speed_fl = can1_acu_tx_commands_abx_speed_fl_encode(frame_decoded.abx_speed_fl); + frame_encoded.abx_speed_fr = can1_acu_tx_commands_abx_speed_fr_encode(frame_decoded.abx_speed_fr); + frame_encoded.abx_speed_rl = can1_acu_tx_commands_abx_speed_rl_encode(frame_decoded.abx_speed_rl); + frame_encoded.abx_speed_rr = can1_acu_tx_commands_abx_speed_rr_encode(frame_decoded.abx_speed_rr); + frame_encoded.abx_steering_angle_left = can1_acu_tx_commands_abx_steering_angle_left_encode(frame_decoded.abx_steering_angle_left); + frame_encoded.abx_steering_angle_right = can1_acu_tx_commands_abx_steering_angle_right_encode(frame_decoded.abx_steering_angle_right); + return frame_encoded; +} + +inline can1_acu_rx_commands_t acu_rx_commands(const frame::decoded::can1::acu_rx_commands_t frame_decoded) { + can1_acu_rx_commands_t frame_encoded; + frame_encoded.acu_speed_target_left = can1_acu_rx_commands_acu_speed_target_left_encode(frame_decoded.acu_speed_target_left); + frame_encoded.acu_speed_target_right = can1_acu_rx_commands_acu_speed_target_right_encode(frame_decoded.acu_speed_target_right); + frame_encoded.acu_steering_angle_right = can1_acu_rx_commands_acu_steering_angle_right_encode(frame_decoded.acu_steering_angle_right); + frame_encoded.acu_steering_angle_left = can1_acu_rx_commands_acu_steering_angle_left_encode(frame_decoded.acu_steering_angle_left); + return frame_encoded; +} + +inline can1_acu_rx_t acu_rx(const frame::decoded::can1::acu_rx_t frame_decoded) { + can1_acu_rx_t frame_encoded; + frame_encoded.acu_as_mission_complete = can1_acu_rx_acu_as_mission_complete_encode(frame_decoded.acu_as_mission_complete); + frame_encoded.acu_as_ok = can1_acu_rx_acu_as_ok_encode(frame_decoded.acu_as_ok); + frame_encoded.acu_drs = can1_acu_rx_acu_drs_encode(frame_decoded.acu_drs); + frame_encoded.acu_lap_count = can1_acu_rx_acu_lap_count_encode(frame_decoded.acu_lap_count); + frame_encoded.acu_cones_all = can1_acu_rx_acu_cones_all_encode(frame_decoded.acu_cones_all); + frame_encoded.acu_cones_actual = can1_acu_rx_acu_cones_actual_encode(frame_decoded.acu_cones_actual); + return frame_encoded; +} + +inline can1_ams_slave0_log0_t ams_slave0_log0(const frame::decoded::can1::ams_slave0_log0_t frame_decoded) { + can1_ams_slave0_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave0_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave0_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave0_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave0_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave0_log1_t ams_slave0_log1(const frame::decoded::can1::ams_slave0_log1_t frame_decoded) { + can1_ams_slave0_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave0_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave0_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave0_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave0_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave0_log3_t ams_slave0_log3(const frame::decoded::can1::ams_slave0_log3_t frame_decoded) { + can1_ams_slave0_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave0_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave0_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave0_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave0_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave0_log4_t ams_slave0_log4(const frame::decoded::can1::ams_slave0_log4_t frame_decoded) { + can1_ams_slave0_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave0_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave0_log5_t ams_slave0_log5(const frame::decoded::can1::ams_slave0_log5_t frame_decoded) { + can1_ams_slave0_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave0_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave0_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave0_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave0_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave0_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave0_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave0_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave0_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave0_log6_t ams_slave0_log6(const frame::decoded::can1::ams_slave0_log6_t frame_decoded) { + can1_ams_slave0_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave0_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave0_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_acu_tx_t acu_tx(const frame::decoded::can1::acu_tx_t frame_decoded) { + can1_acu_tx_t frame_encoded; + frame_encoded.acu_as_mission = can1_acu_tx_acu_as_mission_encode(frame_decoded.acu_as_mission); + frame_encoded.acu_as_state = can1_acu_tx_acu_as_state_encode(frame_decoded.acu_as_state); + frame_encoded.acu_power_off = can1_acu_tx_acu_power_off_encode(frame_decoded.acu_power_off); + frame_encoded.acu_reset = can1_acu_tx_acu_reset_encode(frame_decoded.acu_reset); + frame_encoded.acu_allow_torque = can1_acu_tx_acu_allow_torque_encode(frame_decoded.acu_allow_torque); + frame_encoded.abx_con_mon_error = can1_acu_tx_abx_con_mon_error_encode(frame_decoded.abx_con_mon_error); + return frame_encoded; +} + +inline can1_ams_slave5_status_t ams_slave5_status(const frame::decoded::can1::ams_slave5_status_t frame_decoded) { + can1_ams_slave5_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave5_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave5_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave5_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave5_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave5_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave5_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave4_status_t ams_slave4_status(const frame::decoded::can1::ams_slave4_status_t frame_decoded) { + can1_ams_slave4_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave4_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave4_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave4_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave4_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave4_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave4_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave3_status_t ams_slave3_status(const frame::decoded::can1::ams_slave3_status_t frame_decoded) { + can1_ams_slave3_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave3_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave3_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave3_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave3_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave3_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave3_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave2_status_t ams_slave2_status(const frame::decoded::can1::ams_slave2_status_t frame_decoded) { + can1_ams_slave2_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave2_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave2_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave2_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave2_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave2_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave2_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_error_t ams_error(const frame::decoded::can1::ams_error_t frame_decoded) { + can1_ams_error_t frame_encoded; + frame_encoded.ams_error_kind = can1_ams_error_ams_error_kind_encode(frame_decoded.ams_error_kind); + frame_encoded.ams_error_arg = can1_ams_error_ams_error_arg_encode(frame_decoded.ams_error_arg); + return frame_encoded; +} + +inline can1_ftcu_cooling_t ftcu_cooling(const frame::decoded::can1::ftcu_cooling_t frame_decoded) { + can1_ftcu_cooling_t frame_encoded; + frame_encoded.ftcu_water_pressure_2 = can1_ftcu_cooling_ftcu_water_pressure_2_encode(frame_decoded.ftcu_water_pressure_2); + frame_encoded.ftcu_water_pressure_1 = can1_ftcu_cooling_ftcu_water_pressure_1_encode(frame_decoded.ftcu_water_pressure_1); + frame_encoded.ftcu_water_temperature_1 = can1_ftcu_cooling_ftcu_water_temperature_1_encode(frame_decoded.ftcu_water_temperature_1); + frame_encoded.ftcu_water_temperature_2 = can1_ftcu_cooling_ftcu_water_temperature_2_encode(frame_decoded.ftcu_water_temperature_2); + frame_encoded.ftcu_flow_rate = can1_ftcu_cooling_ftcu_flow_rate_encode(frame_decoded.ftcu_flow_rate); + return frame_encoded; +} + +inline can1_ftcu_brake_t_t ftcu_brake_t(const frame::decoded::can1::ftcu_brake_t_t frame_decoded) { + can1_ftcu_brake_t_t frame_encoded; + frame_encoded.ftcu_brake_t_fl = can1_ftcu_brake_t_ftcu_brake_t_fl_encode(frame_decoded.ftcu_brake_t_fl); + frame_encoded.ftcu_brake_t_fr = can1_ftcu_brake_t_ftcu_brake_t_fr_encode(frame_decoded.ftcu_brake_t_fr); + frame_encoded.ftcu_brake_t_rl = can1_ftcu_brake_t_ftcu_brake_t_rl_encode(frame_decoded.ftcu_brake_t_rl); + frame_encoded.ftcu_brake_t_rr = can1_ftcu_brake_t_ftcu_brake_t_rr_encode(frame_decoded.ftcu_brake_t_rr); + return frame_encoded; +} + +inline can1_ftcu_wheelspeed_t ftcu_wheelspeed(const frame::decoded::can1::ftcu_wheelspeed_t frame_decoded) { + can1_ftcu_wheelspeed_t frame_encoded; + frame_encoded.ftcu_wheelspeed_fl = can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_encode(frame_decoded.ftcu_wheelspeed_fl); + frame_encoded.ftcu_wheelspeed_fr = can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_encode(frame_decoded.ftcu_wheelspeed_fr); + frame_encoded.ftcu_wheelspeed_rl = can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_encode(frame_decoded.ftcu_wheelspeed_rl); + frame_encoded.ftcu_wheelspeed_rr = can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_encode(frame_decoded.ftcu_wheelspeed_rr); + frame_encoded.ftcu_distance_session = can1_ftcu_wheelspeed_ftcu_distance_session_encode(frame_decoded.ftcu_distance_session); + return frame_encoded; +} + +inline can1_ftcu_timings_t ftcu_timings(const frame::decoded::can1::ftcu_timings_t frame_decoded) { + can1_ftcu_timings_t frame_encoded; + frame_encoded.ftcu_laptime_best = can1_ftcu_timings_ftcu_laptime_best_encode(frame_decoded.ftcu_laptime_best); + frame_encoded.ftcu_laptime_last = can1_ftcu_timings_ftcu_laptime_last_encode(frame_decoded.ftcu_laptime_last); + frame_encoded.ftcu_sectortime_best = can1_ftcu_timings_ftcu_sectortime_best_encode(frame_decoded.ftcu_sectortime_best); + frame_encoded.ftcu_sectortime_last = can1_ftcu_timings_ftcu_sectortime_last_encode(frame_decoded.ftcu_sectortime_last); + return frame_encoded; +} + +inline can1_ftcu_driver_t ftcu_driver(const frame::decoded::can1::ftcu_driver_t frame_decoded) { + can1_ftcu_driver_t frame_encoded; + frame_encoded.ftcu_apps_percent = can1_ftcu_driver_ftcu_apps_percent_encode(frame_decoded.ftcu_apps_percent); + frame_encoded.ftcu_brake_pressure_f = can1_ftcu_driver_ftcu_brake_pressure_f_encode(frame_decoded.ftcu_brake_pressure_f); + frame_encoded.ftcu_brake_pressure_r = can1_ftcu_driver_ftcu_brake_pressure_r_encode(frame_decoded.ftcu_brake_pressure_r); + frame_encoded.ftcu_steering_angle = can1_ftcu_driver_ftcu_steering_angle_encode(frame_decoded.ftcu_steering_angle); + frame_encoded.ftcu_speed = can1_ftcu_driver_ftcu_speed_encode(frame_decoded.ftcu_speed); + frame_encoded.ftcu_lapcounter = can1_ftcu_driver_ftcu_lapcounter_encode(frame_decoded.ftcu_lapcounter); + frame_encoded.ftcu_sectorcounter = can1_ftcu_driver_ftcu_sectorcounter_encode(frame_decoded.ftcu_sectorcounter); + return frame_encoded; +} + +inline can1_tts_rr_t tts_rr(const frame::decoded::can1::tts_rr_t frame_decoded) { + can1_tts_rr_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_rr_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_rr_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_rr_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_rr_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outet_right = can1_tts_rr_tts_outet_right_encode(frame_decoded.tts_outet_right); + frame_encoded.tts_status = can1_tts_rr_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_rl_t tts_rl(const frame::decoded::can1::tts_rl_t frame_decoded) { + can1_tts_rl_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_rl_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_rl_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_rl_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_rl_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_rl_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_rl_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_fr_t tts_fr(const frame::decoded::can1::tts_fr_t frame_decoded) { + can1_tts_fr_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_fr_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_fr_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_fr_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_fr_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_fr_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_fr_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_fl_t tts_fl(const frame::decoded::can1::tts_fl_t frame_decoded) { + can1_tts_fl_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_fl_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_fl_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_fl_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_fl_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_fl_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_fl_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_stw_param_set_t stw_param_set(const frame::decoded::can1::stw_param_set_t frame_decoded) { + can1_stw_param_set_t frame_encoded; + frame_encoded.stw_param_set = can1_stw_param_set_stw_param_set_encode(frame_decoded.stw_param_set); + frame_encoded.stw_param_tc_slipref = can1_stw_param_set_stw_param_tc_slipref_encode(frame_decoded.stw_param_tc_slipref); + frame_encoded.stw_param_tc_mumax = can1_stw_param_set_stw_param_tc_mumax_encode(frame_decoded.stw_param_tc_mumax); + frame_encoded.stw_param_tc_i = can1_stw_param_set_stw_param_tc_i_encode(frame_decoded.stw_param_tc_i); + frame_encoded.stw_param_plim = can1_stw_param_set_stw_param_plim_encode(frame_decoded.stw_param_plim); + frame_encoded.stw_param_tlim = can1_stw_param_set_stw_param_tlim_encode(frame_decoded.stw_param_tlim); + frame_encoded.stw_param_tc_p = can1_stw_param_set_stw_param_tc_p_encode(frame_decoded.stw_param_tc_p); + frame_encoded.stw_param_reku = can1_stw_param_set_stw_param_reku_encode(frame_decoded.stw_param_reku); + frame_encoded.stw_param_tc_on = can1_stw_param_set_stw_param_tc_on_encode(frame_decoded.stw_param_tc_on); + frame_encoded.stw_param_tv_on = can1_stw_param_set_stw_param_tv_on_encode(frame_decoded.stw_param_tv_on); + frame_encoded.stw_param_discipline = can1_stw_param_set_stw_param_discipline_encode(frame_decoded.stw_param_discipline); + frame_encoded.stw_param_slim = can1_stw_param_set_stw_param_slim_encode(frame_decoded.stw_param_slim); + return frame_encoded; +} + +inline can1_ams_slave0_status_t ams_slave0_status(const frame::decoded::can1::ams_slave0_status_t frame_decoded) { + can1_ams_slave0_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave0_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave0_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave0_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave0_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave0_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave0_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ssu_message_t ssu_message(const frame::decoded::can1::ssu_message_t frame_decoded) { + can1_ssu_message_t frame_encoded; + frame_encoded.ssu_pressure = can1_ssu_message_ssu_pressure_encode(frame_decoded.ssu_pressure); + frame_encoded.ssu_air_temp = can1_ssu_message_ssu_air_temp_encode(frame_decoded.ssu_air_temp); + return frame_encoded; +} + +inline can1_ams_status_t ams_status(const frame::decoded::can1::ams_status_t frame_decoded) { + can1_ams_status_t frame_encoded; + frame_encoded.ams_state = can1_ams_status_ams_state_encode(frame_decoded.ams_state); + frame_encoded.sdc_closed = can1_ams_status_sdc_closed_encode(frame_decoded.sdc_closed); + frame_encoded.soc = can1_ams_status_soc_encode(frame_decoded.soc); + frame_encoded.min_cell_volt = can1_ams_status_min_cell_volt_encode(frame_decoded.min_cell_volt); + frame_encoded.max_cell_temp = can1_ams_status_max_cell_temp_encode(frame_decoded.max_cell_temp); + frame_encoded.ams_imd_state = can1_ams_status_ams_imd_state_encode(frame_decoded.ams_imd_state); + frame_encoded.ams_imd_ok = can1_ams_status_ams_imd_ok_encode(frame_decoded.ams_imd_ok); + return frame_encoded; +} + +inline can1_ams_slave_panic_t ams_slave_panic(const frame::decoded::can1::ams_slave_panic_t frame_decoded) { + can1_ams_slave_panic_t frame_encoded; + frame_encoded.ams_slave_panic_slave_id = can1_ams_slave_panic_ams_slave_panic_slave_id_encode(frame_decoded.ams_slave_panic_slave_id); + frame_encoded.ams_slave_panic_kind = can1_ams_slave_panic_ams_slave_panic_kind_encode(frame_decoded.ams_slave_panic_kind); + frame_encoded.ams_slave_panic_arg = can1_ams_slave_panic_ams_slave_panic_arg_encode(frame_decoded.ams_slave_panic_arg); + return frame_encoded; +} + +inline can1_ams_in_t ams_in(const frame::decoded::can1::ams_in_t frame_decoded) { + can1_ams_in_t frame_encoded; + frame_encoded.ts_activate = can1_ams_in_ts_activate_encode(frame_decoded.ts_activate); + frame_encoded.inverters_discharged = can1_ams_in_inverters_discharged_encode(frame_decoded.inverters_discharged); + frame_encoded.lap_number = can1_ams_in_lap_number_encode(frame_decoded.lap_number); + return frame_encoded; +} + +inline can1_shunt_current_t shunt_current(const frame::decoded::can1::shunt_current_t frame_decoded) { + can1_shunt_current_t frame_encoded; + frame_encoded.shunt_current = can1_shunt_current_shunt_current_encode(frame_decoded.shunt_current); + return frame_encoded; +} + +inline can1_shunt_voltage1_t shunt_voltage1(const frame::decoded::can1::shunt_voltage1_t frame_decoded) { + can1_shunt_voltage1_t frame_encoded; + frame_encoded.shunt_voltage1 = can1_shunt_voltage1_shunt_voltage1_encode(frame_decoded.shunt_voltage1); + return frame_encoded; +} + +inline can1_shunt_voltage2_t shunt_voltage2(const frame::decoded::can1::shunt_voltage2_t frame_decoded) { + can1_shunt_voltage2_t frame_encoded; + frame_encoded.shunt_voltage2 = can1_shunt_voltage2_shunt_voltage2_encode(frame_decoded.shunt_voltage2); + return frame_encoded; +} + +inline can1_shunt_voltage3_t shunt_voltage3(const frame::decoded::can1::shunt_voltage3_t frame_decoded) { + can1_shunt_voltage3_t frame_encoded; + frame_encoded.shunt_voltage3 = can1_shunt_voltage3_shunt_voltage3_encode(frame_decoded.shunt_voltage3); + return frame_encoded; +} + +inline can1_shunt_temperature_t shunt_temperature(const frame::decoded::can1::shunt_temperature_t frame_decoded) { + can1_shunt_temperature_t frame_encoded; + frame_encoded.shunt_temperature = can1_shunt_temperature_shunt_temperature_encode(frame_decoded.shunt_temperature); + return frame_encoded; +} + +inline can1_pdu_command_t pdu_command(const frame::decoded::can1::pdu_command_t frame_decoded) { + can1_pdu_command_t frame_encoded; + frame_encoded.pdu_enable_misc = can1_pdu_command_pdu_enable_misc_encode(frame_decoded.pdu_enable_misc); + frame_encoded.pdu_enable_sdc = can1_pdu_command_pdu_enable_sdc_encode(frame_decoded.pdu_enable_sdc); + frame_encoded.pdu_enable_inverter = can1_pdu_command_pdu_enable_inverter_encode(frame_decoded.pdu_enable_inverter); + frame_encoded.pdu_enable_ts_cooling = can1_pdu_command_pdu_enable_ts_cooling_encode(frame_decoded.pdu_enable_ts_cooling); + frame_encoded.pdu_enable_acc_cooling = can1_pdu_command_pdu_enable_acc_cooling_encode(frame_decoded.pdu_enable_acc_cooling); + frame_encoded.pdu_enable_lldar = can1_pdu_command_pdu_enable_lldar_encode(frame_decoded.pdu_enable_lldar); + frame_encoded.pdu_enable_drs = can1_pdu_command_pdu_enable_drs_encode(frame_decoded.pdu_enable_drs); + frame_encoded.pdu_enable_epsc = can1_pdu_command_pdu_enable_epsc_encode(frame_decoded.pdu_enable_epsc); + frame_encoded.pdu_enable_acu = can1_pdu_command_pdu_enable_acu_encode(frame_decoded.pdu_enable_acu); + frame_encoded.pdu_enable_ebs_a = can1_pdu_command_pdu_enable_ebs_a_encode(frame_decoded.pdu_enable_ebs_a); + frame_encoded.pdu_enable_ebs_b = can1_pdu_command_pdu_enable_ebs_b_encode(frame_decoded.pdu_enable_ebs_b); + frame_encoded.pdu_enable_ebs_c = can1_pdu_command_pdu_enable_ebs_c_encode(frame_decoded.pdu_enable_ebs_c); + return frame_encoded; +} + +inline can1_pdu_response_t pdu_response(const frame::decoded::can1::pdu_response_t frame_decoded) { + can1_pdu_response_t frame_encoded; + frame_encoded.pdu_alwayson_tx = can1_pdu_response_pdu_alwayson_tx_encode(frame_decoded.pdu_alwayson_tx); + frame_encoded.pdu_shutdown_circuit_tx = can1_pdu_response_pdu_shutdown_circuit_tx_encode(frame_decoded.pdu_shutdown_circuit_tx); + frame_encoded.pdu_lidar_tx = can1_pdu_response_pdu_lidar_tx_encode(frame_decoded.pdu_lidar_tx); + frame_encoded.pdu_acu_tx = can1_pdu_response_pdu_acu_tx_encode(frame_decoded.pdu_acu_tx); + frame_encoded.pdu_servos_regler_tx = can1_pdu_response_pdu_servos_regler_tx_encode(frame_decoded.pdu_servos_regler_tx); + frame_encoded.pdu_inverter_tx = can1_pdu_response_pdu_inverter_tx_encode(frame_decoded.pdu_inverter_tx); + frame_encoded.pdu_misc_tx = can1_pdu_response_pdu_misc_tx_encode(frame_decoded.pdu_misc_tx); + frame_encoded.pdu_servo_tx = can1_pdu_response_pdu_servo_tx_encode(frame_decoded.pdu_servo_tx); + frame_encoded.pdu_ebs_valve_1_tx = can1_pdu_response_pdu_ebs_valve_1_tx_encode(frame_decoded.pdu_ebs_valve_1_tx); + frame_encoded.pdu_ebs_valve_2_tx = can1_pdu_response_pdu_ebs_valve_2_tx_encode(frame_decoded.pdu_ebs_valve_2_tx); + frame_encoded.pdu_cs_valve_tx = can1_pdu_response_pdu_cs_valve_tx_encode(frame_decoded.pdu_cs_valve_tx); + frame_encoded.pdu_aggregat_tx = can1_pdu_response_pdu_aggregat_tx_encode(frame_decoded.pdu_aggregat_tx); + frame_encoded.pdu_steering_tx = can1_pdu_response_pdu_steering_tx_encode(frame_decoded.pdu_steering_tx); + frame_encoded.pdu_pwm_tsac_fans = can1_pdu_response_pdu_pwm_tsac_fans_encode(frame_decoded.pdu_pwm_tsac_fans); + frame_encoded.pdu_pwm_radiatot_fans_tx = can1_pdu_response_pdu_pwm_radiatot_fans_tx_encode(frame_decoded.pdu_pwm_radiatot_fans_tx); + frame_encoded.pdu_pwm_aggregat = can1_pdu_response_pdu_pwm_aggregat_encode(frame_decoded.pdu_pwm_aggregat); + frame_encoded.pdu_pwm_pump = can1_pdu_response_pdu_pwm_pump_encode(frame_decoded.pdu_pwm_pump); + frame_encoded.pdu_heartbeat_ok_tx = can1_pdu_response_pdu_heartbeat_ok_tx_encode(frame_decoded.pdu_heartbeat_ok_tx); + return frame_encoded; +} + +inline can1_as_mission_fb_t as_mission_fb(const frame::decoded::can1::as_mission_fb_t frame_decoded) { + can1_as_mission_fb_t frame_encoded; + frame_encoded.mission_selection = can1_as_mission_fb_mission_selection_encode(frame_decoded.mission_selection); + return frame_encoded; +} + +inline can1_stw_mission_selected_t stw_mission_selected(const frame::decoded::can1::stw_mission_selected_t frame_decoded) { + can1_stw_mission_selected_t frame_encoded; + frame_encoded.mission_selection = can1_stw_mission_selected_mission_selection_encode(frame_decoded.mission_selection); + return frame_encoded; +} + +inline can1_epsc_out_t epsc_out(const frame::decoded::can1::epsc_out_t frame_decoded) { + can1_epsc_out_t frame_encoded; + frame_encoded.epsc_measured_rpm = can1_epsc_out_epsc_measured_rpm_encode(frame_decoded.epsc_measured_rpm); + frame_encoded.epsc_measured_steering_angle = can1_epsc_out_epsc_measured_steering_angle_encode(frame_decoded.epsc_measured_steering_angle); + frame_encoded.epsc_measured_mosfet_temperature = can1_epsc_out_epsc_measured_mosfet_temperature_encode(frame_decoded.epsc_measured_mosfet_temperature); + frame_encoded.epsc_measured_voltage = can1_epsc_out_epsc_measured_voltage_encode(frame_decoded.epsc_measured_voltage); + frame_encoded.epsc_measured_current = can1_epsc_out_epsc_measured_current_encode(frame_decoded.epsc_measured_current); + return frame_encoded; +} + +inline can1_epsc_steering_in_t epsc_steering_in(const frame::decoded::can1::epsc_steering_in_t frame_decoded) { + can1_epsc_steering_in_t frame_encoded; + frame_encoded.epsc_desired_steering_angle = can1_epsc_steering_in_epsc_desired_steering_angle_encode(frame_decoded.epsc_desired_steering_angle); + return frame_encoded; +} + +inline can1_stw_buttons_t stw_buttons(const frame::decoded::can1::stw_buttons_t frame_decoded) { + can1_stw_buttons_t frame_encoded; + frame_encoded.stw_button_drs = can1_stw_buttons_stw_button_drs_encode(frame_decoded.stw_button_drs); + frame_encoded.stw_button_1 = can1_stw_buttons_stw_button_1_encode(frame_decoded.stw_button_1); + frame_encoded.stw_button_2 = can1_stw_buttons_stw_button_2_encode(frame_decoded.stw_button_2); + frame_encoded.stw_button_3 = can1_stw_buttons_stw_button_3_encode(frame_decoded.stw_button_3); + frame_encoded.stw_button_4 = can1_stw_buttons_stw_button_4_encode(frame_decoded.stw_button_4); + return frame_encoded; +} + +inline can1_stw_status_t stw_status(const frame::decoded::can1::stw_status_t frame_decoded) { + can1_stw_status_t frame_encoded; + frame_encoded.lap_count = can1_stw_status_lap_count_encode(frame_decoded.lap_count); + frame_encoded.err_pdu = can1_stw_status_err_pdu_encode(frame_decoded.err_pdu); + frame_encoded.err_res = can1_stw_status_err_res_encode(frame_decoded.err_res); + frame_encoded.r2_d_progress = can1_stw_status_r2_d_progress_encode(frame_decoded.r2_d_progress); + frame_encoded.as_state_stw = can1_stw_status_as_state_stw_encode(frame_decoded.as_state_stw); + frame_encoded.err_as = can1_stw_status_err_as_encode(frame_decoded.err_as); + frame_encoded.err_app_sp = can1_stw_status_err_app_sp_encode(frame_decoded.err_app_sp); + frame_encoded.err_s_bspd = can1_stw_status_err_s_bspd_encode(frame_decoded.err_s_bspd); + frame_encoded.err_scs = can1_stw_status_err_scs_encode(frame_decoded.err_scs); + frame_encoded.err_con_mon = can1_stw_status_err_con_mon_encode(frame_decoded.err_con_mon); + frame_encoded.err_ini_chk = can1_stw_status_err_ini_chk_encode(frame_decoded.err_ini_chk); + frame_encoded.err_inv2 = can1_stw_status_err_inv2_encode(frame_decoded.err_inv2); + frame_encoded.err_inv1 = can1_stw_status_err_inv1_encode(frame_decoded.err_inv1); + frame_encoded.err_ams = can1_stw_status_err_ams_encode(frame_decoded.err_ams); + frame_encoded.err_sdc = can1_stw_status_err_sdc_encode(frame_decoded.err_sdc); + frame_encoded.sdc_status = can1_stw_status_sdc_status_encode(frame_decoded.sdc_status); + frame_encoded.inv2_ready = can1_stw_status_inv2_ready_encode(frame_decoded.inv2_ready); + frame_encoded.inv1_ready = can1_stw_status_inv1_ready_encode(frame_decoded.inv1_ready); + frame_encoded.energy_per_lap = can1_stw_status_energy_per_lap_encode(frame_decoded.energy_per_lap); + frame_encoded.ini_chk_state = can1_stw_status_ini_chk_state_encode(frame_decoded.ini_chk_state); + return frame_encoded; +} + +inline can1_pdu_current_1_t pdu_current_1(const frame::decoded::can1::pdu_current_1_t frame_decoded) { + can1_pdu_current_1_t frame_encoded; + frame_encoded.pdu_always_on_current = can1_pdu_current_1_pdu_always_on_current_encode(frame_decoded.pdu_always_on_current); + frame_encoded.pdu_lvms_current = can1_pdu_current_1_pdu_lvms_current_encode(frame_decoded.pdu_lvms_current); + frame_encoded.pdu_asms_current = can1_pdu_current_1_pdu_asms_current_encode(frame_decoded.pdu_asms_current); + frame_encoded.pdu_misc_current = can1_pdu_current_1_pdu_misc_current_encode(frame_decoded.pdu_misc_current); + return frame_encoded; +} + +inline can1_pdu_current_2_t pdu_current_2(const frame::decoded::can1::pdu_current_2_t frame_decoded) { + can1_pdu_current_2_t frame_encoded; + frame_encoded.pdu_sdc_current = can1_pdu_current_2_pdu_sdc_current_encode(frame_decoded.pdu_sdc_current); + frame_encoded.pdu_inverter_current = can1_pdu_current_2_pdu_inverter_current_encode(frame_decoded.pdu_inverter_current); + frame_encoded.pdu_ts_cooling_current = can1_pdu_current_2_pdu_ts_cooling_current_encode(frame_decoded.pdu_ts_cooling_current); + frame_encoded.pdu_acc_cooling_current = can1_pdu_current_2_pdu_acc_cooling_current_encode(frame_decoded.pdu_acc_cooling_current); + return frame_encoded; +} + +inline can1_pdu_current_3_t pdu_current_3(const frame::decoded::can1::pdu_current_3_t frame_decoded) { + can1_pdu_current_3_t frame_encoded; + frame_encoded.pdu_lidar_current = can1_pdu_current_3_pdu_lidar_current_encode(frame_decoded.pdu_lidar_current); + frame_encoded.pdu_drs_current = can1_pdu_current_3_pdu_drs_current_encode(frame_decoded.pdu_drs_current); + frame_encoded.pdu_epsc_current = can1_pdu_current_3_pdu_epsc_current_encode(frame_decoded.pdu_epsc_current); + frame_encoded.pdu_acu_current = can1_pdu_current_3_pdu_acu_current_encode(frame_decoded.pdu_acu_current); + return frame_encoded; +} + +inline can1_pdu_current_4_t pdu_current_4(const frame::decoded::can1::pdu_current_4_t frame_decoded) { + can1_pdu_current_4_t frame_encoded; + frame_encoded.pdu_ebs_a_current = can1_pdu_current_4_pdu_ebs_a_current_encode(frame_decoded.pdu_ebs_a_current); + frame_encoded.pdu_ebs_b_current = can1_pdu_current_4_pdu_ebs_b_current_encode(frame_decoded.pdu_ebs_b_current); + return frame_encoded; +} + +inline can1_epsc_config_in_t epsc_config_in(const frame::decoded::can1::epsc_config_in_t frame_decoded) { + can1_epsc_config_in_t frame_encoded; + frame_encoded.epsc_config_p_gain = can1_epsc_config_in_epsc_config_p_gain_encode(frame_decoded.epsc_config_p_gain); + frame_encoded.epsc_config_i_gain = can1_epsc_config_in_epsc_config_i_gain_encode(frame_decoded.epsc_config_i_gain); + frame_encoded.epsc_config_d_gain = can1_epsc_config_in_epsc_config_d_gain_encode(frame_decoded.epsc_config_d_gain); + return frame_encoded; +} + +} +} + +// decode functions +namespace decode { +namespace can1 { +inline frame::decoded::can1::inverter_velocity_t inverter_velocity(const can1_inverter_velocity_t frame_encoded) { + frame::decoded::can1::inverter_velocity_t frame_decoded; + frame_decoded.inverter_1_velocity = can1_inverter_velocity_inverter_1_velocity_decode(frame_encoded.inverter_1_velocity); + frame_decoded.inverter_2_velocity = can1_inverter_velocity_inverter_2_velocity_decode(frame_encoded.inverter_2_velocity); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_errors_warnings_t inverter_errors_warnings(const can1_inverter_errors_warnings_t frame_encoded) { + frame::decoded::can1::inverter_errors_warnings_t frame_decoded; + frame_decoded.inverter_1_errors = can1_inverter_errors_warnings_inverter_1_errors_decode(frame_encoded.inverter_1_errors); + frame_decoded.inverter_1_warnings = can1_inverter_errors_warnings_inverter_1_warnings_decode(frame_encoded.inverter_1_warnings); + frame_decoded.inverter_2_errors = can1_inverter_errors_warnings_inverter_2_errors_decode(frame_encoded.inverter_2_errors); + frame_decoded.inverter_2_warnings = can1_inverter_errors_warnings_inverter_2_warnings_decode(frame_encoded.inverter_2_warnings); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_torque_actual_cw_t inverter_torque_actual_cw(const can1_inverter_torque_actual_cw_t frame_encoded) { + frame::decoded::can1::inverter_torque_actual_cw_t frame_decoded; + frame_decoded.inverter_1_control_word = can1_inverter_torque_actual_cw_inverter_1_control_word_decode(frame_encoded.inverter_1_control_word); + frame_decoded.inverter_1_torque_actual = can1_inverter_torque_actual_cw_inverter_1_torque_actual_decode(frame_encoded.inverter_1_torque_actual); + frame_decoded.inverter_2_control_word = can1_inverter_torque_actual_cw_inverter_2_control_word_decode(frame_encoded.inverter_2_control_word); + frame_decoded.inverter_2_torque_actual = can1_inverter_torque_actual_cw_inverter_2_torque_actual_decode(frame_encoded.inverter_2_torque_actual); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_temperatur_t inverter_temperatur(const can1_inverter_temperatur_t frame_encoded) { + frame::decoded::can1::inverter_temperatur_t frame_decoded; + frame_decoded.inverter_1_temp_inv = can1_inverter_temperatur_inverter_1_temp_inv_decode(frame_encoded.inverter_1_temp_inv); + frame_decoded.inverter_1_temp_mot = can1_inverter_temperatur_inverter_1_temp_mot_decode(frame_encoded.inverter_1_temp_mot); + frame_decoded.inverter_2_temp_inv = can1_inverter_temperatur_inverter_2_temp_inv_decode(frame_encoded.inverter_2_temp_inv); + frame_decoded.inverter_2_temp_mot = can1_inverter_temperatur_inverter_2_temp_mot_decode(frame_encoded.inverter_2_temp_mot); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_torque_wanted_t inverter_torque_wanted(const can1_inverter_torque_wanted_t frame_encoded) { + frame::decoded::can1::inverter_torque_wanted_t frame_decoded; + frame_decoded.inverter_1_torque_demanded = can1_inverter_torque_wanted_inverter_1_torque_demanded_decode(frame_encoded.inverter_1_torque_demanded); + frame_decoded.inverter_2_torque_demanded = can1_inverter_torque_wanted_inverter_2_torque_demanded_decode(frame_encoded.inverter_2_torque_demanded); + frame_decoded.inverter_1_torque_desired = can1_inverter_torque_wanted_inverter_1_torque_desired_decode(frame_encoded.inverter_1_torque_desired); + frame_decoded.inverter_2_torque_desired = can1_inverter_torque_wanted_inverter_2_torque_desired_decode(frame_encoded.inverter_2_torque_desired); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1(const can1_sdo_telemetrie_rx_node1_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_rx_node1_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_rx_node1_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_rx_node1_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node1_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_rx_node1_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2(const can1_sdo_telemetrie_rx_node2_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_rx_node2_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_rx_node2_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_rx_node2_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node2_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_rx_node2_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_tx_t sdo_telemetrie_tx(const can1_sdo_telemetrie_tx_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_tx_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_tx_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_tx_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_tx_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_tx_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::laptop_sdo_node_t laptop_sdo_node(const can1_laptop_sdo_node_t frame_encoded) { + frame::decoded::can1::laptop_sdo_node_t frame_decoded; + frame_decoded.node_id_sdo = can1_laptop_sdo_node_node_id_sdo_decode(frame_encoded.node_id_sdo); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_long_lat_t x_sens_long_lat(const can1_x_sens_long_lat_t frame_encoded) { + frame::decoded::can1::x_sens_long_lat_t frame_decoded; + frame_decoded.x_sens_latitude = can1_x_sens_long_lat_x_sens_latitude_decode(frame_encoded.x_sens_latitude); + frame_decoded.x_sens_longitude = can1_x_sens_long_lat_x_sens_longitude_decode(frame_encoded.x_sens_longitude); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_rateofturn_t x_sens_rateofturn(const can1_x_sens_rateofturn_t frame_encoded) { + frame::decoded::can1::x_sens_rateofturn_t frame_decoded; + frame_decoded.x_sens_gyr_x = can1_x_sens_rateofturn_x_sens_gyr_x_decode(frame_encoded.x_sens_gyr_x); + frame_decoded.x_sens_gy_y = can1_x_sens_rateofturn_x_sens_gy_y_decode(frame_encoded.x_sens_gy_y); + frame_decoded.x_sens_gy_z = can1_x_sens_rateofturn_x_sens_gy_z_decode(frame_encoded.x_sens_gy_z); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_acceleration_t x_sens_acceleration(const can1_x_sens_acceleration_t frame_encoded) { + frame::decoded::can1::x_sens_acceleration_t frame_decoded; + frame_decoded.x_sens_acc_x = can1_x_sens_acceleration_x_sens_acc_x_decode(frame_encoded.x_sens_acc_x); + frame_decoded.x_sens_acc_y = can1_x_sens_acceleration_x_sens_acc_y_decode(frame_encoded.x_sens_acc_y); + frame_decoded.x_sens_acc_z = can1_x_sens_acceleration_x_sens_acc_z_decode(frame_encoded.x_sens_acc_z); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_velocity_t x_sens_velocity(const can1_x_sens_velocity_t frame_encoded) { + frame::decoded::can1::x_sens_velocity_t frame_decoded; + frame_decoded.x_sens_vel_x = can1_x_sens_velocity_x_sens_vel_x_decode(frame_encoded.x_sens_vel_x); + frame_decoded.x_sens_vel_y = can1_x_sens_velocity_x_sens_vel_y_decode(frame_encoded.x_sens_vel_y); + frame_decoded.x_sens_vel_z = can1_x_sens_velocity_x_sens_vel_z_decode(frame_encoded.x_sens_vel_z); + return frame_decoded; +} + +inline frame::decoded::can1::telemetrie_t telemetrie(const can1_telemetrie_t frame_encoded) { + frame::decoded::can1::telemetrie_t frame_decoded; + frame_decoded.ini_check_error_state = can1_telemetrie_ini_check_error_state_decode(frame_encoded.ini_check_error_state); + frame_decoded.powermap = can1_telemetrie_powermap_decode(frame_encoded.powermap); + frame_decoded.apps_ok = can1_telemetrie_apps_ok_decode(frame_encoded.apps_ok); + frame_decoded.brake_ok = can1_telemetrie_brake_ok_decode(frame_encoded.brake_ok); + frame_decoded.allow_torque = can1_telemetrie_allow_torque_decode(frame_encoded.allow_torque); + frame_decoded.asp_ok = can1_telemetrie_asp_ok_decode(frame_encoded.asp_ok); + frame_decoded.pressure_sensor_ok = can1_telemetrie_pressure_sensor_ok_decode(frame_encoded.pressure_sensor_ok); + frame_decoded.torque_vectoring_on = can1_telemetrie_torque_vectoring_on_decode(frame_encoded.torque_vectoring_on); + frame_decoded.reku_on = can1_telemetrie_reku_on_decode(frame_encoded.reku_on); + frame_decoded.traction_control_on = can1_telemetrie_traction_control_on_decode(frame_encoded.traction_control_on); + frame_decoded.ts_deactivate = can1_telemetrie_ts_deactivate_decode(frame_encoded.ts_deactivate); + frame_decoded.torque_limit = can1_telemetrie_torque_limit_decode(frame_encoded.torque_limit); + frame_decoded.power_limit = can1_telemetrie_power_limit_decode(frame_encoded.power_limit); + frame_decoded.torque_limit_dynamisch = can1_telemetrie_torque_limit_dynamisch_decode(frame_encoded.torque_limit_dynamisch); + frame_decoded.torque_ohne_limit_l = can1_telemetrie_torque_ohne_limit_l_decode(frame_encoded.torque_ohne_limit_l); + frame_decoded.torque_ohne_limit_r = can1_telemetrie_torque_ohne_limit_r_decode(frame_encoded.torque_ohne_limit_r); + return frame_decoded; +} + +inline frame::decoded::can1::override_powermap_t override_powermap(const can1_override_powermap_t frame_encoded) { + frame::decoded::can1::override_powermap_t frame_decoded; + frame_decoded.laptopp_power_map = can1_override_powermap_laptopp_power_map_decode(frame_encoded.laptopp_power_map); + frame_decoded.laptop_reku = can1_override_powermap_laptop_reku_decode(frame_encoded.laptop_reku); + frame_decoded.laptop_tc = can1_override_powermap_laptop_tc_decode(frame_encoded.laptop_tc); + frame_decoded.laptop_tv = can1_override_powermap_laptop_tv_decode(frame_encoded.laptop_tv); + frame_decoded.laptop_slipref = can1_override_powermap_laptop_slipref_decode(frame_encoded.laptop_slipref); + frame_decoded.laptop_tc_i = can1_override_powermap_laptop_tc_i_decode(frame_encoded.laptop_tc_i); + frame_decoded.laptop_tc_p = can1_override_powermap_laptop_tc_p_decode(frame_encoded.laptop_tc_p); + frame_decoded.laptop_tc_mumax = can1_override_powermap_laptop_tc_mumax_decode(frame_encoded.laptop_tc_mumax); + return frame_decoded; +} + +inline frame::decoded::can1::override_laptop_2_t override_laptop_2(const can1_override_laptop_2_t frame_encoded) { + frame::decoded::can1::override_laptop_2_t frame_decoded; + frame_decoded.as_mission = can1_override_laptop_2_as_mission_decode(frame_encoded.as_mission); + frame_decoded.as_state = can1_override_laptop_2_as_state_decode(frame_encoded.as_state); + frame_decoded.manual_input_torque = can1_override_laptop_2_manual_input_torque_decode(frame_encoded.manual_input_torque); + frame_decoded.laptop_powerlimit = can1_override_laptop_2_laptop_powerlimit_decode(frame_encoded.laptop_powerlimit); + frame_decoded.laptop_torque_lim = can1_override_laptop_2_laptop_torque_lim_decode(frame_encoded.laptop_torque_lim); + return frame_decoded; +} + +inline frame::decoded::can1::override_epsc_cooling_t override_epsc_cooling(const can1_override_epsc_cooling_t frame_encoded) { + frame::decoded::can1::override_epsc_cooling_t frame_decoded; + frame_decoded.epsc_manual_angle = can1_override_epsc_cooling_epsc_manual_angle_decode(frame_encoded.epsc_manual_angle); + frame_decoded.epsc_mode = can1_override_epsc_cooling_epsc_mode_decode(frame_encoded.epsc_mode); + frame_decoded.ac_cooling_enable = can1_override_epsc_cooling_ac_cooling_enable_decode(frame_encoded.ac_cooling_enable); + frame_decoded.ts_cooling_enable = can1_override_epsc_cooling_ts_cooling_enable_decode(frame_encoded.ts_cooling_enable); + frame_decoded.ac_cooling_pwm = can1_override_epsc_cooling_ac_cooling_pwm_decode(frame_encoded.ac_cooling_pwm); + frame_decoded.ts_cooling_pwm = can1_override_epsc_cooling_ts_cooling_pwm_decode(frame_encoded.ts_cooling_pwm); + return frame_decoded; +} + +inline frame::decoded::can1::override_laptop_t override_laptop(const can1_override_laptop_t frame_encoded) { + frame::decoded::can1::override_laptop_t frame_decoded; + frame_decoded.fake_r2_d = can1_override_laptop_fake_r2_d_decode(frame_encoded.fake_r2_d); + frame_decoded.fake_soundbox_emergency = can1_override_laptop_fake_soundbox_emergency_decode(frame_encoded.fake_soundbox_emergency); + frame_decoded.fake_soundbox_r2_d = can1_override_laptop_fake_soundbox_r2_d_decode(frame_encoded.fake_soundbox_r2_d); + frame_decoded.fake_ts_active = can1_override_laptop_fake_ts_active_decode(frame_encoded.fake_ts_active); + frame_decoded.override_apps = can1_override_laptop_override_apps_decode(frame_encoded.override_apps); + frame_decoded.override_as_mission = can1_override_laptop_override_as_mission_decode(frame_encoded.override_as_mission); + frame_decoded.override_as_state = can1_override_laptop_override_as_state_decode(frame_encoded.override_as_state); + frame_decoded.override_epsc_mode = can1_override_laptop_override_epsc_mode_decode(frame_encoded.override_epsc_mode); + frame_decoded.override_pdu_ac_cooling_enable = can1_override_laptop_override_pdu_ac_cooling_enable_decode(frame_encoded.override_pdu_ac_cooling_enable); + frame_decoded.override_pdu_acu_enable = can1_override_laptop_override_pdu_acu_enable_decode(frame_encoded.override_pdu_acu_enable); + frame_decoded.override_pdu_drs_enable = can1_override_laptop_override_pdu_drs_enable_decode(frame_encoded.override_pdu_drs_enable); + frame_decoded.override_pdu_epsc_enable = can1_override_laptop_override_pdu_epsc_enable_decode(frame_encoded.override_pdu_epsc_enable); + frame_decoded.override_pdu_heartbeat = can1_override_laptop_override_pdu_heartbeat_decode(frame_encoded.override_pdu_heartbeat); + frame_decoded.override_pdu_lidar_enable = can1_override_laptop_override_pdu_lidar_enable_decode(frame_encoded.override_pdu_lidar_enable); + frame_decoded.override_pdu_pn_v1_enable = can1_override_laptop_override_pdu_pn_v1_enable_decode(frame_encoded.override_pdu_pn_v1_enable); + frame_decoded.override_pdu_pn_v2_enable = can1_override_laptop_override_pdu_pn_v2_enable_decode(frame_encoded.override_pdu_pn_v2_enable); + frame_decoded.override_pdu_ts_cooling_enable = can1_override_laptop_override_pdu_ts_cooling_enable_decode(frame_encoded.override_pdu_ts_cooling_enable); + frame_decoded.override_power_map = can1_override_laptop_override_power_map_decode(frame_encoded.override_power_map); + frame_decoded.override_tc_parameter = can1_override_laptop_override_tc_parameter_decode(frame_encoded.override_tc_parameter); + frame_decoded.override_torque_input = can1_override_laptop_override_torque_input_decode(frame_encoded.override_torque_input); + return frame_decoded; +} + +inline frame::decoded::can1::apps_override_t apps_override(const can1_apps_override_t frame_encoded) { + frame::decoded::can1::apps_override_t frame_decoded; + frame_decoded.apps_0_max = can1_apps_override_apps_0_max_decode(frame_encoded.apps_0_max); + frame_decoded.apps_0_min = can1_apps_override_apps_0_min_decode(frame_encoded.apps_0_min); + frame_decoded.apps_1_max = can1_apps_override_apps_1_max_decode(frame_encoded.apps_1_max); + frame_decoded.apps_1_min = can1_apps_override_apps_1_min_decode(frame_encoded.apps_1_min); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_damper_t ftcu_damper(const can1_ftcu_damper_t frame_encoded) { + frame::decoded::can1::ftcu_damper_t frame_decoded; + frame_decoded.ftcu_damper_fl = can1_ftcu_damper_ftcu_damper_fl_decode(frame_encoded.ftcu_damper_fl); + frame_decoded.ftcu_damper_fr = can1_ftcu_damper_ftcu_damper_fr_decode(frame_encoded.ftcu_damper_fr); + frame_decoded.ftcu_damper_rl = can1_ftcu_damper_ftcu_damper_rl_decode(frame_encoded.ftcu_damper_rl); + frame_decoded.ftcu_damper_rr = can1_ftcu_damper_ftcu_damper_rr_decode(frame_encoded.ftcu_damper_rr); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_param_confirm_t ftcu_param_confirm(const can1_ftcu_param_confirm_t frame_encoded) { + frame::decoded::can1::ftcu_param_confirm_t frame_decoded; + frame_decoded.ftcu_param_confirm = can1_ftcu_param_confirm_ftcu_param_confirm_decode(frame_encoded.ftcu_param_confirm); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_10_hz_t sensornode_f_10_hz(const can1_sensornode_f_10_hz_t frame_encoded) { + frame::decoded::can1::sensornode_f_10_hz_t frame_decoded; + frame_decoded.ls_l = can1_sensornode_f_10_hz_ls_l_decode(frame_encoded.ls_l); + frame_decoded.ls_r = can1_sensornode_f_10_hz_ls_r_decode(frame_encoded.ls_r); + frame_decoded.sdc_m_pre_bots = can1_sensornode_f_10_hz_sdc_m_pre_bots_decode(frame_encoded.sdc_m_pre_bots); + frame_decoded.sdc_m_post_ins = can1_sensornode_f_10_hz_sdc_m_post_ins_decode(frame_encoded.sdc_m_post_ins); + frame_decoded.sdc_m_post_bspd = can1_sensornode_f_10_hz_sdc_m_post_bspd_decode(frame_encoded.sdc_m_post_bspd); + frame_decoded.bdts_fl = can1_sensornode_f_10_hz_bdts_fl_decode(frame_encoded.bdts_fl); + frame_decoded.bdts_fr = can1_sensornode_f_10_hz_bdts_fr_decode(frame_encoded.bdts_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_100_hz_1_t sensornode_f_100_hz_1(const can1_sensornode_f_100_hz_1_t frame_encoded) { + frame::decoded::can1::sensornode_f_100_hz_1_t frame_decoded; + frame_decoded.apps_1 = can1_sensornode_f_100_hz_1_apps_1_decode(frame_encoded.apps_1); + frame_decoded.apps_2 = can1_sensornode_f_100_hz_1_apps_2_decode(frame_encoded.apps_2); + frame_decoded.bp_f = can1_sensornode_f_100_hz_1_bp_f_decode(frame_encoded.bp_f); + frame_decoded.sas = can1_sensornode_f_100_hz_1_sas_decode(frame_encoded.sas); + frame_decoded.wss_fl = can1_sensornode_f_100_hz_1_wss_fl_decode(frame_encoded.wss_fl); + frame_decoded.wss_fr = can1_sensornode_f_100_hz_1_wss_fr_decode(frame_encoded.wss_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_100_hz_2_t sensornode_f_100_hz_2(const can1_sensornode_f_100_hz_2_t frame_encoded) { + frame::decoded::can1::sensornode_f_100_hz_2_t frame_decoded; + frame_decoded.ds_fl = can1_sensornode_f_100_hz_2_ds_fl_decode(frame_encoded.ds_fl); + frame_decoded.ds_fr = can1_sensornode_f_100_hz_2_ds_fr_decode(frame_encoded.ds_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_1k_hz_t sensornode_f_1k_hz(const can1_sensornode_f_1k_hz_t frame_encoded) { + frame::decoded::can1::sensornode_f_1k_hz_t frame_decoded; + frame_decoded.sls_fl = can1_sensornode_f_1k_hz_sls_fl_decode(frame_encoded.sls_fl); + frame_decoded.sls_fr = can1_sensornode_f_1k_hz_sls_fr_decode(frame_encoded.sls_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_10_hz_t sensornode_r_10_hz(const can1_sensornode_r_10_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_10_hz_t frame_decoded; + frame_decoded.ext_ts_on = can1_sensornode_r_10_hz_ext_ts_on_decode(frame_encoded.ext_ts_on); + frame_decoded.sdc_m_pre_tsms = can1_sensornode_r_10_hz_sdc_m_pre_tsms_decode(frame_encoded.sdc_m_pre_tsms); + frame_decoded.sdc_m_post_tsms = can1_sensornode_r_10_hz_sdc_m_post_tsms_decode(frame_encoded.sdc_m_post_tsms); + frame_decoded.bdts_rl = can1_sensornode_r_10_hz_bdts_rl_decode(frame_encoded.bdts_rl); + frame_decoded.bdts_rr = can1_sensornode_r_10_hz_bdts_rr_decode(frame_encoded.bdts_rr); + frame_decoded.wt_bat = can1_sensornode_r_10_hz_wt_bat_decode(frame_encoded.wt_bat); + frame_decoded.wt_dt = can1_sensornode_r_10_hz_wt_dt_decode(frame_encoded.wt_dt); + frame_decoded.wp_bat = can1_sensornode_r_10_hz_wp_bat_decode(frame_encoded.wp_bat); + frame_decoded.wp_dt = can1_sensornode_r_10_hz_wp_dt_decode(frame_encoded.wp_dt); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_100_hz_t sensornode_r_100_hz(const can1_sensornode_r_100_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_100_hz_t frame_decoded; + frame_decoded.ebs_aps_1 = can1_sensornode_r_100_hz_ebs_aps_1_decode(frame_encoded.ebs_aps_1); + frame_decoded.ebs_aps_2 = can1_sensornode_r_100_hz_ebs_aps_2_decode(frame_encoded.ebs_aps_2); + frame_decoded.bp_r = can1_sensornode_r_100_hz_bp_r_decode(frame_encoded.bp_r); + frame_decoded.wss_rl = can1_sensornode_r_100_hz_wss_rl_decode(frame_encoded.wss_rl); + frame_decoded.wss_rr = can1_sensornode_r_100_hz_wss_rr_decode(frame_encoded.wss_rr); + frame_decoded.ds_rl = can1_sensornode_r_100_hz_ds_rl_decode(frame_encoded.ds_rl); + frame_decoded.ds_rr = can1_sensornode_r_100_hz_ds_rr_decode(frame_encoded.ds_rr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_1k_hz_t sensornode_r_1k_hz(const can1_sensornode_r_1k_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_1k_hz_t frame_decoded; + frame_decoded.sls_rl = can1_sensornode_r_1k_hz_sls_rl_decode(frame_encoded.sls_rl); + frame_decoded.sls_rr = can1_sensornode_r_1k_hz_sls_rr_decode(frame_encoded.sls_rr); + return frame_decoded; +} + +inline frame::decoded::can1::pwm_duty_cycle_t pwm_duty_cycle(const can1_pwm_duty_cycle_t frame_encoded) { + frame::decoded::can1::pwm_duty_cycle_t frame_decoded; + frame_decoded.dc_drs = can1_pwm_duty_cycle_dc_drs_decode(frame_encoded.dc_drs); + frame_decoded.dc_assi_y = can1_pwm_duty_cycle_dc_assi_y_decode(frame_encoded.dc_assi_y); + frame_decoded.dc_assi_b = can1_pwm_duty_cycle_dc_assi_b_decode(frame_encoded.dc_assi_b); + frame_decoded.dc_bl = can1_pwm_duty_cycle_dc_bl_decode(frame_encoded.dc_bl); + frame_decoded.dc_fans_dt = can1_pwm_duty_cycle_dc_fans_dt_decode(frame_encoded.dc_fans_dt); + frame_decoded.dc_fans_bat = can1_pwm_duty_cycle_dc_fans_bat_decode(frame_encoded.dc_fans_bat); + frame_decoded.dc_sbx = can1_pwm_duty_cycle_dc_sbx_decode(frame_encoded.dc_sbx); + return frame_decoded; +} + +inline frame::decoded::can1::pwm_config_t pwm_config(const can1_pwm_config_t frame_encoded) { + frame::decoded::can1::pwm_config_t frame_decoded; + frame_decoded.freq_pwm1_drs_lighting = can1_pwm_config_freq_pwm1_drs_lighting_decode(frame_encoded.freq_pwm1_drs_lighting); + frame_decoded.freq_pwm3_fans = can1_pwm_config_freq_pwm3_fans_decode(frame_encoded.freq_pwm3_fans); + frame_decoded.freq_pwm2_sbx = can1_pwm_config_freq_pwm2_sbx_decode(frame_encoded.freq_pwm2_sbx); + return frame_decoded; +} + +inline frame::decoded::can1::dashboard_in_t dashboard_in(const can1_dashboard_in_t frame_encoded) { + frame::decoded::can1::dashboard_in_t frame_decoded; + frame_decoded.dashboard_r2_d_button = can1_dashboard_in_dashboard_r2_d_button_decode(frame_encoded.dashboard_r2_d_button); + frame_decoded.dashboard_ts_activate_button = can1_dashboard_in_dashboard_ts_activate_button_decode(frame_encoded.dashboard_ts_activate_button); + frame_decoded.dashboard_race_key = can1_dashboard_in_dashboard_race_key_decode(frame_encoded.dashboard_race_key); + frame_decoded.dashboard_sdc_in = can1_dashboard_in_dashboard_sdc_in_decode(frame_encoded.dashboard_sdc_in); + frame_decoded.dashboard_sdc_out = can1_dashboard_in_dashboard_sdc_out_decode(frame_encoded.dashboard_sdc_out); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_status_t ams_slave1_status(const can1_ams_slave1_status_t frame_encoded) { + frame::decoded::can1::ams_slave1_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave1_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave1_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave1_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave1_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave1_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave1_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log0_t ams_slave2_log0(const can1_ams_slave2_log0_t frame_encoded) { + frame::decoded::can1::ams_slave2_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave2_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave2_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave2_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave2_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log1_t ams_slave2_log1(const can1_ams_slave2_log1_t frame_encoded) { + frame::decoded::can1::ams_slave2_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave2_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave2_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave2_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave2_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log2_t ams_slave2_log2(const can1_ams_slave2_log2_t frame_encoded) { + frame::decoded::can1::ams_slave2_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave2_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave2_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave2_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave2_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log3_t ams_slave2_log3(const can1_ams_slave2_log3_t frame_encoded) { + frame::decoded::can1::ams_slave2_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave2_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave2_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave2_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave2_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log4_t ams_slave2_log4(const can1_ams_slave2_log4_t frame_encoded) { + frame::decoded::can1::ams_slave2_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave2_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log5_t ams_slave2_log5(const can1_ams_slave2_log5_t frame_encoded) { + frame::decoded::can1::ams_slave2_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave2_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave2_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave2_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave2_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave2_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave2_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave2_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave2_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log6_t ams_slave5_log6(const can1_ams_slave5_log6_t frame_encoded) { + frame::decoded::can1::ams_slave5_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave5_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave5_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log6_t ams_slave4_log6(const can1_ams_slave4_log6_t frame_encoded) { + frame::decoded::can1::ams_slave4_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave4_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave4_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log6_t ams_slave3_log6(const can1_ams_slave3_log6_t frame_encoded) { + frame::decoded::can1::ams_slave3_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave3_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave3_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log6_t ams_slave2_log6(const can1_ams_slave2_log6_t frame_encoded) { + frame::decoded::can1::ams_slave2_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave2_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave2_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log6_t ams_slave1_log6(const can1_ams_slave1_log6_t frame_encoded) { + frame::decoded::can1::ams_slave1_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave1_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave1_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log5_t ams_slave5_log5(const can1_ams_slave5_log5_t frame_encoded) { + frame::decoded::can1::ams_slave5_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave5_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave5_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave5_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave5_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave5_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave5_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave5_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave5_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log5_t ams_slave4_log5(const can1_ams_slave4_log5_t frame_encoded) { + frame::decoded::can1::ams_slave4_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave4_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave4_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave4_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave4_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave4_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave4_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave4_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave4_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log5_t ams_slave3_log5(const can1_ams_slave3_log5_t frame_encoded) { + frame::decoded::can1::ams_slave3_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave3_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave3_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave3_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave3_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave3_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave3_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave3_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave3_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log5_t ams_slave1_log5(const can1_ams_slave1_log5_t frame_encoded) { + frame::decoded::can1::ams_slave1_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave1_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave1_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave1_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave1_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave1_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave1_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave1_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave1_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log4_t ams_slave5_log4(const can1_ams_slave5_log4_t frame_encoded) { + frame::decoded::can1::ams_slave5_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave5_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log4_t ams_slave4_log4(const can1_ams_slave4_log4_t frame_encoded) { + frame::decoded::can1::ams_slave4_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave4_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log4_t ams_slave3_log4(const can1_ams_slave3_log4_t frame_encoded) { + frame::decoded::can1::ams_slave3_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave3_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log4_t ams_slave1_log4(const can1_ams_slave1_log4_t frame_encoded) { + frame::decoded::can1::ams_slave1_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave1_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log3_t ams_slave5_log3(const can1_ams_slave5_log3_t frame_encoded) { + frame::decoded::can1::ams_slave5_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave5_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave5_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave5_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave5_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log3_t ams_slave4_log3(const can1_ams_slave4_log3_t frame_encoded) { + frame::decoded::can1::ams_slave4_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave4_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave4_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave4_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave4_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log3_t ams_slave3_log3(const can1_ams_slave3_log3_t frame_encoded) { + frame::decoded::can1::ams_slave3_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave3_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave3_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave3_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave3_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log3_t ams_slave1_log3(const can1_ams_slave1_log3_t frame_encoded) { + frame::decoded::can1::ams_slave1_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave1_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave1_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave1_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave1_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log2_t ams_slave5_log2(const can1_ams_slave5_log2_t frame_encoded) { + frame::decoded::can1::ams_slave5_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave5_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave5_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave5_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave5_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log2_t ams_slave4_log2(const can1_ams_slave4_log2_t frame_encoded) { + frame::decoded::can1::ams_slave4_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave4_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave4_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave4_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave4_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log2_t ams_slave3_log2(const can1_ams_slave3_log2_t frame_encoded) { + frame::decoded::can1::ams_slave3_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave3_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave3_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave3_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave3_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log2_t ams_slave1_log2(const can1_ams_slave1_log2_t frame_encoded) { + frame::decoded::can1::ams_slave1_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave1_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave1_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave1_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave1_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log1_t ams_slave5_log1(const can1_ams_slave5_log1_t frame_encoded) { + frame::decoded::can1::ams_slave5_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave5_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave5_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave5_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave5_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log1_t ams_slave4_log1(const can1_ams_slave4_log1_t frame_encoded) { + frame::decoded::can1::ams_slave4_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave4_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave4_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave4_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave4_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log1_t ams_slave3_log1(const can1_ams_slave3_log1_t frame_encoded) { + frame::decoded::can1::ams_slave3_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave3_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave3_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave3_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave3_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log1_t ams_slave1_log1(const can1_ams_slave1_log1_t frame_encoded) { + frame::decoded::can1::ams_slave1_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave1_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave1_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave1_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave1_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log0_t ams_slave5_log0(const can1_ams_slave5_log0_t frame_encoded) { + frame::decoded::can1::ams_slave5_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave5_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave5_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave5_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave5_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log0_t ams_slave4_log0(const can1_ams_slave4_log0_t frame_encoded) { + frame::decoded::can1::ams_slave4_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave4_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave4_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave4_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave4_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log0_t ams_slave3_log0(const can1_ams_slave3_log0_t frame_encoded) { + frame::decoded::can1::ams_slave3_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave3_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave3_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave3_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave3_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log0_t ams_slave1_log0(const can1_ams_slave1_log0_t frame_encoded) { + frame::decoded::can1::ams_slave1_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave1_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave1_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave1_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave1_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_heartbeat_t pdu_heartbeat(const can1_pdu_heartbeat_t frame_encoded) { + frame::decoded::can1::pdu_heartbeat_t frame_decoded; + frame_decoded.pdu_heartbeat = can1_pdu_heartbeat_pdu_heartbeat_decode(frame_encoded.pdu_heartbeat); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_pneumatik_t ftcu_pneumatik(const can1_ftcu_pneumatik_t frame_encoded) { + frame::decoded::can1::ftcu_pneumatik_t frame_decoded; + frame_decoded.ftcu_tank_pressure_1 = can1_ftcu_pneumatik_ftcu_tank_pressure_1_decode(frame_encoded.ftcu_tank_pressure_1); + frame_decoded.ftcu_tank_pressure_2 = can1_ftcu_pneumatik_ftcu_tank_pressure_2_decode(frame_encoded.ftcu_tank_pressure_2); + return frame_decoded; +} + +inline frame::decoded::can1::acu_tx_commands_t acu_tx_commands(const can1_acu_tx_commands_t frame_encoded) { + frame::decoded::can1::acu_tx_commands_t frame_decoded; + frame_decoded.abx_speed_fl = can1_acu_tx_commands_abx_speed_fl_decode(frame_encoded.abx_speed_fl); + frame_decoded.abx_speed_fr = can1_acu_tx_commands_abx_speed_fr_decode(frame_encoded.abx_speed_fr); + frame_decoded.abx_speed_rl = can1_acu_tx_commands_abx_speed_rl_decode(frame_encoded.abx_speed_rl); + frame_decoded.abx_speed_rr = can1_acu_tx_commands_abx_speed_rr_decode(frame_encoded.abx_speed_rr); + frame_decoded.abx_steering_angle_left = can1_acu_tx_commands_abx_steering_angle_left_decode(frame_encoded.abx_steering_angle_left); + frame_decoded.abx_steering_angle_right = can1_acu_tx_commands_abx_steering_angle_right_decode(frame_encoded.abx_steering_angle_right); + return frame_decoded; +} + +inline frame::decoded::can1::acu_rx_commands_t acu_rx_commands(const can1_acu_rx_commands_t frame_encoded) { + frame::decoded::can1::acu_rx_commands_t frame_decoded; + frame_decoded.acu_speed_target_left = can1_acu_rx_commands_acu_speed_target_left_decode(frame_encoded.acu_speed_target_left); + frame_decoded.acu_speed_target_right = can1_acu_rx_commands_acu_speed_target_right_decode(frame_encoded.acu_speed_target_right); + frame_decoded.acu_steering_angle_right = can1_acu_rx_commands_acu_steering_angle_right_decode(frame_encoded.acu_steering_angle_right); + frame_decoded.acu_steering_angle_left = can1_acu_rx_commands_acu_steering_angle_left_decode(frame_encoded.acu_steering_angle_left); + return frame_decoded; +} + +inline frame::decoded::can1::acu_rx_t acu_rx(const can1_acu_rx_t frame_encoded) { + frame::decoded::can1::acu_rx_t frame_decoded; + frame_decoded.acu_as_mission_complete = can1_acu_rx_acu_as_mission_complete_decode(frame_encoded.acu_as_mission_complete); + frame_decoded.acu_as_ok = can1_acu_rx_acu_as_ok_decode(frame_encoded.acu_as_ok); + frame_decoded.acu_drs = can1_acu_rx_acu_drs_decode(frame_encoded.acu_drs); + frame_decoded.acu_lap_count = can1_acu_rx_acu_lap_count_decode(frame_encoded.acu_lap_count); + frame_decoded.acu_cones_all = can1_acu_rx_acu_cones_all_decode(frame_encoded.acu_cones_all); + frame_decoded.acu_cones_actual = can1_acu_rx_acu_cones_actual_decode(frame_encoded.acu_cones_actual); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log0_t ams_slave0_log0(const can1_ams_slave0_log0_t frame_encoded) { + frame::decoded::can1::ams_slave0_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave0_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave0_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave0_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave0_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log1_t ams_slave0_log1(const can1_ams_slave0_log1_t frame_encoded) { + frame::decoded::can1::ams_slave0_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave0_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave0_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave0_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave0_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log3_t ams_slave0_log3(const can1_ams_slave0_log3_t frame_encoded) { + frame::decoded::can1::ams_slave0_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave0_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave0_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave0_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave0_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log4_t ams_slave0_log4(const can1_ams_slave0_log4_t frame_encoded) { + frame::decoded::can1::ams_slave0_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave0_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log5_t ams_slave0_log5(const can1_ams_slave0_log5_t frame_encoded) { + frame::decoded::can1::ams_slave0_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave0_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave0_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave0_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave0_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave0_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave0_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave0_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave0_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log6_t ams_slave0_log6(const can1_ams_slave0_log6_t frame_encoded) { + frame::decoded::can1::ams_slave0_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave0_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave0_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::acu_tx_t acu_tx(const can1_acu_tx_t frame_encoded) { + frame::decoded::can1::acu_tx_t frame_decoded; + frame_decoded.acu_as_mission = can1_acu_tx_acu_as_mission_decode(frame_encoded.acu_as_mission); + frame_decoded.acu_as_state = can1_acu_tx_acu_as_state_decode(frame_encoded.acu_as_state); + frame_decoded.acu_power_off = can1_acu_tx_acu_power_off_decode(frame_encoded.acu_power_off); + frame_decoded.acu_reset = can1_acu_tx_acu_reset_decode(frame_encoded.acu_reset); + frame_decoded.acu_allow_torque = can1_acu_tx_acu_allow_torque_decode(frame_encoded.acu_allow_torque); + frame_decoded.abx_con_mon_error = can1_acu_tx_abx_con_mon_error_decode(frame_encoded.abx_con_mon_error); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_status_t ams_slave5_status(const can1_ams_slave5_status_t frame_encoded) { + frame::decoded::can1::ams_slave5_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave5_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave5_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave5_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave5_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave5_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave5_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_status_t ams_slave4_status(const can1_ams_slave4_status_t frame_encoded) { + frame::decoded::can1::ams_slave4_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave4_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave4_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave4_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave4_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave4_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave4_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_status_t ams_slave3_status(const can1_ams_slave3_status_t frame_encoded) { + frame::decoded::can1::ams_slave3_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave3_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave3_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave3_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave3_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave3_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave3_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_status_t ams_slave2_status(const can1_ams_slave2_status_t frame_encoded) { + frame::decoded::can1::ams_slave2_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave2_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave2_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave2_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave2_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave2_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave2_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_error_t ams_error(const can1_ams_error_t frame_encoded) { + frame::decoded::can1::ams_error_t frame_decoded; + frame_decoded.ams_error_kind = can1_ams_error_ams_error_kind_decode(frame_encoded.ams_error_kind); + frame_decoded.ams_error_arg = can1_ams_error_ams_error_arg_decode(frame_encoded.ams_error_arg); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_cooling_t ftcu_cooling(const can1_ftcu_cooling_t frame_encoded) { + frame::decoded::can1::ftcu_cooling_t frame_decoded; + frame_decoded.ftcu_water_pressure_2 = can1_ftcu_cooling_ftcu_water_pressure_2_decode(frame_encoded.ftcu_water_pressure_2); + frame_decoded.ftcu_water_pressure_1 = can1_ftcu_cooling_ftcu_water_pressure_1_decode(frame_encoded.ftcu_water_pressure_1); + frame_decoded.ftcu_water_temperature_1 = can1_ftcu_cooling_ftcu_water_temperature_1_decode(frame_encoded.ftcu_water_temperature_1); + frame_decoded.ftcu_water_temperature_2 = can1_ftcu_cooling_ftcu_water_temperature_2_decode(frame_encoded.ftcu_water_temperature_2); + frame_decoded.ftcu_flow_rate = can1_ftcu_cooling_ftcu_flow_rate_decode(frame_encoded.ftcu_flow_rate); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_brake_t_t ftcu_brake_t(const can1_ftcu_brake_t_t frame_encoded) { + frame::decoded::can1::ftcu_brake_t_t frame_decoded; + frame_decoded.ftcu_brake_t_fl = can1_ftcu_brake_t_ftcu_brake_t_fl_decode(frame_encoded.ftcu_brake_t_fl); + frame_decoded.ftcu_brake_t_fr = can1_ftcu_brake_t_ftcu_brake_t_fr_decode(frame_encoded.ftcu_brake_t_fr); + frame_decoded.ftcu_brake_t_rl = can1_ftcu_brake_t_ftcu_brake_t_rl_decode(frame_encoded.ftcu_brake_t_rl); + frame_decoded.ftcu_brake_t_rr = can1_ftcu_brake_t_ftcu_brake_t_rr_decode(frame_encoded.ftcu_brake_t_rr); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_wheelspeed_t ftcu_wheelspeed(const can1_ftcu_wheelspeed_t frame_encoded) { + frame::decoded::can1::ftcu_wheelspeed_t frame_decoded; + frame_decoded.ftcu_wheelspeed_fl = can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_decode(frame_encoded.ftcu_wheelspeed_fl); + frame_decoded.ftcu_wheelspeed_fr = can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_decode(frame_encoded.ftcu_wheelspeed_fr); + frame_decoded.ftcu_wheelspeed_rl = can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_decode(frame_encoded.ftcu_wheelspeed_rl); + frame_decoded.ftcu_wheelspeed_rr = can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_decode(frame_encoded.ftcu_wheelspeed_rr); + frame_decoded.ftcu_distance_session = can1_ftcu_wheelspeed_ftcu_distance_session_decode(frame_encoded.ftcu_distance_session); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_timings_t ftcu_timings(const can1_ftcu_timings_t frame_encoded) { + frame::decoded::can1::ftcu_timings_t frame_decoded; + frame_decoded.ftcu_laptime_best = can1_ftcu_timings_ftcu_laptime_best_decode(frame_encoded.ftcu_laptime_best); + frame_decoded.ftcu_laptime_last = can1_ftcu_timings_ftcu_laptime_last_decode(frame_encoded.ftcu_laptime_last); + frame_decoded.ftcu_sectortime_best = can1_ftcu_timings_ftcu_sectortime_best_decode(frame_encoded.ftcu_sectortime_best); + frame_decoded.ftcu_sectortime_last = can1_ftcu_timings_ftcu_sectortime_last_decode(frame_encoded.ftcu_sectortime_last); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_driver_t ftcu_driver(const can1_ftcu_driver_t frame_encoded) { + frame::decoded::can1::ftcu_driver_t frame_decoded; + frame_decoded.ftcu_apps_percent = can1_ftcu_driver_ftcu_apps_percent_decode(frame_encoded.ftcu_apps_percent); + frame_decoded.ftcu_brake_pressure_f = can1_ftcu_driver_ftcu_brake_pressure_f_decode(frame_encoded.ftcu_brake_pressure_f); + frame_decoded.ftcu_brake_pressure_r = can1_ftcu_driver_ftcu_brake_pressure_r_decode(frame_encoded.ftcu_brake_pressure_r); + frame_decoded.ftcu_steering_angle = can1_ftcu_driver_ftcu_steering_angle_decode(frame_encoded.ftcu_steering_angle); + frame_decoded.ftcu_speed = can1_ftcu_driver_ftcu_speed_decode(frame_encoded.ftcu_speed); + frame_decoded.ftcu_lapcounter = can1_ftcu_driver_ftcu_lapcounter_decode(frame_encoded.ftcu_lapcounter); + frame_decoded.ftcu_sectorcounter = can1_ftcu_driver_ftcu_sectorcounter_decode(frame_encoded.ftcu_sectorcounter); + return frame_decoded; +} + +inline frame::decoded::can1::tts_rr_t tts_rr(const can1_tts_rr_t frame_encoded) { + frame::decoded::can1::tts_rr_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_rr_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_rr_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_rr_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_rr_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outet_right = can1_tts_rr_tts_outet_right_decode(frame_encoded.tts_outet_right); + frame_decoded.tts_status = can1_tts_rr_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_rl_t tts_rl(const can1_tts_rl_t frame_encoded) { + frame::decoded::can1::tts_rl_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_rl_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_rl_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_rl_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_rl_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_rl_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_rl_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_fr_t tts_fr(const can1_tts_fr_t frame_encoded) { + frame::decoded::can1::tts_fr_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_fr_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_fr_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_fr_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_fr_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_fr_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_fr_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_fl_t tts_fl(const can1_tts_fl_t frame_encoded) { + frame::decoded::can1::tts_fl_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_fl_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_fl_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_fl_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_fl_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_fl_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_fl_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::stw_param_set_t stw_param_set(const can1_stw_param_set_t frame_encoded) { + frame::decoded::can1::stw_param_set_t frame_decoded; + frame_decoded.stw_param_set = can1_stw_param_set_stw_param_set_decode(frame_encoded.stw_param_set); + frame_decoded.stw_param_tc_slipref = can1_stw_param_set_stw_param_tc_slipref_decode(frame_encoded.stw_param_tc_slipref); + frame_decoded.stw_param_tc_mumax = can1_stw_param_set_stw_param_tc_mumax_decode(frame_encoded.stw_param_tc_mumax); + frame_decoded.stw_param_tc_i = can1_stw_param_set_stw_param_tc_i_decode(frame_encoded.stw_param_tc_i); + frame_decoded.stw_param_plim = can1_stw_param_set_stw_param_plim_decode(frame_encoded.stw_param_plim); + frame_decoded.stw_param_tlim = can1_stw_param_set_stw_param_tlim_decode(frame_encoded.stw_param_tlim); + frame_decoded.stw_param_tc_p = can1_stw_param_set_stw_param_tc_p_decode(frame_encoded.stw_param_tc_p); + frame_decoded.stw_param_reku = can1_stw_param_set_stw_param_reku_decode(frame_encoded.stw_param_reku); + frame_decoded.stw_param_tc_on = can1_stw_param_set_stw_param_tc_on_decode(frame_encoded.stw_param_tc_on); + frame_decoded.stw_param_tv_on = can1_stw_param_set_stw_param_tv_on_decode(frame_encoded.stw_param_tv_on); + frame_decoded.stw_param_discipline = can1_stw_param_set_stw_param_discipline_decode(frame_encoded.stw_param_discipline); + frame_decoded.stw_param_slim = can1_stw_param_set_stw_param_slim_decode(frame_encoded.stw_param_slim); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_status_t ams_slave0_status(const can1_ams_slave0_status_t frame_encoded) { + frame::decoded::can1::ams_slave0_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave0_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave0_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave0_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave0_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave0_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave0_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ssu_message_t ssu_message(const can1_ssu_message_t frame_encoded) { + frame::decoded::can1::ssu_message_t frame_decoded; + frame_decoded.ssu_pressure = can1_ssu_message_ssu_pressure_decode(frame_encoded.ssu_pressure); + frame_decoded.ssu_air_temp = can1_ssu_message_ssu_air_temp_decode(frame_encoded.ssu_air_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_status_t ams_status(const can1_ams_status_t frame_encoded) { + frame::decoded::can1::ams_status_t frame_decoded; + frame_decoded.ams_state = can1_ams_status_ams_state_decode(frame_encoded.ams_state); + frame_decoded.sdc_closed = can1_ams_status_sdc_closed_decode(frame_encoded.sdc_closed); + frame_decoded.soc = can1_ams_status_soc_decode(frame_encoded.soc); + frame_decoded.min_cell_volt = can1_ams_status_min_cell_volt_decode(frame_encoded.min_cell_volt); + frame_decoded.max_cell_temp = can1_ams_status_max_cell_temp_decode(frame_encoded.max_cell_temp); + frame_decoded.ams_imd_state = can1_ams_status_ams_imd_state_decode(frame_encoded.ams_imd_state); + frame_decoded.ams_imd_ok = can1_ams_status_ams_imd_ok_decode(frame_encoded.ams_imd_ok); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave_panic_t ams_slave_panic(const can1_ams_slave_panic_t frame_encoded) { + frame::decoded::can1::ams_slave_panic_t frame_decoded; + frame_decoded.ams_slave_panic_slave_id = can1_ams_slave_panic_ams_slave_panic_slave_id_decode(frame_encoded.ams_slave_panic_slave_id); + frame_decoded.ams_slave_panic_kind = can1_ams_slave_panic_ams_slave_panic_kind_decode(frame_encoded.ams_slave_panic_kind); + frame_decoded.ams_slave_panic_arg = can1_ams_slave_panic_ams_slave_panic_arg_decode(frame_encoded.ams_slave_panic_arg); + return frame_decoded; +} + +inline frame::decoded::can1::ams_in_t ams_in(const can1_ams_in_t frame_encoded) { + frame::decoded::can1::ams_in_t frame_decoded; + frame_decoded.ts_activate = can1_ams_in_ts_activate_decode(frame_encoded.ts_activate); + frame_decoded.inverters_discharged = can1_ams_in_inverters_discharged_decode(frame_encoded.inverters_discharged); + frame_decoded.lap_number = can1_ams_in_lap_number_decode(frame_encoded.lap_number); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_current_t shunt_current(const can1_shunt_current_t frame_encoded) { + frame::decoded::can1::shunt_current_t frame_decoded; + frame_decoded.shunt_current = can1_shunt_current_shunt_current_decode(frame_encoded.shunt_current); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage1_t shunt_voltage1(const can1_shunt_voltage1_t frame_encoded) { + frame::decoded::can1::shunt_voltage1_t frame_decoded; + frame_decoded.shunt_voltage1 = can1_shunt_voltage1_shunt_voltage1_decode(frame_encoded.shunt_voltage1); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage2_t shunt_voltage2(const can1_shunt_voltage2_t frame_encoded) { + frame::decoded::can1::shunt_voltage2_t frame_decoded; + frame_decoded.shunt_voltage2 = can1_shunt_voltage2_shunt_voltage2_decode(frame_encoded.shunt_voltage2); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage3_t shunt_voltage3(const can1_shunt_voltage3_t frame_encoded) { + frame::decoded::can1::shunt_voltage3_t frame_decoded; + frame_decoded.shunt_voltage3 = can1_shunt_voltage3_shunt_voltage3_decode(frame_encoded.shunt_voltage3); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_temperature_t shunt_temperature(const can1_shunt_temperature_t frame_encoded) { + frame::decoded::can1::shunt_temperature_t frame_decoded; + frame_decoded.shunt_temperature = can1_shunt_temperature_shunt_temperature_decode(frame_encoded.shunt_temperature); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_command_t pdu_command(const can1_pdu_command_t frame_encoded) { + frame::decoded::can1::pdu_command_t frame_decoded; + frame_decoded.pdu_enable_misc = can1_pdu_command_pdu_enable_misc_decode(frame_encoded.pdu_enable_misc); + frame_decoded.pdu_enable_sdc = can1_pdu_command_pdu_enable_sdc_decode(frame_encoded.pdu_enable_sdc); + frame_decoded.pdu_enable_inverter = can1_pdu_command_pdu_enable_inverter_decode(frame_encoded.pdu_enable_inverter); + frame_decoded.pdu_enable_ts_cooling = can1_pdu_command_pdu_enable_ts_cooling_decode(frame_encoded.pdu_enable_ts_cooling); + frame_decoded.pdu_enable_acc_cooling = can1_pdu_command_pdu_enable_acc_cooling_decode(frame_encoded.pdu_enable_acc_cooling); + frame_decoded.pdu_enable_lldar = can1_pdu_command_pdu_enable_lldar_decode(frame_encoded.pdu_enable_lldar); + frame_decoded.pdu_enable_drs = can1_pdu_command_pdu_enable_drs_decode(frame_encoded.pdu_enable_drs); + frame_decoded.pdu_enable_epsc = can1_pdu_command_pdu_enable_epsc_decode(frame_encoded.pdu_enable_epsc); + frame_decoded.pdu_enable_acu = can1_pdu_command_pdu_enable_acu_decode(frame_encoded.pdu_enable_acu); + frame_decoded.pdu_enable_ebs_a = can1_pdu_command_pdu_enable_ebs_a_decode(frame_encoded.pdu_enable_ebs_a); + frame_decoded.pdu_enable_ebs_b = can1_pdu_command_pdu_enable_ebs_b_decode(frame_encoded.pdu_enable_ebs_b); + frame_decoded.pdu_enable_ebs_c = can1_pdu_command_pdu_enable_ebs_c_decode(frame_encoded.pdu_enable_ebs_c); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_response_t pdu_response(const can1_pdu_response_t frame_encoded) { + frame::decoded::can1::pdu_response_t frame_decoded; + frame_decoded.pdu_alwayson_tx = can1_pdu_response_pdu_alwayson_tx_decode(frame_encoded.pdu_alwayson_tx); + frame_decoded.pdu_shutdown_circuit_tx = can1_pdu_response_pdu_shutdown_circuit_tx_decode(frame_encoded.pdu_shutdown_circuit_tx); + frame_decoded.pdu_lidar_tx = can1_pdu_response_pdu_lidar_tx_decode(frame_encoded.pdu_lidar_tx); + frame_decoded.pdu_acu_tx = can1_pdu_response_pdu_acu_tx_decode(frame_encoded.pdu_acu_tx); + frame_decoded.pdu_servos_regler_tx = can1_pdu_response_pdu_servos_regler_tx_decode(frame_encoded.pdu_servos_regler_tx); + frame_decoded.pdu_inverter_tx = can1_pdu_response_pdu_inverter_tx_decode(frame_encoded.pdu_inverter_tx); + frame_decoded.pdu_misc_tx = can1_pdu_response_pdu_misc_tx_decode(frame_encoded.pdu_misc_tx); + frame_decoded.pdu_servo_tx = can1_pdu_response_pdu_servo_tx_decode(frame_encoded.pdu_servo_tx); + frame_decoded.pdu_ebs_valve_1_tx = can1_pdu_response_pdu_ebs_valve_1_tx_decode(frame_encoded.pdu_ebs_valve_1_tx); + frame_decoded.pdu_ebs_valve_2_tx = can1_pdu_response_pdu_ebs_valve_2_tx_decode(frame_encoded.pdu_ebs_valve_2_tx); + frame_decoded.pdu_cs_valve_tx = can1_pdu_response_pdu_cs_valve_tx_decode(frame_encoded.pdu_cs_valve_tx); + frame_decoded.pdu_aggregat_tx = can1_pdu_response_pdu_aggregat_tx_decode(frame_encoded.pdu_aggregat_tx); + frame_decoded.pdu_steering_tx = can1_pdu_response_pdu_steering_tx_decode(frame_encoded.pdu_steering_tx); + frame_decoded.pdu_pwm_tsac_fans = can1_pdu_response_pdu_pwm_tsac_fans_decode(frame_encoded.pdu_pwm_tsac_fans); + frame_decoded.pdu_pwm_radiatot_fans_tx = can1_pdu_response_pdu_pwm_radiatot_fans_tx_decode(frame_encoded.pdu_pwm_radiatot_fans_tx); + frame_decoded.pdu_pwm_aggregat = can1_pdu_response_pdu_pwm_aggregat_decode(frame_encoded.pdu_pwm_aggregat); + frame_decoded.pdu_pwm_pump = can1_pdu_response_pdu_pwm_pump_decode(frame_encoded.pdu_pwm_pump); + frame_decoded.pdu_heartbeat_ok_tx = can1_pdu_response_pdu_heartbeat_ok_tx_decode(frame_encoded.pdu_heartbeat_ok_tx); + return frame_decoded; +} + +inline frame::decoded::can1::as_mission_fb_t as_mission_fb(const can1_as_mission_fb_t frame_encoded) { + frame::decoded::can1::as_mission_fb_t frame_decoded; + frame_decoded.mission_selection = can1_as_mission_fb_mission_selection_decode(frame_encoded.mission_selection); + return frame_decoded; +} + +inline frame::decoded::can1::stw_mission_selected_t stw_mission_selected(const can1_stw_mission_selected_t frame_encoded) { + frame::decoded::can1::stw_mission_selected_t frame_decoded; + frame_decoded.mission_selection = can1_stw_mission_selected_mission_selection_decode(frame_encoded.mission_selection); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_out_t epsc_out(const can1_epsc_out_t frame_encoded) { + frame::decoded::can1::epsc_out_t frame_decoded; + frame_decoded.epsc_measured_rpm = can1_epsc_out_epsc_measured_rpm_decode(frame_encoded.epsc_measured_rpm); + frame_decoded.epsc_measured_steering_angle = can1_epsc_out_epsc_measured_steering_angle_decode(frame_encoded.epsc_measured_steering_angle); + frame_decoded.epsc_measured_mosfet_temperature = can1_epsc_out_epsc_measured_mosfet_temperature_decode(frame_encoded.epsc_measured_mosfet_temperature); + frame_decoded.epsc_measured_voltage = can1_epsc_out_epsc_measured_voltage_decode(frame_encoded.epsc_measured_voltage); + frame_decoded.epsc_measured_current = can1_epsc_out_epsc_measured_current_decode(frame_encoded.epsc_measured_current); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_steering_in_t epsc_steering_in(const can1_epsc_steering_in_t frame_encoded) { + frame::decoded::can1::epsc_steering_in_t frame_decoded; + frame_decoded.epsc_desired_steering_angle = can1_epsc_steering_in_epsc_desired_steering_angle_decode(frame_encoded.epsc_desired_steering_angle); + return frame_decoded; +} + +inline frame::decoded::can1::stw_buttons_t stw_buttons(const can1_stw_buttons_t frame_encoded) { + frame::decoded::can1::stw_buttons_t frame_decoded; + frame_decoded.stw_button_drs = can1_stw_buttons_stw_button_drs_decode(frame_encoded.stw_button_drs); + frame_decoded.stw_button_1 = can1_stw_buttons_stw_button_1_decode(frame_encoded.stw_button_1); + frame_decoded.stw_button_2 = can1_stw_buttons_stw_button_2_decode(frame_encoded.stw_button_2); + frame_decoded.stw_button_3 = can1_stw_buttons_stw_button_3_decode(frame_encoded.stw_button_3); + frame_decoded.stw_button_4 = can1_stw_buttons_stw_button_4_decode(frame_encoded.stw_button_4); + return frame_decoded; +} + +inline frame::decoded::can1::stw_status_t stw_status(const can1_stw_status_t frame_encoded) { + frame::decoded::can1::stw_status_t frame_decoded; + frame_decoded.lap_count = can1_stw_status_lap_count_decode(frame_encoded.lap_count); + frame_decoded.err_pdu = can1_stw_status_err_pdu_decode(frame_encoded.err_pdu); + frame_decoded.err_res = can1_stw_status_err_res_decode(frame_encoded.err_res); + frame_decoded.r2_d_progress = can1_stw_status_r2_d_progress_decode(frame_encoded.r2_d_progress); + frame_decoded.as_state_stw = can1_stw_status_as_state_stw_decode(frame_encoded.as_state_stw); + frame_decoded.err_as = can1_stw_status_err_as_decode(frame_encoded.err_as); + frame_decoded.err_app_sp = can1_stw_status_err_app_sp_decode(frame_encoded.err_app_sp); + frame_decoded.err_s_bspd = can1_stw_status_err_s_bspd_decode(frame_encoded.err_s_bspd); + frame_decoded.err_scs = can1_stw_status_err_scs_decode(frame_encoded.err_scs); + frame_decoded.err_con_mon = can1_stw_status_err_con_mon_decode(frame_encoded.err_con_mon); + frame_decoded.err_ini_chk = can1_stw_status_err_ini_chk_decode(frame_encoded.err_ini_chk); + frame_decoded.err_inv2 = can1_stw_status_err_inv2_decode(frame_encoded.err_inv2); + frame_decoded.err_inv1 = can1_stw_status_err_inv1_decode(frame_encoded.err_inv1); + frame_decoded.err_ams = can1_stw_status_err_ams_decode(frame_encoded.err_ams); + frame_decoded.err_sdc = can1_stw_status_err_sdc_decode(frame_encoded.err_sdc); + frame_decoded.sdc_status = can1_stw_status_sdc_status_decode(frame_encoded.sdc_status); + frame_decoded.inv2_ready = can1_stw_status_inv2_ready_decode(frame_encoded.inv2_ready); + frame_decoded.inv1_ready = can1_stw_status_inv1_ready_decode(frame_encoded.inv1_ready); + frame_decoded.energy_per_lap = can1_stw_status_energy_per_lap_decode(frame_encoded.energy_per_lap); + frame_decoded.ini_chk_state = can1_stw_status_ini_chk_state_decode(frame_encoded.ini_chk_state); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_1_t pdu_current_1(const can1_pdu_current_1_t frame_encoded) { + frame::decoded::can1::pdu_current_1_t frame_decoded; + frame_decoded.pdu_always_on_current = can1_pdu_current_1_pdu_always_on_current_decode(frame_encoded.pdu_always_on_current); + frame_decoded.pdu_lvms_current = can1_pdu_current_1_pdu_lvms_current_decode(frame_encoded.pdu_lvms_current); + frame_decoded.pdu_asms_current = can1_pdu_current_1_pdu_asms_current_decode(frame_encoded.pdu_asms_current); + frame_decoded.pdu_misc_current = can1_pdu_current_1_pdu_misc_current_decode(frame_encoded.pdu_misc_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_2_t pdu_current_2(const can1_pdu_current_2_t frame_encoded) { + frame::decoded::can1::pdu_current_2_t frame_decoded; + frame_decoded.pdu_sdc_current = can1_pdu_current_2_pdu_sdc_current_decode(frame_encoded.pdu_sdc_current); + frame_decoded.pdu_inverter_current = can1_pdu_current_2_pdu_inverter_current_decode(frame_encoded.pdu_inverter_current); + frame_decoded.pdu_ts_cooling_current = can1_pdu_current_2_pdu_ts_cooling_current_decode(frame_encoded.pdu_ts_cooling_current); + frame_decoded.pdu_acc_cooling_current = can1_pdu_current_2_pdu_acc_cooling_current_decode(frame_encoded.pdu_acc_cooling_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_3_t pdu_current_3(const can1_pdu_current_3_t frame_encoded) { + frame::decoded::can1::pdu_current_3_t frame_decoded; + frame_decoded.pdu_lidar_current = can1_pdu_current_3_pdu_lidar_current_decode(frame_encoded.pdu_lidar_current); + frame_decoded.pdu_drs_current = can1_pdu_current_3_pdu_drs_current_decode(frame_encoded.pdu_drs_current); + frame_decoded.pdu_epsc_current = can1_pdu_current_3_pdu_epsc_current_decode(frame_encoded.pdu_epsc_current); + frame_decoded.pdu_acu_current = can1_pdu_current_3_pdu_acu_current_decode(frame_encoded.pdu_acu_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_4_t pdu_current_4(const can1_pdu_current_4_t frame_encoded) { + frame::decoded::can1::pdu_current_4_t frame_decoded; + frame_decoded.pdu_ebs_a_current = can1_pdu_current_4_pdu_ebs_a_current_decode(frame_encoded.pdu_ebs_a_current); + frame_decoded.pdu_ebs_b_current = can1_pdu_current_4_pdu_ebs_b_current_decode(frame_encoded.pdu_ebs_b_current); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_config_in_t epsc_config_in(const can1_epsc_config_in_t frame_encoded) { + frame::decoded::can1::epsc_config_in_t frame_decoded; + frame_decoded.epsc_config_p_gain = can1_epsc_config_in_epsc_config_p_gain_decode(frame_encoded.epsc_config_p_gain); + frame_decoded.epsc_config_i_gain = can1_epsc_config_in_epsc_config_i_gain_decode(frame_encoded.epsc_config_i_gain); + frame_decoded.epsc_config_d_gain = can1_epsc_config_in_epsc_config_d_gain_decode(frame_encoded.epsc_config_d_gain); + return frame_decoded; +} + +} +} + +// callback structure +namespace callback { +namespace can1 { + inline std::function inverter_velocity = NULL; + inline std::function inverter_errors_warnings = NULL; + inline std::function inverter_torque_actual_cw = NULL; + inline std::function inverter_temperatur = NULL; + inline std::function inverter_torque_wanted = NULL; + inline std::function sdo_telemetrie_rx_node1 = NULL; + inline std::function sdo_telemetrie_rx_node2 = NULL; + inline std::function sdo_telemetrie_tx = NULL; + inline std::function laptop_sdo_node = NULL; + inline std::function x_sens_long_lat = NULL; + inline std::function x_sens_rateofturn = NULL; + inline std::function x_sens_acceleration = NULL; + inline std::function x_sens_velocity = NULL; + inline std::function telemetrie = NULL; + inline std::function override_powermap = NULL; + inline std::function override_laptop_2 = NULL; + inline std::function override_epsc_cooling = NULL; + inline std::function override_laptop = NULL; + inline std::function apps_override = NULL; + inline std::function ftcu_damper = NULL; + inline std::function ftcu_param_confirm = NULL; + inline std::function sensornode_f_10_hz = NULL; + inline std::function sensornode_f_100_hz_1 = NULL; + inline std::function sensornode_f_100_hz_2 = NULL; + inline std::function sensornode_f_1k_hz = NULL; + inline std::function sensornode_r_10_hz = NULL; + inline std::function sensornode_r_100_hz = NULL; + inline std::function sensornode_r_1k_hz = NULL; + inline std::function pwm_duty_cycle = NULL; + inline std::function pwm_config = NULL; + inline std::function dashboard_in = NULL; + inline std::function ams_slave1_status = NULL; + inline std::function ams_slave2_log0 = NULL; + inline std::function ams_slave2_log1 = NULL; + inline std::function ams_slave2_log2 = NULL; + inline std::function ams_slave2_log3 = NULL; + inline std::function ams_slave2_log4 = NULL; + inline std::function ams_slave2_log5 = NULL; + inline std::function ams_slave5_log6 = NULL; + inline std::function ams_slave4_log6 = NULL; + inline std::function ams_slave3_log6 = NULL; + inline std::function ams_slave2_log6 = NULL; + inline std::function ams_slave1_log6 = NULL; + inline std::function ams_slave5_log5 = NULL; + inline std::function ams_slave4_log5 = NULL; + inline std::function ams_slave3_log5 = NULL; + inline std::function ams_slave1_log5 = NULL; + inline std::function ams_slave5_log4 = NULL; + inline std::function ams_slave4_log4 = NULL; + inline std::function ams_slave3_log4 = NULL; + inline std::function ams_slave1_log4 = NULL; + inline std::function ams_slave5_log3 = NULL; + inline std::function ams_slave4_log3 = NULL; + inline std::function ams_slave3_log3 = NULL; + inline std::function ams_slave1_log3 = NULL; + inline std::function ams_slave5_log2 = NULL; + inline std::function ams_slave4_log2 = NULL; + inline std::function ams_slave3_log2 = NULL; + inline std::function ams_slave1_log2 = NULL; + inline std::function ams_slave5_log1 = NULL; + inline std::function ams_slave4_log1 = NULL; + inline std::function ams_slave3_log1 = NULL; + inline std::function ams_slave1_log1 = NULL; + inline std::function ams_slave5_log0 = NULL; + inline std::function ams_slave4_log0 = NULL; + inline std::function ams_slave3_log0 = NULL; + inline std::function ams_slave1_log0 = NULL; + inline std::function pdu_heartbeat = NULL; + inline std::function ftcu_pneumatik = NULL; + inline std::function acu_tx_commands = NULL; + inline std::function acu_rx_commands = NULL; + inline std::function acu_rx = NULL; + inline std::function ams_slave0_log0 = NULL; + inline std::function ams_slave0_log1 = NULL; + inline std::function ams_slave0_log3 = NULL; + inline std::function ams_slave0_log4 = NULL; + inline std::function ams_slave0_log5 = NULL; + inline std::function ams_slave0_log6 = NULL; + inline std::function acu_tx = NULL; + inline std::function ams_slave5_status = NULL; + inline std::function ams_slave4_status = NULL; + inline std::function ams_slave3_status = NULL; + inline std::function ams_slave2_status = NULL; + inline std::function ams_error = NULL; + inline std::function ftcu_cooling = NULL; + inline std::function ftcu_brake_t = NULL; + inline std::function ftcu_wheelspeed = NULL; + inline std::function ftcu_timings = NULL; + inline std::function ftcu_driver = NULL; + inline std::function tts_rr = NULL; + inline std::function tts_rl = NULL; + inline std::function tts_fr = NULL; + inline std::function tts_fl = NULL; + inline std::function stw_param_set = NULL; + inline std::function ams_slave0_status = NULL; + inline std::function ssu_message = NULL; + inline std::function ams_status = NULL; + inline std::function ams_slave_panic = NULL; + inline std::function ams_in = NULL; + inline std::function shunt_current = NULL; + inline std::function shunt_voltage1 = NULL; + inline std::function shunt_voltage2 = NULL; + inline std::function shunt_voltage3 = NULL; + inline std::function shunt_temperature = NULL; + inline std::function pdu_command = NULL; + inline std::function pdu_response = NULL; + inline std::function as_mission_fb = NULL; + inline std::function stw_mission_selected = NULL; + inline std::function epsc_out = NULL; + inline std::function epsc_steering_in = NULL; + inline std::function stw_buttons = NULL; + inline std::function stw_status = NULL; + inline std::function pdu_current_1 = NULL; + inline std::function pdu_current_2 = NULL; + inline std::function pdu_current_3 = NULL; + inline std::function pdu_current_4 = NULL; + inline std::function epsc_config_in = NULL; +} +} +} + + +#endif // _ENDEC_HPP_ + diff --git a/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h new file mode 100644 index 0000000..c146da6 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h @@ -0,0 +1,275 @@ +#ifndef _TRANSCEIVER_H_ +#define _TRANSCEIVER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "endec.hpp" + +#define STANDARD_TIMEOUT 10000 + +namespace canlib { +class Transceiver { +public: + Transceiver(); + Transceiver(std::string device_name, std::vector filters); + ~Transceiver(); + + virtual void transmit(canlib::frame::decoded::can1::inverter_velocity_t inverter_velocity); + virtual void transmit(canlib::frame::decoded::can1::inverter_errors_warnings_t inverter_errors_warnings); + virtual void transmit(canlib::frame::decoded::can1::inverter_torque_actual_cw_t inverter_torque_actual_cw); + virtual void transmit(canlib::frame::decoded::can1::inverter_temperatur_t inverter_temperatur); + virtual void transmit(canlib::frame::decoded::can1::inverter_torque_wanted_t inverter_torque_wanted); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_tx_t sdo_telemetrie_tx); + virtual void transmit(canlib::frame::decoded::can1::laptop_sdo_node_t laptop_sdo_node); + virtual void transmit(canlib::frame::decoded::can1::x_sens_long_lat_t x_sens_long_lat); + virtual void transmit(canlib::frame::decoded::can1::x_sens_rateofturn_t x_sens_rateofturn); + virtual void transmit(canlib::frame::decoded::can1::x_sens_acceleration_t x_sens_acceleration); + virtual void transmit(canlib::frame::decoded::can1::x_sens_velocity_t x_sens_velocity); + virtual void transmit(canlib::frame::decoded::can1::telemetrie_t telemetrie); + virtual void transmit(canlib::frame::decoded::can1::override_powermap_t override_powermap); + virtual void transmit(canlib::frame::decoded::can1::override_laptop_2_t override_laptop_2); + virtual void transmit(canlib::frame::decoded::can1::override_epsc_cooling_t override_epsc_cooling); + virtual void transmit(canlib::frame::decoded::can1::override_laptop_t override_laptop); + virtual void transmit(canlib::frame::decoded::can1::apps_override_t apps_override); + virtual void transmit(canlib::frame::decoded::can1::ftcu_damper_t ftcu_damper); + virtual void transmit(canlib::frame::decoded::can1::ftcu_param_confirm_t ftcu_param_confirm); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_10_hz_t sensornode_f_10_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_1_t sensornode_f_100_hz_1); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_2_t sensornode_f_100_hz_2); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_1k_hz_t sensornode_f_1k_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_10_hz_t sensornode_r_10_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_100_hz_t sensornode_r_100_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_1k_hz_t sensornode_r_1k_hz); + virtual void transmit(canlib::frame::decoded::can1::pwm_duty_cycle_t pwm_duty_cycle); + virtual void transmit(canlib::frame::decoded::can1::pwm_config_t pwm_config); + virtual void transmit(canlib::frame::decoded::can1::dashboard_in_t dashboard_in); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_status_t ams_slave1_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log0_t ams_slave2_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log1_t ams_slave2_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log2_t ams_slave2_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log3_t ams_slave2_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log4_t ams_slave2_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log5_t ams_slave2_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log6_t ams_slave5_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log6_t ams_slave4_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log6_t ams_slave3_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log6_t ams_slave2_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log6_t ams_slave1_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log5_t ams_slave5_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log5_t ams_slave4_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log5_t ams_slave3_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log5_t ams_slave1_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log4_t ams_slave5_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log4_t ams_slave4_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log4_t ams_slave3_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log4_t ams_slave1_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log3_t ams_slave5_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log3_t ams_slave4_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log3_t ams_slave3_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log3_t ams_slave1_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log2_t ams_slave5_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log2_t ams_slave4_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log2_t ams_slave3_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log2_t ams_slave1_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log1_t ams_slave5_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log1_t ams_slave4_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log1_t ams_slave3_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log1_t ams_slave1_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log0_t ams_slave5_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log0_t ams_slave4_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log0_t ams_slave3_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log0_t ams_slave1_log0); + virtual void transmit(canlib::frame::decoded::can1::pdu_heartbeat_t pdu_heartbeat); + virtual void transmit(canlib::frame::decoded::can1::ftcu_pneumatik_t ftcu_pneumatik); + virtual void transmit(canlib::frame::decoded::can1::acu_tx_commands_t acu_tx_commands); + virtual void transmit(canlib::frame::decoded::can1::acu_rx_commands_t acu_rx_commands); + virtual void transmit(canlib::frame::decoded::can1::acu_rx_t acu_rx); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log0_t ams_slave0_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log1_t ams_slave0_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log3_t ams_slave0_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log4_t ams_slave0_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log5_t ams_slave0_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log6_t ams_slave0_log6); + virtual void transmit(canlib::frame::decoded::can1::acu_tx_t acu_tx); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_status_t ams_slave5_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_status_t ams_slave4_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_status_t ams_slave3_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_status_t ams_slave2_status); + virtual void transmit(canlib::frame::decoded::can1::ams_error_t ams_error); + virtual void transmit(canlib::frame::decoded::can1::ftcu_cooling_t ftcu_cooling); + virtual void transmit(canlib::frame::decoded::can1::ftcu_brake_t_t ftcu_brake_t); + virtual void transmit(canlib::frame::decoded::can1::ftcu_wheelspeed_t ftcu_wheelspeed); + virtual void transmit(canlib::frame::decoded::can1::ftcu_timings_t ftcu_timings); + virtual void transmit(canlib::frame::decoded::can1::ftcu_driver_t ftcu_driver); + virtual void transmit(canlib::frame::decoded::can1::tts_rr_t tts_rr); + virtual void transmit(canlib::frame::decoded::can1::tts_rl_t tts_rl); + virtual void transmit(canlib::frame::decoded::can1::tts_fr_t tts_fr); + virtual void transmit(canlib::frame::decoded::can1::tts_fl_t tts_fl); + virtual void transmit(canlib::frame::decoded::can1::stw_param_set_t stw_param_set); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_status_t ams_slave0_status); + virtual void transmit(canlib::frame::decoded::can1::ssu_message_t ssu_message); + virtual void transmit(canlib::frame::decoded::can1::ams_status_t ams_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave_panic_t ams_slave_panic); + virtual void transmit(canlib::frame::decoded::can1::ams_in_t ams_in); + virtual void transmit(canlib::frame::decoded::can1::shunt_current_t shunt_current); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage1_t shunt_voltage1); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage2_t shunt_voltage2); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage3_t shunt_voltage3); + virtual void transmit(canlib::frame::decoded::can1::shunt_temperature_t shunt_temperature); + virtual void transmit(canlib::frame::decoded::can1::pdu_command_t pdu_command); + virtual void transmit(canlib::frame::decoded::can1::pdu_response_t pdu_response); + virtual void transmit(canlib::frame::decoded::can1::as_mission_fb_t as_mission_fb); + virtual void transmit(canlib::frame::decoded::can1::stw_mission_selected_t stw_mission_selected); + virtual void transmit(canlib::frame::decoded::can1::epsc_out_t epsc_out); + virtual void transmit(canlib::frame::decoded::can1::epsc_steering_in_t epsc_steering_in); + virtual void transmit(canlib::frame::decoded::can1::stw_buttons_t stw_buttons); + virtual void transmit(canlib::frame::decoded::can1::stw_status_t stw_status); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_1_t pdu_current_1); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_2_t pdu_current_2); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_3_t pdu_current_3); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_4_t pdu_current_4); + virtual void transmit(canlib::frame::decoded::can1::epsc_config_in_t epsc_config_in); + + virtual bool receive(int timeout_us = STANDARD_TIMEOUT); + +private: + virtual bool read(struct can_frame &frame, int timeout_usec); + + can1_inverter_velocity_t can1_inverter_velocity_frame; + can1_inverter_errors_warnings_t can1_inverter_errors_warnings_frame; + can1_inverter_torque_actual_cw_t can1_inverter_torque_actual_cw_frame; + can1_inverter_temperatur_t can1_inverter_temperatur_frame; + can1_inverter_torque_wanted_t can1_inverter_torque_wanted_frame; + can1_sdo_telemetrie_rx_node1_t can1_sdo_telemetrie_rx_node1_frame; + can1_sdo_telemetrie_rx_node2_t can1_sdo_telemetrie_rx_node2_frame; + can1_sdo_telemetrie_tx_t can1_sdo_telemetrie_tx_frame; + can1_laptop_sdo_node_t can1_laptop_sdo_node_frame; + can1_x_sens_long_lat_t can1_x_sens_long_lat_frame; + can1_x_sens_rateofturn_t can1_x_sens_rateofturn_frame; + can1_x_sens_acceleration_t can1_x_sens_acceleration_frame; + can1_x_sens_velocity_t can1_x_sens_velocity_frame; + can1_telemetrie_t can1_telemetrie_frame; + can1_override_powermap_t can1_override_powermap_frame; + can1_override_laptop_2_t can1_override_laptop_2_frame; + can1_override_epsc_cooling_t can1_override_epsc_cooling_frame; + can1_override_laptop_t can1_override_laptop_frame; + can1_apps_override_t can1_apps_override_frame; + can1_ftcu_damper_t can1_ftcu_damper_frame; + can1_ftcu_param_confirm_t can1_ftcu_param_confirm_frame; + can1_sensornode_f_10_hz_t can1_sensornode_f_10_hz_frame; + can1_sensornode_f_100_hz_1_t can1_sensornode_f_100_hz_1_frame; + can1_sensornode_f_100_hz_2_t can1_sensornode_f_100_hz_2_frame; + can1_sensornode_f_1k_hz_t can1_sensornode_f_1k_hz_frame; + can1_sensornode_r_10_hz_t can1_sensornode_r_10_hz_frame; + can1_sensornode_r_100_hz_t can1_sensornode_r_100_hz_frame; + can1_sensornode_r_1k_hz_t can1_sensornode_r_1k_hz_frame; + can1_pwm_duty_cycle_t can1_pwm_duty_cycle_frame; + can1_pwm_config_t can1_pwm_config_frame; + can1_dashboard_in_t can1_dashboard_in_frame; + can1_ams_slave1_status_t can1_ams_slave1_status_frame; + can1_ams_slave2_log0_t can1_ams_slave2_log0_frame; + can1_ams_slave2_log1_t can1_ams_slave2_log1_frame; + can1_ams_slave2_log2_t can1_ams_slave2_log2_frame; + can1_ams_slave2_log3_t can1_ams_slave2_log3_frame; + can1_ams_slave2_log4_t can1_ams_slave2_log4_frame; + can1_ams_slave2_log5_t can1_ams_slave2_log5_frame; + can1_ams_slave5_log6_t can1_ams_slave5_log6_frame; + can1_ams_slave4_log6_t can1_ams_slave4_log6_frame; + can1_ams_slave3_log6_t can1_ams_slave3_log6_frame; + can1_ams_slave2_log6_t can1_ams_slave2_log6_frame; + can1_ams_slave1_log6_t can1_ams_slave1_log6_frame; + can1_ams_slave5_log5_t can1_ams_slave5_log5_frame; + can1_ams_slave4_log5_t can1_ams_slave4_log5_frame; + can1_ams_slave3_log5_t can1_ams_slave3_log5_frame; + can1_ams_slave1_log5_t can1_ams_slave1_log5_frame; + can1_ams_slave5_log4_t can1_ams_slave5_log4_frame; + can1_ams_slave4_log4_t can1_ams_slave4_log4_frame; + can1_ams_slave3_log4_t can1_ams_slave3_log4_frame; + can1_ams_slave1_log4_t can1_ams_slave1_log4_frame; + can1_ams_slave5_log3_t can1_ams_slave5_log3_frame; + can1_ams_slave4_log3_t can1_ams_slave4_log3_frame; + can1_ams_slave3_log3_t can1_ams_slave3_log3_frame; + can1_ams_slave1_log3_t can1_ams_slave1_log3_frame; + can1_ams_slave5_log2_t can1_ams_slave5_log2_frame; + can1_ams_slave4_log2_t can1_ams_slave4_log2_frame; + can1_ams_slave3_log2_t can1_ams_slave3_log2_frame; + can1_ams_slave1_log2_t can1_ams_slave1_log2_frame; + can1_ams_slave5_log1_t can1_ams_slave5_log1_frame; + can1_ams_slave4_log1_t can1_ams_slave4_log1_frame; + can1_ams_slave3_log1_t can1_ams_slave3_log1_frame; + can1_ams_slave1_log1_t can1_ams_slave1_log1_frame; + can1_ams_slave5_log0_t can1_ams_slave5_log0_frame; + can1_ams_slave4_log0_t can1_ams_slave4_log0_frame; + can1_ams_slave3_log0_t can1_ams_slave3_log0_frame; + can1_ams_slave1_log0_t can1_ams_slave1_log0_frame; + can1_pdu_heartbeat_t can1_pdu_heartbeat_frame; + can1_ftcu_pneumatik_t can1_ftcu_pneumatik_frame; + can1_acu_tx_commands_t can1_acu_tx_commands_frame; + can1_acu_rx_commands_t can1_acu_rx_commands_frame; + can1_acu_rx_t can1_acu_rx_frame; + can1_ams_slave0_log0_t can1_ams_slave0_log0_frame; + can1_ams_slave0_log1_t can1_ams_slave0_log1_frame; + can1_ams_slave0_log3_t can1_ams_slave0_log3_frame; + can1_ams_slave0_log4_t can1_ams_slave0_log4_frame; + can1_ams_slave0_log5_t can1_ams_slave0_log5_frame; + can1_ams_slave0_log6_t can1_ams_slave0_log6_frame; + can1_acu_tx_t can1_acu_tx_frame; + can1_ams_slave5_status_t can1_ams_slave5_status_frame; + can1_ams_slave4_status_t can1_ams_slave4_status_frame; + can1_ams_slave3_status_t can1_ams_slave3_status_frame; + can1_ams_slave2_status_t can1_ams_slave2_status_frame; + can1_ams_error_t can1_ams_error_frame; + can1_ftcu_cooling_t can1_ftcu_cooling_frame; + can1_ftcu_brake_t_t can1_ftcu_brake_t_frame; + can1_ftcu_wheelspeed_t can1_ftcu_wheelspeed_frame; + can1_ftcu_timings_t can1_ftcu_timings_frame; + can1_ftcu_driver_t can1_ftcu_driver_frame; + can1_tts_rr_t can1_tts_rr_frame; + can1_tts_rl_t can1_tts_rl_frame; + can1_tts_fr_t can1_tts_fr_frame; + can1_tts_fl_t can1_tts_fl_frame; + can1_stw_param_set_t can1_stw_param_set_frame; + can1_ams_slave0_status_t can1_ams_slave0_status_frame; + can1_ssu_message_t can1_ssu_message_frame; + can1_ams_status_t can1_ams_status_frame; + can1_ams_slave_panic_t can1_ams_slave_panic_frame; + can1_ams_in_t can1_ams_in_frame; + can1_shunt_current_t can1_shunt_current_frame; + can1_shunt_voltage1_t can1_shunt_voltage1_frame; + can1_shunt_voltage2_t can1_shunt_voltage2_frame; + can1_shunt_voltage3_t can1_shunt_voltage3_frame; + can1_shunt_temperature_t can1_shunt_temperature_frame; + can1_pdu_command_t can1_pdu_command_frame; + can1_pdu_response_t can1_pdu_response_frame; + can1_as_mission_fb_t can1_as_mission_fb_frame; + can1_stw_mission_selected_t can1_stw_mission_selected_frame; + can1_epsc_out_t can1_epsc_out_frame; + can1_epsc_steering_in_t can1_epsc_steering_in_frame; + can1_stw_buttons_t can1_stw_buttons_frame; + can1_stw_status_t can1_stw_status_frame; + can1_pdu_current_1_t can1_pdu_current_1_frame; + can1_pdu_current_2_t can1_pdu_current_2_frame; + can1_pdu_current_3_t can1_pdu_current_3_frame; + can1_pdu_current_4_t can1_pdu_current_4_frame; + can1_epsc_config_in_t can1_epsc_config_in_frame; + + struct can_frame frame; + int socket_instance; +}; + +} + +#endif // _TRANSCEIVER_H_ diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/.colcon_install_layout b/ros2_ws/src/ft_can_transceiver_lib/install/.colcon_install_layout new file mode 100644 index 0000000..3aad533 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/.colcon_install_layout @@ -0,0 +1 @@ +isolated diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/COLCON_IGNORE b/ros2_ws/src/ft_can_transceiver_lib/install/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_ps1.py b/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_ps1.py new file mode 100644 index 0000000..3c6d9e8 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_ps1.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"' +FORMAT_STR_USE_ENV_VAR = '$env:{name}' +FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = '' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = '' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_sh.py b/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_sh.py new file mode 100644 index 0000000..f67eaa9 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_sh.py @@ -0,0 +1,407 @@ +# Copyright 2016-2019 Dirk Thomas +# Licensed under the Apache License, Version 2.0 + +import argparse +from collections import OrderedDict +import os +from pathlib import Path +import sys + + +FORMAT_STR_COMMENT_LINE = '# {comment}' +FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"' +FORMAT_STR_USE_ENV_VAR = '${name}' +FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"' # noqa: E501 +FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi' # noqa: E501 +FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi' # noqa: E501 + +DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate' +DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists' +DSV_TYPE_SET = 'set' +DSV_TYPE_SET_IF_UNSET = 'set-if-unset' +DSV_TYPE_SOURCE = 'source' + + +def main(argv=sys.argv[1:]): # noqa: D103 + parser = argparse.ArgumentParser( + description='Output shell commands for the packages in topological ' + 'order') + parser.add_argument( + 'primary_extension', + help='The file extension of the primary shell') + parser.add_argument( + 'additional_extension', nargs='?', + help='The additional file extension to be considered') + parser.add_argument( + '--merged-install', action='store_true', + help='All install prefixes are merged into a single location') + args = parser.parse_args(argv) + + packages = get_packages(Path(__file__).parent, args.merged_install) + + ordered_packages = order_packages(packages) + for pkg_name in ordered_packages: + if _include_comments(): + print( + FORMAT_STR_COMMENT_LINE.format_map( + {'comment': 'Package: ' + pkg_name})) + prefix = os.path.abspath(os.path.dirname(__file__)) + if not args.merged_install: + prefix = os.path.join(prefix, pkg_name) + for line in get_commands( + pkg_name, prefix, args.primary_extension, + args.additional_extension + ): + print(line) + + for line in _remove_ending_separators(): + print(line) + + +def get_packages(prefix_path, merged_install): + """ + Find packages based on colcon-specific files created during installation. + + :param Path prefix_path: The install prefix path of all packages + :param bool merged_install: The flag if the packages are all installed + directly in the prefix or if each package is installed in a subdirectory + named after the package + :returns: A mapping from the package name to the set of runtime + dependencies + :rtype: dict + """ + packages = {} + # since importing colcon_core isn't feasible here the following constant + # must match colcon_core.location.get_relative_package_index_path() + subdirectory = 'share/colcon-core/packages' + if merged_install: + # return if workspace is empty + if not (prefix_path / subdirectory).is_dir(): + return packages + # find all files in the subdirectory + for p in (prefix_path / subdirectory).iterdir(): + if not p.is_file(): + continue + if p.name.startswith('.'): + continue + add_package_runtime_dependencies(p, packages) + else: + # for each subdirectory look for the package specific file + for p in prefix_path.iterdir(): + if not p.is_dir(): + continue + if p.name.startswith('.'): + continue + p = p / subdirectory / p.name + if p.is_file(): + add_package_runtime_dependencies(p, packages) + + # remove unknown dependencies + pkg_names = set(packages.keys()) + for k in packages.keys(): + packages[k] = {d for d in packages[k] if d in pkg_names} + + return packages + + +def add_package_runtime_dependencies(path, packages): + """ + Check the path and if it exists extract the packages runtime dependencies. + + :param Path path: The resource file containing the runtime dependencies + :param dict packages: A mapping from package names to the sets of runtime + dependencies to add to + """ + content = path.read_text() + dependencies = set(content.split(os.pathsep) if content else []) + packages[path.name] = dependencies + + +def order_packages(packages): + """ + Order packages topologically. + + :param dict packages: A mapping from package name to the set of runtime + dependencies + :returns: The package names + :rtype: list + """ + # select packages with no dependencies in alphabetical order + to_be_ordered = list(packages.keys()) + ordered = [] + while to_be_ordered: + pkg_names_without_deps = [ + name for name in to_be_ordered if not packages[name]] + if not pkg_names_without_deps: + reduce_cycle_set(packages) + raise RuntimeError( + 'Circular dependency between: ' + ', '.join(sorted(packages))) + pkg_names_without_deps.sort() + pkg_name = pkg_names_without_deps[0] + to_be_ordered.remove(pkg_name) + ordered.append(pkg_name) + # remove item from dependency lists + for k in list(packages.keys()): + if pkg_name in packages[k]: + packages[k].remove(pkg_name) + return ordered + + +def reduce_cycle_set(packages): + """ + Reduce the set of packages to the ones part of the circular dependency. + + :param dict packages: A mapping from package name to the set of runtime + dependencies which is modified in place + """ + last_depended = None + while len(packages) > 0: + # get all remaining dependencies + depended = set() + for pkg_name, dependencies in packages.items(): + depended = depended.union(dependencies) + # remove all packages which are not dependent on + for name in list(packages.keys()): + if name not in depended: + del packages[name] + if last_depended: + # if remaining packages haven't changed return them + if last_depended == depended: + return packages.keys() + # otherwise reduce again + last_depended = depended + + +def _include_comments(): + # skipping comment lines when COLCON_TRACE is not set speeds up the + # processing especially on Windows + return bool(os.environ.get('COLCON_TRACE')) + + +def get_commands(pkg_name, prefix, primary_extension, additional_extension): + commands = [] + package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv') + if os.path.exists(package_dsv_path): + commands += process_dsv_file( + package_dsv_path, prefix, primary_extension, additional_extension) + return commands + + +def process_dsv_file( + dsv_path, prefix, primary_extension=None, additional_extension=None +): + commands = [] + if _include_comments(): + commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path})) + with open(dsv_path, 'r') as h: + content = h.read() + lines = content.splitlines() + + basenames = OrderedDict() + for i, line in enumerate(lines): + # skip over empty or whitespace-only lines + if not line.strip(): + continue + # skip over comments + if line.startswith('#'): + continue + try: + type_, remainder = line.split(';', 1) + except ValueError: + raise RuntimeError( + "Line %d in '%s' doesn't contain a semicolon separating the " + 'type from the arguments' % (i + 1, dsv_path)) + if type_ != DSV_TYPE_SOURCE: + # handle non-source lines + try: + commands += handle_dsv_types_except_source( + type_, remainder, prefix) + except RuntimeError as e: + raise RuntimeError( + "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e + else: + # group remaining source lines by basename + path_without_ext, ext = os.path.splitext(remainder) + if path_without_ext not in basenames: + basenames[path_without_ext] = set() + assert ext.startswith('.') + ext = ext[1:] + if ext in (primary_extension, additional_extension): + basenames[path_without_ext].add(ext) + + # add the dsv extension to each basename if the file exists + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if os.path.exists(basename + '.dsv'): + extensions.add('dsv') + + for basename, extensions in basenames.items(): + if not os.path.isabs(basename): + basename = os.path.join(prefix, basename) + if 'dsv' in extensions: + # process dsv files recursively + commands += process_dsv_file( + basename + '.dsv', prefix, primary_extension=primary_extension, + additional_extension=additional_extension) + elif primary_extension in extensions and len(extensions) == 1: + # source primary-only files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + primary_extension})] + elif additional_extension in extensions: + # source non-primary files + commands += [ + FORMAT_STR_INVOKE_SCRIPT.format_map({ + 'prefix': prefix, + 'script_path': basename + '.' + additional_extension})] + + return commands + + +def handle_dsv_types_except_source(type_, remainder, prefix): + commands = [] + if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET): + try: + env_name, value = remainder.split(';', 1) + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the value') + try_prefixed_value = os.path.join(prefix, value) if value else prefix + if os.path.exists(try_prefixed_value): + value = try_prefixed_value + if type_ == DSV_TYPE_SET: + commands += _set(env_name, value) + elif type_ == DSV_TYPE_SET_IF_UNSET: + commands += _set_if_unset(env_name, value) + else: + assert False + elif type_ in ( + DSV_TYPE_APPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE, + DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS + ): + try: + env_name_and_values = remainder.split(';') + except ValueError: + raise RuntimeError( + "doesn't contain a semicolon separating the environment name " + 'from the values') + env_name = env_name_and_values[0] + values = env_name_and_values[1:] + for value in values: + if not value: + value = prefix + elif not os.path.isabs(value): + value = os.path.join(prefix, value) + if ( + type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and + not os.path.exists(value) + ): + comment = f'skip extending {env_name} with not existing ' \ + f'path: {value}' + if _include_comments(): + commands.append( + FORMAT_STR_COMMENT_LINE.format_map({'comment': comment})) + elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE: + commands += _append_unique_value(env_name, value) + else: + commands += _prepend_unique_value(env_name, value) + else: + raise RuntimeError( + 'contains an unknown environment hook type: ' + type_) + return commands + + +env_state = {} + + +def _append_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # append even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional leading separator + extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': extend + value}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +def _prepend_unique_value(name, value): + global env_state + if name not in env_state: + if os.environ.get(name): + env_state[name] = set(os.environ[name].split(os.pathsep)) + else: + env_state[name] = set() + # prepend even if the variable has not been set yet, in case a shell script sets the + # same variable without the knowledge of this Python script. + # later _remove_ending_separators() will cleanup any unintentional trailing separator + extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value + extend}) + if value not in env_state[name]: + env_state[name].add(value) + else: + if not _include_comments(): + return [] + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +# generate commands for removing prepended underscores +def _remove_ending_separators(): + # do nothing if the shell extension does not implement the logic + if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None: + return [] + + global env_state + commands = [] + for name in env_state: + # skip variables that already had values before this script started prepending + if name in os.environ: + continue + commands += [ + FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}), + FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})] + return commands + + +def _set(name, value): + global env_state + env_state[name] = value + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + return [line] + + +def _set_if_unset(name, value): + global env_state + line = FORMAT_STR_SET_ENV_VAR.format_map( + {'name': name, 'value': value}) + if env_state.get(name, os.environ.get(name)): + line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line}) + return [line] + + +if __name__ == '__main__': # pragma: no cover + try: + rc = main() + except RuntimeError as e: + print(str(e), file=sys.stderr) + rc = 1 + sys.exit(rc) diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h new file mode 100644 index 0000000..986f62c --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h @@ -0,0 +1,24612 @@ +/** + * @file can1.h + * + * @brief This header file was generated by cantools version 40.2.3 Thu Jul 10 17:27:34 2025. + * + * @copyright Copyright (c) 2018-2019 Erik Moqvist + * + * @par License + * The MIT License (MIT) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef CAN1_H +#define CAN1_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + +#ifndef EINVAL +# define EINVAL 22 +#endif + +/* Frame ids. */ +#define CAN1_INVERTER_VELOCITY_FRAME_ID (0x776u) +#define CAN1_INVERTER_ERRORS_WARNINGS_FRAME_ID (0x780u) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_FRAME_ID (0x779u) +#define CAN1_INVERTER_TEMPERATUR_FRAME_ID (0x778u) +#define CAN1_INVERTER_TORQUE_WANTED_FRAME_ID (0x777u) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_FRAME_ID (0x733u) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_FRAME_ID (0x731u) +#define CAN1_SDO_TELEMETRIE_TX_FRAME_ID (0x732u) +#define CAN1_LAPTOP_SDO_NODE_FRAME_ID (0x730u) +#define CAN1_X_SENS_LONG_LAT_FRAME_ID (0x713u) +#define CAN1_X_SENS_RATEOFTURN_FRAME_ID (0x712u) +#define CAN1_X_SENS_ACCELERATION_FRAME_ID (0x711u) +#define CAN1_X_SENS_VELOCITY_FRAME_ID (0x714u) +#define CAN1_TELEMETRIE_FRAME_ID (0x720u) +#define CAN1_OVERRIDE_POWERMAP_FRAME_ID (0x725u) +#define CAN1_OVERRIDE_LAPTOP_2_FRAME_ID (0x724u) +#define CAN1_OVERRIDE_EPSC_COOLING_FRAME_ID (0x723u) +#define CAN1_OVERRIDE_LAPTOP_FRAME_ID (0x721u) +#define CAN1_APPS_OVERRIDE_FRAME_ID (0x722u) +#define CAN1_FTCU_DAMPER_FRAME_ID (0x103u) +#define CAN1_FTCU_PARAM_CONFIRM_FRAME_ID (0x413u) +#define CAN1_SENSORNODE_F_10_HZ_FRAME_ID (0xd1u) +#define CAN1_SENSORNODE_F_100_HZ_1_FRAME_ID (0xd3u) +#define CAN1_SENSORNODE_F_100_HZ_2_FRAME_ID (0xd5u) +#define CAN1_SENSORNODE_F_1K_HZ_FRAME_ID (0xd7u) +#define CAN1_SENSORNODE_R_10_HZ_FRAME_ID (0xd2u) +#define CAN1_SENSORNODE_R_100_HZ_FRAME_ID (0xd4u) +#define CAN1_SENSORNODE_R_1K_HZ_FRAME_ID (0xd8u) +#define CAN1_PWM_DUTY_CYCLE_FRAME_ID (0xdcu) +#define CAN1_PWM_CONFIG_FRAME_ID (0xddu) +#define CAN1_DASHBOARD_IN_FRAME_ID (0x420u) +#define CAN1_AMS_SLAVE1_STATUS_FRAME_ID (0x81u) +#define CAN1_AMS_SLAVE2_LOG0_FRAME_ID (0x620u) +#define CAN1_AMS_SLAVE2_LOG1_FRAME_ID (0x621u) +#define CAN1_AMS_SLAVE2_LOG2_FRAME_ID (0x622u) +#define CAN1_AMS_SLAVE2_LOG3_FRAME_ID (0x623u) +#define CAN1_AMS_SLAVE2_LOG4_FRAME_ID (0x624u) +#define CAN1_AMS_SLAVE2_LOG5_FRAME_ID (0x625u) +#define CAN1_AMS_SLAVE5_LOG6_FRAME_ID (0x656u) +#define CAN1_AMS_SLAVE4_LOG6_FRAME_ID (0x646u) +#define CAN1_AMS_SLAVE3_LOG6_FRAME_ID (0x636u) +#define CAN1_AMS_SLAVE2_LOG6_FRAME_ID (0x626u) +#define CAN1_AMS_SLAVE1_LOG6_FRAME_ID (0x616u) +#define CAN1_AMS_SLAVE5_LOG5_FRAME_ID (0x655u) +#define CAN1_AMS_SLAVE4_LOG5_FRAME_ID (0x645u) +#define CAN1_AMS_SLAVE3_LOG5_FRAME_ID (0x635u) +#define CAN1_AMS_SLAVE1_LOG5_FRAME_ID (0x615u) +#define CAN1_AMS_SLAVE5_LOG4_FRAME_ID (0x654u) +#define CAN1_AMS_SLAVE4_LOG4_FRAME_ID (0x644u) +#define CAN1_AMS_SLAVE3_LOG4_FRAME_ID (0x634u) +#define CAN1_AMS_SLAVE1_LOG4_FRAME_ID (0x614u) +#define CAN1_AMS_SLAVE5_LOG3_FRAME_ID (0x653u) +#define CAN1_AMS_SLAVE4_LOG3_FRAME_ID (0x643u) +#define CAN1_AMS_SLAVE3_LOG3_FRAME_ID (0x633u) +#define CAN1_AMS_SLAVE1_LOG3_FRAME_ID (0x613u) +#define CAN1_AMS_SLAVE5_LOG2_FRAME_ID (0x652u) +#define CAN1_AMS_SLAVE4_LOG2_FRAME_ID (0x642u) +#define CAN1_AMS_SLAVE3_LOG2_FRAME_ID (0x632u) +#define CAN1_AMS_SLAVE1_LOG2_FRAME_ID (0x612u) +#define CAN1_AMS_SLAVE5_LOG1_FRAME_ID (0x651u) +#define CAN1_AMS_SLAVE4_LOG1_FRAME_ID (0x641u) +#define CAN1_AMS_SLAVE3_LOG1_FRAME_ID (0x631u) +#define CAN1_AMS_SLAVE1_LOG1_FRAME_ID (0x611u) +#define CAN1_AMS_SLAVE5_LOG0_FRAME_ID (0x650u) +#define CAN1_AMS_SLAVE4_LOG0_FRAME_ID (0x640u) +#define CAN1_AMS_SLAVE3_LOG0_FRAME_ID (0x630u) +#define CAN1_AMS_SLAVE1_LOG0_FRAME_ID (0x610u) +#define CAN1_PDU_HEARTBEAT_FRAME_ID (0xceu) +#define CAN1_FTCU_PNEUMATIK_FRAME_ID (0x110u) +#define CAN1_ACU_TX_COMMANDS_FRAME_ID (0xe3u) +#define CAN1_ACU_RX_COMMANDS_FRAME_ID (0xe2u) +#define CAN1_ACU_RX_FRAME_ID (0xe1u) +#define CAN1_AMS_SLAVE0_LOG0_FRAME_ID (0x600u) +#define CAN1_AMS_SLAVE0_LOG1_FRAME_ID (0x601u) +#define CAN1_AMS_SLAVE0_LOG3_FRAME_ID (0x603u) +#define CAN1_AMS_SLAVE0_LOG4_FRAME_ID (0x604u) +#define CAN1_AMS_SLAVE0_LOG5_FRAME_ID (0x605u) +#define CAN1_AMS_SLAVE0_LOG6_FRAME_ID (0x606u) +#define CAN1_ACU_TX_FRAME_ID (0xe0u) +#define CAN1_AMS_SLAVE5_STATUS_FRAME_ID (0x85u) +#define CAN1_AMS_SLAVE4_STATUS_FRAME_ID (0x84u) +#define CAN1_AMS_SLAVE3_STATUS_FRAME_ID (0x83u) +#define CAN1_AMS_SLAVE2_STATUS_FRAME_ID (0x82u) +#define CAN1_AMS_ERROR_FRAME_ID (0x0cu) +#define CAN1_FTCU_COOLING_FRAME_ID (0x107u) +#define CAN1_FTCU_BRAKE_T_FRAME_ID (0x105u) +#define CAN1_FTCU_WHEELSPEED_FRAME_ID (0x104u) +#define CAN1_FTCU_TIMINGS_FRAME_ID (0x102u) +#define CAN1_FTCU_DRIVER_FRAME_ID (0x111u) +#define CAN1_TTS_RR_FRAME_ID (0x704u) +#define CAN1_TTS_RL_FRAME_ID (0x703u) +#define CAN1_TTS_FR_FRAME_ID (0x702u) +#define CAN1_TTS_FL_FRAME_ID (0x701u) +#define CAN1_STW_PARAM_SET_FRAME_ID (0x402u) +#define CAN1_AMS_SLAVE0_STATUS_FRAME_ID (0x80u) +#define CAN1_SSU_MESSAGE_FRAME_ID (0x500u) +#define CAN1_AMS_STATUS_FRAME_ID (0x0au) +#define CAN1_AMS_SLAVE_PANIC_FRAME_ID (0x09u) +#define CAN1_AMS_IN_FRAME_ID (0x0bu) +#define CAN1_SHUNT_CURRENT_FRAME_ID (0x521u) +#define CAN1_SHUNT_VOLTAGE1_FRAME_ID (0x522u) +#define CAN1_SHUNT_VOLTAGE2_FRAME_ID (0x523u) +#define CAN1_SHUNT_VOLTAGE3_FRAME_ID (0x524u) +#define CAN1_SHUNT_TEMPERATURE_FRAME_ID (0x525u) +#define CAN1_PDU_COMMAND_FRAME_ID (0xc8u) +#define CAN1_PDU_RESPONSE_FRAME_ID (0xc9u) +#define CAN1_AS_MISSION_FB_FRAME_ID (0x410u) +#define CAN1_STW_MISSION_SELECTED_FRAME_ID (0x400u) +#define CAN1_EPSC_OUT_FRAME_ID (0x125u) +#define CAN1_EPSC_STEERING_IN_FRAME_ID (0x123u) +#define CAN1_STW_BUTTONS_FRAME_ID (0x401u) +#define CAN1_STW_STATUS_FRAME_ID (0x412u) +#define CAN1_PDU_CURRENT_1_FRAME_ID (0xcau) +#define CAN1_PDU_CURRENT_2_FRAME_ID (0xcbu) +#define CAN1_PDU_CURRENT_3_FRAME_ID (0xccu) +#define CAN1_PDU_CURRENT_4_FRAME_ID (0xcdu) +#define CAN1_EPSC_CONFIG_IN_FRAME_ID (0x124u) + +/* Frame lengths in bytes. */ +#define CAN1_INVERTER_VELOCITY_LENGTH (8u) +#define CAN1_INVERTER_ERRORS_WARNINGS_LENGTH (8u) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_LENGTH (8u) +#define CAN1_INVERTER_TEMPERATUR_LENGTH (8u) +#define CAN1_INVERTER_TORQUE_WANTED_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_LENGTH (8u) +#define CAN1_SDO_TELEMETRIE_TX_LENGTH (8u) +#define CAN1_LAPTOP_SDO_NODE_LENGTH (1u) +#define CAN1_X_SENS_LONG_LAT_LENGTH (8u) +#define CAN1_X_SENS_RATEOFTURN_LENGTH (6u) +#define CAN1_X_SENS_ACCELERATION_LENGTH (6u) +#define CAN1_X_SENS_VELOCITY_LENGTH (6u) +#define CAN1_TELEMETRIE_LENGTH (7u) +#define CAN1_OVERRIDE_POWERMAP_LENGTH (8u) +#define CAN1_OVERRIDE_LAPTOP_2_LENGTH (5u) +#define CAN1_OVERRIDE_EPSC_COOLING_LENGTH (8u) +#define CAN1_OVERRIDE_LAPTOP_LENGTH (3u) +#define CAN1_APPS_OVERRIDE_LENGTH (5u) +#define CAN1_FTCU_DAMPER_LENGTH (8u) +#define CAN1_FTCU_PARAM_CONFIRM_LENGTH (1u) +#define CAN1_SENSORNODE_F_10_HZ_LENGTH (3u) +#define CAN1_SENSORNODE_F_100_HZ_1_LENGTH (7u) +#define CAN1_SENSORNODE_F_100_HZ_2_LENGTH (3u) +#define CAN1_SENSORNODE_F_1K_HZ_LENGTH (3u) +#define CAN1_SENSORNODE_R_10_HZ_LENGTH (7u) +#define CAN1_SENSORNODE_R_100_HZ_LENGTH (8u) +#define CAN1_SENSORNODE_R_1K_HZ_LENGTH (3u) +#define CAN1_PWM_DUTY_CYCLE_LENGTH (7u) +#define CAN1_PWM_CONFIG_LENGTH (6u) +#define CAN1_DASHBOARD_IN_LENGTH (1u) +#define CAN1_AMS_SLAVE1_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE2_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE2_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG6_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE4_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE3_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE1_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE5_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG2_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE5_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE4_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE3_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE1_LOG0_LENGTH (8u) +#define CAN1_PDU_HEARTBEAT_LENGTH (1u) +#define CAN1_FTCU_PNEUMATIK_LENGTH (8u) +#define CAN1_ACU_TX_COMMANDS_LENGTH (6u) +#define CAN1_ACU_RX_COMMANDS_LENGTH (4u) +#define CAN1_ACU_RX_LENGTH (3u) +#define CAN1_AMS_SLAVE0_LOG0_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG1_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG3_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG4_LENGTH (6u) +#define CAN1_AMS_SLAVE0_LOG5_LENGTH (8u) +#define CAN1_AMS_SLAVE0_LOG6_LENGTH (8u) +#define CAN1_ACU_TX_LENGTH (2u) +#define CAN1_AMS_SLAVE5_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE4_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE3_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE2_STATUS_LENGTH (8u) +#define CAN1_AMS_ERROR_LENGTH (2u) +#define CAN1_FTCU_COOLING_LENGTH (8u) +#define CAN1_FTCU_BRAKE_T_LENGTH (8u) +#define CAN1_FTCU_WHEELSPEED_LENGTH (8u) +#define CAN1_FTCU_TIMINGS_LENGTH (8u) +#define CAN1_FTCU_DRIVER_LENGTH (8u) +#define CAN1_TTS_RR_LENGTH (8u) +#define CAN1_TTS_RL_LENGTH (8u) +#define CAN1_TTS_FR_LENGTH (8u) +#define CAN1_TTS_FL_LENGTH (8u) +#define CAN1_STW_PARAM_SET_LENGTH (6u) +#define CAN1_AMS_SLAVE0_STATUS_LENGTH (8u) +#define CAN1_SSU_MESSAGE_LENGTH (4u) +#define CAN1_AMS_STATUS_LENGTH (8u) +#define CAN1_AMS_SLAVE_PANIC_LENGTH (8u) +#define CAN1_AMS_IN_LENGTH (1u) +#define CAN1_SHUNT_CURRENT_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE1_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE2_LENGTH (6u) +#define CAN1_SHUNT_VOLTAGE3_LENGTH (6u) +#define CAN1_SHUNT_TEMPERATURE_LENGTH (6u) +#define CAN1_PDU_COMMAND_LENGTH (7u) +#define CAN1_PDU_RESPONSE_LENGTH (7u) +#define CAN1_AS_MISSION_FB_LENGTH (1u) +#define CAN1_STW_MISSION_SELECTED_LENGTH (1u) +#define CAN1_EPSC_OUT_LENGTH (8u) +#define CAN1_EPSC_STEERING_IN_LENGTH (2u) +#define CAN1_STW_BUTTONS_LENGTH (1u) +#define CAN1_STW_STATUS_LENGTH (7u) +#define CAN1_PDU_CURRENT_1_LENGTH (8u) +#define CAN1_PDU_CURRENT_2_LENGTH (8u) +#define CAN1_PDU_CURRENT_3_LENGTH (8u) +#define CAN1_PDU_CURRENT_4_LENGTH (8u) +#define CAN1_EPSC_CONFIG_IN_LENGTH (6u) + +/* Extended or standard frame types. */ +#define CAN1_INVERTER_VELOCITY_IS_EXTENDED (0) +#define CAN1_INVERTER_ERRORS_WARNINGS_IS_EXTENDED (0) +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_IS_EXTENDED (0) +#define CAN1_INVERTER_TEMPERATUR_IS_EXTENDED (0) +#define CAN1_INVERTER_TORQUE_WANTED_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_RX_NODE1_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_RX_NODE2_IS_EXTENDED (0) +#define CAN1_SDO_TELEMETRIE_TX_IS_EXTENDED (0) +#define CAN1_LAPTOP_SDO_NODE_IS_EXTENDED (0) +#define CAN1_X_SENS_LONG_LAT_IS_EXTENDED (0) +#define CAN1_X_SENS_RATEOFTURN_IS_EXTENDED (0) +#define CAN1_X_SENS_ACCELERATION_IS_EXTENDED (0) +#define CAN1_X_SENS_VELOCITY_IS_EXTENDED (0) +#define CAN1_TELEMETRIE_IS_EXTENDED (0) +#define CAN1_OVERRIDE_POWERMAP_IS_EXTENDED (0) +#define CAN1_OVERRIDE_LAPTOP_2_IS_EXTENDED (0) +#define CAN1_OVERRIDE_EPSC_COOLING_IS_EXTENDED (0) +#define CAN1_OVERRIDE_LAPTOP_IS_EXTENDED (0) +#define CAN1_APPS_OVERRIDE_IS_EXTENDED (0) +#define CAN1_FTCU_DAMPER_IS_EXTENDED (0) +#define CAN1_FTCU_PARAM_CONFIRM_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_10_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_100_HZ_1_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_100_HZ_2_IS_EXTENDED (0) +#define CAN1_SENSORNODE_F_1K_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_10_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_100_HZ_IS_EXTENDED (0) +#define CAN1_SENSORNODE_R_1K_HZ_IS_EXTENDED (0) +#define CAN1_PWM_DUTY_CYCLE_IS_EXTENDED (0) +#define CAN1_PWM_CONFIG_IS_EXTENDED (0) +#define CAN1_DASHBOARD_IN_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG6_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG2_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE1_LOG0_IS_EXTENDED (0) +#define CAN1_PDU_HEARTBEAT_IS_EXTENDED (0) +#define CAN1_FTCU_PNEUMATIK_IS_EXTENDED (0) +#define CAN1_ACU_TX_COMMANDS_IS_EXTENDED (0) +#define CAN1_ACU_RX_COMMANDS_IS_EXTENDED (0) +#define CAN1_ACU_RX_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG0_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG1_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG3_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG4_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG5_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_LOG6_IS_EXTENDED (0) +#define CAN1_ACU_TX_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE5_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE4_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE3_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE2_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_ERROR_IS_EXTENDED (0) +#define CAN1_FTCU_COOLING_IS_EXTENDED (0) +#define CAN1_FTCU_BRAKE_T_IS_EXTENDED (0) +#define CAN1_FTCU_WHEELSPEED_IS_EXTENDED (0) +#define CAN1_FTCU_TIMINGS_IS_EXTENDED (0) +#define CAN1_FTCU_DRIVER_IS_EXTENDED (0) +#define CAN1_TTS_RR_IS_EXTENDED (0) +#define CAN1_TTS_RL_IS_EXTENDED (0) +#define CAN1_TTS_FR_IS_EXTENDED (0) +#define CAN1_TTS_FL_IS_EXTENDED (0) +#define CAN1_STW_PARAM_SET_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE0_STATUS_IS_EXTENDED (0) +#define CAN1_SSU_MESSAGE_IS_EXTENDED (0) +#define CAN1_AMS_STATUS_IS_EXTENDED (0) +#define CAN1_AMS_SLAVE_PANIC_IS_EXTENDED (0) +#define CAN1_AMS_IN_IS_EXTENDED (0) +#define CAN1_SHUNT_CURRENT_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE1_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE2_IS_EXTENDED (0) +#define CAN1_SHUNT_VOLTAGE3_IS_EXTENDED (0) +#define CAN1_SHUNT_TEMPERATURE_IS_EXTENDED (0) +#define CAN1_PDU_COMMAND_IS_EXTENDED (0) +#define CAN1_PDU_RESPONSE_IS_EXTENDED (0) +#define CAN1_AS_MISSION_FB_IS_EXTENDED (0) +#define CAN1_STW_MISSION_SELECTED_IS_EXTENDED (0) +#define CAN1_EPSC_OUT_IS_EXTENDED (0) +#define CAN1_EPSC_STEERING_IN_IS_EXTENDED (0) +#define CAN1_STW_BUTTONS_IS_EXTENDED (0) +#define CAN1_STW_STATUS_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_1_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_2_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_3_IS_EXTENDED (0) +#define CAN1_PDU_CURRENT_4_IS_EXTENDED (0) +#define CAN1_EPSC_CONFIG_IN_IS_EXTENDED (0) + +/* Frame cycle times in milliseconds. */ + + +/* Signal choices. */ +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_NONE_CHOICE (0) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SLAVE__TIMEOUT_CHOICE (1) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SLAVE__PANIC_CHOICE (2) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__TIMEOUT_CHOICE (3) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__OVERCURRENT_CHOICE (4) +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_SHUNT__OVERTEMPERATURE_CHOICE (5) + +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_SPEED_LIMIT_CHOICE (0u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TORQUE__LIMIT_CHOICE (1u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_POWER_LIMIT_CHOICE (2u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_DISCIPLINE_CHOICE (3u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TV_ON_CHOICE (4u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_ON_CHOICE (5u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_REKU_ON_CHOICE (6u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_P_CHOICE (7u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_I_CHOICE (8u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_MUMAX_CHOICE (9u) +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_TC_SLIPREF_CHOICE (10u) + +#define CAN1_AMS_STATUS_AMS_STATE_INACTIVE_CHOICE (0u) +#define CAN1_AMS_STATUS_AMS_STATE_ACTIVE_CHOICE (1u) +#define CAN1_AMS_STATUS_AMS_STATE_PRECHARGE_CHOICE (2u) +#define CAN1_AMS_STATUS_AMS_STATE_DISCHARGE_CHOICE (3u) +#define CAN1_AMS_STATUS_AMS_STATE_ERROR_CHOICE (4u) + +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OVERTEMPERATURE_CHOICE (0u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_UNDERTEMPERATURE_CHOICE (1u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OVERVOLTAGE_CHOICE (2u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_UNDERVOLTAGE_CHOICE (3u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_TOO_FEW_TEMP_SENSORS_CHOICE (4u) +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_OPEN_CELL_CONNECTION_CHOICE (5u) + +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_ACCELERATION_CHOICE (1u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_SKIDPAD_CHOICE (2u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_TRACKDRIVE_CHOICE (3u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_BRAKETEST_CHOICE (4u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_INSPECTION_CHOICE (5u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_AUTOCROSS_CHOICE (6u) +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_MANUAL_CHOICE (7u) + +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_ACCELERATION_CHOICE (1u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_SKIDPAD_CHOICE (2u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_TRACKDRIVE_CHOICE (3u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_BRAKETEST_CHOICE (4u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_INSPECTION_CHOICE (5u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_AUTOCROSS_CHOICE (6u) +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_MANUAL_CHOICE (7u) + +#define CAN1_STW_STATUS_R2_D_PROGRESS_NONE_CHOICE (0u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_TSMS_CHOICE (1u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_TS_ACTIVE_CHOICE (2u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_RESETTING_NODES_CHOICE (3u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_RESETTING_COMMS_CHOICE (4u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_WAITING_INIT_CHOICE (5u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_STAGE1_CHOICE (6u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_STAGE2_CHOICE (7u) +#define CAN1_STW_STATUS_R2_D_PROGRESS_INIT_SUCCESS_CHOICE (15u) + +#define CAN1_STW_STATUS_AS_STATE_STW_OFF_CHOICE (0u) +#define CAN1_STW_STATUS_AS_STATE_STW_MANUAL_CHOICE (1u) +#define CAN1_STW_STATUS_AS_STATE_STW_READY_CHOICE (2u) +#define CAN1_STW_STATUS_AS_STATE_STW_DRIVING_CHOICE (3u) +#define CAN1_STW_STATUS_AS_STATE_STW_FINISHED_CHOICE (4u) +#define CAN1_STW_STATUS_AS_STATE_STW_EMERGENCY_CHOICE (5u) + +#define CAN1_STW_STATUS_INI_CHK_STATE_START_CHOICE (0u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WD_CHECK_CHOICE (1u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WD_OK_CHOICE (2u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ASB_CHECK_1_CHOICE (3u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ASB_CHECK_2_CHOICE (4u) +#define CAN1_STW_STATUS_INI_CHK_STATE_WAIT_TS_CHOICE (5u) +#define CAN1_STW_STATUS_INI_CHK_STATE_EBS_CHECK_A_CHOICE (6u) +#define CAN1_STW_STATUS_INI_CHK_STATE_EBS_CHECK_B_CHOICE (7u) +#define CAN1_STW_STATUS_INI_CHK_STATE_DONE_CHOICE (8u) +#define CAN1_STW_STATUS_INI_CHK_STATE_ERROR_CHOICE (9u) + +/* Frame Names. */ +#define CAN1_INVERTER_VELOCITY_NAME "Inverter_Velocity" +#define CAN1_INVERTER_ERRORS_WARNINGS_NAME "Inverter_Errors_Warnings" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_NAME "Inverter_Torque_Actual_CW" +#define CAN1_INVERTER_TEMPERATUR_NAME "Inverter_Temperatur" +#define CAN1_INVERTER_TORQUE_WANTED_NAME "Inverter_Torque_wanted" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_NAME "SDO_Telemetrie_Rx_Node1" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_NAME "SDO_Telemetrie_Rx_Node2" +#define CAN1_SDO_TELEMETRIE_TX_NAME "SDO_Telemetrie_Tx" +#define CAN1_LAPTOP_SDO_NODE_NAME "Laptop_SDO_Node" +#define CAN1_X_SENS_LONG_LAT_NAME "XSens_LongLat" +#define CAN1_X_SENS_RATEOFTURN_NAME "XSens_rateofturn" +#define CAN1_X_SENS_ACCELERATION_NAME "XSens_Acceleration" +#define CAN1_X_SENS_VELOCITY_NAME "XSens_Velocity" +#define CAN1_TELEMETRIE_NAME "Telemetrie" +#define CAN1_OVERRIDE_POWERMAP_NAME "Override_Powermap" +#define CAN1_OVERRIDE_LAPTOP_2_NAME "Override_Laptop_2" +#define CAN1_OVERRIDE_EPSC_COOLING_NAME "Override_EPSC_Cooling" +#define CAN1_OVERRIDE_LAPTOP_NAME "Override_Laptop" +#define CAN1_APPS_OVERRIDE_NAME "APPS_Override" +#define CAN1_FTCU_DAMPER_NAME "FTCU_Damper" +#define CAN1_FTCU_PARAM_CONFIRM_NAME "FTCU_ParamConfirm" +#define CAN1_SENSORNODE_F_10_HZ_NAME "Sensornode_F_10Hz" +#define CAN1_SENSORNODE_F_100_HZ_1_NAME "Sensornode_F_100Hz_1" +#define CAN1_SENSORNODE_F_100_HZ_2_NAME "Sensornode_F_100Hz_2" +#define CAN1_SENSORNODE_F_1K_HZ_NAME "Sensornode_F_1kHz" +#define CAN1_SENSORNODE_R_10_HZ_NAME "Sensornode_R_10Hz" +#define CAN1_SENSORNODE_R_100_HZ_NAME "Sensornode_R_100Hz" +#define CAN1_SENSORNODE_R_1K_HZ_NAME "Sensornode_R_1kHz" +#define CAN1_PWM_DUTY_CYCLE_NAME "PWM_DutyCycle" +#define CAN1_PWM_CONFIG_NAME "PWM_Config" +#define CAN1_DASHBOARD_IN_NAME "Dashboard_In" +#define CAN1_AMS_SLAVE1_STATUS_NAME "AMS_Slave1Status" +#define CAN1_AMS_SLAVE2_LOG0_NAME "AMS_Slave2_Log0" +#define CAN1_AMS_SLAVE2_LOG1_NAME "AMS_Slave2_Log1" +#define CAN1_AMS_SLAVE2_LOG2_NAME "AMS_Slave2_Log2" +#define CAN1_AMS_SLAVE2_LOG3_NAME "AMS_Slave2_Log3" +#define CAN1_AMS_SLAVE2_LOG4_NAME "AMS_Slave2_Log4" +#define CAN1_AMS_SLAVE2_LOG5_NAME "AMS_Slave2_Log5" +#define CAN1_AMS_SLAVE5_LOG6_NAME "AMS_Slave5_Log6" +#define CAN1_AMS_SLAVE4_LOG6_NAME "AMS_Slave4_Log6" +#define CAN1_AMS_SLAVE3_LOG6_NAME "AMS_Slave3_Log6" +#define CAN1_AMS_SLAVE2_LOG6_NAME "AMS_Slave2_Log6" +#define CAN1_AMS_SLAVE1_LOG6_NAME "AMS_Slave1_Log6" +#define CAN1_AMS_SLAVE5_LOG5_NAME "AMS_Slave5_Log5" +#define CAN1_AMS_SLAVE4_LOG5_NAME "AMS_Slave4_Log5" +#define CAN1_AMS_SLAVE3_LOG5_NAME "AMS_Slave3_Log5" +#define CAN1_AMS_SLAVE1_LOG5_NAME "AMS_Slave1_Log5" +#define CAN1_AMS_SLAVE5_LOG4_NAME "AMS_Slave5_Log4" +#define CAN1_AMS_SLAVE4_LOG4_NAME "AMS_Slave4_Log4" +#define CAN1_AMS_SLAVE3_LOG4_NAME "AMS_Slave3_Log4" +#define CAN1_AMS_SLAVE1_LOG4_NAME "AMS_Slave1_Log4" +#define CAN1_AMS_SLAVE5_LOG3_NAME "AMS_Slave5_Log3" +#define CAN1_AMS_SLAVE4_LOG3_NAME "AMS_Slave4_Log3" +#define CAN1_AMS_SLAVE3_LOG3_NAME "AMS_Slave3_Log3" +#define CAN1_AMS_SLAVE1_LOG3_NAME "AMS_Slave1_Log3" +#define CAN1_AMS_SLAVE5_LOG2_NAME "AMS_Slave5_Log2" +#define CAN1_AMS_SLAVE4_LOG2_NAME "AMS_Slave4_Log2" +#define CAN1_AMS_SLAVE3_LOG2_NAME "AMS_Slave3_Log2" +#define CAN1_AMS_SLAVE1_LOG2_NAME "AMS_Slave1_Log2" +#define CAN1_AMS_SLAVE5_LOG1_NAME "AMS_Slave5_Log1" +#define CAN1_AMS_SLAVE4_LOG1_NAME "AMS_Slave4_Log1" +#define CAN1_AMS_SLAVE3_LOG1_NAME "AMS_Slave3_Log1" +#define CAN1_AMS_SLAVE1_LOG1_NAME "AMS_Slave1_Log1" +#define CAN1_AMS_SLAVE5_LOG0_NAME "AMS_Slave5_Log0" +#define CAN1_AMS_SLAVE4_LOG0_NAME "AMS_Slave4_Log0" +#define CAN1_AMS_SLAVE3_LOG0_NAME "AMS_Slave3_Log0" +#define CAN1_AMS_SLAVE1_LOG0_NAME "AMS_Slave1_Log0" +#define CAN1_PDU_HEARTBEAT_NAME "PDU_Heartbeat" +#define CAN1_FTCU_PNEUMATIK_NAME "FTCU_Pneumatik" +#define CAN1_ACU_TX_COMMANDS_NAME "ACU_TX_Commands" +#define CAN1_ACU_RX_COMMANDS_NAME "ACU_RX_Commands" +#define CAN1_ACU_RX_NAME "ACU_RX" +#define CAN1_AMS_SLAVE0_LOG0_NAME "AMS_Slave0_Log0" +#define CAN1_AMS_SLAVE0_LOG1_NAME "AMS_Slave0_Log1" +#define CAN1_AMS_SLAVE0_LOG3_NAME "AMS_Slave0_Log3" +#define CAN1_AMS_SLAVE0_LOG4_NAME "AMS_Slave0_Log4" +#define CAN1_AMS_SLAVE0_LOG5_NAME "AMS_Slave0_Log5" +#define CAN1_AMS_SLAVE0_LOG6_NAME "AMS_Slave0_Log6" +#define CAN1_ACU_TX_NAME "ACU_TX" +#define CAN1_AMS_SLAVE5_STATUS_NAME "AMS_Slave5Status" +#define CAN1_AMS_SLAVE4_STATUS_NAME "AMS_Slave4Status" +#define CAN1_AMS_SLAVE3_STATUS_NAME "AMS_Slave3Status" +#define CAN1_AMS_SLAVE2_STATUS_NAME "AMS_Slave2Status" +#define CAN1_AMS_ERROR_NAME "AMS_Error" +#define CAN1_FTCU_COOLING_NAME "FTCU_Cooling" +#define CAN1_FTCU_BRAKE_T_NAME "FTCU_BrakeT" +#define CAN1_FTCU_WHEELSPEED_NAME "FTCU_Wheelspeed" +#define CAN1_FTCU_TIMINGS_NAME "FTCU_Timings" +#define CAN1_FTCU_DRIVER_NAME "FTCU_Driver" +#define CAN1_TTS_RR_NAME "TTS_RR" +#define CAN1_TTS_RL_NAME "TTS_RL" +#define CAN1_TTS_FR_NAME "TTS_FR" +#define CAN1_TTS_FL_NAME "TTS_FL" +#define CAN1_STW_PARAM_SET_NAME "STW_Param_Set" +#define CAN1_AMS_SLAVE0_STATUS_NAME "AMS_Slave0Status" +#define CAN1_SSU_MESSAGE_NAME "SSU_Message" +#define CAN1_AMS_STATUS_NAME "AMS_Status" +#define CAN1_AMS_SLAVE_PANIC_NAME "AMS_SlavePanic" +#define CAN1_AMS_IN_NAME "AMS_In" +#define CAN1_SHUNT_CURRENT_NAME "Shunt_Current" +#define CAN1_SHUNT_VOLTAGE1_NAME "Shunt_Voltage1" +#define CAN1_SHUNT_VOLTAGE2_NAME "Shunt_Voltage2" +#define CAN1_SHUNT_VOLTAGE3_NAME "Shunt_Voltage3" +#define CAN1_SHUNT_TEMPERATURE_NAME "Shunt_Temperature" +#define CAN1_PDU_COMMAND_NAME "PDU_Command" +#define CAN1_PDU_RESPONSE_NAME "PDU_Response" +#define CAN1_AS_MISSION_FB_NAME "AS_Mission_fb" +#define CAN1_STW_MISSION_SELECTED_NAME "STW_mission_selected" +#define CAN1_EPSC_OUT_NAME "EPSC_out" +#define CAN1_EPSC_STEERING_IN_NAME "EPSC_Steering_In" +#define CAN1_STW_BUTTONS_NAME "STW_buttons" +#define CAN1_STW_STATUS_NAME "STW_status" +#define CAN1_PDU_CURRENT_1_NAME "PDU_Current_1" +#define CAN1_PDU_CURRENT_2_NAME "PDU_Current_2" +#define CAN1_PDU_CURRENT_3_NAME "PDU_Current_3" +#define CAN1_PDU_CURRENT_4_NAME "PDU_Current_4" +#define CAN1_EPSC_CONFIG_IN_NAME "EPSC_Config_In" + +/* Signal Names. */ +#define CAN1_INVERTER_VELOCITY_INVERTER_1_VELOCITY_NAME "Inverter_1_Velocity" +#define CAN1_INVERTER_VELOCITY_INVERTER_2_VELOCITY_NAME "Inverter_2_Velocity" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_1_ERRORS_NAME "Inverter_1_Errors" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_1_WARNINGS_NAME "Inverter_1_Warnings" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_2_ERRORS_NAME "Inverter_2_Errors" +#define CAN1_INVERTER_ERRORS_WARNINGS_INVERTER_2_WARNINGS_NAME "Inverter_2_Warnings" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_1_CONTROL_WORD_NAME "Inverter_1_ControlWord" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_1_TORQUE_ACTUAL_NAME "Inverter_1_Torque_Actual" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_2_CONTROL_WORD_NAME "Inverter_2_ControlWord" +#define CAN1_INVERTER_TORQUE_ACTUAL_CW_INVERTER_2_TORQUE_ACTUAL_NAME "Inverter_2_Torque_Actual" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_1_TEMP_INV_NAME "Inverter_1_Temp_Inv" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_1_TEMP_MOT_NAME "Inverter_1_Temp_Mot" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_2_TEMP_INV_NAME "Inverter_2_Temp_Inv" +#define CAN1_INVERTER_TEMPERATUR_INVERTER_2_TEMP_MOT_NAME "Inverter_2_Temp_Mot" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_1_TORQUE_DEMANDED_NAME "Inverter_1_Torque_Demanded" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_2_TORQUE_DEMANDED_NAME "Inverter_2_Torque_Demanded" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_1_TORQUE_DESIRED_NAME "Inverter_1_Torque_Desired" +#define CAN1_INVERTER_TORQUE_WANTED_INVERTER_2_TORQUE_DESIRED_NAME "Inverter_2_Torque_Desired" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_RX_NODE1_SDO_DATA_NAME "SDO_data" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_RX_NODE2_SDO_DATA_NAME "SDO_data" +#define CAN1_SDO_TELEMETRIE_TX_SDO_COMMAND_BYTE_NAME "SDO_command_byte" +#define CAN1_SDO_TELEMETRIE_TX_SDO_OD_INDEX_NAME "SDO_OD_index" +#define CAN1_SDO_TELEMETRIE_TX_SDO_OD_SUBINDEX_NAME "SDO_OD_subindex" +#define CAN1_SDO_TELEMETRIE_TX_SDO_DATA_NAME "SDO_data" +#define CAN1_LAPTOP_SDO_NODE_NODE_ID_SDO_NAME "Node_ID_SDO" +#define CAN1_X_SENS_LONG_LAT_X_SENS_LATITUDE_NAME "XSens_latitude" +#define CAN1_X_SENS_LONG_LAT_X_SENS_LONGITUDE_NAME "XSens_longitude" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GYR_X_NAME "XSens_gyrX" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GY_Y_NAME "XSens_gyY" +#define CAN1_X_SENS_RATEOFTURN_X_SENS_GY_Z_NAME "XSens_gyZ" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_X_NAME "XSens_accX" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_Y_NAME "XSens_accY" +#define CAN1_X_SENS_ACCELERATION_X_SENS_ACC_Z_NAME "XSens_accZ" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_X_NAME "XSens_velX" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_Y_NAME "XSens_velY" +#define CAN1_X_SENS_VELOCITY_X_SENS_VEL_Z_NAME "XSens_velZ" +#define CAN1_TELEMETRIE_INI_CHECK_ERROR_STATE_NAME "Ini_Check_error_State" +#define CAN1_TELEMETRIE_POWERMAP_NAME "Powermap" +#define CAN1_TELEMETRIE_APPS_OK_NAME "APPS_ok" +#define CAN1_TELEMETRIE_BRAKE_OK_NAME "Brake_ok" +#define CAN1_TELEMETRIE_ALLOW_TORQUE_NAME "Allow_Torque" +#define CAN1_TELEMETRIE_ASP_OK_NAME "ASP_ok" +#define CAN1_TELEMETRIE_PRESSURE_SENSOR_OK_NAME "Pressure_Sensor_ok" +#define CAN1_TELEMETRIE_TORQUE_VECTORING_ON_NAME "Torque_Vectoring_on" +#define CAN1_TELEMETRIE_REKU_ON_NAME "Reku_on" +#define CAN1_TELEMETRIE_TRACTION_CONTROL_ON_NAME "Traction_Control_on" +#define CAN1_TELEMETRIE_TS_DEACTIVATE_NAME "TS_deactivate" +#define CAN1_TELEMETRIE_TORQUE_LIMIT_NAME "Torque_Limit" +#define CAN1_TELEMETRIE_POWER_LIMIT_NAME "Power_Limit" +#define CAN1_TELEMETRIE_TORQUE_LIMIT_DYNAMISCH_NAME "Torque_Limit_dynamisch" +#define CAN1_TELEMETRIE_TORQUE_OHNE_LIMIT_L_NAME "Torque_ohne_Limit_L" +#define CAN1_TELEMETRIE_TORQUE_OHNE_LIMIT_R_NAME "Torque_ohne_Limit_R" +#define CAN1_OVERRIDE_POWERMAP_LAPTOPP_POWER_MAP_NAME "Laptopp_Power_Map" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_REKU_NAME "Laptop_Reku" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_NAME "Laptop_TC" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TV_NAME "Laptop_TV" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_SLIPREF_NAME "Laptop_slipref" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_I_NAME "Laptop_TC_I" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_P_NAME "Laptop_TC_P" +#define CAN1_OVERRIDE_POWERMAP_LAPTOP_TC_MUMAX_NAME "Laptop_TC_Mumax" +#define CAN1_OVERRIDE_LAPTOP_2_AS_MISSION_NAME "AS_Mission" +#define CAN1_OVERRIDE_LAPTOP_2_AS_STATE_NAME "AS_State" +#define CAN1_OVERRIDE_LAPTOP_2_MANUAL_INPUT_TORQUE_NAME "manual_input_torque" +#define CAN1_OVERRIDE_LAPTOP_2_LAPTOP_POWERLIMIT_NAME "Laptop_Powerlimit" +#define CAN1_OVERRIDE_LAPTOP_2_LAPTOP_TORQUE_LIM_NAME "Laptop_Torque_Lim" +#define CAN1_OVERRIDE_EPSC_COOLING_EPSC_MANUAL_ANGLE_NAME "EPSC_manual_angle" +#define CAN1_OVERRIDE_EPSC_COOLING_EPSC_MODE_NAME "EPSC_mode" +#define CAN1_OVERRIDE_EPSC_COOLING_AC_COOLING_ENABLE_NAME "AC_Cooling_enable" +#define CAN1_OVERRIDE_EPSC_COOLING_TS_COOLING_ENABLE_NAME "TS_cooling_enable" +#define CAN1_OVERRIDE_EPSC_COOLING_AC_COOLING_PWM_NAME "AC_cooling_PWM" +#define CAN1_OVERRIDE_EPSC_COOLING_TS_COOLING_PWM_NAME "TS_cooling_PWM" +#define CAN1_OVERRIDE_LAPTOP_FAKE_R2_D_NAME "Fake_R2D" +#define CAN1_OVERRIDE_LAPTOP_FAKE_SOUNDBOX_EMERGENCY_NAME "Fake_Soundbox_Emergency" +#define CAN1_OVERRIDE_LAPTOP_FAKE_SOUNDBOX_R2_D_NAME "Fake_Soundbox_R2D" +#define CAN1_OVERRIDE_LAPTOP_FAKE_TS_ACTIVE_NAME "Fake_TS_Active" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_APPS_NAME "override_APPS" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_AS_MISSION_NAME "override_AS_Mission" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_AS_STATE_NAME "override_AS_State" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_EPSC_MODE_NAME "override_EPSC_mode" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_AC_COOLING_ENABLE_NAME "override_PDU_AC_Cooling_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_ACU_ENABLE_NAME "override_PDU_ACU_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_DRS_ENABLE_NAME "override_PDU_DRS_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_EPSC_ENABLE_NAME "override_PDU_EPSC_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_HEARTBEAT_NAME "override_PDU_Heartbeat" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_LIDAR_ENABLE_NAME "override_PDU_Lidar_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_PN_V1_ENABLE_NAME "override_PDU_PN_V1_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_PN_V2_ENABLE_NAME "override_PDU_PN_V2_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_PDU_TS_COOLING_ENABLE_NAME "override_PDU_TS_Cooling_enable" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_POWER_MAP_NAME "override_Power_Map" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_TC_PARAMETER_NAME "override_TC_parameter" +#define CAN1_OVERRIDE_LAPTOP_OVERRIDE_TORQUE_INPUT_NAME "override_torque_input" +#define CAN1_APPS_OVERRIDE_APPS_0_MAX_NAME "APPS_0_max" +#define CAN1_APPS_OVERRIDE_APPS_0_MIN_NAME "APPS_0_min" +#define CAN1_APPS_OVERRIDE_APPS_1_MAX_NAME "APPS_1_max" +#define CAN1_APPS_OVERRIDE_APPS_1_MIN_NAME "APPS_1_min" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_FL_NAME "FTCU_Damper_FL" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_FR_NAME "FTCU_Damper_FR" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_RL_NAME "FTCU_Damper_RL" +#define CAN1_FTCU_DAMPER_FTCU_DAMPER_RR_NAME "FTCU_Damper_RR" +#define CAN1_FTCU_PARAM_CONFIRM_FTCU_PARAM_CONFIRM_NAME "FTCU_Param_Confirm" +#define CAN1_SENSORNODE_F_10_HZ_LS_L_NAME "LS_L" +#define CAN1_SENSORNODE_F_10_HZ_LS_R_NAME "LS_R" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_PRE_BOTS_NAME "SDC_M_pre_BOTS" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_POST_INS_NAME "SDC_M_post_INS" +#define CAN1_SENSORNODE_F_10_HZ_SDC_M_POST_BSPD_NAME "SDC_M_post_BSPD" +#define CAN1_SENSORNODE_F_10_HZ_BDTS_FL_NAME "BDTS_FL" +#define CAN1_SENSORNODE_F_10_HZ_BDTS_FR_NAME "BDTS_FR" +#define CAN1_SENSORNODE_F_100_HZ_1_APPS_1_NAME "APPS_1" +#define CAN1_SENSORNODE_F_100_HZ_1_APPS_2_NAME "APPS_2" +#define CAN1_SENSORNODE_F_100_HZ_1_BP_F_NAME "BP_F" +#define CAN1_SENSORNODE_F_100_HZ_1_SAS_NAME "SAS" +#define CAN1_SENSORNODE_F_100_HZ_1_WSS_FL_NAME "WSS_FL" +#define CAN1_SENSORNODE_F_100_HZ_1_WSS_FR_NAME "WSS_FR" +#define CAN1_SENSORNODE_F_100_HZ_2_DS_FL_NAME "DS_FL" +#define CAN1_SENSORNODE_F_100_HZ_2_DS_FR_NAME "DS_FR" +#define CAN1_SENSORNODE_F_1K_HZ_SLS_FL_NAME "SLS_FL" +#define CAN1_SENSORNODE_F_1K_HZ_SLS_FR_NAME "SLS_FR" +#define CAN1_SENSORNODE_R_10_HZ_EXT_TS_ON_NAME "ExtTSOn" +#define CAN1_SENSORNODE_R_10_HZ_SDC_M_PRE_TSMS_NAME "SDC_M_pre_TSMS" +#define CAN1_SENSORNODE_R_10_HZ_SDC_M_POST_TSMS_NAME "SDC_M_post_TSMS" +#define CAN1_SENSORNODE_R_10_HZ_BDTS_RL_NAME "BDTS_RL" +#define CAN1_SENSORNODE_R_10_HZ_BDTS_RR_NAME "BDTS_RR" +#define CAN1_SENSORNODE_R_10_HZ_WT_BAT_NAME "WT_BAT" +#define CAN1_SENSORNODE_R_10_HZ_WT_DT_NAME "WT_DT" +#define CAN1_SENSORNODE_R_10_HZ_WP_BAT_NAME "WP_BAT" +#define CAN1_SENSORNODE_R_10_HZ_WP_DT_NAME "WP_DT" +#define CAN1_SENSORNODE_R_100_HZ_EBS_APS_1_NAME "EBS_APS_1" +#define CAN1_SENSORNODE_R_100_HZ_EBS_APS_2_NAME "EBS_APS_2" +#define CAN1_SENSORNODE_R_100_HZ_BP_R_NAME "BP_R" +#define CAN1_SENSORNODE_R_100_HZ_WSS_RL_NAME "WSS_RL" +#define CAN1_SENSORNODE_R_100_HZ_WSS_RR_NAME "WSS_RR" +#define CAN1_SENSORNODE_R_100_HZ_DS_RL_NAME "DS_RL" +#define CAN1_SENSORNODE_R_100_HZ_DS_RR_NAME "DS_RR" +#define CAN1_SENSORNODE_R_1K_HZ_SLS_RL_NAME "SLS_RL" +#define CAN1_SENSORNODE_R_1K_HZ_SLS_RR_NAME "SLS_RR" +#define CAN1_PWM_DUTY_CYCLE_DC_DRS_NAME "DC_DRS" +#define CAN1_PWM_DUTY_CYCLE_DC_ASSI_Y_NAME "DC_ASSI_Y" +#define CAN1_PWM_DUTY_CYCLE_DC_ASSI_B_NAME "DC_ASSI_B" +#define CAN1_PWM_DUTY_CYCLE_DC_BL_NAME "DC_BL" +#define CAN1_PWM_DUTY_CYCLE_DC_FANS_DT_NAME "DC_Fans_DT" +#define CAN1_PWM_DUTY_CYCLE_DC_FANS_BAT_NAME "DC_Fans_BAT" +#define CAN1_PWM_DUTY_CYCLE_DC_SBX_NAME "DC_SBX" +#define CAN1_PWM_CONFIG_FREQ_PWM1_DRS_LIGHTING_NAME "Freq_PWM1_DRS_Lighting" +#define CAN1_PWM_CONFIG_FREQ_PWM3_FANS_NAME "Freq_PWM3_Fans" +#define CAN1_PWM_CONFIG_FREQ_PWM2_SBX_NAME "Freq_PWM2_SBX" +#define CAN1_DASHBOARD_IN_DASHBOARD_R2_D_BUTTON_NAME "Dashboard_R2D_Button" +#define CAN1_DASHBOARD_IN_DASHBOARD_TS_ACTIVATE_BUTTON_NAME "Dashboard_TS_Activate_Button" +#define CAN1_DASHBOARD_IN_DASHBOARD_RACE_KEY_NAME "Dashboard_Race_Key" +#define CAN1_DASHBOARD_IN_DASHBOARD_SDC_IN_NAME "Dashboard_SDC_in" +#define CAN1_DASHBOARD_IN_DASHBOARD_SDC_OUT_NAME "Dashboard_SDC_out" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_Sensor" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE1_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE2_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE2_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE2_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE2_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE2_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE2_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE5_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE5_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE4_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE4_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE3_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE3_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE2_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE2_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE1_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE1_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE5_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE4_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE3_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE1_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE5_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE4_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE3_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE1_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE5_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE4_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE3_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE1_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE5_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE4_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE3_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V8_NAME "AMS_SlaveID_V8" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V9_NAME "AMS_SlaveID_V9" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V10_NAME "AMS_SlaveID_V10" +#define CAN1_AMS_SLAVE1_LOG2_AMS_SLAVE_ID_V11_NAME "AMS_SlaveID_V11" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE5_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE4_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE3_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE1_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE5_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE4_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE3_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE1_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_PDU_HEARTBEAT_PDU_HEARTBEAT_NAME "PDU_Heartbeat" +#define CAN1_FTCU_PNEUMATIK_FTCU_TANK_PRESSURE_1_NAME "FTCU_Tank_Pressure_1" +#define CAN1_FTCU_PNEUMATIK_FTCU_TANK_PRESSURE_2_NAME "FTCU_Tank_Pressure_2" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_FL_NAME "ABX_Speed_FL" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_FR_NAME "ABX_Speed_FR" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_RL_NAME "ABX_Speed_RL" +#define CAN1_ACU_TX_COMMANDS_ABX_SPEED_RR_NAME "ABX_Speed_RR" +#define CAN1_ACU_TX_COMMANDS_ABX_STEERING_ANGLE_LEFT_NAME "ABX_Steering_Angle_Left" +#define CAN1_ACU_TX_COMMANDS_ABX_STEERING_ANGLE_RIGHT_NAME "ABX_Steering_Angle_Right" +#define CAN1_ACU_RX_COMMANDS_ACU_SPEED_TARGET_LEFT_NAME "ACU_Speed_Target_left" +#define CAN1_ACU_RX_COMMANDS_ACU_SPEED_TARGET_RIGHT_NAME "ACU_Speed_Target_right" +#define CAN1_ACU_RX_COMMANDS_ACU_STEERING_ANGLE_RIGHT_NAME "ACU_Steering_Angle_Right" +#define CAN1_ACU_RX_COMMANDS_ACU_STEERING_ANGLE_LEFT_NAME "ACU_Steering_Angle_Left" +#define CAN1_ACU_RX_ACU_AS_MISSION_COMPLETE_NAME "ACU_AS_Mission_Complete" +#define CAN1_ACU_RX_ACU_AS_OK_NAME "ACU_AS_OK" +#define CAN1_ACU_RX_ACU_DRS_NAME "ACU_DRS" +#define CAN1_ACU_RX_ACU_LAP_COUNT_NAME "ACU_Lap_Count" +#define CAN1_ACU_RX_ACU_CONES_ALL_NAME "ACU_Cones_All" +#define CAN1_ACU_RX_ACU_CONES_ACTUAL_NAME "ACU_Cones_Actual" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V0_NAME "AMS_SlaveID_V0" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V1_NAME "AMS_SlaveID_V1" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V2_NAME "AMS_SlaveID_V2" +#define CAN1_AMS_SLAVE0_LOG0_AMS_SLAVE_ID_V3_NAME "AMS_SlaveID_V3" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V4_NAME "AMS_SlaveID_V4" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V5_NAME "AMS_SlaveID_V5" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V6_NAME "AMS_SlaveID_V6" +#define CAN1_AMS_SLAVE0_LOG1_AMS_SLAVE_ID_V7_NAME "AMS_SlaveID_V7" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V12_NAME "AMS_SlaveID_V12" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V13_NAME "AMS_SlaveID_V13" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V14_NAME "AMS_SlaveID_V14" +#define CAN1_AMS_SLAVE0_LOG3_AMS_SLAVE_ID_V15_NAME "AMS_SlaveID_V15" +#define CAN1_AMS_SLAVE0_LOG4_AMS_SLAVE_ID_FAILED_SENSORS_NAME "AMS_SlaveID_FailedSensors" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T0_NAME "AMS_SlaveID_T0" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T1_NAME "AMS_SlaveID_T1" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T2_NAME "AMS_SlaveID_T2" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T3_NAME "AMS_SlaveID_T3" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T4_NAME "AMS_SlaveID_T4" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T5_NAME "AMS_SlaveID_T5" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T6_NAME "AMS_SlaveID_T6" +#define CAN1_AMS_SLAVE0_LOG5_AMS_SLAVE_ID_T7_NAME "AMS_SlaveID_T7" +#define CAN1_AMS_SLAVE0_LOG6_AMS_SLAVE_ID_T8_NAME "AMS_SlaveID_T8" +#define CAN1_AMS_SLAVE0_LOG6_AMS_SLAVE_ID_T9_NAME "AMS_SlaveID_T9" +#define CAN1_ACU_TX_ACU_AS_MISSION_NAME "ACU_AS_Mission" +#define CAN1_ACU_TX_ACU_AS_STATE_NAME "ACU_AS_State" +#define CAN1_ACU_TX_ACU_POWER_OFF_NAME "ACU_Power_Off" +#define CAN1_ACU_TX_ACU_RESET_NAME "ACU_Reset" +#define CAN1_ACU_TX_ACU_ALLOW_TORQUE_NAME "ACU_AllowTorque" +#define CAN1_ACU_TX_ABX_CON_MON_ERROR_NAME "ABX_ConMon_Error" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE5_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE4_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE3_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE2_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_AMS_ERROR_AMS_ERROR_KIND_NAME "AMS_Error_Kind" +#define CAN1_AMS_ERROR_AMS_ERROR_ARG_NAME "AMS_Error_Arg" +#define CAN1_FTCU_COOLING_FTCU_WATER_PRESSURE_2_NAME "FTCU_Water_Pressure_2" +#define CAN1_FTCU_COOLING_FTCU_WATER_PRESSURE_1_NAME "FTCU_Water_Pressure_1" +#define CAN1_FTCU_COOLING_FTCU_WATER_TEMPERATURE_1_NAME "FTCU_Water_Temperature_1" +#define CAN1_FTCU_COOLING_FTCU_WATER_TEMPERATURE_2_NAME "FTCU_Water_Temperature_2" +#define CAN1_FTCU_COOLING_FTCU_FLOW_RATE_NAME "FTCU_Flow_rate" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_FL_NAME "FTCU_BrakeT_FL" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_FR_NAME "FTCU_BrakeT_FR" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_RL_NAME "FTCU_BrakeT_RL" +#define CAN1_FTCU_BRAKE_T_FTCU_BRAKE_T_RR_NAME "FTCU_BrakeT_RR" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_FL_NAME "FTCU_Wheelspeed_FL" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_FR_NAME "FTCU_Wheelspeed_FR" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_RL_NAME "FTCU_Wheelspeed_RL" +#define CAN1_FTCU_WHEELSPEED_FTCU_WHEELSPEED_RR_NAME "FTCU_Wheelspeed_RR" +#define CAN1_FTCU_WHEELSPEED_FTCU_DISTANCE_SESSION_NAME "FTCU_Distance_Session" +#define CAN1_FTCU_TIMINGS_FTCU_LAPTIME_BEST_NAME "FTCU_Laptime_best" +#define CAN1_FTCU_TIMINGS_FTCU_LAPTIME_LAST_NAME "FTCU_Laptime_last" +#define CAN1_FTCU_TIMINGS_FTCU_SECTORTIME_BEST_NAME "FTCU_Sectortime_best" +#define CAN1_FTCU_TIMINGS_FTCU_SECTORTIME_LAST_NAME "FTCU_Sectortime_last" +#define CAN1_FTCU_DRIVER_FTCU_APPS_PERCENT_NAME "FTCU_APPS_Percent" +#define CAN1_FTCU_DRIVER_FTCU_BRAKE_PRESSURE_F_NAME "FTCU_Brake_Pressure_F" +#define CAN1_FTCU_DRIVER_FTCU_BRAKE_PRESSURE_R_NAME "FTCU_Brake_Pressure_R" +#define CAN1_FTCU_DRIVER_FTCU_STEERING_ANGLE_NAME "FTCU_Steering_Angle" +#define CAN1_FTCU_DRIVER_FTCU_SPEED_NAME "FTCU_Speed" +#define CAN1_FTCU_DRIVER_FTCU_LAPCOUNTER_NAME "FTCU_Lapcounter" +#define CAN1_FTCU_DRIVER_FTCU_SECTORCOUNTER_NAME "FTCU_Sectorcounter" +#define CAN1_TTS_RR_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_RR_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_RR_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_RR_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_RR_TTS_OUTET_RIGHT_NAME "TTS_OutetRight" +#define CAN1_TTS_RR_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_RL_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_RL_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_RL_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_RL_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_RL_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_RL_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_FR_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_FR_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_FR_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_FR_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_FR_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_FR_TTS_STATUS_NAME "TTS_Status" +#define CAN1_TTS_FL_TTS_OUTER_LEFT_NAME "TTS_OuterLeft" +#define CAN1_TTS_FL_TTS_CENTER_LEFT_NAME "TTS_CenterLeft" +#define CAN1_TTS_FL_TTS_CENTER_NAME "TTS_Center" +#define CAN1_TTS_FL_TTS_CENTER_RIGHT_NAME "TTS_CenterRight" +#define CAN1_TTS_FL_TTS_OUTER_RIGHT_NAME "TTS_OuterRight" +#define CAN1_TTS_FL_TTS_STATUS_NAME "TTS_Status" +#define CAN1_STW_PARAM_SET_STW_PARAM_SET_NAME "STW_Param_Set" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_SLIPREF_NAME "STW_Param_TC_Slipref" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_MUMAX_NAME "STW_Param_TC_Mumax" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_I_NAME "STW_Param_TC_I" +#define CAN1_STW_PARAM_SET_STW_PARAM_PLIM_NAME "STW_Param_Plim" +#define CAN1_STW_PARAM_SET_STW_PARAM_TLIM_NAME "STW_Param_Tlim" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_P_NAME "STW_Param_TC_P" +#define CAN1_STW_PARAM_SET_STW_PARAM_REKU_NAME "STW_Param_Reku" +#define CAN1_STW_PARAM_SET_STW_PARAM_TC_ON_NAME "STW_Param_TC_on" +#define CAN1_STW_PARAM_SET_STW_PARAM_TV_ON_NAME "STW_Param_TV_on" +#define CAN1_STW_PARAM_SET_STW_PARAM_DISCIPLINE_NAME "STW_Param_Discipline" +#define CAN1_STW_PARAM_SET_STW_PARAM_SLIM_NAME "STW_Param_Slim" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_ERROR_NAME "AMS_SlaveStatus_Error" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_ID_NAME "AMS_SlaveStatus_ID" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_TEMP_SENSOR_NAME "AMS_SlaveStatus_Temp_sensor" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MIN_CELL_VOLT_NAME "AMS_SlaveStatus_MinCellVolt" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MAX_CELL_VOLT_NAME "AMS_SlaveStatus_MaxCellVolt" +#define CAN1_AMS_SLAVE0_STATUS_AMS_SLAVE_STATUS_MAX_TEMP_NAME "AMS_SlaveStatus_MaxTemp" +#define CAN1_SSU_MESSAGE_SSU_PRESSURE_NAME "SSU_Pressure" +#define CAN1_SSU_MESSAGE_SSU_AIR_TEMP_NAME "SSU_AirTemp" +#define CAN1_AMS_STATUS_AMS_STATE_NAME "AMS_State" +#define CAN1_AMS_STATUS_SDC_CLOSED_NAME "SDC_Closed" +#define CAN1_AMS_STATUS_SOC_NAME "SOC" +#define CAN1_AMS_STATUS_MIN_CELL_VOLT_NAME "Min_cell_volt" +#define CAN1_AMS_STATUS_MAX_CELL_TEMP_NAME "Max_cell_temp" +#define CAN1_AMS_STATUS_AMS_IMD_STATE_NAME "AMS_IMD_State" +#define CAN1_AMS_STATUS_AMS_IMD_OK_NAME "AMS_IMD_ok" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_SLAVE_ID_NAME "AMS_SlavePanic_SlaveID" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_KIND_NAME "AMS_SlavePanic_Kind" +#define CAN1_AMS_SLAVE_PANIC_AMS_SLAVE_PANIC_ARG_NAME "AMS_SlavePanic_Arg" +#define CAN1_AMS_IN_TS_ACTIVATE_NAME "TS_activate" +#define CAN1_AMS_IN_INVERTERS_DISCHARGED_NAME "Inverters_discharged" +#define CAN1_AMS_IN_LAP_NUMBER_NAME "Lap_Number" +#define CAN1_SHUNT_CURRENT_SHUNT_CURRENT_NAME "Shunt_Current" +#define CAN1_SHUNT_VOLTAGE1_SHUNT_VOLTAGE1_NAME "Shunt_Voltage1" +#define CAN1_SHUNT_VOLTAGE2_SHUNT_VOLTAGE2_NAME "Shunt_Voltage2" +#define CAN1_SHUNT_VOLTAGE3_SHUNT_VOLTAGE3_NAME "Shunt_Voltage3" +#define CAN1_SHUNT_TEMPERATURE_SHUNT_TEMPERATURE_NAME "Shunt_Temperature" +#define CAN1_PDU_COMMAND_PDU_ENABLE_MISC_NAME "PDU_enable_misc" +#define CAN1_PDU_COMMAND_PDU_ENABLE_SDC_NAME "PDU_enable_sdc" +#define CAN1_PDU_COMMAND_PDU_ENABLE_INVERTER_NAME "PDU_enable_inverter" +#define CAN1_PDU_COMMAND_PDU_ENABLE_TS_COOLING_NAME "PDU_enable_TS_Cooling" +#define CAN1_PDU_COMMAND_PDU_ENABLE_ACC_COOLING_NAME "PDU_enable_ACC_Cooling" +#define CAN1_PDU_COMMAND_PDU_ENABLE_LLDAR_NAME "PDU_enable_lldar" +#define CAN1_PDU_COMMAND_PDU_ENABLE_DRS_NAME "PDU_enable_DRS" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EPSC_NAME "PDU_enable_EPSC" +#define CAN1_PDU_COMMAND_PDU_ENABLE_ACU_NAME "PDU__enable_ACU" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_A_NAME "PDU_enable_EBS_A" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_B_NAME "PDU_enable_EBS_B" +#define CAN1_PDU_COMMAND_PDU_ENABLE_EBS_C_NAME "PDU_enable_EBS_C" +#define CAN1_PDU_RESPONSE_PDU_ALWAYSON_TX_NAME "PDU_alwayson_tx" +#define CAN1_PDU_RESPONSE_PDU_SHUTDOWN_CIRCUIT_TX_NAME "PDU_shutdown_circuit_tx" +#define CAN1_PDU_RESPONSE_PDU_LIDAR_TX_NAME "PDU_lidar_tx" +#define CAN1_PDU_RESPONSE_PDU_ACU_TX_NAME "PDU_ACU_tx" +#define CAN1_PDU_RESPONSE_PDU_SERVOS_REGLER_TX_NAME "PDU_servos_regler_tx" +#define CAN1_PDU_RESPONSE_PDU_INVERTER_TX_NAME "PDU_inverter_tx" +#define CAN1_PDU_RESPONSE_PDU_MISC_TX_NAME "PDU_misc_tx" +#define CAN1_PDU_RESPONSE_PDU_SERVO_TX_NAME "PDU_servo_tx" +#define CAN1_PDU_RESPONSE_PDU_EBS_VALVE_1_TX_NAME "PDU_ebs_valve_1_tx" +#define CAN1_PDU_RESPONSE_PDU_EBS_VALVE_2_TX_NAME "PDU_ebs_valve_2_tx" +#define CAN1_PDU_RESPONSE_PDU_CS_VALVE_TX_NAME "PDU_cs_valve_tx" +#define CAN1_PDU_RESPONSE_PDU_AGGREGAT_TX_NAME "PDU_aggregat_tx" +#define CAN1_PDU_RESPONSE_PDU_STEERING_TX_NAME "PDU_steering_tx" +#define CAN1_PDU_RESPONSE_PDU_PWM_TSAC_FANS_NAME "PDU_PWM_TSAC_fans" +#define CAN1_PDU_RESPONSE_PDU_PWM_RADIATOT_FANS_TX_NAME "PDU_PWM_radiatot_fans_tx" +#define CAN1_PDU_RESPONSE_PDU_PWM_AGGREGAT_NAME "PDU_PWM_aggregat" +#define CAN1_PDU_RESPONSE_PDU_PWM_PUMP_NAME "PDU_PWM_pump" +#define CAN1_PDU_RESPONSE_PDU_HEARTBEAT_OK_TX_NAME "PDU_heartbeat_ok_tx" +#define CAN1_AS_MISSION_FB_MISSION_SELECTION_NAME "Mission_selection" +#define CAN1_STW_MISSION_SELECTED_MISSION_SELECTION_NAME "Mission_selection" +#define CAN1_EPSC_OUT_EPSC_MEASURED_RPM_NAME "EPSC_measured_rpm" +#define CAN1_EPSC_OUT_EPSC_MEASURED_STEERING_ANGLE_NAME "EPSC_measured_steering_angle" +#define CAN1_EPSC_OUT_EPSC_MEASURED_MOSFET_TEMPERATURE_NAME "EPSC_measured_MOSFET_temperature" +#define CAN1_EPSC_OUT_EPSC_MEASURED_VOLTAGE_NAME "EPSC_measured_voltage" +#define CAN1_EPSC_OUT_EPSC_MEASURED_CURRENT_NAME "EPSC_measured_current" +#define CAN1_EPSC_STEERING_IN_EPSC_DESIRED_STEERING_ANGLE_NAME "EPSC_desired_steering_angle" +#define CAN1_STW_BUTTONS_STW_BUTTON_DRS_NAME "STW_button_DRS" +#define CAN1_STW_BUTTONS_STW_BUTTON_1_NAME "STW_button_1" +#define CAN1_STW_BUTTONS_STW_BUTTON_2_NAME "STW_button_2" +#define CAN1_STW_BUTTONS_STW_BUTTON_3_NAME "STW_button_3" +#define CAN1_STW_BUTTONS_STW_BUTTON_4_NAME "STW_button_4" +#define CAN1_STW_STATUS_LAP_COUNT_NAME "Lap_Count" +#define CAN1_STW_STATUS_ERR_PDU_NAME "ERR_PDU" +#define CAN1_STW_STATUS_ERR_RES_NAME "ERR_RES" +#define CAN1_STW_STATUS_R2_D_PROGRESS_NAME "R2D_Progress" +#define CAN1_STW_STATUS_AS_STATE_STW_NAME "AS_State_STW" +#define CAN1_STW_STATUS_ERR_AS_NAME "ERR_AS" +#define CAN1_STW_STATUS_ERR_APP_SP_NAME "ERR_APPSp" +#define CAN1_STW_STATUS_ERR_S_BSPD_NAME "ERR_sBSPD" +#define CAN1_STW_STATUS_ERR_SCS_NAME "ERR_SCS" +#define CAN1_STW_STATUS_ERR_CON_MON_NAME "ERR_ConMon" +#define CAN1_STW_STATUS_ERR_INI_CHK_NAME "ERR_IniChk" +#define CAN1_STW_STATUS_ERR_INV2_NAME "ERR_Inv2" +#define CAN1_STW_STATUS_ERR_INV1_NAME "ERR_Inv1" +#define CAN1_STW_STATUS_ERR_AMS_NAME "ERR_AMS" +#define CAN1_STW_STATUS_ERR_SDC_NAME "ERR_SDC" +#define CAN1_STW_STATUS_SDC_STATUS_NAME "SDC_Status" +#define CAN1_STW_STATUS_INV2_READY_NAME "Inv2_ready" +#define CAN1_STW_STATUS_INV1_READY_NAME "Inv1_ready" +#define CAN1_STW_STATUS_ENERGY_PER_LAP_NAME "Energy_per_Lap" +#define CAN1_STW_STATUS_INI_CHK_STATE_NAME "iniChk_state" +#define CAN1_PDU_CURRENT_1_PDU_ALWAYS_ON_CURRENT_NAME "PDU_always_on_current" +#define CAN1_PDU_CURRENT_1_PDU_LVMS_CURRENT_NAME "PDU_LVMS_current" +#define CAN1_PDU_CURRENT_1_PDU_ASMS_CURRENT_NAME "PDU_ASMS_current" +#define CAN1_PDU_CURRENT_1_PDU_MISC_CURRENT_NAME "PDU_MISC_current" +#define CAN1_PDU_CURRENT_2_PDU_SDC_CURRENT_NAME "PDU_SDC_current" +#define CAN1_PDU_CURRENT_2_PDU_INVERTER_CURRENT_NAME "PDU_Inverter_current" +#define CAN1_PDU_CURRENT_2_PDU_TS_COOLING_CURRENT_NAME "PDU_TS_Cooling_current" +#define CAN1_PDU_CURRENT_2_PDU_ACC_COOLING_CURRENT_NAME "PDU_ACC_Cooling_current" +#define CAN1_PDU_CURRENT_3_PDU_LIDAR_CURRENT_NAME "PDU_Lidar_current" +#define CAN1_PDU_CURRENT_3_PDU_DRS_CURRENT_NAME "PDU_DRS_current" +#define CAN1_PDU_CURRENT_3_PDU_EPSC_CURRENT_NAME "PDU_EPSC_current" +#define CAN1_PDU_CURRENT_3_PDU_ACU_CURRENT_NAME "PDU_ACU_current" +#define CAN1_PDU_CURRENT_4_PDU_EBS_A_CURRENT_NAME "PDU_EBS_A_current" +#define CAN1_PDU_CURRENT_4_PDU_EBS_B_CURRENT_NAME "PDU_EBS_B_current" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_P_GAIN_NAME "EPSC_Config_P_Gain" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_I_GAIN_NAME "EPSC_Config_I_Gain" +#define CAN1_EPSC_CONFIG_IN_EPSC_CONFIG_D_GAIN_NAME "EPSC_Config_D_Gain" + +/** + * Signals in message Inverter_Velocity. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_velocity_t { + /** + * Range: -2147483648..2147483647 (-2147483.648..2147483.647 -) + * Scale: 0.001 + * Offset: 0 + */ + int32_t inverter_1_velocity; + + /** + * Range: -2147483648..2147483647 (-2147483.648..2147483.647 -) + * Scale: 0.001 + * Offset: 0 + */ + int32_t inverter_2_velocity; +}; + +/** + * Signals in message Inverter_Errors_Warnings. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_errors_warnings_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_errors; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_warnings; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_errors; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_warnings; +}; + +/** + * Signals in message Inverter_Torque_Actual_CW. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_torque_actual_cw_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_1_control_word; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_actual; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t inverter_2_control_word; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_actual; +}; + +/** + * Signals in message Inverter_Temperatur. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_temperatur_t { + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_temp_inv; + + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_temp_mot; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_temp_inv; + + /** + * Range: -128..127 (-128..127 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_temp_mot; +}; + +/** + * Signals in message Inverter_Torque_wanted. + * + * All signal values are as on the CAN bus. + */ +struct can1_inverter_torque_wanted_t { + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_demanded; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_demanded; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_1_torque_desired; + + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t inverter_2_torque_desired; +}; + +/** + * Signals in message SDO_Telemetrie_Rx_Node1. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_rx_node1_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message SDO_Telemetrie_Rx_Node2. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_rx_node2_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message SDO_Telemetrie_Tx. + * + * All signal values are as on the CAN bus. + */ +struct can1_sdo_telemetrie_tx_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_command_byte; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sdo_od_index; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdo_od_subindex; + + /** + * Range: 0..4294967295 (0..4294967295 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t sdo_data; +}; + +/** + * Signals in message Laptop_SDO_Node. + * + * All signal values are as on the CAN bus. + */ +struct can1_laptop_sdo_node_t { + /** + * 0: beide Nodes + * 1: Node 1 + * 2: Node 2 + * + * Range: 0..3 (0..3 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t node_id_sdo; +}; + +/** + * Signals in message XSens_LongLat. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_long_lat_t { + /** + * Range: -2147483648..2147483647 (-127.9999..127.9999 deg) + * Scale: 5.96046e-08 + * Offset: 0 + */ + int32_t x_sens_latitude; + + /** + * Range: -2147483648..2147483647 (-255.99938..255.99938 deg) + * Scale: 1.19209e-07 + * Offset: 0 + */ + int32_t x_sens_longitude; +}; + +/** + * Signals in message XSens_rateofturn. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_rateofturn_t { + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gyr_x; + + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gy_y; + + /** + * Range: -32768..32767 (-64.00016..63.99821 rad/s) + * Scale: 0.00195313 + * Offset: 0 + */ + int16_t x_sens_gy_z; +}; + +/** + * Signals in message XSens_Acceleration. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_acceleration_t { + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_x; + + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_y; + + /** + * Range: -32768..32767 (-128..127.99609 m/s^2) + * Scale: 0.00390625 + * Offset: 0 + */ + int16_t x_sens_acc_z; +}; + +/** + * Signals in message XSens_Velocity. + * + * All signal values are as on the CAN bus. + */ +struct can1_x_sens_velocity_t { + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_x; + + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_y; + + /** + * Range: -32768..32767 (-512..511.98438 m/s) + * Scale: 0.015625 + * Offset: 0 + */ + int16_t x_sens_vel_z; +}; + +/** + * Signals in message Telemetrie. + * + * All signal values are as on the CAN bus. + */ +struct can1_telemetrie_t { + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ini_check_error_state; + + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t powermap; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t apps_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t brake_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t allow_torque; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t asp_ok; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pressure_sensor_ok; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t torque_vectoring_on; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t reku_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t traction_control_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_deactivate; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_limit; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t power_limit; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_limit_dynamisch; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_ohne_limit_l; + + /** + * Range: 0..255 (0..2550 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t torque_ohne_limit_r; +}; + +/** + * Signals in message Override_Powermap. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_powermap_t { + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptopp_power_map; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_reku; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_tc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_tv; + + /** + * Range: 0..255 (0..2.55 -) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t laptop_slipref; + + /** + * Range: 0..65535 (0..6553.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t laptop_tc_i; + + /** + * Range: 0..655350 (0..65535 -) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t laptop_tc_p; + + /** + * Range: 0..255 (1..3.55 -) + * Scale: 0.01 + * Offset: 1 + */ + uint8_t laptop_tc_mumax; +}; + +/** + * Signals in message Override_Laptop_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_laptop_2_t { + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_mission; + + /** + * Range: 0..7 (0..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_state; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t manual_input_torque; + + /** + * Range: 0..80 (0..80 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t laptop_powerlimit; + + /** + * Range: 0..150 (0..1500 -) + * Scale: 10 + * Offset: 0 + */ + uint8_t laptop_torque_lim; +}; + +/** + * Signals in message Override_EPSC_Cooling. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_epsc_cooling_t { + /** + * Range: -512..511 (-512..511 -) + * Scale: 1 + * Offset: 0 + */ + int16_t epsc_manual_angle; + + /** + * Range: 0..3 (0..3 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t epsc_mode; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ac_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_cooling_enable; + + /** + * Range: 0..255 (0..1.275 -) + * Scale: 0.005 + * Offset: 0 + */ + uint8_t ac_cooling_pwm; + + /** + * Range: 0..255 (0..1.275 -) + * Scale: 0.005 + * Offset: 0 + */ + uint8_t ts_cooling_pwm; +}; + +/** + * Signals in message Override_Laptop. + * + * All signal values are as on the CAN bus. + */ +struct can1_override_laptop_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_r2_d; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_soundbox_emergency; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_soundbox_r2_d; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t fake_ts_active; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_apps; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_as_mission; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_as_state; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_epsc_mode; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_ac_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_acu_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_drs_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_epsc_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_heartbeat; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_lidar_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_pn_v1_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_pn_v2_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_pdu_ts_cooling_enable; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_power_map; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_tc_parameter; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t override_torque_input; +}; + +/** + * Signals in message APPS_Override. + * + * All signal values are as on the CAN bus. + */ +struct can1_apps_override_t { + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_0_max; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_0_min; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_1_max; + + /** + * Range: 0..1023 (0..10.23 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t apps_1_min; +}; + +/** + * Signals in message FTCU_Damper. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_damper_t { + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_fl; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_fr; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_rl; + + /** + * Range: 0..7500 (0..75 mm) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_damper_rr; +}; + +/** + * Signals in message FTCU_ParamConfirm. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_param_confirm_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_param_confirm; +}; + +/** + * Signals in message Sensornode_F_10Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_10_hz_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ls_l; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ls_r; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_pre_bots; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_ins; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_bspd; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_fl; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_fr; +}; + +/** + * Signals in message Sensornode_F_100Hz_1. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_100_hz_1_t { + /** + * Range: 0..255 (0..1 -) + * Scale: 0.00392157 + * Offset: 0 + */ + uint8_t apps_1; + + /** + * Range: 0..255 (0..1 -) + * Scale: 0.00392157 + * Offset: 0 + */ + uint8_t apps_2; + + /** + * Range: 0..255 (0..510 -) + * Scale: 2 + * Offset: 0 + */ + uint8_t bp_f; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sas; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_fl; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_fr; +}; + +/** + * Signals in message Sensornode_F_100Hz_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_100_hz_2_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_fl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_fr; +}; + +/** + * Signals in message Sensornode_F_1kHz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_f_1k_hz_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_fl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_fr; +}; + +/** + * Signals in message Sensornode_R_10Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_10_hz_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ext_ts_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_pre_tsms; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_m_post_tsms; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_rl; + + /** + * Range: 0..255 (0..510 degC) + * Scale: 2 + * Offset: 0 + */ + uint8_t bdts_rr; + + /** + * Range: 0..255 (0..255 degC) + * Scale: 1 + * Offset: 0 + */ + uint8_t wt_bat; + + /** + * Range: 0..255 (0..255 degC) + * Scale: 1 + * Offset: 0 + */ + uint8_t wt_dt; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t wp_bat; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t wp_dt; +}; + +/** + * Signals in message Sensornode_R_100Hz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_100_hz_t { + /** + * Range: 0..255 (0..25.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t ebs_aps_1; + + /** + * Range: 0..255 (0..25.5 -) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t ebs_aps_2; + + /** + * Range: 0..255 (0..510 -) + * Scale: 2 + * Offset: 0 + */ + uint8_t bp_r; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_rl; + + /** + * Range: 0..255 (0..255 notches) + * Scale: 1 + * Offset: 0 + */ + uint8_t wss_rr; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_rl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t ds_rr; +}; + +/** + * Signals in message Sensornode_R_1kHz. + * + * All signal values are as on the CAN bus. + */ +struct can1_sensornode_r_1k_hz_t { + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_rl; + + /** + * Range: 0..4095 (0..4095 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t sls_rr; +}; + +/** + * Signals in message PWM_DutyCycle. + * + * All signal values are as on the CAN bus. + */ +struct can1_pwm_duty_cycle_t { + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_drs; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_assi_y; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_assi_b; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_bl; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_fans_dt; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_fans_bat; + + /** + * Range: 0..255 (0..255 /255) + * Scale: 1 + * Offset: 0 + */ + uint8_t dc_sbx; +}; + +/** + * Signals in message PWM_Config. + * + * All signal values are as on the CAN bus. + */ +struct can1_pwm_config_t { + /** + * DRS+Lighting,Default=500Hz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm1_drs_lighting; + + /** + * Fans,Default=20kHz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm3_fans; + + /** + * SBX,Default=313Hz + * + * Range: 0..65535 (0..65535 Hz) + * Scale: 1 + * Offset: 0 + */ + uint16_t freq_pwm2_sbx; +}; + +/** + * Signals in message Dashboard_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_dashboard_in_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_r2_d_button; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_ts_activate_button; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_race_key; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_sdc_in; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t dashboard_sdc_out; +}; + +/** + * Signals in message AMS_Slave1Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave2_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave2_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave2_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave2_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave2_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave2_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave5_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave4_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave3_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave2_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave1_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message AMS_Slave5_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave4_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave3_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave1_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave5_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave4_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave3_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave1_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave5_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave4_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave3_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave1_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave5_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave4_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave3_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave1_Log2. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log2_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v8; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v9; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v10; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v11; +}; + +/** + * Signals in message AMS_Slave5_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave4_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave3_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave1_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave5_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave4_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave3_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave1_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave1_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message PDU_Heartbeat. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_heartbeat_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t pdu_heartbeat; +}; + +/** + * Signals in message FTCU_Pneumatik. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_pneumatik_t { + /** + * Range: 0..4095 (0..40.95 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_tank_pressure_1; + + /** + * Range: 0..40950 (0..409.5 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_tank_pressure_2; +}; + +/** + * Signals in message ACU_TX_Commands. + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_tx_commands_t { + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_fl; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_fr; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_rl; + + /** + * Range: 0..255 (0..51 -) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t abx_speed_rr; + + /** + * Range: -128..127 (-2.00784..1.99216 -) + * Scale: 0.0156863 + * Offset: 0 + */ + int8_t abx_steering_angle_left; + + /** + * Range: -128..127 (-2.00784..1.99216 -) + * Scale: 0.0156863 + * Offset: 0 + */ + int8_t abx_steering_angle_right; +}; + +/** + * Signals in message ACU_RX_Commands. + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_rx_commands_t { + /** + * Range: 0..255 (0..306 -) + * Scale: 1.2 + * Offset: 0 + */ + uint8_t acu_speed_target_left; + + /** + * Range: 0..255 (0..306 m/s) + * Scale: 1.2 + * Offset: 0 + */ + uint8_t acu_speed_target_right; + + /** + * Range: -128..127 (-2.048..2.032 -) + * Scale: 0.016 + * Offset: 0 + */ + int8_t acu_steering_angle_right; + + /** + * Range: -128..127 (-2.048..2.032 -) + * Scale: 0.016 + * Offset: 0 + */ + int8_t acu_steering_angle_left; +}; + +/** + * Signals in message ACU_RX. + * + * Cycle Time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_rx_t { + /** + * Range: 0..1 (0..1 Bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_mission_complete; + + /** + * Range: 0..1 (0..1 Bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_ok; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_drs; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_lap_count; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_cones_all; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_cones_actual; +}; + +/** + * Signals in message AMS_Slave0_Log0. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log0_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v0; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v1; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v2; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v3; +}; + +/** + * Signals in message AMS_Slave0_Log1. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log1_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v4; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v5; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v6; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v7; +}; + +/** + * Signals in message AMS_Slave0_Log3. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log3_t { + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v12; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v13; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v14; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_id_v15; +}; + +/** + * Signals in message AMS_Slave0_Log4. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log4_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_id_failed_sensors; +}; + +/** + * Signals in message AMS_Slave0_Log5. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log5_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t0; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t1; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t2; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t3; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t4; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t5; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t6; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t7; +}; + +/** + * Signals in message AMS_Slave0_Log6. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_log6_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t8; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_slave_id_t9; +}; + +/** + * Signals in message ACU_TX. + * + * Cycle Time: 50ms + * + * All signal values are as on the CAN bus. + */ +struct can1_acu_tx_t { + /** + * AS Mission Selection + * + * Range: 0..7 (0..7 int) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_mission; + + /** + * Range: 0..5 (0..5 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_as_state; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_power_off; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_reset; + + /** + * Range: 0..1 (0..1 bool) + * Scale: 1 + * Offset: 0 + */ + uint8_t acu_allow_torque; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t abx_con_mon_error; +}; + +/** + * Signals in message AMS_Slave5Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave5_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave4Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave4_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..1000 (0..1 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..1000 (0..1 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave3Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave3_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Slave2Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave2_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: 0..1 (0..1 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message AMS_Error. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_error_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_error_kind; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + int8_t ams_error_arg; +}; + +/** + * Signals in message FTCU_Cooling. + * + * Cycle time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_cooling_t { + /** + * Range: 0..255 (0..2.55 bar) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t ftcu_water_pressure_2; + + /** + * Range: 0..255 (0..2.55 bar) + * Scale: 0.01 + * Offset: 0 + */ + uint8_t ftcu_water_pressure_1; + + /** + * Range: 0..1023 (0..102.3 Deg) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_water_temperature_1; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_water_temperature_2; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_flow_rate; +}; + +/** + * Signals in message FTCU_BrakeT. + * + * Cycle time: 100ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_brake_t_t { + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_fl; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_fr; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_rl; + + /** + * Range: 0..65535 (0..655.35 degC) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_brake_t_rr; +}; + +/** + * Signals in message FTCU_Wheelspeed. + * + * Cycle time: 10ms + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_wheelspeed_t { + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_fl; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_fr; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_rl; + + /** + * Range: -2048..2047 (-102.4..102.35 1/s) + * Scale: 0.05 + * Offset: 0 + */ + int16_t ftcu_wheelspeed_rr; + + /** + * Range: 0..65535 (0..65535 m) + * Scale: 1 + * Offset: 0 + */ + uint16_t ftcu_distance_session; +}; + +/** + * Signals in message FTCU_Timings. + * + * Cycle time: 1s + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_timings_t { + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_laptime_best; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_laptime_last; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_sectortime_best; + + /** + * Range: 0..65535 (0..655.35 s) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t ftcu_sectortime_last; +}; + +/** + * Signals in message FTCU_Driver. + * + * All signal values are as on the CAN bus. + */ +struct can1_ftcu_driver_t { + /** + * Range: 0..100 (0..100 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_apps_percent; + + /** + * Range: 0..1600 (0..160 bar) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_brake_pressure_f; + + /** + * Range: 0..1600 (0..160 bar) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t ftcu_brake_pressure_r; + + /** + * Range: -128..127 (-128..127 Deg) + * Scale: 1 + * Offset: 0 + */ + int8_t ftcu_steering_angle; + + /** + * Range: 0..255 (0..51 m/s) + * Scale: 0.2 + * Offset: 0 + */ + uint8_t ftcu_speed; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_lapcounter; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ftcu_sectorcounter; +}; + +/** + * Signals in message TTS_RR. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_rr_t { + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outet_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_RL. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_rl_t { + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_FR. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_fr_t { + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message TTS_FL. + * + * All signal values are as on the CAN bus. + */ +struct can1_tts_fl_t { + /** + * Range: -548..3547 (-54.8..354.7 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_left; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_center_right; + + /** + * Range: 0..4095 (0..409.5 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t tts_outer_right; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t tts_status; +}; + +/** + * Signals in message STW_Param_Set. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_param_set_t { + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint16_t stw_param_set; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_slipref; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_mumax; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_i; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_plim; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tlim; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_p; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_reku; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tc_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_tv_on; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_discipline; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t stw_param_slim; +}; + +/** + * Signals in message AMS_Slave0Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave0_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_error; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_id; + + /** + * Range: -128..127 (-128..127 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_status_temp_sensor; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_min_cell_volt; + + /** + * Range: 0..6553 (0..6.5535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t ams_slave_status_max_cell_volt; + + /** + * Range: 0..16 (0..1 degC) + * Scale: 0.0625 + * Offset: 0 + */ + int16_t ams_slave_status_max_temp; +}; + +/** + * Signals in message SSU_Message. + * + * All signal values are as on the CAN bus. + */ +struct can1_ssu_message_t { + /** + * Range: -32768..32767 (-32768..32767 -) + * Scale: 1 + * Offset: 0 + */ + int16_t ssu_pressure; + + /** + * Range: -200..800 (-20..80 degC) + * Scale: 0.1 + * Offset: 0 + */ + int16_t ssu_air_temp; +}; + +/** + * Signals in message AMS_Status. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_status_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_state; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_closed; + + /** + * Range: 0..100 (0..100 %) + * Scale: 1 + * Offset: 0 + */ + uint8_t soc; + + /** + * Range: 0..65535 (0..65.535 V) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t min_cell_volt; + + /** + * Range: 0..65535 (0..4095.94 degC) + * Scale: 0.0625 + * Offset: 0 + */ + uint16_t max_cell_temp; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_imd_state; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_imd_ok; +}; + +/** + * Signals in message AMS_SlavePanic. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_slave_panic_t { + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_panic_slave_id; + + /** + * Range: 0..72057600000000000 (0..7.20576e+16 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ams_slave_panic_kind; + + /** + * Range: 0..72057600000000000 (0..7.20576e+16 -) + * Scale: 1 + * Offset: 0 + */ + uint32_t ams_slave_panic_arg; +}; + +/** + * Signals in message AMS_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_ams_in_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ts_activate; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t inverters_discharged; + + /** + * Range: 0..64 (0..64 Laps) + * Scale: 1 + * Offset: 0 + */ + uint8_t lap_number; +}; + +/** + * Signals in message Shunt_Current. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_current_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 A) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_current; +}; + +/** + * Signals in message Shunt_Voltage1. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage1_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage1; +}; + +/** + * Signals in message Shunt_Voltage2. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage2_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage2; +}; + +/** + * Signals in message Shunt_Voltage3. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_voltage3_t { + /** + * Range: -2000000000..2000000000 (-2000000..2000000 V) + * Scale: 0.001 + * Offset: 0 + */ + int32_t shunt_voltage3; +}; + +/** + * Signals in message Shunt_Temperature. + * + * All signal values are as on the CAN bus. + */ +struct can1_shunt_temperature_t { + /** + * Range: 0..10000 (0..1000 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint32_t shunt_temperature; +}; + +/** + * Signals in message PDU_Command. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_command_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_misc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_sdc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_inverter; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ts_cooling; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_acc_cooling; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_lldar; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_drs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_epsc; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_acu; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_a; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_b; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_enable_ebs_c; +}; + +/** + * Signals in message PDU_Response. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_response_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_alwayson_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_shutdown_circuit_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_lidar_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_acu_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_servos_regler_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_inverter_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_misc_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_servo_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_ebs_valve_1_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_ebs_valve_2_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_cs_valve_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_aggregat_tx; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_steering_tx; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_tsac_fans; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_radiatot_fans_tx; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_aggregat; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_pwm_pump; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t pdu_heartbeat_ok_tx; +}; + +/** + * Signals in message AS_Mission_fb. + * + * All signal values are as on the CAN bus. + */ +struct can1_as_mission_fb_t { + /** + * Range: 1..7 (1..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t mission_selection; +}; + +/** + * Signals in message STW_mission_selected. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_mission_selected_t { + /** + * Range: 1..7 (1..7 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t mission_selection; +}; + +/** + * Signals in message EPSC_out. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_out_t { + /** + * Range: -32768..32767 (-3276.8..3276.7 rpm) + * Scale: 0.1 + * Offset: 0 + */ + int16_t epsc_measured_rpm; + + /** + * Range: 0..36000 (0..360 deg) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_measured_steering_angle; + + /** + * Range: 0..1023 (0..102.3 degC) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t epsc_measured_mosfet_temperature; + + /** + * Range: 0..1023 (0..102.3 V) + * Scale: 0.1 + * Offset: 0 + */ + uint16_t epsc_measured_voltage; + + /** + * Range: 0..255 (0..25.5 A) + * Scale: 0.1 + * Offset: 0 + */ + uint8_t epsc_measured_current; +}; + +/** + * Signals in message EPSC_Steering_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_steering_in_t { + /** + * Range: 0..0 (-0.0512..0.0511 -) + * Scale: 1 + * Offset: 0 + */ + int16_t epsc_desired_steering_angle; +}; + +/** + * Signals in message STW_buttons. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_buttons_t { + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_drs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_1; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_2; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_3; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t stw_button_4; +}; + +/** + * Signals in message STW_status. + * + * All signal values are as on the CAN bus. + */ +struct can1_stw_status_t { + /** + * Range: 0..64 (0..64 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t lap_count; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_pdu; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_res; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t r2_d_progress; + + /** + * Range: 0..5 (0..5 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t as_state_stw; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_as; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_app_sp; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_s_bspd; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_scs; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_con_mon; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_ini_chk; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_inv2; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_inv1; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_ams; + + /** + * Range: 0..1 (0..1 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t err_sdc; + + /** + * Range: 0..15 (0..15 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t sdc_status; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t inv2_ready; + + /** + * Range: - + * Scale: 1 + * Offset: 0 + */ + uint8_t inv1_ready; + + /** + * Range: 0..65535 (0..65.535 kWh) + * Scale: 0.001 + * Offset: 0 + */ + uint16_t energy_per_lap; + + /** + * Range: 0..255 (0..255 -) + * Scale: 1 + * Offset: 0 + */ + uint8_t ini_chk_state; +}; + +/** + * Signals in message PDU_Current_1. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_1_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_always_on_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_lvms_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_asms_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_misc_current; +}; + +/** + * Signals in message PDU_Current_2. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_2_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_sdc_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_inverter_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ts_cooling_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_acc_cooling_current; +}; + +/** + * Signals in message PDU_Current_3. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_3_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_lidar_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_drs_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_epsc_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_acu_current; +}; + +/** + * Signals in message PDU_Current_4. + * + * All signal values are as on the CAN bus. + */ +struct can1_pdu_current_4_t { + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ebs_a_current; + + /** + * Range: 0..65535 (0..65535 -) + * Scale: 1 + * Offset: 0 + */ + uint16_t pdu_ebs_b_current; +}; + +/** + * Signals in message EPSC_Config_In. + * + * All signal values are as on the CAN bus. + */ +struct can1_epsc_config_in_t { + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_p_gain; + + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_i_gain; + + /** + * Range: 0..65535 (0..655.35 -) + * Scale: 0.01 + * Offset: 0 + */ + uint16_t epsc_config_d_gain; +}; + +/** + * Pack message Inverter_Velocity. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_velocity_pack( + uint8_t *dst_p, + const struct can1_inverter_velocity_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Velocity. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_velocity_unpack( + struct can1_inverter_velocity_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Velocity. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_velocity_init(struct can1_inverter_velocity_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_inverter_velocity_inverter_1_velocity_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_velocity_inverter_1_velocity_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_velocity_inverter_1_velocity_is_in_range(int32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_inverter_velocity_inverter_2_velocity_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_velocity_inverter_2_velocity_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_velocity_inverter_2_velocity_is_in_range(int32_t value); + +/** + * Pack message Inverter_Errors_Warnings. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_errors_warnings_pack( + uint8_t *dst_p, + const struct can1_inverter_errors_warnings_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Errors_Warnings. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_errors_warnings_unpack( + struct can1_inverter_errors_warnings_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Errors_Warnings. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_errors_warnings_init(struct can1_inverter_errors_warnings_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_1_errors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_1_errors_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_1_errors_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_1_warnings_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_1_warnings_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_1_warnings_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_2_errors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_2_errors_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_2_errors_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_errors_warnings_inverter_2_warnings_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_errors_warnings_inverter_2_warnings_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_errors_warnings_inverter_2_warnings_is_in_range(uint16_t value); + +/** + * Pack message Inverter_Torque_Actual_CW. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_torque_actual_cw_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_actual_cw_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Torque_Actual_CW. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_torque_actual_cw_unpack( + struct can1_inverter_torque_actual_cw_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Torque_Actual_CW. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_torque_actual_cw_init(struct can1_inverter_torque_actual_cw_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_torque_actual_cw_inverter_1_control_word_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_1_control_word_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_1_control_word_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_actual_cw_inverter_1_torque_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_1_torque_actual_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_1_torque_actual_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_inverter_torque_actual_cw_inverter_2_control_word_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_2_control_word_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_2_control_word_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_actual_cw_inverter_2_torque_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_actual_cw_inverter_2_torque_actual_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_actual_cw_inverter_2_torque_actual_is_in_range(int16_t value); + +/** + * Pack message Inverter_Temperatur. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_temperatur_pack( + uint8_t *dst_p, + const struct can1_inverter_temperatur_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Temperatur. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_temperatur_unpack( + struct can1_inverter_temperatur_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Temperatur. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_temperatur_init(struct can1_inverter_temperatur_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_1_temp_inv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_1_temp_inv_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_1_temp_inv_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_1_temp_mot_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_1_temp_mot_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_1_temp_mot_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_2_temp_inv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_2_temp_inv_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_2_temp_inv_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_temperatur_inverter_2_temp_mot_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_temperatur_inverter_2_temp_mot_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_temperatur_inverter_2_temp_mot_is_in_range(int16_t value); + +/** + * Pack message Inverter_Torque_wanted. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_inverter_torque_wanted_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_wanted_t *src_p, + size_t size); + +/** + * Unpack message Inverter_Torque_wanted. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_inverter_torque_wanted_unpack( + struct can1_inverter_torque_wanted_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Inverter_Torque_wanted. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_inverter_torque_wanted_init(struct can1_inverter_torque_wanted_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_1_torque_demanded_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_1_torque_demanded_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_1_torque_demanded_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_2_torque_demanded_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_2_torque_demanded_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_2_torque_demanded_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_1_torque_desired_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_1_torque_desired_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_1_torque_desired_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_inverter_torque_wanted_inverter_2_torque_desired_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_inverter_torque_wanted_inverter_2_torque_desired_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_inverter_torque_wanted_inverter_2_torque_desired_is_in_range(int16_t value); + +/** + * Pack message SDO_Telemetrie_Rx_Node1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_rx_node1_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node1_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Rx_Node1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_rx_node1_unpack( + struct can1_sdo_telemetrie_rx_node1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Rx_Node1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_rx_node1_init(struct can1_sdo_telemetrie_rx_node1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node1_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_rx_node1_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node1_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_rx_node1_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node1_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node1_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message SDO_Telemetrie_Rx_Node2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_rx_node2_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node2_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Rx_Node2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_rx_node2_unpack( + struct can1_sdo_telemetrie_rx_node2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Rx_Node2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_rx_node2_init(struct can1_sdo_telemetrie_rx_node2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node2_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_rx_node2_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_rx_node2_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_rx_node2_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_rx_node2_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_rx_node2_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message SDO_Telemetrie_Tx. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sdo_telemetrie_tx_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_tx_t *src_p, + size_t size); + +/** + * Unpack message SDO_Telemetrie_Tx. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sdo_telemetrie_tx_unpack( + struct can1_sdo_telemetrie_tx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SDO_Telemetrie_Tx. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sdo_telemetrie_tx_init(struct can1_sdo_telemetrie_tx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_tx_sdo_command_byte_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_command_byte_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_command_byte_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sdo_telemetrie_tx_sdo_od_index_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_od_index_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_od_index_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sdo_telemetrie_tx_sdo_od_subindex_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_od_subindex_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_od_subindex_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_sdo_telemetrie_tx_sdo_data_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sdo_telemetrie_tx_sdo_data_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sdo_telemetrie_tx_sdo_data_is_in_range(uint32_t value); + +/** + * Pack message Laptop_SDO_Node. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_laptop_sdo_node_pack( + uint8_t *dst_p, + const struct can1_laptop_sdo_node_t *src_p, + size_t size); + +/** + * Unpack message Laptop_SDO_Node. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_laptop_sdo_node_unpack( + struct can1_laptop_sdo_node_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Laptop_SDO_Node. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_laptop_sdo_node_init(struct can1_laptop_sdo_node_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_laptop_sdo_node_node_id_sdo_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_laptop_sdo_node_node_id_sdo_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_laptop_sdo_node_node_id_sdo_is_in_range(uint8_t value); + +/** + * Pack message XSens_LongLat. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_long_lat_pack( + uint8_t *dst_p, + const struct can1_x_sens_long_lat_t *src_p, + size_t size); + +/** + * Unpack message XSens_LongLat. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_long_lat_unpack( + struct can1_x_sens_long_lat_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_LongLat. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_long_lat_init(struct can1_x_sens_long_lat_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_x_sens_long_lat_x_sens_latitude_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_long_lat_x_sens_latitude_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_long_lat_x_sens_latitude_is_in_range(int32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_x_sens_long_lat_x_sens_longitude_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_long_lat_x_sens_longitude_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_long_lat_x_sens_longitude_is_in_range(int32_t value); + +/** + * Pack message XSens_rateofturn. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_rateofturn_pack( + uint8_t *dst_p, + const struct can1_x_sens_rateofturn_t *src_p, + size_t size); + +/** + * Unpack message XSens_rateofturn. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_rateofturn_unpack( + struct can1_x_sens_rateofturn_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_rateofturn. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_rateofturn_init(struct can1_x_sens_rateofturn_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gyr_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gyr_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gyr_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gy_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gy_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gy_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_rateofturn_x_sens_gy_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_rateofturn_x_sens_gy_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_rateofturn_x_sens_gy_z_is_in_range(int16_t value); + +/** + * Pack message XSens_Acceleration. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_acceleration_pack( + uint8_t *dst_p, + const struct can1_x_sens_acceleration_t *src_p, + size_t size); + +/** + * Unpack message XSens_Acceleration. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_acceleration_unpack( + struct can1_x_sens_acceleration_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_Acceleration. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_acceleration_init(struct can1_x_sens_acceleration_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_acceleration_x_sens_acc_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_acceleration_x_sens_acc_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_acceleration_x_sens_acc_z_is_in_range(int16_t value); + +/** + * Pack message XSens_Velocity. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_x_sens_velocity_pack( + uint8_t *dst_p, + const struct can1_x_sens_velocity_t *src_p, + size_t size); + +/** + * Unpack message XSens_Velocity. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_x_sens_velocity_unpack( + struct can1_x_sens_velocity_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from XSens_Velocity. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_x_sens_velocity_init(struct can1_x_sens_velocity_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_x_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_x_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_x_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_y_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_y_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_x_sens_velocity_x_sens_vel_z_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_x_sens_velocity_x_sens_vel_z_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_x_sens_velocity_x_sens_vel_z_is_in_range(int16_t value); + +/** + * Pack message Telemetrie. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_telemetrie_pack( + uint8_t *dst_p, + const struct can1_telemetrie_t *src_p, + size_t size); + +/** + * Unpack message Telemetrie. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_telemetrie_unpack( + struct can1_telemetrie_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Telemetrie. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_telemetrie_init(struct can1_telemetrie_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_ini_check_error_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_ini_check_error_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_ini_check_error_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_powermap_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_powermap_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_powermap_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_apps_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_apps_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_apps_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_brake_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_brake_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_brake_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_allow_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_allow_torque_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_allow_torque_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_asp_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_asp_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_asp_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_pressure_sensor_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_pressure_sensor_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_pressure_sensor_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_vectoring_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_vectoring_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_vectoring_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_reku_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_reku_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_reku_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_traction_control_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_traction_control_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_traction_control_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_ts_deactivate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_ts_deactivate_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_ts_deactivate_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_limit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_limit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_limit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_power_limit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_power_limit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_power_limit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_limit_dynamisch_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_limit_dynamisch_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_limit_dynamisch_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_ohne_limit_l_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_ohne_limit_l_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_ohne_limit_l_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_telemetrie_torque_ohne_limit_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_telemetrie_torque_ohne_limit_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_telemetrie_torque_ohne_limit_r_is_in_range(uint8_t value); + +/** + * Pack message Override_Powermap. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_powermap_pack( + uint8_t *dst_p, + const struct can1_override_powermap_t *src_p, + size_t size); + +/** + * Unpack message Override_Powermap. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_powermap_unpack( + struct can1_override_powermap_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Powermap. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_powermap_init(struct can1_override_powermap_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptopp_power_map_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptopp_power_map_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptopp_power_map_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_reku_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_reku_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_reku_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tv_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tv_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tv_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_slipref_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_slipref_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_slipref_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_powermap_laptop_tc_i_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_i_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_i_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_powermap_laptop_tc_p_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_p_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_p_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_powermap_laptop_tc_mumax_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_powermap_laptop_tc_mumax_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_powermap_laptop_tc_mumax_is_in_range(uint8_t value); + +/** + * Pack message Override_Laptop_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_laptop_2_pack( + uint8_t *dst_p, + const struct can1_override_laptop_2_t *src_p, + size_t size); + +/** + * Unpack message Override_Laptop_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_laptop_2_unpack( + struct can1_override_laptop_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Laptop_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_laptop_2_init(struct can1_override_laptop_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_override_laptop_2_manual_input_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_manual_input_torque_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_manual_input_torque_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_laptop_powerlimit_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_laptop_powerlimit_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_laptop_powerlimit_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_2_laptop_torque_lim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_2_laptop_torque_lim_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_2_laptop_torque_lim_is_in_range(uint8_t value); + +/** + * Pack message Override_EPSC_Cooling. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_epsc_cooling_pack( + uint8_t *dst_p, + const struct can1_override_epsc_cooling_t *src_p, + size_t size); + +/** + * Unpack message Override_EPSC_Cooling. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_epsc_cooling_unpack( + struct can1_override_epsc_cooling_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_EPSC_Cooling. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_epsc_cooling_init(struct can1_override_epsc_cooling_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_override_epsc_cooling_epsc_manual_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_epsc_manual_angle_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_epsc_manual_angle_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_epsc_mode_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_epsc_mode_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_epsc_mode_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ac_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ac_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ac_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ts_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ts_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ts_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ac_cooling_pwm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ac_cooling_pwm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ac_cooling_pwm_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_epsc_cooling_ts_cooling_pwm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_epsc_cooling_ts_cooling_pwm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_epsc_cooling_ts_cooling_pwm_is_in_range(uint8_t value); + +/** + * Pack message Override_Laptop. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_override_laptop_pack( + uint8_t *dst_p, + const struct can1_override_laptop_t *src_p, + size_t size); + +/** + * Unpack message Override_Laptop. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_override_laptop_unpack( + struct can1_override_laptop_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Override_Laptop. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_override_laptop_init(struct can1_override_laptop_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_r2_d_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_r2_d_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_r2_d_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_soundbox_emergency_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_soundbox_emergency_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_soundbox_emergency_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_soundbox_r2_d_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_soundbox_r2_d_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_soundbox_r2_d_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_fake_ts_active_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_fake_ts_active_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_fake_ts_active_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_apps_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_apps_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_apps_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_epsc_mode_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_epsc_mode_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_epsc_mode_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_ac_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_ac_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_ac_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_acu_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_acu_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_acu_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_drs_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_drs_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_drs_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_epsc_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_epsc_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_epsc_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_heartbeat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_heartbeat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_heartbeat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_lidar_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_lidar_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_lidar_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_pn_v1_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_pn_v1_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_pn_v1_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_pn_v2_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_pn_v2_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_pn_v2_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_pdu_ts_cooling_enable_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_pdu_ts_cooling_enable_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_pdu_ts_cooling_enable_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_power_map_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_power_map_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_power_map_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_tc_parameter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_tc_parameter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_tc_parameter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_override_laptop_override_torque_input_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_override_laptop_override_torque_input_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_override_laptop_override_torque_input_is_in_range(uint8_t value); + +/** + * Pack message APPS_Override. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_apps_override_pack( + uint8_t *dst_p, + const struct can1_apps_override_t *src_p, + size_t size); + +/** + * Unpack message APPS_Override. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_apps_override_unpack( + struct can1_apps_override_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from APPS_Override. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_apps_override_init(struct can1_apps_override_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_0_max_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_0_max_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_0_max_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_0_min_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_0_min_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_0_min_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_1_max_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_1_max_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_1_max_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_apps_override_apps_1_min_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_apps_override_apps_1_min_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_apps_override_apps_1_min_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Damper. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_damper_pack( + uint8_t *dst_p, + const struct can1_ftcu_damper_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Damper. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_damper_unpack( + struct can1_ftcu_damper_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Damper. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_damper_init(struct can1_ftcu_damper_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_fr_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_damper_ftcu_damper_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_damper_ftcu_damper_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_damper_ftcu_damper_rr_is_in_range(uint16_t value); + +/** + * Pack message FTCU_ParamConfirm. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_param_confirm_pack( + uint8_t *dst_p, + const struct can1_ftcu_param_confirm_t *src_p, + size_t size); + +/** + * Unpack message FTCU_ParamConfirm. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_param_confirm_unpack( + struct can1_ftcu_param_confirm_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_ParamConfirm. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_param_confirm_init(struct can1_ftcu_param_confirm_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_param_confirm_ftcu_param_confirm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_param_confirm_ftcu_param_confirm_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_param_confirm_ftcu_param_confirm_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_10Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_10_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_10Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_10_hz_unpack( + struct can1_sensornode_f_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_10Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_10_hz_init(struct can1_sensornode_f_10_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_ls_l_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_ls_l_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_ls_l_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_ls_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_ls_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_ls_r_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_pre_bots_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_pre_bots_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_pre_bots_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_post_ins_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_post_ins_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_post_ins_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_sdc_m_post_bspd_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_sdc_m_post_bspd_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_sdc_m_post_bspd_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_bdts_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_bdts_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_bdts_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_10_hz_bdts_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_10_hz_bdts_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_10_hz_bdts_fr_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_100Hz_1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_100_hz_1_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_1_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_100Hz_1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_100_hz_1_unpack( + struct can1_sensornode_f_100_hz_1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_100Hz_1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_100_hz_1_init(struct can1_sensornode_f_100_hz_1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_apps_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_apps_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_apps_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_apps_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_apps_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_apps_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_bp_f_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_bp_f_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_bp_f_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_1_sas_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_sas_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_sas_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_wss_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_wss_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_wss_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_f_100_hz_1_wss_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_1_wss_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_1_wss_fr_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_F_100Hz_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_100_hz_2_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_2_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_100Hz_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_100_hz_2_unpack( + struct can1_sensornode_f_100_hz_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_100Hz_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_100_hz_2_init(struct can1_sensornode_f_100_hz_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_2_ds_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_2_ds_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_2_ds_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_100_hz_2_ds_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_100_hz_2_ds_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_100_hz_2_ds_fr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_F_1kHz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_f_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_1k_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_F_1kHz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_f_1k_hz_unpack( + struct can1_sensornode_f_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_F_1kHz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_f_1k_hz_init(struct can1_sensornode_f_1k_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_1k_hz_sls_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_1k_hz_sls_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_1k_hz_sls_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_f_1k_hz_sls_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_f_1k_hz_sls_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_f_1k_hz_sls_fr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_R_10Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_10_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_10Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_10_hz_unpack( + struct can1_sensornode_r_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_10Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_10_hz_init(struct can1_sensornode_r_10_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_ext_ts_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_ext_ts_on_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_ext_ts_on_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_sdc_m_pre_tsms_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_sdc_m_pre_tsms_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_sdc_m_pre_tsms_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_sdc_m_post_tsms_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_sdc_m_post_tsms_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_sdc_m_post_tsms_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_bdts_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_bdts_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_bdts_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_bdts_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_bdts_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_bdts_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wt_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wt_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wt_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wt_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wt_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wt_dt_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wp_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wp_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wp_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_10_hz_wp_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_10_hz_wp_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_10_hz_wp_dt_is_in_range(uint8_t value); + +/** + * Pack message Sensornode_R_100Hz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_100_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_100_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_100Hz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_100_hz_unpack( + struct can1_sensornode_r_100_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_100Hz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_100_hz_init(struct can1_sensornode_r_100_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_ebs_aps_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ebs_aps_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ebs_aps_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_ebs_aps_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ebs_aps_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ebs_aps_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_bp_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_bp_r_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_bp_r_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_wss_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_wss_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_wss_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_sensornode_r_100_hz_wss_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_wss_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_wss_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_100_hz_ds_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ds_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ds_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_100_hz_ds_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_100_hz_ds_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_100_hz_ds_rr_is_in_range(uint16_t value); + +/** + * Pack message Sensornode_R_1kHz. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_sensornode_r_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_1k_hz_t *src_p, + size_t size); + +/** + * Unpack message Sensornode_R_1kHz. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_sensornode_r_1k_hz_unpack( + struct can1_sensornode_r_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Sensornode_R_1kHz. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_sensornode_r_1k_hz_init(struct can1_sensornode_r_1k_hz_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_1k_hz_sls_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_1k_hz_sls_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_1k_hz_sls_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_sensornode_r_1k_hz_sls_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_sensornode_r_1k_hz_sls_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_sensornode_r_1k_hz_sls_rr_is_in_range(uint16_t value); + +/** + * Pack message PWM_DutyCycle. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pwm_duty_cycle_pack( + uint8_t *dst_p, + const struct can1_pwm_duty_cycle_t *src_p, + size_t size); + +/** + * Unpack message PWM_DutyCycle. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pwm_duty_cycle_unpack( + struct can1_pwm_duty_cycle_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PWM_DutyCycle. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pwm_duty_cycle_init(struct can1_pwm_duty_cycle_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_assi_y_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_assi_y_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_assi_y_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_assi_b_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_assi_b_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_assi_b_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_bl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_bl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_bl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_fans_dt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_fans_dt_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_fans_dt_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_fans_bat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_fans_bat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_fans_bat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pwm_duty_cycle_dc_sbx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_duty_cycle_dc_sbx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_duty_cycle_dc_sbx_is_in_range(uint8_t value); + +/** + * Pack message PWM_Config. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pwm_config_pack( + uint8_t *dst_p, + const struct can1_pwm_config_t *src_p, + size_t size); + +/** + * Unpack message PWM_Config. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pwm_config_unpack( + struct can1_pwm_config_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PWM_Config. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pwm_config_init(struct can1_pwm_config_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm1_drs_lighting_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm1_drs_lighting_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm1_drs_lighting_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm3_fans_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm3_fans_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm3_fans_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pwm_config_freq_pwm2_sbx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pwm_config_freq_pwm2_sbx_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pwm_config_freq_pwm2_sbx_is_in_range(uint16_t value); + +/** + * Pack message Dashboard_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_dashboard_in_pack( + uint8_t *dst_p, + const struct can1_dashboard_in_t *src_p, + size_t size); + +/** + * Unpack message Dashboard_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_dashboard_in_unpack( + struct can1_dashboard_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Dashboard_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_dashboard_in_init(struct can1_dashboard_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_r2_d_button_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_r2_d_button_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_r2_d_button_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_ts_activate_button_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_ts_activate_button_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_ts_activate_button_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_race_key_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_race_key_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_race_key_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_sdc_in_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_sdc_in_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_sdc_in_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_dashboard_in_dashboard_sdc_out_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_dashboard_in_dashboard_sdc_out_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_dashboard_in_dashboard_sdc_out_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave1Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_status_unpack( + struct can1_ams_slave1_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_status_init(struct can1_ams_slave1_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave1_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave1_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave2_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log0_unpack( + struct can1_ams_slave2_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log0_init(struct can1_ams_slave2_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log1_unpack( + struct can1_ams_slave2_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log1_init(struct can1_ams_slave2_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log2_unpack( + struct can1_ams_slave2_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log2_init(struct can1_ams_slave2_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log3_unpack( + struct can1_ams_slave2_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log3_init(struct can1_ams_slave2_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave2_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log4_unpack( + struct can1_ams_slave2_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log4_init(struct can1_ams_slave2_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave2_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave2_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log5_unpack( + struct can1_ams_slave2_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log5_init(struct can1_ams_slave2_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log6_unpack( + struct can1_ams_slave5_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log6_init(struct can1_ams_slave5_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave4_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log6_unpack( + struct can1_ams_slave4_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log6_init(struct can1_ams_slave4_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave3_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log6_unpack( + struct can1_ams_slave3_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log6_init(struct can1_ams_slave3_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave2_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_log6_unpack( + struct can1_ams_slave2_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_log6_init(struct can1_ams_slave2_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave2_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave1_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log6_unpack( + struct can1_ams_slave1_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log6_init(struct can1_ams_slave1_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log5_unpack( + struct can1_ams_slave5_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log5_init(struct can1_ams_slave5_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave5_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave4_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log5_unpack( + struct can1_ams_slave4_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log5_init(struct can1_ams_slave4_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave4_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave3_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log5_unpack( + struct can1_ams_slave3_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log5_init(struct can1_ams_slave3_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave3_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave1_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log5_unpack( + struct can1_ams_slave1_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log5_init(struct can1_ams_slave1_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave1_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave5_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log4_unpack( + struct can1_ams_slave5_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log4_init(struct can1_ams_slave5_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave5_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave4_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log4_unpack( + struct can1_ams_slave4_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log4_init(struct can1_ams_slave4_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave4_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave3_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log4_unpack( + struct can1_ams_slave3_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log4_init(struct can1_ams_slave3_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave3_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave1_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log4_unpack( + struct can1_ams_slave1_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log4_init(struct can1_ams_slave1_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave1_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave5_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log3_unpack( + struct can1_ams_slave5_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log3_init(struct can1_ams_slave5_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log3_unpack( + struct can1_ams_slave4_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log3_init(struct can1_ams_slave4_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log3_unpack( + struct can1_ams_slave3_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log3_init(struct can1_ams_slave3_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log3_unpack( + struct can1_ams_slave1_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log3_init(struct can1_ams_slave1_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log2_unpack( + struct can1_ams_slave5_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log2_init(struct can1_ams_slave5_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log2_unpack( + struct can1_ams_slave4_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log2_init(struct can1_ams_slave4_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log2_unpack( + struct can1_ams_slave3_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log2_init(struct can1_ams_slave3_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log2_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log2_unpack( + struct can1_ams_slave1_log2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log2_init(struct can1_ams_slave1_log2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v8_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v8_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v9_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v9_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v10_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v10_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v10_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log2_ams_slave_id_v11_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log2_ams_slave_id_v11_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log2_ams_slave_id_v11_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log1_unpack( + struct can1_ams_slave5_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log1_init(struct can1_ams_slave5_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log1_unpack( + struct can1_ams_slave4_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log1_init(struct can1_ams_slave4_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log1_unpack( + struct can1_ams_slave3_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log1_init(struct can1_ams_slave3_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log1_unpack( + struct can1_ams_slave1_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log1_init(struct can1_ams_slave1_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave5_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_log0_unpack( + struct can1_ams_slave5_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_log0_init(struct can1_ams_slave5_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave4_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_log0_unpack( + struct can1_ams_slave4_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_log0_init(struct can1_ams_slave4_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave3_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_log0_unpack( + struct can1_ams_slave3_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_log0_init(struct can1_ams_slave3_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave1_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave1_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave1_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave1_log0_unpack( + struct can1_ams_slave1_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave1_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave1_log0_init(struct can1_ams_slave1_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave1_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave1_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave1_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message PDU_Heartbeat. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_heartbeat_pack( + uint8_t *dst_p, + const struct can1_pdu_heartbeat_t *src_p, + size_t size); + +/** + * Unpack message PDU_Heartbeat. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_heartbeat_unpack( + struct can1_pdu_heartbeat_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Heartbeat. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_heartbeat_init(struct can1_pdu_heartbeat_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_pdu_heartbeat_pdu_heartbeat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_heartbeat_pdu_heartbeat_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_heartbeat_pdu_heartbeat_is_in_range(int8_t value); + +/** + * Pack message FTCU_Pneumatik. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_pneumatik_pack( + uint8_t *dst_p, + const struct can1_ftcu_pneumatik_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Pneumatik. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_pneumatik_unpack( + struct can1_ftcu_pneumatik_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Pneumatik. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_pneumatik_init(struct can1_ftcu_pneumatik_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_pneumatik_ftcu_tank_pressure_1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_pneumatik_ftcu_tank_pressure_1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_pneumatik_ftcu_tank_pressure_2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_pneumatik_ftcu_tank_pressure_2_is_in_range(uint16_t value); + +/** + * Pack message ACU_TX_Commands. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_tx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_tx_commands_t *src_p, + size_t size); + +/** + * Unpack message ACU_TX_Commands. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_tx_commands_unpack( + struct can1_acu_tx_commands_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_TX_Commands. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_tx_commands_init(struct can1_acu_tx_commands_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_fl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_fl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_fr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_fr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_rl_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_rl_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_commands_abx_speed_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_speed_rr_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_speed_rr_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_tx_commands_abx_steering_angle_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_steering_angle_left_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_steering_angle_left_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_tx_commands_abx_steering_angle_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_commands_abx_steering_angle_right_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_commands_abx_steering_angle_right_is_in_range(int8_t value); + +/** + * Pack message ACU_RX_Commands. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_rx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_rx_commands_t *src_p, + size_t size); + +/** + * Unpack message ACU_RX_Commands. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_rx_commands_unpack( + struct can1_acu_rx_commands_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_RX_Commands. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_rx_commands_init(struct can1_acu_rx_commands_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_commands_acu_speed_target_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_speed_target_left_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_speed_target_left_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_commands_acu_speed_target_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_speed_target_right_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_speed_target_right_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_rx_commands_acu_steering_angle_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_steering_angle_right_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_steering_angle_right_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_acu_rx_commands_acu_steering_angle_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_commands_acu_steering_angle_left_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_commands_acu_steering_angle_left_is_in_range(int8_t value); + +/** + * Pack message ACU_RX. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_rx_pack( + uint8_t *dst_p, + const struct can1_acu_rx_t *src_p, + size_t size); + +/** + * Unpack message ACU_RX. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_rx_unpack( + struct can1_acu_rx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_RX. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_rx_init(struct can1_acu_rx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_as_mission_complete_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_as_mission_complete_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_as_mission_complete_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_as_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_as_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_as_ok_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_lap_count_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_lap_count_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_lap_count_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_cones_all_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_cones_all_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_cones_all_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_rx_acu_cones_actual_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_rx_acu_cones_actual_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_rx_acu_cones_actual_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave0_Log0. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log0_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log0. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log0_unpack( + struct can1_ams_slave0_log0_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log0. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log0_init(struct can1_ams_slave0_log0_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v0_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v0_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log0_ams_slave_id_v3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log0_ams_slave_id_v3_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log0_ams_slave_id_v3_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log1_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log1_unpack( + struct can1_ams_slave0_log1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log1_init(struct can1_ams_slave0_log1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v4_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v4_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v5_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v5_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v6_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v6_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log1_ams_slave_id_v7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log1_ams_slave_id_v7_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log1_ams_slave_id_v7_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log3_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log3_unpack( + struct can1_ams_slave0_log3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log3_init(struct can1_ams_slave0_log3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v12_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v12_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v12_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v13_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v13_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v13_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v14_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v14_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v14_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_log3_ams_slave_id_v15_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log3_ams_slave_id_v15_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log3_ams_slave_id_v15_is_in_range(uint16_t value); + +/** + * Pack message AMS_Slave0_Log4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log4_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log4_unpack( + struct can1_ams_slave0_log4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log4_init(struct can1_ams_slave0_log4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave0_log4_ams_slave_id_failed_sensors_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log4_ams_slave_id_failed_sensors_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave0_Log5. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log5_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log5. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log5_unpack( + struct can1_ams_slave0_log5_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log5. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log5_init(struct can1_ams_slave0_log5_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t0_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t0_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t0_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t1_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t1_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t2_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t2_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t3_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t3_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t4_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t4_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t5_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t5_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t5_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t6_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t6_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t6_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log5_ams_slave_id_t7_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log5_ams_slave_id_t7_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log5_ams_slave_id_t7_is_in_range(int8_t value); + +/** + * Pack message AMS_Slave0_Log6. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log6_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0_Log6. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_log6_unpack( + struct can1_ams_slave0_log6_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0_Log6. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_log6_init(struct can1_ams_slave0_log6_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log6_ams_slave_id_t8_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log6_ams_slave_id_t8_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log6_ams_slave_id_t8_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_slave0_log6_ams_slave_id_t9_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_log6_ams_slave_id_t9_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_log6_ams_slave_id_t9_is_in_range(int8_t value); + +/** + * Pack message ACU_TX. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_acu_tx_pack( + uint8_t *dst_p, + const struct can1_acu_tx_t *src_p, + size_t size); + +/** + * Unpack message ACU_TX. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_acu_tx_unpack( + struct can1_acu_tx_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from ACU_TX. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_acu_tx_init(struct can1_acu_tx_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_as_mission_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_as_mission_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_as_mission_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_as_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_as_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_as_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_power_off_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_power_off_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_power_off_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_reset_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_reset_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_reset_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_acu_allow_torque_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_acu_allow_torque_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_acu_allow_torque_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_acu_tx_abx_con_mon_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_acu_tx_abx_con_mon_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_acu_tx_abx_con_mon_error_is_in_range(uint8_t value); + +/** + * Pack message AMS_Slave5Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave5_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave5Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave5_status_unpack( + struct can1_ams_slave5_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave5Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave5_status_init(struct can1_ams_slave5_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave5_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave5_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave5_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave5_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave5_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave4Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave4_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave4Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave4_status_unpack( + struct can1_ams_slave4_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave4Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave4_status_init(struct can1_ams_slave4_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave4_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave4_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave4_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave4_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave4_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave3Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave3_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave3Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave3_status_unpack( + struct can1_ams_slave3_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave3Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave3_status_init(struct can1_ams_slave3_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave3_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave3_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave3_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave3_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave3_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Slave2Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave2_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave2Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave2_status_unpack( + struct can1_ams_slave2_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave2Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave2_status_init(struct can1_ams_slave2_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave2_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave2_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave2_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave2_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave2_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Error. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_error_pack( + uint8_t *dst_p, + const struct can1_ams_error_t *src_p, + size_t size); + +/** + * Unpack message AMS_Error. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_error_unpack( + struct can1_ams_error_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Error. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_error_init(struct can1_ams_error_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_error_ams_error_kind_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_error_ams_error_kind_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_error_ams_error_kind_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ams_error_ams_error_arg_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_error_ams_error_arg_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_error_ams_error_arg_is_in_range(int8_t value); + +/** + * Pack message FTCU_Cooling. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_cooling_pack( + uint8_t *dst_p, + const struct can1_ftcu_cooling_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Cooling. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_cooling_unpack( + struct can1_ftcu_cooling_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Cooling. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_cooling_init(struct can1_ftcu_cooling_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_cooling_ftcu_water_pressure_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_pressure_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_pressure_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_cooling_ftcu_water_pressure_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_pressure_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_pressure_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_water_temperature_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_temperature_1_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_temperature_1_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_water_temperature_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_water_temperature_2_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_water_temperature_2_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_cooling_ftcu_flow_rate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_cooling_ftcu_flow_rate_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_cooling_ftcu_flow_rate_is_in_range(uint16_t value); + +/** + * Pack message FTCU_BrakeT. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_brake_t_pack( + uint8_t *dst_p, + const struct can1_ftcu_brake_t_t *src_p, + size_t size); + +/** + * Unpack message FTCU_BrakeT. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_brake_t_unpack( + struct can1_ftcu_brake_t_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_BrakeT. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_brake_t_init(struct can1_ftcu_brake_t_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_fl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_fl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_fr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_fr_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_rl_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_rl_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_brake_t_ftcu_brake_t_rr_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_brake_t_ftcu_brake_t_rr_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Wheelspeed. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_wheelspeed_pack( + uint8_t *dst_p, + const struct can1_ftcu_wheelspeed_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Wheelspeed. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_wheelspeed_unpack( + struct can1_ftcu_wheelspeed_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Wheelspeed. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_wheelspeed_init(struct can1_ftcu_wheelspeed_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_wheelspeed_ftcu_distance_session_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_wheelspeed_ftcu_distance_session_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_wheelspeed_ftcu_distance_session_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Timings. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_timings_pack( + uint8_t *dst_p, + const struct can1_ftcu_timings_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Timings. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_timings_unpack( + struct can1_ftcu_timings_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Timings. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_timings_init(struct can1_ftcu_timings_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_laptime_best_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_laptime_best_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_laptime_best_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_laptime_last_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_laptime_last_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_laptime_last_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_sectortime_best_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_sectortime_best_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_sectortime_best_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_timings_ftcu_sectortime_last_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_timings_ftcu_sectortime_last_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_timings_ftcu_sectortime_last_is_in_range(uint16_t value); + +/** + * Pack message FTCU_Driver. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ftcu_driver_pack( + uint8_t *dst_p, + const struct can1_ftcu_driver_t *src_p, + size_t size); + +/** + * Unpack message FTCU_Driver. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ftcu_driver_unpack( + struct can1_ftcu_driver_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from FTCU_Driver. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ftcu_driver_init(struct can1_ftcu_driver_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_apps_percent_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_apps_percent_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_apps_percent_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_driver_ftcu_brake_pressure_f_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_brake_pressure_f_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_brake_pressure_f_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ftcu_driver_ftcu_brake_pressure_r_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_brake_pressure_r_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_brake_pressure_r_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int8_t can1_ftcu_driver_ftcu_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_steering_angle_decode(int8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_steering_angle_is_in_range(int8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_speed_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_speed_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_speed_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_lapcounter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_lapcounter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_lapcounter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ftcu_driver_ftcu_sectorcounter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ftcu_driver_ftcu_sectorcounter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ftcu_driver_ftcu_sectorcounter_is_in_range(uint8_t value); + +/** + * Pack message TTS_RR. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_rr_pack( + uint8_t *dst_p, + const struct can1_tts_rr_t *src_p, + size_t size); + +/** + * Unpack message TTS_RR. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_rr_unpack( + struct can1_tts_rr_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_RR. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_rr_init(struct can1_tts_rr_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rr_tts_outet_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_outet_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_outet_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_rr_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rr_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rr_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_RL. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_rl_pack( + uint8_t *dst_p, + const struct can1_tts_rl_t *src_p, + size_t size); + +/** + * Unpack message TTS_RL. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_rl_unpack( + struct can1_tts_rl_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_RL. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_rl_init(struct can1_tts_rl_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_rl_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_rl_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_rl_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_rl_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_FR. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_fr_pack( + uint8_t *dst_p, + const struct can1_tts_fr_t *src_p, + size_t size); + +/** + * Unpack message TTS_FR. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_fr_unpack( + struct can1_tts_fr_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_FR. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_fr_init(struct can1_tts_fr_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fr_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_fr_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fr_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fr_tts_status_is_in_range(uint8_t value); + +/** + * Pack message TTS_FL. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_tts_fl_pack( + uint8_t *dst_p, + const struct can1_tts_fl_t *src_p, + size_t size); + +/** + * Unpack message TTS_FL. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_tts_fl_unpack( + struct can1_tts_fl_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from TTS_FL. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_tts_fl_init(struct can1_tts_fl_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_outer_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_outer_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_outer_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_left_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_left_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_left_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_center_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_center_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_center_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_tts_fl_tts_outer_right_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_outer_right_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_outer_right_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_tts_fl_tts_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_tts_fl_tts_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_tts_fl_tts_status_is_in_range(uint8_t value); + +/** + * Pack message STW_Param_Set. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_param_set_pack( + uint8_t *dst_p, + const struct can1_stw_param_set_t *src_p, + size_t size); + +/** + * Unpack message STW_Param_Set. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_param_set_unpack( + struct can1_stw_param_set_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_Param_Set. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_param_set_init(struct can1_stw_param_set_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_stw_param_set_stw_param_set_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_set_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_set_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_slipref_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_slipref_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_slipref_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_mumax_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_mumax_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_mumax_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_i_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_i_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_i_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_plim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_plim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_plim_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tlim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tlim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tlim_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_p_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_p_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_p_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_reku_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_reku_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_reku_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tc_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tc_on_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tc_on_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_tv_on_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_tv_on_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_tv_on_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_discipline_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_discipline_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_discipline_is_in_range(uint32_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_stw_param_set_stw_param_slim_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_param_set_stw_param_slim_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_param_set_stw_param_slim_is_in_range(uint32_t value); + +/** + * Pack message AMS_Slave0Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave0_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Slave0Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave0_status_unpack( + struct can1_ams_slave0_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Slave0Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave0_status_init(struct can1_ams_slave0_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_error_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_error_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_error_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave0_status_ams_slave_status_temp_sensor_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_temp_sensor_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_status_ams_slave_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_slave0_status_ams_slave_status_max_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_max_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ams_slave0_status_ams_slave_status_max_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave0_status_ams_slave_status_max_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave0_status_ams_slave_status_max_temp_is_in_range(int16_t value); + +/** + * Pack message SSU_Message. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ssu_message_pack( + uint8_t *dst_p, + const struct can1_ssu_message_t *src_p, + size_t size); + +/** + * Unpack message SSU_Message. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ssu_message_unpack( + struct can1_ssu_message_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from SSU_Message. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ssu_message_init(struct can1_ssu_message_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ssu_message_ssu_pressure_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ssu_message_ssu_pressure_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ssu_message_ssu_pressure_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_ssu_message_ssu_air_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ssu_message_ssu_air_temp_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ssu_message_ssu_air_temp_is_in_range(int16_t value); + +/** + * Pack message AMS_Status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_status_pack( + uint8_t *dst_p, + const struct can1_ams_status_t *src_p, + size_t size); + +/** + * Unpack message AMS_Status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_status_unpack( + struct can1_ams_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_Status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_status_init(struct can1_ams_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_sdc_closed_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_sdc_closed_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_sdc_closed_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_soc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_soc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_soc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_status_min_cell_volt_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_min_cell_volt_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_min_cell_volt_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_ams_status_max_cell_temp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_max_cell_temp_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_max_cell_temp_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_imd_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_imd_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_imd_state_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_status_ams_imd_ok_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_status_ams_imd_ok_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_status_ams_imd_ok_is_in_range(uint8_t value); + +/** + * Pack message AMS_SlavePanic. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_slave_panic_pack( + uint8_t *dst_p, + const struct can1_ams_slave_panic_t *src_p, + size_t size); + +/** + * Unpack message AMS_SlavePanic. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_slave_panic_unpack( + struct can1_ams_slave_panic_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_SlavePanic. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_slave_panic_init(struct can1_ams_slave_panic_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave_panic_ams_slave_panic_slave_id_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_slave_id_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_slave_id_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_slave_panic_ams_slave_panic_kind_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_kind_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_kind_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_ams_slave_panic_ams_slave_panic_arg_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_slave_panic_ams_slave_panic_arg_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_slave_panic_ams_slave_panic_arg_is_in_range(uint32_t value); + +/** + * Pack message AMS_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_ams_in_pack( + uint8_t *dst_p, + const struct can1_ams_in_t *src_p, + size_t size); + +/** + * Unpack message AMS_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_ams_in_unpack( + struct can1_ams_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AMS_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_ams_in_init(struct can1_ams_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_ts_activate_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_ts_activate_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_ts_activate_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_inverters_discharged_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_inverters_discharged_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_inverters_discharged_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_ams_in_lap_number_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_ams_in_lap_number_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_ams_in_lap_number_is_in_range(uint8_t value); + +/** + * Pack message Shunt_Current. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_current_pack( + uint8_t *dst_p, + const struct can1_shunt_current_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Current. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_current_unpack( + struct can1_shunt_current_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Current. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_current_init(struct can1_shunt_current_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_current_shunt_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_current_shunt_current_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_current_shunt_current_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage1_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage1_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage1_unpack( + struct can1_shunt_voltage1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage1_init(struct can1_shunt_voltage1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage1_shunt_voltage1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage1_shunt_voltage1_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage1_shunt_voltage1_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage2_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage2_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage2_unpack( + struct can1_shunt_voltage2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage2_init(struct can1_shunt_voltage2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage2_shunt_voltage2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage2_shunt_voltage2_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage2_shunt_voltage2_is_in_range(int32_t value); + +/** + * Pack message Shunt_Voltage3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_voltage3_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage3_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Voltage3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_voltage3_unpack( + struct can1_shunt_voltage3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Voltage3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_voltage3_init(struct can1_shunt_voltage3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int32_t can1_shunt_voltage3_shunt_voltage3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_voltage3_shunt_voltage3_decode(int32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_voltage3_shunt_voltage3_is_in_range(int32_t value); + +/** + * Pack message Shunt_Temperature. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_shunt_temperature_pack( + uint8_t *dst_p, + const struct can1_shunt_temperature_t *src_p, + size_t size); + +/** + * Unpack message Shunt_Temperature. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_shunt_temperature_unpack( + struct can1_shunt_temperature_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from Shunt_Temperature. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_shunt_temperature_init(struct can1_shunt_temperature_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint32_t can1_shunt_temperature_shunt_temperature_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_shunt_temperature_shunt_temperature_decode(uint32_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_shunt_temperature_shunt_temperature_is_in_range(uint32_t value); + +/** + * Pack message PDU_Command. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_command_pack( + uint8_t *dst_p, + const struct can1_pdu_command_t *src_p, + size_t size); + +/** + * Unpack message PDU_Command. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_command_unpack( + struct can1_pdu_command_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Command. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_command_init(struct can1_pdu_command_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_misc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_misc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_misc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_sdc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_sdc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_sdc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_inverter_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_inverter_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_inverter_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ts_cooling_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ts_cooling_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ts_cooling_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_acc_cooling_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_acc_cooling_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_acc_cooling_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_lldar_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_lldar_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_lldar_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_epsc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_epsc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_epsc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_acu_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_acu_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_acu_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_a_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_a_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_a_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_b_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_b_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_b_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_command_pdu_enable_ebs_c_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_command_pdu_enable_ebs_c_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_command_pdu_enable_ebs_c_is_in_range(uint8_t value); + +/** + * Pack message PDU_Response. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_response_pack( + uint8_t *dst_p, + const struct can1_pdu_response_t *src_p, + size_t size); + +/** + * Unpack message PDU_Response. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_response_unpack( + struct can1_pdu_response_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Response. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_response_init(struct can1_pdu_response_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_alwayson_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_alwayson_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_alwayson_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_shutdown_circuit_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_shutdown_circuit_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_shutdown_circuit_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_lidar_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_lidar_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_lidar_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_acu_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_acu_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_acu_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_servos_regler_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_servos_regler_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_servos_regler_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_inverter_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_inverter_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_inverter_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_misc_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_misc_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_misc_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_servo_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_servo_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_servo_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_ebs_valve_1_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_ebs_valve_1_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_ebs_valve_1_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_ebs_valve_2_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_ebs_valve_2_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_ebs_valve_2_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_cs_valve_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_cs_valve_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_cs_valve_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_aggregat_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_aggregat_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_aggregat_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_steering_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_steering_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_steering_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_tsac_fans_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_tsac_fans_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_tsac_fans_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_radiatot_fans_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_radiatot_fans_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_radiatot_fans_tx_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_aggregat_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_aggregat_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_aggregat_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_pwm_pump_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_pwm_pump_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_pwm_pump_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_pdu_response_pdu_heartbeat_ok_tx_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_response_pdu_heartbeat_ok_tx_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_response_pdu_heartbeat_ok_tx_is_in_range(uint8_t value); + +/** + * Pack message AS_Mission_fb. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_as_mission_fb_pack( + uint8_t *dst_p, + const struct can1_as_mission_fb_t *src_p, + size_t size); + +/** + * Unpack message AS_Mission_fb. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_as_mission_fb_unpack( + struct can1_as_mission_fb_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from AS_Mission_fb. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_as_mission_fb_init(struct can1_as_mission_fb_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_as_mission_fb_mission_selection_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_as_mission_fb_mission_selection_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_as_mission_fb_mission_selection_is_in_range(uint8_t value); + +/** + * Pack message STW_mission_selected. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_mission_selected_pack( + uint8_t *dst_p, + const struct can1_stw_mission_selected_t *src_p, + size_t size); + +/** + * Unpack message STW_mission_selected. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_mission_selected_unpack( + struct can1_stw_mission_selected_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_mission_selected. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_mission_selected_init(struct can1_stw_mission_selected_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_mission_selected_mission_selection_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_mission_selected_mission_selection_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_mission_selected_mission_selection_is_in_range(uint8_t value); + +/** + * Pack message EPSC_out. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_out_pack( + uint8_t *dst_p, + const struct can1_epsc_out_t *src_p, + size_t size); + +/** + * Unpack message EPSC_out. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_out_unpack( + struct can1_epsc_out_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_out. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_out_init(struct can1_epsc_out_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_epsc_out_epsc_measured_rpm_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_rpm_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_rpm_is_in_range(int16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_steering_angle_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_steering_angle_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_mosfet_temperature_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_mosfet_temperature_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_mosfet_temperature_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_out_epsc_measured_voltage_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_voltage_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_voltage_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_epsc_out_epsc_measured_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_out_epsc_measured_current_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_out_epsc_measured_current_is_in_range(uint8_t value); + +/** + * Pack message EPSC_Steering_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_steering_in_pack( + uint8_t *dst_p, + const struct can1_epsc_steering_in_t *src_p, + size_t size); + +/** + * Unpack message EPSC_Steering_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_steering_in_unpack( + struct can1_epsc_steering_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_Steering_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_steering_in_init(struct can1_epsc_steering_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +int16_t can1_epsc_steering_in_epsc_desired_steering_angle_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_steering_in_epsc_desired_steering_angle_decode(int16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_steering_in_epsc_desired_steering_angle_is_in_range(int16_t value); + +/** + * Pack message STW_buttons. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_buttons_pack( + uint8_t *dst_p, + const struct can1_stw_buttons_t *src_p, + size_t size); + +/** + * Unpack message STW_buttons. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_buttons_unpack( + struct can1_stw_buttons_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_buttons. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_buttons_init(struct can1_stw_buttons_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_drs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_drs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_drs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_3_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_3_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_3_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_buttons_stw_button_4_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_buttons_stw_button_4_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_buttons_stw_button_4_is_in_range(uint8_t value); + +/** + * Pack message STW_status. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_stw_status_pack( + uint8_t *dst_p, + const struct can1_stw_status_t *src_p, + size_t size); + +/** + * Unpack message STW_status. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_stw_status_unpack( + struct can1_stw_status_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from STW_status. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_stw_status_init(struct can1_stw_status_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_lap_count_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_lap_count_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_lap_count_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_pdu_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_pdu_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_pdu_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_res_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_res_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_res_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_r2_d_progress_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_r2_d_progress_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_r2_d_progress_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_as_state_stw_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_as_state_stw_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_as_state_stw_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_as_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_as_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_as_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_app_sp_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_app_sp_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_app_sp_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_s_bspd_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_s_bspd_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_s_bspd_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_scs_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_scs_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_scs_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_con_mon_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_con_mon_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_con_mon_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_ini_chk_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_ini_chk_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_ini_chk_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_inv2_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_inv2_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_inv2_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_inv1_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_inv1_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_inv1_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_ams_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_ams_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_ams_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_err_sdc_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_err_sdc_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_err_sdc_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_sdc_status_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_sdc_status_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_sdc_status_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_inv2_ready_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_inv2_ready_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_inv2_ready_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_inv1_ready_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_inv1_ready_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_inv1_ready_is_in_range(uint8_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_stw_status_energy_per_lap_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_energy_per_lap_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_energy_per_lap_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint8_t can1_stw_status_ini_chk_state_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_stw_status_ini_chk_state_decode(uint8_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_stw_status_ini_chk_state_is_in_range(uint8_t value); + +/** + * Pack message PDU_Current_1. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_1_pack( + uint8_t *dst_p, + const struct can1_pdu_current_1_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_1. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_1_unpack( + struct can1_pdu_current_1_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_1. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_1_init(struct can1_pdu_current_1_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_always_on_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_always_on_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_always_on_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_lvms_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_lvms_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_lvms_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_asms_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_asms_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_asms_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_1_pdu_misc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_1_pdu_misc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_1_pdu_misc_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_2. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_2_pack( + uint8_t *dst_p, + const struct can1_pdu_current_2_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_2. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_2_unpack( + struct can1_pdu_current_2_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_2. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_2_init(struct can1_pdu_current_2_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_sdc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_sdc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_sdc_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_inverter_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_inverter_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_inverter_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_ts_cooling_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_ts_cooling_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_ts_cooling_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_2_pdu_acc_cooling_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_2_pdu_acc_cooling_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_2_pdu_acc_cooling_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_3. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_3_pack( + uint8_t *dst_p, + const struct can1_pdu_current_3_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_3. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_3_unpack( + struct can1_pdu_current_3_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_3. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_3_init(struct can1_pdu_current_3_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_lidar_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_lidar_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_lidar_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_drs_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_drs_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_drs_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_epsc_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_epsc_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_epsc_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_3_pdu_acu_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_3_pdu_acu_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_3_pdu_acu_current_is_in_range(uint16_t value); + +/** + * Pack message PDU_Current_4. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_pdu_current_4_pack( + uint8_t *dst_p, + const struct can1_pdu_current_4_t *src_p, + size_t size); + +/** + * Unpack message PDU_Current_4. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_pdu_current_4_unpack( + struct can1_pdu_current_4_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from PDU_Current_4. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_pdu_current_4_init(struct can1_pdu_current_4_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_4_pdu_ebs_a_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_4_pdu_ebs_a_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_4_pdu_ebs_a_current_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_pdu_current_4_pdu_ebs_b_current_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_pdu_current_4_pdu_ebs_b_current_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_pdu_current_4_pdu_ebs_b_current_is_in_range(uint16_t value); + +/** + * Pack message EPSC_Config_In. + * + * @param[out] dst_p Buffer to pack the message into. + * @param[in] src_p Data to pack. + * @param[in] size Size of dst_p. + * + * @return Size of packed data, or negative error code. + */ +int can1_epsc_config_in_pack( + uint8_t *dst_p, + const struct can1_epsc_config_in_t *src_p, + size_t size); + +/** + * Unpack message EPSC_Config_In. + * + * @param[out] dst_p Object to unpack the message into. + * @param[in] src_p Message to unpack. + * @param[in] size Size of src_p. + * + * @return zero(0) or negative error code. + */ +int can1_epsc_config_in_unpack( + struct can1_epsc_config_in_t *dst_p, + const uint8_t *src_p, + size_t size); + +/** + * Init message fields to default values from EPSC_Config_In. + * + * @param[in] msg_p Message to init. + * + * @return zero(0) on success or (-1) in case of nullptr argument. + */ +int can1_epsc_config_in_init(struct can1_epsc_config_in_t *msg_p); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_p_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_p_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_p_gain_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_i_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_i_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_i_gain_is_in_range(uint16_t value); + +/** + * Encode given signal by applying scaling and offset. + * + * @param[in] value Signal to encode. + * + * @return Encoded signal. + */ +uint16_t can1_epsc_config_in_epsc_config_d_gain_encode(double value); + +/** + * Decode given signal by applying scaling and offset. + * + * @param[in] value Signal to decode. + * + * @return Decoded signal. + */ +double can1_epsc_config_in_epsc_config_d_gain_decode(uint16_t value); + +/** + * Check that given signal is in allowed range. + * + * @param[in] value Signal to check. + * + * @return true if in range, false otherwise. + */ +bool can1_epsc_config_in_epsc_config_d_gain_is_in_range(uint16_t value); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp new file mode 100644 index 0000000..ca30c8a --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp @@ -0,0 +1,5489 @@ +#ifndef _ENDEC_HPP_ +#define _ENDEC_HPP_ + +#include "can1.h" +#include + +namespace canlib { +// frame structures +namespace frame { +namespace decoded { +namespace can1 { +struct inverter_velocity_t { + double inverter_1_velocity; + double inverter_2_velocity; +inverter_velocity_t() { + this->inverter_1_velocity = 0.0; + this->inverter_2_velocity = 0.0; +} + +inverter_velocity_t( + double inverter_1_velocity, + double inverter_2_velocity) { + this->inverter_1_velocity = inverter_1_velocity; + this->inverter_2_velocity = inverter_2_velocity; +} + +}; +struct inverter_errors_warnings_t { + double inverter_1_errors; + double inverter_1_warnings; + double inverter_2_errors; + double inverter_2_warnings; +inverter_errors_warnings_t() { + this->inverter_1_errors = 0.0; + this->inverter_1_warnings = 0.0; + this->inverter_2_errors = 0.0; + this->inverter_2_warnings = 0.0; +} + +inverter_errors_warnings_t( + double inverter_1_errors, + double inverter_1_warnings, + double inverter_2_errors, + double inverter_2_warnings) { + this->inverter_1_errors = inverter_1_errors; + this->inverter_1_warnings = inverter_1_warnings; + this->inverter_2_errors = inverter_2_errors; + this->inverter_2_warnings = inverter_2_warnings; +} + +}; +struct inverter_torque_actual_cw_t { + double inverter_1_control_word; + double inverter_1_torque_actual; + double inverter_2_control_word; + double inverter_2_torque_actual; +inverter_torque_actual_cw_t() { + this->inverter_1_control_word = 0.0; + this->inverter_1_torque_actual = 0.0; + this->inverter_2_control_word = 0.0; + this->inverter_2_torque_actual = 0.0; +} + +inverter_torque_actual_cw_t( + double inverter_1_control_word, + double inverter_1_torque_actual, + double inverter_2_control_word, + double inverter_2_torque_actual) { + this->inverter_1_control_word = inverter_1_control_word; + this->inverter_1_torque_actual = inverter_1_torque_actual; + this->inverter_2_control_word = inverter_2_control_word; + this->inverter_2_torque_actual = inverter_2_torque_actual; +} + +}; +struct inverter_temperatur_t { + double inverter_1_temp_inv; + double inverter_1_temp_mot; + double inverter_2_temp_inv; + double inverter_2_temp_mot; +inverter_temperatur_t() { + this->inverter_1_temp_inv = 0.0; + this->inverter_1_temp_mot = 0.0; + this->inverter_2_temp_inv = 0.0; + this->inverter_2_temp_mot = 0.0; +} + +inverter_temperatur_t( + double inverter_1_temp_inv, + double inverter_1_temp_mot, + double inverter_2_temp_inv, + double inverter_2_temp_mot) { + this->inverter_1_temp_inv = inverter_1_temp_inv; + this->inverter_1_temp_mot = inverter_1_temp_mot; + this->inverter_2_temp_inv = inverter_2_temp_inv; + this->inverter_2_temp_mot = inverter_2_temp_mot; +} + +}; +struct inverter_torque_wanted_t { + double inverter_1_torque_demanded; + double inverter_2_torque_demanded; + double inverter_1_torque_desired; + double inverter_2_torque_desired; +inverter_torque_wanted_t() { + this->inverter_1_torque_demanded = 0.0; + this->inverter_2_torque_demanded = 0.0; + this->inverter_1_torque_desired = 0.0; + this->inverter_2_torque_desired = 0.0; +} + +inverter_torque_wanted_t( + double inverter_1_torque_demanded, + double inverter_2_torque_demanded, + double inverter_1_torque_desired, + double inverter_2_torque_desired) { + this->inverter_1_torque_demanded = inverter_1_torque_demanded; + this->inverter_2_torque_demanded = inverter_2_torque_demanded; + this->inverter_1_torque_desired = inverter_1_torque_desired; + this->inverter_2_torque_desired = inverter_2_torque_desired; +} + +}; +struct sdo_telemetrie_rx_node1_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_rx_node1_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_rx_node1_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct sdo_telemetrie_rx_node2_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_rx_node2_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_rx_node2_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct sdo_telemetrie_tx_t { + double sdo_command_byte; + double sdo_od_index; + double sdo_od_subindex; + double sdo_data; +sdo_telemetrie_tx_t() { + this->sdo_command_byte = 0.0; + this->sdo_od_index = 0.0; + this->sdo_od_subindex = 0.0; + this->sdo_data = 0.0; +} + +sdo_telemetrie_tx_t( + double sdo_command_byte, + double sdo_od_index, + double sdo_od_subindex, + double sdo_data) { + this->sdo_command_byte = sdo_command_byte; + this->sdo_od_index = sdo_od_index; + this->sdo_od_subindex = sdo_od_subindex; + this->sdo_data = sdo_data; +} + +}; +struct laptop_sdo_node_t { + double node_id_sdo; +laptop_sdo_node_t() { + this->node_id_sdo = 0.0; +} + +laptop_sdo_node_t( + double node_id_sdo) { + this->node_id_sdo = node_id_sdo; +} + +}; +struct x_sens_long_lat_t { + double x_sens_latitude; + double x_sens_longitude; +x_sens_long_lat_t() { + this->x_sens_latitude = 0.0; + this->x_sens_longitude = 0.0; +} + +x_sens_long_lat_t( + double x_sens_latitude, + double x_sens_longitude) { + this->x_sens_latitude = x_sens_latitude; + this->x_sens_longitude = x_sens_longitude; +} + +}; +struct x_sens_rateofturn_t { + double x_sens_gyr_x; + double x_sens_gy_y; + double x_sens_gy_z; +x_sens_rateofturn_t() { + this->x_sens_gyr_x = 0.0; + this->x_sens_gy_y = 0.0; + this->x_sens_gy_z = 0.0; +} + +x_sens_rateofturn_t( + double x_sens_gyr_x, + double x_sens_gy_y, + double x_sens_gy_z) { + this->x_sens_gyr_x = x_sens_gyr_x; + this->x_sens_gy_y = x_sens_gy_y; + this->x_sens_gy_z = x_sens_gy_z; +} + +}; +struct x_sens_acceleration_t { + double x_sens_acc_x; + double x_sens_acc_y; + double x_sens_acc_z; +x_sens_acceleration_t() { + this->x_sens_acc_x = 0.0; + this->x_sens_acc_y = 0.0; + this->x_sens_acc_z = 0.0; +} + +x_sens_acceleration_t( + double x_sens_acc_x, + double x_sens_acc_y, + double x_sens_acc_z) { + this->x_sens_acc_x = x_sens_acc_x; + this->x_sens_acc_y = x_sens_acc_y; + this->x_sens_acc_z = x_sens_acc_z; +} + +}; +struct x_sens_velocity_t { + double x_sens_vel_x; + double x_sens_vel_y; + double x_sens_vel_z; +x_sens_velocity_t() { + this->x_sens_vel_x = 0.0; + this->x_sens_vel_y = 0.0; + this->x_sens_vel_z = 0.0; +} + +x_sens_velocity_t( + double x_sens_vel_x, + double x_sens_vel_y, + double x_sens_vel_z) { + this->x_sens_vel_x = x_sens_vel_x; + this->x_sens_vel_y = x_sens_vel_y; + this->x_sens_vel_z = x_sens_vel_z; +} + +}; +struct telemetrie_t { + double ini_check_error_state; + double powermap; + double apps_ok; + double brake_ok; + double allow_torque; + double asp_ok; + double pressure_sensor_ok; + double torque_vectoring_on; + double reku_on; + double traction_control_on; + double ts_deactivate; + double torque_limit; + double power_limit; + double torque_limit_dynamisch; + double torque_ohne_limit_l; + double torque_ohne_limit_r; +telemetrie_t() { + this->ini_check_error_state = 0.0; + this->powermap = 0.0; + this->apps_ok = 0.0; + this->brake_ok = 0.0; + this->allow_torque = 0.0; + this->asp_ok = 0.0; + this->pressure_sensor_ok = 0.0; + this->torque_vectoring_on = 0.0; + this->reku_on = 0.0; + this->traction_control_on = 0.0; + this->ts_deactivate = 0.0; + this->torque_limit = 0.0; + this->power_limit = 0.0; + this->torque_limit_dynamisch = 0.0; + this->torque_ohne_limit_l = 0.0; + this->torque_ohne_limit_r = 0.0; +} + +telemetrie_t( + double ini_check_error_state, + double powermap, + double apps_ok, + double brake_ok, + double allow_torque, + double asp_ok, + double pressure_sensor_ok, + double torque_vectoring_on, + double reku_on, + double traction_control_on, + double ts_deactivate, + double torque_limit, + double power_limit, + double torque_limit_dynamisch, + double torque_ohne_limit_l, + double torque_ohne_limit_r) { + this->ini_check_error_state = ini_check_error_state; + this->powermap = powermap; + this->apps_ok = apps_ok; + this->brake_ok = brake_ok; + this->allow_torque = allow_torque; + this->asp_ok = asp_ok; + this->pressure_sensor_ok = pressure_sensor_ok; + this->torque_vectoring_on = torque_vectoring_on; + this->reku_on = reku_on; + this->traction_control_on = traction_control_on; + this->ts_deactivate = ts_deactivate; + this->torque_limit = torque_limit; + this->power_limit = power_limit; + this->torque_limit_dynamisch = torque_limit_dynamisch; + this->torque_ohne_limit_l = torque_ohne_limit_l; + this->torque_ohne_limit_r = torque_ohne_limit_r; +} + +}; +struct override_powermap_t { + double laptopp_power_map; + double laptop_reku; + double laptop_tc; + double laptop_tv; + double laptop_slipref; + double laptop_tc_i; + double laptop_tc_p; + double laptop_tc_mumax; +override_powermap_t() { + this->laptopp_power_map = 0.0; + this->laptop_reku = 0.0; + this->laptop_tc = 0.0; + this->laptop_tv = 0.0; + this->laptop_slipref = 0.0; + this->laptop_tc_i = 0.0; + this->laptop_tc_p = 0.0; + this->laptop_tc_mumax = 0.0; +} + +override_powermap_t( + double laptopp_power_map, + double laptop_reku, + double laptop_tc, + double laptop_tv, + double laptop_slipref, + double laptop_tc_i, + double laptop_tc_p, + double laptop_tc_mumax) { + this->laptopp_power_map = laptopp_power_map; + this->laptop_reku = laptop_reku; + this->laptop_tc = laptop_tc; + this->laptop_tv = laptop_tv; + this->laptop_slipref = laptop_slipref; + this->laptop_tc_i = laptop_tc_i; + this->laptop_tc_p = laptop_tc_p; + this->laptop_tc_mumax = laptop_tc_mumax; +} + +}; +struct override_laptop_2_t { + double as_mission; + double as_state; + double manual_input_torque; + double laptop_powerlimit; + double laptop_torque_lim; +override_laptop_2_t() { + this->as_mission = 0.0; + this->as_state = 0.0; + this->manual_input_torque = 0.0; + this->laptop_powerlimit = 0.0; + this->laptop_torque_lim = 0.0; +} + +override_laptop_2_t( + double as_mission, + double as_state, + double manual_input_torque, + double laptop_powerlimit, + double laptop_torque_lim) { + this->as_mission = as_mission; + this->as_state = as_state; + this->manual_input_torque = manual_input_torque; + this->laptop_powerlimit = laptop_powerlimit; + this->laptop_torque_lim = laptop_torque_lim; +} + +}; +struct override_epsc_cooling_t { + double epsc_manual_angle; + double epsc_mode; + double ac_cooling_enable; + double ts_cooling_enable; + double ac_cooling_pwm; + double ts_cooling_pwm; +override_epsc_cooling_t() { + this->epsc_manual_angle = 0.0; + this->epsc_mode = 0.0; + this->ac_cooling_enable = 0.0; + this->ts_cooling_enable = 0.0; + this->ac_cooling_pwm = 0.0; + this->ts_cooling_pwm = 0.0; +} + +override_epsc_cooling_t( + double epsc_manual_angle, + double epsc_mode, + double ac_cooling_enable, + double ts_cooling_enable, + double ac_cooling_pwm, + double ts_cooling_pwm) { + this->epsc_manual_angle = epsc_manual_angle; + this->epsc_mode = epsc_mode; + this->ac_cooling_enable = ac_cooling_enable; + this->ts_cooling_enable = ts_cooling_enable; + this->ac_cooling_pwm = ac_cooling_pwm; + this->ts_cooling_pwm = ts_cooling_pwm; +} + +}; +struct override_laptop_t { + double fake_r2_d; + double fake_soundbox_emergency; + double fake_soundbox_r2_d; + double fake_ts_active; + double override_apps; + double override_as_mission; + double override_as_state; + double override_epsc_mode; + double override_pdu_ac_cooling_enable; + double override_pdu_acu_enable; + double override_pdu_drs_enable; + double override_pdu_epsc_enable; + double override_pdu_heartbeat; + double override_pdu_lidar_enable; + double override_pdu_pn_v1_enable; + double override_pdu_pn_v2_enable; + double override_pdu_ts_cooling_enable; + double override_power_map; + double override_tc_parameter; + double override_torque_input; +override_laptop_t() { + this->fake_r2_d = 0.0; + this->fake_soundbox_emergency = 0.0; + this->fake_soundbox_r2_d = 0.0; + this->fake_ts_active = 0.0; + this->override_apps = 0.0; + this->override_as_mission = 0.0; + this->override_as_state = 0.0; + this->override_epsc_mode = 0.0; + this->override_pdu_ac_cooling_enable = 0.0; + this->override_pdu_acu_enable = 0.0; + this->override_pdu_drs_enable = 0.0; + this->override_pdu_epsc_enable = 0.0; + this->override_pdu_heartbeat = 0.0; + this->override_pdu_lidar_enable = 0.0; + this->override_pdu_pn_v1_enable = 0.0; + this->override_pdu_pn_v2_enable = 0.0; + this->override_pdu_ts_cooling_enable = 0.0; + this->override_power_map = 0.0; + this->override_tc_parameter = 0.0; + this->override_torque_input = 0.0; +} + +override_laptop_t( + double fake_r2_d, + double fake_soundbox_emergency, + double fake_soundbox_r2_d, + double fake_ts_active, + double override_apps, + double override_as_mission, + double override_as_state, + double override_epsc_mode, + double override_pdu_ac_cooling_enable, + double override_pdu_acu_enable, + double override_pdu_drs_enable, + double override_pdu_epsc_enable, + double override_pdu_heartbeat, + double override_pdu_lidar_enable, + double override_pdu_pn_v1_enable, + double override_pdu_pn_v2_enable, + double override_pdu_ts_cooling_enable, + double override_power_map, + double override_tc_parameter, + double override_torque_input) { + this->fake_r2_d = fake_r2_d; + this->fake_soundbox_emergency = fake_soundbox_emergency; + this->fake_soundbox_r2_d = fake_soundbox_r2_d; + this->fake_ts_active = fake_ts_active; + this->override_apps = override_apps; + this->override_as_mission = override_as_mission; + this->override_as_state = override_as_state; + this->override_epsc_mode = override_epsc_mode; + this->override_pdu_ac_cooling_enable = override_pdu_ac_cooling_enable; + this->override_pdu_acu_enable = override_pdu_acu_enable; + this->override_pdu_drs_enable = override_pdu_drs_enable; + this->override_pdu_epsc_enable = override_pdu_epsc_enable; + this->override_pdu_heartbeat = override_pdu_heartbeat; + this->override_pdu_lidar_enable = override_pdu_lidar_enable; + this->override_pdu_pn_v1_enable = override_pdu_pn_v1_enable; + this->override_pdu_pn_v2_enable = override_pdu_pn_v2_enable; + this->override_pdu_ts_cooling_enable = override_pdu_ts_cooling_enable; + this->override_power_map = override_power_map; + this->override_tc_parameter = override_tc_parameter; + this->override_torque_input = override_torque_input; +} + +}; +struct apps_override_t { + double apps_0_max; + double apps_0_min; + double apps_1_max; + double apps_1_min; +apps_override_t() { + this->apps_0_max = 0.0; + this->apps_0_min = 0.0; + this->apps_1_max = 0.0; + this->apps_1_min = 0.0; +} + +apps_override_t( + double apps_0_max, + double apps_0_min, + double apps_1_max, + double apps_1_min) { + this->apps_0_max = apps_0_max; + this->apps_0_min = apps_0_min; + this->apps_1_max = apps_1_max; + this->apps_1_min = apps_1_min; +} + +}; +struct ftcu_damper_t { + double ftcu_damper_fl; + double ftcu_damper_fr; + double ftcu_damper_rl; + double ftcu_damper_rr; +ftcu_damper_t() { + this->ftcu_damper_fl = 0.0; + this->ftcu_damper_fr = 0.0; + this->ftcu_damper_rl = 0.0; + this->ftcu_damper_rr = 0.0; +} + +ftcu_damper_t( + double ftcu_damper_fl, + double ftcu_damper_fr, + double ftcu_damper_rl, + double ftcu_damper_rr) { + this->ftcu_damper_fl = ftcu_damper_fl; + this->ftcu_damper_fr = ftcu_damper_fr; + this->ftcu_damper_rl = ftcu_damper_rl; + this->ftcu_damper_rr = ftcu_damper_rr; +} + +}; +struct ftcu_param_confirm_t { + double ftcu_param_confirm; +ftcu_param_confirm_t() { + this->ftcu_param_confirm = 0.0; +} + +ftcu_param_confirm_t( + double ftcu_param_confirm) { + this->ftcu_param_confirm = ftcu_param_confirm; +} + +}; +struct sensornode_f_10_hz_t { + double ls_l; + double ls_r; + double sdc_m_pre_bots; + double sdc_m_post_ins; + double sdc_m_post_bspd; + double bdts_fl; + double bdts_fr; +sensornode_f_10_hz_t() { + this->ls_l = 0.0; + this->ls_r = 0.0; + this->sdc_m_pre_bots = 0.0; + this->sdc_m_post_ins = 0.0; + this->sdc_m_post_bspd = 0.0; + this->bdts_fl = 0.0; + this->bdts_fr = 0.0; +} + +sensornode_f_10_hz_t( + double ls_l, + double ls_r, + double sdc_m_pre_bots, + double sdc_m_post_ins, + double sdc_m_post_bspd, + double bdts_fl, + double bdts_fr) { + this->ls_l = ls_l; + this->ls_r = ls_r; + this->sdc_m_pre_bots = sdc_m_pre_bots; + this->sdc_m_post_ins = sdc_m_post_ins; + this->sdc_m_post_bspd = sdc_m_post_bspd; + this->bdts_fl = bdts_fl; + this->bdts_fr = bdts_fr; +} + +}; +struct sensornode_f_100_hz_1_t { + double apps_1; + double apps_2; + double bp_f; + double sas; + double wss_fl; + double wss_fr; +sensornode_f_100_hz_1_t() { + this->apps_1 = 0.0; + this->apps_2 = 0.0; + this->bp_f = 0.0; + this->sas = 0.0; + this->wss_fl = 0.0; + this->wss_fr = 0.0; +} + +sensornode_f_100_hz_1_t( + double apps_1, + double apps_2, + double bp_f, + double sas, + double wss_fl, + double wss_fr) { + this->apps_1 = apps_1; + this->apps_2 = apps_2; + this->bp_f = bp_f; + this->sas = sas; + this->wss_fl = wss_fl; + this->wss_fr = wss_fr; +} + +}; +struct sensornode_f_100_hz_2_t { + double ds_fl; + double ds_fr; +sensornode_f_100_hz_2_t() { + this->ds_fl = 0.0; + this->ds_fr = 0.0; +} + +sensornode_f_100_hz_2_t( + double ds_fl, + double ds_fr) { + this->ds_fl = ds_fl; + this->ds_fr = ds_fr; +} + +}; +struct sensornode_f_1k_hz_t { + double sls_fl; + double sls_fr; +sensornode_f_1k_hz_t() { + this->sls_fl = 0.0; + this->sls_fr = 0.0; +} + +sensornode_f_1k_hz_t( + double sls_fl, + double sls_fr) { + this->sls_fl = sls_fl; + this->sls_fr = sls_fr; +} + +}; +struct sensornode_r_10_hz_t { + double ext_ts_on; + double sdc_m_pre_tsms; + double sdc_m_post_tsms; + double bdts_rl; + double bdts_rr; + double wt_bat; + double wt_dt; + double wp_bat; + double wp_dt; +sensornode_r_10_hz_t() { + this->ext_ts_on = 0.0; + this->sdc_m_pre_tsms = 0.0; + this->sdc_m_post_tsms = 0.0; + this->bdts_rl = 0.0; + this->bdts_rr = 0.0; + this->wt_bat = 0.0; + this->wt_dt = 0.0; + this->wp_bat = 0.0; + this->wp_dt = 0.0; +} + +sensornode_r_10_hz_t( + double ext_ts_on, + double sdc_m_pre_tsms, + double sdc_m_post_tsms, + double bdts_rl, + double bdts_rr, + double wt_bat, + double wt_dt, + double wp_bat, + double wp_dt) { + this->ext_ts_on = ext_ts_on; + this->sdc_m_pre_tsms = sdc_m_pre_tsms; + this->sdc_m_post_tsms = sdc_m_post_tsms; + this->bdts_rl = bdts_rl; + this->bdts_rr = bdts_rr; + this->wt_bat = wt_bat; + this->wt_dt = wt_dt; + this->wp_bat = wp_bat; + this->wp_dt = wp_dt; +} + +}; +struct sensornode_r_100_hz_t { + double ebs_aps_1; + double ebs_aps_2; + double bp_r; + double wss_rl; + double wss_rr; + double ds_rl; + double ds_rr; +sensornode_r_100_hz_t() { + this->ebs_aps_1 = 0.0; + this->ebs_aps_2 = 0.0; + this->bp_r = 0.0; + this->wss_rl = 0.0; + this->wss_rr = 0.0; + this->ds_rl = 0.0; + this->ds_rr = 0.0; +} + +sensornode_r_100_hz_t( + double ebs_aps_1, + double ebs_aps_2, + double bp_r, + double wss_rl, + double wss_rr, + double ds_rl, + double ds_rr) { + this->ebs_aps_1 = ebs_aps_1; + this->ebs_aps_2 = ebs_aps_2; + this->bp_r = bp_r; + this->wss_rl = wss_rl; + this->wss_rr = wss_rr; + this->ds_rl = ds_rl; + this->ds_rr = ds_rr; +} + +}; +struct sensornode_r_1k_hz_t { + double sls_rl; + double sls_rr; +sensornode_r_1k_hz_t() { + this->sls_rl = 0.0; + this->sls_rr = 0.0; +} + +sensornode_r_1k_hz_t( + double sls_rl, + double sls_rr) { + this->sls_rl = sls_rl; + this->sls_rr = sls_rr; +} + +}; +struct pwm_duty_cycle_t { + double dc_drs; + double dc_assi_y; + double dc_assi_b; + double dc_bl; + double dc_fans_dt; + double dc_fans_bat; + double dc_sbx; +pwm_duty_cycle_t() { + this->dc_drs = 0.0; + this->dc_assi_y = 0.0; + this->dc_assi_b = 0.0; + this->dc_bl = 0.0; + this->dc_fans_dt = 0.0; + this->dc_fans_bat = 0.0; + this->dc_sbx = 0.0; +} + +pwm_duty_cycle_t( + double dc_drs, + double dc_assi_y, + double dc_assi_b, + double dc_bl, + double dc_fans_dt, + double dc_fans_bat, + double dc_sbx) { + this->dc_drs = dc_drs; + this->dc_assi_y = dc_assi_y; + this->dc_assi_b = dc_assi_b; + this->dc_bl = dc_bl; + this->dc_fans_dt = dc_fans_dt; + this->dc_fans_bat = dc_fans_bat; + this->dc_sbx = dc_sbx; +} + +}; +struct pwm_config_t { + double freq_pwm1_drs_lighting; + double freq_pwm3_fans; + double freq_pwm2_sbx; +pwm_config_t() { + this->freq_pwm1_drs_lighting = 0.0; + this->freq_pwm3_fans = 0.0; + this->freq_pwm2_sbx = 0.0; +} + +pwm_config_t( + double freq_pwm1_drs_lighting, + double freq_pwm3_fans, + double freq_pwm2_sbx) { + this->freq_pwm1_drs_lighting = freq_pwm1_drs_lighting; + this->freq_pwm3_fans = freq_pwm3_fans; + this->freq_pwm2_sbx = freq_pwm2_sbx; +} + +}; +struct dashboard_in_t { + double dashboard_r2_d_button; + double dashboard_ts_activate_button; + double dashboard_race_key; + double dashboard_sdc_in; + double dashboard_sdc_out; +dashboard_in_t() { + this->dashboard_r2_d_button = 0.0; + this->dashboard_ts_activate_button = 0.0; + this->dashboard_race_key = 0.0; + this->dashboard_sdc_in = 0.0; + this->dashboard_sdc_out = 0.0; +} + +dashboard_in_t( + double dashboard_r2_d_button, + double dashboard_ts_activate_button, + double dashboard_race_key, + double dashboard_sdc_in, + double dashboard_sdc_out) { + this->dashboard_r2_d_button = dashboard_r2_d_button; + this->dashboard_ts_activate_button = dashboard_ts_activate_button; + this->dashboard_race_key = dashboard_race_key; + this->dashboard_sdc_in = dashboard_sdc_in; + this->dashboard_sdc_out = dashboard_sdc_out; +} + +}; +struct ams_slave1_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave1_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave1_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave2_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave2_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave2_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave2_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave2_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave2_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave2_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave2_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave2_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave2_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave2_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave2_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave2_log4_t { + double ams_slave_id_failed_sensors; +ams_slave2_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave2_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave2_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave2_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave2_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave5_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave5_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave5_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave4_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave4_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave4_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave3_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave3_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave3_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave2_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave2_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave2_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave1_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave1_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave1_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct ams_slave5_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave5_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave5_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave4_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave4_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave4_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave3_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave3_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave3_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave1_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave1_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave1_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave5_log4_t { + double ams_slave_id_failed_sensors; +ams_slave5_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave5_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave4_log4_t { + double ams_slave_id_failed_sensors; +ams_slave4_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave4_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave3_log4_t { + double ams_slave_id_failed_sensors; +ams_slave3_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave3_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave1_log4_t { + double ams_slave_id_failed_sensors; +ams_slave1_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave1_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave5_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave5_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave5_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave4_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave4_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave4_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave3_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave3_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave3_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave1_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave1_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave1_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave5_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave5_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave5_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave4_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave4_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave4_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave3_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave3_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave3_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave1_log2_t { + double ams_slave_id_v8; + double ams_slave_id_v9; + double ams_slave_id_v10; + double ams_slave_id_v11; +ams_slave1_log2_t() { + this->ams_slave_id_v8 = 0.0; + this->ams_slave_id_v9 = 0.0; + this->ams_slave_id_v10 = 0.0; + this->ams_slave_id_v11 = 0.0; +} + +ams_slave1_log2_t( + double ams_slave_id_v8, + double ams_slave_id_v9, + double ams_slave_id_v10, + double ams_slave_id_v11) { + this->ams_slave_id_v8 = ams_slave_id_v8; + this->ams_slave_id_v9 = ams_slave_id_v9; + this->ams_slave_id_v10 = ams_slave_id_v10; + this->ams_slave_id_v11 = ams_slave_id_v11; +} + +}; +struct ams_slave5_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave5_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave5_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave4_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave4_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave4_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave3_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave3_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave3_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave1_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave1_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave1_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave5_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave5_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave5_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave4_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave4_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave4_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave3_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave3_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave3_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave1_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave1_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave1_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct pdu_heartbeat_t { + double pdu_heartbeat; +pdu_heartbeat_t() { + this->pdu_heartbeat = 0.0; +} + +pdu_heartbeat_t( + double pdu_heartbeat) { + this->pdu_heartbeat = pdu_heartbeat; +} + +}; +struct ftcu_pneumatik_t { + double ftcu_tank_pressure_1; + double ftcu_tank_pressure_2; +ftcu_pneumatik_t() { + this->ftcu_tank_pressure_1 = 0.0; + this->ftcu_tank_pressure_2 = 0.0; +} + +ftcu_pneumatik_t( + double ftcu_tank_pressure_1, + double ftcu_tank_pressure_2) { + this->ftcu_tank_pressure_1 = ftcu_tank_pressure_1; + this->ftcu_tank_pressure_2 = ftcu_tank_pressure_2; +} + +}; +struct acu_tx_commands_t { + double abx_speed_fl; + double abx_speed_fr; + double abx_speed_rl; + double abx_speed_rr; + double abx_steering_angle_left; + double abx_steering_angle_right; +acu_tx_commands_t() { + this->abx_speed_fl = 0.0; + this->abx_speed_fr = 0.0; + this->abx_speed_rl = 0.0; + this->abx_speed_rr = 0.0; + this->abx_steering_angle_left = 0.0; + this->abx_steering_angle_right = 0.0; +} + +acu_tx_commands_t( + double abx_speed_fl, + double abx_speed_fr, + double abx_speed_rl, + double abx_speed_rr, + double abx_steering_angle_left, + double abx_steering_angle_right) { + this->abx_speed_fl = abx_speed_fl; + this->abx_speed_fr = abx_speed_fr; + this->abx_speed_rl = abx_speed_rl; + this->abx_speed_rr = abx_speed_rr; + this->abx_steering_angle_left = abx_steering_angle_left; + this->abx_steering_angle_right = abx_steering_angle_right; +} + +}; +struct acu_rx_commands_t { + double acu_speed_target_left; + double acu_speed_target_right; + double acu_steering_angle_right; + double acu_steering_angle_left; +acu_rx_commands_t() { + this->acu_speed_target_left = 0.0; + this->acu_speed_target_right = 0.0; + this->acu_steering_angle_right = 0.0; + this->acu_steering_angle_left = 0.0; +} + +acu_rx_commands_t( + double acu_speed_target_left, + double acu_speed_target_right, + double acu_steering_angle_right, + double acu_steering_angle_left) { + this->acu_speed_target_left = acu_speed_target_left; + this->acu_speed_target_right = acu_speed_target_right; + this->acu_steering_angle_right = acu_steering_angle_right; + this->acu_steering_angle_left = acu_steering_angle_left; +} + +}; +struct acu_rx_t { + double acu_as_mission_complete; + double acu_as_ok; + double acu_drs; + double acu_lap_count; + double acu_cones_all; + double acu_cones_actual; +acu_rx_t() { + this->acu_as_mission_complete = 0.0; + this->acu_as_ok = 0.0; + this->acu_drs = 0.0; + this->acu_lap_count = 0.0; + this->acu_cones_all = 0.0; + this->acu_cones_actual = 0.0; +} + +acu_rx_t( + double acu_as_mission_complete, + double acu_as_ok, + double acu_drs, + double acu_lap_count, + double acu_cones_all, + double acu_cones_actual) { + this->acu_as_mission_complete = acu_as_mission_complete; + this->acu_as_ok = acu_as_ok; + this->acu_drs = acu_drs; + this->acu_lap_count = acu_lap_count; + this->acu_cones_all = acu_cones_all; + this->acu_cones_actual = acu_cones_actual; +} + +}; +struct ams_slave0_log0_t { + double ams_slave_id_v0; + double ams_slave_id_v1; + double ams_slave_id_v2; + double ams_slave_id_v3; +ams_slave0_log0_t() { + this->ams_slave_id_v0 = 0.0; + this->ams_slave_id_v1 = 0.0; + this->ams_slave_id_v2 = 0.0; + this->ams_slave_id_v3 = 0.0; +} + +ams_slave0_log0_t( + double ams_slave_id_v0, + double ams_slave_id_v1, + double ams_slave_id_v2, + double ams_slave_id_v3) { + this->ams_slave_id_v0 = ams_slave_id_v0; + this->ams_slave_id_v1 = ams_slave_id_v1; + this->ams_slave_id_v2 = ams_slave_id_v2; + this->ams_slave_id_v3 = ams_slave_id_v3; +} + +}; +struct ams_slave0_log1_t { + double ams_slave_id_v4; + double ams_slave_id_v5; + double ams_slave_id_v6; + double ams_slave_id_v7; +ams_slave0_log1_t() { + this->ams_slave_id_v4 = 0.0; + this->ams_slave_id_v5 = 0.0; + this->ams_slave_id_v6 = 0.0; + this->ams_slave_id_v7 = 0.0; +} + +ams_slave0_log1_t( + double ams_slave_id_v4, + double ams_slave_id_v5, + double ams_slave_id_v6, + double ams_slave_id_v7) { + this->ams_slave_id_v4 = ams_slave_id_v4; + this->ams_slave_id_v5 = ams_slave_id_v5; + this->ams_slave_id_v6 = ams_slave_id_v6; + this->ams_slave_id_v7 = ams_slave_id_v7; +} + +}; +struct ams_slave0_log3_t { + double ams_slave_id_v12; + double ams_slave_id_v13; + double ams_slave_id_v14; + double ams_slave_id_v15; +ams_slave0_log3_t() { + this->ams_slave_id_v12 = 0.0; + this->ams_slave_id_v13 = 0.0; + this->ams_slave_id_v14 = 0.0; + this->ams_slave_id_v15 = 0.0; +} + +ams_slave0_log3_t( + double ams_slave_id_v12, + double ams_slave_id_v13, + double ams_slave_id_v14, + double ams_slave_id_v15) { + this->ams_slave_id_v12 = ams_slave_id_v12; + this->ams_slave_id_v13 = ams_slave_id_v13; + this->ams_slave_id_v14 = ams_slave_id_v14; + this->ams_slave_id_v15 = ams_slave_id_v15; +} + +}; +struct ams_slave0_log4_t { + double ams_slave_id_failed_sensors; +ams_slave0_log4_t() { + this->ams_slave_id_failed_sensors = 0.0; +} + +ams_slave0_log4_t( + double ams_slave_id_failed_sensors) { + this->ams_slave_id_failed_sensors = ams_slave_id_failed_sensors; +} + +}; +struct ams_slave0_log5_t { + double ams_slave_id_t0; + double ams_slave_id_t1; + double ams_slave_id_t2; + double ams_slave_id_t3; + double ams_slave_id_t4; + double ams_slave_id_t5; + double ams_slave_id_t6; + double ams_slave_id_t7; +ams_slave0_log5_t() { + this->ams_slave_id_t0 = 0.0; + this->ams_slave_id_t1 = 0.0; + this->ams_slave_id_t2 = 0.0; + this->ams_slave_id_t3 = 0.0; + this->ams_slave_id_t4 = 0.0; + this->ams_slave_id_t5 = 0.0; + this->ams_slave_id_t6 = 0.0; + this->ams_slave_id_t7 = 0.0; +} + +ams_slave0_log5_t( + double ams_slave_id_t0, + double ams_slave_id_t1, + double ams_slave_id_t2, + double ams_slave_id_t3, + double ams_slave_id_t4, + double ams_slave_id_t5, + double ams_slave_id_t6, + double ams_slave_id_t7) { + this->ams_slave_id_t0 = ams_slave_id_t0; + this->ams_slave_id_t1 = ams_slave_id_t1; + this->ams_slave_id_t2 = ams_slave_id_t2; + this->ams_slave_id_t3 = ams_slave_id_t3; + this->ams_slave_id_t4 = ams_slave_id_t4; + this->ams_slave_id_t5 = ams_slave_id_t5; + this->ams_slave_id_t6 = ams_slave_id_t6; + this->ams_slave_id_t7 = ams_slave_id_t7; +} + +}; +struct ams_slave0_log6_t { + double ams_slave_id_t8; + double ams_slave_id_t9; +ams_slave0_log6_t() { + this->ams_slave_id_t8 = 0.0; + this->ams_slave_id_t9 = 0.0; +} + +ams_slave0_log6_t( + double ams_slave_id_t8, + double ams_slave_id_t9) { + this->ams_slave_id_t8 = ams_slave_id_t8; + this->ams_slave_id_t9 = ams_slave_id_t9; +} + +}; +struct acu_tx_t { + double acu_as_mission; + double acu_as_state; + double acu_power_off; + double acu_reset; + double acu_allow_torque; + double abx_con_mon_error; +acu_tx_t() { + this->acu_as_mission = 0.0; + this->acu_as_state = 0.0; + this->acu_power_off = 0.0; + this->acu_reset = 0.0; + this->acu_allow_torque = 0.0; + this->abx_con_mon_error = 0.0; +} + +acu_tx_t( + double acu_as_mission, + double acu_as_state, + double acu_power_off, + double acu_reset, + double acu_allow_torque, + double abx_con_mon_error) { + this->acu_as_mission = acu_as_mission; + this->acu_as_state = acu_as_state; + this->acu_power_off = acu_power_off; + this->acu_reset = acu_reset; + this->acu_allow_torque = acu_allow_torque; + this->abx_con_mon_error = abx_con_mon_error; +} + +}; +struct ams_slave5_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave5_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave5_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave4_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave4_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave4_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave3_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave3_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave3_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_slave2_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave2_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave2_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ams_error_t { + double ams_error_kind; + double ams_error_arg; +ams_error_t() { + this->ams_error_kind = 0.0; + this->ams_error_arg = 0.0; +} + +ams_error_t( + double ams_error_kind, + double ams_error_arg) { + this->ams_error_kind = ams_error_kind; + this->ams_error_arg = ams_error_arg; +} + +}; +struct ftcu_cooling_t { + double ftcu_water_pressure_2; + double ftcu_water_pressure_1; + double ftcu_water_temperature_1; + double ftcu_water_temperature_2; + double ftcu_flow_rate; +ftcu_cooling_t() { + this->ftcu_water_pressure_2 = 0.0; + this->ftcu_water_pressure_1 = 0.0; + this->ftcu_water_temperature_1 = 0.0; + this->ftcu_water_temperature_2 = 0.0; + this->ftcu_flow_rate = 0.0; +} + +ftcu_cooling_t( + double ftcu_water_pressure_2, + double ftcu_water_pressure_1, + double ftcu_water_temperature_1, + double ftcu_water_temperature_2, + double ftcu_flow_rate) { + this->ftcu_water_pressure_2 = ftcu_water_pressure_2; + this->ftcu_water_pressure_1 = ftcu_water_pressure_1; + this->ftcu_water_temperature_1 = ftcu_water_temperature_1; + this->ftcu_water_temperature_2 = ftcu_water_temperature_2; + this->ftcu_flow_rate = ftcu_flow_rate; +} + +}; +struct ftcu_brake_t_t { + double ftcu_brake_t_fl; + double ftcu_brake_t_fr; + double ftcu_brake_t_rl; + double ftcu_brake_t_rr; +ftcu_brake_t_t() { + this->ftcu_brake_t_fl = 0.0; + this->ftcu_brake_t_fr = 0.0; + this->ftcu_brake_t_rl = 0.0; + this->ftcu_brake_t_rr = 0.0; +} + +ftcu_brake_t_t( + double ftcu_brake_t_fl, + double ftcu_brake_t_fr, + double ftcu_brake_t_rl, + double ftcu_brake_t_rr) { + this->ftcu_brake_t_fl = ftcu_brake_t_fl; + this->ftcu_brake_t_fr = ftcu_brake_t_fr; + this->ftcu_brake_t_rl = ftcu_brake_t_rl; + this->ftcu_brake_t_rr = ftcu_brake_t_rr; +} + +}; +struct ftcu_wheelspeed_t { + double ftcu_wheelspeed_fl; + double ftcu_wheelspeed_fr; + double ftcu_wheelspeed_rl; + double ftcu_wheelspeed_rr; + double ftcu_distance_session; +ftcu_wheelspeed_t() { + this->ftcu_wheelspeed_fl = 0.0; + this->ftcu_wheelspeed_fr = 0.0; + this->ftcu_wheelspeed_rl = 0.0; + this->ftcu_wheelspeed_rr = 0.0; + this->ftcu_distance_session = 0.0; +} + +ftcu_wheelspeed_t( + double ftcu_wheelspeed_fl, + double ftcu_wheelspeed_fr, + double ftcu_wheelspeed_rl, + double ftcu_wheelspeed_rr, + double ftcu_distance_session) { + this->ftcu_wheelspeed_fl = ftcu_wheelspeed_fl; + this->ftcu_wheelspeed_fr = ftcu_wheelspeed_fr; + this->ftcu_wheelspeed_rl = ftcu_wheelspeed_rl; + this->ftcu_wheelspeed_rr = ftcu_wheelspeed_rr; + this->ftcu_distance_session = ftcu_distance_session; +} + +}; +struct ftcu_timings_t { + double ftcu_laptime_best; + double ftcu_laptime_last; + double ftcu_sectortime_best; + double ftcu_sectortime_last; +ftcu_timings_t() { + this->ftcu_laptime_best = 0.0; + this->ftcu_laptime_last = 0.0; + this->ftcu_sectortime_best = 0.0; + this->ftcu_sectortime_last = 0.0; +} + +ftcu_timings_t( + double ftcu_laptime_best, + double ftcu_laptime_last, + double ftcu_sectortime_best, + double ftcu_sectortime_last) { + this->ftcu_laptime_best = ftcu_laptime_best; + this->ftcu_laptime_last = ftcu_laptime_last; + this->ftcu_sectortime_best = ftcu_sectortime_best; + this->ftcu_sectortime_last = ftcu_sectortime_last; +} + +}; +struct ftcu_driver_t { + double ftcu_apps_percent; + double ftcu_brake_pressure_f; + double ftcu_brake_pressure_r; + double ftcu_steering_angle; + double ftcu_speed; + double ftcu_lapcounter; + double ftcu_sectorcounter; +ftcu_driver_t() { + this->ftcu_apps_percent = 0.0; + this->ftcu_brake_pressure_f = 0.0; + this->ftcu_brake_pressure_r = 0.0; + this->ftcu_steering_angle = 0.0; + this->ftcu_speed = 0.0; + this->ftcu_lapcounter = 0.0; + this->ftcu_sectorcounter = 0.0; +} + +ftcu_driver_t( + double ftcu_apps_percent, + double ftcu_brake_pressure_f, + double ftcu_brake_pressure_r, + double ftcu_steering_angle, + double ftcu_speed, + double ftcu_lapcounter, + double ftcu_sectorcounter) { + this->ftcu_apps_percent = ftcu_apps_percent; + this->ftcu_brake_pressure_f = ftcu_brake_pressure_f; + this->ftcu_brake_pressure_r = ftcu_brake_pressure_r; + this->ftcu_steering_angle = ftcu_steering_angle; + this->ftcu_speed = ftcu_speed; + this->ftcu_lapcounter = ftcu_lapcounter; + this->ftcu_sectorcounter = ftcu_sectorcounter; +} + +}; +struct tts_rr_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outet_right; + double tts_status; +tts_rr_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outet_right = 0.0; + this->tts_status = 0.0; +} + +tts_rr_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outet_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outet_right = tts_outet_right; + this->tts_status = tts_status; +} + +}; +struct tts_rl_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_rl_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_rl_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct tts_fr_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_fr_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_fr_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct tts_fl_t { + double tts_outer_left; + double tts_center_left; + double tts_center; + double tts_center_right; + double tts_outer_right; + double tts_status; +tts_fl_t() { + this->tts_outer_left = 0.0; + this->tts_center_left = 0.0; + this->tts_center = 0.0; + this->tts_center_right = 0.0; + this->tts_outer_right = 0.0; + this->tts_status = 0.0; +} + +tts_fl_t( + double tts_outer_left, + double tts_center_left, + double tts_center, + double tts_center_right, + double tts_outer_right, + double tts_status) { + this->tts_outer_left = tts_outer_left; + this->tts_center_left = tts_center_left; + this->tts_center = tts_center; + this->tts_center_right = tts_center_right; + this->tts_outer_right = tts_outer_right; + this->tts_status = tts_status; +} + +}; +struct stw_param_set_t { + double stw_param_set; + double stw_param_tc_slipref; + double stw_param_tc_mumax; + double stw_param_tc_i; + double stw_param_plim; + double stw_param_tlim; + double stw_param_tc_p; + double stw_param_reku; + double stw_param_tc_on; + double stw_param_tv_on; + double stw_param_discipline; + double stw_param_slim; +stw_param_set_t() { + this->stw_param_set = 0.0; + this->stw_param_tc_slipref = 0.0; + this->stw_param_tc_mumax = 0.0; + this->stw_param_tc_i = 0.0; + this->stw_param_plim = 0.0; + this->stw_param_tlim = 0.0; + this->stw_param_tc_p = 0.0; + this->stw_param_reku = 0.0; + this->stw_param_tc_on = 0.0; + this->stw_param_tv_on = 0.0; + this->stw_param_discipline = 0.0; + this->stw_param_slim = 0.0; +} + +stw_param_set_t( + double stw_param_set, + double stw_param_tc_slipref, + double stw_param_tc_mumax, + double stw_param_tc_i, + double stw_param_plim, + double stw_param_tlim, + double stw_param_tc_p, + double stw_param_reku, + double stw_param_tc_on, + double stw_param_tv_on, + double stw_param_discipline, + double stw_param_slim) { + this->stw_param_set = stw_param_set; + this->stw_param_tc_slipref = stw_param_tc_slipref; + this->stw_param_tc_mumax = stw_param_tc_mumax; + this->stw_param_tc_i = stw_param_tc_i; + this->stw_param_plim = stw_param_plim; + this->stw_param_tlim = stw_param_tlim; + this->stw_param_tc_p = stw_param_tc_p; + this->stw_param_reku = stw_param_reku; + this->stw_param_tc_on = stw_param_tc_on; + this->stw_param_tv_on = stw_param_tv_on; + this->stw_param_discipline = stw_param_discipline; + this->stw_param_slim = stw_param_slim; +} + +}; +struct ams_slave0_status_t { + double ams_slave_status_error; + double ams_slave_status_id; + double ams_slave_status_temp_sensor; + double ams_slave_status_min_cell_volt; + double ams_slave_status_max_cell_volt; + double ams_slave_status_max_temp; +ams_slave0_status_t() { + this->ams_slave_status_error = 0.0; + this->ams_slave_status_id = 0.0; + this->ams_slave_status_temp_sensor = 0.0; + this->ams_slave_status_min_cell_volt = 0.0; + this->ams_slave_status_max_cell_volt = 0.0; + this->ams_slave_status_max_temp = 0.0; +} + +ams_slave0_status_t( + double ams_slave_status_error, + double ams_slave_status_id, + double ams_slave_status_temp_sensor, + double ams_slave_status_min_cell_volt, + double ams_slave_status_max_cell_volt, + double ams_slave_status_max_temp) { + this->ams_slave_status_error = ams_slave_status_error; + this->ams_slave_status_id = ams_slave_status_id; + this->ams_slave_status_temp_sensor = ams_slave_status_temp_sensor; + this->ams_slave_status_min_cell_volt = ams_slave_status_min_cell_volt; + this->ams_slave_status_max_cell_volt = ams_slave_status_max_cell_volt; + this->ams_slave_status_max_temp = ams_slave_status_max_temp; +} + +}; +struct ssu_message_t { + double ssu_pressure; + double ssu_air_temp; +ssu_message_t() { + this->ssu_pressure = 0.0; + this->ssu_air_temp = 0.0; +} + +ssu_message_t( + double ssu_pressure, + double ssu_air_temp) { + this->ssu_pressure = ssu_pressure; + this->ssu_air_temp = ssu_air_temp; +} + +}; +struct ams_status_t { + double ams_state; + double sdc_closed; + double soc; + double min_cell_volt; + double max_cell_temp; + double ams_imd_state; + double ams_imd_ok; +ams_status_t() { + this->ams_state = 0.0; + this->sdc_closed = 0.0; + this->soc = 0.0; + this->min_cell_volt = 0.0; + this->max_cell_temp = 0.0; + this->ams_imd_state = 0.0; + this->ams_imd_ok = 0.0; +} + +ams_status_t( + double ams_state, + double sdc_closed, + double soc, + double min_cell_volt, + double max_cell_temp, + double ams_imd_state, + double ams_imd_ok) { + this->ams_state = ams_state; + this->sdc_closed = sdc_closed; + this->soc = soc; + this->min_cell_volt = min_cell_volt; + this->max_cell_temp = max_cell_temp; + this->ams_imd_state = ams_imd_state; + this->ams_imd_ok = ams_imd_ok; +} + +}; +struct ams_slave_panic_t { + double ams_slave_panic_slave_id; + double ams_slave_panic_kind; + double ams_slave_panic_arg; +ams_slave_panic_t() { + this->ams_slave_panic_slave_id = 0.0; + this->ams_slave_panic_kind = 0.0; + this->ams_slave_panic_arg = 0.0; +} + +ams_slave_panic_t( + double ams_slave_panic_slave_id, + double ams_slave_panic_kind, + double ams_slave_panic_arg) { + this->ams_slave_panic_slave_id = ams_slave_panic_slave_id; + this->ams_slave_panic_kind = ams_slave_panic_kind; + this->ams_slave_panic_arg = ams_slave_panic_arg; +} + +}; +struct ams_in_t { + double ts_activate; + double inverters_discharged; + double lap_number; +ams_in_t() { + this->ts_activate = 0.0; + this->inverters_discharged = 0.0; + this->lap_number = 0.0; +} + +ams_in_t( + double ts_activate, + double inverters_discharged, + double lap_number) { + this->ts_activate = ts_activate; + this->inverters_discharged = inverters_discharged; + this->lap_number = lap_number; +} + +}; +struct shunt_current_t { + double shunt_current; +shunt_current_t() { + this->shunt_current = 0.0; +} + +shunt_current_t( + double shunt_current) { + this->shunt_current = shunt_current; +} + +}; +struct shunt_voltage1_t { + double shunt_voltage1; +shunt_voltage1_t() { + this->shunt_voltage1 = 0.0; +} + +shunt_voltage1_t( + double shunt_voltage1) { + this->shunt_voltage1 = shunt_voltage1; +} + +}; +struct shunt_voltage2_t { + double shunt_voltage2; +shunt_voltage2_t() { + this->shunt_voltage2 = 0.0; +} + +shunt_voltage2_t( + double shunt_voltage2) { + this->shunt_voltage2 = shunt_voltage2; +} + +}; +struct shunt_voltage3_t { + double shunt_voltage3; +shunt_voltage3_t() { + this->shunt_voltage3 = 0.0; +} + +shunt_voltage3_t( + double shunt_voltage3) { + this->shunt_voltage3 = shunt_voltage3; +} + +}; +struct shunt_temperature_t { + double shunt_temperature; +shunt_temperature_t() { + this->shunt_temperature = 0.0; +} + +shunt_temperature_t( + double shunt_temperature) { + this->shunt_temperature = shunt_temperature; +} + +}; +struct pdu_command_t { + double pdu_enable_misc; + double pdu_enable_sdc; + double pdu_enable_inverter; + double pdu_enable_ts_cooling; + double pdu_enable_acc_cooling; + double pdu_enable_lldar; + double pdu_enable_drs; + double pdu_enable_epsc; + double pdu_enable_acu; + double pdu_enable_ebs_a; + double pdu_enable_ebs_b; + double pdu_enable_ebs_c; +pdu_command_t() { + this->pdu_enable_misc = 0.0; + this->pdu_enable_sdc = 0.0; + this->pdu_enable_inverter = 0.0; + this->pdu_enable_ts_cooling = 0.0; + this->pdu_enable_acc_cooling = 0.0; + this->pdu_enable_lldar = 0.0; + this->pdu_enable_drs = 0.0; + this->pdu_enable_epsc = 0.0; + this->pdu_enable_acu = 0.0; + this->pdu_enable_ebs_a = 0.0; + this->pdu_enable_ebs_b = 0.0; + this->pdu_enable_ebs_c = 0.0; +} + +pdu_command_t( + double pdu_enable_misc, + double pdu_enable_sdc, + double pdu_enable_inverter, + double pdu_enable_ts_cooling, + double pdu_enable_acc_cooling, + double pdu_enable_lldar, + double pdu_enable_drs, + double pdu_enable_epsc, + double pdu_enable_acu, + double pdu_enable_ebs_a, + double pdu_enable_ebs_b, + double pdu_enable_ebs_c) { + this->pdu_enable_misc = pdu_enable_misc; + this->pdu_enable_sdc = pdu_enable_sdc; + this->pdu_enable_inverter = pdu_enable_inverter; + this->pdu_enable_ts_cooling = pdu_enable_ts_cooling; + this->pdu_enable_acc_cooling = pdu_enable_acc_cooling; + this->pdu_enable_lldar = pdu_enable_lldar; + this->pdu_enable_drs = pdu_enable_drs; + this->pdu_enable_epsc = pdu_enable_epsc; + this->pdu_enable_acu = pdu_enable_acu; + this->pdu_enable_ebs_a = pdu_enable_ebs_a; + this->pdu_enable_ebs_b = pdu_enable_ebs_b; + this->pdu_enable_ebs_c = pdu_enable_ebs_c; +} + +}; +struct pdu_response_t { + double pdu_alwayson_tx; + double pdu_shutdown_circuit_tx; + double pdu_lidar_tx; + double pdu_acu_tx; + double pdu_servos_regler_tx; + double pdu_inverter_tx; + double pdu_misc_tx; + double pdu_servo_tx; + double pdu_ebs_valve_1_tx; + double pdu_ebs_valve_2_tx; + double pdu_cs_valve_tx; + double pdu_aggregat_tx; + double pdu_steering_tx; + double pdu_pwm_tsac_fans; + double pdu_pwm_radiatot_fans_tx; + double pdu_pwm_aggregat; + double pdu_pwm_pump; + double pdu_heartbeat_ok_tx; +pdu_response_t() { + this->pdu_alwayson_tx = 0.0; + this->pdu_shutdown_circuit_tx = 0.0; + this->pdu_lidar_tx = 0.0; + this->pdu_acu_tx = 0.0; + this->pdu_servos_regler_tx = 0.0; + this->pdu_inverter_tx = 0.0; + this->pdu_misc_tx = 0.0; + this->pdu_servo_tx = 0.0; + this->pdu_ebs_valve_1_tx = 0.0; + this->pdu_ebs_valve_2_tx = 0.0; + this->pdu_cs_valve_tx = 0.0; + this->pdu_aggregat_tx = 0.0; + this->pdu_steering_tx = 0.0; + this->pdu_pwm_tsac_fans = 0.0; + this->pdu_pwm_radiatot_fans_tx = 0.0; + this->pdu_pwm_aggregat = 0.0; + this->pdu_pwm_pump = 0.0; + this->pdu_heartbeat_ok_tx = 0.0; +} + +pdu_response_t( + double pdu_alwayson_tx, + double pdu_shutdown_circuit_tx, + double pdu_lidar_tx, + double pdu_acu_tx, + double pdu_servos_regler_tx, + double pdu_inverter_tx, + double pdu_misc_tx, + double pdu_servo_tx, + double pdu_ebs_valve_1_tx, + double pdu_ebs_valve_2_tx, + double pdu_cs_valve_tx, + double pdu_aggregat_tx, + double pdu_steering_tx, + double pdu_pwm_tsac_fans, + double pdu_pwm_radiatot_fans_tx, + double pdu_pwm_aggregat, + double pdu_pwm_pump, + double pdu_heartbeat_ok_tx) { + this->pdu_alwayson_tx = pdu_alwayson_tx; + this->pdu_shutdown_circuit_tx = pdu_shutdown_circuit_tx; + this->pdu_lidar_tx = pdu_lidar_tx; + this->pdu_acu_tx = pdu_acu_tx; + this->pdu_servos_regler_tx = pdu_servos_regler_tx; + this->pdu_inverter_tx = pdu_inverter_tx; + this->pdu_misc_tx = pdu_misc_tx; + this->pdu_servo_tx = pdu_servo_tx; + this->pdu_ebs_valve_1_tx = pdu_ebs_valve_1_tx; + this->pdu_ebs_valve_2_tx = pdu_ebs_valve_2_tx; + this->pdu_cs_valve_tx = pdu_cs_valve_tx; + this->pdu_aggregat_tx = pdu_aggregat_tx; + this->pdu_steering_tx = pdu_steering_tx; + this->pdu_pwm_tsac_fans = pdu_pwm_tsac_fans; + this->pdu_pwm_radiatot_fans_tx = pdu_pwm_radiatot_fans_tx; + this->pdu_pwm_aggregat = pdu_pwm_aggregat; + this->pdu_pwm_pump = pdu_pwm_pump; + this->pdu_heartbeat_ok_tx = pdu_heartbeat_ok_tx; +} + +}; +struct as_mission_fb_t { + double mission_selection; +as_mission_fb_t() { + this->mission_selection = 0.0; +} + +as_mission_fb_t( + double mission_selection) { + this->mission_selection = mission_selection; +} + +}; +struct stw_mission_selected_t { + double mission_selection; +stw_mission_selected_t() { + this->mission_selection = 0.0; +} + +stw_mission_selected_t( + double mission_selection) { + this->mission_selection = mission_selection; +} + +}; +struct epsc_out_t { + double epsc_measured_rpm; + double epsc_measured_steering_angle; + double epsc_measured_mosfet_temperature; + double epsc_measured_voltage; + double epsc_measured_current; +epsc_out_t() { + this->epsc_measured_rpm = 0.0; + this->epsc_measured_steering_angle = 0.0; + this->epsc_measured_mosfet_temperature = 0.0; + this->epsc_measured_voltage = 0.0; + this->epsc_measured_current = 0.0; +} + +epsc_out_t( + double epsc_measured_rpm, + double epsc_measured_steering_angle, + double epsc_measured_mosfet_temperature, + double epsc_measured_voltage, + double epsc_measured_current) { + this->epsc_measured_rpm = epsc_measured_rpm; + this->epsc_measured_steering_angle = epsc_measured_steering_angle; + this->epsc_measured_mosfet_temperature = epsc_measured_mosfet_temperature; + this->epsc_measured_voltage = epsc_measured_voltage; + this->epsc_measured_current = epsc_measured_current; +} + +}; +struct epsc_steering_in_t { + double epsc_desired_steering_angle; +epsc_steering_in_t() { + this->epsc_desired_steering_angle = 0.0; +} + +epsc_steering_in_t( + double epsc_desired_steering_angle) { + this->epsc_desired_steering_angle = epsc_desired_steering_angle; +} + +}; +struct stw_buttons_t { + double stw_button_drs; + double stw_button_1; + double stw_button_2; + double stw_button_3; + double stw_button_4; +stw_buttons_t() { + this->stw_button_drs = 0.0; + this->stw_button_1 = 0.0; + this->stw_button_2 = 0.0; + this->stw_button_3 = 0.0; + this->stw_button_4 = 0.0; +} + +stw_buttons_t( + double stw_button_drs, + double stw_button_1, + double stw_button_2, + double stw_button_3, + double stw_button_4) { + this->stw_button_drs = stw_button_drs; + this->stw_button_1 = stw_button_1; + this->stw_button_2 = stw_button_2; + this->stw_button_3 = stw_button_3; + this->stw_button_4 = stw_button_4; +} + +}; +struct stw_status_t { + double lap_count; + double err_pdu; + double err_res; + double r2_d_progress; + double as_state_stw; + double err_as; + double err_app_sp; + double err_s_bspd; + double err_scs; + double err_con_mon; + double err_ini_chk; + double err_inv2; + double err_inv1; + double err_ams; + double err_sdc; + double sdc_status; + double inv2_ready; + double inv1_ready; + double energy_per_lap; + double ini_chk_state; +stw_status_t() { + this->lap_count = 0.0; + this->err_pdu = 0.0; + this->err_res = 0.0; + this->r2_d_progress = 0.0; + this->as_state_stw = 0.0; + this->err_as = 0.0; + this->err_app_sp = 0.0; + this->err_s_bspd = 0.0; + this->err_scs = 0.0; + this->err_con_mon = 0.0; + this->err_ini_chk = 0.0; + this->err_inv2 = 0.0; + this->err_inv1 = 0.0; + this->err_ams = 0.0; + this->err_sdc = 0.0; + this->sdc_status = 0.0; + this->inv2_ready = 0.0; + this->inv1_ready = 0.0; + this->energy_per_lap = 0.0; + this->ini_chk_state = 0.0; +} + +stw_status_t( + double lap_count, + double err_pdu, + double err_res, + double r2_d_progress, + double as_state_stw, + double err_as, + double err_app_sp, + double err_s_bspd, + double err_scs, + double err_con_mon, + double err_ini_chk, + double err_inv2, + double err_inv1, + double err_ams, + double err_sdc, + double sdc_status, + double inv2_ready, + double inv1_ready, + double energy_per_lap, + double ini_chk_state) { + this->lap_count = lap_count; + this->err_pdu = err_pdu; + this->err_res = err_res; + this->r2_d_progress = r2_d_progress; + this->as_state_stw = as_state_stw; + this->err_as = err_as; + this->err_app_sp = err_app_sp; + this->err_s_bspd = err_s_bspd; + this->err_scs = err_scs; + this->err_con_mon = err_con_mon; + this->err_ini_chk = err_ini_chk; + this->err_inv2 = err_inv2; + this->err_inv1 = err_inv1; + this->err_ams = err_ams; + this->err_sdc = err_sdc; + this->sdc_status = sdc_status; + this->inv2_ready = inv2_ready; + this->inv1_ready = inv1_ready; + this->energy_per_lap = energy_per_lap; + this->ini_chk_state = ini_chk_state; +} + +}; +struct pdu_current_1_t { + double pdu_always_on_current; + double pdu_lvms_current; + double pdu_asms_current; + double pdu_misc_current; +pdu_current_1_t() { + this->pdu_always_on_current = 0.0; + this->pdu_lvms_current = 0.0; + this->pdu_asms_current = 0.0; + this->pdu_misc_current = 0.0; +} + +pdu_current_1_t( + double pdu_always_on_current, + double pdu_lvms_current, + double pdu_asms_current, + double pdu_misc_current) { + this->pdu_always_on_current = pdu_always_on_current; + this->pdu_lvms_current = pdu_lvms_current; + this->pdu_asms_current = pdu_asms_current; + this->pdu_misc_current = pdu_misc_current; +} + +}; +struct pdu_current_2_t { + double pdu_sdc_current; + double pdu_inverter_current; + double pdu_ts_cooling_current; + double pdu_acc_cooling_current; +pdu_current_2_t() { + this->pdu_sdc_current = 0.0; + this->pdu_inverter_current = 0.0; + this->pdu_ts_cooling_current = 0.0; + this->pdu_acc_cooling_current = 0.0; +} + +pdu_current_2_t( + double pdu_sdc_current, + double pdu_inverter_current, + double pdu_ts_cooling_current, + double pdu_acc_cooling_current) { + this->pdu_sdc_current = pdu_sdc_current; + this->pdu_inverter_current = pdu_inverter_current; + this->pdu_ts_cooling_current = pdu_ts_cooling_current; + this->pdu_acc_cooling_current = pdu_acc_cooling_current; +} + +}; +struct pdu_current_3_t { + double pdu_lidar_current; + double pdu_drs_current; + double pdu_epsc_current; + double pdu_acu_current; +pdu_current_3_t() { + this->pdu_lidar_current = 0.0; + this->pdu_drs_current = 0.0; + this->pdu_epsc_current = 0.0; + this->pdu_acu_current = 0.0; +} + +pdu_current_3_t( + double pdu_lidar_current, + double pdu_drs_current, + double pdu_epsc_current, + double pdu_acu_current) { + this->pdu_lidar_current = pdu_lidar_current; + this->pdu_drs_current = pdu_drs_current; + this->pdu_epsc_current = pdu_epsc_current; + this->pdu_acu_current = pdu_acu_current; +} + +}; +struct pdu_current_4_t { + double pdu_ebs_a_current; + double pdu_ebs_b_current; +pdu_current_4_t() { + this->pdu_ebs_a_current = 0.0; + this->pdu_ebs_b_current = 0.0; +} + +pdu_current_4_t( + double pdu_ebs_a_current, + double pdu_ebs_b_current) { + this->pdu_ebs_a_current = pdu_ebs_a_current; + this->pdu_ebs_b_current = pdu_ebs_b_current; +} + +}; +struct epsc_config_in_t { + double epsc_config_p_gain; + double epsc_config_i_gain; + double epsc_config_d_gain; +epsc_config_in_t() { + this->epsc_config_p_gain = 0.0; + this->epsc_config_i_gain = 0.0; + this->epsc_config_d_gain = 0.0; +} + +epsc_config_in_t( + double epsc_config_p_gain, + double epsc_config_i_gain, + double epsc_config_d_gain) { + this->epsc_config_p_gain = epsc_config_p_gain; + this->epsc_config_i_gain = epsc_config_i_gain; + this->epsc_config_d_gain = epsc_config_d_gain; +} + +}; + +} +} +} + +// encode functions +namespace encode { +namespace can1 { +inline can1_inverter_velocity_t inverter_velocity(const frame::decoded::can1::inverter_velocity_t frame_decoded) { + can1_inverter_velocity_t frame_encoded; + frame_encoded.inverter_1_velocity = can1_inverter_velocity_inverter_1_velocity_encode(frame_decoded.inverter_1_velocity); + frame_encoded.inverter_2_velocity = can1_inverter_velocity_inverter_2_velocity_encode(frame_decoded.inverter_2_velocity); + return frame_encoded; +} + +inline can1_inverter_errors_warnings_t inverter_errors_warnings(const frame::decoded::can1::inverter_errors_warnings_t frame_decoded) { + can1_inverter_errors_warnings_t frame_encoded; + frame_encoded.inverter_1_errors = can1_inverter_errors_warnings_inverter_1_errors_encode(frame_decoded.inverter_1_errors); + frame_encoded.inverter_1_warnings = can1_inverter_errors_warnings_inverter_1_warnings_encode(frame_decoded.inverter_1_warnings); + frame_encoded.inverter_2_errors = can1_inverter_errors_warnings_inverter_2_errors_encode(frame_decoded.inverter_2_errors); + frame_encoded.inverter_2_warnings = can1_inverter_errors_warnings_inverter_2_warnings_encode(frame_decoded.inverter_2_warnings); + return frame_encoded; +} + +inline can1_inverter_torque_actual_cw_t inverter_torque_actual_cw(const frame::decoded::can1::inverter_torque_actual_cw_t frame_decoded) { + can1_inverter_torque_actual_cw_t frame_encoded; + frame_encoded.inverter_1_control_word = can1_inverter_torque_actual_cw_inverter_1_control_word_encode(frame_decoded.inverter_1_control_word); + frame_encoded.inverter_1_torque_actual = can1_inverter_torque_actual_cw_inverter_1_torque_actual_encode(frame_decoded.inverter_1_torque_actual); + frame_encoded.inverter_2_control_word = can1_inverter_torque_actual_cw_inverter_2_control_word_encode(frame_decoded.inverter_2_control_word); + frame_encoded.inverter_2_torque_actual = can1_inverter_torque_actual_cw_inverter_2_torque_actual_encode(frame_decoded.inverter_2_torque_actual); + return frame_encoded; +} + +inline can1_inverter_temperatur_t inverter_temperatur(const frame::decoded::can1::inverter_temperatur_t frame_decoded) { + can1_inverter_temperatur_t frame_encoded; + frame_encoded.inverter_1_temp_inv = can1_inverter_temperatur_inverter_1_temp_inv_encode(frame_decoded.inverter_1_temp_inv); + frame_encoded.inverter_1_temp_mot = can1_inverter_temperatur_inverter_1_temp_mot_encode(frame_decoded.inverter_1_temp_mot); + frame_encoded.inverter_2_temp_inv = can1_inverter_temperatur_inverter_2_temp_inv_encode(frame_decoded.inverter_2_temp_inv); + frame_encoded.inverter_2_temp_mot = can1_inverter_temperatur_inverter_2_temp_mot_encode(frame_decoded.inverter_2_temp_mot); + return frame_encoded; +} + +inline can1_inverter_torque_wanted_t inverter_torque_wanted(const frame::decoded::can1::inverter_torque_wanted_t frame_decoded) { + can1_inverter_torque_wanted_t frame_encoded; + frame_encoded.inverter_1_torque_demanded = can1_inverter_torque_wanted_inverter_1_torque_demanded_encode(frame_decoded.inverter_1_torque_demanded); + frame_encoded.inverter_2_torque_demanded = can1_inverter_torque_wanted_inverter_2_torque_demanded_encode(frame_decoded.inverter_2_torque_demanded); + frame_encoded.inverter_1_torque_desired = can1_inverter_torque_wanted_inverter_1_torque_desired_encode(frame_decoded.inverter_1_torque_desired); + frame_encoded.inverter_2_torque_desired = can1_inverter_torque_wanted_inverter_2_torque_desired_encode(frame_decoded.inverter_2_torque_desired); + return frame_encoded; +} + +inline can1_sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1(const frame::decoded::can1::sdo_telemetrie_rx_node1_t frame_decoded) { + can1_sdo_telemetrie_rx_node1_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_rx_node1_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_rx_node1_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node1_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_rx_node1_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2(const frame::decoded::can1::sdo_telemetrie_rx_node2_t frame_decoded) { + can1_sdo_telemetrie_rx_node2_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_rx_node2_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_rx_node2_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node2_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_rx_node2_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_sdo_telemetrie_tx_t sdo_telemetrie_tx(const frame::decoded::can1::sdo_telemetrie_tx_t frame_decoded) { + can1_sdo_telemetrie_tx_t frame_encoded; + frame_encoded.sdo_command_byte = can1_sdo_telemetrie_tx_sdo_command_byte_encode(frame_decoded.sdo_command_byte); + frame_encoded.sdo_od_index = can1_sdo_telemetrie_tx_sdo_od_index_encode(frame_decoded.sdo_od_index); + frame_encoded.sdo_od_subindex = can1_sdo_telemetrie_tx_sdo_od_subindex_encode(frame_decoded.sdo_od_subindex); + frame_encoded.sdo_data = can1_sdo_telemetrie_tx_sdo_data_encode(frame_decoded.sdo_data); + return frame_encoded; +} + +inline can1_laptop_sdo_node_t laptop_sdo_node(const frame::decoded::can1::laptop_sdo_node_t frame_decoded) { + can1_laptop_sdo_node_t frame_encoded; + frame_encoded.node_id_sdo = can1_laptop_sdo_node_node_id_sdo_encode(frame_decoded.node_id_sdo); + return frame_encoded; +} + +inline can1_x_sens_long_lat_t x_sens_long_lat(const frame::decoded::can1::x_sens_long_lat_t frame_decoded) { + can1_x_sens_long_lat_t frame_encoded; + frame_encoded.x_sens_latitude = can1_x_sens_long_lat_x_sens_latitude_encode(frame_decoded.x_sens_latitude); + frame_encoded.x_sens_longitude = can1_x_sens_long_lat_x_sens_longitude_encode(frame_decoded.x_sens_longitude); + return frame_encoded; +} + +inline can1_x_sens_rateofturn_t x_sens_rateofturn(const frame::decoded::can1::x_sens_rateofturn_t frame_decoded) { + can1_x_sens_rateofturn_t frame_encoded; + frame_encoded.x_sens_gyr_x = can1_x_sens_rateofturn_x_sens_gyr_x_encode(frame_decoded.x_sens_gyr_x); + frame_encoded.x_sens_gy_y = can1_x_sens_rateofturn_x_sens_gy_y_encode(frame_decoded.x_sens_gy_y); + frame_encoded.x_sens_gy_z = can1_x_sens_rateofturn_x_sens_gy_z_encode(frame_decoded.x_sens_gy_z); + return frame_encoded; +} + +inline can1_x_sens_acceleration_t x_sens_acceleration(const frame::decoded::can1::x_sens_acceleration_t frame_decoded) { + can1_x_sens_acceleration_t frame_encoded; + frame_encoded.x_sens_acc_x = can1_x_sens_acceleration_x_sens_acc_x_encode(frame_decoded.x_sens_acc_x); + frame_encoded.x_sens_acc_y = can1_x_sens_acceleration_x_sens_acc_y_encode(frame_decoded.x_sens_acc_y); + frame_encoded.x_sens_acc_z = can1_x_sens_acceleration_x_sens_acc_z_encode(frame_decoded.x_sens_acc_z); + return frame_encoded; +} + +inline can1_x_sens_velocity_t x_sens_velocity(const frame::decoded::can1::x_sens_velocity_t frame_decoded) { + can1_x_sens_velocity_t frame_encoded; + frame_encoded.x_sens_vel_x = can1_x_sens_velocity_x_sens_vel_x_encode(frame_decoded.x_sens_vel_x); + frame_encoded.x_sens_vel_y = can1_x_sens_velocity_x_sens_vel_y_encode(frame_decoded.x_sens_vel_y); + frame_encoded.x_sens_vel_z = can1_x_sens_velocity_x_sens_vel_z_encode(frame_decoded.x_sens_vel_z); + return frame_encoded; +} + +inline can1_telemetrie_t telemetrie(const frame::decoded::can1::telemetrie_t frame_decoded) { + can1_telemetrie_t frame_encoded; + frame_encoded.ini_check_error_state = can1_telemetrie_ini_check_error_state_encode(frame_decoded.ini_check_error_state); + frame_encoded.powermap = can1_telemetrie_powermap_encode(frame_decoded.powermap); + frame_encoded.apps_ok = can1_telemetrie_apps_ok_encode(frame_decoded.apps_ok); + frame_encoded.brake_ok = can1_telemetrie_brake_ok_encode(frame_decoded.brake_ok); + frame_encoded.allow_torque = can1_telemetrie_allow_torque_encode(frame_decoded.allow_torque); + frame_encoded.asp_ok = can1_telemetrie_asp_ok_encode(frame_decoded.asp_ok); + frame_encoded.pressure_sensor_ok = can1_telemetrie_pressure_sensor_ok_encode(frame_decoded.pressure_sensor_ok); + frame_encoded.torque_vectoring_on = can1_telemetrie_torque_vectoring_on_encode(frame_decoded.torque_vectoring_on); + frame_encoded.reku_on = can1_telemetrie_reku_on_encode(frame_decoded.reku_on); + frame_encoded.traction_control_on = can1_telemetrie_traction_control_on_encode(frame_decoded.traction_control_on); + frame_encoded.ts_deactivate = can1_telemetrie_ts_deactivate_encode(frame_decoded.ts_deactivate); + frame_encoded.torque_limit = can1_telemetrie_torque_limit_encode(frame_decoded.torque_limit); + frame_encoded.power_limit = can1_telemetrie_power_limit_encode(frame_decoded.power_limit); + frame_encoded.torque_limit_dynamisch = can1_telemetrie_torque_limit_dynamisch_encode(frame_decoded.torque_limit_dynamisch); + frame_encoded.torque_ohne_limit_l = can1_telemetrie_torque_ohne_limit_l_encode(frame_decoded.torque_ohne_limit_l); + frame_encoded.torque_ohne_limit_r = can1_telemetrie_torque_ohne_limit_r_encode(frame_decoded.torque_ohne_limit_r); + return frame_encoded; +} + +inline can1_override_powermap_t override_powermap(const frame::decoded::can1::override_powermap_t frame_decoded) { + can1_override_powermap_t frame_encoded; + frame_encoded.laptopp_power_map = can1_override_powermap_laptopp_power_map_encode(frame_decoded.laptopp_power_map); + frame_encoded.laptop_reku = can1_override_powermap_laptop_reku_encode(frame_decoded.laptop_reku); + frame_encoded.laptop_tc = can1_override_powermap_laptop_tc_encode(frame_decoded.laptop_tc); + frame_encoded.laptop_tv = can1_override_powermap_laptop_tv_encode(frame_decoded.laptop_tv); + frame_encoded.laptop_slipref = can1_override_powermap_laptop_slipref_encode(frame_decoded.laptop_slipref); + frame_encoded.laptop_tc_i = can1_override_powermap_laptop_tc_i_encode(frame_decoded.laptop_tc_i); + frame_encoded.laptop_tc_p = can1_override_powermap_laptop_tc_p_encode(frame_decoded.laptop_tc_p); + frame_encoded.laptop_tc_mumax = can1_override_powermap_laptop_tc_mumax_encode(frame_decoded.laptop_tc_mumax); + return frame_encoded; +} + +inline can1_override_laptop_2_t override_laptop_2(const frame::decoded::can1::override_laptop_2_t frame_decoded) { + can1_override_laptop_2_t frame_encoded; + frame_encoded.as_mission = can1_override_laptop_2_as_mission_encode(frame_decoded.as_mission); + frame_encoded.as_state = can1_override_laptop_2_as_state_encode(frame_decoded.as_state); + frame_encoded.manual_input_torque = can1_override_laptop_2_manual_input_torque_encode(frame_decoded.manual_input_torque); + frame_encoded.laptop_powerlimit = can1_override_laptop_2_laptop_powerlimit_encode(frame_decoded.laptop_powerlimit); + frame_encoded.laptop_torque_lim = can1_override_laptop_2_laptop_torque_lim_encode(frame_decoded.laptop_torque_lim); + return frame_encoded; +} + +inline can1_override_epsc_cooling_t override_epsc_cooling(const frame::decoded::can1::override_epsc_cooling_t frame_decoded) { + can1_override_epsc_cooling_t frame_encoded; + frame_encoded.epsc_manual_angle = can1_override_epsc_cooling_epsc_manual_angle_encode(frame_decoded.epsc_manual_angle); + frame_encoded.epsc_mode = can1_override_epsc_cooling_epsc_mode_encode(frame_decoded.epsc_mode); + frame_encoded.ac_cooling_enable = can1_override_epsc_cooling_ac_cooling_enable_encode(frame_decoded.ac_cooling_enable); + frame_encoded.ts_cooling_enable = can1_override_epsc_cooling_ts_cooling_enable_encode(frame_decoded.ts_cooling_enable); + frame_encoded.ac_cooling_pwm = can1_override_epsc_cooling_ac_cooling_pwm_encode(frame_decoded.ac_cooling_pwm); + frame_encoded.ts_cooling_pwm = can1_override_epsc_cooling_ts_cooling_pwm_encode(frame_decoded.ts_cooling_pwm); + return frame_encoded; +} + +inline can1_override_laptop_t override_laptop(const frame::decoded::can1::override_laptop_t frame_decoded) { + can1_override_laptop_t frame_encoded; + frame_encoded.fake_r2_d = can1_override_laptop_fake_r2_d_encode(frame_decoded.fake_r2_d); + frame_encoded.fake_soundbox_emergency = can1_override_laptop_fake_soundbox_emergency_encode(frame_decoded.fake_soundbox_emergency); + frame_encoded.fake_soundbox_r2_d = can1_override_laptop_fake_soundbox_r2_d_encode(frame_decoded.fake_soundbox_r2_d); + frame_encoded.fake_ts_active = can1_override_laptop_fake_ts_active_encode(frame_decoded.fake_ts_active); + frame_encoded.override_apps = can1_override_laptop_override_apps_encode(frame_decoded.override_apps); + frame_encoded.override_as_mission = can1_override_laptop_override_as_mission_encode(frame_decoded.override_as_mission); + frame_encoded.override_as_state = can1_override_laptop_override_as_state_encode(frame_decoded.override_as_state); + frame_encoded.override_epsc_mode = can1_override_laptop_override_epsc_mode_encode(frame_decoded.override_epsc_mode); + frame_encoded.override_pdu_ac_cooling_enable = can1_override_laptop_override_pdu_ac_cooling_enable_encode(frame_decoded.override_pdu_ac_cooling_enable); + frame_encoded.override_pdu_acu_enable = can1_override_laptop_override_pdu_acu_enable_encode(frame_decoded.override_pdu_acu_enable); + frame_encoded.override_pdu_drs_enable = can1_override_laptop_override_pdu_drs_enable_encode(frame_decoded.override_pdu_drs_enable); + frame_encoded.override_pdu_epsc_enable = can1_override_laptop_override_pdu_epsc_enable_encode(frame_decoded.override_pdu_epsc_enable); + frame_encoded.override_pdu_heartbeat = can1_override_laptop_override_pdu_heartbeat_encode(frame_decoded.override_pdu_heartbeat); + frame_encoded.override_pdu_lidar_enable = can1_override_laptop_override_pdu_lidar_enable_encode(frame_decoded.override_pdu_lidar_enable); + frame_encoded.override_pdu_pn_v1_enable = can1_override_laptop_override_pdu_pn_v1_enable_encode(frame_decoded.override_pdu_pn_v1_enable); + frame_encoded.override_pdu_pn_v2_enable = can1_override_laptop_override_pdu_pn_v2_enable_encode(frame_decoded.override_pdu_pn_v2_enable); + frame_encoded.override_pdu_ts_cooling_enable = can1_override_laptop_override_pdu_ts_cooling_enable_encode(frame_decoded.override_pdu_ts_cooling_enable); + frame_encoded.override_power_map = can1_override_laptop_override_power_map_encode(frame_decoded.override_power_map); + frame_encoded.override_tc_parameter = can1_override_laptop_override_tc_parameter_encode(frame_decoded.override_tc_parameter); + frame_encoded.override_torque_input = can1_override_laptop_override_torque_input_encode(frame_decoded.override_torque_input); + return frame_encoded; +} + +inline can1_apps_override_t apps_override(const frame::decoded::can1::apps_override_t frame_decoded) { + can1_apps_override_t frame_encoded; + frame_encoded.apps_0_max = can1_apps_override_apps_0_max_encode(frame_decoded.apps_0_max); + frame_encoded.apps_0_min = can1_apps_override_apps_0_min_encode(frame_decoded.apps_0_min); + frame_encoded.apps_1_max = can1_apps_override_apps_1_max_encode(frame_decoded.apps_1_max); + frame_encoded.apps_1_min = can1_apps_override_apps_1_min_encode(frame_decoded.apps_1_min); + return frame_encoded; +} + +inline can1_ftcu_damper_t ftcu_damper(const frame::decoded::can1::ftcu_damper_t frame_decoded) { + can1_ftcu_damper_t frame_encoded; + frame_encoded.ftcu_damper_fl = can1_ftcu_damper_ftcu_damper_fl_encode(frame_decoded.ftcu_damper_fl); + frame_encoded.ftcu_damper_fr = can1_ftcu_damper_ftcu_damper_fr_encode(frame_decoded.ftcu_damper_fr); + frame_encoded.ftcu_damper_rl = can1_ftcu_damper_ftcu_damper_rl_encode(frame_decoded.ftcu_damper_rl); + frame_encoded.ftcu_damper_rr = can1_ftcu_damper_ftcu_damper_rr_encode(frame_decoded.ftcu_damper_rr); + return frame_encoded; +} + +inline can1_ftcu_param_confirm_t ftcu_param_confirm(const frame::decoded::can1::ftcu_param_confirm_t frame_decoded) { + can1_ftcu_param_confirm_t frame_encoded; + frame_encoded.ftcu_param_confirm = can1_ftcu_param_confirm_ftcu_param_confirm_encode(frame_decoded.ftcu_param_confirm); + return frame_encoded; +} + +inline can1_sensornode_f_10_hz_t sensornode_f_10_hz(const frame::decoded::can1::sensornode_f_10_hz_t frame_decoded) { + can1_sensornode_f_10_hz_t frame_encoded; + frame_encoded.ls_l = can1_sensornode_f_10_hz_ls_l_encode(frame_decoded.ls_l); + frame_encoded.ls_r = can1_sensornode_f_10_hz_ls_r_encode(frame_decoded.ls_r); + frame_encoded.sdc_m_pre_bots = can1_sensornode_f_10_hz_sdc_m_pre_bots_encode(frame_decoded.sdc_m_pre_bots); + frame_encoded.sdc_m_post_ins = can1_sensornode_f_10_hz_sdc_m_post_ins_encode(frame_decoded.sdc_m_post_ins); + frame_encoded.sdc_m_post_bspd = can1_sensornode_f_10_hz_sdc_m_post_bspd_encode(frame_decoded.sdc_m_post_bspd); + frame_encoded.bdts_fl = can1_sensornode_f_10_hz_bdts_fl_encode(frame_decoded.bdts_fl); + frame_encoded.bdts_fr = can1_sensornode_f_10_hz_bdts_fr_encode(frame_decoded.bdts_fr); + return frame_encoded; +} + +inline can1_sensornode_f_100_hz_1_t sensornode_f_100_hz_1(const frame::decoded::can1::sensornode_f_100_hz_1_t frame_decoded) { + can1_sensornode_f_100_hz_1_t frame_encoded; + frame_encoded.apps_1 = can1_sensornode_f_100_hz_1_apps_1_encode(frame_decoded.apps_1); + frame_encoded.apps_2 = can1_sensornode_f_100_hz_1_apps_2_encode(frame_decoded.apps_2); + frame_encoded.bp_f = can1_sensornode_f_100_hz_1_bp_f_encode(frame_decoded.bp_f); + frame_encoded.sas = can1_sensornode_f_100_hz_1_sas_encode(frame_decoded.sas); + frame_encoded.wss_fl = can1_sensornode_f_100_hz_1_wss_fl_encode(frame_decoded.wss_fl); + frame_encoded.wss_fr = can1_sensornode_f_100_hz_1_wss_fr_encode(frame_decoded.wss_fr); + return frame_encoded; +} + +inline can1_sensornode_f_100_hz_2_t sensornode_f_100_hz_2(const frame::decoded::can1::sensornode_f_100_hz_2_t frame_decoded) { + can1_sensornode_f_100_hz_2_t frame_encoded; + frame_encoded.ds_fl = can1_sensornode_f_100_hz_2_ds_fl_encode(frame_decoded.ds_fl); + frame_encoded.ds_fr = can1_sensornode_f_100_hz_2_ds_fr_encode(frame_decoded.ds_fr); + return frame_encoded; +} + +inline can1_sensornode_f_1k_hz_t sensornode_f_1k_hz(const frame::decoded::can1::sensornode_f_1k_hz_t frame_decoded) { + can1_sensornode_f_1k_hz_t frame_encoded; + frame_encoded.sls_fl = can1_sensornode_f_1k_hz_sls_fl_encode(frame_decoded.sls_fl); + frame_encoded.sls_fr = can1_sensornode_f_1k_hz_sls_fr_encode(frame_decoded.sls_fr); + return frame_encoded; +} + +inline can1_sensornode_r_10_hz_t sensornode_r_10_hz(const frame::decoded::can1::sensornode_r_10_hz_t frame_decoded) { + can1_sensornode_r_10_hz_t frame_encoded; + frame_encoded.ext_ts_on = can1_sensornode_r_10_hz_ext_ts_on_encode(frame_decoded.ext_ts_on); + frame_encoded.sdc_m_pre_tsms = can1_sensornode_r_10_hz_sdc_m_pre_tsms_encode(frame_decoded.sdc_m_pre_tsms); + frame_encoded.sdc_m_post_tsms = can1_sensornode_r_10_hz_sdc_m_post_tsms_encode(frame_decoded.sdc_m_post_tsms); + frame_encoded.bdts_rl = can1_sensornode_r_10_hz_bdts_rl_encode(frame_decoded.bdts_rl); + frame_encoded.bdts_rr = can1_sensornode_r_10_hz_bdts_rr_encode(frame_decoded.bdts_rr); + frame_encoded.wt_bat = can1_sensornode_r_10_hz_wt_bat_encode(frame_decoded.wt_bat); + frame_encoded.wt_dt = can1_sensornode_r_10_hz_wt_dt_encode(frame_decoded.wt_dt); + frame_encoded.wp_bat = can1_sensornode_r_10_hz_wp_bat_encode(frame_decoded.wp_bat); + frame_encoded.wp_dt = can1_sensornode_r_10_hz_wp_dt_encode(frame_decoded.wp_dt); + return frame_encoded; +} + +inline can1_sensornode_r_100_hz_t sensornode_r_100_hz(const frame::decoded::can1::sensornode_r_100_hz_t frame_decoded) { + can1_sensornode_r_100_hz_t frame_encoded; + frame_encoded.ebs_aps_1 = can1_sensornode_r_100_hz_ebs_aps_1_encode(frame_decoded.ebs_aps_1); + frame_encoded.ebs_aps_2 = can1_sensornode_r_100_hz_ebs_aps_2_encode(frame_decoded.ebs_aps_2); + frame_encoded.bp_r = can1_sensornode_r_100_hz_bp_r_encode(frame_decoded.bp_r); + frame_encoded.wss_rl = can1_sensornode_r_100_hz_wss_rl_encode(frame_decoded.wss_rl); + frame_encoded.wss_rr = can1_sensornode_r_100_hz_wss_rr_encode(frame_decoded.wss_rr); + frame_encoded.ds_rl = can1_sensornode_r_100_hz_ds_rl_encode(frame_decoded.ds_rl); + frame_encoded.ds_rr = can1_sensornode_r_100_hz_ds_rr_encode(frame_decoded.ds_rr); + return frame_encoded; +} + +inline can1_sensornode_r_1k_hz_t sensornode_r_1k_hz(const frame::decoded::can1::sensornode_r_1k_hz_t frame_decoded) { + can1_sensornode_r_1k_hz_t frame_encoded; + frame_encoded.sls_rl = can1_sensornode_r_1k_hz_sls_rl_encode(frame_decoded.sls_rl); + frame_encoded.sls_rr = can1_sensornode_r_1k_hz_sls_rr_encode(frame_decoded.sls_rr); + return frame_encoded; +} + +inline can1_pwm_duty_cycle_t pwm_duty_cycle(const frame::decoded::can1::pwm_duty_cycle_t frame_decoded) { + can1_pwm_duty_cycle_t frame_encoded; + frame_encoded.dc_drs = can1_pwm_duty_cycle_dc_drs_encode(frame_decoded.dc_drs); + frame_encoded.dc_assi_y = can1_pwm_duty_cycle_dc_assi_y_encode(frame_decoded.dc_assi_y); + frame_encoded.dc_assi_b = can1_pwm_duty_cycle_dc_assi_b_encode(frame_decoded.dc_assi_b); + frame_encoded.dc_bl = can1_pwm_duty_cycle_dc_bl_encode(frame_decoded.dc_bl); + frame_encoded.dc_fans_dt = can1_pwm_duty_cycle_dc_fans_dt_encode(frame_decoded.dc_fans_dt); + frame_encoded.dc_fans_bat = can1_pwm_duty_cycle_dc_fans_bat_encode(frame_decoded.dc_fans_bat); + frame_encoded.dc_sbx = can1_pwm_duty_cycle_dc_sbx_encode(frame_decoded.dc_sbx); + return frame_encoded; +} + +inline can1_pwm_config_t pwm_config(const frame::decoded::can1::pwm_config_t frame_decoded) { + can1_pwm_config_t frame_encoded; + frame_encoded.freq_pwm1_drs_lighting = can1_pwm_config_freq_pwm1_drs_lighting_encode(frame_decoded.freq_pwm1_drs_lighting); + frame_encoded.freq_pwm3_fans = can1_pwm_config_freq_pwm3_fans_encode(frame_decoded.freq_pwm3_fans); + frame_encoded.freq_pwm2_sbx = can1_pwm_config_freq_pwm2_sbx_encode(frame_decoded.freq_pwm2_sbx); + return frame_encoded; +} + +inline can1_dashboard_in_t dashboard_in(const frame::decoded::can1::dashboard_in_t frame_decoded) { + can1_dashboard_in_t frame_encoded; + frame_encoded.dashboard_r2_d_button = can1_dashboard_in_dashboard_r2_d_button_encode(frame_decoded.dashboard_r2_d_button); + frame_encoded.dashboard_ts_activate_button = can1_dashboard_in_dashboard_ts_activate_button_encode(frame_decoded.dashboard_ts_activate_button); + frame_encoded.dashboard_race_key = can1_dashboard_in_dashboard_race_key_encode(frame_decoded.dashboard_race_key); + frame_encoded.dashboard_sdc_in = can1_dashboard_in_dashboard_sdc_in_encode(frame_decoded.dashboard_sdc_in); + frame_encoded.dashboard_sdc_out = can1_dashboard_in_dashboard_sdc_out_encode(frame_decoded.dashboard_sdc_out); + return frame_encoded; +} + +inline can1_ams_slave1_status_t ams_slave1_status(const frame::decoded::can1::ams_slave1_status_t frame_decoded) { + can1_ams_slave1_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave1_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave1_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave1_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave1_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave1_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave1_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave2_log0_t ams_slave2_log0(const frame::decoded::can1::ams_slave2_log0_t frame_decoded) { + can1_ams_slave2_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave2_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave2_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave2_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave2_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave2_log1_t ams_slave2_log1(const frame::decoded::can1::ams_slave2_log1_t frame_decoded) { + can1_ams_slave2_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave2_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave2_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave2_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave2_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave2_log2_t ams_slave2_log2(const frame::decoded::can1::ams_slave2_log2_t frame_decoded) { + can1_ams_slave2_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave2_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave2_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave2_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave2_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave2_log3_t ams_slave2_log3(const frame::decoded::can1::ams_slave2_log3_t frame_decoded) { + can1_ams_slave2_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave2_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave2_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave2_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave2_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave2_log4_t ams_slave2_log4(const frame::decoded::can1::ams_slave2_log4_t frame_decoded) { + can1_ams_slave2_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave2_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave2_log5_t ams_slave2_log5(const frame::decoded::can1::ams_slave2_log5_t frame_decoded) { + can1_ams_slave2_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave2_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave2_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave2_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave2_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave2_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave2_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave2_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave2_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave5_log6_t ams_slave5_log6(const frame::decoded::can1::ams_slave5_log6_t frame_decoded) { + can1_ams_slave5_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave5_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave5_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave4_log6_t ams_slave4_log6(const frame::decoded::can1::ams_slave4_log6_t frame_decoded) { + can1_ams_slave4_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave4_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave4_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave3_log6_t ams_slave3_log6(const frame::decoded::can1::ams_slave3_log6_t frame_decoded) { + can1_ams_slave3_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave3_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave3_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave2_log6_t ams_slave2_log6(const frame::decoded::can1::ams_slave2_log6_t frame_decoded) { + can1_ams_slave2_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave2_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave2_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave1_log6_t ams_slave1_log6(const frame::decoded::can1::ams_slave1_log6_t frame_decoded) { + can1_ams_slave1_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave1_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave1_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_ams_slave5_log5_t ams_slave5_log5(const frame::decoded::can1::ams_slave5_log5_t frame_decoded) { + can1_ams_slave5_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave5_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave5_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave5_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave5_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave5_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave5_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave5_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave5_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave4_log5_t ams_slave4_log5(const frame::decoded::can1::ams_slave4_log5_t frame_decoded) { + can1_ams_slave4_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave4_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave4_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave4_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave4_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave4_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave4_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave4_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave4_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave3_log5_t ams_slave3_log5(const frame::decoded::can1::ams_slave3_log5_t frame_decoded) { + can1_ams_slave3_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave3_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave3_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave3_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave3_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave3_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave3_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave3_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave3_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave1_log5_t ams_slave1_log5(const frame::decoded::can1::ams_slave1_log5_t frame_decoded) { + can1_ams_slave1_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave1_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave1_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave1_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave1_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave1_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave1_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave1_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave1_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave5_log4_t ams_slave5_log4(const frame::decoded::can1::ams_slave5_log4_t frame_decoded) { + can1_ams_slave5_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave5_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave4_log4_t ams_slave4_log4(const frame::decoded::can1::ams_slave4_log4_t frame_decoded) { + can1_ams_slave4_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave4_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave3_log4_t ams_slave3_log4(const frame::decoded::can1::ams_slave3_log4_t frame_decoded) { + can1_ams_slave3_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave3_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave1_log4_t ams_slave1_log4(const frame::decoded::can1::ams_slave1_log4_t frame_decoded) { + can1_ams_slave1_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave1_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave5_log3_t ams_slave5_log3(const frame::decoded::can1::ams_slave5_log3_t frame_decoded) { + can1_ams_slave5_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave5_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave5_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave5_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave5_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave4_log3_t ams_slave4_log3(const frame::decoded::can1::ams_slave4_log3_t frame_decoded) { + can1_ams_slave4_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave4_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave4_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave4_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave4_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave3_log3_t ams_slave3_log3(const frame::decoded::can1::ams_slave3_log3_t frame_decoded) { + can1_ams_slave3_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave3_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave3_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave3_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave3_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave1_log3_t ams_slave1_log3(const frame::decoded::can1::ams_slave1_log3_t frame_decoded) { + can1_ams_slave1_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave1_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave1_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave1_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave1_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave5_log2_t ams_slave5_log2(const frame::decoded::can1::ams_slave5_log2_t frame_decoded) { + can1_ams_slave5_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave5_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave5_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave5_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave5_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave4_log2_t ams_slave4_log2(const frame::decoded::can1::ams_slave4_log2_t frame_decoded) { + can1_ams_slave4_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave4_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave4_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave4_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave4_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave3_log2_t ams_slave3_log2(const frame::decoded::can1::ams_slave3_log2_t frame_decoded) { + can1_ams_slave3_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave3_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave3_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave3_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave3_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave1_log2_t ams_slave1_log2(const frame::decoded::can1::ams_slave1_log2_t frame_decoded) { + can1_ams_slave1_log2_t frame_encoded; + frame_encoded.ams_slave_id_v8 = can1_ams_slave1_log2_ams_slave_id_v8_encode(frame_decoded.ams_slave_id_v8); + frame_encoded.ams_slave_id_v9 = can1_ams_slave1_log2_ams_slave_id_v9_encode(frame_decoded.ams_slave_id_v9); + frame_encoded.ams_slave_id_v10 = can1_ams_slave1_log2_ams_slave_id_v10_encode(frame_decoded.ams_slave_id_v10); + frame_encoded.ams_slave_id_v11 = can1_ams_slave1_log2_ams_slave_id_v11_encode(frame_decoded.ams_slave_id_v11); + return frame_encoded; +} + +inline can1_ams_slave5_log1_t ams_slave5_log1(const frame::decoded::can1::ams_slave5_log1_t frame_decoded) { + can1_ams_slave5_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave5_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave5_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave5_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave5_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave4_log1_t ams_slave4_log1(const frame::decoded::can1::ams_slave4_log1_t frame_decoded) { + can1_ams_slave4_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave4_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave4_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave4_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave4_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave3_log1_t ams_slave3_log1(const frame::decoded::can1::ams_slave3_log1_t frame_decoded) { + can1_ams_slave3_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave3_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave3_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave3_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave3_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave1_log1_t ams_slave1_log1(const frame::decoded::can1::ams_slave1_log1_t frame_decoded) { + can1_ams_slave1_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave1_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave1_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave1_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave1_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave5_log0_t ams_slave5_log0(const frame::decoded::can1::ams_slave5_log0_t frame_decoded) { + can1_ams_slave5_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave5_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave5_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave5_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave5_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave4_log0_t ams_slave4_log0(const frame::decoded::can1::ams_slave4_log0_t frame_decoded) { + can1_ams_slave4_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave4_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave4_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave4_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave4_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave3_log0_t ams_slave3_log0(const frame::decoded::can1::ams_slave3_log0_t frame_decoded) { + can1_ams_slave3_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave3_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave3_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave3_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave3_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave1_log0_t ams_slave1_log0(const frame::decoded::can1::ams_slave1_log0_t frame_decoded) { + can1_ams_slave1_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave1_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave1_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave1_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave1_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_pdu_heartbeat_t pdu_heartbeat(const frame::decoded::can1::pdu_heartbeat_t frame_decoded) { + can1_pdu_heartbeat_t frame_encoded; + frame_encoded.pdu_heartbeat = can1_pdu_heartbeat_pdu_heartbeat_encode(frame_decoded.pdu_heartbeat); + return frame_encoded; +} + +inline can1_ftcu_pneumatik_t ftcu_pneumatik(const frame::decoded::can1::ftcu_pneumatik_t frame_decoded) { + can1_ftcu_pneumatik_t frame_encoded; + frame_encoded.ftcu_tank_pressure_1 = can1_ftcu_pneumatik_ftcu_tank_pressure_1_encode(frame_decoded.ftcu_tank_pressure_1); + frame_encoded.ftcu_tank_pressure_2 = can1_ftcu_pneumatik_ftcu_tank_pressure_2_encode(frame_decoded.ftcu_tank_pressure_2); + return frame_encoded; +} + +inline can1_acu_tx_commands_t acu_tx_commands(const frame::decoded::can1::acu_tx_commands_t frame_decoded) { + can1_acu_tx_commands_t frame_encoded; + frame_encoded.abx_speed_fl = can1_acu_tx_commands_abx_speed_fl_encode(frame_decoded.abx_speed_fl); + frame_encoded.abx_speed_fr = can1_acu_tx_commands_abx_speed_fr_encode(frame_decoded.abx_speed_fr); + frame_encoded.abx_speed_rl = can1_acu_tx_commands_abx_speed_rl_encode(frame_decoded.abx_speed_rl); + frame_encoded.abx_speed_rr = can1_acu_tx_commands_abx_speed_rr_encode(frame_decoded.abx_speed_rr); + frame_encoded.abx_steering_angle_left = can1_acu_tx_commands_abx_steering_angle_left_encode(frame_decoded.abx_steering_angle_left); + frame_encoded.abx_steering_angle_right = can1_acu_tx_commands_abx_steering_angle_right_encode(frame_decoded.abx_steering_angle_right); + return frame_encoded; +} + +inline can1_acu_rx_commands_t acu_rx_commands(const frame::decoded::can1::acu_rx_commands_t frame_decoded) { + can1_acu_rx_commands_t frame_encoded; + frame_encoded.acu_speed_target_left = can1_acu_rx_commands_acu_speed_target_left_encode(frame_decoded.acu_speed_target_left); + frame_encoded.acu_speed_target_right = can1_acu_rx_commands_acu_speed_target_right_encode(frame_decoded.acu_speed_target_right); + frame_encoded.acu_steering_angle_right = can1_acu_rx_commands_acu_steering_angle_right_encode(frame_decoded.acu_steering_angle_right); + frame_encoded.acu_steering_angle_left = can1_acu_rx_commands_acu_steering_angle_left_encode(frame_decoded.acu_steering_angle_left); + return frame_encoded; +} + +inline can1_acu_rx_t acu_rx(const frame::decoded::can1::acu_rx_t frame_decoded) { + can1_acu_rx_t frame_encoded; + frame_encoded.acu_as_mission_complete = can1_acu_rx_acu_as_mission_complete_encode(frame_decoded.acu_as_mission_complete); + frame_encoded.acu_as_ok = can1_acu_rx_acu_as_ok_encode(frame_decoded.acu_as_ok); + frame_encoded.acu_drs = can1_acu_rx_acu_drs_encode(frame_decoded.acu_drs); + frame_encoded.acu_lap_count = can1_acu_rx_acu_lap_count_encode(frame_decoded.acu_lap_count); + frame_encoded.acu_cones_all = can1_acu_rx_acu_cones_all_encode(frame_decoded.acu_cones_all); + frame_encoded.acu_cones_actual = can1_acu_rx_acu_cones_actual_encode(frame_decoded.acu_cones_actual); + return frame_encoded; +} + +inline can1_ams_slave0_log0_t ams_slave0_log0(const frame::decoded::can1::ams_slave0_log0_t frame_decoded) { + can1_ams_slave0_log0_t frame_encoded; + frame_encoded.ams_slave_id_v0 = can1_ams_slave0_log0_ams_slave_id_v0_encode(frame_decoded.ams_slave_id_v0); + frame_encoded.ams_slave_id_v1 = can1_ams_slave0_log0_ams_slave_id_v1_encode(frame_decoded.ams_slave_id_v1); + frame_encoded.ams_slave_id_v2 = can1_ams_slave0_log0_ams_slave_id_v2_encode(frame_decoded.ams_slave_id_v2); + frame_encoded.ams_slave_id_v3 = can1_ams_slave0_log0_ams_slave_id_v3_encode(frame_decoded.ams_slave_id_v3); + return frame_encoded; +} + +inline can1_ams_slave0_log1_t ams_slave0_log1(const frame::decoded::can1::ams_slave0_log1_t frame_decoded) { + can1_ams_slave0_log1_t frame_encoded; + frame_encoded.ams_slave_id_v4 = can1_ams_slave0_log1_ams_slave_id_v4_encode(frame_decoded.ams_slave_id_v4); + frame_encoded.ams_slave_id_v5 = can1_ams_slave0_log1_ams_slave_id_v5_encode(frame_decoded.ams_slave_id_v5); + frame_encoded.ams_slave_id_v6 = can1_ams_slave0_log1_ams_slave_id_v6_encode(frame_decoded.ams_slave_id_v6); + frame_encoded.ams_slave_id_v7 = can1_ams_slave0_log1_ams_slave_id_v7_encode(frame_decoded.ams_slave_id_v7); + return frame_encoded; +} + +inline can1_ams_slave0_log3_t ams_slave0_log3(const frame::decoded::can1::ams_slave0_log3_t frame_decoded) { + can1_ams_slave0_log3_t frame_encoded; + frame_encoded.ams_slave_id_v12 = can1_ams_slave0_log3_ams_slave_id_v12_encode(frame_decoded.ams_slave_id_v12); + frame_encoded.ams_slave_id_v13 = can1_ams_slave0_log3_ams_slave_id_v13_encode(frame_decoded.ams_slave_id_v13); + frame_encoded.ams_slave_id_v14 = can1_ams_slave0_log3_ams_slave_id_v14_encode(frame_decoded.ams_slave_id_v14); + frame_encoded.ams_slave_id_v15 = can1_ams_slave0_log3_ams_slave_id_v15_encode(frame_decoded.ams_slave_id_v15); + return frame_encoded; +} + +inline can1_ams_slave0_log4_t ams_slave0_log4(const frame::decoded::can1::ams_slave0_log4_t frame_decoded) { + can1_ams_slave0_log4_t frame_encoded; + frame_encoded.ams_slave_id_failed_sensors = can1_ams_slave0_log4_ams_slave_id_failed_sensors_encode(frame_decoded.ams_slave_id_failed_sensors); + return frame_encoded; +} + +inline can1_ams_slave0_log5_t ams_slave0_log5(const frame::decoded::can1::ams_slave0_log5_t frame_decoded) { + can1_ams_slave0_log5_t frame_encoded; + frame_encoded.ams_slave_id_t0 = can1_ams_slave0_log5_ams_slave_id_t0_encode(frame_decoded.ams_slave_id_t0); + frame_encoded.ams_slave_id_t1 = can1_ams_slave0_log5_ams_slave_id_t1_encode(frame_decoded.ams_slave_id_t1); + frame_encoded.ams_slave_id_t2 = can1_ams_slave0_log5_ams_slave_id_t2_encode(frame_decoded.ams_slave_id_t2); + frame_encoded.ams_slave_id_t3 = can1_ams_slave0_log5_ams_slave_id_t3_encode(frame_decoded.ams_slave_id_t3); + frame_encoded.ams_slave_id_t4 = can1_ams_slave0_log5_ams_slave_id_t4_encode(frame_decoded.ams_slave_id_t4); + frame_encoded.ams_slave_id_t5 = can1_ams_slave0_log5_ams_slave_id_t5_encode(frame_decoded.ams_slave_id_t5); + frame_encoded.ams_slave_id_t6 = can1_ams_slave0_log5_ams_slave_id_t6_encode(frame_decoded.ams_slave_id_t6); + frame_encoded.ams_slave_id_t7 = can1_ams_slave0_log5_ams_slave_id_t7_encode(frame_decoded.ams_slave_id_t7); + return frame_encoded; +} + +inline can1_ams_slave0_log6_t ams_slave0_log6(const frame::decoded::can1::ams_slave0_log6_t frame_decoded) { + can1_ams_slave0_log6_t frame_encoded; + frame_encoded.ams_slave_id_t8 = can1_ams_slave0_log6_ams_slave_id_t8_encode(frame_decoded.ams_slave_id_t8); + frame_encoded.ams_slave_id_t9 = can1_ams_slave0_log6_ams_slave_id_t9_encode(frame_decoded.ams_slave_id_t9); + return frame_encoded; +} + +inline can1_acu_tx_t acu_tx(const frame::decoded::can1::acu_tx_t frame_decoded) { + can1_acu_tx_t frame_encoded; + frame_encoded.acu_as_mission = can1_acu_tx_acu_as_mission_encode(frame_decoded.acu_as_mission); + frame_encoded.acu_as_state = can1_acu_tx_acu_as_state_encode(frame_decoded.acu_as_state); + frame_encoded.acu_power_off = can1_acu_tx_acu_power_off_encode(frame_decoded.acu_power_off); + frame_encoded.acu_reset = can1_acu_tx_acu_reset_encode(frame_decoded.acu_reset); + frame_encoded.acu_allow_torque = can1_acu_tx_acu_allow_torque_encode(frame_decoded.acu_allow_torque); + frame_encoded.abx_con_mon_error = can1_acu_tx_abx_con_mon_error_encode(frame_decoded.abx_con_mon_error); + return frame_encoded; +} + +inline can1_ams_slave5_status_t ams_slave5_status(const frame::decoded::can1::ams_slave5_status_t frame_decoded) { + can1_ams_slave5_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave5_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave5_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave5_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave5_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave5_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave5_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave4_status_t ams_slave4_status(const frame::decoded::can1::ams_slave4_status_t frame_decoded) { + can1_ams_slave4_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave4_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave4_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave4_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave4_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave4_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave4_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave3_status_t ams_slave3_status(const frame::decoded::can1::ams_slave3_status_t frame_decoded) { + can1_ams_slave3_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave3_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave3_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave3_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave3_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave3_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave3_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_slave2_status_t ams_slave2_status(const frame::decoded::can1::ams_slave2_status_t frame_decoded) { + can1_ams_slave2_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave2_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave2_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave2_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave2_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave2_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave2_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ams_error_t ams_error(const frame::decoded::can1::ams_error_t frame_decoded) { + can1_ams_error_t frame_encoded; + frame_encoded.ams_error_kind = can1_ams_error_ams_error_kind_encode(frame_decoded.ams_error_kind); + frame_encoded.ams_error_arg = can1_ams_error_ams_error_arg_encode(frame_decoded.ams_error_arg); + return frame_encoded; +} + +inline can1_ftcu_cooling_t ftcu_cooling(const frame::decoded::can1::ftcu_cooling_t frame_decoded) { + can1_ftcu_cooling_t frame_encoded; + frame_encoded.ftcu_water_pressure_2 = can1_ftcu_cooling_ftcu_water_pressure_2_encode(frame_decoded.ftcu_water_pressure_2); + frame_encoded.ftcu_water_pressure_1 = can1_ftcu_cooling_ftcu_water_pressure_1_encode(frame_decoded.ftcu_water_pressure_1); + frame_encoded.ftcu_water_temperature_1 = can1_ftcu_cooling_ftcu_water_temperature_1_encode(frame_decoded.ftcu_water_temperature_1); + frame_encoded.ftcu_water_temperature_2 = can1_ftcu_cooling_ftcu_water_temperature_2_encode(frame_decoded.ftcu_water_temperature_2); + frame_encoded.ftcu_flow_rate = can1_ftcu_cooling_ftcu_flow_rate_encode(frame_decoded.ftcu_flow_rate); + return frame_encoded; +} + +inline can1_ftcu_brake_t_t ftcu_brake_t(const frame::decoded::can1::ftcu_brake_t_t frame_decoded) { + can1_ftcu_brake_t_t frame_encoded; + frame_encoded.ftcu_brake_t_fl = can1_ftcu_brake_t_ftcu_brake_t_fl_encode(frame_decoded.ftcu_brake_t_fl); + frame_encoded.ftcu_brake_t_fr = can1_ftcu_brake_t_ftcu_brake_t_fr_encode(frame_decoded.ftcu_brake_t_fr); + frame_encoded.ftcu_brake_t_rl = can1_ftcu_brake_t_ftcu_brake_t_rl_encode(frame_decoded.ftcu_brake_t_rl); + frame_encoded.ftcu_brake_t_rr = can1_ftcu_brake_t_ftcu_brake_t_rr_encode(frame_decoded.ftcu_brake_t_rr); + return frame_encoded; +} + +inline can1_ftcu_wheelspeed_t ftcu_wheelspeed(const frame::decoded::can1::ftcu_wheelspeed_t frame_decoded) { + can1_ftcu_wheelspeed_t frame_encoded; + frame_encoded.ftcu_wheelspeed_fl = can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_encode(frame_decoded.ftcu_wheelspeed_fl); + frame_encoded.ftcu_wheelspeed_fr = can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_encode(frame_decoded.ftcu_wheelspeed_fr); + frame_encoded.ftcu_wheelspeed_rl = can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_encode(frame_decoded.ftcu_wheelspeed_rl); + frame_encoded.ftcu_wheelspeed_rr = can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_encode(frame_decoded.ftcu_wheelspeed_rr); + frame_encoded.ftcu_distance_session = can1_ftcu_wheelspeed_ftcu_distance_session_encode(frame_decoded.ftcu_distance_session); + return frame_encoded; +} + +inline can1_ftcu_timings_t ftcu_timings(const frame::decoded::can1::ftcu_timings_t frame_decoded) { + can1_ftcu_timings_t frame_encoded; + frame_encoded.ftcu_laptime_best = can1_ftcu_timings_ftcu_laptime_best_encode(frame_decoded.ftcu_laptime_best); + frame_encoded.ftcu_laptime_last = can1_ftcu_timings_ftcu_laptime_last_encode(frame_decoded.ftcu_laptime_last); + frame_encoded.ftcu_sectortime_best = can1_ftcu_timings_ftcu_sectortime_best_encode(frame_decoded.ftcu_sectortime_best); + frame_encoded.ftcu_sectortime_last = can1_ftcu_timings_ftcu_sectortime_last_encode(frame_decoded.ftcu_sectortime_last); + return frame_encoded; +} + +inline can1_ftcu_driver_t ftcu_driver(const frame::decoded::can1::ftcu_driver_t frame_decoded) { + can1_ftcu_driver_t frame_encoded; + frame_encoded.ftcu_apps_percent = can1_ftcu_driver_ftcu_apps_percent_encode(frame_decoded.ftcu_apps_percent); + frame_encoded.ftcu_brake_pressure_f = can1_ftcu_driver_ftcu_brake_pressure_f_encode(frame_decoded.ftcu_brake_pressure_f); + frame_encoded.ftcu_brake_pressure_r = can1_ftcu_driver_ftcu_brake_pressure_r_encode(frame_decoded.ftcu_brake_pressure_r); + frame_encoded.ftcu_steering_angle = can1_ftcu_driver_ftcu_steering_angle_encode(frame_decoded.ftcu_steering_angle); + frame_encoded.ftcu_speed = can1_ftcu_driver_ftcu_speed_encode(frame_decoded.ftcu_speed); + frame_encoded.ftcu_lapcounter = can1_ftcu_driver_ftcu_lapcounter_encode(frame_decoded.ftcu_lapcounter); + frame_encoded.ftcu_sectorcounter = can1_ftcu_driver_ftcu_sectorcounter_encode(frame_decoded.ftcu_sectorcounter); + return frame_encoded; +} + +inline can1_tts_rr_t tts_rr(const frame::decoded::can1::tts_rr_t frame_decoded) { + can1_tts_rr_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_rr_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_rr_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_rr_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_rr_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outet_right = can1_tts_rr_tts_outet_right_encode(frame_decoded.tts_outet_right); + frame_encoded.tts_status = can1_tts_rr_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_rl_t tts_rl(const frame::decoded::can1::tts_rl_t frame_decoded) { + can1_tts_rl_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_rl_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_rl_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_rl_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_rl_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_rl_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_rl_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_fr_t tts_fr(const frame::decoded::can1::tts_fr_t frame_decoded) { + can1_tts_fr_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_fr_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_fr_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_fr_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_fr_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_fr_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_fr_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_tts_fl_t tts_fl(const frame::decoded::can1::tts_fl_t frame_decoded) { + can1_tts_fl_t frame_encoded; + frame_encoded.tts_outer_left = can1_tts_fl_tts_outer_left_encode(frame_decoded.tts_outer_left); + frame_encoded.tts_center_left = can1_tts_fl_tts_center_left_encode(frame_decoded.tts_center_left); + frame_encoded.tts_center = can1_tts_fl_tts_center_encode(frame_decoded.tts_center); + frame_encoded.tts_center_right = can1_tts_fl_tts_center_right_encode(frame_decoded.tts_center_right); + frame_encoded.tts_outer_right = can1_tts_fl_tts_outer_right_encode(frame_decoded.tts_outer_right); + frame_encoded.tts_status = can1_tts_fl_tts_status_encode(frame_decoded.tts_status); + return frame_encoded; +} + +inline can1_stw_param_set_t stw_param_set(const frame::decoded::can1::stw_param_set_t frame_decoded) { + can1_stw_param_set_t frame_encoded; + frame_encoded.stw_param_set = can1_stw_param_set_stw_param_set_encode(frame_decoded.stw_param_set); + frame_encoded.stw_param_tc_slipref = can1_stw_param_set_stw_param_tc_slipref_encode(frame_decoded.stw_param_tc_slipref); + frame_encoded.stw_param_tc_mumax = can1_stw_param_set_stw_param_tc_mumax_encode(frame_decoded.stw_param_tc_mumax); + frame_encoded.stw_param_tc_i = can1_stw_param_set_stw_param_tc_i_encode(frame_decoded.stw_param_tc_i); + frame_encoded.stw_param_plim = can1_stw_param_set_stw_param_plim_encode(frame_decoded.stw_param_plim); + frame_encoded.stw_param_tlim = can1_stw_param_set_stw_param_tlim_encode(frame_decoded.stw_param_tlim); + frame_encoded.stw_param_tc_p = can1_stw_param_set_stw_param_tc_p_encode(frame_decoded.stw_param_tc_p); + frame_encoded.stw_param_reku = can1_stw_param_set_stw_param_reku_encode(frame_decoded.stw_param_reku); + frame_encoded.stw_param_tc_on = can1_stw_param_set_stw_param_tc_on_encode(frame_decoded.stw_param_tc_on); + frame_encoded.stw_param_tv_on = can1_stw_param_set_stw_param_tv_on_encode(frame_decoded.stw_param_tv_on); + frame_encoded.stw_param_discipline = can1_stw_param_set_stw_param_discipline_encode(frame_decoded.stw_param_discipline); + frame_encoded.stw_param_slim = can1_stw_param_set_stw_param_slim_encode(frame_decoded.stw_param_slim); + return frame_encoded; +} + +inline can1_ams_slave0_status_t ams_slave0_status(const frame::decoded::can1::ams_slave0_status_t frame_decoded) { + can1_ams_slave0_status_t frame_encoded; + frame_encoded.ams_slave_status_error = can1_ams_slave0_status_ams_slave_status_error_encode(frame_decoded.ams_slave_status_error); + frame_encoded.ams_slave_status_id = can1_ams_slave0_status_ams_slave_status_id_encode(frame_decoded.ams_slave_status_id); + frame_encoded.ams_slave_status_temp_sensor = can1_ams_slave0_status_ams_slave_status_temp_sensor_encode(frame_decoded.ams_slave_status_temp_sensor); + frame_encoded.ams_slave_status_min_cell_volt = can1_ams_slave0_status_ams_slave_status_min_cell_volt_encode(frame_decoded.ams_slave_status_min_cell_volt); + frame_encoded.ams_slave_status_max_cell_volt = can1_ams_slave0_status_ams_slave_status_max_cell_volt_encode(frame_decoded.ams_slave_status_max_cell_volt); + frame_encoded.ams_slave_status_max_temp = can1_ams_slave0_status_ams_slave_status_max_temp_encode(frame_decoded.ams_slave_status_max_temp); + return frame_encoded; +} + +inline can1_ssu_message_t ssu_message(const frame::decoded::can1::ssu_message_t frame_decoded) { + can1_ssu_message_t frame_encoded; + frame_encoded.ssu_pressure = can1_ssu_message_ssu_pressure_encode(frame_decoded.ssu_pressure); + frame_encoded.ssu_air_temp = can1_ssu_message_ssu_air_temp_encode(frame_decoded.ssu_air_temp); + return frame_encoded; +} + +inline can1_ams_status_t ams_status(const frame::decoded::can1::ams_status_t frame_decoded) { + can1_ams_status_t frame_encoded; + frame_encoded.ams_state = can1_ams_status_ams_state_encode(frame_decoded.ams_state); + frame_encoded.sdc_closed = can1_ams_status_sdc_closed_encode(frame_decoded.sdc_closed); + frame_encoded.soc = can1_ams_status_soc_encode(frame_decoded.soc); + frame_encoded.min_cell_volt = can1_ams_status_min_cell_volt_encode(frame_decoded.min_cell_volt); + frame_encoded.max_cell_temp = can1_ams_status_max_cell_temp_encode(frame_decoded.max_cell_temp); + frame_encoded.ams_imd_state = can1_ams_status_ams_imd_state_encode(frame_decoded.ams_imd_state); + frame_encoded.ams_imd_ok = can1_ams_status_ams_imd_ok_encode(frame_decoded.ams_imd_ok); + return frame_encoded; +} + +inline can1_ams_slave_panic_t ams_slave_panic(const frame::decoded::can1::ams_slave_panic_t frame_decoded) { + can1_ams_slave_panic_t frame_encoded; + frame_encoded.ams_slave_panic_slave_id = can1_ams_slave_panic_ams_slave_panic_slave_id_encode(frame_decoded.ams_slave_panic_slave_id); + frame_encoded.ams_slave_panic_kind = can1_ams_slave_panic_ams_slave_panic_kind_encode(frame_decoded.ams_slave_panic_kind); + frame_encoded.ams_slave_panic_arg = can1_ams_slave_panic_ams_slave_panic_arg_encode(frame_decoded.ams_slave_panic_arg); + return frame_encoded; +} + +inline can1_ams_in_t ams_in(const frame::decoded::can1::ams_in_t frame_decoded) { + can1_ams_in_t frame_encoded; + frame_encoded.ts_activate = can1_ams_in_ts_activate_encode(frame_decoded.ts_activate); + frame_encoded.inverters_discharged = can1_ams_in_inverters_discharged_encode(frame_decoded.inverters_discharged); + frame_encoded.lap_number = can1_ams_in_lap_number_encode(frame_decoded.lap_number); + return frame_encoded; +} + +inline can1_shunt_current_t shunt_current(const frame::decoded::can1::shunt_current_t frame_decoded) { + can1_shunt_current_t frame_encoded; + frame_encoded.shunt_current = can1_shunt_current_shunt_current_encode(frame_decoded.shunt_current); + return frame_encoded; +} + +inline can1_shunt_voltage1_t shunt_voltage1(const frame::decoded::can1::shunt_voltage1_t frame_decoded) { + can1_shunt_voltage1_t frame_encoded; + frame_encoded.shunt_voltage1 = can1_shunt_voltage1_shunt_voltage1_encode(frame_decoded.shunt_voltage1); + return frame_encoded; +} + +inline can1_shunt_voltage2_t shunt_voltage2(const frame::decoded::can1::shunt_voltage2_t frame_decoded) { + can1_shunt_voltage2_t frame_encoded; + frame_encoded.shunt_voltage2 = can1_shunt_voltage2_shunt_voltage2_encode(frame_decoded.shunt_voltage2); + return frame_encoded; +} + +inline can1_shunt_voltage3_t shunt_voltage3(const frame::decoded::can1::shunt_voltage3_t frame_decoded) { + can1_shunt_voltage3_t frame_encoded; + frame_encoded.shunt_voltage3 = can1_shunt_voltage3_shunt_voltage3_encode(frame_decoded.shunt_voltage3); + return frame_encoded; +} + +inline can1_shunt_temperature_t shunt_temperature(const frame::decoded::can1::shunt_temperature_t frame_decoded) { + can1_shunt_temperature_t frame_encoded; + frame_encoded.shunt_temperature = can1_shunt_temperature_shunt_temperature_encode(frame_decoded.shunt_temperature); + return frame_encoded; +} + +inline can1_pdu_command_t pdu_command(const frame::decoded::can1::pdu_command_t frame_decoded) { + can1_pdu_command_t frame_encoded; + frame_encoded.pdu_enable_misc = can1_pdu_command_pdu_enable_misc_encode(frame_decoded.pdu_enable_misc); + frame_encoded.pdu_enable_sdc = can1_pdu_command_pdu_enable_sdc_encode(frame_decoded.pdu_enable_sdc); + frame_encoded.pdu_enable_inverter = can1_pdu_command_pdu_enable_inverter_encode(frame_decoded.pdu_enable_inverter); + frame_encoded.pdu_enable_ts_cooling = can1_pdu_command_pdu_enable_ts_cooling_encode(frame_decoded.pdu_enable_ts_cooling); + frame_encoded.pdu_enable_acc_cooling = can1_pdu_command_pdu_enable_acc_cooling_encode(frame_decoded.pdu_enable_acc_cooling); + frame_encoded.pdu_enable_lldar = can1_pdu_command_pdu_enable_lldar_encode(frame_decoded.pdu_enable_lldar); + frame_encoded.pdu_enable_drs = can1_pdu_command_pdu_enable_drs_encode(frame_decoded.pdu_enable_drs); + frame_encoded.pdu_enable_epsc = can1_pdu_command_pdu_enable_epsc_encode(frame_decoded.pdu_enable_epsc); + frame_encoded.pdu_enable_acu = can1_pdu_command_pdu_enable_acu_encode(frame_decoded.pdu_enable_acu); + frame_encoded.pdu_enable_ebs_a = can1_pdu_command_pdu_enable_ebs_a_encode(frame_decoded.pdu_enable_ebs_a); + frame_encoded.pdu_enable_ebs_b = can1_pdu_command_pdu_enable_ebs_b_encode(frame_decoded.pdu_enable_ebs_b); + frame_encoded.pdu_enable_ebs_c = can1_pdu_command_pdu_enable_ebs_c_encode(frame_decoded.pdu_enable_ebs_c); + return frame_encoded; +} + +inline can1_pdu_response_t pdu_response(const frame::decoded::can1::pdu_response_t frame_decoded) { + can1_pdu_response_t frame_encoded; + frame_encoded.pdu_alwayson_tx = can1_pdu_response_pdu_alwayson_tx_encode(frame_decoded.pdu_alwayson_tx); + frame_encoded.pdu_shutdown_circuit_tx = can1_pdu_response_pdu_shutdown_circuit_tx_encode(frame_decoded.pdu_shutdown_circuit_tx); + frame_encoded.pdu_lidar_tx = can1_pdu_response_pdu_lidar_tx_encode(frame_decoded.pdu_lidar_tx); + frame_encoded.pdu_acu_tx = can1_pdu_response_pdu_acu_tx_encode(frame_decoded.pdu_acu_tx); + frame_encoded.pdu_servos_regler_tx = can1_pdu_response_pdu_servos_regler_tx_encode(frame_decoded.pdu_servos_regler_tx); + frame_encoded.pdu_inverter_tx = can1_pdu_response_pdu_inverter_tx_encode(frame_decoded.pdu_inverter_tx); + frame_encoded.pdu_misc_tx = can1_pdu_response_pdu_misc_tx_encode(frame_decoded.pdu_misc_tx); + frame_encoded.pdu_servo_tx = can1_pdu_response_pdu_servo_tx_encode(frame_decoded.pdu_servo_tx); + frame_encoded.pdu_ebs_valve_1_tx = can1_pdu_response_pdu_ebs_valve_1_tx_encode(frame_decoded.pdu_ebs_valve_1_tx); + frame_encoded.pdu_ebs_valve_2_tx = can1_pdu_response_pdu_ebs_valve_2_tx_encode(frame_decoded.pdu_ebs_valve_2_tx); + frame_encoded.pdu_cs_valve_tx = can1_pdu_response_pdu_cs_valve_tx_encode(frame_decoded.pdu_cs_valve_tx); + frame_encoded.pdu_aggregat_tx = can1_pdu_response_pdu_aggregat_tx_encode(frame_decoded.pdu_aggregat_tx); + frame_encoded.pdu_steering_tx = can1_pdu_response_pdu_steering_tx_encode(frame_decoded.pdu_steering_tx); + frame_encoded.pdu_pwm_tsac_fans = can1_pdu_response_pdu_pwm_tsac_fans_encode(frame_decoded.pdu_pwm_tsac_fans); + frame_encoded.pdu_pwm_radiatot_fans_tx = can1_pdu_response_pdu_pwm_radiatot_fans_tx_encode(frame_decoded.pdu_pwm_radiatot_fans_tx); + frame_encoded.pdu_pwm_aggregat = can1_pdu_response_pdu_pwm_aggregat_encode(frame_decoded.pdu_pwm_aggregat); + frame_encoded.pdu_pwm_pump = can1_pdu_response_pdu_pwm_pump_encode(frame_decoded.pdu_pwm_pump); + frame_encoded.pdu_heartbeat_ok_tx = can1_pdu_response_pdu_heartbeat_ok_tx_encode(frame_decoded.pdu_heartbeat_ok_tx); + return frame_encoded; +} + +inline can1_as_mission_fb_t as_mission_fb(const frame::decoded::can1::as_mission_fb_t frame_decoded) { + can1_as_mission_fb_t frame_encoded; + frame_encoded.mission_selection = can1_as_mission_fb_mission_selection_encode(frame_decoded.mission_selection); + return frame_encoded; +} + +inline can1_stw_mission_selected_t stw_mission_selected(const frame::decoded::can1::stw_mission_selected_t frame_decoded) { + can1_stw_mission_selected_t frame_encoded; + frame_encoded.mission_selection = can1_stw_mission_selected_mission_selection_encode(frame_decoded.mission_selection); + return frame_encoded; +} + +inline can1_epsc_out_t epsc_out(const frame::decoded::can1::epsc_out_t frame_decoded) { + can1_epsc_out_t frame_encoded; + frame_encoded.epsc_measured_rpm = can1_epsc_out_epsc_measured_rpm_encode(frame_decoded.epsc_measured_rpm); + frame_encoded.epsc_measured_steering_angle = can1_epsc_out_epsc_measured_steering_angle_encode(frame_decoded.epsc_measured_steering_angle); + frame_encoded.epsc_measured_mosfet_temperature = can1_epsc_out_epsc_measured_mosfet_temperature_encode(frame_decoded.epsc_measured_mosfet_temperature); + frame_encoded.epsc_measured_voltage = can1_epsc_out_epsc_measured_voltage_encode(frame_decoded.epsc_measured_voltage); + frame_encoded.epsc_measured_current = can1_epsc_out_epsc_measured_current_encode(frame_decoded.epsc_measured_current); + return frame_encoded; +} + +inline can1_epsc_steering_in_t epsc_steering_in(const frame::decoded::can1::epsc_steering_in_t frame_decoded) { + can1_epsc_steering_in_t frame_encoded; + frame_encoded.epsc_desired_steering_angle = can1_epsc_steering_in_epsc_desired_steering_angle_encode(frame_decoded.epsc_desired_steering_angle); + return frame_encoded; +} + +inline can1_stw_buttons_t stw_buttons(const frame::decoded::can1::stw_buttons_t frame_decoded) { + can1_stw_buttons_t frame_encoded; + frame_encoded.stw_button_drs = can1_stw_buttons_stw_button_drs_encode(frame_decoded.stw_button_drs); + frame_encoded.stw_button_1 = can1_stw_buttons_stw_button_1_encode(frame_decoded.stw_button_1); + frame_encoded.stw_button_2 = can1_stw_buttons_stw_button_2_encode(frame_decoded.stw_button_2); + frame_encoded.stw_button_3 = can1_stw_buttons_stw_button_3_encode(frame_decoded.stw_button_3); + frame_encoded.stw_button_4 = can1_stw_buttons_stw_button_4_encode(frame_decoded.stw_button_4); + return frame_encoded; +} + +inline can1_stw_status_t stw_status(const frame::decoded::can1::stw_status_t frame_decoded) { + can1_stw_status_t frame_encoded; + frame_encoded.lap_count = can1_stw_status_lap_count_encode(frame_decoded.lap_count); + frame_encoded.err_pdu = can1_stw_status_err_pdu_encode(frame_decoded.err_pdu); + frame_encoded.err_res = can1_stw_status_err_res_encode(frame_decoded.err_res); + frame_encoded.r2_d_progress = can1_stw_status_r2_d_progress_encode(frame_decoded.r2_d_progress); + frame_encoded.as_state_stw = can1_stw_status_as_state_stw_encode(frame_decoded.as_state_stw); + frame_encoded.err_as = can1_stw_status_err_as_encode(frame_decoded.err_as); + frame_encoded.err_app_sp = can1_stw_status_err_app_sp_encode(frame_decoded.err_app_sp); + frame_encoded.err_s_bspd = can1_stw_status_err_s_bspd_encode(frame_decoded.err_s_bspd); + frame_encoded.err_scs = can1_stw_status_err_scs_encode(frame_decoded.err_scs); + frame_encoded.err_con_mon = can1_stw_status_err_con_mon_encode(frame_decoded.err_con_mon); + frame_encoded.err_ini_chk = can1_stw_status_err_ini_chk_encode(frame_decoded.err_ini_chk); + frame_encoded.err_inv2 = can1_stw_status_err_inv2_encode(frame_decoded.err_inv2); + frame_encoded.err_inv1 = can1_stw_status_err_inv1_encode(frame_decoded.err_inv1); + frame_encoded.err_ams = can1_stw_status_err_ams_encode(frame_decoded.err_ams); + frame_encoded.err_sdc = can1_stw_status_err_sdc_encode(frame_decoded.err_sdc); + frame_encoded.sdc_status = can1_stw_status_sdc_status_encode(frame_decoded.sdc_status); + frame_encoded.inv2_ready = can1_stw_status_inv2_ready_encode(frame_decoded.inv2_ready); + frame_encoded.inv1_ready = can1_stw_status_inv1_ready_encode(frame_decoded.inv1_ready); + frame_encoded.energy_per_lap = can1_stw_status_energy_per_lap_encode(frame_decoded.energy_per_lap); + frame_encoded.ini_chk_state = can1_stw_status_ini_chk_state_encode(frame_decoded.ini_chk_state); + return frame_encoded; +} + +inline can1_pdu_current_1_t pdu_current_1(const frame::decoded::can1::pdu_current_1_t frame_decoded) { + can1_pdu_current_1_t frame_encoded; + frame_encoded.pdu_always_on_current = can1_pdu_current_1_pdu_always_on_current_encode(frame_decoded.pdu_always_on_current); + frame_encoded.pdu_lvms_current = can1_pdu_current_1_pdu_lvms_current_encode(frame_decoded.pdu_lvms_current); + frame_encoded.pdu_asms_current = can1_pdu_current_1_pdu_asms_current_encode(frame_decoded.pdu_asms_current); + frame_encoded.pdu_misc_current = can1_pdu_current_1_pdu_misc_current_encode(frame_decoded.pdu_misc_current); + return frame_encoded; +} + +inline can1_pdu_current_2_t pdu_current_2(const frame::decoded::can1::pdu_current_2_t frame_decoded) { + can1_pdu_current_2_t frame_encoded; + frame_encoded.pdu_sdc_current = can1_pdu_current_2_pdu_sdc_current_encode(frame_decoded.pdu_sdc_current); + frame_encoded.pdu_inverter_current = can1_pdu_current_2_pdu_inverter_current_encode(frame_decoded.pdu_inverter_current); + frame_encoded.pdu_ts_cooling_current = can1_pdu_current_2_pdu_ts_cooling_current_encode(frame_decoded.pdu_ts_cooling_current); + frame_encoded.pdu_acc_cooling_current = can1_pdu_current_2_pdu_acc_cooling_current_encode(frame_decoded.pdu_acc_cooling_current); + return frame_encoded; +} + +inline can1_pdu_current_3_t pdu_current_3(const frame::decoded::can1::pdu_current_3_t frame_decoded) { + can1_pdu_current_3_t frame_encoded; + frame_encoded.pdu_lidar_current = can1_pdu_current_3_pdu_lidar_current_encode(frame_decoded.pdu_lidar_current); + frame_encoded.pdu_drs_current = can1_pdu_current_3_pdu_drs_current_encode(frame_decoded.pdu_drs_current); + frame_encoded.pdu_epsc_current = can1_pdu_current_3_pdu_epsc_current_encode(frame_decoded.pdu_epsc_current); + frame_encoded.pdu_acu_current = can1_pdu_current_3_pdu_acu_current_encode(frame_decoded.pdu_acu_current); + return frame_encoded; +} + +inline can1_pdu_current_4_t pdu_current_4(const frame::decoded::can1::pdu_current_4_t frame_decoded) { + can1_pdu_current_4_t frame_encoded; + frame_encoded.pdu_ebs_a_current = can1_pdu_current_4_pdu_ebs_a_current_encode(frame_decoded.pdu_ebs_a_current); + frame_encoded.pdu_ebs_b_current = can1_pdu_current_4_pdu_ebs_b_current_encode(frame_decoded.pdu_ebs_b_current); + return frame_encoded; +} + +inline can1_epsc_config_in_t epsc_config_in(const frame::decoded::can1::epsc_config_in_t frame_decoded) { + can1_epsc_config_in_t frame_encoded; + frame_encoded.epsc_config_p_gain = can1_epsc_config_in_epsc_config_p_gain_encode(frame_decoded.epsc_config_p_gain); + frame_encoded.epsc_config_i_gain = can1_epsc_config_in_epsc_config_i_gain_encode(frame_decoded.epsc_config_i_gain); + frame_encoded.epsc_config_d_gain = can1_epsc_config_in_epsc_config_d_gain_encode(frame_decoded.epsc_config_d_gain); + return frame_encoded; +} + +} +} + +// decode functions +namespace decode { +namespace can1 { +inline frame::decoded::can1::inverter_velocity_t inverter_velocity(const can1_inverter_velocity_t frame_encoded) { + frame::decoded::can1::inverter_velocity_t frame_decoded; + frame_decoded.inverter_1_velocity = can1_inverter_velocity_inverter_1_velocity_decode(frame_encoded.inverter_1_velocity); + frame_decoded.inverter_2_velocity = can1_inverter_velocity_inverter_2_velocity_decode(frame_encoded.inverter_2_velocity); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_errors_warnings_t inverter_errors_warnings(const can1_inverter_errors_warnings_t frame_encoded) { + frame::decoded::can1::inverter_errors_warnings_t frame_decoded; + frame_decoded.inverter_1_errors = can1_inverter_errors_warnings_inverter_1_errors_decode(frame_encoded.inverter_1_errors); + frame_decoded.inverter_1_warnings = can1_inverter_errors_warnings_inverter_1_warnings_decode(frame_encoded.inverter_1_warnings); + frame_decoded.inverter_2_errors = can1_inverter_errors_warnings_inverter_2_errors_decode(frame_encoded.inverter_2_errors); + frame_decoded.inverter_2_warnings = can1_inverter_errors_warnings_inverter_2_warnings_decode(frame_encoded.inverter_2_warnings); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_torque_actual_cw_t inverter_torque_actual_cw(const can1_inverter_torque_actual_cw_t frame_encoded) { + frame::decoded::can1::inverter_torque_actual_cw_t frame_decoded; + frame_decoded.inverter_1_control_word = can1_inverter_torque_actual_cw_inverter_1_control_word_decode(frame_encoded.inverter_1_control_word); + frame_decoded.inverter_1_torque_actual = can1_inverter_torque_actual_cw_inverter_1_torque_actual_decode(frame_encoded.inverter_1_torque_actual); + frame_decoded.inverter_2_control_word = can1_inverter_torque_actual_cw_inverter_2_control_word_decode(frame_encoded.inverter_2_control_word); + frame_decoded.inverter_2_torque_actual = can1_inverter_torque_actual_cw_inverter_2_torque_actual_decode(frame_encoded.inverter_2_torque_actual); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_temperatur_t inverter_temperatur(const can1_inverter_temperatur_t frame_encoded) { + frame::decoded::can1::inverter_temperatur_t frame_decoded; + frame_decoded.inverter_1_temp_inv = can1_inverter_temperatur_inverter_1_temp_inv_decode(frame_encoded.inverter_1_temp_inv); + frame_decoded.inverter_1_temp_mot = can1_inverter_temperatur_inverter_1_temp_mot_decode(frame_encoded.inverter_1_temp_mot); + frame_decoded.inverter_2_temp_inv = can1_inverter_temperatur_inverter_2_temp_inv_decode(frame_encoded.inverter_2_temp_inv); + frame_decoded.inverter_2_temp_mot = can1_inverter_temperatur_inverter_2_temp_mot_decode(frame_encoded.inverter_2_temp_mot); + return frame_decoded; +} + +inline frame::decoded::can1::inverter_torque_wanted_t inverter_torque_wanted(const can1_inverter_torque_wanted_t frame_encoded) { + frame::decoded::can1::inverter_torque_wanted_t frame_decoded; + frame_decoded.inverter_1_torque_demanded = can1_inverter_torque_wanted_inverter_1_torque_demanded_decode(frame_encoded.inverter_1_torque_demanded); + frame_decoded.inverter_2_torque_demanded = can1_inverter_torque_wanted_inverter_2_torque_demanded_decode(frame_encoded.inverter_2_torque_demanded); + frame_decoded.inverter_1_torque_desired = can1_inverter_torque_wanted_inverter_1_torque_desired_decode(frame_encoded.inverter_1_torque_desired); + frame_decoded.inverter_2_torque_desired = can1_inverter_torque_wanted_inverter_2_torque_desired_decode(frame_encoded.inverter_2_torque_desired); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1(const can1_sdo_telemetrie_rx_node1_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_rx_node1_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_rx_node1_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_rx_node1_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node1_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_rx_node1_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2(const can1_sdo_telemetrie_rx_node2_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_rx_node2_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_rx_node2_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_rx_node2_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_rx_node2_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_rx_node2_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::sdo_telemetrie_tx_t sdo_telemetrie_tx(const can1_sdo_telemetrie_tx_t frame_encoded) { + frame::decoded::can1::sdo_telemetrie_tx_t frame_decoded; + frame_decoded.sdo_command_byte = can1_sdo_telemetrie_tx_sdo_command_byte_decode(frame_encoded.sdo_command_byte); + frame_decoded.sdo_od_index = can1_sdo_telemetrie_tx_sdo_od_index_decode(frame_encoded.sdo_od_index); + frame_decoded.sdo_od_subindex = can1_sdo_telemetrie_tx_sdo_od_subindex_decode(frame_encoded.sdo_od_subindex); + frame_decoded.sdo_data = can1_sdo_telemetrie_tx_sdo_data_decode(frame_encoded.sdo_data); + return frame_decoded; +} + +inline frame::decoded::can1::laptop_sdo_node_t laptop_sdo_node(const can1_laptop_sdo_node_t frame_encoded) { + frame::decoded::can1::laptop_sdo_node_t frame_decoded; + frame_decoded.node_id_sdo = can1_laptop_sdo_node_node_id_sdo_decode(frame_encoded.node_id_sdo); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_long_lat_t x_sens_long_lat(const can1_x_sens_long_lat_t frame_encoded) { + frame::decoded::can1::x_sens_long_lat_t frame_decoded; + frame_decoded.x_sens_latitude = can1_x_sens_long_lat_x_sens_latitude_decode(frame_encoded.x_sens_latitude); + frame_decoded.x_sens_longitude = can1_x_sens_long_lat_x_sens_longitude_decode(frame_encoded.x_sens_longitude); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_rateofturn_t x_sens_rateofturn(const can1_x_sens_rateofturn_t frame_encoded) { + frame::decoded::can1::x_sens_rateofturn_t frame_decoded; + frame_decoded.x_sens_gyr_x = can1_x_sens_rateofturn_x_sens_gyr_x_decode(frame_encoded.x_sens_gyr_x); + frame_decoded.x_sens_gy_y = can1_x_sens_rateofturn_x_sens_gy_y_decode(frame_encoded.x_sens_gy_y); + frame_decoded.x_sens_gy_z = can1_x_sens_rateofturn_x_sens_gy_z_decode(frame_encoded.x_sens_gy_z); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_acceleration_t x_sens_acceleration(const can1_x_sens_acceleration_t frame_encoded) { + frame::decoded::can1::x_sens_acceleration_t frame_decoded; + frame_decoded.x_sens_acc_x = can1_x_sens_acceleration_x_sens_acc_x_decode(frame_encoded.x_sens_acc_x); + frame_decoded.x_sens_acc_y = can1_x_sens_acceleration_x_sens_acc_y_decode(frame_encoded.x_sens_acc_y); + frame_decoded.x_sens_acc_z = can1_x_sens_acceleration_x_sens_acc_z_decode(frame_encoded.x_sens_acc_z); + return frame_decoded; +} + +inline frame::decoded::can1::x_sens_velocity_t x_sens_velocity(const can1_x_sens_velocity_t frame_encoded) { + frame::decoded::can1::x_sens_velocity_t frame_decoded; + frame_decoded.x_sens_vel_x = can1_x_sens_velocity_x_sens_vel_x_decode(frame_encoded.x_sens_vel_x); + frame_decoded.x_sens_vel_y = can1_x_sens_velocity_x_sens_vel_y_decode(frame_encoded.x_sens_vel_y); + frame_decoded.x_sens_vel_z = can1_x_sens_velocity_x_sens_vel_z_decode(frame_encoded.x_sens_vel_z); + return frame_decoded; +} + +inline frame::decoded::can1::telemetrie_t telemetrie(const can1_telemetrie_t frame_encoded) { + frame::decoded::can1::telemetrie_t frame_decoded; + frame_decoded.ini_check_error_state = can1_telemetrie_ini_check_error_state_decode(frame_encoded.ini_check_error_state); + frame_decoded.powermap = can1_telemetrie_powermap_decode(frame_encoded.powermap); + frame_decoded.apps_ok = can1_telemetrie_apps_ok_decode(frame_encoded.apps_ok); + frame_decoded.brake_ok = can1_telemetrie_brake_ok_decode(frame_encoded.brake_ok); + frame_decoded.allow_torque = can1_telemetrie_allow_torque_decode(frame_encoded.allow_torque); + frame_decoded.asp_ok = can1_telemetrie_asp_ok_decode(frame_encoded.asp_ok); + frame_decoded.pressure_sensor_ok = can1_telemetrie_pressure_sensor_ok_decode(frame_encoded.pressure_sensor_ok); + frame_decoded.torque_vectoring_on = can1_telemetrie_torque_vectoring_on_decode(frame_encoded.torque_vectoring_on); + frame_decoded.reku_on = can1_telemetrie_reku_on_decode(frame_encoded.reku_on); + frame_decoded.traction_control_on = can1_telemetrie_traction_control_on_decode(frame_encoded.traction_control_on); + frame_decoded.ts_deactivate = can1_telemetrie_ts_deactivate_decode(frame_encoded.ts_deactivate); + frame_decoded.torque_limit = can1_telemetrie_torque_limit_decode(frame_encoded.torque_limit); + frame_decoded.power_limit = can1_telemetrie_power_limit_decode(frame_encoded.power_limit); + frame_decoded.torque_limit_dynamisch = can1_telemetrie_torque_limit_dynamisch_decode(frame_encoded.torque_limit_dynamisch); + frame_decoded.torque_ohne_limit_l = can1_telemetrie_torque_ohne_limit_l_decode(frame_encoded.torque_ohne_limit_l); + frame_decoded.torque_ohne_limit_r = can1_telemetrie_torque_ohne_limit_r_decode(frame_encoded.torque_ohne_limit_r); + return frame_decoded; +} + +inline frame::decoded::can1::override_powermap_t override_powermap(const can1_override_powermap_t frame_encoded) { + frame::decoded::can1::override_powermap_t frame_decoded; + frame_decoded.laptopp_power_map = can1_override_powermap_laptopp_power_map_decode(frame_encoded.laptopp_power_map); + frame_decoded.laptop_reku = can1_override_powermap_laptop_reku_decode(frame_encoded.laptop_reku); + frame_decoded.laptop_tc = can1_override_powermap_laptop_tc_decode(frame_encoded.laptop_tc); + frame_decoded.laptop_tv = can1_override_powermap_laptop_tv_decode(frame_encoded.laptop_tv); + frame_decoded.laptop_slipref = can1_override_powermap_laptop_slipref_decode(frame_encoded.laptop_slipref); + frame_decoded.laptop_tc_i = can1_override_powermap_laptop_tc_i_decode(frame_encoded.laptop_tc_i); + frame_decoded.laptop_tc_p = can1_override_powermap_laptop_tc_p_decode(frame_encoded.laptop_tc_p); + frame_decoded.laptop_tc_mumax = can1_override_powermap_laptop_tc_mumax_decode(frame_encoded.laptop_tc_mumax); + return frame_decoded; +} + +inline frame::decoded::can1::override_laptop_2_t override_laptop_2(const can1_override_laptop_2_t frame_encoded) { + frame::decoded::can1::override_laptop_2_t frame_decoded; + frame_decoded.as_mission = can1_override_laptop_2_as_mission_decode(frame_encoded.as_mission); + frame_decoded.as_state = can1_override_laptop_2_as_state_decode(frame_encoded.as_state); + frame_decoded.manual_input_torque = can1_override_laptop_2_manual_input_torque_decode(frame_encoded.manual_input_torque); + frame_decoded.laptop_powerlimit = can1_override_laptop_2_laptop_powerlimit_decode(frame_encoded.laptop_powerlimit); + frame_decoded.laptop_torque_lim = can1_override_laptop_2_laptop_torque_lim_decode(frame_encoded.laptop_torque_lim); + return frame_decoded; +} + +inline frame::decoded::can1::override_epsc_cooling_t override_epsc_cooling(const can1_override_epsc_cooling_t frame_encoded) { + frame::decoded::can1::override_epsc_cooling_t frame_decoded; + frame_decoded.epsc_manual_angle = can1_override_epsc_cooling_epsc_manual_angle_decode(frame_encoded.epsc_manual_angle); + frame_decoded.epsc_mode = can1_override_epsc_cooling_epsc_mode_decode(frame_encoded.epsc_mode); + frame_decoded.ac_cooling_enable = can1_override_epsc_cooling_ac_cooling_enable_decode(frame_encoded.ac_cooling_enable); + frame_decoded.ts_cooling_enable = can1_override_epsc_cooling_ts_cooling_enable_decode(frame_encoded.ts_cooling_enable); + frame_decoded.ac_cooling_pwm = can1_override_epsc_cooling_ac_cooling_pwm_decode(frame_encoded.ac_cooling_pwm); + frame_decoded.ts_cooling_pwm = can1_override_epsc_cooling_ts_cooling_pwm_decode(frame_encoded.ts_cooling_pwm); + return frame_decoded; +} + +inline frame::decoded::can1::override_laptop_t override_laptop(const can1_override_laptop_t frame_encoded) { + frame::decoded::can1::override_laptop_t frame_decoded; + frame_decoded.fake_r2_d = can1_override_laptop_fake_r2_d_decode(frame_encoded.fake_r2_d); + frame_decoded.fake_soundbox_emergency = can1_override_laptop_fake_soundbox_emergency_decode(frame_encoded.fake_soundbox_emergency); + frame_decoded.fake_soundbox_r2_d = can1_override_laptop_fake_soundbox_r2_d_decode(frame_encoded.fake_soundbox_r2_d); + frame_decoded.fake_ts_active = can1_override_laptop_fake_ts_active_decode(frame_encoded.fake_ts_active); + frame_decoded.override_apps = can1_override_laptop_override_apps_decode(frame_encoded.override_apps); + frame_decoded.override_as_mission = can1_override_laptop_override_as_mission_decode(frame_encoded.override_as_mission); + frame_decoded.override_as_state = can1_override_laptop_override_as_state_decode(frame_encoded.override_as_state); + frame_decoded.override_epsc_mode = can1_override_laptop_override_epsc_mode_decode(frame_encoded.override_epsc_mode); + frame_decoded.override_pdu_ac_cooling_enable = can1_override_laptop_override_pdu_ac_cooling_enable_decode(frame_encoded.override_pdu_ac_cooling_enable); + frame_decoded.override_pdu_acu_enable = can1_override_laptop_override_pdu_acu_enable_decode(frame_encoded.override_pdu_acu_enable); + frame_decoded.override_pdu_drs_enable = can1_override_laptop_override_pdu_drs_enable_decode(frame_encoded.override_pdu_drs_enable); + frame_decoded.override_pdu_epsc_enable = can1_override_laptop_override_pdu_epsc_enable_decode(frame_encoded.override_pdu_epsc_enable); + frame_decoded.override_pdu_heartbeat = can1_override_laptop_override_pdu_heartbeat_decode(frame_encoded.override_pdu_heartbeat); + frame_decoded.override_pdu_lidar_enable = can1_override_laptop_override_pdu_lidar_enable_decode(frame_encoded.override_pdu_lidar_enable); + frame_decoded.override_pdu_pn_v1_enable = can1_override_laptop_override_pdu_pn_v1_enable_decode(frame_encoded.override_pdu_pn_v1_enable); + frame_decoded.override_pdu_pn_v2_enable = can1_override_laptop_override_pdu_pn_v2_enable_decode(frame_encoded.override_pdu_pn_v2_enable); + frame_decoded.override_pdu_ts_cooling_enable = can1_override_laptop_override_pdu_ts_cooling_enable_decode(frame_encoded.override_pdu_ts_cooling_enable); + frame_decoded.override_power_map = can1_override_laptop_override_power_map_decode(frame_encoded.override_power_map); + frame_decoded.override_tc_parameter = can1_override_laptop_override_tc_parameter_decode(frame_encoded.override_tc_parameter); + frame_decoded.override_torque_input = can1_override_laptop_override_torque_input_decode(frame_encoded.override_torque_input); + return frame_decoded; +} + +inline frame::decoded::can1::apps_override_t apps_override(const can1_apps_override_t frame_encoded) { + frame::decoded::can1::apps_override_t frame_decoded; + frame_decoded.apps_0_max = can1_apps_override_apps_0_max_decode(frame_encoded.apps_0_max); + frame_decoded.apps_0_min = can1_apps_override_apps_0_min_decode(frame_encoded.apps_0_min); + frame_decoded.apps_1_max = can1_apps_override_apps_1_max_decode(frame_encoded.apps_1_max); + frame_decoded.apps_1_min = can1_apps_override_apps_1_min_decode(frame_encoded.apps_1_min); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_damper_t ftcu_damper(const can1_ftcu_damper_t frame_encoded) { + frame::decoded::can1::ftcu_damper_t frame_decoded; + frame_decoded.ftcu_damper_fl = can1_ftcu_damper_ftcu_damper_fl_decode(frame_encoded.ftcu_damper_fl); + frame_decoded.ftcu_damper_fr = can1_ftcu_damper_ftcu_damper_fr_decode(frame_encoded.ftcu_damper_fr); + frame_decoded.ftcu_damper_rl = can1_ftcu_damper_ftcu_damper_rl_decode(frame_encoded.ftcu_damper_rl); + frame_decoded.ftcu_damper_rr = can1_ftcu_damper_ftcu_damper_rr_decode(frame_encoded.ftcu_damper_rr); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_param_confirm_t ftcu_param_confirm(const can1_ftcu_param_confirm_t frame_encoded) { + frame::decoded::can1::ftcu_param_confirm_t frame_decoded; + frame_decoded.ftcu_param_confirm = can1_ftcu_param_confirm_ftcu_param_confirm_decode(frame_encoded.ftcu_param_confirm); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_10_hz_t sensornode_f_10_hz(const can1_sensornode_f_10_hz_t frame_encoded) { + frame::decoded::can1::sensornode_f_10_hz_t frame_decoded; + frame_decoded.ls_l = can1_sensornode_f_10_hz_ls_l_decode(frame_encoded.ls_l); + frame_decoded.ls_r = can1_sensornode_f_10_hz_ls_r_decode(frame_encoded.ls_r); + frame_decoded.sdc_m_pre_bots = can1_sensornode_f_10_hz_sdc_m_pre_bots_decode(frame_encoded.sdc_m_pre_bots); + frame_decoded.sdc_m_post_ins = can1_sensornode_f_10_hz_sdc_m_post_ins_decode(frame_encoded.sdc_m_post_ins); + frame_decoded.sdc_m_post_bspd = can1_sensornode_f_10_hz_sdc_m_post_bspd_decode(frame_encoded.sdc_m_post_bspd); + frame_decoded.bdts_fl = can1_sensornode_f_10_hz_bdts_fl_decode(frame_encoded.bdts_fl); + frame_decoded.bdts_fr = can1_sensornode_f_10_hz_bdts_fr_decode(frame_encoded.bdts_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_100_hz_1_t sensornode_f_100_hz_1(const can1_sensornode_f_100_hz_1_t frame_encoded) { + frame::decoded::can1::sensornode_f_100_hz_1_t frame_decoded; + frame_decoded.apps_1 = can1_sensornode_f_100_hz_1_apps_1_decode(frame_encoded.apps_1); + frame_decoded.apps_2 = can1_sensornode_f_100_hz_1_apps_2_decode(frame_encoded.apps_2); + frame_decoded.bp_f = can1_sensornode_f_100_hz_1_bp_f_decode(frame_encoded.bp_f); + frame_decoded.sas = can1_sensornode_f_100_hz_1_sas_decode(frame_encoded.sas); + frame_decoded.wss_fl = can1_sensornode_f_100_hz_1_wss_fl_decode(frame_encoded.wss_fl); + frame_decoded.wss_fr = can1_sensornode_f_100_hz_1_wss_fr_decode(frame_encoded.wss_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_100_hz_2_t sensornode_f_100_hz_2(const can1_sensornode_f_100_hz_2_t frame_encoded) { + frame::decoded::can1::sensornode_f_100_hz_2_t frame_decoded; + frame_decoded.ds_fl = can1_sensornode_f_100_hz_2_ds_fl_decode(frame_encoded.ds_fl); + frame_decoded.ds_fr = can1_sensornode_f_100_hz_2_ds_fr_decode(frame_encoded.ds_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_f_1k_hz_t sensornode_f_1k_hz(const can1_sensornode_f_1k_hz_t frame_encoded) { + frame::decoded::can1::sensornode_f_1k_hz_t frame_decoded; + frame_decoded.sls_fl = can1_sensornode_f_1k_hz_sls_fl_decode(frame_encoded.sls_fl); + frame_decoded.sls_fr = can1_sensornode_f_1k_hz_sls_fr_decode(frame_encoded.sls_fr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_10_hz_t sensornode_r_10_hz(const can1_sensornode_r_10_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_10_hz_t frame_decoded; + frame_decoded.ext_ts_on = can1_sensornode_r_10_hz_ext_ts_on_decode(frame_encoded.ext_ts_on); + frame_decoded.sdc_m_pre_tsms = can1_sensornode_r_10_hz_sdc_m_pre_tsms_decode(frame_encoded.sdc_m_pre_tsms); + frame_decoded.sdc_m_post_tsms = can1_sensornode_r_10_hz_sdc_m_post_tsms_decode(frame_encoded.sdc_m_post_tsms); + frame_decoded.bdts_rl = can1_sensornode_r_10_hz_bdts_rl_decode(frame_encoded.bdts_rl); + frame_decoded.bdts_rr = can1_sensornode_r_10_hz_bdts_rr_decode(frame_encoded.bdts_rr); + frame_decoded.wt_bat = can1_sensornode_r_10_hz_wt_bat_decode(frame_encoded.wt_bat); + frame_decoded.wt_dt = can1_sensornode_r_10_hz_wt_dt_decode(frame_encoded.wt_dt); + frame_decoded.wp_bat = can1_sensornode_r_10_hz_wp_bat_decode(frame_encoded.wp_bat); + frame_decoded.wp_dt = can1_sensornode_r_10_hz_wp_dt_decode(frame_encoded.wp_dt); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_100_hz_t sensornode_r_100_hz(const can1_sensornode_r_100_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_100_hz_t frame_decoded; + frame_decoded.ebs_aps_1 = can1_sensornode_r_100_hz_ebs_aps_1_decode(frame_encoded.ebs_aps_1); + frame_decoded.ebs_aps_2 = can1_sensornode_r_100_hz_ebs_aps_2_decode(frame_encoded.ebs_aps_2); + frame_decoded.bp_r = can1_sensornode_r_100_hz_bp_r_decode(frame_encoded.bp_r); + frame_decoded.wss_rl = can1_sensornode_r_100_hz_wss_rl_decode(frame_encoded.wss_rl); + frame_decoded.wss_rr = can1_sensornode_r_100_hz_wss_rr_decode(frame_encoded.wss_rr); + frame_decoded.ds_rl = can1_sensornode_r_100_hz_ds_rl_decode(frame_encoded.ds_rl); + frame_decoded.ds_rr = can1_sensornode_r_100_hz_ds_rr_decode(frame_encoded.ds_rr); + return frame_decoded; +} + +inline frame::decoded::can1::sensornode_r_1k_hz_t sensornode_r_1k_hz(const can1_sensornode_r_1k_hz_t frame_encoded) { + frame::decoded::can1::sensornode_r_1k_hz_t frame_decoded; + frame_decoded.sls_rl = can1_sensornode_r_1k_hz_sls_rl_decode(frame_encoded.sls_rl); + frame_decoded.sls_rr = can1_sensornode_r_1k_hz_sls_rr_decode(frame_encoded.sls_rr); + return frame_decoded; +} + +inline frame::decoded::can1::pwm_duty_cycle_t pwm_duty_cycle(const can1_pwm_duty_cycle_t frame_encoded) { + frame::decoded::can1::pwm_duty_cycle_t frame_decoded; + frame_decoded.dc_drs = can1_pwm_duty_cycle_dc_drs_decode(frame_encoded.dc_drs); + frame_decoded.dc_assi_y = can1_pwm_duty_cycle_dc_assi_y_decode(frame_encoded.dc_assi_y); + frame_decoded.dc_assi_b = can1_pwm_duty_cycle_dc_assi_b_decode(frame_encoded.dc_assi_b); + frame_decoded.dc_bl = can1_pwm_duty_cycle_dc_bl_decode(frame_encoded.dc_bl); + frame_decoded.dc_fans_dt = can1_pwm_duty_cycle_dc_fans_dt_decode(frame_encoded.dc_fans_dt); + frame_decoded.dc_fans_bat = can1_pwm_duty_cycle_dc_fans_bat_decode(frame_encoded.dc_fans_bat); + frame_decoded.dc_sbx = can1_pwm_duty_cycle_dc_sbx_decode(frame_encoded.dc_sbx); + return frame_decoded; +} + +inline frame::decoded::can1::pwm_config_t pwm_config(const can1_pwm_config_t frame_encoded) { + frame::decoded::can1::pwm_config_t frame_decoded; + frame_decoded.freq_pwm1_drs_lighting = can1_pwm_config_freq_pwm1_drs_lighting_decode(frame_encoded.freq_pwm1_drs_lighting); + frame_decoded.freq_pwm3_fans = can1_pwm_config_freq_pwm3_fans_decode(frame_encoded.freq_pwm3_fans); + frame_decoded.freq_pwm2_sbx = can1_pwm_config_freq_pwm2_sbx_decode(frame_encoded.freq_pwm2_sbx); + return frame_decoded; +} + +inline frame::decoded::can1::dashboard_in_t dashboard_in(const can1_dashboard_in_t frame_encoded) { + frame::decoded::can1::dashboard_in_t frame_decoded; + frame_decoded.dashboard_r2_d_button = can1_dashboard_in_dashboard_r2_d_button_decode(frame_encoded.dashboard_r2_d_button); + frame_decoded.dashboard_ts_activate_button = can1_dashboard_in_dashboard_ts_activate_button_decode(frame_encoded.dashboard_ts_activate_button); + frame_decoded.dashboard_race_key = can1_dashboard_in_dashboard_race_key_decode(frame_encoded.dashboard_race_key); + frame_decoded.dashboard_sdc_in = can1_dashboard_in_dashboard_sdc_in_decode(frame_encoded.dashboard_sdc_in); + frame_decoded.dashboard_sdc_out = can1_dashboard_in_dashboard_sdc_out_decode(frame_encoded.dashboard_sdc_out); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_status_t ams_slave1_status(const can1_ams_slave1_status_t frame_encoded) { + frame::decoded::can1::ams_slave1_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave1_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave1_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave1_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave1_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave1_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave1_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log0_t ams_slave2_log0(const can1_ams_slave2_log0_t frame_encoded) { + frame::decoded::can1::ams_slave2_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave2_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave2_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave2_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave2_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log1_t ams_slave2_log1(const can1_ams_slave2_log1_t frame_encoded) { + frame::decoded::can1::ams_slave2_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave2_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave2_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave2_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave2_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log2_t ams_slave2_log2(const can1_ams_slave2_log2_t frame_encoded) { + frame::decoded::can1::ams_slave2_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave2_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave2_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave2_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave2_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log3_t ams_slave2_log3(const can1_ams_slave2_log3_t frame_encoded) { + frame::decoded::can1::ams_slave2_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave2_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave2_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave2_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave2_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log4_t ams_slave2_log4(const can1_ams_slave2_log4_t frame_encoded) { + frame::decoded::can1::ams_slave2_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave2_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log5_t ams_slave2_log5(const can1_ams_slave2_log5_t frame_encoded) { + frame::decoded::can1::ams_slave2_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave2_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave2_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave2_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave2_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave2_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave2_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave2_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave2_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log6_t ams_slave5_log6(const can1_ams_slave5_log6_t frame_encoded) { + frame::decoded::can1::ams_slave5_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave5_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave5_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log6_t ams_slave4_log6(const can1_ams_slave4_log6_t frame_encoded) { + frame::decoded::can1::ams_slave4_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave4_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave4_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log6_t ams_slave3_log6(const can1_ams_slave3_log6_t frame_encoded) { + frame::decoded::can1::ams_slave3_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave3_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave3_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_log6_t ams_slave2_log6(const can1_ams_slave2_log6_t frame_encoded) { + frame::decoded::can1::ams_slave2_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave2_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave2_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log6_t ams_slave1_log6(const can1_ams_slave1_log6_t frame_encoded) { + frame::decoded::can1::ams_slave1_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave1_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave1_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log5_t ams_slave5_log5(const can1_ams_slave5_log5_t frame_encoded) { + frame::decoded::can1::ams_slave5_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave5_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave5_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave5_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave5_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave5_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave5_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave5_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave5_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log5_t ams_slave4_log5(const can1_ams_slave4_log5_t frame_encoded) { + frame::decoded::can1::ams_slave4_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave4_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave4_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave4_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave4_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave4_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave4_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave4_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave4_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log5_t ams_slave3_log5(const can1_ams_slave3_log5_t frame_encoded) { + frame::decoded::can1::ams_slave3_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave3_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave3_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave3_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave3_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave3_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave3_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave3_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave3_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log5_t ams_slave1_log5(const can1_ams_slave1_log5_t frame_encoded) { + frame::decoded::can1::ams_slave1_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave1_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave1_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave1_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave1_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave1_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave1_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave1_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave1_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log4_t ams_slave5_log4(const can1_ams_slave5_log4_t frame_encoded) { + frame::decoded::can1::ams_slave5_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave5_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log4_t ams_slave4_log4(const can1_ams_slave4_log4_t frame_encoded) { + frame::decoded::can1::ams_slave4_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave4_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log4_t ams_slave3_log4(const can1_ams_slave3_log4_t frame_encoded) { + frame::decoded::can1::ams_slave3_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave3_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log4_t ams_slave1_log4(const can1_ams_slave1_log4_t frame_encoded) { + frame::decoded::can1::ams_slave1_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave1_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log3_t ams_slave5_log3(const can1_ams_slave5_log3_t frame_encoded) { + frame::decoded::can1::ams_slave5_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave5_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave5_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave5_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave5_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log3_t ams_slave4_log3(const can1_ams_slave4_log3_t frame_encoded) { + frame::decoded::can1::ams_slave4_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave4_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave4_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave4_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave4_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log3_t ams_slave3_log3(const can1_ams_slave3_log3_t frame_encoded) { + frame::decoded::can1::ams_slave3_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave3_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave3_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave3_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave3_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log3_t ams_slave1_log3(const can1_ams_slave1_log3_t frame_encoded) { + frame::decoded::can1::ams_slave1_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave1_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave1_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave1_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave1_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log2_t ams_slave5_log2(const can1_ams_slave5_log2_t frame_encoded) { + frame::decoded::can1::ams_slave5_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave5_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave5_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave5_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave5_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log2_t ams_slave4_log2(const can1_ams_slave4_log2_t frame_encoded) { + frame::decoded::can1::ams_slave4_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave4_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave4_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave4_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave4_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log2_t ams_slave3_log2(const can1_ams_slave3_log2_t frame_encoded) { + frame::decoded::can1::ams_slave3_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave3_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave3_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave3_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave3_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log2_t ams_slave1_log2(const can1_ams_slave1_log2_t frame_encoded) { + frame::decoded::can1::ams_slave1_log2_t frame_decoded; + frame_decoded.ams_slave_id_v8 = can1_ams_slave1_log2_ams_slave_id_v8_decode(frame_encoded.ams_slave_id_v8); + frame_decoded.ams_slave_id_v9 = can1_ams_slave1_log2_ams_slave_id_v9_decode(frame_encoded.ams_slave_id_v9); + frame_decoded.ams_slave_id_v10 = can1_ams_slave1_log2_ams_slave_id_v10_decode(frame_encoded.ams_slave_id_v10); + frame_decoded.ams_slave_id_v11 = can1_ams_slave1_log2_ams_slave_id_v11_decode(frame_encoded.ams_slave_id_v11); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log1_t ams_slave5_log1(const can1_ams_slave5_log1_t frame_encoded) { + frame::decoded::can1::ams_slave5_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave5_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave5_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave5_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave5_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log1_t ams_slave4_log1(const can1_ams_slave4_log1_t frame_encoded) { + frame::decoded::can1::ams_slave4_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave4_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave4_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave4_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave4_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log1_t ams_slave3_log1(const can1_ams_slave3_log1_t frame_encoded) { + frame::decoded::can1::ams_slave3_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave3_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave3_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave3_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave3_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log1_t ams_slave1_log1(const can1_ams_slave1_log1_t frame_encoded) { + frame::decoded::can1::ams_slave1_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave1_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave1_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave1_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave1_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_log0_t ams_slave5_log0(const can1_ams_slave5_log0_t frame_encoded) { + frame::decoded::can1::ams_slave5_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave5_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave5_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave5_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave5_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_log0_t ams_slave4_log0(const can1_ams_slave4_log0_t frame_encoded) { + frame::decoded::can1::ams_slave4_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave4_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave4_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave4_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave4_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_log0_t ams_slave3_log0(const can1_ams_slave3_log0_t frame_encoded) { + frame::decoded::can1::ams_slave3_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave3_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave3_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave3_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave3_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave1_log0_t ams_slave1_log0(const can1_ams_slave1_log0_t frame_encoded) { + frame::decoded::can1::ams_slave1_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave1_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave1_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave1_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave1_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_heartbeat_t pdu_heartbeat(const can1_pdu_heartbeat_t frame_encoded) { + frame::decoded::can1::pdu_heartbeat_t frame_decoded; + frame_decoded.pdu_heartbeat = can1_pdu_heartbeat_pdu_heartbeat_decode(frame_encoded.pdu_heartbeat); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_pneumatik_t ftcu_pneumatik(const can1_ftcu_pneumatik_t frame_encoded) { + frame::decoded::can1::ftcu_pneumatik_t frame_decoded; + frame_decoded.ftcu_tank_pressure_1 = can1_ftcu_pneumatik_ftcu_tank_pressure_1_decode(frame_encoded.ftcu_tank_pressure_1); + frame_decoded.ftcu_tank_pressure_2 = can1_ftcu_pneumatik_ftcu_tank_pressure_2_decode(frame_encoded.ftcu_tank_pressure_2); + return frame_decoded; +} + +inline frame::decoded::can1::acu_tx_commands_t acu_tx_commands(const can1_acu_tx_commands_t frame_encoded) { + frame::decoded::can1::acu_tx_commands_t frame_decoded; + frame_decoded.abx_speed_fl = can1_acu_tx_commands_abx_speed_fl_decode(frame_encoded.abx_speed_fl); + frame_decoded.abx_speed_fr = can1_acu_tx_commands_abx_speed_fr_decode(frame_encoded.abx_speed_fr); + frame_decoded.abx_speed_rl = can1_acu_tx_commands_abx_speed_rl_decode(frame_encoded.abx_speed_rl); + frame_decoded.abx_speed_rr = can1_acu_tx_commands_abx_speed_rr_decode(frame_encoded.abx_speed_rr); + frame_decoded.abx_steering_angle_left = can1_acu_tx_commands_abx_steering_angle_left_decode(frame_encoded.abx_steering_angle_left); + frame_decoded.abx_steering_angle_right = can1_acu_tx_commands_abx_steering_angle_right_decode(frame_encoded.abx_steering_angle_right); + return frame_decoded; +} + +inline frame::decoded::can1::acu_rx_commands_t acu_rx_commands(const can1_acu_rx_commands_t frame_encoded) { + frame::decoded::can1::acu_rx_commands_t frame_decoded; + frame_decoded.acu_speed_target_left = can1_acu_rx_commands_acu_speed_target_left_decode(frame_encoded.acu_speed_target_left); + frame_decoded.acu_speed_target_right = can1_acu_rx_commands_acu_speed_target_right_decode(frame_encoded.acu_speed_target_right); + frame_decoded.acu_steering_angle_right = can1_acu_rx_commands_acu_steering_angle_right_decode(frame_encoded.acu_steering_angle_right); + frame_decoded.acu_steering_angle_left = can1_acu_rx_commands_acu_steering_angle_left_decode(frame_encoded.acu_steering_angle_left); + return frame_decoded; +} + +inline frame::decoded::can1::acu_rx_t acu_rx(const can1_acu_rx_t frame_encoded) { + frame::decoded::can1::acu_rx_t frame_decoded; + frame_decoded.acu_as_mission_complete = can1_acu_rx_acu_as_mission_complete_decode(frame_encoded.acu_as_mission_complete); + frame_decoded.acu_as_ok = can1_acu_rx_acu_as_ok_decode(frame_encoded.acu_as_ok); + frame_decoded.acu_drs = can1_acu_rx_acu_drs_decode(frame_encoded.acu_drs); + frame_decoded.acu_lap_count = can1_acu_rx_acu_lap_count_decode(frame_encoded.acu_lap_count); + frame_decoded.acu_cones_all = can1_acu_rx_acu_cones_all_decode(frame_encoded.acu_cones_all); + frame_decoded.acu_cones_actual = can1_acu_rx_acu_cones_actual_decode(frame_encoded.acu_cones_actual); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log0_t ams_slave0_log0(const can1_ams_slave0_log0_t frame_encoded) { + frame::decoded::can1::ams_slave0_log0_t frame_decoded; + frame_decoded.ams_slave_id_v0 = can1_ams_slave0_log0_ams_slave_id_v0_decode(frame_encoded.ams_slave_id_v0); + frame_decoded.ams_slave_id_v1 = can1_ams_slave0_log0_ams_slave_id_v1_decode(frame_encoded.ams_slave_id_v1); + frame_decoded.ams_slave_id_v2 = can1_ams_slave0_log0_ams_slave_id_v2_decode(frame_encoded.ams_slave_id_v2); + frame_decoded.ams_slave_id_v3 = can1_ams_slave0_log0_ams_slave_id_v3_decode(frame_encoded.ams_slave_id_v3); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log1_t ams_slave0_log1(const can1_ams_slave0_log1_t frame_encoded) { + frame::decoded::can1::ams_slave0_log1_t frame_decoded; + frame_decoded.ams_slave_id_v4 = can1_ams_slave0_log1_ams_slave_id_v4_decode(frame_encoded.ams_slave_id_v4); + frame_decoded.ams_slave_id_v5 = can1_ams_slave0_log1_ams_slave_id_v5_decode(frame_encoded.ams_slave_id_v5); + frame_decoded.ams_slave_id_v6 = can1_ams_slave0_log1_ams_slave_id_v6_decode(frame_encoded.ams_slave_id_v6); + frame_decoded.ams_slave_id_v7 = can1_ams_slave0_log1_ams_slave_id_v7_decode(frame_encoded.ams_slave_id_v7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log3_t ams_slave0_log3(const can1_ams_slave0_log3_t frame_encoded) { + frame::decoded::can1::ams_slave0_log3_t frame_decoded; + frame_decoded.ams_slave_id_v12 = can1_ams_slave0_log3_ams_slave_id_v12_decode(frame_encoded.ams_slave_id_v12); + frame_decoded.ams_slave_id_v13 = can1_ams_slave0_log3_ams_slave_id_v13_decode(frame_encoded.ams_slave_id_v13); + frame_decoded.ams_slave_id_v14 = can1_ams_slave0_log3_ams_slave_id_v14_decode(frame_encoded.ams_slave_id_v14); + frame_decoded.ams_slave_id_v15 = can1_ams_slave0_log3_ams_slave_id_v15_decode(frame_encoded.ams_slave_id_v15); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log4_t ams_slave0_log4(const can1_ams_slave0_log4_t frame_encoded) { + frame::decoded::can1::ams_slave0_log4_t frame_decoded; + frame_decoded.ams_slave_id_failed_sensors = can1_ams_slave0_log4_ams_slave_id_failed_sensors_decode(frame_encoded.ams_slave_id_failed_sensors); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log5_t ams_slave0_log5(const can1_ams_slave0_log5_t frame_encoded) { + frame::decoded::can1::ams_slave0_log5_t frame_decoded; + frame_decoded.ams_slave_id_t0 = can1_ams_slave0_log5_ams_slave_id_t0_decode(frame_encoded.ams_slave_id_t0); + frame_decoded.ams_slave_id_t1 = can1_ams_slave0_log5_ams_slave_id_t1_decode(frame_encoded.ams_slave_id_t1); + frame_decoded.ams_slave_id_t2 = can1_ams_slave0_log5_ams_slave_id_t2_decode(frame_encoded.ams_slave_id_t2); + frame_decoded.ams_slave_id_t3 = can1_ams_slave0_log5_ams_slave_id_t3_decode(frame_encoded.ams_slave_id_t3); + frame_decoded.ams_slave_id_t4 = can1_ams_slave0_log5_ams_slave_id_t4_decode(frame_encoded.ams_slave_id_t4); + frame_decoded.ams_slave_id_t5 = can1_ams_slave0_log5_ams_slave_id_t5_decode(frame_encoded.ams_slave_id_t5); + frame_decoded.ams_slave_id_t6 = can1_ams_slave0_log5_ams_slave_id_t6_decode(frame_encoded.ams_slave_id_t6); + frame_decoded.ams_slave_id_t7 = can1_ams_slave0_log5_ams_slave_id_t7_decode(frame_encoded.ams_slave_id_t7); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_log6_t ams_slave0_log6(const can1_ams_slave0_log6_t frame_encoded) { + frame::decoded::can1::ams_slave0_log6_t frame_decoded; + frame_decoded.ams_slave_id_t8 = can1_ams_slave0_log6_ams_slave_id_t8_decode(frame_encoded.ams_slave_id_t8); + frame_decoded.ams_slave_id_t9 = can1_ams_slave0_log6_ams_slave_id_t9_decode(frame_encoded.ams_slave_id_t9); + return frame_decoded; +} + +inline frame::decoded::can1::acu_tx_t acu_tx(const can1_acu_tx_t frame_encoded) { + frame::decoded::can1::acu_tx_t frame_decoded; + frame_decoded.acu_as_mission = can1_acu_tx_acu_as_mission_decode(frame_encoded.acu_as_mission); + frame_decoded.acu_as_state = can1_acu_tx_acu_as_state_decode(frame_encoded.acu_as_state); + frame_decoded.acu_power_off = can1_acu_tx_acu_power_off_decode(frame_encoded.acu_power_off); + frame_decoded.acu_reset = can1_acu_tx_acu_reset_decode(frame_encoded.acu_reset); + frame_decoded.acu_allow_torque = can1_acu_tx_acu_allow_torque_decode(frame_encoded.acu_allow_torque); + frame_decoded.abx_con_mon_error = can1_acu_tx_abx_con_mon_error_decode(frame_encoded.abx_con_mon_error); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave5_status_t ams_slave5_status(const can1_ams_slave5_status_t frame_encoded) { + frame::decoded::can1::ams_slave5_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave5_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave5_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave5_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave5_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave5_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave5_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave4_status_t ams_slave4_status(const can1_ams_slave4_status_t frame_encoded) { + frame::decoded::can1::ams_slave4_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave4_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave4_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave4_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave4_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave4_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave4_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave3_status_t ams_slave3_status(const can1_ams_slave3_status_t frame_encoded) { + frame::decoded::can1::ams_slave3_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave3_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave3_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave3_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave3_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave3_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave3_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave2_status_t ams_slave2_status(const can1_ams_slave2_status_t frame_encoded) { + frame::decoded::can1::ams_slave2_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave2_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave2_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave2_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave2_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave2_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave2_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_error_t ams_error(const can1_ams_error_t frame_encoded) { + frame::decoded::can1::ams_error_t frame_decoded; + frame_decoded.ams_error_kind = can1_ams_error_ams_error_kind_decode(frame_encoded.ams_error_kind); + frame_decoded.ams_error_arg = can1_ams_error_ams_error_arg_decode(frame_encoded.ams_error_arg); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_cooling_t ftcu_cooling(const can1_ftcu_cooling_t frame_encoded) { + frame::decoded::can1::ftcu_cooling_t frame_decoded; + frame_decoded.ftcu_water_pressure_2 = can1_ftcu_cooling_ftcu_water_pressure_2_decode(frame_encoded.ftcu_water_pressure_2); + frame_decoded.ftcu_water_pressure_1 = can1_ftcu_cooling_ftcu_water_pressure_1_decode(frame_encoded.ftcu_water_pressure_1); + frame_decoded.ftcu_water_temperature_1 = can1_ftcu_cooling_ftcu_water_temperature_1_decode(frame_encoded.ftcu_water_temperature_1); + frame_decoded.ftcu_water_temperature_2 = can1_ftcu_cooling_ftcu_water_temperature_2_decode(frame_encoded.ftcu_water_temperature_2); + frame_decoded.ftcu_flow_rate = can1_ftcu_cooling_ftcu_flow_rate_decode(frame_encoded.ftcu_flow_rate); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_brake_t_t ftcu_brake_t(const can1_ftcu_brake_t_t frame_encoded) { + frame::decoded::can1::ftcu_brake_t_t frame_decoded; + frame_decoded.ftcu_brake_t_fl = can1_ftcu_brake_t_ftcu_brake_t_fl_decode(frame_encoded.ftcu_brake_t_fl); + frame_decoded.ftcu_brake_t_fr = can1_ftcu_brake_t_ftcu_brake_t_fr_decode(frame_encoded.ftcu_brake_t_fr); + frame_decoded.ftcu_brake_t_rl = can1_ftcu_brake_t_ftcu_brake_t_rl_decode(frame_encoded.ftcu_brake_t_rl); + frame_decoded.ftcu_brake_t_rr = can1_ftcu_brake_t_ftcu_brake_t_rr_decode(frame_encoded.ftcu_brake_t_rr); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_wheelspeed_t ftcu_wheelspeed(const can1_ftcu_wheelspeed_t frame_encoded) { + frame::decoded::can1::ftcu_wheelspeed_t frame_decoded; + frame_decoded.ftcu_wheelspeed_fl = can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_decode(frame_encoded.ftcu_wheelspeed_fl); + frame_decoded.ftcu_wheelspeed_fr = can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_decode(frame_encoded.ftcu_wheelspeed_fr); + frame_decoded.ftcu_wheelspeed_rl = can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_decode(frame_encoded.ftcu_wheelspeed_rl); + frame_decoded.ftcu_wheelspeed_rr = can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_decode(frame_encoded.ftcu_wheelspeed_rr); + frame_decoded.ftcu_distance_session = can1_ftcu_wheelspeed_ftcu_distance_session_decode(frame_encoded.ftcu_distance_session); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_timings_t ftcu_timings(const can1_ftcu_timings_t frame_encoded) { + frame::decoded::can1::ftcu_timings_t frame_decoded; + frame_decoded.ftcu_laptime_best = can1_ftcu_timings_ftcu_laptime_best_decode(frame_encoded.ftcu_laptime_best); + frame_decoded.ftcu_laptime_last = can1_ftcu_timings_ftcu_laptime_last_decode(frame_encoded.ftcu_laptime_last); + frame_decoded.ftcu_sectortime_best = can1_ftcu_timings_ftcu_sectortime_best_decode(frame_encoded.ftcu_sectortime_best); + frame_decoded.ftcu_sectortime_last = can1_ftcu_timings_ftcu_sectortime_last_decode(frame_encoded.ftcu_sectortime_last); + return frame_decoded; +} + +inline frame::decoded::can1::ftcu_driver_t ftcu_driver(const can1_ftcu_driver_t frame_encoded) { + frame::decoded::can1::ftcu_driver_t frame_decoded; + frame_decoded.ftcu_apps_percent = can1_ftcu_driver_ftcu_apps_percent_decode(frame_encoded.ftcu_apps_percent); + frame_decoded.ftcu_brake_pressure_f = can1_ftcu_driver_ftcu_brake_pressure_f_decode(frame_encoded.ftcu_brake_pressure_f); + frame_decoded.ftcu_brake_pressure_r = can1_ftcu_driver_ftcu_brake_pressure_r_decode(frame_encoded.ftcu_brake_pressure_r); + frame_decoded.ftcu_steering_angle = can1_ftcu_driver_ftcu_steering_angle_decode(frame_encoded.ftcu_steering_angle); + frame_decoded.ftcu_speed = can1_ftcu_driver_ftcu_speed_decode(frame_encoded.ftcu_speed); + frame_decoded.ftcu_lapcounter = can1_ftcu_driver_ftcu_lapcounter_decode(frame_encoded.ftcu_lapcounter); + frame_decoded.ftcu_sectorcounter = can1_ftcu_driver_ftcu_sectorcounter_decode(frame_encoded.ftcu_sectorcounter); + return frame_decoded; +} + +inline frame::decoded::can1::tts_rr_t tts_rr(const can1_tts_rr_t frame_encoded) { + frame::decoded::can1::tts_rr_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_rr_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_rr_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_rr_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_rr_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outet_right = can1_tts_rr_tts_outet_right_decode(frame_encoded.tts_outet_right); + frame_decoded.tts_status = can1_tts_rr_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_rl_t tts_rl(const can1_tts_rl_t frame_encoded) { + frame::decoded::can1::tts_rl_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_rl_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_rl_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_rl_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_rl_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_rl_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_rl_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_fr_t tts_fr(const can1_tts_fr_t frame_encoded) { + frame::decoded::can1::tts_fr_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_fr_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_fr_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_fr_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_fr_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_fr_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_fr_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::tts_fl_t tts_fl(const can1_tts_fl_t frame_encoded) { + frame::decoded::can1::tts_fl_t frame_decoded; + frame_decoded.tts_outer_left = can1_tts_fl_tts_outer_left_decode(frame_encoded.tts_outer_left); + frame_decoded.tts_center_left = can1_tts_fl_tts_center_left_decode(frame_encoded.tts_center_left); + frame_decoded.tts_center = can1_tts_fl_tts_center_decode(frame_encoded.tts_center); + frame_decoded.tts_center_right = can1_tts_fl_tts_center_right_decode(frame_encoded.tts_center_right); + frame_decoded.tts_outer_right = can1_tts_fl_tts_outer_right_decode(frame_encoded.tts_outer_right); + frame_decoded.tts_status = can1_tts_fl_tts_status_decode(frame_encoded.tts_status); + return frame_decoded; +} + +inline frame::decoded::can1::stw_param_set_t stw_param_set(const can1_stw_param_set_t frame_encoded) { + frame::decoded::can1::stw_param_set_t frame_decoded; + frame_decoded.stw_param_set = can1_stw_param_set_stw_param_set_decode(frame_encoded.stw_param_set); + frame_decoded.stw_param_tc_slipref = can1_stw_param_set_stw_param_tc_slipref_decode(frame_encoded.stw_param_tc_slipref); + frame_decoded.stw_param_tc_mumax = can1_stw_param_set_stw_param_tc_mumax_decode(frame_encoded.stw_param_tc_mumax); + frame_decoded.stw_param_tc_i = can1_stw_param_set_stw_param_tc_i_decode(frame_encoded.stw_param_tc_i); + frame_decoded.stw_param_plim = can1_stw_param_set_stw_param_plim_decode(frame_encoded.stw_param_plim); + frame_decoded.stw_param_tlim = can1_stw_param_set_stw_param_tlim_decode(frame_encoded.stw_param_tlim); + frame_decoded.stw_param_tc_p = can1_stw_param_set_stw_param_tc_p_decode(frame_encoded.stw_param_tc_p); + frame_decoded.stw_param_reku = can1_stw_param_set_stw_param_reku_decode(frame_encoded.stw_param_reku); + frame_decoded.stw_param_tc_on = can1_stw_param_set_stw_param_tc_on_decode(frame_encoded.stw_param_tc_on); + frame_decoded.stw_param_tv_on = can1_stw_param_set_stw_param_tv_on_decode(frame_encoded.stw_param_tv_on); + frame_decoded.stw_param_discipline = can1_stw_param_set_stw_param_discipline_decode(frame_encoded.stw_param_discipline); + frame_decoded.stw_param_slim = can1_stw_param_set_stw_param_slim_decode(frame_encoded.stw_param_slim); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave0_status_t ams_slave0_status(const can1_ams_slave0_status_t frame_encoded) { + frame::decoded::can1::ams_slave0_status_t frame_decoded; + frame_decoded.ams_slave_status_error = can1_ams_slave0_status_ams_slave_status_error_decode(frame_encoded.ams_slave_status_error); + frame_decoded.ams_slave_status_id = can1_ams_slave0_status_ams_slave_status_id_decode(frame_encoded.ams_slave_status_id); + frame_decoded.ams_slave_status_temp_sensor = can1_ams_slave0_status_ams_slave_status_temp_sensor_decode(frame_encoded.ams_slave_status_temp_sensor); + frame_decoded.ams_slave_status_min_cell_volt = can1_ams_slave0_status_ams_slave_status_min_cell_volt_decode(frame_encoded.ams_slave_status_min_cell_volt); + frame_decoded.ams_slave_status_max_cell_volt = can1_ams_slave0_status_ams_slave_status_max_cell_volt_decode(frame_encoded.ams_slave_status_max_cell_volt); + frame_decoded.ams_slave_status_max_temp = can1_ams_slave0_status_ams_slave_status_max_temp_decode(frame_encoded.ams_slave_status_max_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ssu_message_t ssu_message(const can1_ssu_message_t frame_encoded) { + frame::decoded::can1::ssu_message_t frame_decoded; + frame_decoded.ssu_pressure = can1_ssu_message_ssu_pressure_decode(frame_encoded.ssu_pressure); + frame_decoded.ssu_air_temp = can1_ssu_message_ssu_air_temp_decode(frame_encoded.ssu_air_temp); + return frame_decoded; +} + +inline frame::decoded::can1::ams_status_t ams_status(const can1_ams_status_t frame_encoded) { + frame::decoded::can1::ams_status_t frame_decoded; + frame_decoded.ams_state = can1_ams_status_ams_state_decode(frame_encoded.ams_state); + frame_decoded.sdc_closed = can1_ams_status_sdc_closed_decode(frame_encoded.sdc_closed); + frame_decoded.soc = can1_ams_status_soc_decode(frame_encoded.soc); + frame_decoded.min_cell_volt = can1_ams_status_min_cell_volt_decode(frame_encoded.min_cell_volt); + frame_decoded.max_cell_temp = can1_ams_status_max_cell_temp_decode(frame_encoded.max_cell_temp); + frame_decoded.ams_imd_state = can1_ams_status_ams_imd_state_decode(frame_encoded.ams_imd_state); + frame_decoded.ams_imd_ok = can1_ams_status_ams_imd_ok_decode(frame_encoded.ams_imd_ok); + return frame_decoded; +} + +inline frame::decoded::can1::ams_slave_panic_t ams_slave_panic(const can1_ams_slave_panic_t frame_encoded) { + frame::decoded::can1::ams_slave_panic_t frame_decoded; + frame_decoded.ams_slave_panic_slave_id = can1_ams_slave_panic_ams_slave_panic_slave_id_decode(frame_encoded.ams_slave_panic_slave_id); + frame_decoded.ams_slave_panic_kind = can1_ams_slave_panic_ams_slave_panic_kind_decode(frame_encoded.ams_slave_panic_kind); + frame_decoded.ams_slave_panic_arg = can1_ams_slave_panic_ams_slave_panic_arg_decode(frame_encoded.ams_slave_panic_arg); + return frame_decoded; +} + +inline frame::decoded::can1::ams_in_t ams_in(const can1_ams_in_t frame_encoded) { + frame::decoded::can1::ams_in_t frame_decoded; + frame_decoded.ts_activate = can1_ams_in_ts_activate_decode(frame_encoded.ts_activate); + frame_decoded.inverters_discharged = can1_ams_in_inverters_discharged_decode(frame_encoded.inverters_discharged); + frame_decoded.lap_number = can1_ams_in_lap_number_decode(frame_encoded.lap_number); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_current_t shunt_current(const can1_shunt_current_t frame_encoded) { + frame::decoded::can1::shunt_current_t frame_decoded; + frame_decoded.shunt_current = can1_shunt_current_shunt_current_decode(frame_encoded.shunt_current); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage1_t shunt_voltage1(const can1_shunt_voltage1_t frame_encoded) { + frame::decoded::can1::shunt_voltage1_t frame_decoded; + frame_decoded.shunt_voltage1 = can1_shunt_voltage1_shunt_voltage1_decode(frame_encoded.shunt_voltage1); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage2_t shunt_voltage2(const can1_shunt_voltage2_t frame_encoded) { + frame::decoded::can1::shunt_voltage2_t frame_decoded; + frame_decoded.shunt_voltage2 = can1_shunt_voltage2_shunt_voltage2_decode(frame_encoded.shunt_voltage2); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_voltage3_t shunt_voltage3(const can1_shunt_voltage3_t frame_encoded) { + frame::decoded::can1::shunt_voltage3_t frame_decoded; + frame_decoded.shunt_voltage3 = can1_shunt_voltage3_shunt_voltage3_decode(frame_encoded.shunt_voltage3); + return frame_decoded; +} + +inline frame::decoded::can1::shunt_temperature_t shunt_temperature(const can1_shunt_temperature_t frame_encoded) { + frame::decoded::can1::shunt_temperature_t frame_decoded; + frame_decoded.shunt_temperature = can1_shunt_temperature_shunt_temperature_decode(frame_encoded.shunt_temperature); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_command_t pdu_command(const can1_pdu_command_t frame_encoded) { + frame::decoded::can1::pdu_command_t frame_decoded; + frame_decoded.pdu_enable_misc = can1_pdu_command_pdu_enable_misc_decode(frame_encoded.pdu_enable_misc); + frame_decoded.pdu_enable_sdc = can1_pdu_command_pdu_enable_sdc_decode(frame_encoded.pdu_enable_sdc); + frame_decoded.pdu_enable_inverter = can1_pdu_command_pdu_enable_inverter_decode(frame_encoded.pdu_enable_inverter); + frame_decoded.pdu_enable_ts_cooling = can1_pdu_command_pdu_enable_ts_cooling_decode(frame_encoded.pdu_enable_ts_cooling); + frame_decoded.pdu_enable_acc_cooling = can1_pdu_command_pdu_enable_acc_cooling_decode(frame_encoded.pdu_enable_acc_cooling); + frame_decoded.pdu_enable_lldar = can1_pdu_command_pdu_enable_lldar_decode(frame_encoded.pdu_enable_lldar); + frame_decoded.pdu_enable_drs = can1_pdu_command_pdu_enable_drs_decode(frame_encoded.pdu_enable_drs); + frame_decoded.pdu_enable_epsc = can1_pdu_command_pdu_enable_epsc_decode(frame_encoded.pdu_enable_epsc); + frame_decoded.pdu_enable_acu = can1_pdu_command_pdu_enable_acu_decode(frame_encoded.pdu_enable_acu); + frame_decoded.pdu_enable_ebs_a = can1_pdu_command_pdu_enable_ebs_a_decode(frame_encoded.pdu_enable_ebs_a); + frame_decoded.pdu_enable_ebs_b = can1_pdu_command_pdu_enable_ebs_b_decode(frame_encoded.pdu_enable_ebs_b); + frame_decoded.pdu_enable_ebs_c = can1_pdu_command_pdu_enable_ebs_c_decode(frame_encoded.pdu_enable_ebs_c); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_response_t pdu_response(const can1_pdu_response_t frame_encoded) { + frame::decoded::can1::pdu_response_t frame_decoded; + frame_decoded.pdu_alwayson_tx = can1_pdu_response_pdu_alwayson_tx_decode(frame_encoded.pdu_alwayson_tx); + frame_decoded.pdu_shutdown_circuit_tx = can1_pdu_response_pdu_shutdown_circuit_tx_decode(frame_encoded.pdu_shutdown_circuit_tx); + frame_decoded.pdu_lidar_tx = can1_pdu_response_pdu_lidar_tx_decode(frame_encoded.pdu_lidar_tx); + frame_decoded.pdu_acu_tx = can1_pdu_response_pdu_acu_tx_decode(frame_encoded.pdu_acu_tx); + frame_decoded.pdu_servos_regler_tx = can1_pdu_response_pdu_servos_regler_tx_decode(frame_encoded.pdu_servos_regler_tx); + frame_decoded.pdu_inverter_tx = can1_pdu_response_pdu_inverter_tx_decode(frame_encoded.pdu_inverter_tx); + frame_decoded.pdu_misc_tx = can1_pdu_response_pdu_misc_tx_decode(frame_encoded.pdu_misc_tx); + frame_decoded.pdu_servo_tx = can1_pdu_response_pdu_servo_tx_decode(frame_encoded.pdu_servo_tx); + frame_decoded.pdu_ebs_valve_1_tx = can1_pdu_response_pdu_ebs_valve_1_tx_decode(frame_encoded.pdu_ebs_valve_1_tx); + frame_decoded.pdu_ebs_valve_2_tx = can1_pdu_response_pdu_ebs_valve_2_tx_decode(frame_encoded.pdu_ebs_valve_2_tx); + frame_decoded.pdu_cs_valve_tx = can1_pdu_response_pdu_cs_valve_tx_decode(frame_encoded.pdu_cs_valve_tx); + frame_decoded.pdu_aggregat_tx = can1_pdu_response_pdu_aggregat_tx_decode(frame_encoded.pdu_aggregat_tx); + frame_decoded.pdu_steering_tx = can1_pdu_response_pdu_steering_tx_decode(frame_encoded.pdu_steering_tx); + frame_decoded.pdu_pwm_tsac_fans = can1_pdu_response_pdu_pwm_tsac_fans_decode(frame_encoded.pdu_pwm_tsac_fans); + frame_decoded.pdu_pwm_radiatot_fans_tx = can1_pdu_response_pdu_pwm_radiatot_fans_tx_decode(frame_encoded.pdu_pwm_radiatot_fans_tx); + frame_decoded.pdu_pwm_aggregat = can1_pdu_response_pdu_pwm_aggregat_decode(frame_encoded.pdu_pwm_aggregat); + frame_decoded.pdu_pwm_pump = can1_pdu_response_pdu_pwm_pump_decode(frame_encoded.pdu_pwm_pump); + frame_decoded.pdu_heartbeat_ok_tx = can1_pdu_response_pdu_heartbeat_ok_tx_decode(frame_encoded.pdu_heartbeat_ok_tx); + return frame_decoded; +} + +inline frame::decoded::can1::as_mission_fb_t as_mission_fb(const can1_as_mission_fb_t frame_encoded) { + frame::decoded::can1::as_mission_fb_t frame_decoded; + frame_decoded.mission_selection = can1_as_mission_fb_mission_selection_decode(frame_encoded.mission_selection); + return frame_decoded; +} + +inline frame::decoded::can1::stw_mission_selected_t stw_mission_selected(const can1_stw_mission_selected_t frame_encoded) { + frame::decoded::can1::stw_mission_selected_t frame_decoded; + frame_decoded.mission_selection = can1_stw_mission_selected_mission_selection_decode(frame_encoded.mission_selection); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_out_t epsc_out(const can1_epsc_out_t frame_encoded) { + frame::decoded::can1::epsc_out_t frame_decoded; + frame_decoded.epsc_measured_rpm = can1_epsc_out_epsc_measured_rpm_decode(frame_encoded.epsc_measured_rpm); + frame_decoded.epsc_measured_steering_angle = can1_epsc_out_epsc_measured_steering_angle_decode(frame_encoded.epsc_measured_steering_angle); + frame_decoded.epsc_measured_mosfet_temperature = can1_epsc_out_epsc_measured_mosfet_temperature_decode(frame_encoded.epsc_measured_mosfet_temperature); + frame_decoded.epsc_measured_voltage = can1_epsc_out_epsc_measured_voltage_decode(frame_encoded.epsc_measured_voltage); + frame_decoded.epsc_measured_current = can1_epsc_out_epsc_measured_current_decode(frame_encoded.epsc_measured_current); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_steering_in_t epsc_steering_in(const can1_epsc_steering_in_t frame_encoded) { + frame::decoded::can1::epsc_steering_in_t frame_decoded; + frame_decoded.epsc_desired_steering_angle = can1_epsc_steering_in_epsc_desired_steering_angle_decode(frame_encoded.epsc_desired_steering_angle); + return frame_decoded; +} + +inline frame::decoded::can1::stw_buttons_t stw_buttons(const can1_stw_buttons_t frame_encoded) { + frame::decoded::can1::stw_buttons_t frame_decoded; + frame_decoded.stw_button_drs = can1_stw_buttons_stw_button_drs_decode(frame_encoded.stw_button_drs); + frame_decoded.stw_button_1 = can1_stw_buttons_stw_button_1_decode(frame_encoded.stw_button_1); + frame_decoded.stw_button_2 = can1_stw_buttons_stw_button_2_decode(frame_encoded.stw_button_2); + frame_decoded.stw_button_3 = can1_stw_buttons_stw_button_3_decode(frame_encoded.stw_button_3); + frame_decoded.stw_button_4 = can1_stw_buttons_stw_button_4_decode(frame_encoded.stw_button_4); + return frame_decoded; +} + +inline frame::decoded::can1::stw_status_t stw_status(const can1_stw_status_t frame_encoded) { + frame::decoded::can1::stw_status_t frame_decoded; + frame_decoded.lap_count = can1_stw_status_lap_count_decode(frame_encoded.lap_count); + frame_decoded.err_pdu = can1_stw_status_err_pdu_decode(frame_encoded.err_pdu); + frame_decoded.err_res = can1_stw_status_err_res_decode(frame_encoded.err_res); + frame_decoded.r2_d_progress = can1_stw_status_r2_d_progress_decode(frame_encoded.r2_d_progress); + frame_decoded.as_state_stw = can1_stw_status_as_state_stw_decode(frame_encoded.as_state_stw); + frame_decoded.err_as = can1_stw_status_err_as_decode(frame_encoded.err_as); + frame_decoded.err_app_sp = can1_stw_status_err_app_sp_decode(frame_encoded.err_app_sp); + frame_decoded.err_s_bspd = can1_stw_status_err_s_bspd_decode(frame_encoded.err_s_bspd); + frame_decoded.err_scs = can1_stw_status_err_scs_decode(frame_encoded.err_scs); + frame_decoded.err_con_mon = can1_stw_status_err_con_mon_decode(frame_encoded.err_con_mon); + frame_decoded.err_ini_chk = can1_stw_status_err_ini_chk_decode(frame_encoded.err_ini_chk); + frame_decoded.err_inv2 = can1_stw_status_err_inv2_decode(frame_encoded.err_inv2); + frame_decoded.err_inv1 = can1_stw_status_err_inv1_decode(frame_encoded.err_inv1); + frame_decoded.err_ams = can1_stw_status_err_ams_decode(frame_encoded.err_ams); + frame_decoded.err_sdc = can1_stw_status_err_sdc_decode(frame_encoded.err_sdc); + frame_decoded.sdc_status = can1_stw_status_sdc_status_decode(frame_encoded.sdc_status); + frame_decoded.inv2_ready = can1_stw_status_inv2_ready_decode(frame_encoded.inv2_ready); + frame_decoded.inv1_ready = can1_stw_status_inv1_ready_decode(frame_encoded.inv1_ready); + frame_decoded.energy_per_lap = can1_stw_status_energy_per_lap_decode(frame_encoded.energy_per_lap); + frame_decoded.ini_chk_state = can1_stw_status_ini_chk_state_decode(frame_encoded.ini_chk_state); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_1_t pdu_current_1(const can1_pdu_current_1_t frame_encoded) { + frame::decoded::can1::pdu_current_1_t frame_decoded; + frame_decoded.pdu_always_on_current = can1_pdu_current_1_pdu_always_on_current_decode(frame_encoded.pdu_always_on_current); + frame_decoded.pdu_lvms_current = can1_pdu_current_1_pdu_lvms_current_decode(frame_encoded.pdu_lvms_current); + frame_decoded.pdu_asms_current = can1_pdu_current_1_pdu_asms_current_decode(frame_encoded.pdu_asms_current); + frame_decoded.pdu_misc_current = can1_pdu_current_1_pdu_misc_current_decode(frame_encoded.pdu_misc_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_2_t pdu_current_2(const can1_pdu_current_2_t frame_encoded) { + frame::decoded::can1::pdu_current_2_t frame_decoded; + frame_decoded.pdu_sdc_current = can1_pdu_current_2_pdu_sdc_current_decode(frame_encoded.pdu_sdc_current); + frame_decoded.pdu_inverter_current = can1_pdu_current_2_pdu_inverter_current_decode(frame_encoded.pdu_inverter_current); + frame_decoded.pdu_ts_cooling_current = can1_pdu_current_2_pdu_ts_cooling_current_decode(frame_encoded.pdu_ts_cooling_current); + frame_decoded.pdu_acc_cooling_current = can1_pdu_current_2_pdu_acc_cooling_current_decode(frame_encoded.pdu_acc_cooling_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_3_t pdu_current_3(const can1_pdu_current_3_t frame_encoded) { + frame::decoded::can1::pdu_current_3_t frame_decoded; + frame_decoded.pdu_lidar_current = can1_pdu_current_3_pdu_lidar_current_decode(frame_encoded.pdu_lidar_current); + frame_decoded.pdu_drs_current = can1_pdu_current_3_pdu_drs_current_decode(frame_encoded.pdu_drs_current); + frame_decoded.pdu_epsc_current = can1_pdu_current_3_pdu_epsc_current_decode(frame_encoded.pdu_epsc_current); + frame_decoded.pdu_acu_current = can1_pdu_current_3_pdu_acu_current_decode(frame_encoded.pdu_acu_current); + return frame_decoded; +} + +inline frame::decoded::can1::pdu_current_4_t pdu_current_4(const can1_pdu_current_4_t frame_encoded) { + frame::decoded::can1::pdu_current_4_t frame_decoded; + frame_decoded.pdu_ebs_a_current = can1_pdu_current_4_pdu_ebs_a_current_decode(frame_encoded.pdu_ebs_a_current); + frame_decoded.pdu_ebs_b_current = can1_pdu_current_4_pdu_ebs_b_current_decode(frame_encoded.pdu_ebs_b_current); + return frame_decoded; +} + +inline frame::decoded::can1::epsc_config_in_t epsc_config_in(const can1_epsc_config_in_t frame_encoded) { + frame::decoded::can1::epsc_config_in_t frame_decoded; + frame_decoded.epsc_config_p_gain = can1_epsc_config_in_epsc_config_p_gain_decode(frame_encoded.epsc_config_p_gain); + frame_decoded.epsc_config_i_gain = can1_epsc_config_in_epsc_config_i_gain_decode(frame_encoded.epsc_config_i_gain); + frame_decoded.epsc_config_d_gain = can1_epsc_config_in_epsc_config_d_gain_decode(frame_encoded.epsc_config_d_gain); + return frame_decoded; +} + +} +} + +// callback structure +namespace callback { +namespace can1 { + inline std::function inverter_velocity = NULL; + inline std::function inverter_errors_warnings = NULL; + inline std::function inverter_torque_actual_cw = NULL; + inline std::function inverter_temperatur = NULL; + inline std::function inverter_torque_wanted = NULL; + inline std::function sdo_telemetrie_rx_node1 = NULL; + inline std::function sdo_telemetrie_rx_node2 = NULL; + inline std::function sdo_telemetrie_tx = NULL; + inline std::function laptop_sdo_node = NULL; + inline std::function x_sens_long_lat = NULL; + inline std::function x_sens_rateofturn = NULL; + inline std::function x_sens_acceleration = NULL; + inline std::function x_sens_velocity = NULL; + inline std::function telemetrie = NULL; + inline std::function override_powermap = NULL; + inline std::function override_laptop_2 = NULL; + inline std::function override_epsc_cooling = NULL; + inline std::function override_laptop = NULL; + inline std::function apps_override = NULL; + inline std::function ftcu_damper = NULL; + inline std::function ftcu_param_confirm = NULL; + inline std::function sensornode_f_10_hz = NULL; + inline std::function sensornode_f_100_hz_1 = NULL; + inline std::function sensornode_f_100_hz_2 = NULL; + inline std::function sensornode_f_1k_hz = NULL; + inline std::function sensornode_r_10_hz = NULL; + inline std::function sensornode_r_100_hz = NULL; + inline std::function sensornode_r_1k_hz = NULL; + inline std::function pwm_duty_cycle = NULL; + inline std::function pwm_config = NULL; + inline std::function dashboard_in = NULL; + inline std::function ams_slave1_status = NULL; + inline std::function ams_slave2_log0 = NULL; + inline std::function ams_slave2_log1 = NULL; + inline std::function ams_slave2_log2 = NULL; + inline std::function ams_slave2_log3 = NULL; + inline std::function ams_slave2_log4 = NULL; + inline std::function ams_slave2_log5 = NULL; + inline std::function ams_slave5_log6 = NULL; + inline std::function ams_slave4_log6 = NULL; + inline std::function ams_slave3_log6 = NULL; + inline std::function ams_slave2_log6 = NULL; + inline std::function ams_slave1_log6 = NULL; + inline std::function ams_slave5_log5 = NULL; + inline std::function ams_slave4_log5 = NULL; + inline std::function ams_slave3_log5 = NULL; + inline std::function ams_slave1_log5 = NULL; + inline std::function ams_slave5_log4 = NULL; + inline std::function ams_slave4_log4 = NULL; + inline std::function ams_slave3_log4 = NULL; + inline std::function ams_slave1_log4 = NULL; + inline std::function ams_slave5_log3 = NULL; + inline std::function ams_slave4_log3 = NULL; + inline std::function ams_slave3_log3 = NULL; + inline std::function ams_slave1_log3 = NULL; + inline std::function ams_slave5_log2 = NULL; + inline std::function ams_slave4_log2 = NULL; + inline std::function ams_slave3_log2 = NULL; + inline std::function ams_slave1_log2 = NULL; + inline std::function ams_slave5_log1 = NULL; + inline std::function ams_slave4_log1 = NULL; + inline std::function ams_slave3_log1 = NULL; + inline std::function ams_slave1_log1 = NULL; + inline std::function ams_slave5_log0 = NULL; + inline std::function ams_slave4_log0 = NULL; + inline std::function ams_slave3_log0 = NULL; + inline std::function ams_slave1_log0 = NULL; + inline std::function pdu_heartbeat = NULL; + inline std::function ftcu_pneumatik = NULL; + inline std::function acu_tx_commands = NULL; + inline std::function acu_rx_commands = NULL; + inline std::function acu_rx = NULL; + inline std::function ams_slave0_log0 = NULL; + inline std::function ams_slave0_log1 = NULL; + inline std::function ams_slave0_log3 = NULL; + inline std::function ams_slave0_log4 = NULL; + inline std::function ams_slave0_log5 = NULL; + inline std::function ams_slave0_log6 = NULL; + inline std::function acu_tx = NULL; + inline std::function ams_slave5_status = NULL; + inline std::function ams_slave4_status = NULL; + inline std::function ams_slave3_status = NULL; + inline std::function ams_slave2_status = NULL; + inline std::function ams_error = NULL; + inline std::function ftcu_cooling = NULL; + inline std::function ftcu_brake_t = NULL; + inline std::function ftcu_wheelspeed = NULL; + inline std::function ftcu_timings = NULL; + inline std::function ftcu_driver = NULL; + inline std::function tts_rr = NULL; + inline std::function tts_rl = NULL; + inline std::function tts_fr = NULL; + inline std::function tts_fl = NULL; + inline std::function stw_param_set = NULL; + inline std::function ams_slave0_status = NULL; + inline std::function ssu_message = NULL; + inline std::function ams_status = NULL; + inline std::function ams_slave_panic = NULL; + inline std::function ams_in = NULL; + inline std::function shunt_current = NULL; + inline std::function shunt_voltage1 = NULL; + inline std::function shunt_voltage2 = NULL; + inline std::function shunt_voltage3 = NULL; + inline std::function shunt_temperature = NULL; + inline std::function pdu_command = NULL; + inline std::function pdu_response = NULL; + inline std::function as_mission_fb = NULL; + inline std::function stw_mission_selected = NULL; + inline std::function epsc_out = NULL; + inline std::function epsc_steering_in = NULL; + inline std::function stw_buttons = NULL; + inline std::function stw_status = NULL; + inline std::function pdu_current_1 = NULL; + inline std::function pdu_current_2 = NULL; + inline std::function pdu_current_3 = NULL; + inline std::function pdu_current_4 = NULL; + inline std::function epsc_config_in = NULL; +} +} +} + + +#endif // _ENDEC_HPP_ + diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h new file mode 100644 index 0000000..c146da6 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h @@ -0,0 +1,275 @@ +#ifndef _TRANSCEIVER_H_ +#define _TRANSCEIVER_H_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "endec.hpp" + +#define STANDARD_TIMEOUT 10000 + +namespace canlib { +class Transceiver { +public: + Transceiver(); + Transceiver(std::string device_name, std::vector filters); + ~Transceiver(); + + virtual void transmit(canlib::frame::decoded::can1::inverter_velocity_t inverter_velocity); + virtual void transmit(canlib::frame::decoded::can1::inverter_errors_warnings_t inverter_errors_warnings); + virtual void transmit(canlib::frame::decoded::can1::inverter_torque_actual_cw_t inverter_torque_actual_cw); + virtual void transmit(canlib::frame::decoded::can1::inverter_temperatur_t inverter_temperatur); + virtual void transmit(canlib::frame::decoded::can1::inverter_torque_wanted_t inverter_torque_wanted); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2); + virtual void transmit(canlib::frame::decoded::can1::sdo_telemetrie_tx_t sdo_telemetrie_tx); + virtual void transmit(canlib::frame::decoded::can1::laptop_sdo_node_t laptop_sdo_node); + virtual void transmit(canlib::frame::decoded::can1::x_sens_long_lat_t x_sens_long_lat); + virtual void transmit(canlib::frame::decoded::can1::x_sens_rateofturn_t x_sens_rateofturn); + virtual void transmit(canlib::frame::decoded::can1::x_sens_acceleration_t x_sens_acceleration); + virtual void transmit(canlib::frame::decoded::can1::x_sens_velocity_t x_sens_velocity); + virtual void transmit(canlib::frame::decoded::can1::telemetrie_t telemetrie); + virtual void transmit(canlib::frame::decoded::can1::override_powermap_t override_powermap); + virtual void transmit(canlib::frame::decoded::can1::override_laptop_2_t override_laptop_2); + virtual void transmit(canlib::frame::decoded::can1::override_epsc_cooling_t override_epsc_cooling); + virtual void transmit(canlib::frame::decoded::can1::override_laptop_t override_laptop); + virtual void transmit(canlib::frame::decoded::can1::apps_override_t apps_override); + virtual void transmit(canlib::frame::decoded::can1::ftcu_damper_t ftcu_damper); + virtual void transmit(canlib::frame::decoded::can1::ftcu_param_confirm_t ftcu_param_confirm); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_10_hz_t sensornode_f_10_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_1_t sensornode_f_100_hz_1); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_2_t sensornode_f_100_hz_2); + virtual void transmit(canlib::frame::decoded::can1::sensornode_f_1k_hz_t sensornode_f_1k_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_10_hz_t sensornode_r_10_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_100_hz_t sensornode_r_100_hz); + virtual void transmit(canlib::frame::decoded::can1::sensornode_r_1k_hz_t sensornode_r_1k_hz); + virtual void transmit(canlib::frame::decoded::can1::pwm_duty_cycle_t pwm_duty_cycle); + virtual void transmit(canlib::frame::decoded::can1::pwm_config_t pwm_config); + virtual void transmit(canlib::frame::decoded::can1::dashboard_in_t dashboard_in); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_status_t ams_slave1_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log0_t ams_slave2_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log1_t ams_slave2_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log2_t ams_slave2_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log3_t ams_slave2_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log4_t ams_slave2_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log5_t ams_slave2_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log6_t ams_slave5_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log6_t ams_slave4_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log6_t ams_slave3_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_log6_t ams_slave2_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log6_t ams_slave1_log6); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log5_t ams_slave5_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log5_t ams_slave4_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log5_t ams_slave3_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log5_t ams_slave1_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log4_t ams_slave5_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log4_t ams_slave4_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log4_t ams_slave3_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log4_t ams_slave1_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log3_t ams_slave5_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log3_t ams_slave4_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log3_t ams_slave3_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log3_t ams_slave1_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log2_t ams_slave5_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log2_t ams_slave4_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log2_t ams_slave3_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log2_t ams_slave1_log2); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log1_t ams_slave5_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log1_t ams_slave4_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log1_t ams_slave3_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log1_t ams_slave1_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_log0_t ams_slave5_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_log0_t ams_slave4_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_log0_t ams_slave3_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave1_log0_t ams_slave1_log0); + virtual void transmit(canlib::frame::decoded::can1::pdu_heartbeat_t pdu_heartbeat); + virtual void transmit(canlib::frame::decoded::can1::ftcu_pneumatik_t ftcu_pneumatik); + virtual void transmit(canlib::frame::decoded::can1::acu_tx_commands_t acu_tx_commands); + virtual void transmit(canlib::frame::decoded::can1::acu_rx_commands_t acu_rx_commands); + virtual void transmit(canlib::frame::decoded::can1::acu_rx_t acu_rx); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log0_t ams_slave0_log0); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log1_t ams_slave0_log1); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log3_t ams_slave0_log3); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log4_t ams_slave0_log4); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log5_t ams_slave0_log5); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_log6_t ams_slave0_log6); + virtual void transmit(canlib::frame::decoded::can1::acu_tx_t acu_tx); + virtual void transmit(canlib::frame::decoded::can1::ams_slave5_status_t ams_slave5_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave4_status_t ams_slave4_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave3_status_t ams_slave3_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave2_status_t ams_slave2_status); + virtual void transmit(canlib::frame::decoded::can1::ams_error_t ams_error); + virtual void transmit(canlib::frame::decoded::can1::ftcu_cooling_t ftcu_cooling); + virtual void transmit(canlib::frame::decoded::can1::ftcu_brake_t_t ftcu_brake_t); + virtual void transmit(canlib::frame::decoded::can1::ftcu_wheelspeed_t ftcu_wheelspeed); + virtual void transmit(canlib::frame::decoded::can1::ftcu_timings_t ftcu_timings); + virtual void transmit(canlib::frame::decoded::can1::ftcu_driver_t ftcu_driver); + virtual void transmit(canlib::frame::decoded::can1::tts_rr_t tts_rr); + virtual void transmit(canlib::frame::decoded::can1::tts_rl_t tts_rl); + virtual void transmit(canlib::frame::decoded::can1::tts_fr_t tts_fr); + virtual void transmit(canlib::frame::decoded::can1::tts_fl_t tts_fl); + virtual void transmit(canlib::frame::decoded::can1::stw_param_set_t stw_param_set); + virtual void transmit(canlib::frame::decoded::can1::ams_slave0_status_t ams_slave0_status); + virtual void transmit(canlib::frame::decoded::can1::ssu_message_t ssu_message); + virtual void transmit(canlib::frame::decoded::can1::ams_status_t ams_status); + virtual void transmit(canlib::frame::decoded::can1::ams_slave_panic_t ams_slave_panic); + virtual void transmit(canlib::frame::decoded::can1::ams_in_t ams_in); + virtual void transmit(canlib::frame::decoded::can1::shunt_current_t shunt_current); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage1_t shunt_voltage1); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage2_t shunt_voltage2); + virtual void transmit(canlib::frame::decoded::can1::shunt_voltage3_t shunt_voltage3); + virtual void transmit(canlib::frame::decoded::can1::shunt_temperature_t shunt_temperature); + virtual void transmit(canlib::frame::decoded::can1::pdu_command_t pdu_command); + virtual void transmit(canlib::frame::decoded::can1::pdu_response_t pdu_response); + virtual void transmit(canlib::frame::decoded::can1::as_mission_fb_t as_mission_fb); + virtual void transmit(canlib::frame::decoded::can1::stw_mission_selected_t stw_mission_selected); + virtual void transmit(canlib::frame::decoded::can1::epsc_out_t epsc_out); + virtual void transmit(canlib::frame::decoded::can1::epsc_steering_in_t epsc_steering_in); + virtual void transmit(canlib::frame::decoded::can1::stw_buttons_t stw_buttons); + virtual void transmit(canlib::frame::decoded::can1::stw_status_t stw_status); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_1_t pdu_current_1); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_2_t pdu_current_2); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_3_t pdu_current_3); + virtual void transmit(canlib::frame::decoded::can1::pdu_current_4_t pdu_current_4); + virtual void transmit(canlib::frame::decoded::can1::epsc_config_in_t epsc_config_in); + + virtual bool receive(int timeout_us = STANDARD_TIMEOUT); + +private: + virtual bool read(struct can_frame &frame, int timeout_usec); + + can1_inverter_velocity_t can1_inverter_velocity_frame; + can1_inverter_errors_warnings_t can1_inverter_errors_warnings_frame; + can1_inverter_torque_actual_cw_t can1_inverter_torque_actual_cw_frame; + can1_inverter_temperatur_t can1_inverter_temperatur_frame; + can1_inverter_torque_wanted_t can1_inverter_torque_wanted_frame; + can1_sdo_telemetrie_rx_node1_t can1_sdo_telemetrie_rx_node1_frame; + can1_sdo_telemetrie_rx_node2_t can1_sdo_telemetrie_rx_node2_frame; + can1_sdo_telemetrie_tx_t can1_sdo_telemetrie_tx_frame; + can1_laptop_sdo_node_t can1_laptop_sdo_node_frame; + can1_x_sens_long_lat_t can1_x_sens_long_lat_frame; + can1_x_sens_rateofturn_t can1_x_sens_rateofturn_frame; + can1_x_sens_acceleration_t can1_x_sens_acceleration_frame; + can1_x_sens_velocity_t can1_x_sens_velocity_frame; + can1_telemetrie_t can1_telemetrie_frame; + can1_override_powermap_t can1_override_powermap_frame; + can1_override_laptop_2_t can1_override_laptop_2_frame; + can1_override_epsc_cooling_t can1_override_epsc_cooling_frame; + can1_override_laptop_t can1_override_laptop_frame; + can1_apps_override_t can1_apps_override_frame; + can1_ftcu_damper_t can1_ftcu_damper_frame; + can1_ftcu_param_confirm_t can1_ftcu_param_confirm_frame; + can1_sensornode_f_10_hz_t can1_sensornode_f_10_hz_frame; + can1_sensornode_f_100_hz_1_t can1_sensornode_f_100_hz_1_frame; + can1_sensornode_f_100_hz_2_t can1_sensornode_f_100_hz_2_frame; + can1_sensornode_f_1k_hz_t can1_sensornode_f_1k_hz_frame; + can1_sensornode_r_10_hz_t can1_sensornode_r_10_hz_frame; + can1_sensornode_r_100_hz_t can1_sensornode_r_100_hz_frame; + can1_sensornode_r_1k_hz_t can1_sensornode_r_1k_hz_frame; + can1_pwm_duty_cycle_t can1_pwm_duty_cycle_frame; + can1_pwm_config_t can1_pwm_config_frame; + can1_dashboard_in_t can1_dashboard_in_frame; + can1_ams_slave1_status_t can1_ams_slave1_status_frame; + can1_ams_slave2_log0_t can1_ams_slave2_log0_frame; + can1_ams_slave2_log1_t can1_ams_slave2_log1_frame; + can1_ams_slave2_log2_t can1_ams_slave2_log2_frame; + can1_ams_slave2_log3_t can1_ams_slave2_log3_frame; + can1_ams_slave2_log4_t can1_ams_slave2_log4_frame; + can1_ams_slave2_log5_t can1_ams_slave2_log5_frame; + can1_ams_slave5_log6_t can1_ams_slave5_log6_frame; + can1_ams_slave4_log6_t can1_ams_slave4_log6_frame; + can1_ams_slave3_log6_t can1_ams_slave3_log6_frame; + can1_ams_slave2_log6_t can1_ams_slave2_log6_frame; + can1_ams_slave1_log6_t can1_ams_slave1_log6_frame; + can1_ams_slave5_log5_t can1_ams_slave5_log5_frame; + can1_ams_slave4_log5_t can1_ams_slave4_log5_frame; + can1_ams_slave3_log5_t can1_ams_slave3_log5_frame; + can1_ams_slave1_log5_t can1_ams_slave1_log5_frame; + can1_ams_slave5_log4_t can1_ams_slave5_log4_frame; + can1_ams_slave4_log4_t can1_ams_slave4_log4_frame; + can1_ams_slave3_log4_t can1_ams_slave3_log4_frame; + can1_ams_slave1_log4_t can1_ams_slave1_log4_frame; + can1_ams_slave5_log3_t can1_ams_slave5_log3_frame; + can1_ams_slave4_log3_t can1_ams_slave4_log3_frame; + can1_ams_slave3_log3_t can1_ams_slave3_log3_frame; + can1_ams_slave1_log3_t can1_ams_slave1_log3_frame; + can1_ams_slave5_log2_t can1_ams_slave5_log2_frame; + can1_ams_slave4_log2_t can1_ams_slave4_log2_frame; + can1_ams_slave3_log2_t can1_ams_slave3_log2_frame; + can1_ams_slave1_log2_t can1_ams_slave1_log2_frame; + can1_ams_slave5_log1_t can1_ams_slave5_log1_frame; + can1_ams_slave4_log1_t can1_ams_slave4_log1_frame; + can1_ams_slave3_log1_t can1_ams_slave3_log1_frame; + can1_ams_slave1_log1_t can1_ams_slave1_log1_frame; + can1_ams_slave5_log0_t can1_ams_slave5_log0_frame; + can1_ams_slave4_log0_t can1_ams_slave4_log0_frame; + can1_ams_slave3_log0_t can1_ams_slave3_log0_frame; + can1_ams_slave1_log0_t can1_ams_slave1_log0_frame; + can1_pdu_heartbeat_t can1_pdu_heartbeat_frame; + can1_ftcu_pneumatik_t can1_ftcu_pneumatik_frame; + can1_acu_tx_commands_t can1_acu_tx_commands_frame; + can1_acu_rx_commands_t can1_acu_rx_commands_frame; + can1_acu_rx_t can1_acu_rx_frame; + can1_ams_slave0_log0_t can1_ams_slave0_log0_frame; + can1_ams_slave0_log1_t can1_ams_slave0_log1_frame; + can1_ams_slave0_log3_t can1_ams_slave0_log3_frame; + can1_ams_slave0_log4_t can1_ams_slave0_log4_frame; + can1_ams_slave0_log5_t can1_ams_slave0_log5_frame; + can1_ams_slave0_log6_t can1_ams_slave0_log6_frame; + can1_acu_tx_t can1_acu_tx_frame; + can1_ams_slave5_status_t can1_ams_slave5_status_frame; + can1_ams_slave4_status_t can1_ams_slave4_status_frame; + can1_ams_slave3_status_t can1_ams_slave3_status_frame; + can1_ams_slave2_status_t can1_ams_slave2_status_frame; + can1_ams_error_t can1_ams_error_frame; + can1_ftcu_cooling_t can1_ftcu_cooling_frame; + can1_ftcu_brake_t_t can1_ftcu_brake_t_frame; + can1_ftcu_wheelspeed_t can1_ftcu_wheelspeed_frame; + can1_ftcu_timings_t can1_ftcu_timings_frame; + can1_ftcu_driver_t can1_ftcu_driver_frame; + can1_tts_rr_t can1_tts_rr_frame; + can1_tts_rl_t can1_tts_rl_frame; + can1_tts_fr_t can1_tts_fr_frame; + can1_tts_fl_t can1_tts_fl_frame; + can1_stw_param_set_t can1_stw_param_set_frame; + can1_ams_slave0_status_t can1_ams_slave0_status_frame; + can1_ssu_message_t can1_ssu_message_frame; + can1_ams_status_t can1_ams_status_frame; + can1_ams_slave_panic_t can1_ams_slave_panic_frame; + can1_ams_in_t can1_ams_in_frame; + can1_shunt_current_t can1_shunt_current_frame; + can1_shunt_voltage1_t can1_shunt_voltage1_frame; + can1_shunt_voltage2_t can1_shunt_voltage2_frame; + can1_shunt_voltage3_t can1_shunt_voltage3_frame; + can1_shunt_temperature_t can1_shunt_temperature_frame; + can1_pdu_command_t can1_pdu_command_frame; + can1_pdu_response_t can1_pdu_response_frame; + can1_as_mission_fb_t can1_as_mission_fb_frame; + can1_stw_mission_selected_t can1_stw_mission_selected_frame; + can1_epsc_out_t can1_epsc_out_frame; + can1_epsc_steering_in_t can1_epsc_steering_in_frame; + can1_stw_buttons_t can1_stw_buttons_frame; + can1_stw_status_t can1_stw_status_frame; + can1_pdu_current_1_t can1_pdu_current_1_frame; + can1_pdu_current_2_t can1_pdu_current_2_frame; + can1_pdu_current_3_t can1_pdu_current_3_frame; + can1_pdu_current_4_t can1_pdu_current_4_frame; + can1_epsc_config_in_t can1_epsc_config_in_frame; + + struct can_frame frame; + int socket_instance; +}; + +} + +#endif // _TRANSCEIVER_H_ diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake new file mode 100644 index 0000000..0e5ab3a --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake @@ -0,0 +1,28 @@ + +####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### +####### Any changes to this file will be overwritten by the next CMake run #### +####### The input file was Config.cmake.in ######## + +get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) + +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +#################################################################################### + +include("${CMAKE_CURRENT_LIST_DIR}/ft_can_transceiver_libTargets.cmake") + diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake new file mode 100644 index 0000000..16eea27 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake @@ -0,0 +1,19 @@ +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "ft_can_transceiver_lib" for configuration "" +set_property(TARGET ft_can_transceiver_lib APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG) +set_target_properties(ft_can_transceiver_lib PROPERTIES + IMPORTED_LOCATION_NOCONFIG "${_IMPORT_PREFIX}/lib/libft_can_transceiver_lib.so" + IMPORTED_SONAME_NOCONFIG "libft_can_transceiver_lib.so" + ) + +list(APPEND _cmake_import_check_targets ft_can_transceiver_lib ) +list(APPEND _cmake_import_check_files_for_ft_can_transceiver_lib "${_IMPORT_PREFIX}/lib/libft_can_transceiver_lib.so" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake new file mode 100644 index 0000000..fea8588 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake @@ -0,0 +1,102 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.26) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS ft_can_transceiver_lib) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target ft_can_transceiver_lib +add_library(ft_can_transceiver_lib SHARED IMPORTED) + +set_target_properties(ft_can_transceiver_lib PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include" +) + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/ft_can_transceiver_libTargets-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so new file mode 100644 index 0000000..4a0517e Binary files /dev/null and b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so differ diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/colcon-core/packages/ft_can_transceiver_lib b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/colcon-core/packages/ft_can_transceiver_lib new file mode 100644 index 0000000..3b4c22f --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/colcon-core/packages/ft_can_transceiver_lib @@ -0,0 +1 @@ +foxglove_bridge \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv new file mode 100644 index 0000000..e119f32 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv @@ -0,0 +1 @@ +prepend-non-duplicate;CMAKE_PREFIX_PATH; diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1 b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1 new file mode 100644 index 0000000..d03facc --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1 @@ -0,0 +1,3 @@ +# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em + +colcon_prepend_unique_value CMAKE_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX" diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh new file mode 100644 index 0000000..a948e68 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh @@ -0,0 +1,3 @@ +# generated from colcon_core/shell/template/hook_prepend_value.sh.em + +_colcon_prepend_unique_value CMAKE_PREFIX_PATH "$COLCON_CURRENT_PREFIX" diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv new file mode 100644 index 0000000..89bec93 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv @@ -0,0 +1 @@ +prepend-non-duplicate;LD_LIBRARY_PATH;lib diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1 b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1 new file mode 100644 index 0000000..f6df601 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1 @@ -0,0 +1,3 @@ +# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em + +colcon_prepend_unique_value LD_LIBRARY_PATH "$env:COLCON_CURRENT_PREFIX\lib" diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh new file mode 100644 index 0000000..ca3c102 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh @@ -0,0 +1,3 @@ +# generated from colcon_core/shell/template/hook_prepend_value.sh.em + +_colcon_prepend_unique_value LD_LIBRARY_PATH "$COLCON_CURRENT_PREFIX/lib" diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.bash b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.bash new file mode 100644 index 0000000..68ec39c --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.bash @@ -0,0 +1,39 @@ +# generated from colcon_bash/shell/template/package.bash.em + +# This script extends the environment for this package. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)" +else + _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh script of this package +_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/package.sh" + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_bash_COLCON_CURRENT_PREFIX" + +# source bash hooks +_colcon_package_bash_source_script "$COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/local_setup.bash" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_bash_source_script +unset _colcon_package_bash_COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.dsv b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.dsv new file mode 100644 index 0000000..308684f --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.dsv @@ -0,0 +1,11 @@ +source;share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1 +source;share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv +source;share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh +source;share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1 +source;share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv +source;share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh +source;share/ft_can_transceiver_lib/local_setup.bash +source;share/ft_can_transceiver_lib/local_setup.dsv +source;share/ft_can_transceiver_lib/local_setup.ps1 +source;share/ft_can_transceiver_lib/local_setup.sh +source;share/ft_can_transceiver_lib/local_setup.zsh diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.ps1 b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.ps1 new file mode 100644 index 0000000..b4ae2e0 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.ps1 @@ -0,0 +1,117 @@ +# generated from colcon_powershell/shell/template/package.ps1.em + +# function to append a value to a variable +# which uses colons as separators +# duplicates as well as leading separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_append_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + $_duplicate="" + # start with no values + $_all_values="" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -eq $_value) { + $_duplicate="1" + } + if ($_all_values) { + $_all_values="${_all_values};$_" + } else { + $_all_values="$_" + } + } + } + } + # append only non-duplicates + if (!$_duplicate) { + # avoid leading separator + if ($_all_values) { + $_all_values="${_all_values};${_value}" + } else { + $_all_values="${_value}" + } + } + + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +function colcon_prepend_unique_value { + param ( + $_listname, + $_value + ) + + # get values from variable + if (Test-Path Env:$_listname) { + $_values=(Get-Item env:$_listname).Value + } else { + $_values="" + } + # start with the new value + $_all_values="$_value" + # iterate over existing values in the variable + if ($_values) { + $_values.Split(";") | ForEach { + # not an empty string + if ($_) { + # not a duplicate of _value + if ($_ -ne $_value) { + # keep non-duplicate values + $_all_values="${_all_values};$_" + } + } + } + } + # export the updated variable + Set-Item env:\$_listname -Value "$_all_values" +} + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +function colcon_package_source_powershell_script { + param ( + $_colcon_package_source_powershell_script + ) + # source script with conditional trace output + if (Test-Path $_colcon_package_source_powershell_script) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_package_source_powershell_script'" + } + . "$_colcon_package_source_powershell_script" + } else { + Write-Error "not found: '$_colcon_package_source_powershell_script'" + } +} + + +# a powershell script is able to determine its own path +# the prefix is two levels up from the package specific share directory +$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName + +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1" +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1" +colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/ft_can_transceiver_lib/local_setup.ps1" + +Remove-Item Env:\COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.sh b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.sh new file mode 100644 index 0000000..9cd1ddf --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.sh @@ -0,0 +1,88 @@ +# generated from colcon_core/shell/template/package.sh.em + +# This script extends the environment for this package. + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prepend_unique_value_IFS=$IFS + IFS=":" + # start with the new value + _all_values="$_value" + # workaround SH_WORD_SPLIT not being set in zsh + if [ "$(command -v colcon_zsh_convert_to_array)" ]; then + colcon_zsh_convert_to_array _values + fi + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + # restore the field separator + IFS=$_colcon_prepend_unique_value_IFS + unset _colcon_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_package_sh_COLCON_CURRENT_PREFIX="/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_package_sh_COLCON_CURRENT_PREFIX + return 1 + fi + COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX" +fi +unset _colcon_package_sh_COLCON_CURRENT_PREFIX + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source sh hooks +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh" +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh" +_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/local_setup.sh" + +unset _colcon_package_sh_source_script +unset COLCON_CURRENT_PREFIX + +# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.zsh b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.zsh new file mode 100644 index 0000000..07bf5d1 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.zsh @@ -0,0 +1,50 @@ +# generated from colcon_zsh/shell/template/package.zsh.em + +# This script extends the environment for this package. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + # the prefix is two levels up from the package specific share directory + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)" +else + _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +# additional arguments: arguments to the script +_colcon_package_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$@" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +colcon_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# source sh script of this package +_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/package.sh" +unset convert_zsh_to_array + +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced scripts +COLCON_CURRENT_PREFIX="$_colcon_package_zsh_COLCON_CURRENT_PREFIX" + +# source zsh hooks +_colcon_package_zsh_source_script "$COLCON_CURRENT_PREFIX/share/ft_can_transceiver_lib/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX + +unset _colcon_package_zsh_source_script +unset _colcon_package_zsh_COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.bash b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.bash new file mode 100644 index 0000000..03f0025 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.bash @@ -0,0 +1,121 @@ +# generated from colcon_bash/shell/template/prefix.bash.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a bash script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +else + _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_bash_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_bash_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_bash_prepend_unique_value_IFS" + unset _colcon_prefix_bash_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_bash_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.ps1 b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.ps1 new file mode 100644 index 0000000..6f68c8d --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.ps1 @@ -0,0 +1,55 @@ +# generated from colcon_powershell/shell/template/prefix.ps1.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# check environment variable for custom Python executable +if ($env:COLCON_PYTHON_EXECUTABLE) { + if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) { + echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist" + exit 1 + } + $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE" +} else { + # use the Python executable known at configure time + $_colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) { + if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) { + echo "error: unable to find python3 executable" + exit 1 + } + $_colcon_python_executable="python3" + } +} + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_powershell_source_script { + param ( + $_colcon_prefix_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_powershell_source_script_param'" + } + . "$_colcon_prefix_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'" + } +} + +# get all commands in topological order +$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1 + +# execute all commands in topological order +if ($env:COLCON_TRACE) { + echo "Execute generated script:" + echo "<<<" + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output + echo ">>>" +} +if ($_colcon_ordered_commands) { + $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression +} diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.sh b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.sh new file mode 100644 index 0000000..7720a7b --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.sh @@ -0,0 +1,137 @@ +# generated from colcon_core/shell/template/prefix.sh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install" +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX + return 1 + fi +else + _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_sh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_sh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_sh_prepend_unique_value_IFS" + unset _colcon_prefix_sh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_sh_prepend_unique_value + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "_colcon_prefix_sh_source_script() { + if [ -f \"\$1\" ]; then + if [ -n \"\$COLCON_TRACE\" ]; then + echo \"# . \\\"\$1\\\"\" + fi + . \"\$1\" + else + echo \"not found: \\\"\$1\\\"\" 1>&2 + fi + }" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.zsh b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.zsh new file mode 100644 index 0000000..b648710 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.zsh @@ -0,0 +1,134 @@ +# generated from colcon_zsh/shell/template/prefix.zsh.em + +# This script extends the environment with all packages contained in this +# prefix path. + +# a zsh script is able to determine its own path if necessary +if [ -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +else + _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +fi + +# function to convert array-like strings into arrays +# to workaround SH_WORD_SPLIT not being set +_colcon_prefix_zsh_convert_to_array() { + local _listname=$1 + local _dollar="$" + local _split="{=" + local _to_array="(\"$_dollar$_split$_listname}\")" + eval $_listname=$_to_array +} + +# function to prepend a value to a variable +# which uses colons as separators +# duplicates as well as trailing separators are avoided +# first argument: the name of the result variable +# second argument: the value to be prepended +_colcon_prefix_zsh_prepend_unique_value() { + # arguments + _listname="$1" + _value="$2" + + # get values from variable + eval _values=\"\$$_listname\" + # backup the field separator + _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS" + IFS=":" + # start with the new value + _all_values="$_value" + _contained_value="" + # workaround SH_WORD_SPLIT not being set + _colcon_prefix_zsh_convert_to_array _values + # iterate over existing values in the variable + for _item in $_values; do + # ignore empty strings + if [ -z "$_item" ]; then + continue + fi + # ignore duplicates of _value + if [ "$_item" = "$_value" ]; then + _contained_value=1 + continue + fi + # keep non-duplicate values + _all_values="$_all_values:$_item" + done + unset _item + if [ -z "$_contained_value" ]; then + if [ -n "$COLCON_TRACE" ]; then + if [ "$_all_values" = "$_value" ]; then + echo "export $_listname=$_value" + else + echo "export $_listname=$_value:\$$_listname" + fi + fi + fi + unset _contained_value + # restore the field separator + IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS" + unset _colcon_prefix_zsh_prepend_unique_value_IFS + # export the updated variable + eval export $_listname=\"$_all_values\" + unset _all_values + unset _values + + unset _value + unset _listname +} + +# add this prefix to the COLCON_PREFIX_PATH +_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX" +unset _colcon_prefix_zsh_prepend_unique_value +unset _colcon_prefix_zsh_convert_to_array + +# check environment variable for custom Python executable +if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then + if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then + echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist" + return 1 + fi + _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE" +else + # try the Python executable known at configure time + _colcon_python_executable="/usr/bin/python3" + # if it doesn't exist try a fall back + if [ ! -f "$_colcon_python_executable" ]; then + if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then + echo "error: unable to find python3 executable" + return 1 + fi + _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"` + fi +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# get all commands in topological order +_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)" +unset _colcon_python_executable +if [ -n "$COLCON_TRACE" ]; then + echo "$(declare -f _colcon_prefix_sh_source_script)" + echo "# Execute generated script:" + echo "# <<<" + echo "${_colcon_ordered_commands}" + echo "# >>>" + echo "unset _colcon_prefix_sh_source_script" +fi +eval "${_colcon_ordered_commands}" +unset _colcon_ordered_commands + +unset _colcon_prefix_sh_source_script + +unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/setup.bash b/ros2_ws/src/ft_can_transceiver_lib/install/setup.bash new file mode 100644 index 0000000..bb38dd2 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/setup.bash @@ -0,0 +1,31 @@ +# generated from colcon_bash/shell/template/prefix_chain.bash.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_bash_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/jazzy" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)" +_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_bash_source_script diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/setup.ps1 b/ros2_ws/src/ft_can_transceiver_lib/install/setup.ps1 new file mode 100644 index 0000000..0b38e3e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/setup.ps1 @@ -0,0 +1,29 @@ +# generated from colcon_powershell/shell/template/prefix_chain.ps1.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +function _colcon_prefix_chain_powershell_source_script { + param ( + $_colcon_prefix_chain_powershell_source_script_param + ) + # source script with conditional trace output + if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) { + if ($env:COLCON_TRACE) { + echo ". '$_colcon_prefix_chain_powershell_source_script_param'" + } + . "$_colcon_prefix_chain_powershell_source_script_param" + } else { + Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'" + } +} + +# source chained prefixes +_colcon_prefix_chain_powershell_source_script "/opt/ros/jazzy\local_setup.ps1" + +# source this prefix +$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent) +_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1" diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/setup.sh b/ros2_ws/src/ft_can_transceiver_lib/install/setup.sh new file mode 100644 index 0000000..0ae2d81 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/setup.sh @@ -0,0 +1,45 @@ +# generated from colcon_core/shell/template/prefix_chain.sh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# since a plain shell script can't determine its own path when being sourced +# either use the provided COLCON_CURRENT_PREFIX +# or fall back to the build time prefix (if it exists) +_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install +if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then + _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX" +elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then + echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2 + unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX + return 1 +fi + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_sh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/jazzy" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script +COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" +_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh" + +unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_sh_source_script +unset COLCON_CURRENT_PREFIX diff --git a/ros2_ws/src/ft_can_transceiver_lib/install/setup.zsh b/ros2_ws/src/ft_can_transceiver_lib/install/setup.zsh new file mode 100644 index 0000000..6e4a496 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/install/setup.zsh @@ -0,0 +1,31 @@ +# generated from colcon_zsh/shell/template/prefix_chain.zsh.em + +# This script extends the environment with the environment of other prefix +# paths which were sourced when this file was generated as well as all packages +# contained in this prefix path. + +# function to source another script with conditional trace output +# first argument: the path of the script +_colcon_prefix_chain_zsh_source_script() { + if [ -f "$1" ]; then + if [ -n "$COLCON_TRACE" ]; then + echo "# . \"$1\"" + fi + . "$1" + else + echo "not found: \"$1\"" 1>&2 + fi +} + +# source chained prefixes +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="/opt/ros/jazzy" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +# source this prefix +# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script +COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)" +_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh" + +unset COLCON_CURRENT_PREFIX +unset _colcon_prefix_chain_zsh_source_script diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/COLCON_IGNORE b/ros2_ws/src/ft_can_transceiver_lib/log/COLCON_IGNORE new file mode 100644 index 0000000..e69de29 diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/events.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/events.log new file mode 100644 index 0000000..4fd3ce1 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/events.log @@ -0,0 +1,340 @@ +[0.000000] (-) TimerEvent: {} +[0.001747] (ft_can_transceiver_lib) JobQueued: {'identifier': 'ft_can_transceiver_lib', 'dependencies': OrderedDict()} +[0.002745] (ft_can_transceiver_lib) JobStarted: {'identifier': 'ft_can_transceiver_lib'} +[0.058036] (ft_can_transceiver_lib) JobProgress: {'identifier': 'ft_can_transceiver_lib', 'progress': 'cmake'} +[0.091446] (-) TimerEvent: {} +[0.120407] (ft_can_transceiver_lib) Command: {'cmd': ['/usr/bin/cmake', '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib', '-DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib'], 'cwd': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'env': OrderedDict({'HOSTNAME': 'lima-rancher-desktop', 'GIT_ASKPASS': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass.sh', 'SHLVL': '2', 'LD_LIBRARY_PATH': '/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib', 'BROWSER': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/helpers/browser.sh', 'HOME': '/home/USERNAME', 'OLDPWD': '/workspaces/can_viewer/ros2_ws/src', 'TERM_PROGRAM_VERSION': '1.101.2', 'VSCODE_IPC_HOOK_CLI': '/tmp/vscode-ipc-842556d3-6e0e-4e48-a246-49e8a95d502d.sock', 'ROS_PYTHON_VERSION': '3', 'VSCODE_GIT_ASKPASS_MAIN': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/node', 'PYDEVD_DISABLE_FILE_VALIDATION': '1', 'BUNDLED_DEBUGPY_PATH': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/libs/debugpy', 'COLORTERM': 'truecolor', 'REMOTE_CONTAINERS': 'true', 'ROS_DISTRO': 'jazzy', 'REMOTE_CONTAINERS_IPC': '/tmp/vscode-remote-containers-ipc-96591647-acec-4c8c-85fc-99bab2a074b2.sock', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'PIP_BREAK_SYSTEM_PACKAGES': '1', 'TERM': 'xterm-256color', 'PATH': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/remote-cli:/home/USERNAME/.local/bin:/opt/ros/jazzy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/scripts/noConfigScripts', 'REMOTE_CONTAINERS_SOCKETS': '["/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock","/tmp/.X11-unix/X0","/home/USERNAME/.gnupg/S.gpg-agent"]', 'DISPLAY': ':0', 'VSCODE_DEBUGPY_ADAPTER_ENDPOINTS': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-66e4b2104f6513ce.txt', 'LANG': 'C.UTF-8', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:', 'VSCODE_GIT_IPC_HANDLE': '/tmp/vscode-git-89a19b2569.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AUTH_SOCK': '/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock', 'AMENT_PREFIX_PATH': '/opt/ros/jazzy', 'REMOTE_CONTAINERS_DISPLAY_SOCK': '/tmp/.X11-unix/X0', 'SHELL': '/bin/bash', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '', 'PWD': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'LC_ALL': 'C.UTF-8', 'PYTHONPATH': '/opt/ros/jazzy/lib/python3.12/site-packages', 'COLCON': '1', 'CMAKE_PREFIX_PATH': '/opt/ros/jazzy'}), 'shell': False} +[0.192451] (-) TimerEvent: {} +[0.295161] (-) TimerEvent: {} +[0.398463] (-) TimerEvent: {} +[0.502452] (-) TimerEvent: {} +[0.641471] (-) TimerEvent: {} +[0.745620] (-) TimerEvent: {} +[0.847920] (-) TimerEvent: {} +[0.951705] (-) TimerEvent: {} +[0.967615] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- The C compiler identification is GNU 13.3.0\n'} +[1.053123] (-) TimerEvent: {} +[1.156505] (-) TimerEvent: {} +[1.259363] (-) TimerEvent: {} +[1.362420] (-) TimerEvent: {} +[1.465226] (-) TimerEvent: {} +[1.476368] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- The CXX compiler identification is GNU 13.3.0\n'} +[1.566035] (-) TimerEvent: {} +[1.580718] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting C compiler ABI info\n'} +[1.667278] (-) TimerEvent: {} +[1.769649] (-) TimerEvent: {} +[1.873636] (-) TimerEvent: {} +[1.976651] (-) TimerEvent: {} +[2.078662] (-) TimerEvent: {} +[2.181198] (-) TimerEvent: {} +[2.285440] (-) TimerEvent: {} +[2.387372] (-) TimerEvent: {} +[2.490252] (-) TimerEvent: {} +[2.594022] (-) TimerEvent: {} +[2.696908] (-) TimerEvent: {} +[2.799845] (-) TimerEvent: {} +[2.902406] (-) TimerEvent: {} +[3.004948] (-) TimerEvent: {} +[3.062451] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting C compiler ABI info - done\n'} +[3.106140] (-) TimerEvent: {} +[3.194253] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Check for working C compiler: /usr/bin/cc - skipped\n'} +[3.198159] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting C compile features\n'} +[3.202436] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting C compile features - done\n'} +[3.208716] (-) TimerEvent: {} +[3.285924] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting CXX compiler ABI info\n'} +[3.310248] (-) TimerEvent: {} +[3.412569] (-) TimerEvent: {} +[3.514791] (-) TimerEvent: {} +[3.618571] (-) TimerEvent: {} +[3.722018] (-) TimerEvent: {} +[3.825662] (-) TimerEvent: {} +[3.928400] (-) TimerEvent: {} +[4.030644] (-) TimerEvent: {} +[4.134068] (-) TimerEvent: {} +[4.239444] (-) TimerEvent: {} +[4.344079] (-) TimerEvent: {} +[4.446593] (-) TimerEvent: {} +[4.549113] (-) TimerEvent: {} +[4.652252] (-) TimerEvent: {} +[4.752786] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting CXX compiler ABI info - done\n'} +[4.755607] (-) TimerEvent: {} +[4.857783] (-) TimerEvent: {} +[4.888753] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Check for working CXX compiler: /usr/bin/c++ - skipped\n'} +[4.892321] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting CXX compile features\n'} +[4.895316] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Detecting CXX compile features - done\n'} +[4.958895] (-) TimerEvent: {} +[5.062325] (-) TimerEvent: {} +[5.164901] (-) TimerEvent: {} +[5.266922] (-) TimerEvent: {} +[5.369098] (-) TimerEvent: {} +[5.471341] (ft_can_transceiver_lib) StdoutLine: {'line': b'Successfully generated ./can1.h and ./can1.c.\n'} +[5.474418] (-) TimerEvent: {} +[5.576876] (-) TimerEvent: {} +[5.679552] (-) TimerEvent: {} +[5.782302] (-) TimerEvent: {} +[5.847319] (ft_can_transceiver_lib) StderrLine: {'line': b'usage: cantools [-h] [-d] [--version]\n'} +[5.852260] (ft_can_transceiver_lib) StderrLine: {'line': b' {plot,list,generate_c_source,decode,monitor,convert,dump} ...\n'} +[5.855009] (ft_can_transceiver_lib) StderrLine: {'line': b"cantools: error: argument subcommand: invalid choice: 'generate_c_source_transceiver' (choose from 'plot', 'list', 'generate_c_source', 'decode', 'monitor', 'convert', 'dump')\n"} +[5.884274] (-) TimerEvent: {} +[5.988093] (-) TimerEvent: {} +[6.006831] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Configuring done (5.7s)\n'} +[6.089542] (-) TimerEvent: {} +[6.193209] (-) TimerEvent: {} +[6.296259] (-) TimerEvent: {} +[6.398441] (-) TimerEvent: {} +[6.501969] (-) TimerEvent: {} +[6.524339] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Generating done (0.4s)\n'} +[6.603593] (-) TimerEvent: {} +[6.705624] (-) TimerEvent: {} +[6.797705] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Build files have been written to: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib\n'} +[6.807530] (ft_can_transceiver_lib) CommandEnded: {'returncode': 0} +[6.810380] (-) TimerEvent: {} +[6.816858] (ft_can_transceiver_lib) JobProgress: {'identifier': 'ft_can_transceiver_lib', 'progress': 'build'} +[6.826594] (ft_can_transceiver_lib) Command: {'cmd': ['/usr/bin/cmake', '--build', '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', '--', '-j8', '-l8'], 'cwd': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'env': OrderedDict({'HOSTNAME': 'lima-rancher-desktop', 'GIT_ASKPASS': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass.sh', 'SHLVL': '2', 'LD_LIBRARY_PATH': '/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib', 'BROWSER': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/helpers/browser.sh', 'HOME': '/home/USERNAME', 'OLDPWD': '/workspaces/can_viewer/ros2_ws/src', 'TERM_PROGRAM_VERSION': '1.101.2', 'VSCODE_IPC_HOOK_CLI': '/tmp/vscode-ipc-842556d3-6e0e-4e48-a246-49e8a95d502d.sock', 'ROS_PYTHON_VERSION': '3', 'VSCODE_GIT_ASKPASS_MAIN': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/node', 'PYDEVD_DISABLE_FILE_VALIDATION': '1', 'BUNDLED_DEBUGPY_PATH': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/libs/debugpy', 'COLORTERM': 'truecolor', 'REMOTE_CONTAINERS': 'true', 'ROS_DISTRO': 'jazzy', 'REMOTE_CONTAINERS_IPC': '/tmp/vscode-remote-containers-ipc-96591647-acec-4c8c-85fc-99bab2a074b2.sock', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'PIP_BREAK_SYSTEM_PACKAGES': '1', 'TERM': 'xterm-256color', 'PATH': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/remote-cli:/home/USERNAME/.local/bin:/opt/ros/jazzy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/scripts/noConfigScripts', 'REMOTE_CONTAINERS_SOCKETS': '["/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock","/tmp/.X11-unix/X0","/home/USERNAME/.gnupg/S.gpg-agent"]', 'DISPLAY': ':0', 'VSCODE_DEBUGPY_ADAPTER_ENDPOINTS': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-66e4b2104f6513ce.txt', 'LANG': 'C.UTF-8', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:', 'VSCODE_GIT_IPC_HANDLE': '/tmp/vscode-git-89a19b2569.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AUTH_SOCK': '/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock', 'AMENT_PREFIX_PATH': '/opt/ros/jazzy', 'REMOTE_CONTAINERS_DISPLAY_SOCK': '/tmp/.X11-unix/X0', 'SHELL': '/bin/bash', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '', 'PWD': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'LC_ALL': 'C.UTF-8', 'PYTHONPATH': '/opt/ros/jazzy/lib/python3.12/site-packages', 'COLCON': '1', 'CMAKE_PREFIX_PATH': '/opt/ros/jazzy'}), 'shell': False} +[6.870021] (ft_can_transceiver_lib) StderrLine: {'line': b"gmake: Warning: File 'Makefile' has modification time 0.31 s in the future\n"} +[6.911625] (-) TimerEvent: {} +[6.965883] (ft_can_transceiver_lib) StderrLine: {'line': b"gmake[1]: Warning: File 'CMakeFiles/Makefile2' has modification time 0.21 s in the future\n"} +[6.999439] (ft_can_transceiver_lib) StderrLine: {'line': b"gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.18 s in the future\n"} +[7.013438] (-) TimerEvent: {} +[7.035299] (ft_can_transceiver_lib) StderrLine: {'line': b'gmake[2]: warning: Clock skew detected. Your build may be incomplete.\n'} +[7.097399] (ft_can_transceiver_lib) StderrLine: {'line': b"gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.081 s in the future\n"} +[7.114579] (-) TimerEvent: {} +[7.180989] (ft_can_transceiver_lib) StdoutLine: {'line': b'[ 66%] \x1b[32mBuilding CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/can1.cpp.o\x1b[0m\n'} +[7.185392] (ft_can_transceiver_lib) StdoutLine: {'line': b'[ 66%] \x1b[32mBuilding CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/transceiver.cpp.o\x1b[0m\n'} +[7.216301] (-) TimerEvent: {} +[7.318242] (-) TimerEvent: {} +[7.423216] (-) TimerEvent: {} +[7.530030] (-) TimerEvent: {} +[7.640324] (-) TimerEvent: {} +[7.746945] (-) TimerEvent: {} +[7.855828] (-) TimerEvent: {} +[7.961703] (-) TimerEvent: {} +[8.081995] (-) TimerEvent: {} +[8.187379] (-) TimerEvent: {} +[8.291795] (-) TimerEvent: {} +[8.396263] (-) TimerEvent: {} +[8.500543] (-) TimerEvent: {} +[8.607853] (-) TimerEvent: {} +[8.715245] (-) TimerEvent: {} +[8.826123] (-) TimerEvent: {} +[8.933610] (-) TimerEvent: {} +[9.040920] (-) TimerEvent: {} +[9.146321] (-) TimerEvent: {} +[9.250537] (-) TimerEvent: {} +[9.357268] (-) TimerEvent: {} +[9.463178] (-) TimerEvent: {} +[9.568446] (-) TimerEvent: {} +[9.676698] (-) TimerEvent: {} +[9.781336] (-) TimerEvent: {} +[9.890097] (-) TimerEvent: {} +[9.998797] (-) TimerEvent: {} +[10.110536] (-) TimerEvent: {} +[10.217165] (-) TimerEvent: {} +[10.324639] (-) TimerEvent: {} +[10.430408] (-) TimerEvent: {} +[10.539986] (-) TimerEvent: {} +[10.652791] (-) TimerEvent: {} +[10.758147] (-) TimerEvent: {} +[10.869993] (-) TimerEvent: {} +[10.977717] (-) TimerEvent: {} +[11.084981] (-) TimerEvent: {} +[11.194941] (-) TimerEvent: {} +[11.302355] (-) TimerEvent: {} +[11.408373] (-) TimerEvent: {} +[11.516341] (-) TimerEvent: {} +[11.623419] (-) TimerEvent: {} +[11.732631] (-) TimerEvent: {} +[11.843263] (-) TimerEvent: {} +[11.950331] (-) TimerEvent: {} +[12.055886] (-) TimerEvent: {} +[12.167160] (-) TimerEvent: {} +[12.270633] (-) TimerEvent: {} +[12.378550] (-) TimerEvent: {} +[12.488154] (-) TimerEvent: {} +[12.593092] (-) TimerEvent: {} +[12.696813] (-) TimerEvent: {} +[12.805549] (-) TimerEvent: {} +[12.911512] (-) TimerEvent: {} +[13.025780] (-) TimerEvent: {} +[13.132652] (-) TimerEvent: {} +[13.241586] (-) TimerEvent: {} +[13.347315] (-) TimerEvent: {} +[13.452678] (-) TimerEvent: {} +[13.559407] (-) TimerEvent: {} +[13.670383] (-) TimerEvent: {} +[13.778629] (-) TimerEvent: {} +[13.886336] (-) TimerEvent: {} +[13.996189] (-) TimerEvent: {} +[14.104840] (-) TimerEvent: {} +[14.210668] (-) TimerEvent: {} +[14.319370] (-) TimerEvent: {} +[14.426916] (-) TimerEvent: {} +[14.535075] (-) TimerEvent: {} +[14.640431] (-) TimerEvent: {} +[14.746892] (-) TimerEvent: {} +[14.803464] (ft_can_transceiver_lib) StderrLine: {'line': b'\x1b[01m\x1b[K/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:\x1b[m\x1b[K In constructor \xe2\x80\x98\x1b[01m\x1b[Kcanlib::Transceiver::\x1b[01;32m\x1b[KTransceiver\x1b[m\x1b[K(std::string, std::vector)\x1b[m\x1b[K\xe2\x80\x99:\n'} +[14.816900] (ft_can_transceiver_lib) StderrLine: {'line': b'\x1b[01m\x1b[K/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:17:16:\x1b[m\x1b[K \x1b[01;35m\x1b[Kwarning: \x1b[m\x1b[KISO C++ forbids variable length array \xe2\x80\x98\x1b[01m\x1b[Kfilter_arr\x1b[m\x1b[K\xe2\x80\x99 [\x1b[01;35m\x1b[K\x1b]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wvla\x07-Wvla\x1b]8;;\x07\x1b[m\x1b[K]\n'} +[14.829044] (ft_can_transceiver_lib) StderrLine: {'line': b' 17 | can_filter \x1b[01;35m\x1b[Kfilter_arr\x1b[m\x1b[K[filters.size()];\n'} +[14.837802] (ft_can_transceiver_lib) StderrLine: {'line': b' | \x1b[01;35m\x1b[K^~~~~~~~~~\x1b[m\x1b[K\n'} +[14.849516] (-) TimerEvent: {} +[14.956170] (-) TimerEvent: {} +[15.061220] (-) TimerEvent: {} +[15.167842] (-) TimerEvent: {} +[15.209014] (ft_can_transceiver_lib) StderrLine: {'line': b'\x1b[01m\x1b[K/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:\x1b[m\x1b[K In member function \xe2\x80\x98\x1b[01m\x1b[Kvirtual bool canlib::Transceiver::\x1b[01;32m\x1b[Kreceive\x1b[m\x1b[K(int)\x1b[m\x1b[K\xe2\x80\x99:\n'} +[15.214311] (ft_can_transceiver_lib) StderrLine: {'line': b'\x1b[01m\x1b[K/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:1236:1:\x1b[m\x1b[K \x1b[01;35m\x1b[Kwarning: \x1b[m\x1b[Kcontrol reaches end of non-void function [\x1b[01;35m\x1b[K\x1b]8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wreturn-type\x07-Wreturn-type\x1b]8;;\x07\x1b[m\x1b[K]\n'} +[15.224920] (ft_can_transceiver_lib) StderrLine: {'line': b' 1236 | \x1b[01;35m\x1b[K}\x1b[m\x1b[K\n'} +[15.242978] (ft_can_transceiver_lib) StderrLine: {'line': b' | \x1b[01;35m\x1b[K^\x1b[m\x1b[K\n'} +[15.271332] (-) TimerEvent: {} +[15.375849] (-) TimerEvent: {} +[15.480841] (-) TimerEvent: {} +[15.588018] (-) TimerEvent: {} +[15.694304] (-) TimerEvent: {} +[15.800233] (-) TimerEvent: {} +[15.906345] (-) TimerEvent: {} +[16.013323] (-) TimerEvent: {} +[16.122042] (-) TimerEvent: {} +[16.233352] (-) TimerEvent: {} +[16.339509] (-) TimerEvent: {} +[16.444860] (-) TimerEvent: {} +[16.550555] (-) TimerEvent: {} +[16.657500] (-) TimerEvent: {} +[16.763431] (-) TimerEvent: {} +[16.869568] (-) TimerEvent: {} +[16.975966] (-) TimerEvent: {} +[17.081557] (-) TimerEvent: {} +[17.187363] (-) TimerEvent: {} +[17.292678] (-) TimerEvent: {} +[17.397258] (-) TimerEvent: {} +[17.503113] (-) TimerEvent: {} +[17.607699] (-) TimerEvent: {} +[17.712553] (-) TimerEvent: {} +[17.824842] (-) TimerEvent: {} +[17.931768] (-) TimerEvent: {} +[18.039541] (-) TimerEvent: {} +[18.148578] (-) TimerEvent: {} +[18.256042] (-) TimerEvent: {} +[18.368884] (-) TimerEvent: {} +[18.472067] (-) TimerEvent: {} +[18.574780] (-) TimerEvent: {} +[18.677371] (-) TimerEvent: {} +[18.780071] (-) TimerEvent: {} +[18.883206] (-) TimerEvent: {} +[18.986276] (-) TimerEvent: {} +[19.089396] (-) TimerEvent: {} +[19.191897] (-) TimerEvent: {} +[19.293596] (-) TimerEvent: {} +[19.395573] (-) TimerEvent: {} +[19.498283] (-) TimerEvent: {} +[19.601734] (-) TimerEvent: {} +[19.705200] (-) TimerEvent: {} +[19.808392] (-) TimerEvent: {} +[19.911372] (-) TimerEvent: {} +[20.014608] (-) TimerEvent: {} +[20.108912] (ft_can_transceiver_lib) StdoutLine: {'line': b'[100%] \x1b[32m\x1b[1mLinking CXX shared library libft_can_transceiver_lib.so\x1b[0m\n'} +[20.116691] (-) TimerEvent: {} +[20.218958] (-) TimerEvent: {} +[20.325338] (-) TimerEvent: {} +[20.433023] (-) TimerEvent: {} +[20.538814] (-) TimerEvent: {} +[20.645380] (-) TimerEvent: {} +[20.752955] (-) TimerEvent: {} +[20.859194] (-) TimerEvent: {} +[20.973108] (-) TimerEvent: {} +[21.082584] (-) TimerEvent: {} +[21.194260] (-) TimerEvent: {} +[21.305044] (-) TimerEvent: {} +[21.411559] (-) TimerEvent: {} +[21.523079] (-) TimerEvent: {} +[21.630497] (-) TimerEvent: {} +[21.737311] (-) TimerEvent: {} +[21.842816] (-) TimerEvent: {} +[21.947100] (-) TimerEvent: {} +[22.053890] (-) TimerEvent: {} +[22.164652] (-) TimerEvent: {} +[22.272931] (-) TimerEvent: {} +[22.382504] (-) TimerEvent: {} +[22.488043] (-) TimerEvent: {} +[22.592644] (-) TimerEvent: {} +[22.697720] (-) TimerEvent: {} +[22.805787] (-) TimerEvent: {} +[22.912814] (-) TimerEvent: {} +[23.019078] (-) TimerEvent: {} +[23.124762] (-) TimerEvent: {} +[23.230113] (-) TimerEvent: {} +[23.336006] (-) TimerEvent: {} +[23.442391] (-) TimerEvent: {} +[23.547065] (-) TimerEvent: {} +[23.655567] (-) TimerEvent: {} +[23.760114] (-) TimerEvent: {} +[23.866918] (-) TimerEvent: {} +[23.971481] (-) TimerEvent: {} +[24.077517] (-) TimerEvent: {} +[24.182505] (-) TimerEvent: {} +[24.287797] (-) TimerEvent: {} +[24.395812] (-) TimerEvent: {} +[24.500035] (-) TimerEvent: {} +[24.605246] (-) TimerEvent: {} +[24.709672] (-) TimerEvent: {} +[24.814976] (-) TimerEvent: {} +[24.921519] (-) TimerEvent: {} +[25.028379] (-) TimerEvent: {} +[25.134825] (-) TimerEvent: {} +[25.239731] (-) TimerEvent: {} +[25.345272] (-) TimerEvent: {} +[25.450023] (-) TimerEvent: {} +[25.556059] (-) TimerEvent: {} +[25.659833] (-) TimerEvent: {} +[25.765545] (-) TimerEvent: {} +[25.872099] (-) TimerEvent: {} +[25.977679] (-) TimerEvent: {} +[26.083842] (-) TimerEvent: {} +[26.192820] (-) TimerEvent: {} +[26.298362] (-) TimerEvent: {} +[26.405901] (-) TimerEvent: {} +[26.507716] (-) TimerEvent: {} +[26.610005] (-) TimerEvent: {} +[26.713119] (-) TimerEvent: {} +[26.815053] (-) TimerEvent: {} +[26.918449] (-) TimerEvent: {} +[27.021855] (-) TimerEvent: {} +[27.124588] (-) TimerEvent: {} +[27.227353] (-) TimerEvent: {} +[27.330076] (-) TimerEvent: {} +[27.433283] (-) TimerEvent: {} +[27.535447] (-) TimerEvent: {} +[27.637864] (-) TimerEvent: {} +[27.683960] (ft_can_transceiver_lib) StderrLine: {'line': b'gmake[2]: warning: Clock skew detected. Your build may be incomplete.\n'} +[27.724312] (ft_can_transceiver_lib) StdoutLine: {'line': b'[100%] Built target ft_can_transceiver_lib\n'} +[27.728505] (ft_can_transceiver_lib) StderrLine: {'line': b'gmake[1]: warning: Clock skew detected. Your build may be incomplete.\n'} +[27.738770] (-) TimerEvent: {} +[27.767427] (ft_can_transceiver_lib) StderrLine: {'line': b'gmake: warning: Clock skew detected. Your build may be incomplete.\n'} +[27.775604] (ft_can_transceiver_lib) CommandEnded: {'returncode': 0} +[27.804328] (ft_can_transceiver_lib) JobProgress: {'identifier': 'ft_can_transceiver_lib', 'progress': 'install'} +[27.828160] (ft_can_transceiver_lib) Command: {'cmd': ['/usr/bin/cmake', '--install', '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib'], 'cwd': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'env': OrderedDict({'HOSTNAME': 'lima-rancher-desktop', 'GIT_ASKPASS': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass.sh', 'SHLVL': '2', 'LD_LIBRARY_PATH': '/opt/ros/jazzy/lib/x86_64-linux-gnu:/opt/ros/jazzy/lib', 'BROWSER': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/helpers/browser.sh', 'HOME': '/home/USERNAME', 'OLDPWD': '/workspaces/can_viewer/ros2_ws/src', 'TERM_PROGRAM_VERSION': '1.101.2', 'VSCODE_IPC_HOOK_CLI': '/tmp/vscode-ipc-842556d3-6e0e-4e48-a246-49e8a95d502d.sock', 'ROS_PYTHON_VERSION': '3', 'VSCODE_GIT_ASKPASS_MAIN': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/extensions/git/dist/askpass-main.js', 'VSCODE_GIT_ASKPASS_NODE': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/node', 'PYDEVD_DISABLE_FILE_VALIDATION': '1', 'BUNDLED_DEBUGPY_PATH': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/libs/debugpy', 'COLORTERM': 'truecolor', 'REMOTE_CONTAINERS': 'true', 'ROS_DISTRO': 'jazzy', 'REMOTE_CONTAINERS_IPC': '/tmp/vscode-remote-containers-ipc-96591647-acec-4c8c-85fc-99bab2a074b2.sock', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'PIP_BREAK_SYSTEM_PACKAGES': '1', 'TERM': 'xterm-256color', 'PATH': '/vscode/vscode-server/bin/linux-x64/2901c5ac6db8a986a5666c3af51ff804d05af0d4/bin/remote-cli:/home/USERNAME/.local/bin:/opt/ros/jazzy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/bundled/scripts/noConfigScripts', 'REMOTE_CONTAINERS_SOCKETS': '["/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock","/tmp/.X11-unix/X0","/home/USERNAME/.gnupg/S.gpg-agent"]', 'DISPLAY': ':0', 'VSCODE_DEBUGPY_ADAPTER_ENDPOINTS': '/home/USERNAME/.vscode-server/extensions/ms-python.debugpy-2025.8.0-linux-x64/.noConfigDebugAdapterEndpoints/endpoint-66e4b2104f6513ce.txt', 'LANG': 'C.UTF-8', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=00:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.avif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:*~=00;90:*#=00;90:*.bak=00;90:*.crdownload=00;90:*.dpkg-dist=00;90:*.dpkg-new=00;90:*.dpkg-old=00;90:*.dpkg-tmp=00;90:*.old=00;90:*.orig=00;90:*.part=00;90:*.rej=00;90:*.rpmnew=00;90:*.rpmorig=00;90:*.rpmsave=00;90:*.swp=00;90:*.tmp=00;90:*.ucf-dist=00;90:*.ucf-new=00;90:*.ucf-old=00;90:', 'VSCODE_GIT_IPC_HANDLE': '/tmp/vscode-git-89a19b2569.sock', 'TERM_PROGRAM': 'vscode', 'SSH_AUTH_SOCK': '/tmp/vscode-ssh-auth-96591647-acec-4c8c-85fc-99bab2a074b2.sock', 'AMENT_PREFIX_PATH': '/opt/ros/jazzy', 'REMOTE_CONTAINERS_DISPLAY_SOCK': '/tmp/.X11-unix/X0', 'SHELL': '/bin/bash', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'VSCODE_GIT_ASKPASS_EXTRA_ARGS': '', 'PWD': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'LC_ALL': 'C.UTF-8', 'PYTHONPATH': '/opt/ros/jazzy/lib/python3.12/site-packages', 'COLCON': '1', 'CMAKE_PREFIX_PATH': '/opt/ros/jazzy'}), 'shell': False} +[27.839852] (-) TimerEvent: {} +[27.853005] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Install configuration: ""\n'} +[27.885817] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so\n'} +[27.941577] (-) TimerEvent: {} +[28.043810] (-) TimerEvent: {} +[28.089661] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib\n'} +[28.121698] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp\n'} +[28.145084] (-) TimerEvent: {} +[28.213087] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h\n'} +[28.246396] (-) TimerEvent: {} +[28.332888] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h\n'} +[28.347678] (-) TimerEvent: {} +[28.448702] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake\n'} +[28.452343] (-) TimerEvent: {} +[28.523133] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake\n'} +[28.553687] (-) TimerEvent: {} +[28.604960] (ft_can_transceiver_lib) StdoutLine: {'line': b'-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake\n'} +[28.656649] (-) TimerEvent: {} +[28.717152] (ft_can_transceiver_lib) CommandEnded: {'returncode': 0} +[28.757955] (-) TimerEvent: {} +[28.861041] (-) TimerEvent: {} +[28.963418] (-) TimerEvent: {} +[29.065867] (-) TimerEvent: {} +[29.168881] (-) TimerEvent: {} +[29.257002] (ft_can_transceiver_lib) JobEnded: {'identifier': 'ft_can_transceiver_lib', 'rc': 0} +[29.275046] (-) TimerEvent: {} +[29.275700] (-) EventReactorShutdown: {} diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/command.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/command.log new file mode 100644 index 0000000..5030612 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/command.log @@ -0,0 +1,6 @@ +Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stderr.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stderr.log new file mode 100644 index 0000000..a0be37e --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stderr.log @@ -0,0 +1,19 @@ +usage: cantools [-h] [-d] [--version] + {plot,list,generate_c_source,decode,monitor,convert,dump} ... +cantools: error: argument subcommand: invalid choice: 'generate_c_source_transceiver' (choose from 'plot', 'list', 'generate_c_source', 'decode', 'monitor', 'convert', 'dump') +gmake: Warning: File 'Makefile' has modification time 0.31 s in the future +gmake[1]: Warning: File 'CMakeFiles/Makefile2' has modification time 0.21 s in the future +gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.18 s in the future +gmake[2]: warning: Clock skew detected. Your build may be incomplete. +gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.081 s in the future +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In constructor ‘canlib::Transceiver::Transceiver(std::string, std::vector)’: +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:17:16: warning: ISO C++ forbids variable length array ‘filter_arr’ []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wvla-Wvla]8;;] + 17 | can_filter filter_arr[filters.size()]; + | ^~~~~~~~~~ +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In member function ‘virtual bool canlib::Transceiver::receive(int)’: +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:1236:1: warning: control reaches end of non-void function []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wreturn-type-Wreturn-type]8;;] + 1236 | } + | ^ +gmake[2]: warning: Clock skew detected. Your build may be incomplete. +gmake[1]: warning: Clock skew detected. Your build may be incomplete. +gmake: warning: Clock skew detected. Your build may be incomplete. diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout.log new file mode 100644 index 0000000..95b6108 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout.log @@ -0,0 +1,29 @@ +-- The C compiler identification is GNU 13.3.0 +-- The CXX compiler identification is GNU 13.3.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Detecting CXX compiler ABI info +-- Detecting CXX compiler ABI info - done +-- Check for working CXX compiler: /usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +Successfully generated ./can1.h and ./can1.c. +-- Configuring done (5.7s) +-- Generating done (0.4s) +-- Build files have been written to: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +[ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/can1.cpp.o +[ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/transceiver.cpp.o +[100%] Linking CXX shared library libft_can_transceiver_lib.so +[100%] Built target ft_can_transceiver_lib +-- Install configuration: "" +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout_stderr.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout_stderr.log new file mode 100644 index 0000000..c3fb463 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/stdout_stderr.log @@ -0,0 +1,48 @@ +-- The C compiler identification is GNU 13.3.0 +-- The CXX compiler identification is GNU 13.3.0 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Detecting CXX compiler ABI info +-- Detecting CXX compiler ABI info - done +-- Check for working CXX compiler: /usr/bin/c++ - skipped +-- Detecting CXX compile features +-- Detecting CXX compile features - done +Successfully generated ./can1.h and ./can1.c. +usage: cantools [-h] [-d] [--version] + {plot,list,generate_c_source,decode,monitor,convert,dump} ... +cantools: error: argument subcommand: invalid choice: 'generate_c_source_transceiver' (choose from 'plot', 'list', 'generate_c_source', 'decode', 'monitor', 'convert', 'dump') +-- Configuring done (5.7s) +-- Generating done (0.4s) +-- Build files have been written to: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +gmake: Warning: File 'Makefile' has modification time 0.31 s in the future +gmake[1]: Warning: File 'CMakeFiles/Makefile2' has modification time 0.21 s in the future +gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.18 s in the future +gmake[2]: warning: Clock skew detected. Your build may be incomplete. +gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.081 s in the future +[ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/can1.cpp.o +[ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/transceiver.cpp.o +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In constructor ‘canlib::Transceiver::Transceiver(std::string, std::vector)’: +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:17:16: warning: ISO C++ forbids variable length array ‘filter_arr’ []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wvla-Wvla]8;;] + 17 | can_filter filter_arr[filters.size()]; + | ^~~~~~~~~~ +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In member function ‘virtual bool canlib::Transceiver::receive(int)’: +/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:1236:1: warning: control reaches end of non-void function []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wreturn-type-Wreturn-type]8;;] + 1236 | } + | ^ +[100%] Linking CXX shared library libft_can_transceiver_lib.so +gmake[2]: warning: Clock skew detected. Your build may be incomplete. +[100%] Built target ft_can_transceiver_lib +gmake[1]: warning: Clock skew detected. Your build may be incomplete. +gmake: warning: Clock skew detected. Your build may be incomplete. +-- Install configuration: "" +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake +-- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/streams.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/streams.log new file mode 100644 index 0000000..32edaa4 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/ft_can_transceiver_lib/streams.log @@ -0,0 +1,54 @@ +[0.170s] Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +[0.966s] -- The C compiler identification is GNU 13.3.0 +[1.475s] -- The CXX compiler identification is GNU 13.3.0 +[1.580s] -- Detecting C compiler ABI info +[3.060s] -- Detecting C compiler ABI info - done +[3.193s] -- Check for working C compiler: /usr/bin/cc - skipped +[3.197s] -- Detecting C compile features +[3.200s] -- Detecting C compile features - done +[3.284s] -- Detecting CXX compiler ABI info +[4.751s] -- Detecting CXX compiler ABI info - done +[4.887s] -- Check for working CXX compiler: /usr/bin/c++ - skipped +[4.890s] -- Detecting CXX compile features +[4.893s] -- Detecting CXX compile features - done +[5.469s] Successfully generated ./can1.h and ./can1.c. +[5.847s] usage: cantools [-h] [-d] [--version] +[5.850s] {plot,list,generate_c_source,decode,monitor,convert,dump} ... +[5.853s] cantools: error: argument subcommand: invalid choice: 'generate_c_source_transceiver' (choose from 'plot', 'list', 'generate_c_source', 'decode', 'monitor', 'convert', 'dump') +[6.005s] -- Configuring done (5.7s) +[6.522s] -- Generating done (0.4s) +[6.797s] -- Build files have been written to: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +[6.804s] Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +[6.825s] Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +[6.868s] gmake: Warning: File 'Makefile' has modification time 0.31 s in the future +[6.965s] gmake[1]: Warning: File 'CMakeFiles/Makefile2' has modification time 0.21 s in the future +[6.998s] gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.18 s in the future +[7.034s] gmake[2]: warning: Clock skew detected. Your build may be incomplete. +[7.095s] gmake[2]: Warning: File 'CMakeFiles/ft_can_transceiver_lib.dir/flags.make' has modification time 0.081 s in the future +[7.180s] [ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/can1.cpp.o +[7.182s] [ 66%] Building CXX object CMakeFiles/ft_can_transceiver_lib.dir/src/transceiver.cpp.o +[14.806s] /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In constructor ‘canlib::Transceiver::Transceiver(std::string, std::vector)’: +[14.823s] /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:17:16: warning: ISO C++ forbids variable length array ‘filter_arr’ []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wvla-Wvla]8;;] +[14.833s] 17 | can_filter filter_arr[filters.size()]; +[14.840s] | ^~~~~~~~~~ +[15.209s] /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp: In member function ‘virtual bool canlib::Transceiver::receive(int)’: +[15.216s] /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp:1236:1: warning: control reaches end of non-void function []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wreturn-type-Wreturn-type]8;;] +[15.234s] 1236 | } +[15.242s] | ^ +[20.108s] [100%] Linking CXX shared library libft_can_transceiver_lib.so +[27.683s] gmake[2]: warning: Clock skew detected. Your build may be incomplete. +[27.723s] [100%] Built target ft_can_transceiver_lib +[27.726s] gmake[1]: warning: Clock skew detected. Your build may be incomplete. +[27.766s] gmake: warning: Clock skew detected. Your build may be incomplete. +[27.773s] Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +[27.826s] Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +[27.851s] -- Install configuration: "" +[27.884s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/libft_can_transceiver_lib.so +[28.087s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib +[28.120s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/endec.hpp +[28.211s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/can1.h +[28.332s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/include/ft_can_transceiver_lib/transceiver.h +[28.446s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets.cmake +[28.521s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libTargets-noconfig.cmake +[28.604s] -- Installing: /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/cmake/ft_can_transceiver_lib/ft_can_transceiver_libConfig.cmake +[28.730s] Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/logger_all.log b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/logger_all.log new file mode 100644 index 0000000..efaedab --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/build_2025-07-10_17-27-28/logger_all.log @@ -0,0 +1,111 @@ +[0.217s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build'] +[0.217s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=8, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, mixin_files=None, mixin=None, verb_parser=, verb_extension=, main=>, mixin_verb=('build',)) +[0.329s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters +[0.332s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters +[0.333s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters +[0.334s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters +[0.334s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover +[0.335s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover +[0.336s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib' +[0.342s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install'] +[0.343s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore' +[0.345s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install' +[0.349s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg'] +[0.349s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg' +[0.351s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta'] +[0.352s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta' +[0.352s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros'] +[0.353s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros' +[0.413s] DEBUG:colcon.colcon_core.package_identification:Package '.' with type 'ros.ament_cmake' and name 'ft_can_transceiver_lib' +[0.414s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults +[0.415s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover +[0.415s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults +[0.416s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover +[0.417s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults +[0.446s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_args' from command line to 'None' +[0.446s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_target' from command line to 'None' +[0.447s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_target_skip_unavailable' from command line to 'False' +[0.450s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_clean_cache' from command line to 'False' +[0.451s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_clean_first' from command line to 'False' +[0.452s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'cmake_force_configure' from command line to 'False' +[0.452s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'ament_cmake_args' from command line to 'None' +[0.453s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'catkin_cmake_args' from command line to 'None' +[0.454s] Level 5:colcon.colcon_core.verb:set package 'ft_can_transceiver_lib' build argument 'catkin_skip_building_tests' from command line to 'False' +[0.454s] DEBUG:colcon.colcon_core.verb:Building package 'ft_can_transceiver_lib' with the following arguments: {'ament_cmake_args': None, 'build_base': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib', 'merge_install': False, 'path': '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib', 'symlink_install': False, 'test_result_base': None} +[0.455s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor +[0.459s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete +[0.460s] INFO:colcon.colcon_ros.task.ament_cmake.build:Building ROS package in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib' with build type 'ament_cmake' +[0.461s] INFO:colcon.colcon_cmake.task.cmake.build:Building CMake package in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib' +[0.470s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems +[0.472s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell +[0.473s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment +[0.642s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +[7.276s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib -DCMAKE_INSTALL_PREFIX=/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib +[7.296s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +[28.245s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --build /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib -- -j8 -l8 +[28.298s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +[29.183s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(ft_can_transceiver_lib) +[29.202s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib' returned '0': CMAKE_PREFIX_PATH=/opt/ros/jazzy /usr/bin/cmake --install /workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/build/ft_can_transceiver_lib +[29.207s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib' for CMake module files +[29.276s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib' for CMake config files +[29.306s] Level 1:colcon.colcon_core.shell:create_environment_hook('ft_can_transceiver_lib', 'cmake_prefix_path') +[29.307s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1' +[29.339s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv' +[29.355s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh' +[29.381s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib' +[29.385s] Level 1:colcon.colcon_core.shell:create_environment_hook('ft_can_transceiver_lib', 'ld_library_path_lib') +[29.386s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1' +[29.400s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv' +[29.414s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh' +[29.426s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/bin' +[29.428s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/pkgconfig/ft_can_transceiver_lib.pc' +[29.434s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/python3.12/site-packages' +[29.437s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/bin' +[29.440s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.ps1' +[29.454s] INFO:colcon.colcon_core.shell:Creating package descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.dsv' +[29.467s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.sh' +[29.479s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.bash' +[29.494s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.zsh' +[29.509s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/colcon-core/packages/ft_can_transceiver_lib) +[29.540s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(ft_can_transceiver_lib) +[29.541s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib' for CMake module files +[29.578s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib' for CMake config files +[29.590s] Level 1:colcon.colcon_core.shell:create_environment_hook('ft_can_transceiver_lib', 'cmake_prefix_path') +[29.590s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.ps1' +[29.596s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.dsv' +[29.605s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/cmake_prefix_path.sh' +[29.614s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib' +[29.616s] Level 1:colcon.colcon_core.shell:create_environment_hook('ft_can_transceiver_lib', 'ld_library_path_lib') +[29.617s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.ps1' +[29.624s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.dsv' +[29.633s] INFO:colcon.colcon_core.shell:Creating environment hook '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/hook/ld_library_path_lib.sh' +[29.643s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/bin' +[29.646s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/pkgconfig/ft_can_transceiver_lib.pc' +[29.651s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/lib/python3.12/site-packages' +[29.654s] Level 1:colcon.colcon_core.environment:checking '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/bin' +[29.657s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.ps1' +[29.669s] INFO:colcon.colcon_core.shell:Creating package descriptor '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.dsv' +[29.677s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.sh' +[29.688s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.bash' +[29.699s] INFO:colcon.colcon_core.shell:Creating package script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/ft_can_transceiver_lib/package.zsh' +[29.710s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/ft_can_transceiver_lib/share/colcon-core/packages/ft_can_transceiver_lib) +[29.723s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop +[29.724s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed +[29.728s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0' +[29.730s] DEBUG:colcon.colcon_core.event_reactor:joining thread +[29.765s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.notify_send': Could not find 'notify-send' +[29.766s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems +[29.767s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems +[29.770s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2' +[29.771s] DEBUG:colcon.colcon_notification.desktop_notification.notify2:Failed to initialize notify2: org.freedesktop.DBus.Error.InvalidFileContent: D-Bus library appears to be incorrectly set up: see the manual page for dbus-uuidgen to correct this issue. (Failed to open "/var/lib/dbus/machine-id": No such file or directory; UUID file '/etc/machine-id' should contain a hex string of length 32, not length 0, with no other text) +[29.774s] DEBUG:colcon.colcon_core.event_reactor:joined thread +[29.775s] INFO:colcon.colcon_core.shell:Creating prefix script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.ps1' +[29.800s] INFO:colcon.colcon_core.shell:Creating prefix util module '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_ps1.py' +[29.820s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/setup.ps1' +[29.840s] INFO:colcon.colcon_core.shell:Creating prefix script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.sh' +[29.859s] INFO:colcon.colcon_core.shell:Creating prefix util module '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/_local_setup_util_sh.py' +[29.876s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/setup.sh' +[29.893s] INFO:colcon.colcon_core.shell:Creating prefix script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.bash' +[29.911s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/setup.bash' +[29.928s] INFO:colcon.colcon_core.shell:Creating prefix script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/local_setup.zsh' +[29.944s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/workspaces/can_viewer/ros2_ws/src/ft_can_transceiver_lib/install/setup.zsh' diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/latest b/ros2_ws/src/ft_can_transceiver_lib/log/latest new file mode 120000 index 0000000..b57d247 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/latest @@ -0,0 +1 @@ +latest_build \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/log/latest_build b/ros2_ws/src/ft_can_transceiver_lib/log/latest_build new file mode 120000 index 0000000..78b68b0 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/log/latest_build @@ -0,0 +1 @@ +build_2025-07-10_17-27-28 \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/package.xml b/ros2_ws/src/ft_can_transceiver_lib/package.xml new file mode 100644 index 0000000..6de1454 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/package.xml @@ -0,0 +1,19 @@ + + + + ft_can_transceiver_lib + 0.0.0 + TODO: Package description + root + TODO: License declaration + + ament_cmake + foxglove_bridge + + ament_lint_auto + ament_lint_common + + + ament_cmake + + \ No newline at end of file diff --git a/ros2_ws/src/ft_can_transceiver_lib/src/.empty b/ros2_ws/src/ft_can_transceiver_lib/src/.empty new file mode 100644 index 0000000..e69de29 diff --git a/ros2_ws/src/ft_can_transceiver_lib/src/can1.cpp b/ros2_ws/src/ft_can_transceiver_lib/src/can1.cpp new file mode 100644 index 0000000..df366ab --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/src/can1.cpp @@ -0,0 +1,15306 @@ +/** + * @file can1.c + * + * @brief This source file was generated by cantools version 40.2.3 Sun Jul 20 11:04:58 2025. + * + * @copyright Copyright (c) 2018-2019 Erik Moqvist + * + * @par License + * The MIT License (MIT) + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#include + +#include "can1.h" + +static inline uint8_t pack_left_shift_u8( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value << shift) & mask); +} + +static inline uint8_t pack_left_shift_u16( + uint16_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value << shift) & mask); +} + +static inline uint8_t pack_left_shift_u32( + uint32_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value << shift) & mask); +} + +static inline uint8_t pack_right_shift_u16( + uint16_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value >> shift) & mask); +} + +static inline uint8_t pack_right_shift_u32( + uint32_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value >> shift) & mask); +} + +static inline uint16_t unpack_left_shift_u16( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint16_t)((uint16_t)(value & mask) << shift); +} + +static inline uint32_t unpack_left_shift_u32( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint32_t)((uint32_t)(value & mask) << shift); +} + +static inline uint8_t unpack_right_shift_u8( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint8_t)((uint8_t)(value & mask) >> shift); +} + +static inline uint16_t unpack_right_shift_u16( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint16_t)((uint16_t)(value & mask) >> shift); +} + +static inline uint32_t unpack_right_shift_u32( + uint8_t value, + uint8_t shift, + uint8_t mask) +{ + return (uint32_t)((uint32_t)(value & mask) >> shift); +} + +int can1_inverter_velocity_pack( + uint8_t *dst_p, + const struct can1_inverter_velocity_t *src_p, + size_t size) +{ + uint32_t inverter_1_velocity; + uint32_t inverter_2_velocity; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + inverter_1_velocity = (uint32_t)src_p->inverter_1_velocity; + dst_p[0] |= pack_left_shift_u32(inverter_1_velocity, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u32(inverter_1_velocity, 8u, 0xffu); + dst_p[2] |= pack_right_shift_u32(inverter_1_velocity, 16u, 0xffu); + dst_p[3] |= pack_right_shift_u32(inverter_1_velocity, 24u, 0xffu); + inverter_2_velocity = (uint32_t)src_p->inverter_2_velocity; + dst_p[4] |= pack_left_shift_u32(inverter_2_velocity, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u32(inverter_2_velocity, 8u, 0xffu); + dst_p[6] |= pack_right_shift_u32(inverter_2_velocity, 16u, 0xffu); + dst_p[7] |= pack_right_shift_u32(inverter_2_velocity, 24u, 0xffu); + + return (8); +} + +int can1_inverter_velocity_unpack( + struct can1_inverter_velocity_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t inverter_1_velocity; + uint32_t inverter_2_velocity; + + if (size < 8u) { + return (-EINVAL); + } + + inverter_1_velocity = unpack_right_shift_u32(src_p[0], 0u, 0xffu); + inverter_1_velocity |= unpack_left_shift_u32(src_p[1], 8u, 0xffu); + inverter_1_velocity |= unpack_left_shift_u32(src_p[2], 16u, 0xffu); + inverter_1_velocity |= unpack_left_shift_u32(src_p[3], 24u, 0xffu); + dst_p->inverter_1_velocity = (int32_t)inverter_1_velocity; + inverter_2_velocity = unpack_right_shift_u32(src_p[4], 0u, 0xffu); + inverter_2_velocity |= unpack_left_shift_u32(src_p[5], 8u, 0xffu); + inverter_2_velocity |= unpack_left_shift_u32(src_p[6], 16u, 0xffu); + inverter_2_velocity |= unpack_left_shift_u32(src_p[7], 24u, 0xffu); + dst_p->inverter_2_velocity = (int32_t)inverter_2_velocity; + + return (0); +} + +int can1_inverter_velocity_init(struct can1_inverter_velocity_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_inverter_velocity_t)); + + return 0; +} + +int32_t can1_inverter_velocity_inverter_1_velocity_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_inverter_velocity_inverter_1_velocity_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_inverter_velocity_inverter_1_velocity_is_in_range(int32_t value) +{ + (void)value; + + return (true); +} + +int32_t can1_inverter_velocity_inverter_2_velocity_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_inverter_velocity_inverter_2_velocity_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_inverter_velocity_inverter_2_velocity_is_in_range(int32_t value) +{ + (void)value; + + return (true); +} + +int can1_inverter_errors_warnings_pack( + uint8_t *dst_p, + const struct can1_inverter_errors_warnings_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->inverter_1_errors, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->inverter_1_errors, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->inverter_1_warnings, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->inverter_1_warnings, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->inverter_2_errors, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->inverter_2_errors, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->inverter_2_warnings, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->inverter_2_warnings, 8u, 0xffu); + + return (8); +} + +int can1_inverter_errors_warnings_unpack( + struct can1_inverter_errors_warnings_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->inverter_1_errors = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->inverter_1_errors |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->inverter_1_warnings = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->inverter_1_warnings |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->inverter_2_errors = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->inverter_2_errors |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->inverter_2_warnings = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->inverter_2_warnings |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_inverter_errors_warnings_init(struct can1_inverter_errors_warnings_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_inverter_errors_warnings_t)); + + return 0; +} + +uint16_t can1_inverter_errors_warnings_inverter_1_errors_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_errors_warnings_inverter_1_errors_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_errors_warnings_inverter_1_errors_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_inverter_errors_warnings_inverter_1_warnings_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_errors_warnings_inverter_1_warnings_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_errors_warnings_inverter_1_warnings_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_inverter_errors_warnings_inverter_2_errors_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_errors_warnings_inverter_2_errors_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_errors_warnings_inverter_2_errors_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_inverter_errors_warnings_inverter_2_warnings_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_errors_warnings_inverter_2_warnings_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_errors_warnings_inverter_2_warnings_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_inverter_torque_actual_cw_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_actual_cw_t *src_p, + size_t size) +{ + uint16_t inverter_1_torque_actual; + uint16_t inverter_2_torque_actual; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->inverter_1_control_word, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->inverter_1_control_word, 8u, 0xffu); + inverter_1_torque_actual = (uint16_t)src_p->inverter_1_torque_actual; + dst_p[2] |= pack_left_shift_u16(inverter_1_torque_actual, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(inverter_1_torque_actual, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->inverter_2_control_word, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->inverter_2_control_word, 8u, 0xffu); + inverter_2_torque_actual = (uint16_t)src_p->inverter_2_torque_actual; + dst_p[6] |= pack_left_shift_u16(inverter_2_torque_actual, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(inverter_2_torque_actual, 8u, 0xffu); + + return (8); +} + +int can1_inverter_torque_actual_cw_unpack( + struct can1_inverter_torque_actual_cw_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t inverter_1_torque_actual; + uint16_t inverter_2_torque_actual; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->inverter_1_control_word = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->inverter_1_control_word |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + inverter_1_torque_actual = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + inverter_1_torque_actual |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->inverter_1_torque_actual = (int16_t)inverter_1_torque_actual; + dst_p->inverter_2_control_word = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->inverter_2_control_word |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + inverter_2_torque_actual = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + inverter_2_torque_actual |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + dst_p->inverter_2_torque_actual = (int16_t)inverter_2_torque_actual; + + return (0); +} + +int can1_inverter_torque_actual_cw_init(struct can1_inverter_torque_actual_cw_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_inverter_torque_actual_cw_t)); + + return 0; +} + +uint16_t can1_inverter_torque_actual_cw_inverter_1_control_word_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_torque_actual_cw_inverter_1_control_word_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_actual_cw_inverter_1_control_word_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_torque_actual_cw_inverter_1_torque_actual_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_actual_cw_inverter_1_torque_actual_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_actual_cw_inverter_1_torque_actual_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_inverter_torque_actual_cw_inverter_2_control_word_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_inverter_torque_actual_cw_inverter_2_control_word_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_actual_cw_inverter_2_control_word_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_torque_actual_cw_inverter_2_torque_actual_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_actual_cw_inverter_2_torque_actual_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_actual_cw_inverter_2_torque_actual_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int can1_inverter_temperatur_pack( + uint8_t *dst_p, + const struct can1_inverter_temperatur_t *src_p, + size_t size) +{ + uint16_t inverter_1_temp_inv; + uint16_t inverter_1_temp_mot; + uint16_t inverter_2_temp_inv; + uint16_t inverter_2_temp_mot; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + inverter_1_temp_inv = (uint16_t)src_p->inverter_1_temp_inv; + dst_p[0] |= pack_left_shift_u16(inverter_1_temp_inv, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(inverter_1_temp_inv, 8u, 0xffu); + inverter_1_temp_mot = (uint16_t)src_p->inverter_1_temp_mot; + dst_p[2] |= pack_left_shift_u16(inverter_1_temp_mot, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(inverter_1_temp_mot, 8u, 0xffu); + inverter_2_temp_inv = (uint16_t)src_p->inverter_2_temp_inv; + dst_p[4] |= pack_left_shift_u16(inverter_2_temp_inv, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(inverter_2_temp_inv, 8u, 0xffu); + inverter_2_temp_mot = (uint16_t)src_p->inverter_2_temp_mot; + dst_p[6] |= pack_left_shift_u16(inverter_2_temp_mot, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(inverter_2_temp_mot, 8u, 0xffu); + + return (8); +} + +int can1_inverter_temperatur_unpack( + struct can1_inverter_temperatur_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t inverter_1_temp_inv; + uint16_t inverter_1_temp_mot; + uint16_t inverter_2_temp_inv; + uint16_t inverter_2_temp_mot; + + if (size < 8u) { + return (-EINVAL); + } + + inverter_1_temp_inv = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + inverter_1_temp_inv |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->inverter_1_temp_inv = (int16_t)inverter_1_temp_inv; + inverter_1_temp_mot = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + inverter_1_temp_mot |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->inverter_1_temp_mot = (int16_t)inverter_1_temp_mot; + inverter_2_temp_inv = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + inverter_2_temp_inv |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->inverter_2_temp_inv = (int16_t)inverter_2_temp_inv; + inverter_2_temp_mot = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + inverter_2_temp_mot |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + dst_p->inverter_2_temp_mot = (int16_t)inverter_2_temp_mot; + + return (0); +} + +int can1_inverter_temperatur_init(struct can1_inverter_temperatur_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_inverter_temperatur_t)); + + return 0; +} + +int16_t can1_inverter_temperatur_inverter_1_temp_inv_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_temperatur_inverter_1_temp_inv_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_temperatur_inverter_1_temp_inv_is_in_range(int16_t value) +{ + return ((value >= -128) && (value <= 127)); +} + +int16_t can1_inverter_temperatur_inverter_1_temp_mot_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_temperatur_inverter_1_temp_mot_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_temperatur_inverter_1_temp_mot_is_in_range(int16_t value) +{ + return ((value >= -128) && (value <= 127)); +} + +int16_t can1_inverter_temperatur_inverter_2_temp_inv_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_temperatur_inverter_2_temp_inv_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_temperatur_inverter_2_temp_inv_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_temperatur_inverter_2_temp_mot_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_temperatur_inverter_2_temp_mot_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_temperatur_inverter_2_temp_mot_is_in_range(int16_t value) +{ + return ((value >= -128) && (value <= 127)); +} + +int can1_inverter_torque_wanted_pack( + uint8_t *dst_p, + const struct can1_inverter_torque_wanted_t *src_p, + size_t size) +{ + uint16_t inverter_1_torque_demanded; + uint16_t inverter_1_torque_desired; + uint16_t inverter_2_torque_demanded; + uint16_t inverter_2_torque_desired; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + inverter_1_torque_demanded = (uint16_t)src_p->inverter_1_torque_demanded; + dst_p[0] |= pack_left_shift_u16(inverter_1_torque_demanded, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(inverter_1_torque_demanded, 8u, 0xffu); + inverter_2_torque_demanded = (uint16_t)src_p->inverter_2_torque_demanded; + dst_p[2] |= pack_left_shift_u16(inverter_2_torque_demanded, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(inverter_2_torque_demanded, 8u, 0xffu); + inverter_1_torque_desired = (uint16_t)src_p->inverter_1_torque_desired; + dst_p[4] |= pack_left_shift_u16(inverter_1_torque_desired, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(inverter_1_torque_desired, 8u, 0xffu); + inverter_2_torque_desired = (uint16_t)src_p->inverter_2_torque_desired; + dst_p[6] |= pack_left_shift_u16(inverter_2_torque_desired, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(inverter_2_torque_desired, 8u, 0xffu); + + return (8); +} + +int can1_inverter_torque_wanted_unpack( + struct can1_inverter_torque_wanted_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t inverter_1_torque_demanded; + uint16_t inverter_1_torque_desired; + uint16_t inverter_2_torque_demanded; + uint16_t inverter_2_torque_desired; + + if (size < 8u) { + return (-EINVAL); + } + + inverter_1_torque_demanded = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + inverter_1_torque_demanded |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->inverter_1_torque_demanded = (int16_t)inverter_1_torque_demanded; + inverter_2_torque_demanded = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + inverter_2_torque_demanded |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->inverter_2_torque_demanded = (int16_t)inverter_2_torque_demanded; + inverter_1_torque_desired = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + inverter_1_torque_desired |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->inverter_1_torque_desired = (int16_t)inverter_1_torque_desired; + inverter_2_torque_desired = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + inverter_2_torque_desired |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + dst_p->inverter_2_torque_desired = (int16_t)inverter_2_torque_desired; + + return (0); +} + +int can1_inverter_torque_wanted_init(struct can1_inverter_torque_wanted_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_inverter_torque_wanted_t)); + + return 0; +} + +int16_t can1_inverter_torque_wanted_inverter_1_torque_demanded_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_wanted_inverter_1_torque_demanded_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_wanted_inverter_1_torque_demanded_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_torque_wanted_inverter_2_torque_demanded_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_wanted_inverter_2_torque_demanded_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_wanted_inverter_2_torque_demanded_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_torque_wanted_inverter_1_torque_desired_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_wanted_inverter_1_torque_desired_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_wanted_inverter_1_torque_desired_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_inverter_torque_wanted_inverter_2_torque_desired_encode(double value) +{ + return (int16_t)(value); +} + +double can1_inverter_torque_wanted_inverter_2_torque_desired_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_inverter_torque_wanted_inverter_2_torque_desired_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int can1_sdo_telemetrie_rx_node1_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->sdo_command_byte, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->sdo_od_index, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->sdo_od_index, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->sdo_od_subindex, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u32(src_p->sdo_data, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->sdo_data, 8u, 0xffu); + dst_p[6] |= pack_right_shift_u32(src_p->sdo_data, 16u, 0xffu); + dst_p[7] |= pack_right_shift_u32(src_p->sdo_data, 24u, 0xffu); + + return (8); +} + +int can1_sdo_telemetrie_rx_node1_unpack( + struct can1_sdo_telemetrie_rx_node1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->sdo_command_byte = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->sdo_od_index = unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->sdo_od_index |= unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->sdo_od_subindex = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->sdo_data = unpack_right_shift_u32(src_p[4], 0u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[5], 8u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[6], 16u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[7], 24u, 0xffu); + + return (0); +} + +int can1_sdo_telemetrie_rx_node1_init(struct can1_sdo_telemetrie_rx_node1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sdo_telemetrie_rx_node1_t)); + + return 0; +} + +uint8_t can1_sdo_telemetrie_rx_node1_sdo_command_byte_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_rx_node1_sdo_command_byte_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node1_sdo_command_byte_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_sdo_telemetrie_rx_node1_sdo_od_index_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sdo_telemetrie_rx_node1_sdo_od_index_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node1_sdo_od_index_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sdo_telemetrie_rx_node1_sdo_od_subindex_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_rx_node1_sdo_od_subindex_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node1_sdo_od_subindex_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_sdo_telemetrie_rx_node1_sdo_data_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_sdo_telemetrie_rx_node1_sdo_data_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node1_sdo_data_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_sdo_telemetrie_rx_node2_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_rx_node2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->sdo_command_byte, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->sdo_od_index, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->sdo_od_index, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->sdo_od_subindex, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u32(src_p->sdo_data, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->sdo_data, 8u, 0xffu); + dst_p[6] |= pack_right_shift_u32(src_p->sdo_data, 16u, 0xffu); + dst_p[7] |= pack_right_shift_u32(src_p->sdo_data, 24u, 0xffu); + + return (8); +} + +int can1_sdo_telemetrie_rx_node2_unpack( + struct can1_sdo_telemetrie_rx_node2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->sdo_command_byte = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->sdo_od_index = unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->sdo_od_index |= unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->sdo_od_subindex = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->sdo_data = unpack_right_shift_u32(src_p[4], 0u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[5], 8u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[6], 16u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[7], 24u, 0xffu); + + return (0); +} + +int can1_sdo_telemetrie_rx_node2_init(struct can1_sdo_telemetrie_rx_node2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sdo_telemetrie_rx_node2_t)); + + return 0; +} + +uint8_t can1_sdo_telemetrie_rx_node2_sdo_command_byte_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_rx_node2_sdo_command_byte_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node2_sdo_command_byte_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_sdo_telemetrie_rx_node2_sdo_od_index_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sdo_telemetrie_rx_node2_sdo_od_index_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node2_sdo_od_index_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sdo_telemetrie_rx_node2_sdo_od_subindex_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_rx_node2_sdo_od_subindex_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node2_sdo_od_subindex_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_sdo_telemetrie_rx_node2_sdo_data_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_sdo_telemetrie_rx_node2_sdo_data_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_rx_node2_sdo_data_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_sdo_telemetrie_tx_pack( + uint8_t *dst_p, + const struct can1_sdo_telemetrie_tx_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->sdo_command_byte, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->sdo_od_index, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->sdo_od_index, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->sdo_od_subindex, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u32(src_p->sdo_data, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->sdo_data, 8u, 0xffu); + dst_p[6] |= pack_right_shift_u32(src_p->sdo_data, 16u, 0xffu); + dst_p[7] |= pack_right_shift_u32(src_p->sdo_data, 24u, 0xffu); + + return (8); +} + +int can1_sdo_telemetrie_tx_unpack( + struct can1_sdo_telemetrie_tx_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->sdo_command_byte = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->sdo_od_index = unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->sdo_od_index |= unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->sdo_od_subindex = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->sdo_data = unpack_right_shift_u32(src_p[4], 0u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[5], 8u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[6], 16u, 0xffu); + dst_p->sdo_data |= unpack_left_shift_u32(src_p[7], 24u, 0xffu); + + return (0); +} + +int can1_sdo_telemetrie_tx_init(struct can1_sdo_telemetrie_tx_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sdo_telemetrie_tx_t)); + + return 0; +} + +uint8_t can1_sdo_telemetrie_tx_sdo_command_byte_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_tx_sdo_command_byte_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_tx_sdo_command_byte_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_sdo_telemetrie_tx_sdo_od_index_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sdo_telemetrie_tx_sdo_od_index_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_tx_sdo_od_index_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sdo_telemetrie_tx_sdo_od_subindex_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sdo_telemetrie_tx_sdo_od_subindex_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_tx_sdo_od_subindex_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_sdo_telemetrie_tx_sdo_data_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_sdo_telemetrie_tx_sdo_data_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_sdo_telemetrie_tx_sdo_data_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_laptop_sdo_node_pack( + uint8_t *dst_p, + const struct can1_laptop_sdo_node_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->node_id_sdo, 0u, 0x03u); + + return (1); +} + +int can1_laptop_sdo_node_unpack( + struct can1_laptop_sdo_node_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->node_id_sdo = unpack_right_shift_u8(src_p[0], 0u, 0x03u); + + return (0); +} + +int can1_laptop_sdo_node_init(struct can1_laptop_sdo_node_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_laptop_sdo_node_t)); + + return 0; +} + +uint8_t can1_laptop_sdo_node_node_id_sdo_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_laptop_sdo_node_node_id_sdo_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_laptop_sdo_node_node_id_sdo_is_in_range(uint8_t value) +{ + return (value <= 3u); +} + +int can1_x_sens_long_lat_pack( + uint8_t *dst_p, + const struct can1_x_sens_long_lat_t *src_p, + size_t size) +{ + uint32_t x_sens_latitude; + uint32_t x_sens_longitude; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + x_sens_latitude = (uint32_t)src_p->x_sens_latitude; + dst_p[0] |= pack_left_shift_u32(x_sens_latitude, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u32(x_sens_latitude, 8u, 0xffu); + dst_p[2] |= pack_right_shift_u32(x_sens_latitude, 16u, 0xffu); + dst_p[3] |= pack_right_shift_u32(x_sens_latitude, 24u, 0xffu); + x_sens_longitude = (uint32_t)src_p->x_sens_longitude; + dst_p[4] |= pack_left_shift_u32(x_sens_longitude, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u32(x_sens_longitude, 8u, 0xffu); + dst_p[6] |= pack_right_shift_u32(x_sens_longitude, 16u, 0xffu); + dst_p[7] |= pack_right_shift_u32(x_sens_longitude, 24u, 0xffu); + + return (8); +} + +int can1_x_sens_long_lat_unpack( + struct can1_x_sens_long_lat_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t x_sens_latitude; + uint32_t x_sens_longitude; + + if (size < 8u) { + return (-EINVAL); + } + + x_sens_latitude = unpack_right_shift_u32(src_p[0], 0u, 0xffu); + x_sens_latitude |= unpack_left_shift_u32(src_p[1], 8u, 0xffu); + x_sens_latitude |= unpack_left_shift_u32(src_p[2], 16u, 0xffu); + x_sens_latitude |= unpack_left_shift_u32(src_p[3], 24u, 0xffu); + dst_p->x_sens_latitude = (int32_t)x_sens_latitude; + x_sens_longitude = unpack_right_shift_u32(src_p[4], 0u, 0xffu); + x_sens_longitude |= unpack_left_shift_u32(src_p[5], 8u, 0xffu); + x_sens_longitude |= unpack_left_shift_u32(src_p[6], 16u, 0xffu); + x_sens_longitude |= unpack_left_shift_u32(src_p[7], 24u, 0xffu); + dst_p->x_sens_longitude = (int32_t)x_sens_longitude; + + return (0); +} + +int can1_x_sens_long_lat_init(struct can1_x_sens_long_lat_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_x_sens_long_lat_t)); + + return 0; +} + +int32_t can1_x_sens_long_lat_x_sens_latitude_encode(double value) +{ + return (int32_t)(value / 5.96046e-08); +} + +double can1_x_sens_long_lat_x_sens_latitude_decode(int32_t value) +{ + return ((double)value * 5.96046e-08); +} + +bool can1_x_sens_long_lat_x_sens_latitude_is_in_range(int32_t value) +{ + (void)value; + + return (true); +} + +int32_t can1_x_sens_long_lat_x_sens_longitude_encode(double value) +{ + return (int32_t)(value / 1.19209e-07); +} + +double can1_x_sens_long_lat_x_sens_longitude_decode(int32_t value) +{ + return ((double)value * 1.19209e-07); +} + +bool can1_x_sens_long_lat_x_sens_longitude_is_in_range(int32_t value) +{ + (void)value; + + return (true); +} + +int can1_x_sens_rateofturn_pack( + uint8_t *dst_p, + const struct can1_x_sens_rateofturn_t *src_p, + size_t size) +{ + uint16_t x_sens_gy_y; + uint16_t x_sens_gy_z; + uint16_t x_sens_gyr_x; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + x_sens_gyr_x = (uint16_t)src_p->x_sens_gyr_x; + dst_p[0] |= pack_left_shift_u16(x_sens_gyr_x, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(x_sens_gyr_x, 8u, 0xffu); + x_sens_gy_y = (uint16_t)src_p->x_sens_gy_y; + dst_p[2] |= pack_left_shift_u16(x_sens_gy_y, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(x_sens_gy_y, 8u, 0xffu); + x_sens_gy_z = (uint16_t)src_p->x_sens_gy_z; + dst_p[4] |= pack_left_shift_u16(x_sens_gy_z, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(x_sens_gy_z, 8u, 0xffu); + + return (6); +} + +int can1_x_sens_rateofturn_unpack( + struct can1_x_sens_rateofturn_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t x_sens_gy_y; + uint16_t x_sens_gy_z; + uint16_t x_sens_gyr_x; + + if (size < 6u) { + return (-EINVAL); + } + + x_sens_gyr_x = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + x_sens_gyr_x |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->x_sens_gyr_x = (int16_t)x_sens_gyr_x; + x_sens_gy_y = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + x_sens_gy_y |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->x_sens_gy_y = (int16_t)x_sens_gy_y; + x_sens_gy_z = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + x_sens_gy_z |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->x_sens_gy_z = (int16_t)x_sens_gy_z; + + return (0); +} + +int can1_x_sens_rateofturn_init(struct can1_x_sens_rateofturn_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_x_sens_rateofturn_t)); + + return 0; +} + +int16_t can1_x_sens_rateofturn_x_sens_gyr_x_encode(double value) +{ + return (int16_t)(value / 0.00195313); +} + +double can1_x_sens_rateofturn_x_sens_gyr_x_decode(int16_t value) +{ + return ((double)value * 0.00195313); +} + +bool can1_x_sens_rateofturn_x_sens_gyr_x_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_rateofturn_x_sens_gy_y_encode(double value) +{ + return (int16_t)(value / 0.00195313); +} + +double can1_x_sens_rateofturn_x_sens_gy_y_decode(int16_t value) +{ + return ((double)value * 0.00195313); +} + +bool can1_x_sens_rateofturn_x_sens_gy_y_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_rateofturn_x_sens_gy_z_encode(double value) +{ + return (int16_t)(value / 0.00195313); +} + +double can1_x_sens_rateofturn_x_sens_gy_z_decode(int16_t value) +{ + return ((double)value * 0.00195313); +} + +bool can1_x_sens_rateofturn_x_sens_gy_z_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int can1_x_sens_acceleration_pack( + uint8_t *dst_p, + const struct can1_x_sens_acceleration_t *src_p, + size_t size) +{ + uint16_t x_sens_acc_x; + uint16_t x_sens_acc_y; + uint16_t x_sens_acc_z; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + x_sens_acc_x = (uint16_t)src_p->x_sens_acc_x; + dst_p[0] |= pack_left_shift_u16(x_sens_acc_x, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(x_sens_acc_x, 8u, 0xffu); + x_sens_acc_y = (uint16_t)src_p->x_sens_acc_y; + dst_p[2] |= pack_left_shift_u16(x_sens_acc_y, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(x_sens_acc_y, 8u, 0xffu); + x_sens_acc_z = (uint16_t)src_p->x_sens_acc_z; + dst_p[4] |= pack_left_shift_u16(x_sens_acc_z, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(x_sens_acc_z, 8u, 0xffu); + + return (6); +} + +int can1_x_sens_acceleration_unpack( + struct can1_x_sens_acceleration_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t x_sens_acc_x; + uint16_t x_sens_acc_y; + uint16_t x_sens_acc_z; + + if (size < 6u) { + return (-EINVAL); + } + + x_sens_acc_x = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + x_sens_acc_x |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->x_sens_acc_x = (int16_t)x_sens_acc_x; + x_sens_acc_y = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + x_sens_acc_y |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->x_sens_acc_y = (int16_t)x_sens_acc_y; + x_sens_acc_z = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + x_sens_acc_z |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->x_sens_acc_z = (int16_t)x_sens_acc_z; + + return (0); +} + +int can1_x_sens_acceleration_init(struct can1_x_sens_acceleration_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_x_sens_acceleration_t)); + + return 0; +} + +int16_t can1_x_sens_acceleration_x_sens_acc_x_encode(double value) +{ + return (int16_t)(value / 0.00390625); +} + +double can1_x_sens_acceleration_x_sens_acc_x_decode(int16_t value) +{ + return ((double)value * 0.00390625); +} + +bool can1_x_sens_acceleration_x_sens_acc_x_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_acceleration_x_sens_acc_y_encode(double value) +{ + return (int16_t)(value / 0.00390625); +} + +double can1_x_sens_acceleration_x_sens_acc_y_decode(int16_t value) +{ + return ((double)value * 0.00390625); +} + +bool can1_x_sens_acceleration_x_sens_acc_y_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_acceleration_x_sens_acc_z_encode(double value) +{ + return (int16_t)(value / 0.00390625); +} + +double can1_x_sens_acceleration_x_sens_acc_z_decode(int16_t value) +{ + return ((double)value * 0.00390625); +} + +bool can1_x_sens_acceleration_x_sens_acc_z_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int can1_x_sens_velocity_pack( + uint8_t *dst_p, + const struct can1_x_sens_velocity_t *src_p, + size_t size) +{ + uint16_t x_sens_vel_x; + uint16_t x_sens_vel_y; + uint16_t x_sens_vel_z; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + x_sens_vel_x = (uint16_t)src_p->x_sens_vel_x; + dst_p[0] |= pack_left_shift_u16(x_sens_vel_x, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(x_sens_vel_x, 8u, 0xffu); + x_sens_vel_y = (uint16_t)src_p->x_sens_vel_y; + dst_p[2] |= pack_left_shift_u16(x_sens_vel_y, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(x_sens_vel_y, 8u, 0xffu); + x_sens_vel_z = (uint16_t)src_p->x_sens_vel_z; + dst_p[4] |= pack_left_shift_u16(x_sens_vel_z, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(x_sens_vel_z, 8u, 0xffu); + + return (6); +} + +int can1_x_sens_velocity_unpack( + struct can1_x_sens_velocity_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t x_sens_vel_x; + uint16_t x_sens_vel_y; + uint16_t x_sens_vel_z; + + if (size < 6u) { + return (-EINVAL); + } + + x_sens_vel_x = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + x_sens_vel_x |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->x_sens_vel_x = (int16_t)x_sens_vel_x; + x_sens_vel_y = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + x_sens_vel_y |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->x_sens_vel_y = (int16_t)x_sens_vel_y; + x_sens_vel_z = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + x_sens_vel_z |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->x_sens_vel_z = (int16_t)x_sens_vel_z; + + return (0); +} + +int can1_x_sens_velocity_init(struct can1_x_sens_velocity_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_x_sens_velocity_t)); + + return 0; +} + +int16_t can1_x_sens_velocity_x_sens_vel_x_encode(double value) +{ + return (int16_t)(value / 0.015625); +} + +double can1_x_sens_velocity_x_sens_vel_x_decode(int16_t value) +{ + return ((double)value * 0.015625); +} + +bool can1_x_sens_velocity_x_sens_vel_x_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_velocity_x_sens_vel_y_encode(double value) +{ + return (int16_t)(value / 0.015625); +} + +double can1_x_sens_velocity_x_sens_vel_y_decode(int16_t value) +{ + return ((double)value * 0.015625); +} + +bool can1_x_sens_velocity_x_sens_vel_y_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_x_sens_velocity_x_sens_vel_z_encode(double value) +{ + return (int16_t)(value / 0.015625); +} + +double can1_x_sens_velocity_x_sens_vel_z_decode(int16_t value) +{ + return ((double)value * 0.015625); +} + +bool can1_x_sens_velocity_x_sens_vel_z_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int can1_telemetrie_pack( + uint8_t *dst_p, + const struct can1_telemetrie_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->ini_check_error_state, 0u, 0x0fu); + dst_p[0] |= pack_left_shift_u8(src_p->powermap, 4u, 0x70u); + dst_p[0] |= pack_left_shift_u8(src_p->apps_ok, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->brake_ok, 0u, 0x01u); + dst_p[1] |= pack_left_shift_u8(src_p->allow_torque, 1u, 0x02u); + dst_p[1] |= pack_left_shift_u8(src_p->asp_ok, 2u, 0x04u); + dst_p[1] |= pack_left_shift_u8(src_p->pressure_sensor_ok, 3u, 0x08u); + dst_p[1] |= pack_left_shift_u8(src_p->torque_vectoring_on, 4u, 0x10u); + dst_p[1] |= pack_left_shift_u8(src_p->reku_on, 5u, 0x20u); + dst_p[1] |= pack_left_shift_u8(src_p->traction_control_on, 6u, 0x40u); + dst_p[1] |= pack_left_shift_u8(src_p->ts_deactivate, 7u, 0x80u); + dst_p[2] |= pack_left_shift_u8(src_p->torque_limit, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->power_limit, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->torque_limit_dynamisch, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u8(src_p->torque_ohne_limit_l, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->torque_ohne_limit_r, 0u, 0xffu); + + return (7); +} + +int can1_telemetrie_unpack( + struct can1_telemetrie_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->ini_check_error_state = unpack_right_shift_u8(src_p[0], 0u, 0x0fu); + dst_p->powermap = unpack_right_shift_u8(src_p[0], 4u, 0x70u); + dst_p->apps_ok = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->brake_ok = unpack_right_shift_u8(src_p[1], 0u, 0x01u); + dst_p->allow_torque = unpack_right_shift_u8(src_p[1], 1u, 0x02u); + dst_p->asp_ok = unpack_right_shift_u8(src_p[1], 2u, 0x04u); + dst_p->pressure_sensor_ok = unpack_right_shift_u8(src_p[1], 3u, 0x08u); + dst_p->torque_vectoring_on = unpack_right_shift_u8(src_p[1], 4u, 0x10u); + dst_p->reku_on = unpack_right_shift_u8(src_p[1], 5u, 0x20u); + dst_p->traction_control_on = unpack_right_shift_u8(src_p[1], 6u, 0x40u); + dst_p->ts_deactivate = unpack_right_shift_u8(src_p[1], 7u, 0x80u); + dst_p->torque_limit = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->power_limit = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->torque_limit_dynamisch = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->torque_ohne_limit_l = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->torque_ohne_limit_r = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_telemetrie_init(struct can1_telemetrie_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_telemetrie_t)); + + return 0; +} + +uint8_t can1_telemetrie_ini_check_error_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_ini_check_error_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_ini_check_error_state_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +uint8_t can1_telemetrie_powermap_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_powermap_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_powermap_is_in_range(uint8_t value) +{ + return (value <= 7u); +} + +uint8_t can1_telemetrie_apps_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_apps_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_apps_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_brake_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_brake_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_brake_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_allow_torque_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_allow_torque_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_allow_torque_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_asp_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_asp_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_asp_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_pressure_sensor_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_pressure_sensor_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_pressure_sensor_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_torque_vectoring_on_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_torque_vectoring_on_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_torque_vectoring_on_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_reku_on_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_reku_on_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_reku_on_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_traction_control_on_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_traction_control_on_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_traction_control_on_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_ts_deactivate_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_ts_deactivate_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_ts_deactivate_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_telemetrie_torque_limit_encode(double value) +{ + return (uint8_t)(value / 10.0); +} + +double can1_telemetrie_torque_limit_decode(uint8_t value) +{ + return ((double)value * 10.0); +} + +bool can1_telemetrie_torque_limit_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_telemetrie_power_limit_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_telemetrie_power_limit_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_telemetrie_power_limit_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_telemetrie_torque_limit_dynamisch_encode(double value) +{ + return (uint8_t)(value / 10.0); +} + +double can1_telemetrie_torque_limit_dynamisch_decode(uint8_t value) +{ + return ((double)value * 10.0); +} + +bool can1_telemetrie_torque_limit_dynamisch_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_telemetrie_torque_ohne_limit_l_encode(double value) +{ + return (uint8_t)(value / 10.0); +} + +double can1_telemetrie_torque_ohne_limit_l_decode(uint8_t value) +{ + return ((double)value * 10.0); +} + +bool can1_telemetrie_torque_ohne_limit_l_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_telemetrie_torque_ohne_limit_r_encode(double value) +{ + return (uint8_t)(value / 10.0); +} + +double can1_telemetrie_torque_ohne_limit_r_decode(uint8_t value) +{ + return ((double)value * 10.0); +} + +bool can1_telemetrie_torque_ohne_limit_r_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_override_powermap_pack( + uint8_t *dst_p, + const struct can1_override_powermap_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->laptopp_power_map, 0u, 0x07u); + dst_p[0] |= pack_left_shift_u8(src_p->laptop_reku, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->laptop_tc, 4u, 0x10u); + dst_p[0] |= pack_left_shift_u8(src_p->laptop_tv, 5u, 0x20u); + dst_p[1] |= pack_left_shift_u8(src_p->laptop_slipref, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->laptop_tc_i, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->laptop_tc_i, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->laptop_tc_p, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->laptop_tc_p, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->laptop_tc_mumax, 0u, 0xffu); + + return (8); +} + +int can1_override_powermap_unpack( + struct can1_override_powermap_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->laptopp_power_map = unpack_right_shift_u8(src_p[0], 0u, 0x07u); + dst_p->laptop_reku = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->laptop_tc = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + dst_p->laptop_tv = unpack_right_shift_u8(src_p[0], 5u, 0x20u); + dst_p->laptop_slipref = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->laptop_tc_i = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->laptop_tc_i |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->laptop_tc_p = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->laptop_tc_p |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->laptop_tc_mumax = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_override_powermap_init(struct can1_override_powermap_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_override_powermap_t)); + + return 0; +} + +uint8_t can1_override_powermap_laptopp_power_map_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_powermap_laptopp_power_map_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_powermap_laptopp_power_map_is_in_range(uint8_t value) +{ + return (value <= 7u); +} + +uint8_t can1_override_powermap_laptop_reku_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_powermap_laptop_reku_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_powermap_laptop_reku_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_powermap_laptop_tc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_powermap_laptop_tc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_powermap_laptop_tc_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_powermap_laptop_tv_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_powermap_laptop_tv_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_powermap_laptop_tv_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_powermap_laptop_slipref_encode(double value) +{ + return (uint8_t)(value / 0.01); +} + +double can1_override_powermap_laptop_slipref_decode(uint8_t value) +{ + return ((double)value * 0.01); +} + +bool can1_override_powermap_laptop_slipref_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_override_powermap_laptop_tc_i_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_override_powermap_laptop_tc_i_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_override_powermap_laptop_tc_i_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_override_powermap_laptop_tc_p_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_override_powermap_laptop_tc_p_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_override_powermap_laptop_tc_p_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_override_powermap_laptop_tc_mumax_encode(double value) +{ + return (uint8_t)((value - 1.0) / 0.01); +} + +double can1_override_powermap_laptop_tc_mumax_decode(uint8_t value) +{ + return (((double)value * 0.01) + 1.0); +} + +bool can1_override_powermap_laptop_tc_mumax_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_override_laptop_2_pack( + uint8_t *dst_p, + const struct can1_override_laptop_2_t *src_p, + size_t size) +{ + if (size < 5u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 5); + + dst_p[0] |= pack_left_shift_u8(src_p->as_mission, 0u, 0x07u); + dst_p[0] |= pack_left_shift_u8(src_p->as_state, 3u, 0x38u); + dst_p[1] |= pack_left_shift_u16(src_p->manual_input_torque, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->manual_input_torque, 8u, 0x0fu); + dst_p[3] |= pack_left_shift_u8(src_p->laptop_powerlimit, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->laptop_torque_lim, 0u, 0xffu); + + return (5); +} + +int can1_override_laptop_2_unpack( + struct can1_override_laptop_2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 5u) { + return (-EINVAL); + } + + dst_p->as_mission = unpack_right_shift_u8(src_p[0], 0u, 0x07u); + dst_p->as_state = unpack_right_shift_u8(src_p[0], 3u, 0x38u); + dst_p->manual_input_torque = unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->manual_input_torque |= unpack_left_shift_u16(src_p[2], 8u, 0x0fu); + dst_p->laptop_powerlimit = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->laptop_torque_lim = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + + return (0); +} + +int can1_override_laptop_2_init(struct can1_override_laptop_2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_override_laptop_2_t)); + + return 0; +} + +uint8_t can1_override_laptop_2_as_mission_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_2_as_mission_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_2_as_mission_is_in_range(uint8_t value) +{ + return (value <= 7u); +} + +uint8_t can1_override_laptop_2_as_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_2_as_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_2_as_state_is_in_range(uint8_t value) +{ + return (value <= 7u); +} + +uint16_t can1_override_laptop_2_manual_input_torque_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_override_laptop_2_manual_input_torque_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_2_manual_input_torque_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint8_t can1_override_laptop_2_laptop_powerlimit_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_2_laptop_powerlimit_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_2_laptop_powerlimit_is_in_range(uint8_t value) +{ + return (value <= 80u); +} + +uint8_t can1_override_laptop_2_laptop_torque_lim_encode(double value) +{ + return (uint8_t)(value / 10.0); +} + +double can1_override_laptop_2_laptop_torque_lim_decode(uint8_t value) +{ + return ((double)value * 10.0); +} + +bool can1_override_laptop_2_laptop_torque_lim_is_in_range(uint8_t value) +{ + return (value <= 150u); +} + +int can1_override_epsc_cooling_pack( + uint8_t *dst_p, + const struct can1_override_epsc_cooling_t *src_p, + size_t size) +{ + uint16_t epsc_manual_angle; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + epsc_manual_angle = (uint16_t)src_p->epsc_manual_angle; + dst_p[0] |= pack_left_shift_u16(epsc_manual_angle, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(epsc_manual_angle, 8u, 0x03u); + dst_p[1] |= pack_left_shift_u8(src_p->epsc_mode, 2u, 0x0cu); + dst_p[1] |= pack_left_shift_u8(src_p->ac_cooling_enable, 4u, 0x10u); + dst_p[1] |= pack_left_shift_u8(src_p->ts_cooling_enable, 5u, 0x20u); + dst_p[2] |= pack_left_shift_u8(src_p->ac_cooling_pwm, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->ts_cooling_pwm, 0u, 0xffu); + + return (8); +} + +int can1_override_epsc_cooling_unpack( + struct can1_override_epsc_cooling_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t epsc_manual_angle; + + if (size < 8u) { + return (-EINVAL); + } + + epsc_manual_angle = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + epsc_manual_angle |= unpack_left_shift_u16(src_p[1], 8u, 0x03u); + + if ((epsc_manual_angle & (1u << 9)) != 0u) { + epsc_manual_angle |= 0xfc00u; + } + + dst_p->epsc_manual_angle = (int16_t)epsc_manual_angle; + dst_p->epsc_mode = unpack_right_shift_u8(src_p[1], 2u, 0x0cu); + dst_p->ac_cooling_enable = unpack_right_shift_u8(src_p[1], 4u, 0x10u); + dst_p->ts_cooling_enable = unpack_right_shift_u8(src_p[1], 5u, 0x20u); + dst_p->ac_cooling_pwm = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ts_cooling_pwm = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + + return (0); +} + +int can1_override_epsc_cooling_init(struct can1_override_epsc_cooling_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_override_epsc_cooling_t)); + + return 0; +} + +int16_t can1_override_epsc_cooling_epsc_manual_angle_encode(double value) +{ + return (int16_t)(value); +} + +double can1_override_epsc_cooling_epsc_manual_angle_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_override_epsc_cooling_epsc_manual_angle_is_in_range(int16_t value) +{ + return ((value >= -512) && (value <= 511)); +} + +uint8_t can1_override_epsc_cooling_epsc_mode_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_epsc_cooling_epsc_mode_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_epsc_cooling_epsc_mode_is_in_range(uint8_t value) +{ + return (value <= 3u); +} + +uint8_t can1_override_epsc_cooling_ac_cooling_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_epsc_cooling_ac_cooling_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_epsc_cooling_ac_cooling_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_epsc_cooling_ts_cooling_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_epsc_cooling_ts_cooling_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_epsc_cooling_ts_cooling_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_epsc_cooling_ac_cooling_pwm_encode(double value) +{ + return (uint8_t)(value / 0.005); +} + +double can1_override_epsc_cooling_ac_cooling_pwm_decode(uint8_t value) +{ + return ((double)value * 0.005); +} + +bool can1_override_epsc_cooling_ac_cooling_pwm_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_override_epsc_cooling_ts_cooling_pwm_encode(double value) +{ + return (uint8_t)(value / 0.005); +} + +double can1_override_epsc_cooling_ts_cooling_pwm_decode(uint8_t value) +{ + return ((double)value * 0.005); +} + +bool can1_override_epsc_cooling_ts_cooling_pwm_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_override_laptop_pack( + uint8_t *dst_p, + const struct can1_override_laptop_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u8(src_p->fake_r2_d, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->fake_soundbox_emergency, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->fake_soundbox_r2_d, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->fake_ts_active, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->override_apps, 4u, 0x10u); + dst_p[0] |= pack_left_shift_u8(src_p->override_as_mission, 5u, 0x20u); + dst_p[0] |= pack_left_shift_u8(src_p->override_as_state, 6u, 0x40u); + dst_p[0] |= pack_left_shift_u8(src_p->override_epsc_mode, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_ac_cooling_enable, 0u, 0x01u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_acu_enable, 1u, 0x02u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_drs_enable, 2u, 0x04u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_epsc_enable, 3u, 0x08u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_heartbeat, 4u, 0x10u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_lidar_enable, 5u, 0x20u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_pn_v1_enable, 6u, 0x40u); + dst_p[1] |= pack_left_shift_u8(src_p->override_pdu_pn_v2_enable, 7u, 0x80u); + dst_p[2] |= pack_left_shift_u8(src_p->override_pdu_ts_cooling_enable, 0u, 0x01u); + dst_p[2] |= pack_left_shift_u8(src_p->override_power_map, 1u, 0x02u); + dst_p[2] |= pack_left_shift_u8(src_p->override_tc_parameter, 2u, 0x04u); + dst_p[2] |= pack_left_shift_u8(src_p->override_torque_input, 3u, 0x08u); + + return (3); +} + +int can1_override_laptop_unpack( + struct can1_override_laptop_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->fake_r2_d = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->fake_soundbox_emergency = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->fake_soundbox_r2_d = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->fake_ts_active = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->override_apps = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + dst_p->override_as_mission = unpack_right_shift_u8(src_p[0], 5u, 0x20u); + dst_p->override_as_state = unpack_right_shift_u8(src_p[0], 6u, 0x40u); + dst_p->override_epsc_mode = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->override_pdu_ac_cooling_enable = unpack_right_shift_u8(src_p[1], 0u, 0x01u); + dst_p->override_pdu_acu_enable = unpack_right_shift_u8(src_p[1], 1u, 0x02u); + dst_p->override_pdu_drs_enable = unpack_right_shift_u8(src_p[1], 2u, 0x04u); + dst_p->override_pdu_epsc_enable = unpack_right_shift_u8(src_p[1], 3u, 0x08u); + dst_p->override_pdu_heartbeat = unpack_right_shift_u8(src_p[1], 4u, 0x10u); + dst_p->override_pdu_lidar_enable = unpack_right_shift_u8(src_p[1], 5u, 0x20u); + dst_p->override_pdu_pn_v1_enable = unpack_right_shift_u8(src_p[1], 6u, 0x40u); + dst_p->override_pdu_pn_v2_enable = unpack_right_shift_u8(src_p[1], 7u, 0x80u); + dst_p->override_pdu_ts_cooling_enable = unpack_right_shift_u8(src_p[2], 0u, 0x01u); + dst_p->override_power_map = unpack_right_shift_u8(src_p[2], 1u, 0x02u); + dst_p->override_tc_parameter = unpack_right_shift_u8(src_p[2], 2u, 0x04u); + dst_p->override_torque_input = unpack_right_shift_u8(src_p[2], 3u, 0x08u); + + return (0); +} + +int can1_override_laptop_init(struct can1_override_laptop_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_override_laptop_t)); + + return 0; +} + +uint8_t can1_override_laptop_fake_r2_d_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_fake_r2_d_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_fake_r2_d_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_fake_soundbox_emergency_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_fake_soundbox_emergency_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_fake_soundbox_emergency_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_fake_soundbox_r2_d_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_fake_soundbox_r2_d_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_fake_soundbox_r2_d_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_fake_ts_active_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_fake_ts_active_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_fake_ts_active_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_apps_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_apps_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_apps_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_as_mission_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_as_mission_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_as_mission_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_as_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_as_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_as_state_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_epsc_mode_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_epsc_mode_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_epsc_mode_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_ac_cooling_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_ac_cooling_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_ac_cooling_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_acu_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_acu_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_acu_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_drs_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_drs_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_drs_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_epsc_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_epsc_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_epsc_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_heartbeat_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_heartbeat_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_heartbeat_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_lidar_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_lidar_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_lidar_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_pn_v1_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_pn_v1_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_pn_v1_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_pn_v2_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_pn_v2_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_pn_v2_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_pdu_ts_cooling_enable_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_pdu_ts_cooling_enable_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_pdu_ts_cooling_enable_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_power_map_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_power_map_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_power_map_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_tc_parameter_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_tc_parameter_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_tc_parameter_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_override_laptop_override_torque_input_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_override_laptop_override_torque_input_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_override_laptop_override_torque_input_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +int can1_apps_override_pack( + uint8_t *dst_p, + const struct can1_apps_override_t *src_p, + size_t size) +{ + if (size < 5u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 5); + + dst_p[0] |= pack_left_shift_u16(src_p->apps_0_max, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->apps_0_max, 8u, 0x03u); + dst_p[1] |= pack_left_shift_u16(src_p->apps_0_min, 2u, 0xfcu); + dst_p[2] |= pack_right_shift_u16(src_p->apps_0_min, 6u, 0x0fu); + dst_p[2] |= pack_left_shift_u16(src_p->apps_1_max, 4u, 0xf0u); + dst_p[3] |= pack_right_shift_u16(src_p->apps_1_max, 4u, 0x3fu); + dst_p[3] |= pack_left_shift_u16(src_p->apps_1_min, 6u, 0xc0u); + dst_p[4] |= pack_right_shift_u16(src_p->apps_1_min, 2u, 0xffu); + + return (5); +} + +int can1_apps_override_unpack( + struct can1_apps_override_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 5u) { + return (-EINVAL); + } + + dst_p->apps_0_max = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->apps_0_max |= unpack_left_shift_u16(src_p[1], 8u, 0x03u); + dst_p->apps_0_min = unpack_right_shift_u16(src_p[1], 2u, 0xfcu); + dst_p->apps_0_min |= unpack_left_shift_u16(src_p[2], 6u, 0x0fu); + dst_p->apps_1_max = unpack_right_shift_u16(src_p[2], 4u, 0xf0u); + dst_p->apps_1_max |= unpack_left_shift_u16(src_p[3], 4u, 0x3fu); + dst_p->apps_1_min = unpack_right_shift_u16(src_p[3], 6u, 0xc0u); + dst_p->apps_1_min |= unpack_left_shift_u16(src_p[4], 2u, 0xffu); + + return (0); +} + +int can1_apps_override_init(struct can1_apps_override_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_apps_override_t)); + + return 0; +} + +uint16_t can1_apps_override_apps_0_max_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_apps_override_apps_0_max_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_apps_override_apps_0_max_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_apps_override_apps_0_min_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_apps_override_apps_0_min_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_apps_override_apps_0_min_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_apps_override_apps_1_max_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_apps_override_apps_1_max_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_apps_override_apps_1_max_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_apps_override_apps_1_min_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_apps_override_apps_1_min_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_apps_override_apps_1_min_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +int can1_ftcu_damper_pack( + uint8_t *dst_p, + const struct can1_ftcu_damper_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->ftcu_damper_fl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->ftcu_damper_fl, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_damper_fr, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_damper_fr, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->ftcu_damper_rl, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->ftcu_damper_rl, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->ftcu_damper_rr, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->ftcu_damper_rr, 8u, 0xffu); + + return (8); +} + +int can1_ftcu_damper_unpack( + struct can1_ftcu_damper_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_damper_fl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->ftcu_damper_fl |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->ftcu_damper_fr = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->ftcu_damper_fr |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->ftcu_damper_rl = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->ftcu_damper_rl |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->ftcu_damper_rr = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->ftcu_damper_rr |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_ftcu_damper_init(struct can1_ftcu_damper_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_damper_t)); + + return 0; +} + +uint16_t can1_ftcu_damper_ftcu_damper_fl_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_damper_ftcu_damper_fl_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_damper_ftcu_damper_fl_is_in_range(uint16_t value) +{ + return (value <= 7500u); +} + +uint16_t can1_ftcu_damper_ftcu_damper_fr_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_damper_ftcu_damper_fr_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_damper_ftcu_damper_fr_is_in_range(uint16_t value) +{ + return (value <= 7500u); +} + +uint16_t can1_ftcu_damper_ftcu_damper_rl_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_damper_ftcu_damper_rl_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_damper_ftcu_damper_rl_is_in_range(uint16_t value) +{ + return (value <= 7500u); +} + +uint16_t can1_ftcu_damper_ftcu_damper_rr_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_damper_ftcu_damper_rr_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_damper_ftcu_damper_rr_is_in_range(uint16_t value) +{ + return (value <= 7500u); +} + +int can1_ftcu_param_confirm_pack( + uint8_t *dst_p, + const struct can1_ftcu_param_confirm_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->ftcu_param_confirm, 0u, 0xffu); + + return (1); +} + +int can1_ftcu_param_confirm_unpack( + struct can1_ftcu_param_confirm_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->ftcu_param_confirm = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + + return (0); +} + +int can1_ftcu_param_confirm_init(struct can1_ftcu_param_confirm_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_param_confirm_t)); + + return 0; +} + +uint8_t can1_ftcu_param_confirm_ftcu_param_confirm_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ftcu_param_confirm_ftcu_param_confirm_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ftcu_param_confirm_ftcu_param_confirm_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_sensornode_f_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_10_hz_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u8(src_p->ls_l, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->ls_r, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_m_pre_bots, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_m_post_ins, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_m_post_bspd, 4u, 0x10u); + dst_p[1] |= pack_left_shift_u8(src_p->bdts_fl, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->bdts_fr, 0u, 0xffu); + + return (3); +} + +int can1_sensornode_f_10_hz_unpack( + struct can1_sensornode_f_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->ls_l = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->ls_r = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->sdc_m_pre_bots = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->sdc_m_post_ins = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->sdc_m_post_bspd = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + dst_p->bdts_fl = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->bdts_fr = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + + return (0); +} + +int can1_sensornode_f_10_hz_init(struct can1_sensornode_f_10_hz_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_f_10_hz_t)); + + return 0; +} + +uint8_t can1_sensornode_f_10_hz_ls_l_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_10_hz_ls_l_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_10_hz_ls_l_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_f_10_hz_ls_r_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_10_hz_ls_r_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_10_hz_ls_r_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_f_10_hz_sdc_m_pre_bots_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_10_hz_sdc_m_pre_bots_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_10_hz_sdc_m_pre_bots_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_f_10_hz_sdc_m_post_ins_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_10_hz_sdc_m_post_ins_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_10_hz_sdc_m_post_ins_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_f_10_hz_sdc_m_post_bspd_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_10_hz_sdc_m_post_bspd_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_10_hz_sdc_m_post_bspd_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_f_10_hz_bdts_fl_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_f_10_hz_bdts_fl_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_f_10_hz_bdts_fl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_f_10_hz_bdts_fr_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_f_10_hz_bdts_fr_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_f_10_hz_bdts_fr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_sensornode_f_100_hz_1_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_1_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->apps_1, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->apps_2, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->bp_f, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->sas, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->sas, 8u, 0x0fu); + dst_p[5] |= pack_left_shift_u8(src_p->wss_fl, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->wss_fr, 0u, 0xffu); + + return (7); +} + +int can1_sensornode_f_100_hz_1_unpack( + struct can1_sensornode_f_100_hz_1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->apps_1 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->apps_2 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->bp_f = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->sas = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->sas |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + dst_p->wss_fl = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->wss_fr = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_sensornode_f_100_hz_1_init(struct can1_sensornode_f_100_hz_1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_f_100_hz_1_t)); + + return 0; +} + +uint8_t can1_sensornode_f_100_hz_1_apps_1_encode(double value) +{ + return (uint8_t)(value / 0.00392157); +} + +double can1_sensornode_f_100_hz_1_apps_1_decode(uint8_t value) +{ + return ((double)value * 0.00392157); +} + +bool can1_sensornode_f_100_hz_1_apps_1_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_f_100_hz_1_apps_2_encode(double value) +{ + return (uint8_t)(value / 0.00392157); +} + +double can1_sensornode_f_100_hz_1_apps_2_decode(uint8_t value) +{ + return ((double)value * 0.00392157); +} + +bool can1_sensornode_f_100_hz_1_apps_2_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_f_100_hz_1_bp_f_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_f_100_hz_1_bp_f_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_f_100_hz_1_bp_f_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_sensornode_f_100_hz_1_sas_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_f_100_hz_1_sas_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_100_hz_1_sas_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint8_t can1_sensornode_f_100_hz_1_wss_fl_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_100_hz_1_wss_fl_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_100_hz_1_wss_fl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_f_100_hz_1_wss_fr_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_f_100_hz_1_wss_fr_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_100_hz_1_wss_fr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_sensornode_f_100_hz_2_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_100_hz_2_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u16(src_p->ds_fl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->ds_fl, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->ds_fr, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->ds_fr, 4u, 0xffu); + + return (3); +} + +int can1_sensornode_f_100_hz_2_unpack( + struct can1_sensornode_f_100_hz_2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->ds_fl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->ds_fl |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->ds_fr = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->ds_fr |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + + return (0); +} + +int can1_sensornode_f_100_hz_2_init(struct can1_sensornode_f_100_hz_2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_f_100_hz_2_t)); + + return 0; +} + +uint16_t can1_sensornode_f_100_hz_2_ds_fl_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_f_100_hz_2_ds_fl_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_100_hz_2_ds_fl_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_sensornode_f_100_hz_2_ds_fr_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_f_100_hz_2_ds_fr_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_100_hz_2_ds_fr_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +int can1_sensornode_f_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_f_1k_hz_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u16(src_p->sls_fl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->sls_fl, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->sls_fr, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->sls_fr, 4u, 0xffu); + + return (3); +} + +int can1_sensornode_f_1k_hz_unpack( + struct can1_sensornode_f_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->sls_fl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->sls_fl |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->sls_fr = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->sls_fr |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + + return (0); +} + +int can1_sensornode_f_1k_hz_init(struct can1_sensornode_f_1k_hz_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_f_1k_hz_t)); + + return 0; +} + +uint16_t can1_sensornode_f_1k_hz_sls_fl_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_f_1k_hz_sls_fl_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_1k_hz_sls_fl_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_sensornode_f_1k_hz_sls_fr_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_f_1k_hz_sls_fr_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_f_1k_hz_sls_fr_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +int can1_sensornode_r_10_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_10_hz_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->ext_ts_on, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_m_pre_tsms, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_m_post_tsms, 2u, 0x04u); + dst_p[1] |= pack_left_shift_u8(src_p->bdts_rl, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->bdts_rr, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->wt_bat, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->wt_dt, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u8(src_p->wp_bat, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->wp_dt, 0u, 0xffu); + + return (7); +} + +int can1_sensornode_r_10_hz_unpack( + struct can1_sensornode_r_10_hz_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->ext_ts_on = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->sdc_m_pre_tsms = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->sdc_m_post_tsms = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->bdts_rl = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->bdts_rr = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->wt_bat = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->wt_dt = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->wp_bat = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->wp_dt = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_sensornode_r_10_hz_init(struct can1_sensornode_r_10_hz_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_r_10_hz_t)); + + return 0; +} + +uint8_t can1_sensornode_r_10_hz_ext_ts_on_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_ext_ts_on_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_ext_ts_on_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_r_10_hz_sdc_m_pre_tsms_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_sdc_m_pre_tsms_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_sdc_m_pre_tsms_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_r_10_hz_sdc_m_post_tsms_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_sdc_m_post_tsms_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_sdc_m_post_tsms_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_sensornode_r_10_hz_bdts_rl_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_r_10_hz_bdts_rl_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_r_10_hz_bdts_rl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_10_hz_bdts_rr_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_r_10_hz_bdts_rr_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_r_10_hz_bdts_rr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_10_hz_wt_bat_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_wt_bat_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_wt_bat_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_10_hz_wt_dt_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_wt_dt_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_wt_dt_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_10_hz_wp_bat_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_wp_bat_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_wp_bat_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_10_hz_wp_dt_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_10_hz_wp_dt_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_10_hz_wp_dt_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_sensornode_r_100_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_100_hz_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ebs_aps_1, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->ebs_aps_2, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->bp_r, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->wss_rl, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->wss_rr, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ds_rl, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ds_rl, 8u, 0x0fu); + dst_p[6] |= pack_left_shift_u16(src_p->ds_rr, 4u, 0xf0u); + dst_p[7] |= pack_right_shift_u16(src_p->ds_rr, 4u, 0xffu); + + return (8); +} + +int can1_sensornode_r_100_hz_unpack( + struct can1_sensornode_r_100_hz_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ebs_aps_1 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ebs_aps_2 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->bp_r = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->wss_rl = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->wss_rr = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ds_rl = unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ds_rl |= unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + dst_p->ds_rr = unpack_right_shift_u16(src_p[6], 4u, 0xf0u); + dst_p->ds_rr |= unpack_left_shift_u16(src_p[7], 4u, 0xffu); + + return (0); +} + +int can1_sensornode_r_100_hz_init(struct can1_sensornode_r_100_hz_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_r_100_hz_t)); + + return 0; +} + +uint8_t can1_sensornode_r_100_hz_ebs_aps_1_encode(double value) +{ + return (uint8_t)(value / 0.1); +} + +double can1_sensornode_r_100_hz_ebs_aps_1_decode(uint8_t value) +{ + return ((double)value * 0.1); +} + +bool can1_sensornode_r_100_hz_ebs_aps_1_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_100_hz_ebs_aps_2_encode(double value) +{ + return (uint8_t)(value / 0.1); +} + +double can1_sensornode_r_100_hz_ebs_aps_2_decode(uint8_t value) +{ + return ((double)value * 0.1); +} + +bool can1_sensornode_r_100_hz_ebs_aps_2_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_100_hz_bp_r_encode(double value) +{ + return (uint8_t)(value / 2.0); +} + +double can1_sensornode_r_100_hz_bp_r_decode(uint8_t value) +{ + return ((double)value * 2.0); +} + +bool can1_sensornode_r_100_hz_bp_r_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_100_hz_wss_rl_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_100_hz_wss_rl_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_100_hz_wss_rl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_sensornode_r_100_hz_wss_rr_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_sensornode_r_100_hz_wss_rr_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_100_hz_wss_rr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_sensornode_r_100_hz_ds_rl_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_r_100_hz_ds_rl_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_100_hz_ds_rl_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_sensornode_r_100_hz_ds_rr_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_r_100_hz_ds_rr_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_100_hz_ds_rr_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +int can1_sensornode_r_1k_hz_pack( + uint8_t *dst_p, + const struct can1_sensornode_r_1k_hz_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u16(src_p->sls_rl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->sls_rl, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->sls_rr, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->sls_rr, 4u, 0xffu); + + return (3); +} + +int can1_sensornode_r_1k_hz_unpack( + struct can1_sensornode_r_1k_hz_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->sls_rl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->sls_rl |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->sls_rr = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->sls_rr |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + + return (0); +} + +int can1_sensornode_r_1k_hz_init(struct can1_sensornode_r_1k_hz_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_sensornode_r_1k_hz_t)); + + return 0; +} + +uint16_t can1_sensornode_r_1k_hz_sls_rl_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_r_1k_hz_sls_rl_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_1k_hz_sls_rl_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_sensornode_r_1k_hz_sls_rr_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_sensornode_r_1k_hz_sls_rr_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_sensornode_r_1k_hz_sls_rr_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +int can1_pwm_duty_cycle_pack( + uint8_t *dst_p, + const struct can1_pwm_duty_cycle_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->dc_drs, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->dc_assi_y, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->dc_assi_b, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->dc_bl, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->dc_fans_dt, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u8(src_p->dc_fans_bat, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->dc_sbx, 0u, 0xffu); + + return (7); +} + +int can1_pwm_duty_cycle_unpack( + struct can1_pwm_duty_cycle_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->dc_drs = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->dc_assi_y = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->dc_assi_b = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->dc_bl = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->dc_fans_dt = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->dc_fans_bat = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->dc_sbx = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_pwm_duty_cycle_init(struct can1_pwm_duty_cycle_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pwm_duty_cycle_t)); + + return 0; +} + +uint8_t can1_pwm_duty_cycle_dc_drs_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_drs_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_drs_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_assi_y_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_assi_y_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_assi_y_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_assi_b_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_assi_b_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_assi_b_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_bl_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_bl_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_bl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_fans_dt_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_fans_dt_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_fans_dt_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_fans_bat_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_fans_bat_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_fans_bat_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pwm_duty_cycle_dc_sbx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pwm_duty_cycle_dc_sbx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pwm_duty_cycle_dc_sbx_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_pwm_config_pack( + uint8_t *dst_p, + const struct can1_pwm_config_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[0] |= pack_left_shift_u16(src_p->freq_pwm1_drs_lighting, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->freq_pwm1_drs_lighting, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->freq_pwm3_fans, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->freq_pwm3_fans, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->freq_pwm2_sbx, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->freq_pwm2_sbx, 8u, 0xffu); + + return (6); +} + +int can1_pwm_config_unpack( + struct can1_pwm_config_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->freq_pwm1_drs_lighting = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->freq_pwm1_drs_lighting |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->freq_pwm3_fans = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->freq_pwm3_fans |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->freq_pwm2_sbx = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->freq_pwm2_sbx |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + + return (0); +} + +int can1_pwm_config_init(struct can1_pwm_config_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pwm_config_t)); + + return 0; +} + +uint16_t can1_pwm_config_freq_pwm1_drs_lighting_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pwm_config_freq_pwm1_drs_lighting_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pwm_config_freq_pwm1_drs_lighting_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pwm_config_freq_pwm3_fans_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pwm_config_freq_pwm3_fans_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pwm_config_freq_pwm3_fans_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pwm_config_freq_pwm2_sbx_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pwm_config_freq_pwm2_sbx_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pwm_config_freq_pwm2_sbx_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_dashboard_in_pack( + uint8_t *dst_p, + const struct can1_dashboard_in_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->dashboard_r2_d_button, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->dashboard_ts_activate_button, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->dashboard_race_key, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->dashboard_sdc_in, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->dashboard_sdc_out, 4u, 0x10u); + + return (1); +} + +int can1_dashboard_in_unpack( + struct can1_dashboard_in_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->dashboard_r2_d_button = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->dashboard_ts_activate_button = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->dashboard_race_key = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->dashboard_sdc_in = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->dashboard_sdc_out = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + + return (0); +} + +int can1_dashboard_in_init(struct can1_dashboard_in_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_dashboard_in_t)); + + return 0; +} + +uint8_t can1_dashboard_in_dashboard_r2_d_button_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_dashboard_in_dashboard_r2_d_button_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_dashboard_in_dashboard_r2_d_button_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_dashboard_in_dashboard_ts_activate_button_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_dashboard_in_dashboard_ts_activate_button_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_dashboard_in_dashboard_ts_activate_button_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_dashboard_in_dashboard_race_key_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_dashboard_in_dashboard_race_key_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_dashboard_in_dashboard_race_key_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_dashboard_in_dashboard_sdc_in_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_dashboard_in_dashboard_sdc_in_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_dashboard_in_dashboard_sdc_in_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_dashboard_in_dashboard_sdc_out_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_dashboard_in_dashboard_sdc_out_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_dashboard_in_dashboard_sdc_out_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +int can1_ams_slave1_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_status_unpack( + struct can1_ams_slave1_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave1_status_init(struct can1_ams_slave1_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_status_t)); + + return 0; +} + +uint8_t can1_ams_slave1_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave1_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave1_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave1_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave1_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave1_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_ams_slave1_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int16_t can1_ams_slave1_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave1_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave1_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ams_slave2_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log0_unpack( + struct can1_ams_slave2_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave2_log0_init(struct can1_ams_slave2_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave2_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave2_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log1_unpack( + struct can1_ams_slave2_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave2_log1_init(struct can1_ams_slave2_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave2_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave2_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v8, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v8, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v9, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v9, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v10, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v10, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v11, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v11, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log2_unpack( + struct can1_ams_slave2_log2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v8 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v8 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v9 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v9 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v10 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v10 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v11 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v11 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave2_log2_init(struct can1_ams_slave2_log2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log2_t)); + + return 0; +} + +uint16_t can1_ams_slave2_log2_ams_slave_id_v8_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log2_ams_slave_id_v8_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log2_ams_slave_id_v8_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log2_ams_slave_id_v9_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log2_ams_slave_id_v9_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log2_ams_slave_id_v9_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log2_ams_slave_id_v10_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log2_ams_slave_id_v10_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log2_ams_slave_id_v10_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log2_ams_slave_id_v11_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log2_ams_slave_id_v11_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log2_ams_slave_id_v11_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave2_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log3_unpack( + struct can1_ams_slave2_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave2_log3_init(struct can1_ams_slave2_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave2_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave2_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave2_log4_unpack( + struct can1_ams_slave2_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave2_log4_init(struct can1_ams_slave2_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave2_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave2_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave2_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log5_unpack( + struct can1_ams_slave2_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave2_log5_init(struct can1_ams_slave2_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log5_t)); + + return 0; +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave5_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log6_unpack( + struct can1_ams_slave5_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave5_log6_init(struct can1_ams_slave5_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log6_t)); + + return 0; +} + +int8_t can1_ams_slave5_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave4_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log6_unpack( + struct can1_ams_slave4_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave4_log6_init(struct can1_ams_slave4_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log6_t)); + + return 0; +} + +int8_t can1_ams_slave4_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave3_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log6_unpack( + struct can1_ams_slave3_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave3_log6_init(struct can1_ams_slave3_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log6_t)); + + return 0; +} + +int8_t can1_ams_slave3_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave2_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_log6_unpack( + struct can1_ams_slave2_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave2_log6_init(struct can1_ams_slave2_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_log6_t)); + + return 0; +} + +int8_t can1_ams_slave2_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave2_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave2_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave1_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log6_unpack( + struct can1_ams_slave1_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave1_log6_init(struct can1_ams_slave1_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log6_t)); + + return 0; +} + +int8_t can1_ams_slave1_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave5_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log5_unpack( + struct can1_ams_slave5_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave5_log5_init(struct can1_ams_slave5_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log5_t)); + + return 0; +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave5_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave5_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave4_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log5_unpack( + struct can1_ams_slave4_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave4_log5_init(struct can1_ams_slave4_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log5_t)); + + return 0; +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave4_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave4_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave3_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log5_unpack( + struct can1_ams_slave3_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave3_log5_init(struct can1_ams_slave3_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log5_t)); + + return 0; +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave3_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave3_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave1_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log5_unpack( + struct can1_ams_slave1_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave1_log5_init(struct can1_ams_slave1_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log5_t)); + + return 0; +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave1_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave1_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave5_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave5_log4_unpack( + struct can1_ams_slave5_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave5_log4_init(struct can1_ams_slave5_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave5_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave5_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave4_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave4_log4_unpack( + struct can1_ams_slave4_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave4_log4_init(struct can1_ams_slave4_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave4_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave4_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave3_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave3_log4_unpack( + struct can1_ams_slave3_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave3_log4_init(struct can1_ams_slave3_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave3_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave3_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave1_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave1_log4_unpack( + struct can1_ams_slave1_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave1_log4_init(struct can1_ams_slave1_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave1_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave1_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave1_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave5_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log3_unpack( + struct can1_ams_slave5_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave5_log3_init(struct can1_ams_slave5_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave5_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave4_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log3_unpack( + struct can1_ams_slave4_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave4_log3_init(struct can1_ams_slave4_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave4_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave3_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log3_unpack( + struct can1_ams_slave3_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave3_log3_init(struct can1_ams_slave3_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave3_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave1_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log3_unpack( + struct can1_ams_slave1_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave1_log3_init(struct can1_ams_slave1_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave1_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave5_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v8, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v8, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v9, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v9, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v10, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v10, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v11, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v11, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log2_unpack( + struct can1_ams_slave5_log2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v8 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v8 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v9 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v9 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v10 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v10 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v11 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v11 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave5_log2_init(struct can1_ams_slave5_log2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log2_t)); + + return 0; +} + +uint16_t can1_ams_slave5_log2_ams_slave_id_v8_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log2_ams_slave_id_v8_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log2_ams_slave_id_v8_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log2_ams_slave_id_v9_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log2_ams_slave_id_v9_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log2_ams_slave_id_v9_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log2_ams_slave_id_v10_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log2_ams_slave_id_v10_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log2_ams_slave_id_v10_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log2_ams_slave_id_v11_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log2_ams_slave_id_v11_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log2_ams_slave_id_v11_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave4_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v8, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v8, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v9, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v9, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v10, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v10, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v11, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v11, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log2_unpack( + struct can1_ams_slave4_log2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v8 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v8 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v9 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v9 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v10 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v10 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v11 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v11 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave4_log2_init(struct can1_ams_slave4_log2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log2_t)); + + return 0; +} + +uint16_t can1_ams_slave4_log2_ams_slave_id_v8_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log2_ams_slave_id_v8_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log2_ams_slave_id_v8_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log2_ams_slave_id_v9_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log2_ams_slave_id_v9_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log2_ams_slave_id_v9_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log2_ams_slave_id_v10_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log2_ams_slave_id_v10_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log2_ams_slave_id_v10_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log2_ams_slave_id_v11_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log2_ams_slave_id_v11_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log2_ams_slave_id_v11_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave3_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v8, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v8, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v9, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v9, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v10, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v10, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v11, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v11, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log2_unpack( + struct can1_ams_slave3_log2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v8 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v8 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v9 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v9 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v10 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v10 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v11 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v11 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave3_log2_init(struct can1_ams_slave3_log2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log2_t)); + + return 0; +} + +uint16_t can1_ams_slave3_log2_ams_slave_id_v8_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log2_ams_slave_id_v8_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log2_ams_slave_id_v8_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log2_ams_slave_id_v9_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log2_ams_slave_id_v9_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log2_ams_slave_id_v9_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log2_ams_slave_id_v10_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log2_ams_slave_id_v10_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log2_ams_slave_id_v10_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log2_ams_slave_id_v11_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log2_ams_slave_id_v11_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log2_ams_slave_id_v11_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave1_log2_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v8, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v8, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v9, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v9, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v10, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v10, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v11, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v11, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log2_unpack( + struct can1_ams_slave1_log2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v8 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v8 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v9 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v9 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v10 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v10 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v11 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v11 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave1_log2_init(struct can1_ams_slave1_log2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log2_t)); + + return 0; +} + +uint16_t can1_ams_slave1_log2_ams_slave_id_v8_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log2_ams_slave_id_v8_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log2_ams_slave_id_v8_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log2_ams_slave_id_v9_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log2_ams_slave_id_v9_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log2_ams_slave_id_v9_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log2_ams_slave_id_v10_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log2_ams_slave_id_v10_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log2_ams_slave_id_v10_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log2_ams_slave_id_v11_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log2_ams_slave_id_v11_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log2_ams_slave_id_v11_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave5_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log1_unpack( + struct can1_ams_slave5_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave5_log1_init(struct can1_ams_slave5_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave5_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave4_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log1_unpack( + struct can1_ams_slave4_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave4_log1_init(struct can1_ams_slave4_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave4_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave3_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log1_unpack( + struct can1_ams_slave3_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave3_log1_init(struct can1_ams_slave3_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave3_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave1_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log1_unpack( + struct can1_ams_slave1_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave1_log1_init(struct can1_ams_slave1_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave1_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave5_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_log0_unpack( + struct can1_ams_slave5_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave5_log0_init(struct can1_ams_slave5_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave5_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave4_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_log0_unpack( + struct can1_ams_slave4_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave4_log0_init(struct can1_ams_slave4_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave4_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave4_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave3_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_log0_unpack( + struct can1_ams_slave3_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave3_log0_init(struct can1_ams_slave3_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave3_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave1_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave1_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave1_log0_unpack( + struct can1_ams_slave1_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave1_log0_init(struct can1_ams_slave1_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave1_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave1_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave1_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave1_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave1_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_pdu_heartbeat_pack( + uint8_t *dst_p, + const struct can1_pdu_heartbeat_t *src_p, + size_t size) +{ + uint8_t pdu_heartbeat; + + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + pdu_heartbeat = (uint8_t)src_p->pdu_heartbeat; + dst_p[0] |= pack_left_shift_u8(pdu_heartbeat, 0u, 0x01u); + + return (1); +} + +int can1_pdu_heartbeat_unpack( + struct can1_pdu_heartbeat_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t pdu_heartbeat; + + if (size < 1u) { + return (-EINVAL); + } + + pdu_heartbeat = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + + if ((pdu_heartbeat & (1u << 0)) != 0u) { + pdu_heartbeat |= 0xfeu; + } + + dst_p->pdu_heartbeat = (int8_t)pdu_heartbeat; + + return (0); +} + +int can1_pdu_heartbeat_init(struct can1_pdu_heartbeat_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_heartbeat_t)); + + return 0; +} + +int8_t can1_pdu_heartbeat_pdu_heartbeat_encode(double value) +{ + return (int8_t)(value); +} + +double can1_pdu_heartbeat_pdu_heartbeat_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_pdu_heartbeat_pdu_heartbeat_is_in_range(int8_t value) +{ + return ((value >= -1) && (value <= 0)); +} + +int can1_ftcu_pneumatik_pack( + uint8_t *dst_p, + const struct can1_ftcu_pneumatik_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->ftcu_tank_pressure_1, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->ftcu_tank_pressure_1, 8u, 0x0fu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_tank_pressure_2, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_tank_pressure_2, 8u, 0x0fu); + + return (8); +} + +int can1_ftcu_pneumatik_unpack( + struct can1_ftcu_pneumatik_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_tank_pressure_1 = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->ftcu_tank_pressure_1 |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->ftcu_tank_pressure_2 = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->ftcu_tank_pressure_2 |= unpack_left_shift_u16(src_p[3], 8u, 0x0fu); + + return (0); +} + +int can1_ftcu_pneumatik_init(struct can1_ftcu_pneumatik_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_pneumatik_t)); + + return 0; +} + +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_1_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_pneumatik_ftcu_tank_pressure_1_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_pneumatik_ftcu_tank_pressure_1_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_ftcu_pneumatik_ftcu_tank_pressure_2_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_pneumatik_ftcu_tank_pressure_2_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_pneumatik_ftcu_tank_pressure_2_is_in_range(uint16_t value) +{ + return (value <= 40950u); +} + +int can1_acu_tx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_tx_commands_t *src_p, + size_t size) +{ + uint8_t abx_steering_angle_left; + uint8_t abx_steering_angle_right; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[0] |= pack_left_shift_u8(src_p->abx_speed_fl, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->abx_speed_fr, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->abx_speed_rl, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->abx_speed_rr, 0u, 0xffu); + abx_steering_angle_left = (uint8_t)src_p->abx_steering_angle_left; + dst_p[4] |= pack_left_shift_u8(abx_steering_angle_left, 0u, 0xffu); + abx_steering_angle_right = (uint8_t)src_p->abx_steering_angle_right; + dst_p[5] |= pack_left_shift_u8(abx_steering_angle_right, 0u, 0xffu); + + return (6); +} + +int can1_acu_tx_commands_unpack( + struct can1_acu_tx_commands_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t abx_steering_angle_left; + uint8_t abx_steering_angle_right; + + if (size < 6u) { + return (-EINVAL); + } + + dst_p->abx_speed_fl = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->abx_speed_fr = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->abx_speed_rl = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->abx_speed_rr = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + abx_steering_angle_left = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->abx_steering_angle_left = (int8_t)abx_steering_angle_left; + abx_steering_angle_right = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->abx_steering_angle_right = (int8_t)abx_steering_angle_right; + + return (0); +} + +int can1_acu_tx_commands_init(struct can1_acu_tx_commands_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_acu_tx_commands_t)); + + return 0; +} + +uint8_t can1_acu_tx_commands_abx_speed_fl_encode(double value) +{ + return (uint8_t)(value / 0.2); +} + +double can1_acu_tx_commands_abx_speed_fl_decode(uint8_t value) +{ + return ((double)value * 0.2); +} + +bool can1_acu_tx_commands_abx_speed_fl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_acu_tx_commands_abx_speed_fr_encode(double value) +{ + return (uint8_t)(value / 0.2); +} + +double can1_acu_tx_commands_abx_speed_fr_decode(uint8_t value) +{ + return ((double)value * 0.2); +} + +bool can1_acu_tx_commands_abx_speed_fr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_acu_tx_commands_abx_speed_rl_encode(double value) +{ + return (uint8_t)(value / 0.2); +} + +double can1_acu_tx_commands_abx_speed_rl_decode(uint8_t value) +{ + return ((double)value * 0.2); +} + +bool can1_acu_tx_commands_abx_speed_rl_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_acu_tx_commands_abx_speed_rr_encode(double value) +{ + return (uint8_t)(value / 0.2); +} + +double can1_acu_tx_commands_abx_speed_rr_decode(uint8_t value) +{ + return ((double)value * 0.2); +} + +bool can1_acu_tx_commands_abx_speed_rr_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_acu_tx_commands_abx_steering_angle_left_encode(double value) +{ + return (int8_t)(value / 0.0156863); +} + +double can1_acu_tx_commands_abx_steering_angle_left_decode(int8_t value) +{ + return ((double)value * 0.0156863); +} + +bool can1_acu_tx_commands_abx_steering_angle_left_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_acu_tx_commands_abx_steering_angle_right_encode(double value) +{ + return (int8_t)(value / 0.0156863); +} + +double can1_acu_tx_commands_abx_steering_angle_right_decode(int8_t value) +{ + return ((double)value * 0.0156863); +} + +bool can1_acu_tx_commands_abx_steering_angle_right_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_acu_rx_commands_pack( + uint8_t *dst_p, + const struct can1_acu_rx_commands_t *src_p, + size_t size) +{ + uint8_t acu_steering_angle_left; + uint8_t acu_steering_angle_right; + + if (size < 4u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 4); + + dst_p[0] |= pack_left_shift_u8(src_p->acu_speed_target_left, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->acu_speed_target_right, 0u, 0xffu); + acu_steering_angle_right = (uint8_t)src_p->acu_steering_angle_right; + dst_p[2] |= pack_left_shift_u8(acu_steering_angle_right, 0u, 0xffu); + acu_steering_angle_left = (uint8_t)src_p->acu_steering_angle_left; + dst_p[3] |= pack_left_shift_u8(acu_steering_angle_left, 0u, 0xffu); + + return (4); +} + +int can1_acu_rx_commands_unpack( + struct can1_acu_rx_commands_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t acu_steering_angle_left; + uint8_t acu_steering_angle_right; + + if (size < 4u) { + return (-EINVAL); + } + + dst_p->acu_speed_target_left = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->acu_speed_target_right = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + acu_steering_angle_right = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->acu_steering_angle_right = (int8_t)acu_steering_angle_right; + acu_steering_angle_left = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->acu_steering_angle_left = (int8_t)acu_steering_angle_left; + + return (0); +} + +int can1_acu_rx_commands_init(struct can1_acu_rx_commands_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_acu_rx_commands_t)); + + return 0; +} + +uint8_t can1_acu_rx_commands_acu_speed_target_left_encode(double value) +{ + return (uint8_t)(value / 1.2); +} + +double can1_acu_rx_commands_acu_speed_target_left_decode(uint8_t value) +{ + return ((double)value * 1.2); +} + +bool can1_acu_rx_commands_acu_speed_target_left_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_acu_rx_commands_acu_speed_target_right_encode(double value) +{ + return (uint8_t)(value / 1.2); +} + +double can1_acu_rx_commands_acu_speed_target_right_decode(uint8_t value) +{ + return ((double)value * 1.2); +} + +bool can1_acu_rx_commands_acu_speed_target_right_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_acu_rx_commands_acu_steering_angle_right_encode(double value) +{ + return (int8_t)(value / 0.016); +} + +double can1_acu_rx_commands_acu_steering_angle_right_decode(int8_t value) +{ + return ((double)value * 0.016); +} + +bool can1_acu_rx_commands_acu_steering_angle_right_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_acu_rx_commands_acu_steering_angle_left_encode(double value) +{ + return (int8_t)(value / 0.016); +} + +double can1_acu_rx_commands_acu_steering_angle_left_decode(int8_t value) +{ + return ((double)value * 0.016); +} + +bool can1_acu_rx_commands_acu_steering_angle_left_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_acu_rx_pack( + uint8_t *dst_p, + const struct can1_acu_rx_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 3); + + dst_p[0] |= pack_left_shift_u8(src_p->acu_as_mission_complete, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_as_ok, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_drs, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_lap_count, 3u, 0x78u); + dst_p[1] |= pack_left_shift_u8(src_p->acu_cones_all, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u8(src_p->acu_cones_actual, 0u, 0xffu); + + return (3); +} + +int can1_acu_rx_unpack( + struct can1_acu_rx_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 3u) { + return (-EINVAL); + } + + dst_p->acu_as_mission_complete = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->acu_as_ok = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->acu_drs = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->acu_lap_count = unpack_right_shift_u8(src_p[0], 3u, 0x78u); + dst_p->acu_cones_all = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->acu_cones_actual = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + + return (0); +} + +int can1_acu_rx_init(struct can1_acu_rx_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_acu_rx_t)); + + return 0; +} + +uint8_t can1_acu_rx_acu_as_mission_complete_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_as_mission_complete_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_as_mission_complete_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_rx_acu_as_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_as_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_as_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_rx_acu_drs_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_drs_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_drs_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_rx_acu_lap_count_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_lap_count_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_lap_count_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +uint8_t can1_acu_rx_acu_cones_all_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_cones_all_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_cones_all_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_acu_rx_acu_cones_actual_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_rx_acu_cones_actual_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_rx_acu_cones_actual_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave0_log0_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log0_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v0, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v0, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v1, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v1, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v2, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v3, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v3, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_log0_unpack( + struct can1_ams_slave0_log0_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v0 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v0 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v1 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v1 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v2 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v2 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v3 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v3 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave0_log0_init(struct can1_ams_slave0_log0_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log0_t)); + + return 0; +} + +uint16_t can1_ams_slave0_log0_ams_slave_id_v0_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log0_ams_slave_id_v0_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log0_ams_slave_id_v0_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log0_ams_slave_id_v1_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log0_ams_slave_id_v1_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log0_ams_slave_id_v1_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log0_ams_slave_id_v2_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log0_ams_slave_id_v2_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log0_ams_slave_id_v2_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log0_ams_slave_id_v3_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log0_ams_slave_id_v3_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log0_ams_slave_id_v3_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave0_log1_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v4, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v4, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v5, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v5, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v6, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v6, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v7, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_log1_unpack( + struct can1_ams_slave0_log1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v4 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v4 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v5 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v5 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v6 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v6 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v7 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v7 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave0_log1_init(struct can1_ams_slave0_log1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log1_t)); + + return 0; +} + +uint16_t can1_ams_slave0_log1_ams_slave_id_v4_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log1_ams_slave_id_v4_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log1_ams_slave_id_v4_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log1_ams_slave_id_v5_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log1_ams_slave_id_v5_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log1_ams_slave_id_v5_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log1_ams_slave_id_v6_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log1_ams_slave_id_v6_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log1_ams_slave_id_v6_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log1_ams_slave_id_v7_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log1_ams_slave_id_v7_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log1_ams_slave_id_v7_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave0_log3_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_right_shift_u16(src_p->ams_slave_id_v12, 8u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ams_slave_id_v12, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_id_v13, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_id_v13, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_id_v14, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_id_v14, 0u, 0xffu); + dst_p[6] |= pack_right_shift_u16(src_p->ams_slave_id_v15, 8u, 0xffu); + dst_p[7] |= pack_left_shift_u16(src_p->ams_slave_id_v15, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_log3_unpack( + struct can1_ams_slave0_log3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_v12 = unpack_left_shift_u16(src_p[0], 8u, 0xffu); + dst_p->ams_slave_id_v12 |= unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_v13 = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_id_v13 |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_v14 = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_v14 |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_v15 = unpack_left_shift_u16(src_p[6], 8u, 0xffu); + dst_p->ams_slave_id_v15 |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave0_log3_init(struct can1_ams_slave0_log3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log3_t)); + + return 0; +} + +uint16_t can1_ams_slave0_log3_ams_slave_id_v12_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log3_ams_slave_id_v12_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log3_ams_slave_id_v12_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log3_ams_slave_id_v13_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log3_ams_slave_id_v13_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log3_ams_slave_id_v13_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log3_ams_slave_id_v14_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log3_ams_slave_id_v14_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log3_ams_slave_id_v14_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_log3_ams_slave_id_v15_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_log3_ams_slave_id_v15_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_log3_ams_slave_id_v15_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int can1_ams_slave0_log4_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log4_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_id_failed_sensors, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_id_failed_sensors, 0u, 0xffu); + + return (6); +} + +int can1_ams_slave0_log4_unpack( + struct can1_ams_slave0_log4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->ams_slave_id_failed_sensors = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_id_failed_sensors |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave0_log4_init(struct can1_ams_slave0_log4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log4_t)); + + return 0; +} + +uint32_t can1_ams_slave0_log4_ams_slave_id_failed_sensors_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave0_log4_ams_slave_id_failed_sensors_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log4_ams_slave_id_failed_sensors_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave0_log5_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log5_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t0 = (uint8_t)src_p->ams_slave_id_t0; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t0, 0u, 0xffu); + ams_slave_id_t1 = (uint8_t)src_p->ams_slave_id_t1; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t1, 0u, 0xffu); + ams_slave_id_t2 = (uint8_t)src_p->ams_slave_id_t2; + dst_p[2] |= pack_left_shift_u8(ams_slave_id_t2, 0u, 0xffu); + ams_slave_id_t3 = (uint8_t)src_p->ams_slave_id_t3; + dst_p[3] |= pack_left_shift_u8(ams_slave_id_t3, 0u, 0xffu); + ams_slave_id_t4 = (uint8_t)src_p->ams_slave_id_t4; + dst_p[4] |= pack_left_shift_u8(ams_slave_id_t4, 0u, 0xffu); + ams_slave_id_t5 = (uint8_t)src_p->ams_slave_id_t5; + dst_p[5] |= pack_left_shift_u8(ams_slave_id_t5, 0u, 0xffu); + ams_slave_id_t6 = (uint8_t)src_p->ams_slave_id_t6; + dst_p[6] |= pack_left_shift_u8(ams_slave_id_t6, 0u, 0xffu); + ams_slave_id_t7 = (uint8_t)src_p->ams_slave_id_t7; + dst_p[7] |= pack_left_shift_u8(ams_slave_id_t7, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_log5_unpack( + struct can1_ams_slave0_log5_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t0; + uint8_t ams_slave_id_t1; + uint8_t ams_slave_id_t2; + uint8_t ams_slave_id_t3; + uint8_t ams_slave_id_t4; + uint8_t ams_slave_id_t5; + uint8_t ams_slave_id_t6; + uint8_t ams_slave_id_t7; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t0 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t0 = (int8_t)ams_slave_id_t0; + ams_slave_id_t1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t1 = (int8_t)ams_slave_id_t1; + ams_slave_id_t2 = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->ams_slave_id_t2 = (int8_t)ams_slave_id_t2; + ams_slave_id_t3 = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->ams_slave_id_t3 = (int8_t)ams_slave_id_t3; + ams_slave_id_t4 = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ams_slave_id_t4 = (int8_t)ams_slave_id_t4; + ams_slave_id_t5 = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ams_slave_id_t5 = (int8_t)ams_slave_id_t5; + ams_slave_id_t6 = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ams_slave_id_t6 = (int8_t)ams_slave_id_t6; + ams_slave_id_t7 = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + dst_p->ams_slave_id_t7 = (int8_t)ams_slave_id_t7; + + return (0); +} + +int can1_ams_slave0_log5_init(struct can1_ams_slave0_log5_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log5_t)); + + return 0; +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t0_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t0_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t0_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t1_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t1_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t1_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t2_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t2_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t2_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t3_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t3_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t3_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t4_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t4_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t4_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t5_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t5_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t5_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t6_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t6_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t6_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log5_ams_slave_id_t7_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log5_ams_slave_id_t7_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log5_ams_slave_id_t7_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_slave0_log6_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_log6_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ams_slave_id_t8 = (uint8_t)src_p->ams_slave_id_t8; + dst_p[0] |= pack_left_shift_u8(ams_slave_id_t8, 0u, 0xffu); + ams_slave_id_t9 = (uint8_t)src_p->ams_slave_id_t9; + dst_p[1] |= pack_left_shift_u8(ams_slave_id_t9, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_log6_unpack( + struct can1_ams_slave0_log6_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_slave_id_t8; + uint8_t ams_slave_id_t9; + + if (size < 8u) { + return (-EINVAL); + } + + ams_slave_id_t8 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_id_t8 = (int8_t)ams_slave_id_t8; + ams_slave_id_t9 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_id_t9 = (int8_t)ams_slave_id_t9; + + return (0); +} + +int can1_ams_slave0_log6_init(struct can1_ams_slave0_log6_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_log6_t)); + + return 0; +} + +int8_t can1_ams_slave0_log6_ams_slave_id_t8_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log6_ams_slave_id_t8_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log6_ams_slave_id_t8_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_slave0_log6_ams_slave_id_t9_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_slave0_log6_ams_slave_id_t9_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_log6_ams_slave_id_t9_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_acu_tx_pack( + uint8_t *dst_p, + const struct can1_acu_tx_t *src_p, + size_t size) +{ + if (size < 2u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 2); + + dst_p[0] |= pack_left_shift_u8(src_p->acu_as_mission, 0u, 0x07u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_as_state, 3u, 0x38u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_power_off, 6u, 0x40u); + dst_p[0] |= pack_left_shift_u8(src_p->acu_reset, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->acu_allow_torque, 0u, 0x01u); + dst_p[1] |= pack_left_shift_u8(src_p->abx_con_mon_error, 1u, 0x1eu); + + return (2); +} + +int can1_acu_tx_unpack( + struct can1_acu_tx_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 2u) { + return (-EINVAL); + } + + dst_p->acu_as_mission = unpack_right_shift_u8(src_p[0], 0u, 0x07u); + dst_p->acu_as_state = unpack_right_shift_u8(src_p[0], 3u, 0x38u); + dst_p->acu_power_off = unpack_right_shift_u8(src_p[0], 6u, 0x40u); + dst_p->acu_reset = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->acu_allow_torque = unpack_right_shift_u8(src_p[1], 0u, 0x01u); + dst_p->abx_con_mon_error = unpack_right_shift_u8(src_p[1], 1u, 0x1eu); + + return (0); +} + +int can1_acu_tx_init(struct can1_acu_tx_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_acu_tx_t)); + + return 0; +} + +uint8_t can1_acu_tx_acu_as_mission_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_acu_as_mission_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_acu_as_mission_is_in_range(uint8_t value) +{ + return (value <= 7u); +} + +uint8_t can1_acu_tx_acu_as_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_acu_as_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_acu_as_state_is_in_range(uint8_t value) +{ + return (value <= 5u); +} + +uint8_t can1_acu_tx_acu_power_off_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_acu_power_off_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_acu_power_off_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_tx_acu_reset_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_acu_reset_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_acu_reset_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_tx_acu_allow_torque_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_acu_allow_torque_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_acu_allow_torque_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_acu_tx_abx_con_mon_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_acu_tx_abx_con_mon_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_acu_tx_abx_con_mon_error_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +int can1_ams_slave5_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave5_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave5_status_unpack( + struct can1_ams_slave5_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave5_status_init(struct can1_ams_slave5_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave5_status_t)); + + return 0; +} + +uint8_t can1_ams_slave5_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave5_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave5_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave5_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave5_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave5_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave5_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_ams_slave5_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave5_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave5_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave5_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int16_t can1_ams_slave5_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave5_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave5_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ams_slave4_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave4_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave4_status_unpack( + struct can1_ams_slave4_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave4_status_init(struct can1_ams_slave4_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave4_status_t)); + + return 0; +} + +uint8_t can1_ams_slave4_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave4_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave4_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave4_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave4_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave4_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave4_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_ams_slave4_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 1000u); +} + +uint16_t can1_ams_slave4_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave4_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave4_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 1000u); +} + +int16_t can1_ams_slave4_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave4_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave4_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ams_slave3_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave3_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave3_status_unpack( + struct can1_ams_slave3_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave3_status_init(struct can1_ams_slave3_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave3_status_t)); + + return 0; +} + +uint8_t can1_ams_slave3_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave3_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave3_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave3_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave3_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave3_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave3_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_ams_slave3_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave3_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave3_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave3_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int16_t can1_ams_slave3_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave3_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave3_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ams_slave2_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave2_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave2_status_unpack( + struct can1_ams_slave2_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave2_status_init(struct can1_ams_slave2_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave2_status_t)); + + return 0; +} + +uint8_t can1_ams_slave2_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave2_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave2_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave2_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave2_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave2_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave2_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_ams_slave2_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave2_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave2_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave2_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int16_t can1_ams_slave2_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave2_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave2_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ams_error_pack( + uint8_t *dst_p, + const struct can1_ams_error_t *src_p, + size_t size) +{ + uint8_t ams_error_arg; + uint8_t ams_error_kind; + + if (size < 2u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 2); + + ams_error_kind = (uint8_t)src_p->ams_error_kind; + dst_p[0] |= pack_left_shift_u8(ams_error_kind, 0u, 0xffu); + ams_error_arg = (uint8_t)src_p->ams_error_arg; + dst_p[1] |= pack_left_shift_u8(ams_error_arg, 0u, 0xffu); + + return (2); +} + +int can1_ams_error_unpack( + struct can1_ams_error_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ams_error_arg; + uint8_t ams_error_kind; + + if (size < 2u) { + return (-EINVAL); + } + + ams_error_kind = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_error_kind = (int8_t)ams_error_kind; + ams_error_arg = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_error_arg = (int8_t)ams_error_arg; + + return (0); +} + +int can1_ams_error_init(struct can1_ams_error_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_error_t)); + + return 0; +} + +int8_t can1_ams_error_ams_error_kind_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_error_ams_error_kind_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_error_ams_error_kind_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int8_t can1_ams_error_ams_error_arg_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ams_error_ams_error_arg_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ams_error_ams_error_arg_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +int can1_ftcu_cooling_pack( + uint8_t *dst_p, + const struct can1_ftcu_cooling_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ftcu_water_pressure_2, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->ftcu_water_pressure_1, 0u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_water_temperature_1, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_water_temperature_1, 8u, 0x03u); + dst_p[3] |= pack_left_shift_u16(src_p->ftcu_water_temperature_2, 2u, 0xfcu); + dst_p[4] |= pack_right_shift_u16(src_p->ftcu_water_temperature_2, 6u, 0x0fu); + dst_p[4] |= pack_left_shift_u16(src_p->ftcu_flow_rate, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(src_p->ftcu_flow_rate, 4u, 0x3fu); + + return (8); +} + +int can1_ftcu_cooling_unpack( + struct can1_ftcu_cooling_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_water_pressure_2 = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ftcu_water_pressure_1 = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ftcu_water_temperature_1 = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->ftcu_water_temperature_1 |= unpack_left_shift_u16(src_p[3], 8u, 0x03u); + dst_p->ftcu_water_temperature_2 = unpack_right_shift_u16(src_p[3], 2u, 0xfcu); + dst_p->ftcu_water_temperature_2 |= unpack_left_shift_u16(src_p[4], 6u, 0x0fu); + dst_p->ftcu_flow_rate = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + dst_p->ftcu_flow_rate |= unpack_left_shift_u16(src_p[5], 4u, 0x3fu); + + return (0); +} + +int can1_ftcu_cooling_init(struct can1_ftcu_cooling_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_cooling_t)); + + return 0; +} + +uint8_t can1_ftcu_cooling_ftcu_water_pressure_2_encode(double value) +{ + return (uint8_t)(value / 0.01); +} + +double can1_ftcu_cooling_ftcu_water_pressure_2_decode(uint8_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_cooling_ftcu_water_pressure_2_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ftcu_cooling_ftcu_water_pressure_1_encode(double value) +{ + return (uint8_t)(value / 0.01); +} + +double can1_ftcu_cooling_ftcu_water_pressure_1_decode(uint8_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_cooling_ftcu_water_pressure_1_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_cooling_ftcu_water_temperature_1_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_ftcu_cooling_ftcu_water_temperature_1_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ftcu_cooling_ftcu_water_temperature_1_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_ftcu_cooling_ftcu_water_temperature_2_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_ftcu_cooling_ftcu_water_temperature_2_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ftcu_cooling_ftcu_water_temperature_2_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_ftcu_cooling_ftcu_flow_rate_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_ftcu_cooling_ftcu_flow_rate_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ftcu_cooling_ftcu_flow_rate_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +int can1_ftcu_brake_t_pack( + uint8_t *dst_p, + const struct can1_ftcu_brake_t_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->ftcu_brake_t_fl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->ftcu_brake_t_fl, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_brake_t_fr, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_brake_t_fr, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->ftcu_brake_t_rl, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->ftcu_brake_t_rl, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->ftcu_brake_t_rr, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->ftcu_brake_t_rr, 8u, 0xffu); + + return (8); +} + +int can1_ftcu_brake_t_unpack( + struct can1_ftcu_brake_t_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_brake_t_fl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->ftcu_brake_t_fl |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->ftcu_brake_t_fr = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->ftcu_brake_t_fr |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->ftcu_brake_t_rl = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->ftcu_brake_t_rl |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->ftcu_brake_t_rr = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->ftcu_brake_t_rr |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_ftcu_brake_t_init(struct can1_ftcu_brake_t_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_brake_t_t)); + + return 0; +} + +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fl_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_brake_t_ftcu_brake_t_fl_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_brake_t_ftcu_brake_t_fl_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_brake_t_ftcu_brake_t_fr_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_brake_t_ftcu_brake_t_fr_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_brake_t_ftcu_brake_t_fr_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rl_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_brake_t_ftcu_brake_t_rl_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_brake_t_ftcu_brake_t_rl_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_brake_t_ftcu_brake_t_rr_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_brake_t_ftcu_brake_t_rr_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_brake_t_ftcu_brake_t_rr_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_ftcu_wheelspeed_pack( + uint8_t *dst_p, + const struct can1_ftcu_wheelspeed_t *src_p, + size_t size) +{ + uint16_t ftcu_wheelspeed_fl; + uint16_t ftcu_wheelspeed_fr; + uint16_t ftcu_wheelspeed_rl; + uint16_t ftcu_wheelspeed_rr; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + ftcu_wheelspeed_fl = (uint16_t)src_p->ftcu_wheelspeed_fl; + dst_p[0] |= pack_left_shift_u16(ftcu_wheelspeed_fl, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(ftcu_wheelspeed_fl, 8u, 0x0fu); + ftcu_wheelspeed_fr = (uint16_t)src_p->ftcu_wheelspeed_fr; + dst_p[1] |= pack_left_shift_u16(ftcu_wheelspeed_fr, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(ftcu_wheelspeed_fr, 4u, 0xffu); + ftcu_wheelspeed_rl = (uint16_t)src_p->ftcu_wheelspeed_rl; + dst_p[3] |= pack_left_shift_u16(ftcu_wheelspeed_rl, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(ftcu_wheelspeed_rl, 8u, 0x0fu); + ftcu_wheelspeed_rr = (uint16_t)src_p->ftcu_wheelspeed_rr; + dst_p[4] |= pack_left_shift_u16(ftcu_wheelspeed_rr, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(ftcu_wheelspeed_rr, 4u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->ftcu_distance_session, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->ftcu_distance_session, 8u, 0xffu); + + return (8); +} + +int can1_ftcu_wheelspeed_unpack( + struct can1_ftcu_wheelspeed_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ftcu_wheelspeed_fl; + uint16_t ftcu_wheelspeed_fr; + uint16_t ftcu_wheelspeed_rl; + uint16_t ftcu_wheelspeed_rr; + + if (size < 8u) { + return (-EINVAL); + } + + ftcu_wheelspeed_fl = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + ftcu_wheelspeed_fl |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + + if ((ftcu_wheelspeed_fl & (1u << 11)) != 0u) { + ftcu_wheelspeed_fl |= 0xf000u; + } + + dst_p->ftcu_wheelspeed_fl = (int16_t)ftcu_wheelspeed_fl; + ftcu_wheelspeed_fr = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + ftcu_wheelspeed_fr |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + + if ((ftcu_wheelspeed_fr & (1u << 11)) != 0u) { + ftcu_wheelspeed_fr |= 0xf000u; + } + + dst_p->ftcu_wheelspeed_fr = (int16_t)ftcu_wheelspeed_fr; + ftcu_wheelspeed_rl = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + ftcu_wheelspeed_rl |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + + if ((ftcu_wheelspeed_rl & (1u << 11)) != 0u) { + ftcu_wheelspeed_rl |= 0xf000u; + } + + dst_p->ftcu_wheelspeed_rl = (int16_t)ftcu_wheelspeed_rl; + ftcu_wheelspeed_rr = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + ftcu_wheelspeed_rr |= unpack_left_shift_u16(src_p[5], 4u, 0xffu); + + if ((ftcu_wheelspeed_rr & (1u << 11)) != 0u) { + ftcu_wheelspeed_rr |= 0xf000u; + } + + dst_p->ftcu_wheelspeed_rr = (int16_t)ftcu_wheelspeed_rr; + dst_p->ftcu_distance_session = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->ftcu_distance_session |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_ftcu_wheelspeed_init(struct can1_ftcu_wheelspeed_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_wheelspeed_t)); + + return 0; +} + +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_encode(double value) +{ + return (int16_t)(value / 0.05); +} + +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_decode(int16_t value) +{ + return ((double)value * 0.05); +} + +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fl_is_in_range(int16_t value) +{ + return ((value >= -2048) && (value <= 2047)); +} + +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_encode(double value) +{ + return (int16_t)(value / 0.05); +} + +double can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_decode(int16_t value) +{ + return ((double)value * 0.05); +} + +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_fr_is_in_range(int16_t value) +{ + return ((value >= -2048) && (value <= 2047)); +} + +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_encode(double value) +{ + return (int16_t)(value / 0.05); +} + +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_decode(int16_t value) +{ + return ((double)value * 0.05); +} + +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rl_is_in_range(int16_t value) +{ + return ((value >= -2048) && (value <= 2047)); +} + +int16_t can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_encode(double value) +{ + return (int16_t)(value / 0.05); +} + +double can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_decode(int16_t value) +{ + return ((double)value * 0.05); +} + +bool can1_ftcu_wheelspeed_ftcu_wheelspeed_rr_is_in_range(int16_t value) +{ + return ((value >= -2048) && (value <= 2047)); +} + +uint16_t can1_ftcu_wheelspeed_ftcu_distance_session_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_ftcu_wheelspeed_ftcu_distance_session_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_ftcu_wheelspeed_ftcu_distance_session_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_ftcu_timings_pack( + uint8_t *dst_p, + const struct can1_ftcu_timings_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->ftcu_laptime_best, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->ftcu_laptime_best, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_laptime_last, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_laptime_last, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->ftcu_sectortime_best, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->ftcu_sectortime_best, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->ftcu_sectortime_last, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->ftcu_sectortime_last, 8u, 0xffu); + + return (8); +} + +int can1_ftcu_timings_unpack( + struct can1_ftcu_timings_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_laptime_best = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->ftcu_laptime_best |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->ftcu_laptime_last = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->ftcu_laptime_last |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->ftcu_sectortime_best = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->ftcu_sectortime_best |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->ftcu_sectortime_last = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->ftcu_sectortime_last |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_ftcu_timings_init(struct can1_ftcu_timings_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_timings_t)); + + return 0; +} + +uint16_t can1_ftcu_timings_ftcu_laptime_best_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_timings_ftcu_laptime_best_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_timings_ftcu_laptime_best_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_timings_ftcu_laptime_last_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_timings_ftcu_laptime_last_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_timings_ftcu_laptime_last_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_timings_ftcu_sectortime_best_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_timings_ftcu_sectortime_best_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_timings_ftcu_sectortime_best_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ftcu_timings_ftcu_sectortime_last_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_ftcu_timings_ftcu_sectortime_last_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_ftcu_timings_ftcu_sectortime_last_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_ftcu_driver_pack( + uint8_t *dst_p, + const struct can1_ftcu_driver_t *src_p, + size_t size) +{ + uint8_t ftcu_steering_angle; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ftcu_apps_percent, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u16(src_p->ftcu_brake_pressure_f, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ftcu_brake_pressure_f, 8u, 0x0fu); + dst_p[2] |= pack_left_shift_u16(src_p->ftcu_brake_pressure_r, 4u, 0xf0u); + dst_p[3] |= pack_right_shift_u16(src_p->ftcu_brake_pressure_r, 4u, 0xffu); + ftcu_steering_angle = (uint8_t)src_p->ftcu_steering_angle; + dst_p[4] |= pack_left_shift_u8(ftcu_steering_angle, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u8(src_p->ftcu_speed, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->ftcu_lapcounter, 0u, 0xffu); + dst_p[7] |= pack_left_shift_u8(src_p->ftcu_sectorcounter, 0u, 0xffu); + + return (8); +} + +int can1_ftcu_driver_unpack( + struct can1_ftcu_driver_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint8_t ftcu_steering_angle; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ftcu_apps_percent = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ftcu_brake_pressure_f = unpack_right_shift_u16(src_p[1], 0u, 0xffu); + dst_p->ftcu_brake_pressure_f |= unpack_left_shift_u16(src_p[2], 8u, 0x0fu); + dst_p->ftcu_brake_pressure_r = unpack_right_shift_u16(src_p[2], 4u, 0xf0u); + dst_p->ftcu_brake_pressure_r |= unpack_left_shift_u16(src_p[3], 4u, 0xffu); + ftcu_steering_angle = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->ftcu_steering_angle = (int8_t)ftcu_steering_angle; + dst_p->ftcu_speed = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->ftcu_lapcounter = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + dst_p->ftcu_sectorcounter = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_ftcu_driver_init(struct can1_ftcu_driver_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ftcu_driver_t)); + + return 0; +} + +uint8_t can1_ftcu_driver_ftcu_apps_percent_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ftcu_driver_ftcu_apps_percent_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ftcu_driver_ftcu_apps_percent_is_in_range(uint8_t value) +{ + return (value <= 100u); +} + +uint16_t can1_ftcu_driver_ftcu_brake_pressure_f_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_ftcu_driver_ftcu_brake_pressure_f_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ftcu_driver_ftcu_brake_pressure_f_is_in_range(uint16_t value) +{ + return (value <= 1600u); +} + +uint16_t can1_ftcu_driver_ftcu_brake_pressure_r_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_ftcu_driver_ftcu_brake_pressure_r_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ftcu_driver_ftcu_brake_pressure_r_is_in_range(uint16_t value) +{ + return (value <= 1600u); +} + +int8_t can1_ftcu_driver_ftcu_steering_angle_encode(double value) +{ + return (int8_t)(value); +} + +double can1_ftcu_driver_ftcu_steering_angle_decode(int8_t value) +{ + return ((double)value); +} + +bool can1_ftcu_driver_ftcu_steering_angle_is_in_range(int8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ftcu_driver_ftcu_speed_encode(double value) +{ + return (uint8_t)(value / 0.2); +} + +double can1_ftcu_driver_ftcu_speed_decode(uint8_t value) +{ + return ((double)value * 0.2); +} + +bool can1_ftcu_driver_ftcu_speed_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ftcu_driver_ftcu_lapcounter_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ftcu_driver_ftcu_lapcounter_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ftcu_driver_ftcu_lapcounter_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ftcu_driver_ftcu_sectorcounter_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ftcu_driver_ftcu_sectorcounter_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ftcu_driver_ftcu_sectorcounter_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_tts_rr_pack( + uint8_t *dst_p, + const struct can1_tts_rr_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->tts_outer_left, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->tts_outer_left, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->tts_center_left, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->tts_center_left, 4u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->tts_center, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->tts_center, 8u, 0x0fu); + dst_p[4] |= pack_left_shift_u16(src_p->tts_center_right, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(src_p->tts_center_right, 4u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->tts_outet_right, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->tts_outet_right, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u8(src_p->tts_status, 4u, 0xf0u); + + return (8); +} + +int can1_tts_rr_unpack( + struct can1_tts_rr_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->tts_outer_left = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->tts_outer_left |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->tts_center_left = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->tts_center_left |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + dst_p->tts_center = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->tts_center |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + dst_p->tts_center_right = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + dst_p->tts_center_right |= unpack_left_shift_u16(src_p[5], 4u, 0xffu); + dst_p->tts_outet_right = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->tts_outet_right |= unpack_left_shift_u16(src_p[7], 8u, 0x0fu); + dst_p->tts_status = unpack_right_shift_u8(src_p[7], 4u, 0xf0u); + + return (0); +} + +int can1_tts_rr_init(struct can1_tts_rr_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_tts_rr_t)); + + return 0; +} + +uint16_t can1_tts_rr_tts_outer_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rr_tts_outer_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rr_tts_outer_left_is_in_range(uint16_t value) +{ + return (value <= 3547u); +} + +uint16_t can1_tts_rr_tts_center_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rr_tts_center_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rr_tts_center_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rr_tts_center_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rr_tts_center_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rr_tts_center_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rr_tts_center_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rr_tts_center_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rr_tts_center_right_is_in_range(uint16_t value) +{ + return (value <= 3547u); +} + +uint16_t can1_tts_rr_tts_outet_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rr_tts_outet_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rr_tts_outet_right_is_in_range(uint16_t value) +{ + return (value <= 3547u); +} + +uint8_t can1_tts_rr_tts_status_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_tts_rr_tts_status_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_tts_rr_tts_status_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +int can1_tts_rl_pack( + uint8_t *dst_p, + const struct can1_tts_rl_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->tts_outer_left, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->tts_outer_left, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->tts_center_left, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->tts_center_left, 4u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->tts_center, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->tts_center, 8u, 0x0fu); + dst_p[4] |= pack_left_shift_u16(src_p->tts_center_right, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(src_p->tts_center_right, 4u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->tts_outer_right, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->tts_outer_right, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u8(src_p->tts_status, 4u, 0xf0u); + + return (8); +} + +int can1_tts_rl_unpack( + struct can1_tts_rl_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->tts_outer_left = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->tts_outer_left |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->tts_center_left = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->tts_center_left |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + dst_p->tts_center = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->tts_center |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + dst_p->tts_center_right = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + dst_p->tts_center_right |= unpack_left_shift_u16(src_p[5], 4u, 0xffu); + dst_p->tts_outer_right = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->tts_outer_right |= unpack_left_shift_u16(src_p[7], 8u, 0x0fu); + dst_p->tts_status = unpack_right_shift_u8(src_p[7], 4u, 0xf0u); + + return (0); +} + +int can1_tts_rl_init(struct can1_tts_rl_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_tts_rl_t)); + + return 0; +} + +uint16_t can1_tts_rl_tts_outer_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rl_tts_outer_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rl_tts_outer_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rl_tts_center_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rl_tts_center_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rl_tts_center_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rl_tts_center_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rl_tts_center_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rl_tts_center_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rl_tts_center_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rl_tts_center_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rl_tts_center_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_rl_tts_outer_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_rl_tts_outer_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_rl_tts_outer_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint8_t can1_tts_rl_tts_status_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_tts_rl_tts_status_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_tts_rl_tts_status_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +int can1_tts_fr_pack( + uint8_t *dst_p, + const struct can1_tts_fr_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->tts_outer_left, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->tts_outer_left, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->tts_center_left, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->tts_center_left, 4u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->tts_center, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->tts_center, 8u, 0x0fu); + dst_p[4] |= pack_left_shift_u16(src_p->tts_center_right, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(src_p->tts_center_right, 4u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->tts_outer_right, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->tts_outer_right, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u8(src_p->tts_status, 4u, 0xf0u); + + return (8); +} + +int can1_tts_fr_unpack( + struct can1_tts_fr_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->tts_outer_left = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->tts_outer_left |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->tts_center_left = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->tts_center_left |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + dst_p->tts_center = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->tts_center |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + dst_p->tts_center_right = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + dst_p->tts_center_right |= unpack_left_shift_u16(src_p[5], 4u, 0xffu); + dst_p->tts_outer_right = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->tts_outer_right |= unpack_left_shift_u16(src_p[7], 8u, 0x0fu); + dst_p->tts_status = unpack_right_shift_u8(src_p[7], 4u, 0xf0u); + + return (0); +} + +int can1_tts_fr_init(struct can1_tts_fr_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_tts_fr_t)); + + return 0; +} + +uint16_t can1_tts_fr_tts_outer_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fr_tts_outer_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fr_tts_outer_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fr_tts_center_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fr_tts_center_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fr_tts_center_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fr_tts_center_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fr_tts_center_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fr_tts_center_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fr_tts_center_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fr_tts_center_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fr_tts_center_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fr_tts_outer_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fr_tts_outer_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fr_tts_outer_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint8_t can1_tts_fr_tts_status_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_tts_fr_tts_status_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_tts_fr_tts_status_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +int can1_tts_fl_pack( + uint8_t *dst_p, + const struct can1_tts_fl_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->tts_outer_left, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->tts_outer_left, 8u, 0x0fu); + dst_p[1] |= pack_left_shift_u16(src_p->tts_center_left, 4u, 0xf0u); + dst_p[2] |= pack_right_shift_u16(src_p->tts_center_left, 4u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->tts_center, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->tts_center, 8u, 0x0fu); + dst_p[4] |= pack_left_shift_u16(src_p->tts_center_right, 4u, 0xf0u); + dst_p[5] |= pack_right_shift_u16(src_p->tts_center_right, 4u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->tts_outer_right, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->tts_outer_right, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u8(src_p->tts_status, 4u, 0xf0u); + + return (8); +} + +int can1_tts_fl_unpack( + struct can1_tts_fl_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->tts_outer_left = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->tts_outer_left |= unpack_left_shift_u16(src_p[1], 8u, 0x0fu); + dst_p->tts_center_left = unpack_right_shift_u16(src_p[1], 4u, 0xf0u); + dst_p->tts_center_left |= unpack_left_shift_u16(src_p[2], 4u, 0xffu); + dst_p->tts_center = unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->tts_center |= unpack_left_shift_u16(src_p[4], 8u, 0x0fu); + dst_p->tts_center_right = unpack_right_shift_u16(src_p[4], 4u, 0xf0u); + dst_p->tts_center_right |= unpack_left_shift_u16(src_p[5], 4u, 0xffu); + dst_p->tts_outer_right = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->tts_outer_right |= unpack_left_shift_u16(src_p[7], 8u, 0x0fu); + dst_p->tts_status = unpack_right_shift_u8(src_p[7], 4u, 0xf0u); + + return (0); +} + +int can1_tts_fl_init(struct can1_tts_fl_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_tts_fl_t)); + + return 0; +} + +uint16_t can1_tts_fl_tts_outer_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fl_tts_outer_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fl_tts_outer_left_is_in_range(uint16_t value) +{ + return (value <= 3547u); +} + +uint16_t can1_tts_fl_tts_center_left_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fl_tts_center_left_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fl_tts_center_left_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fl_tts_center_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fl_tts_center_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fl_tts_center_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fl_tts_center_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fl_tts_center_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fl_tts_center_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint16_t can1_tts_fl_tts_outer_right_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_tts_fl_tts_outer_right_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_tts_fl_tts_outer_right_is_in_range(uint16_t value) +{ + return (value <= 4095u); +} + +uint8_t can1_tts_fl_tts_status_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_tts_fl_tts_status_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_tts_fl_tts_status_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +int can1_stw_param_set_pack( + uint8_t *dst_p, + const struct can1_stw_param_set_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[0] |= pack_left_shift_u16(src_p->stw_param_set, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->stw_param_set, 8u, 0xffu); + + switch (src_p->stw_param_set) { + + case 0: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_slim, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_slim, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_slim, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_slim, 24u, 0xffu); + break; + + case 1: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tlim, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tlim, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tlim, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tlim, 24u, 0xffu); + break; + + case 2: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_plim, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_plim, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_plim, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_plim, 24u, 0xffu); + break; + + case 3: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_discipline, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_discipline, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_discipline, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_discipline, 24u, 0xffu); + break; + + case 4: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tv_on, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tv_on, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tv_on, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tv_on, 24u, 0xffu); + break; + + case 5: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tc_on, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tc_on, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tc_on, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tc_on, 24u, 0xffu); + break; + + case 6: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_reku, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_reku, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_reku, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_reku, 24u, 0xffu); + break; + + case 7: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tc_p, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tc_p, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tc_p, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tc_p, 24u, 0xffu); + break; + + case 8: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tc_i, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tc_i, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tc_i, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tc_i, 24u, 0xffu); + break; + + case 9: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tc_mumax, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tc_mumax, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tc_mumax, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tc_mumax, 24u, 0xffu); + break; + + case 10: + dst_p[2] |= pack_left_shift_u32(src_p->stw_param_tc_slipref, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->stw_param_tc_slipref, 8u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->stw_param_tc_slipref, 16u, 0xffu); + dst_p[5] |= pack_right_shift_u32(src_p->stw_param_tc_slipref, 24u, 0xffu); + break; + + default: + break; + } + + return (6); +} + +int can1_stw_param_set_unpack( + struct can1_stw_param_set_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->stw_param_set = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->stw_param_set |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + + switch (dst_p->stw_param_set) { + + case 0: + dst_p->stw_param_slim = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_slim |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_slim |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_slim |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 1: + dst_p->stw_param_tlim = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tlim |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tlim |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tlim |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 2: + dst_p->stw_param_plim = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_plim |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_plim |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_plim |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 3: + dst_p->stw_param_discipline = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_discipline |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_discipline |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_discipline |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 4: + dst_p->stw_param_tv_on = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tv_on |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tv_on |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tv_on |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 5: + dst_p->stw_param_tc_on = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tc_on |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tc_on |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tc_on |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 6: + dst_p->stw_param_reku = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_reku |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_reku |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_reku |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 7: + dst_p->stw_param_tc_p = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tc_p |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tc_p |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tc_p |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 8: + dst_p->stw_param_tc_i = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tc_i |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tc_i |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tc_i |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 9: + dst_p->stw_param_tc_mumax = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tc_mumax |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tc_mumax |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tc_mumax |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + case 10: + dst_p->stw_param_tc_slipref = unpack_right_shift_u32(src_p[2], 0u, 0xffu); + dst_p->stw_param_tc_slipref |= unpack_left_shift_u32(src_p[3], 8u, 0xffu); + dst_p->stw_param_tc_slipref |= unpack_left_shift_u32(src_p[4], 16u, 0xffu); + dst_p->stw_param_tc_slipref |= unpack_left_shift_u32(src_p[5], 24u, 0xffu); + break; + + default: + break; + } + + return (0); +} + +int can1_stw_param_set_init(struct can1_stw_param_set_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_stw_param_set_t)); + + return 0; +} + +uint16_t can1_stw_param_set_stw_param_set_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_stw_param_set_stw_param_set_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_set_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_stw_param_set_stw_param_tc_slipref_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tc_slipref_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tc_slipref_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_tc_mumax_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tc_mumax_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tc_mumax_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_tc_i_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tc_i_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tc_i_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_plim_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_plim_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_plim_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_stw_param_set_stw_param_tlim_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tlim_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tlim_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_tc_p_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tc_p_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tc_p_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_reku_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_reku_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_reku_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_tc_on_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tc_on_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tc_on_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_tv_on_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_tv_on_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_tv_on_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_discipline_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_discipline_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_discipline_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +uint32_t can1_stw_param_set_stw_param_slim_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_stw_param_set_stw_param_slim_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_stw_param_set_stw_param_slim_is_in_range(uint32_t value) +{ + return (value <= 1u); +} + +int can1_ams_slave0_status_pack( + uint8_t *dst_p, + const struct can1_ams_slave0_status_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_error, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_status_id, 0u, 0x7fu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_status_temp_sensor, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->ams_slave_status_min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->ams_slave_status_min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->ams_slave_status_max_cell_volt, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->ams_slave_status_max_cell_volt, 0u, 0xffu); + ams_slave_status_max_temp = (uint16_t)src_p->ams_slave_status_max_temp; + dst_p[6] |= pack_right_shift_u16(ams_slave_status_max_temp, 8u, 0x0fu); + dst_p[7] |= pack_left_shift_u16(ams_slave_status_max_temp, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave0_status_unpack( + struct can1_ams_slave0_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ams_slave_status_max_temp; + + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_status_error = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->ams_slave_status_id = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->ams_slave_status_temp_sensor = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_status_min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->ams_slave_status_min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->ams_slave_status_max_cell_volt = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->ams_slave_status_max_cell_volt |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + ams_slave_status_max_temp = unpack_left_shift_u16(src_p[6], 8u, 0x0fu); + ams_slave_status_max_temp |= unpack_right_shift_u16(src_p[7], 0u, 0xffu); + + if ((ams_slave_status_max_temp & (1u << 11)) != 0u) { + ams_slave_status_max_temp |= 0xf000u; + } + + dst_p->ams_slave_status_max_temp = (int16_t)ams_slave_status_max_temp; + + return (0); +} + +int can1_ams_slave0_status_init(struct can1_ams_slave0_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave0_status_t)); + + return 0; +} + +uint8_t can1_ams_slave0_status_ams_slave_status_error_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave0_status_ams_slave_status_error_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_status_ams_slave_status_error_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_slave0_status_ams_slave_status_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave0_status_ams_slave_status_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_status_ams_slave_status_id_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_slave0_status_ams_slave_status_temp_sensor_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave0_status_ams_slave_status_temp_sensor_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave0_status_ams_slave_status_temp_sensor_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint16_t can1_ams_slave0_status_ams_slave_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_status_ams_slave_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_status_ams_slave_status_min_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +uint16_t can1_ams_slave0_status_ams_slave_status_max_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_slave0_status_ams_slave_status_max_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_slave0_status_ams_slave_status_max_cell_volt_is_in_range(uint16_t value) +{ + return (value <= 6553u); +} + +int16_t can1_ams_slave0_status_ams_slave_status_max_temp_encode(double value) +{ + return (int16_t)(value / 0.0625); +} + +double can1_ams_slave0_status_ams_slave_status_max_temp_decode(int16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_slave0_status_ams_slave_status_max_temp_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 16)); +} + +int can1_ssu_message_pack( + uint8_t *dst_p, + const struct can1_ssu_message_t *src_p, + size_t size) +{ + uint16_t ssu_air_temp; + uint16_t ssu_pressure; + + if (size < 4u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 4); + + ssu_pressure = (uint16_t)src_p->ssu_pressure; + dst_p[0] |= pack_left_shift_u16(ssu_pressure, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(ssu_pressure, 8u, 0xffu); + ssu_air_temp = (uint16_t)src_p->ssu_air_temp; + dst_p[2] |= pack_left_shift_u16(ssu_air_temp, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(ssu_air_temp, 8u, 0xffu); + + return (4); +} + +int can1_ssu_message_unpack( + struct can1_ssu_message_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t ssu_air_temp; + uint16_t ssu_pressure; + + if (size < 4u) { + return (-EINVAL); + } + + ssu_pressure = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + ssu_pressure |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->ssu_pressure = (int16_t)ssu_pressure; + ssu_air_temp = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + ssu_air_temp |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->ssu_air_temp = (int16_t)ssu_air_temp; + + return (0); +} + +int can1_ssu_message_init(struct can1_ssu_message_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ssu_message_t)); + + return 0; +} + +int16_t can1_ssu_message_ssu_pressure_encode(double value) +{ + return (int16_t)(value); +} + +double can1_ssu_message_ssu_pressure_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_ssu_message_ssu_pressure_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +int16_t can1_ssu_message_ssu_air_temp_encode(double value) +{ + return (int16_t)(value / 0.1); +} + +double can1_ssu_message_ssu_air_temp_decode(int16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_ssu_message_ssu_air_temp_is_in_range(int16_t value) +{ + return ((value >= -200) && (value <= 800)); +} + +int can1_ams_status_pack( + uint8_t *dst_p, + const struct can1_ams_status_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_state, 0u, 0x7fu); + dst_p[0] |= pack_left_shift_u8(src_p->sdc_closed, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->soc, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u16(src_p->min_cell_volt, 8u, 0xffu); + dst_p[3] |= pack_left_shift_u16(src_p->min_cell_volt, 0u, 0xffu); + dst_p[4] |= pack_right_shift_u16(src_p->max_cell_temp, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u16(src_p->max_cell_temp, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->ams_imd_state, 0u, 0x7fu); + dst_p[6] |= pack_left_shift_u8(src_p->ams_imd_ok, 7u, 0x80u); + + return (8); +} + +int can1_ams_status_unpack( + struct can1_ams_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_state = unpack_right_shift_u8(src_p[0], 0u, 0x7fu); + dst_p->sdc_closed = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->soc = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->min_cell_volt = unpack_left_shift_u16(src_p[2], 8u, 0xffu); + dst_p->min_cell_volt |= unpack_right_shift_u16(src_p[3], 0u, 0xffu); + dst_p->max_cell_temp = unpack_left_shift_u16(src_p[4], 8u, 0xffu); + dst_p->max_cell_temp |= unpack_right_shift_u16(src_p[5], 0u, 0xffu); + dst_p->ams_imd_state = unpack_right_shift_u8(src_p[6], 0u, 0x7fu); + dst_p->ams_imd_ok = unpack_right_shift_u8(src_p[6], 7u, 0x80u); + + return (0); +} + +int can1_ams_status_init(struct can1_ams_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_status_t)); + + return 0; +} + +uint8_t can1_ams_status_ams_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_status_ams_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_status_ams_state_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_status_sdc_closed_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_status_sdc_closed_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_status_sdc_closed_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_status_soc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_status_soc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_status_soc_is_in_range(uint8_t value) +{ + return (value <= 100u); +} + +uint16_t can1_ams_status_min_cell_volt_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_ams_status_min_cell_volt_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_ams_status_min_cell_volt_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_ams_status_max_cell_temp_encode(double value) +{ + return (uint16_t)(value / 0.0625); +} + +double can1_ams_status_max_cell_temp_decode(uint16_t value) +{ + return ((double)value * 0.0625); +} + +bool can1_ams_status_max_cell_temp_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ams_status_ams_imd_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_status_ams_imd_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_status_ams_imd_state_is_in_range(uint8_t value) +{ + return (value <= 127u); +} + +uint8_t can1_ams_status_ams_imd_ok_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_status_ams_imd_ok_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_status_ams_imd_ok_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +int can1_ams_slave_panic_pack( + uint8_t *dst_p, + const struct can1_ams_slave_panic_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u8(src_p->ams_slave_panic_slave_id, 0u, 0xffu); + dst_p[1] |= pack_left_shift_u8(src_p->ams_slave_panic_kind, 0u, 0xffu); + dst_p[2] |= pack_right_shift_u32(src_p->ams_slave_panic_arg, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->ams_slave_panic_arg, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->ams_slave_panic_arg, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->ams_slave_panic_arg, 0u, 0xffu); + + return (8); +} + +int can1_ams_slave_panic_unpack( + struct can1_ams_slave_panic_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->ams_slave_panic_slave_id = unpack_right_shift_u8(src_p[0], 0u, 0xffu); + dst_p->ams_slave_panic_kind = unpack_right_shift_u8(src_p[1], 0u, 0xffu); + dst_p->ams_slave_panic_arg = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->ams_slave_panic_arg |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->ams_slave_panic_arg |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->ams_slave_panic_arg |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_ams_slave_panic_init(struct can1_ams_slave_panic_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_slave_panic_t)); + + return 0; +} + +uint8_t can1_ams_slave_panic_ams_slave_panic_slave_id_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave_panic_ams_slave_panic_slave_id_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave_panic_ams_slave_panic_slave_id_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_ams_slave_panic_ams_slave_panic_kind_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_slave_panic_ams_slave_panic_kind_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_slave_panic_ams_slave_panic_kind_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint32_t can1_ams_slave_panic_ams_slave_panic_arg_encode(double value) +{ + return (uint32_t)(value); +} + +double can1_ams_slave_panic_ams_slave_panic_arg_decode(uint32_t value) +{ + return ((double)value); +} + +bool can1_ams_slave_panic_ams_slave_panic_arg_is_in_range(uint32_t value) +{ + (void)value; + + return (true); +} + +int can1_ams_in_pack( + uint8_t *dst_p, + const struct can1_ams_in_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->ts_activate, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->inverters_discharged, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->lap_number, 2u, 0xfcu); + + return (1); +} + +int can1_ams_in_unpack( + struct can1_ams_in_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->ts_activate = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->inverters_discharged = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->lap_number = unpack_right_shift_u8(src_p[0], 2u, 0xfcu); + + return (0); +} + +int can1_ams_in_init(struct can1_ams_in_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_ams_in_t)); + + return 0; +} + +uint8_t can1_ams_in_ts_activate_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_in_ts_activate_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_in_ts_activate_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_in_inverters_discharged_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_in_inverters_discharged_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_in_inverters_discharged_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_ams_in_lap_number_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_ams_in_lap_number_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_ams_in_lap_number_is_in_range(uint8_t value) +{ + return (value <= 64u); +} + +int can1_shunt_current_pack( + uint8_t *dst_p, + const struct can1_shunt_current_t *src_p, + size_t size) +{ + uint32_t shunt_current; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + shunt_current = (uint32_t)src_p->shunt_current; + dst_p[2] |= pack_right_shift_u32(shunt_current, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(shunt_current, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(shunt_current, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(shunt_current, 0u, 0xffu); + + return (6); +} + +int can1_shunt_current_unpack( + struct can1_shunt_current_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t shunt_current; + + if (size < 6u) { + return (-EINVAL); + } + + shunt_current = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + shunt_current |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + shunt_current |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + shunt_current |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + dst_p->shunt_current = (int32_t)shunt_current; + + return (0); +} + +int can1_shunt_current_init(struct can1_shunt_current_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_shunt_current_t)); + + return 0; +} + +int32_t can1_shunt_current_shunt_current_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_shunt_current_shunt_current_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_shunt_current_shunt_current_is_in_range(int32_t value) +{ + return ((value >= -2000000000) && (value <= 2000000000)); +} + +int can1_shunt_voltage1_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage1_t *src_p, + size_t size) +{ + uint32_t shunt_voltage1; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + shunt_voltage1 = (uint32_t)src_p->shunt_voltage1; + dst_p[2] |= pack_right_shift_u32(shunt_voltage1, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(shunt_voltage1, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(shunt_voltage1, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(shunt_voltage1, 0u, 0xffu); + + return (6); +} + +int can1_shunt_voltage1_unpack( + struct can1_shunt_voltage1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t shunt_voltage1; + + if (size < 6u) { + return (-EINVAL); + } + + shunt_voltage1 = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + shunt_voltage1 |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + shunt_voltage1 |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + shunt_voltage1 |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + dst_p->shunt_voltage1 = (int32_t)shunt_voltage1; + + return (0); +} + +int can1_shunt_voltage1_init(struct can1_shunt_voltage1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_shunt_voltage1_t)); + + return 0; +} + +int32_t can1_shunt_voltage1_shunt_voltage1_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_shunt_voltage1_shunt_voltage1_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_shunt_voltage1_shunt_voltage1_is_in_range(int32_t value) +{ + return ((value >= -2000000000) && (value <= 2000000000)); +} + +int can1_shunt_voltage2_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage2_t *src_p, + size_t size) +{ + uint32_t shunt_voltage2; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + shunt_voltage2 = (uint32_t)src_p->shunt_voltage2; + dst_p[2] |= pack_right_shift_u32(shunt_voltage2, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(shunt_voltage2, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(shunt_voltage2, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(shunt_voltage2, 0u, 0xffu); + + return (6); +} + +int can1_shunt_voltage2_unpack( + struct can1_shunt_voltage2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t shunt_voltage2; + + if (size < 6u) { + return (-EINVAL); + } + + shunt_voltage2 = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + shunt_voltage2 |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + shunt_voltage2 |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + shunt_voltage2 |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + dst_p->shunt_voltage2 = (int32_t)shunt_voltage2; + + return (0); +} + +int can1_shunt_voltage2_init(struct can1_shunt_voltage2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_shunt_voltage2_t)); + + return 0; +} + +int32_t can1_shunt_voltage2_shunt_voltage2_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_shunt_voltage2_shunt_voltage2_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_shunt_voltage2_shunt_voltage2_is_in_range(int32_t value) +{ + return ((value >= -2000000000) && (value <= 2000000000)); +} + +int can1_shunt_voltage3_pack( + uint8_t *dst_p, + const struct can1_shunt_voltage3_t *src_p, + size_t size) +{ + uint32_t shunt_voltage3; + + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + shunt_voltage3 = (uint32_t)src_p->shunt_voltage3; + dst_p[2] |= pack_right_shift_u32(shunt_voltage3, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(shunt_voltage3, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(shunt_voltage3, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(shunt_voltage3, 0u, 0xffu); + + return (6); +} + +int can1_shunt_voltage3_unpack( + struct can1_shunt_voltage3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint32_t shunt_voltage3; + + if (size < 6u) { + return (-EINVAL); + } + + shunt_voltage3 = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + shunt_voltage3 |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + shunt_voltage3 |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + shunt_voltage3 |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + dst_p->shunt_voltage3 = (int32_t)shunt_voltage3; + + return (0); +} + +int can1_shunt_voltage3_init(struct can1_shunt_voltage3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_shunt_voltage3_t)); + + return 0; +} + +int32_t can1_shunt_voltage3_shunt_voltage3_encode(double value) +{ + return (int32_t)(value / 0.001); +} + +double can1_shunt_voltage3_shunt_voltage3_decode(int32_t value) +{ + return ((double)value * 0.001); +} + +bool can1_shunt_voltage3_shunt_voltage3_is_in_range(int32_t value) +{ + return ((value >= -2000000000) && (value <= 2000000000)); +} + +int can1_shunt_temperature_pack( + uint8_t *dst_p, + const struct can1_shunt_temperature_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[2] |= pack_right_shift_u32(src_p->shunt_temperature, 24u, 0xffu); + dst_p[3] |= pack_right_shift_u32(src_p->shunt_temperature, 16u, 0xffu); + dst_p[4] |= pack_right_shift_u32(src_p->shunt_temperature, 8u, 0xffu); + dst_p[5] |= pack_left_shift_u32(src_p->shunt_temperature, 0u, 0xffu); + + return (6); +} + +int can1_shunt_temperature_unpack( + struct can1_shunt_temperature_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->shunt_temperature = unpack_left_shift_u32(src_p[2], 24u, 0xffu); + dst_p->shunt_temperature |= unpack_left_shift_u32(src_p[3], 16u, 0xffu); + dst_p->shunt_temperature |= unpack_left_shift_u32(src_p[4], 8u, 0xffu); + dst_p->shunt_temperature |= unpack_right_shift_u32(src_p[5], 0u, 0xffu); + + return (0); +} + +int can1_shunt_temperature_init(struct can1_shunt_temperature_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_shunt_temperature_t)); + + return 0; +} + +uint32_t can1_shunt_temperature_shunt_temperature_encode(double value) +{ + return (uint32_t)(value / 0.1); +} + +double can1_shunt_temperature_shunt_temperature_decode(uint32_t value) +{ + return ((double)value * 0.1); +} + +bool can1_shunt_temperature_shunt_temperature_is_in_range(uint32_t value) +{ + return (value <= 10000u); +} + +int can1_pdu_command_pack( + uint8_t *dst_p, + const struct can1_pdu_command_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_misc, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_sdc, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_inverter, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_ts_cooling, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_acc_cooling, 4u, 0x10u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_lldar, 5u, 0x20u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_drs, 6u, 0x40u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_enable_epsc, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_enable_acu, 0u, 0x01u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_enable_ebs_a, 1u, 0x02u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_enable_ebs_b, 2u, 0x04u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_enable_ebs_c, 3u, 0x08u); + + return (7); +} + +int can1_pdu_command_unpack( + struct can1_pdu_command_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->pdu_enable_misc = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->pdu_enable_sdc = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->pdu_enable_inverter = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->pdu_enable_ts_cooling = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->pdu_enable_acc_cooling = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + dst_p->pdu_enable_lldar = unpack_right_shift_u8(src_p[0], 5u, 0x20u); + dst_p->pdu_enable_drs = unpack_right_shift_u8(src_p[0], 6u, 0x40u); + dst_p->pdu_enable_epsc = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->pdu_enable_acu = unpack_right_shift_u8(src_p[1], 0u, 0x01u); + dst_p->pdu_enable_ebs_a = unpack_right_shift_u8(src_p[1], 1u, 0x02u); + dst_p->pdu_enable_ebs_b = unpack_right_shift_u8(src_p[1], 2u, 0x04u); + dst_p->pdu_enable_ebs_c = unpack_right_shift_u8(src_p[1], 3u, 0x08u); + + return (0); +} + +int can1_pdu_command_init(struct can1_pdu_command_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_command_t)); + + return 0; +} + +uint8_t can1_pdu_command_pdu_enable_misc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_misc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_misc_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_sdc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_sdc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_sdc_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_inverter_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_inverter_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_inverter_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_ts_cooling_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_ts_cooling_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_ts_cooling_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_acc_cooling_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_acc_cooling_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_acc_cooling_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_lldar_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_lldar_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_lldar_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_drs_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_drs_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_drs_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_epsc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_epsc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_epsc_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_acu_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_acu_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_acu_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_ebs_a_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_ebs_a_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_ebs_a_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_ebs_b_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_ebs_b_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_ebs_b_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_command_pdu_enable_ebs_c_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_command_pdu_enable_ebs_c_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_command_pdu_enable_ebs_c_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +int can1_pdu_response_pack( + uint8_t *dst_p, + const struct can1_pdu_response_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->pdu_alwayson_tx, 7u, 0x80u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_shutdown_circuit_tx, 6u, 0x40u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_lidar_tx, 5u, 0x20u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_acu_tx, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_servos_regler_tx, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->pdu_inverter_tx, 1u, 0x02u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_misc_tx, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_servo_tx, 6u, 0x40u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_ebs_valve_1_tx, 5u, 0x20u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_ebs_valve_2_tx, 4u, 0x10u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_cs_valve_tx, 3u, 0x08u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_aggregat_tx, 1u, 0x02u); + dst_p[1] |= pack_left_shift_u8(src_p->pdu_steering_tx, 0u, 0x01u); + dst_p[2] |= pack_left_shift_u8(src_p->pdu_pwm_tsac_fans, 0u, 0xffu); + dst_p[3] |= pack_left_shift_u8(src_p->pdu_pwm_radiatot_fans_tx, 0u, 0xffu); + dst_p[4] |= pack_left_shift_u8(src_p->pdu_pwm_aggregat, 0u, 0xffu); + dst_p[5] |= pack_left_shift_u8(src_p->pdu_pwm_pump, 0u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->pdu_heartbeat_ok_tx, 0u, 0xffu); + + return (7); +} + +int can1_pdu_response_unpack( + struct can1_pdu_response_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->pdu_alwayson_tx = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->pdu_shutdown_circuit_tx = unpack_right_shift_u8(src_p[0], 6u, 0x40u); + dst_p->pdu_lidar_tx = unpack_right_shift_u8(src_p[0], 5u, 0x20u); + dst_p->pdu_acu_tx = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->pdu_servos_regler_tx = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->pdu_inverter_tx = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->pdu_misc_tx = unpack_right_shift_u8(src_p[1], 7u, 0x80u); + dst_p->pdu_servo_tx = unpack_right_shift_u8(src_p[1], 6u, 0x40u); + dst_p->pdu_ebs_valve_1_tx = unpack_right_shift_u8(src_p[1], 5u, 0x20u); + dst_p->pdu_ebs_valve_2_tx = unpack_right_shift_u8(src_p[1], 4u, 0x10u); + dst_p->pdu_cs_valve_tx = unpack_right_shift_u8(src_p[1], 3u, 0x08u); + dst_p->pdu_aggregat_tx = unpack_right_shift_u8(src_p[1], 1u, 0x02u); + dst_p->pdu_steering_tx = unpack_right_shift_u8(src_p[1], 0u, 0x01u); + dst_p->pdu_pwm_tsac_fans = unpack_right_shift_u8(src_p[2], 0u, 0xffu); + dst_p->pdu_pwm_radiatot_fans_tx = unpack_right_shift_u8(src_p[3], 0u, 0xffu); + dst_p->pdu_pwm_aggregat = unpack_right_shift_u8(src_p[4], 0u, 0xffu); + dst_p->pdu_pwm_pump = unpack_right_shift_u8(src_p[5], 0u, 0xffu); + dst_p->pdu_heartbeat_ok_tx = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_pdu_response_init(struct can1_pdu_response_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_response_t)); + + return 0; +} + +uint8_t can1_pdu_response_pdu_alwayson_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_alwayson_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_alwayson_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_shutdown_circuit_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_shutdown_circuit_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_shutdown_circuit_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_lidar_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_lidar_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_lidar_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_acu_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_acu_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_acu_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_servos_regler_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_servos_regler_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_servos_regler_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_inverter_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_inverter_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_inverter_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_misc_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_misc_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_misc_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_servo_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_servo_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_servo_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_ebs_valve_1_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_ebs_valve_1_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_ebs_valve_1_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_ebs_valve_2_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_ebs_valve_2_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_ebs_valve_2_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_cs_valve_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_cs_valve_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_cs_valve_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_aggregat_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_aggregat_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_aggregat_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_steering_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_steering_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_steering_tx_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_pdu_response_pdu_pwm_tsac_fans_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_pwm_tsac_fans_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_pwm_tsac_fans_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pdu_response_pdu_pwm_radiatot_fans_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_pwm_radiatot_fans_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_pwm_radiatot_fans_tx_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pdu_response_pdu_pwm_aggregat_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_pwm_aggregat_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_pwm_aggregat_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pdu_response_pdu_pwm_pump_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_pwm_pump_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_pwm_pump_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_pdu_response_pdu_heartbeat_ok_tx_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_pdu_response_pdu_heartbeat_ok_tx_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_pdu_response_pdu_heartbeat_ok_tx_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_as_mission_fb_pack( + uint8_t *dst_p, + const struct can1_as_mission_fb_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->mission_selection, 0u, 0x07u); + + return (1); +} + +int can1_as_mission_fb_unpack( + struct can1_as_mission_fb_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->mission_selection = unpack_right_shift_u8(src_p[0], 0u, 0x07u); + + return (0); +} + +int can1_as_mission_fb_init(struct can1_as_mission_fb_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_as_mission_fb_t)); + + return 0; +} + +uint8_t can1_as_mission_fb_mission_selection_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_as_mission_fb_mission_selection_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_as_mission_fb_mission_selection_is_in_range(uint8_t value) +{ + return ((value >= 1u) && (value <= 7u)); +} + +int can1_stw_mission_selected_pack( + uint8_t *dst_p, + const struct can1_stw_mission_selected_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->mission_selection, 0u, 0x07u); + + return (1); +} + +int can1_stw_mission_selected_unpack( + struct can1_stw_mission_selected_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->mission_selection = unpack_right_shift_u8(src_p[0], 0u, 0x07u); + + return (0); +} + +int can1_stw_mission_selected_init(struct can1_stw_mission_selected_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_stw_mission_selected_t)); + + return 0; +} + +uint8_t can1_stw_mission_selected_mission_selection_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_mission_selected_mission_selection_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_mission_selected_mission_selection_is_in_range(uint8_t value) +{ + return ((value >= 1u) && (value <= 7u)); +} + +int can1_epsc_out_pack( + uint8_t *dst_p, + const struct can1_epsc_out_t *src_p, + size_t size) +{ + uint16_t epsc_measured_rpm; + + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + epsc_measured_rpm = (uint16_t)src_p->epsc_measured_rpm; + dst_p[0] |= pack_left_shift_u16(epsc_measured_rpm, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(epsc_measured_rpm, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->epsc_measured_steering_angle, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->epsc_measured_steering_angle, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->epsc_measured_mosfet_temperature, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->epsc_measured_mosfet_temperature, 8u, 0x03u); + dst_p[5] |= pack_left_shift_u16(src_p->epsc_measured_voltage, 2u, 0xfcu); + dst_p[6] |= pack_right_shift_u16(src_p->epsc_measured_voltage, 6u, 0x0fu); + dst_p[7] |= pack_left_shift_u8(src_p->epsc_measured_current, 0u, 0xffu); + + return (8); +} + +int can1_epsc_out_unpack( + struct can1_epsc_out_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t epsc_measured_rpm; + + if (size < 8u) { + return (-EINVAL); + } + + epsc_measured_rpm = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + epsc_measured_rpm |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->epsc_measured_rpm = (int16_t)epsc_measured_rpm; + dst_p->epsc_measured_steering_angle = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->epsc_measured_steering_angle |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->epsc_measured_mosfet_temperature = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->epsc_measured_mosfet_temperature |= unpack_left_shift_u16(src_p[5], 8u, 0x03u); + dst_p->epsc_measured_voltage = unpack_right_shift_u16(src_p[5], 2u, 0xfcu); + dst_p->epsc_measured_voltage |= unpack_left_shift_u16(src_p[6], 6u, 0x0fu); + dst_p->epsc_measured_current = unpack_right_shift_u8(src_p[7], 0u, 0xffu); + + return (0); +} + +int can1_epsc_out_init(struct can1_epsc_out_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_epsc_out_t)); + + return 0; +} + +int16_t can1_epsc_out_epsc_measured_rpm_encode(double value) +{ + return (int16_t)(value / 0.1); +} + +double can1_epsc_out_epsc_measured_rpm_decode(int16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_epsc_out_epsc_measured_rpm_is_in_range(int16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_epsc_out_epsc_measured_steering_angle_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_epsc_out_epsc_measured_steering_angle_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_epsc_out_epsc_measured_steering_angle_is_in_range(uint16_t value) +{ + return (value <= 36000u); +} + +uint16_t can1_epsc_out_epsc_measured_mosfet_temperature_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_epsc_out_epsc_measured_mosfet_temperature_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_epsc_out_epsc_measured_mosfet_temperature_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint16_t can1_epsc_out_epsc_measured_voltage_encode(double value) +{ + return (uint16_t)(value / 0.1); +} + +double can1_epsc_out_epsc_measured_voltage_decode(uint16_t value) +{ + return ((double)value * 0.1); +} + +bool can1_epsc_out_epsc_measured_voltage_is_in_range(uint16_t value) +{ + return (value <= 1023u); +} + +uint8_t can1_epsc_out_epsc_measured_current_encode(double value) +{ + return (uint8_t)(value / 0.1); +} + +double can1_epsc_out_epsc_measured_current_decode(uint8_t value) +{ + return ((double)value * 0.1); +} + +bool can1_epsc_out_epsc_measured_current_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_epsc_steering_in_pack( + uint8_t *dst_p, + const struct can1_epsc_steering_in_t *src_p, + size_t size) +{ + uint16_t epsc_desired_steering_angle; + + if (size < 2u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 2); + + epsc_desired_steering_angle = (uint16_t)src_p->epsc_desired_steering_angle; + dst_p[0] |= pack_left_shift_u16(epsc_desired_steering_angle, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(epsc_desired_steering_angle, 8u, 0x03u); + + return (2); +} + +int can1_epsc_steering_in_unpack( + struct can1_epsc_steering_in_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + uint16_t epsc_desired_steering_angle; + + if (size < 2u) { + return (-EINVAL); + } + + epsc_desired_steering_angle = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + epsc_desired_steering_angle |= unpack_left_shift_u16(src_p[1], 8u, 0x03u); + + if ((epsc_desired_steering_angle & (1u << 9)) != 0u) { + epsc_desired_steering_angle |= 0xfc00u; + } + + dst_p->epsc_desired_steering_angle = (int16_t)epsc_desired_steering_angle; + + return (0); +} + +int can1_epsc_steering_in_init(struct can1_epsc_steering_in_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_epsc_steering_in_t)); + + return 0; +} + +int16_t can1_epsc_steering_in_epsc_desired_steering_angle_encode(double value) +{ + return (int16_t)(value); +} + +double can1_epsc_steering_in_epsc_desired_steering_angle_decode(int16_t value) +{ + return ((double)value); +} + +bool can1_epsc_steering_in_epsc_desired_steering_angle_is_in_range(int16_t value) +{ + return ((value >= 0) && (value <= 0)); +} + +int can1_stw_buttons_pack( + uint8_t *dst_p, + const struct can1_stw_buttons_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 1); + + dst_p[0] |= pack_left_shift_u8(src_p->stw_button_drs, 0u, 0x01u); + dst_p[0] |= pack_left_shift_u8(src_p->stw_button_1, 1u, 0x02u); + dst_p[0] |= pack_left_shift_u8(src_p->stw_button_2, 2u, 0x04u); + dst_p[0] |= pack_left_shift_u8(src_p->stw_button_3, 3u, 0x08u); + dst_p[0] |= pack_left_shift_u8(src_p->stw_button_4, 4u, 0x10u); + + return (1); +} + +int can1_stw_buttons_unpack( + struct can1_stw_buttons_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 1u) { + return (-EINVAL); + } + + dst_p->stw_button_drs = unpack_right_shift_u8(src_p[0], 0u, 0x01u); + dst_p->stw_button_1 = unpack_right_shift_u8(src_p[0], 1u, 0x02u); + dst_p->stw_button_2 = unpack_right_shift_u8(src_p[0], 2u, 0x04u); + dst_p->stw_button_3 = unpack_right_shift_u8(src_p[0], 3u, 0x08u); + dst_p->stw_button_4 = unpack_right_shift_u8(src_p[0], 4u, 0x10u); + + return (0); +} + +int can1_stw_buttons_init(struct can1_stw_buttons_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_stw_buttons_t)); + + return 0; +} + +uint8_t can1_stw_buttons_stw_button_drs_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_buttons_stw_button_drs_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_buttons_stw_button_drs_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_buttons_stw_button_1_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_buttons_stw_button_1_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_buttons_stw_button_1_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_buttons_stw_button_2_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_buttons_stw_button_2_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_buttons_stw_button_2_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_buttons_stw_button_3_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_buttons_stw_button_3_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_buttons_stw_button_3_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_buttons_stw_button_4_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_buttons_stw_button_4_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_buttons_stw_button_4_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +int can1_stw_status_pack( + uint8_t *dst_p, + const struct can1_stw_status_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 7); + + dst_p[0] |= pack_left_shift_u8(src_p->lap_count, 0u, 0x3fu); + dst_p[0] |= pack_left_shift_u8(src_p->err_pdu, 6u, 0x40u); + dst_p[0] |= pack_left_shift_u8(src_p->err_res, 7u, 0x80u); + dst_p[1] |= pack_left_shift_u8(src_p->r2_d_progress, 0u, 0x0fu); + dst_p[1] |= pack_left_shift_u8(src_p->as_state_stw, 4u, 0x70u); + dst_p[1] |= pack_left_shift_u8(src_p->err_as, 7u, 0x80u); + dst_p[2] |= pack_left_shift_u8(src_p->err_app_sp, 0u, 0x01u); + dst_p[2] |= pack_left_shift_u8(src_p->err_s_bspd, 1u, 0x02u); + dst_p[2] |= pack_left_shift_u8(src_p->err_scs, 2u, 0x04u); + dst_p[2] |= pack_left_shift_u8(src_p->err_con_mon, 3u, 0x08u); + dst_p[2] |= pack_left_shift_u8(src_p->err_ini_chk, 4u, 0x10u); + dst_p[2] |= pack_left_shift_u8(src_p->err_inv2, 5u, 0x20u); + dst_p[2] |= pack_left_shift_u8(src_p->err_inv1, 6u, 0x40u); + dst_p[2] |= pack_left_shift_u8(src_p->err_ams, 7u, 0x80u); + dst_p[3] |= pack_left_shift_u8(src_p->err_sdc, 0u, 0x01u); + dst_p[3] |= pack_left_shift_u8(src_p->sdc_status, 1u, 0x1eu); + dst_p[3] |= pack_left_shift_u8(src_p->inv2_ready, 5u, 0x20u); + dst_p[3] |= pack_left_shift_u8(src_p->inv1_ready, 6u, 0x40u); + dst_p[4] |= pack_left_shift_u16(src_p->energy_per_lap, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->energy_per_lap, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u8(src_p->ini_chk_state, 0u, 0xffu); + + return (7); +} + +int can1_stw_status_unpack( + struct can1_stw_status_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 7u) { + return (-EINVAL); + } + + dst_p->lap_count = unpack_right_shift_u8(src_p[0], 0u, 0x3fu); + dst_p->err_pdu = unpack_right_shift_u8(src_p[0], 6u, 0x40u); + dst_p->err_res = unpack_right_shift_u8(src_p[0], 7u, 0x80u); + dst_p->r2_d_progress = unpack_right_shift_u8(src_p[1], 0u, 0x0fu); + dst_p->as_state_stw = unpack_right_shift_u8(src_p[1], 4u, 0x70u); + dst_p->err_as = unpack_right_shift_u8(src_p[1], 7u, 0x80u); + dst_p->err_app_sp = unpack_right_shift_u8(src_p[2], 0u, 0x01u); + dst_p->err_s_bspd = unpack_right_shift_u8(src_p[2], 1u, 0x02u); + dst_p->err_scs = unpack_right_shift_u8(src_p[2], 2u, 0x04u); + dst_p->err_con_mon = unpack_right_shift_u8(src_p[2], 3u, 0x08u); + dst_p->err_ini_chk = unpack_right_shift_u8(src_p[2], 4u, 0x10u); + dst_p->err_inv2 = unpack_right_shift_u8(src_p[2], 5u, 0x20u); + dst_p->err_inv1 = unpack_right_shift_u8(src_p[2], 6u, 0x40u); + dst_p->err_ams = unpack_right_shift_u8(src_p[2], 7u, 0x80u); + dst_p->err_sdc = unpack_right_shift_u8(src_p[3], 0u, 0x01u); + dst_p->sdc_status = unpack_right_shift_u8(src_p[3], 1u, 0x1eu); + dst_p->inv2_ready = unpack_right_shift_u8(src_p[3], 5u, 0x20u); + dst_p->inv1_ready = unpack_right_shift_u8(src_p[3], 6u, 0x40u); + dst_p->energy_per_lap = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->energy_per_lap |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->ini_chk_state = unpack_right_shift_u8(src_p[6], 0u, 0xffu); + + return (0); +} + +int can1_stw_status_init(struct can1_stw_status_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_stw_status_t)); + + return 0; +} + +uint8_t can1_stw_status_lap_count_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_lap_count_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_lap_count_is_in_range(uint8_t value) +{ + return (value <= 64u); +} + +uint8_t can1_stw_status_err_pdu_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_pdu_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_pdu_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_res_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_res_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_res_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_r2_d_progress_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_r2_d_progress_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_r2_d_progress_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +uint8_t can1_stw_status_as_state_stw_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_as_state_stw_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_as_state_stw_is_in_range(uint8_t value) +{ + return (value <= 5u); +} + +uint8_t can1_stw_status_err_as_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_as_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_as_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_app_sp_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_app_sp_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_app_sp_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_s_bspd_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_s_bspd_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_s_bspd_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_scs_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_scs_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_scs_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_con_mon_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_con_mon_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_con_mon_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_ini_chk_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_ini_chk_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_ini_chk_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_inv2_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_inv2_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_inv2_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_inv1_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_inv1_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_inv1_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_ams_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_ams_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_ams_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_err_sdc_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_err_sdc_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_err_sdc_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_sdc_status_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_sdc_status_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_sdc_status_is_in_range(uint8_t value) +{ + return (value <= 15u); +} + +uint8_t can1_stw_status_inv2_ready_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_inv2_ready_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_inv2_ready_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint8_t can1_stw_status_inv1_ready_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_inv1_ready_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_inv1_ready_is_in_range(uint8_t value) +{ + return (value <= 1u); +} + +uint16_t can1_stw_status_energy_per_lap_encode(double value) +{ + return (uint16_t)(value / 0.001); +} + +double can1_stw_status_energy_per_lap_decode(uint16_t value) +{ + return ((double)value * 0.001); +} + +bool can1_stw_status_energy_per_lap_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint8_t can1_stw_status_ini_chk_state_encode(double value) +{ + return (uint8_t)(value); +} + +double can1_stw_status_ini_chk_state_decode(uint8_t value) +{ + return ((double)value); +} + +bool can1_stw_status_ini_chk_state_is_in_range(uint8_t value) +{ + (void)value; + + return (true); +} + +int can1_pdu_current_1_pack( + uint8_t *dst_p, + const struct can1_pdu_current_1_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->pdu_always_on_current, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->pdu_always_on_current, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->pdu_lvms_current, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->pdu_lvms_current, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->pdu_asms_current, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->pdu_asms_current, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->pdu_misc_current, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->pdu_misc_current, 8u, 0xffu); + + return (8); +} + +int can1_pdu_current_1_unpack( + struct can1_pdu_current_1_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->pdu_always_on_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->pdu_always_on_current |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->pdu_lvms_current = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->pdu_lvms_current |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->pdu_asms_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->pdu_asms_current |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->pdu_misc_current = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->pdu_misc_current |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_pdu_current_1_init(struct can1_pdu_current_1_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_current_1_t)); + + return 0; +} + +uint16_t can1_pdu_current_1_pdu_always_on_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_1_pdu_always_on_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_1_pdu_always_on_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_1_pdu_lvms_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_1_pdu_lvms_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_1_pdu_lvms_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_1_pdu_asms_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_1_pdu_asms_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_1_pdu_asms_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_1_pdu_misc_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_1_pdu_misc_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_1_pdu_misc_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_pdu_current_2_pack( + uint8_t *dst_p, + const struct can1_pdu_current_2_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->pdu_sdc_current, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->pdu_sdc_current, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->pdu_inverter_current, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->pdu_inverter_current, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->pdu_ts_cooling_current, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->pdu_ts_cooling_current, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->pdu_acc_cooling_current, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->pdu_acc_cooling_current, 8u, 0xffu); + + return (8); +} + +int can1_pdu_current_2_unpack( + struct can1_pdu_current_2_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->pdu_sdc_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->pdu_sdc_current |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->pdu_inverter_current = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->pdu_inverter_current |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->pdu_ts_cooling_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->pdu_ts_cooling_current |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->pdu_acc_cooling_current = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->pdu_acc_cooling_current |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_pdu_current_2_init(struct can1_pdu_current_2_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_current_2_t)); + + return 0; +} + +uint16_t can1_pdu_current_2_pdu_sdc_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_2_pdu_sdc_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_2_pdu_sdc_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_2_pdu_inverter_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_2_pdu_inverter_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_2_pdu_inverter_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_2_pdu_ts_cooling_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_2_pdu_ts_cooling_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_2_pdu_ts_cooling_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_2_pdu_acc_cooling_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_2_pdu_acc_cooling_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_2_pdu_acc_cooling_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_pdu_current_3_pack( + uint8_t *dst_p, + const struct can1_pdu_current_3_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->pdu_lidar_current, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->pdu_lidar_current, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->pdu_drs_current, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->pdu_drs_current, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->pdu_epsc_current, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->pdu_epsc_current, 8u, 0xffu); + dst_p[6] |= pack_left_shift_u16(src_p->pdu_acu_current, 0u, 0xffu); + dst_p[7] |= pack_right_shift_u16(src_p->pdu_acu_current, 8u, 0xffu); + + return (8); +} + +int can1_pdu_current_3_unpack( + struct can1_pdu_current_3_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->pdu_lidar_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->pdu_lidar_current |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->pdu_drs_current = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->pdu_drs_current |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->pdu_epsc_current = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->pdu_epsc_current |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + dst_p->pdu_acu_current = unpack_right_shift_u16(src_p[6], 0u, 0xffu); + dst_p->pdu_acu_current |= unpack_left_shift_u16(src_p[7], 8u, 0xffu); + + return (0); +} + +int can1_pdu_current_3_init(struct can1_pdu_current_3_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_current_3_t)); + + return 0; +} + +uint16_t can1_pdu_current_3_pdu_lidar_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_3_pdu_lidar_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_3_pdu_lidar_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_3_pdu_drs_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_3_pdu_drs_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_3_pdu_drs_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_3_pdu_epsc_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_3_pdu_epsc_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_3_pdu_epsc_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_3_pdu_acu_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_3_pdu_acu_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_3_pdu_acu_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_pdu_current_4_pack( + uint8_t *dst_p, + const struct can1_pdu_current_4_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 8); + + dst_p[0] |= pack_left_shift_u16(src_p->pdu_ebs_a_current, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->pdu_ebs_a_current, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->pdu_ebs_b_current, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->pdu_ebs_b_current, 8u, 0xffu); + + return (8); +} + +int can1_pdu_current_4_unpack( + struct can1_pdu_current_4_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 8u) { + return (-EINVAL); + } + + dst_p->pdu_ebs_a_current = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->pdu_ebs_a_current |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->pdu_ebs_b_current = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->pdu_ebs_b_current |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + + return (0); +} + +int can1_pdu_current_4_init(struct can1_pdu_current_4_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_pdu_current_4_t)); + + return 0; +} + +uint16_t can1_pdu_current_4_pdu_ebs_a_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_4_pdu_ebs_a_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_4_pdu_ebs_a_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_pdu_current_4_pdu_ebs_b_current_encode(double value) +{ + return (uint16_t)(value); +} + +double can1_pdu_current_4_pdu_ebs_b_current_decode(uint16_t value) +{ + return ((double)value); +} + +bool can1_pdu_current_4_pdu_ebs_b_current_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +int can1_epsc_config_in_pack( + uint8_t *dst_p, + const struct can1_epsc_config_in_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + memset(&dst_p[0], 0, 6); + + dst_p[0] |= pack_left_shift_u16(src_p->epsc_config_p_gain, 0u, 0xffu); + dst_p[1] |= pack_right_shift_u16(src_p->epsc_config_p_gain, 8u, 0xffu); + dst_p[2] |= pack_left_shift_u16(src_p->epsc_config_i_gain, 0u, 0xffu); + dst_p[3] |= pack_right_shift_u16(src_p->epsc_config_i_gain, 8u, 0xffu); + dst_p[4] |= pack_left_shift_u16(src_p->epsc_config_d_gain, 0u, 0xffu); + dst_p[5] |= pack_right_shift_u16(src_p->epsc_config_d_gain, 8u, 0xffu); + + return (6); +} + +int can1_epsc_config_in_unpack( + struct can1_epsc_config_in_t *dst_p, + const uint8_t *src_p, + size_t size) +{ + if (size < 6u) { + return (-EINVAL); + } + + dst_p->epsc_config_p_gain = unpack_right_shift_u16(src_p[0], 0u, 0xffu); + dst_p->epsc_config_p_gain |= unpack_left_shift_u16(src_p[1], 8u, 0xffu); + dst_p->epsc_config_i_gain = unpack_right_shift_u16(src_p[2], 0u, 0xffu); + dst_p->epsc_config_i_gain |= unpack_left_shift_u16(src_p[3], 8u, 0xffu); + dst_p->epsc_config_d_gain = unpack_right_shift_u16(src_p[4], 0u, 0xffu); + dst_p->epsc_config_d_gain |= unpack_left_shift_u16(src_p[5], 8u, 0xffu); + + return (0); +} + +int can1_epsc_config_in_init(struct can1_epsc_config_in_t *msg_p) +{ + if (msg_p == NULL) return -1; + + memset(msg_p, 0, sizeof(struct can1_epsc_config_in_t)); + + return 0; +} + +uint16_t can1_epsc_config_in_epsc_config_p_gain_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_epsc_config_in_epsc_config_p_gain_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_epsc_config_in_epsc_config_p_gain_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_epsc_config_in_epsc_config_i_gain_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_epsc_config_in_epsc_config_i_gain_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_epsc_config_in_epsc_config_i_gain_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} + +uint16_t can1_epsc_config_in_epsc_config_d_gain_encode(double value) +{ + return (uint16_t)(value / 0.01); +} + +double can1_epsc_config_in_epsc_config_d_gain_decode(uint16_t value) +{ + return ((double)value * 0.01); +} + +bool can1_epsc_config_in_epsc_config_d_gain_is_in_range(uint16_t value) +{ + (void)value; + + return (true); +} diff --git a/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp b/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp new file mode 100644 index 0000000..03c4f10 --- /dev/null +++ b/ros2_ws/src/ft_can_transceiver_lib/src/transceiver.cpp @@ -0,0 +1,3812 @@ +#include "transceiver.h" + +canlib::Transceiver::Transceiver() { + +} + +extern "C" canlib::Transceiver::Transceiver(std::string device_name, std::vector filters) { + // Setup CAN Bus + if ((socket_instance = socket(PF_CAN, SOCK_RAW, CAN_RAW)) < 0) { + printf("Cant Init CAN Socket"); + return; + } + + struct ifreq ifr; + strcpy(ifr.ifr_name, device_name.c_str() ); + ioctl(socket_instance, SIOCGIFINDEX, &ifr); + can_filter filter_arr[filters.size()]; + int i = 0; + for (can_filter filter : filters) { + filter_arr[i] = filter; + i++; + } + setsockopt(socket_instance, SOL_CAN_RAW, CAN_RAW_FILTER, filter_arr, sizeof(filter_arr)); + + struct sockaddr_can addr; + memset(&addr, 0, sizeof(addr)); + addr.can_family = AF_CAN; + addr.can_ifindex = ifr.ifr_ifindex; + if (bind(socket_instance, (struct sockaddr *)&addr, sizeof(addr)) < 0) { + perror("Bind"); + printf("Cant Bind CAN Bus Socket"); + return; + } +} + +extern "C" canlib::Transceiver::~Transceiver() { +} + +bool canlib::Transceiver::read(struct can_frame &frame, int timeout_usec) { + fd_set readSet; + FD_ZERO(&readSet); + FD_SET(socket_instance, &readSet); + struct timeval timeout_tv; + timeout_tv.tv_sec = 0; + timeout_tv.tv_usec = timeout_usec; + if (!select(socket_instance + 1, &readSet, NULL, NULL, &timeout_tv)) + { + return false; + } + + // read frame + int nbytes = ::read(socket_instance, &frame, sizeof(struct can_frame)); + + return nbytes == sizeof(struct can_frame); +} + +extern "C" bool canlib::Transceiver::receive(int timeout_us) { + can_frame can_frame_raw; + if(read(can_frame_raw, timeout_us)) { + switch (can_frame_raw.can_id) { + case 1910: + { + can1_inverter_velocity_t can1_inverter_velocity; + can1_inverter_velocity_unpack(&can1_inverter_velocity, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::inverter_velocity_t can1_inverter_velocity_decoded = canlib::decode::can1::inverter_velocity(can1_inverter_velocity); + if(canlib::callback::can1::inverter_velocity != NULL) { + canlib::callback::can1::inverter_velocity(can1_inverter_velocity, can1_inverter_velocity_decoded); + } + return true; + } + case 1920: + { + can1_inverter_errors_warnings_t can1_inverter_errors_warnings; + can1_inverter_errors_warnings_unpack(&can1_inverter_errors_warnings, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::inverter_errors_warnings_t can1_inverter_errors_warnings_decoded = canlib::decode::can1::inverter_errors_warnings(can1_inverter_errors_warnings); + if(canlib::callback::can1::inverter_errors_warnings != NULL) { + canlib::callback::can1::inverter_errors_warnings(can1_inverter_errors_warnings, can1_inverter_errors_warnings_decoded); + } + return true; + } + case 1913: + { + can1_inverter_torque_actual_cw_t can1_inverter_torque_actual_cw; + can1_inverter_torque_actual_cw_unpack(&can1_inverter_torque_actual_cw, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::inverter_torque_actual_cw_t can1_inverter_torque_actual_cw_decoded = canlib::decode::can1::inverter_torque_actual_cw(can1_inverter_torque_actual_cw); + if(canlib::callback::can1::inverter_torque_actual_cw != NULL) { + canlib::callback::can1::inverter_torque_actual_cw(can1_inverter_torque_actual_cw, can1_inverter_torque_actual_cw_decoded); + } + return true; + } + case 1912: + { + can1_inverter_temperatur_t can1_inverter_temperatur; + can1_inverter_temperatur_unpack(&can1_inverter_temperatur, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::inverter_temperatur_t can1_inverter_temperatur_decoded = canlib::decode::can1::inverter_temperatur(can1_inverter_temperatur); + if(canlib::callback::can1::inverter_temperatur != NULL) { + canlib::callback::can1::inverter_temperatur(can1_inverter_temperatur, can1_inverter_temperatur_decoded); + } + return true; + } + case 1911: + { + can1_inverter_torque_wanted_t can1_inverter_torque_wanted; + can1_inverter_torque_wanted_unpack(&can1_inverter_torque_wanted, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::inverter_torque_wanted_t can1_inverter_torque_wanted_decoded = canlib::decode::can1::inverter_torque_wanted(can1_inverter_torque_wanted); + if(canlib::callback::can1::inverter_torque_wanted != NULL) { + canlib::callback::can1::inverter_torque_wanted(can1_inverter_torque_wanted, can1_inverter_torque_wanted_decoded); + } + return true; + } + case 1843: + { + can1_sdo_telemetrie_rx_node1_t can1_sdo_telemetrie_rx_node1; + can1_sdo_telemetrie_rx_node1_unpack(&can1_sdo_telemetrie_rx_node1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sdo_telemetrie_rx_node1_t can1_sdo_telemetrie_rx_node1_decoded = canlib::decode::can1::sdo_telemetrie_rx_node1(can1_sdo_telemetrie_rx_node1); + if(canlib::callback::can1::sdo_telemetrie_rx_node1 != NULL) { + canlib::callback::can1::sdo_telemetrie_rx_node1(can1_sdo_telemetrie_rx_node1, can1_sdo_telemetrie_rx_node1_decoded); + } + return true; + } + case 1841: + { + can1_sdo_telemetrie_rx_node2_t can1_sdo_telemetrie_rx_node2; + can1_sdo_telemetrie_rx_node2_unpack(&can1_sdo_telemetrie_rx_node2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sdo_telemetrie_rx_node2_t can1_sdo_telemetrie_rx_node2_decoded = canlib::decode::can1::sdo_telemetrie_rx_node2(can1_sdo_telemetrie_rx_node2); + if(canlib::callback::can1::sdo_telemetrie_rx_node2 != NULL) { + canlib::callback::can1::sdo_telemetrie_rx_node2(can1_sdo_telemetrie_rx_node2, can1_sdo_telemetrie_rx_node2_decoded); + } + return true; + } + case 1842: + { + can1_sdo_telemetrie_tx_t can1_sdo_telemetrie_tx; + can1_sdo_telemetrie_tx_unpack(&can1_sdo_telemetrie_tx, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sdo_telemetrie_tx_t can1_sdo_telemetrie_tx_decoded = canlib::decode::can1::sdo_telemetrie_tx(can1_sdo_telemetrie_tx); + if(canlib::callback::can1::sdo_telemetrie_tx != NULL) { + canlib::callback::can1::sdo_telemetrie_tx(can1_sdo_telemetrie_tx, can1_sdo_telemetrie_tx_decoded); + } + return true; + } + case 1840: + { + can1_laptop_sdo_node_t can1_laptop_sdo_node; + can1_laptop_sdo_node_unpack(&can1_laptop_sdo_node, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::laptop_sdo_node_t can1_laptop_sdo_node_decoded = canlib::decode::can1::laptop_sdo_node(can1_laptop_sdo_node); + if(canlib::callback::can1::laptop_sdo_node != NULL) { + canlib::callback::can1::laptop_sdo_node(can1_laptop_sdo_node, can1_laptop_sdo_node_decoded); + } + return true; + } + case 1811: + { + can1_x_sens_long_lat_t can1_x_sens_long_lat; + can1_x_sens_long_lat_unpack(&can1_x_sens_long_lat, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::x_sens_long_lat_t can1_x_sens_long_lat_decoded = canlib::decode::can1::x_sens_long_lat(can1_x_sens_long_lat); + if(canlib::callback::can1::x_sens_long_lat != NULL) { + canlib::callback::can1::x_sens_long_lat(can1_x_sens_long_lat, can1_x_sens_long_lat_decoded); + } + return true; + } + case 1810: + { + can1_x_sens_rateofturn_t can1_x_sens_rateofturn; + can1_x_sens_rateofturn_unpack(&can1_x_sens_rateofturn, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::x_sens_rateofturn_t can1_x_sens_rateofturn_decoded = canlib::decode::can1::x_sens_rateofturn(can1_x_sens_rateofturn); + if(canlib::callback::can1::x_sens_rateofturn != NULL) { + canlib::callback::can1::x_sens_rateofturn(can1_x_sens_rateofturn, can1_x_sens_rateofturn_decoded); + } + return true; + } + case 1809: + { + can1_x_sens_acceleration_t can1_x_sens_acceleration; + can1_x_sens_acceleration_unpack(&can1_x_sens_acceleration, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::x_sens_acceleration_t can1_x_sens_acceleration_decoded = canlib::decode::can1::x_sens_acceleration(can1_x_sens_acceleration); + if(canlib::callback::can1::x_sens_acceleration != NULL) { + canlib::callback::can1::x_sens_acceleration(can1_x_sens_acceleration, can1_x_sens_acceleration_decoded); + } + return true; + } + case 1812: + { + can1_x_sens_velocity_t can1_x_sens_velocity; + can1_x_sens_velocity_unpack(&can1_x_sens_velocity, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::x_sens_velocity_t can1_x_sens_velocity_decoded = canlib::decode::can1::x_sens_velocity(can1_x_sens_velocity); + if(canlib::callback::can1::x_sens_velocity != NULL) { + canlib::callback::can1::x_sens_velocity(can1_x_sens_velocity, can1_x_sens_velocity_decoded); + } + return true; + } + case 1824: + { + can1_telemetrie_t can1_telemetrie; + can1_telemetrie_unpack(&can1_telemetrie, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::telemetrie_t can1_telemetrie_decoded = canlib::decode::can1::telemetrie(can1_telemetrie); + if(canlib::callback::can1::telemetrie != NULL) { + canlib::callback::can1::telemetrie(can1_telemetrie, can1_telemetrie_decoded); + } + return true; + } + case 1829: + { + can1_override_powermap_t can1_override_powermap; + can1_override_powermap_unpack(&can1_override_powermap, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::override_powermap_t can1_override_powermap_decoded = canlib::decode::can1::override_powermap(can1_override_powermap); + if(canlib::callback::can1::override_powermap != NULL) { + canlib::callback::can1::override_powermap(can1_override_powermap, can1_override_powermap_decoded); + } + return true; + } + case 1828: + { + can1_override_laptop_2_t can1_override_laptop_2; + can1_override_laptop_2_unpack(&can1_override_laptop_2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::override_laptop_2_t can1_override_laptop_2_decoded = canlib::decode::can1::override_laptop_2(can1_override_laptop_2); + if(canlib::callback::can1::override_laptop_2 != NULL) { + canlib::callback::can1::override_laptop_2(can1_override_laptop_2, can1_override_laptop_2_decoded); + } + return true; + } + case 1827: + { + can1_override_epsc_cooling_t can1_override_epsc_cooling; + can1_override_epsc_cooling_unpack(&can1_override_epsc_cooling, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::override_epsc_cooling_t can1_override_epsc_cooling_decoded = canlib::decode::can1::override_epsc_cooling(can1_override_epsc_cooling); + if(canlib::callback::can1::override_epsc_cooling != NULL) { + canlib::callback::can1::override_epsc_cooling(can1_override_epsc_cooling, can1_override_epsc_cooling_decoded); + } + return true; + } + case 1825: + { + can1_override_laptop_t can1_override_laptop; + can1_override_laptop_unpack(&can1_override_laptop, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::override_laptop_t can1_override_laptop_decoded = canlib::decode::can1::override_laptop(can1_override_laptop); + if(canlib::callback::can1::override_laptop != NULL) { + canlib::callback::can1::override_laptop(can1_override_laptop, can1_override_laptop_decoded); + } + return true; + } + case 1826: + { + can1_apps_override_t can1_apps_override; + can1_apps_override_unpack(&can1_apps_override, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::apps_override_t can1_apps_override_decoded = canlib::decode::can1::apps_override(can1_apps_override); + if(canlib::callback::can1::apps_override != NULL) { + canlib::callback::can1::apps_override(can1_apps_override, can1_apps_override_decoded); + } + return true; + } + case 259: + { + can1_ftcu_damper_t can1_ftcu_damper; + can1_ftcu_damper_unpack(&can1_ftcu_damper, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_damper_t can1_ftcu_damper_decoded = canlib::decode::can1::ftcu_damper(can1_ftcu_damper); + if(canlib::callback::can1::ftcu_damper != NULL) { + canlib::callback::can1::ftcu_damper(can1_ftcu_damper, can1_ftcu_damper_decoded); + } + return true; + } + case 1043: + { + can1_ftcu_param_confirm_t can1_ftcu_param_confirm; + can1_ftcu_param_confirm_unpack(&can1_ftcu_param_confirm, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_param_confirm_t can1_ftcu_param_confirm_decoded = canlib::decode::can1::ftcu_param_confirm(can1_ftcu_param_confirm); + if(canlib::callback::can1::ftcu_param_confirm != NULL) { + canlib::callback::can1::ftcu_param_confirm(can1_ftcu_param_confirm, can1_ftcu_param_confirm_decoded); + } + return true; + } + case 209: + { + can1_sensornode_f_10_hz_t can1_sensornode_f_10_hz; + can1_sensornode_f_10_hz_unpack(&can1_sensornode_f_10_hz, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_f_10_hz_t can1_sensornode_f_10_hz_decoded = canlib::decode::can1::sensornode_f_10_hz(can1_sensornode_f_10_hz); + if(canlib::callback::can1::sensornode_f_10_hz != NULL) { + canlib::callback::can1::sensornode_f_10_hz(can1_sensornode_f_10_hz, can1_sensornode_f_10_hz_decoded); + } + return true; + } + case 211: + { + can1_sensornode_f_100_hz_1_t can1_sensornode_f_100_hz_1; + can1_sensornode_f_100_hz_1_unpack(&can1_sensornode_f_100_hz_1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_f_100_hz_1_t can1_sensornode_f_100_hz_1_decoded = canlib::decode::can1::sensornode_f_100_hz_1(can1_sensornode_f_100_hz_1); + if(canlib::callback::can1::sensornode_f_100_hz_1 != NULL) { + canlib::callback::can1::sensornode_f_100_hz_1(can1_sensornode_f_100_hz_1, can1_sensornode_f_100_hz_1_decoded); + } + return true; + } + case 213: + { + can1_sensornode_f_100_hz_2_t can1_sensornode_f_100_hz_2; + can1_sensornode_f_100_hz_2_unpack(&can1_sensornode_f_100_hz_2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_f_100_hz_2_t can1_sensornode_f_100_hz_2_decoded = canlib::decode::can1::sensornode_f_100_hz_2(can1_sensornode_f_100_hz_2); + if(canlib::callback::can1::sensornode_f_100_hz_2 != NULL) { + canlib::callback::can1::sensornode_f_100_hz_2(can1_sensornode_f_100_hz_2, can1_sensornode_f_100_hz_2_decoded); + } + return true; + } + case 215: + { + can1_sensornode_f_1k_hz_t can1_sensornode_f_1k_hz; + can1_sensornode_f_1k_hz_unpack(&can1_sensornode_f_1k_hz, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_f_1k_hz_t can1_sensornode_f_1k_hz_decoded = canlib::decode::can1::sensornode_f_1k_hz(can1_sensornode_f_1k_hz); + if(canlib::callback::can1::sensornode_f_1k_hz != NULL) { + canlib::callback::can1::sensornode_f_1k_hz(can1_sensornode_f_1k_hz, can1_sensornode_f_1k_hz_decoded); + } + return true; + } + case 210: + { + can1_sensornode_r_10_hz_t can1_sensornode_r_10_hz; + can1_sensornode_r_10_hz_unpack(&can1_sensornode_r_10_hz, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_r_10_hz_t can1_sensornode_r_10_hz_decoded = canlib::decode::can1::sensornode_r_10_hz(can1_sensornode_r_10_hz); + if(canlib::callback::can1::sensornode_r_10_hz != NULL) { + canlib::callback::can1::sensornode_r_10_hz(can1_sensornode_r_10_hz, can1_sensornode_r_10_hz_decoded); + } + return true; + } + case 212: + { + can1_sensornode_r_100_hz_t can1_sensornode_r_100_hz; + can1_sensornode_r_100_hz_unpack(&can1_sensornode_r_100_hz, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_r_100_hz_t can1_sensornode_r_100_hz_decoded = canlib::decode::can1::sensornode_r_100_hz(can1_sensornode_r_100_hz); + if(canlib::callback::can1::sensornode_r_100_hz != NULL) { + canlib::callback::can1::sensornode_r_100_hz(can1_sensornode_r_100_hz, can1_sensornode_r_100_hz_decoded); + } + return true; + } + case 216: + { + can1_sensornode_r_1k_hz_t can1_sensornode_r_1k_hz; + can1_sensornode_r_1k_hz_unpack(&can1_sensornode_r_1k_hz, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::sensornode_r_1k_hz_t can1_sensornode_r_1k_hz_decoded = canlib::decode::can1::sensornode_r_1k_hz(can1_sensornode_r_1k_hz); + if(canlib::callback::can1::sensornode_r_1k_hz != NULL) { + canlib::callback::can1::sensornode_r_1k_hz(can1_sensornode_r_1k_hz, can1_sensornode_r_1k_hz_decoded); + } + return true; + } + case 220: + { + can1_pwm_duty_cycle_t can1_pwm_duty_cycle; + can1_pwm_duty_cycle_unpack(&can1_pwm_duty_cycle, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pwm_duty_cycle_t can1_pwm_duty_cycle_decoded = canlib::decode::can1::pwm_duty_cycle(can1_pwm_duty_cycle); + if(canlib::callback::can1::pwm_duty_cycle != NULL) { + canlib::callback::can1::pwm_duty_cycle(can1_pwm_duty_cycle, can1_pwm_duty_cycle_decoded); + } + return true; + } + case 221: + { + can1_pwm_config_t can1_pwm_config; + can1_pwm_config_unpack(&can1_pwm_config, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pwm_config_t can1_pwm_config_decoded = canlib::decode::can1::pwm_config(can1_pwm_config); + if(canlib::callback::can1::pwm_config != NULL) { + canlib::callback::can1::pwm_config(can1_pwm_config, can1_pwm_config_decoded); + } + return true; + } + case 1056: + { + can1_dashboard_in_t can1_dashboard_in; + can1_dashboard_in_unpack(&can1_dashboard_in, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::dashboard_in_t can1_dashboard_in_decoded = canlib::decode::can1::dashboard_in(can1_dashboard_in); + if(canlib::callback::can1::dashboard_in != NULL) { + canlib::callback::can1::dashboard_in(can1_dashboard_in, can1_dashboard_in_decoded); + } + return true; + } + case 129: + { + can1_ams_slave1_status_t can1_ams_slave1_status; + can1_ams_slave1_status_unpack(&can1_ams_slave1_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_status_t can1_ams_slave1_status_decoded = canlib::decode::can1::ams_slave1_status(can1_ams_slave1_status); + if(canlib::callback::can1::ams_slave1_status != NULL) { + canlib::callback::can1::ams_slave1_status(can1_ams_slave1_status, can1_ams_slave1_status_decoded); + } + return true; + } + case 1568: + { + can1_ams_slave2_log0_t can1_ams_slave2_log0; + can1_ams_slave2_log0_unpack(&can1_ams_slave2_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log0_t can1_ams_slave2_log0_decoded = canlib::decode::can1::ams_slave2_log0(can1_ams_slave2_log0); + if(canlib::callback::can1::ams_slave2_log0 != NULL) { + canlib::callback::can1::ams_slave2_log0(can1_ams_slave2_log0, can1_ams_slave2_log0_decoded); + } + return true; + } + case 1569: + { + can1_ams_slave2_log1_t can1_ams_slave2_log1; + can1_ams_slave2_log1_unpack(&can1_ams_slave2_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log1_t can1_ams_slave2_log1_decoded = canlib::decode::can1::ams_slave2_log1(can1_ams_slave2_log1); + if(canlib::callback::can1::ams_slave2_log1 != NULL) { + canlib::callback::can1::ams_slave2_log1(can1_ams_slave2_log1, can1_ams_slave2_log1_decoded); + } + return true; + } + case 1570: + { + can1_ams_slave2_log2_t can1_ams_slave2_log2; + can1_ams_slave2_log2_unpack(&can1_ams_slave2_log2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log2_t can1_ams_slave2_log2_decoded = canlib::decode::can1::ams_slave2_log2(can1_ams_slave2_log2); + if(canlib::callback::can1::ams_slave2_log2 != NULL) { + canlib::callback::can1::ams_slave2_log2(can1_ams_slave2_log2, can1_ams_slave2_log2_decoded); + } + return true; + } + case 1571: + { + can1_ams_slave2_log3_t can1_ams_slave2_log3; + can1_ams_slave2_log3_unpack(&can1_ams_slave2_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log3_t can1_ams_slave2_log3_decoded = canlib::decode::can1::ams_slave2_log3(can1_ams_slave2_log3); + if(canlib::callback::can1::ams_slave2_log3 != NULL) { + canlib::callback::can1::ams_slave2_log3(can1_ams_slave2_log3, can1_ams_slave2_log3_decoded); + } + return true; + } + case 1572: + { + can1_ams_slave2_log4_t can1_ams_slave2_log4; + can1_ams_slave2_log4_unpack(&can1_ams_slave2_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log4_t can1_ams_slave2_log4_decoded = canlib::decode::can1::ams_slave2_log4(can1_ams_slave2_log4); + if(canlib::callback::can1::ams_slave2_log4 != NULL) { + canlib::callback::can1::ams_slave2_log4(can1_ams_slave2_log4, can1_ams_slave2_log4_decoded); + } + return true; + } + case 1573: + { + can1_ams_slave2_log5_t can1_ams_slave2_log5; + can1_ams_slave2_log5_unpack(&can1_ams_slave2_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log5_t can1_ams_slave2_log5_decoded = canlib::decode::can1::ams_slave2_log5(can1_ams_slave2_log5); + if(canlib::callback::can1::ams_slave2_log5 != NULL) { + canlib::callback::can1::ams_slave2_log5(can1_ams_slave2_log5, can1_ams_slave2_log5_decoded); + } + return true; + } + case 1622: + { + can1_ams_slave5_log6_t can1_ams_slave5_log6; + can1_ams_slave5_log6_unpack(&can1_ams_slave5_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log6_t can1_ams_slave5_log6_decoded = canlib::decode::can1::ams_slave5_log6(can1_ams_slave5_log6); + if(canlib::callback::can1::ams_slave5_log6 != NULL) { + canlib::callback::can1::ams_slave5_log6(can1_ams_slave5_log6, can1_ams_slave5_log6_decoded); + } + return true; + } + case 1606: + { + can1_ams_slave4_log6_t can1_ams_slave4_log6; + can1_ams_slave4_log6_unpack(&can1_ams_slave4_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log6_t can1_ams_slave4_log6_decoded = canlib::decode::can1::ams_slave4_log6(can1_ams_slave4_log6); + if(canlib::callback::can1::ams_slave4_log6 != NULL) { + canlib::callback::can1::ams_slave4_log6(can1_ams_slave4_log6, can1_ams_slave4_log6_decoded); + } + return true; + } + case 1590: + { + can1_ams_slave3_log6_t can1_ams_slave3_log6; + can1_ams_slave3_log6_unpack(&can1_ams_slave3_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log6_t can1_ams_slave3_log6_decoded = canlib::decode::can1::ams_slave3_log6(can1_ams_slave3_log6); + if(canlib::callback::can1::ams_slave3_log6 != NULL) { + canlib::callback::can1::ams_slave3_log6(can1_ams_slave3_log6, can1_ams_slave3_log6_decoded); + } + return true; + } + case 1574: + { + can1_ams_slave2_log6_t can1_ams_slave2_log6; + can1_ams_slave2_log6_unpack(&can1_ams_slave2_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_log6_t can1_ams_slave2_log6_decoded = canlib::decode::can1::ams_slave2_log6(can1_ams_slave2_log6); + if(canlib::callback::can1::ams_slave2_log6 != NULL) { + canlib::callback::can1::ams_slave2_log6(can1_ams_slave2_log6, can1_ams_slave2_log6_decoded); + } + return true; + } + case 1558: + { + can1_ams_slave1_log6_t can1_ams_slave1_log6; + can1_ams_slave1_log6_unpack(&can1_ams_slave1_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log6_t can1_ams_slave1_log6_decoded = canlib::decode::can1::ams_slave1_log6(can1_ams_slave1_log6); + if(canlib::callback::can1::ams_slave1_log6 != NULL) { + canlib::callback::can1::ams_slave1_log6(can1_ams_slave1_log6, can1_ams_slave1_log6_decoded); + } + return true; + } + case 1621: + { + can1_ams_slave5_log5_t can1_ams_slave5_log5; + can1_ams_slave5_log5_unpack(&can1_ams_slave5_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log5_t can1_ams_slave5_log5_decoded = canlib::decode::can1::ams_slave5_log5(can1_ams_slave5_log5); + if(canlib::callback::can1::ams_slave5_log5 != NULL) { + canlib::callback::can1::ams_slave5_log5(can1_ams_slave5_log5, can1_ams_slave5_log5_decoded); + } + return true; + } + case 1605: + { + can1_ams_slave4_log5_t can1_ams_slave4_log5; + can1_ams_slave4_log5_unpack(&can1_ams_slave4_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log5_t can1_ams_slave4_log5_decoded = canlib::decode::can1::ams_slave4_log5(can1_ams_slave4_log5); + if(canlib::callback::can1::ams_slave4_log5 != NULL) { + canlib::callback::can1::ams_slave4_log5(can1_ams_slave4_log5, can1_ams_slave4_log5_decoded); + } + return true; + } + case 1589: + { + can1_ams_slave3_log5_t can1_ams_slave3_log5; + can1_ams_slave3_log5_unpack(&can1_ams_slave3_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log5_t can1_ams_slave3_log5_decoded = canlib::decode::can1::ams_slave3_log5(can1_ams_slave3_log5); + if(canlib::callback::can1::ams_slave3_log5 != NULL) { + canlib::callback::can1::ams_slave3_log5(can1_ams_slave3_log5, can1_ams_slave3_log5_decoded); + } + return true; + } + case 1557: + { + can1_ams_slave1_log5_t can1_ams_slave1_log5; + can1_ams_slave1_log5_unpack(&can1_ams_slave1_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log5_t can1_ams_slave1_log5_decoded = canlib::decode::can1::ams_slave1_log5(can1_ams_slave1_log5); + if(canlib::callback::can1::ams_slave1_log5 != NULL) { + canlib::callback::can1::ams_slave1_log5(can1_ams_slave1_log5, can1_ams_slave1_log5_decoded); + } + return true; + } + case 1620: + { + can1_ams_slave5_log4_t can1_ams_slave5_log4; + can1_ams_slave5_log4_unpack(&can1_ams_slave5_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log4_t can1_ams_slave5_log4_decoded = canlib::decode::can1::ams_slave5_log4(can1_ams_slave5_log4); + if(canlib::callback::can1::ams_slave5_log4 != NULL) { + canlib::callback::can1::ams_slave5_log4(can1_ams_slave5_log4, can1_ams_slave5_log4_decoded); + } + return true; + } + case 1604: + { + can1_ams_slave4_log4_t can1_ams_slave4_log4; + can1_ams_slave4_log4_unpack(&can1_ams_slave4_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log4_t can1_ams_slave4_log4_decoded = canlib::decode::can1::ams_slave4_log4(can1_ams_slave4_log4); + if(canlib::callback::can1::ams_slave4_log4 != NULL) { + canlib::callback::can1::ams_slave4_log4(can1_ams_slave4_log4, can1_ams_slave4_log4_decoded); + } + return true; + } + case 1588: + { + can1_ams_slave3_log4_t can1_ams_slave3_log4; + can1_ams_slave3_log4_unpack(&can1_ams_slave3_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log4_t can1_ams_slave3_log4_decoded = canlib::decode::can1::ams_slave3_log4(can1_ams_slave3_log4); + if(canlib::callback::can1::ams_slave3_log4 != NULL) { + canlib::callback::can1::ams_slave3_log4(can1_ams_slave3_log4, can1_ams_slave3_log4_decoded); + } + return true; + } + case 1556: + { + can1_ams_slave1_log4_t can1_ams_slave1_log4; + can1_ams_slave1_log4_unpack(&can1_ams_slave1_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log4_t can1_ams_slave1_log4_decoded = canlib::decode::can1::ams_slave1_log4(can1_ams_slave1_log4); + if(canlib::callback::can1::ams_slave1_log4 != NULL) { + canlib::callback::can1::ams_slave1_log4(can1_ams_slave1_log4, can1_ams_slave1_log4_decoded); + } + return true; + } + case 1619: + { + can1_ams_slave5_log3_t can1_ams_slave5_log3; + can1_ams_slave5_log3_unpack(&can1_ams_slave5_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log3_t can1_ams_slave5_log3_decoded = canlib::decode::can1::ams_slave5_log3(can1_ams_slave5_log3); + if(canlib::callback::can1::ams_slave5_log3 != NULL) { + canlib::callback::can1::ams_slave5_log3(can1_ams_slave5_log3, can1_ams_slave5_log3_decoded); + } + return true; + } + case 1603: + { + can1_ams_slave4_log3_t can1_ams_slave4_log3; + can1_ams_slave4_log3_unpack(&can1_ams_slave4_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log3_t can1_ams_slave4_log3_decoded = canlib::decode::can1::ams_slave4_log3(can1_ams_slave4_log3); + if(canlib::callback::can1::ams_slave4_log3 != NULL) { + canlib::callback::can1::ams_slave4_log3(can1_ams_slave4_log3, can1_ams_slave4_log3_decoded); + } + return true; + } + case 1587: + { + can1_ams_slave3_log3_t can1_ams_slave3_log3; + can1_ams_slave3_log3_unpack(&can1_ams_slave3_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log3_t can1_ams_slave3_log3_decoded = canlib::decode::can1::ams_slave3_log3(can1_ams_slave3_log3); + if(canlib::callback::can1::ams_slave3_log3 != NULL) { + canlib::callback::can1::ams_slave3_log3(can1_ams_slave3_log3, can1_ams_slave3_log3_decoded); + } + return true; + } + case 1555: + { + can1_ams_slave1_log3_t can1_ams_slave1_log3; + can1_ams_slave1_log3_unpack(&can1_ams_slave1_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log3_t can1_ams_slave1_log3_decoded = canlib::decode::can1::ams_slave1_log3(can1_ams_slave1_log3); + if(canlib::callback::can1::ams_slave1_log3 != NULL) { + canlib::callback::can1::ams_slave1_log3(can1_ams_slave1_log3, can1_ams_slave1_log3_decoded); + } + return true; + } + case 1618: + { + can1_ams_slave5_log2_t can1_ams_slave5_log2; + can1_ams_slave5_log2_unpack(&can1_ams_slave5_log2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log2_t can1_ams_slave5_log2_decoded = canlib::decode::can1::ams_slave5_log2(can1_ams_slave5_log2); + if(canlib::callback::can1::ams_slave5_log2 != NULL) { + canlib::callback::can1::ams_slave5_log2(can1_ams_slave5_log2, can1_ams_slave5_log2_decoded); + } + return true; + } + case 1602: + { + can1_ams_slave4_log2_t can1_ams_slave4_log2; + can1_ams_slave4_log2_unpack(&can1_ams_slave4_log2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log2_t can1_ams_slave4_log2_decoded = canlib::decode::can1::ams_slave4_log2(can1_ams_slave4_log2); + if(canlib::callback::can1::ams_slave4_log2 != NULL) { + canlib::callback::can1::ams_slave4_log2(can1_ams_slave4_log2, can1_ams_slave4_log2_decoded); + } + return true; + } + case 1586: + { + can1_ams_slave3_log2_t can1_ams_slave3_log2; + can1_ams_slave3_log2_unpack(&can1_ams_slave3_log2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log2_t can1_ams_slave3_log2_decoded = canlib::decode::can1::ams_slave3_log2(can1_ams_slave3_log2); + if(canlib::callback::can1::ams_slave3_log2 != NULL) { + canlib::callback::can1::ams_slave3_log2(can1_ams_slave3_log2, can1_ams_slave3_log2_decoded); + } + return true; + } + case 1554: + { + can1_ams_slave1_log2_t can1_ams_slave1_log2; + can1_ams_slave1_log2_unpack(&can1_ams_slave1_log2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log2_t can1_ams_slave1_log2_decoded = canlib::decode::can1::ams_slave1_log2(can1_ams_slave1_log2); + if(canlib::callback::can1::ams_slave1_log2 != NULL) { + canlib::callback::can1::ams_slave1_log2(can1_ams_slave1_log2, can1_ams_slave1_log2_decoded); + } + return true; + } + case 1617: + { + can1_ams_slave5_log1_t can1_ams_slave5_log1; + can1_ams_slave5_log1_unpack(&can1_ams_slave5_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log1_t can1_ams_slave5_log1_decoded = canlib::decode::can1::ams_slave5_log1(can1_ams_slave5_log1); + if(canlib::callback::can1::ams_slave5_log1 != NULL) { + canlib::callback::can1::ams_slave5_log1(can1_ams_slave5_log1, can1_ams_slave5_log1_decoded); + } + return true; + } + case 1601: + { + can1_ams_slave4_log1_t can1_ams_slave4_log1; + can1_ams_slave4_log1_unpack(&can1_ams_slave4_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log1_t can1_ams_slave4_log1_decoded = canlib::decode::can1::ams_slave4_log1(can1_ams_slave4_log1); + if(canlib::callback::can1::ams_slave4_log1 != NULL) { + canlib::callback::can1::ams_slave4_log1(can1_ams_slave4_log1, can1_ams_slave4_log1_decoded); + } + return true; + } + case 1585: + { + can1_ams_slave3_log1_t can1_ams_slave3_log1; + can1_ams_slave3_log1_unpack(&can1_ams_slave3_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log1_t can1_ams_slave3_log1_decoded = canlib::decode::can1::ams_slave3_log1(can1_ams_slave3_log1); + if(canlib::callback::can1::ams_slave3_log1 != NULL) { + canlib::callback::can1::ams_slave3_log1(can1_ams_slave3_log1, can1_ams_slave3_log1_decoded); + } + return true; + } + case 1553: + { + can1_ams_slave1_log1_t can1_ams_slave1_log1; + can1_ams_slave1_log1_unpack(&can1_ams_slave1_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log1_t can1_ams_slave1_log1_decoded = canlib::decode::can1::ams_slave1_log1(can1_ams_slave1_log1); + if(canlib::callback::can1::ams_slave1_log1 != NULL) { + canlib::callback::can1::ams_slave1_log1(can1_ams_slave1_log1, can1_ams_slave1_log1_decoded); + } + return true; + } + case 1616: + { + can1_ams_slave5_log0_t can1_ams_slave5_log0; + can1_ams_slave5_log0_unpack(&can1_ams_slave5_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_log0_t can1_ams_slave5_log0_decoded = canlib::decode::can1::ams_slave5_log0(can1_ams_slave5_log0); + if(canlib::callback::can1::ams_slave5_log0 != NULL) { + canlib::callback::can1::ams_slave5_log0(can1_ams_slave5_log0, can1_ams_slave5_log0_decoded); + } + return true; + } + case 1600: + { + can1_ams_slave4_log0_t can1_ams_slave4_log0; + can1_ams_slave4_log0_unpack(&can1_ams_slave4_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_log0_t can1_ams_slave4_log0_decoded = canlib::decode::can1::ams_slave4_log0(can1_ams_slave4_log0); + if(canlib::callback::can1::ams_slave4_log0 != NULL) { + canlib::callback::can1::ams_slave4_log0(can1_ams_slave4_log0, can1_ams_slave4_log0_decoded); + } + return true; + } + case 1584: + { + can1_ams_slave3_log0_t can1_ams_slave3_log0; + can1_ams_slave3_log0_unpack(&can1_ams_slave3_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_log0_t can1_ams_slave3_log0_decoded = canlib::decode::can1::ams_slave3_log0(can1_ams_slave3_log0); + if(canlib::callback::can1::ams_slave3_log0 != NULL) { + canlib::callback::can1::ams_slave3_log0(can1_ams_slave3_log0, can1_ams_slave3_log0_decoded); + } + return true; + } + case 1552: + { + can1_ams_slave1_log0_t can1_ams_slave1_log0; + can1_ams_slave1_log0_unpack(&can1_ams_slave1_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave1_log0_t can1_ams_slave1_log0_decoded = canlib::decode::can1::ams_slave1_log0(can1_ams_slave1_log0); + if(canlib::callback::can1::ams_slave1_log0 != NULL) { + canlib::callback::can1::ams_slave1_log0(can1_ams_slave1_log0, can1_ams_slave1_log0_decoded); + } + return true; + } + case 206: + { + can1_pdu_heartbeat_t can1_pdu_heartbeat; + can1_pdu_heartbeat_unpack(&can1_pdu_heartbeat, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_heartbeat_t can1_pdu_heartbeat_decoded = canlib::decode::can1::pdu_heartbeat(can1_pdu_heartbeat); + if(canlib::callback::can1::pdu_heartbeat != NULL) { + canlib::callback::can1::pdu_heartbeat(can1_pdu_heartbeat, can1_pdu_heartbeat_decoded); + } + return true; + } + case 272: + { + can1_ftcu_pneumatik_t can1_ftcu_pneumatik; + can1_ftcu_pneumatik_unpack(&can1_ftcu_pneumatik, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_pneumatik_t can1_ftcu_pneumatik_decoded = canlib::decode::can1::ftcu_pneumatik(can1_ftcu_pneumatik); + if(canlib::callback::can1::ftcu_pneumatik != NULL) { + canlib::callback::can1::ftcu_pneumatik(can1_ftcu_pneumatik, can1_ftcu_pneumatik_decoded); + } + return true; + } + case 227: + { + can1_acu_tx_commands_t can1_acu_tx_commands; + can1_acu_tx_commands_unpack(&can1_acu_tx_commands, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::acu_tx_commands_t can1_acu_tx_commands_decoded = canlib::decode::can1::acu_tx_commands(can1_acu_tx_commands); + if(canlib::callback::can1::acu_tx_commands != NULL) { + canlib::callback::can1::acu_tx_commands(can1_acu_tx_commands, can1_acu_tx_commands_decoded); + } + return true; + } + case 226: + { + can1_acu_rx_commands_t can1_acu_rx_commands; + can1_acu_rx_commands_unpack(&can1_acu_rx_commands, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::acu_rx_commands_t can1_acu_rx_commands_decoded = canlib::decode::can1::acu_rx_commands(can1_acu_rx_commands); + if(canlib::callback::can1::acu_rx_commands != NULL) { + canlib::callback::can1::acu_rx_commands(can1_acu_rx_commands, can1_acu_rx_commands_decoded); + } + return true; + } + case 225: + { + can1_acu_rx_t can1_acu_rx; + can1_acu_rx_unpack(&can1_acu_rx, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::acu_rx_t can1_acu_rx_decoded = canlib::decode::can1::acu_rx(can1_acu_rx); + if(canlib::callback::can1::acu_rx != NULL) { + canlib::callback::can1::acu_rx(can1_acu_rx, can1_acu_rx_decoded); + } + return true; + } + case 1536: + { + can1_ams_slave0_log0_t can1_ams_slave0_log0; + can1_ams_slave0_log0_unpack(&can1_ams_slave0_log0, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log0_t can1_ams_slave0_log0_decoded = canlib::decode::can1::ams_slave0_log0(can1_ams_slave0_log0); + if(canlib::callback::can1::ams_slave0_log0 != NULL) { + canlib::callback::can1::ams_slave0_log0(can1_ams_slave0_log0, can1_ams_slave0_log0_decoded); + } + return true; + } + case 1537: + { + can1_ams_slave0_log1_t can1_ams_slave0_log1; + can1_ams_slave0_log1_unpack(&can1_ams_slave0_log1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log1_t can1_ams_slave0_log1_decoded = canlib::decode::can1::ams_slave0_log1(can1_ams_slave0_log1); + if(canlib::callback::can1::ams_slave0_log1 != NULL) { + canlib::callback::can1::ams_slave0_log1(can1_ams_slave0_log1, can1_ams_slave0_log1_decoded); + } + return true; + } + case 1539: + { + can1_ams_slave0_log3_t can1_ams_slave0_log3; + can1_ams_slave0_log3_unpack(&can1_ams_slave0_log3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log3_t can1_ams_slave0_log3_decoded = canlib::decode::can1::ams_slave0_log3(can1_ams_slave0_log3); + if(canlib::callback::can1::ams_slave0_log3 != NULL) { + canlib::callback::can1::ams_slave0_log3(can1_ams_slave0_log3, can1_ams_slave0_log3_decoded); + } + return true; + } + case 1540: + { + can1_ams_slave0_log4_t can1_ams_slave0_log4; + can1_ams_slave0_log4_unpack(&can1_ams_slave0_log4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log4_t can1_ams_slave0_log4_decoded = canlib::decode::can1::ams_slave0_log4(can1_ams_slave0_log4); + if(canlib::callback::can1::ams_slave0_log4 != NULL) { + canlib::callback::can1::ams_slave0_log4(can1_ams_slave0_log4, can1_ams_slave0_log4_decoded); + } + return true; + } + case 1541: + { + can1_ams_slave0_log5_t can1_ams_slave0_log5; + can1_ams_slave0_log5_unpack(&can1_ams_slave0_log5, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log5_t can1_ams_slave0_log5_decoded = canlib::decode::can1::ams_slave0_log5(can1_ams_slave0_log5); + if(canlib::callback::can1::ams_slave0_log5 != NULL) { + canlib::callback::can1::ams_slave0_log5(can1_ams_slave0_log5, can1_ams_slave0_log5_decoded); + } + return true; + } + case 1542: + { + can1_ams_slave0_log6_t can1_ams_slave0_log6; + can1_ams_slave0_log6_unpack(&can1_ams_slave0_log6, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_log6_t can1_ams_slave0_log6_decoded = canlib::decode::can1::ams_slave0_log6(can1_ams_slave0_log6); + if(canlib::callback::can1::ams_slave0_log6 != NULL) { + canlib::callback::can1::ams_slave0_log6(can1_ams_slave0_log6, can1_ams_slave0_log6_decoded); + } + return true; + } + case 224: + { + can1_acu_tx_t can1_acu_tx; + can1_acu_tx_unpack(&can1_acu_tx, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::acu_tx_t can1_acu_tx_decoded = canlib::decode::can1::acu_tx(can1_acu_tx); + if(canlib::callback::can1::acu_tx != NULL) { + canlib::callback::can1::acu_tx(can1_acu_tx, can1_acu_tx_decoded); + } + return true; + } + case 133: + { + can1_ams_slave5_status_t can1_ams_slave5_status; + can1_ams_slave5_status_unpack(&can1_ams_slave5_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave5_status_t can1_ams_slave5_status_decoded = canlib::decode::can1::ams_slave5_status(can1_ams_slave5_status); + if(canlib::callback::can1::ams_slave5_status != NULL) { + canlib::callback::can1::ams_slave5_status(can1_ams_slave5_status, can1_ams_slave5_status_decoded); + } + return true; + } + case 132: + { + can1_ams_slave4_status_t can1_ams_slave4_status; + can1_ams_slave4_status_unpack(&can1_ams_slave4_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave4_status_t can1_ams_slave4_status_decoded = canlib::decode::can1::ams_slave4_status(can1_ams_slave4_status); + if(canlib::callback::can1::ams_slave4_status != NULL) { + canlib::callback::can1::ams_slave4_status(can1_ams_slave4_status, can1_ams_slave4_status_decoded); + } + return true; + } + case 131: + { + can1_ams_slave3_status_t can1_ams_slave3_status; + can1_ams_slave3_status_unpack(&can1_ams_slave3_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave3_status_t can1_ams_slave3_status_decoded = canlib::decode::can1::ams_slave3_status(can1_ams_slave3_status); + if(canlib::callback::can1::ams_slave3_status != NULL) { + canlib::callback::can1::ams_slave3_status(can1_ams_slave3_status, can1_ams_slave3_status_decoded); + } + return true; + } + case 130: + { + can1_ams_slave2_status_t can1_ams_slave2_status; + can1_ams_slave2_status_unpack(&can1_ams_slave2_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave2_status_t can1_ams_slave2_status_decoded = canlib::decode::can1::ams_slave2_status(can1_ams_slave2_status); + if(canlib::callback::can1::ams_slave2_status != NULL) { + canlib::callback::can1::ams_slave2_status(can1_ams_slave2_status, can1_ams_slave2_status_decoded); + } + return true; + } + case 12: + { + can1_ams_error_t can1_ams_error; + can1_ams_error_unpack(&can1_ams_error, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_error_t can1_ams_error_decoded = canlib::decode::can1::ams_error(can1_ams_error); + if(canlib::callback::can1::ams_error != NULL) { + canlib::callback::can1::ams_error(can1_ams_error, can1_ams_error_decoded); + } + return true; + } + case 263: + { + can1_ftcu_cooling_t can1_ftcu_cooling; + can1_ftcu_cooling_unpack(&can1_ftcu_cooling, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_cooling_t can1_ftcu_cooling_decoded = canlib::decode::can1::ftcu_cooling(can1_ftcu_cooling); + if(canlib::callback::can1::ftcu_cooling != NULL) { + canlib::callback::can1::ftcu_cooling(can1_ftcu_cooling, can1_ftcu_cooling_decoded); + } + return true; + } + case 261: + { + can1_ftcu_brake_t_t can1_ftcu_brake_t; + can1_ftcu_brake_t_unpack(&can1_ftcu_brake_t, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_brake_t_t can1_ftcu_brake_t_decoded = canlib::decode::can1::ftcu_brake_t(can1_ftcu_brake_t); + if(canlib::callback::can1::ftcu_brake_t != NULL) { + canlib::callback::can1::ftcu_brake_t(can1_ftcu_brake_t, can1_ftcu_brake_t_decoded); + } + return true; + } + case 260: + { + can1_ftcu_wheelspeed_t can1_ftcu_wheelspeed; + can1_ftcu_wheelspeed_unpack(&can1_ftcu_wheelspeed, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_wheelspeed_t can1_ftcu_wheelspeed_decoded = canlib::decode::can1::ftcu_wheelspeed(can1_ftcu_wheelspeed); + if(canlib::callback::can1::ftcu_wheelspeed != NULL) { + canlib::callback::can1::ftcu_wheelspeed(can1_ftcu_wheelspeed, can1_ftcu_wheelspeed_decoded); + } + return true; + } + case 258: + { + can1_ftcu_timings_t can1_ftcu_timings; + can1_ftcu_timings_unpack(&can1_ftcu_timings, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_timings_t can1_ftcu_timings_decoded = canlib::decode::can1::ftcu_timings(can1_ftcu_timings); + if(canlib::callback::can1::ftcu_timings != NULL) { + canlib::callback::can1::ftcu_timings(can1_ftcu_timings, can1_ftcu_timings_decoded); + } + return true; + } + case 273: + { + can1_ftcu_driver_t can1_ftcu_driver; + can1_ftcu_driver_unpack(&can1_ftcu_driver, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ftcu_driver_t can1_ftcu_driver_decoded = canlib::decode::can1::ftcu_driver(can1_ftcu_driver); + if(canlib::callback::can1::ftcu_driver != NULL) { + canlib::callback::can1::ftcu_driver(can1_ftcu_driver, can1_ftcu_driver_decoded); + } + return true; + } + case 1796: + { + can1_tts_rr_t can1_tts_rr; + can1_tts_rr_unpack(&can1_tts_rr, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::tts_rr_t can1_tts_rr_decoded = canlib::decode::can1::tts_rr(can1_tts_rr); + if(canlib::callback::can1::tts_rr != NULL) { + canlib::callback::can1::tts_rr(can1_tts_rr, can1_tts_rr_decoded); + } + return true; + } + case 1795: + { + can1_tts_rl_t can1_tts_rl; + can1_tts_rl_unpack(&can1_tts_rl, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::tts_rl_t can1_tts_rl_decoded = canlib::decode::can1::tts_rl(can1_tts_rl); + if(canlib::callback::can1::tts_rl != NULL) { + canlib::callback::can1::tts_rl(can1_tts_rl, can1_tts_rl_decoded); + } + return true; + } + case 1794: + { + can1_tts_fr_t can1_tts_fr; + can1_tts_fr_unpack(&can1_tts_fr, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::tts_fr_t can1_tts_fr_decoded = canlib::decode::can1::tts_fr(can1_tts_fr); + if(canlib::callback::can1::tts_fr != NULL) { + canlib::callback::can1::tts_fr(can1_tts_fr, can1_tts_fr_decoded); + } + return true; + } + case 1793: + { + can1_tts_fl_t can1_tts_fl; + can1_tts_fl_unpack(&can1_tts_fl, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::tts_fl_t can1_tts_fl_decoded = canlib::decode::can1::tts_fl(can1_tts_fl); + if(canlib::callback::can1::tts_fl != NULL) { + canlib::callback::can1::tts_fl(can1_tts_fl, can1_tts_fl_decoded); + } + return true; + } + case 1026: + { + can1_stw_param_set_t can1_stw_param_set; + can1_stw_param_set_unpack(&can1_stw_param_set, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::stw_param_set_t can1_stw_param_set_decoded = canlib::decode::can1::stw_param_set(can1_stw_param_set); + if(canlib::callback::can1::stw_param_set != NULL) { + canlib::callback::can1::stw_param_set(can1_stw_param_set, can1_stw_param_set_decoded); + } + return true; + } + case 128: + { + can1_ams_slave0_status_t can1_ams_slave0_status; + can1_ams_slave0_status_unpack(&can1_ams_slave0_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave0_status_t can1_ams_slave0_status_decoded = canlib::decode::can1::ams_slave0_status(can1_ams_slave0_status); + if(canlib::callback::can1::ams_slave0_status != NULL) { + canlib::callback::can1::ams_slave0_status(can1_ams_slave0_status, can1_ams_slave0_status_decoded); + } + return true; + } + case 1280: + { + can1_ssu_message_t can1_ssu_message; + can1_ssu_message_unpack(&can1_ssu_message, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ssu_message_t can1_ssu_message_decoded = canlib::decode::can1::ssu_message(can1_ssu_message); + if(canlib::callback::can1::ssu_message != NULL) { + canlib::callback::can1::ssu_message(can1_ssu_message, can1_ssu_message_decoded); + } + return true; + } + case 10: + { + can1_ams_status_t can1_ams_status; + can1_ams_status_unpack(&can1_ams_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_status_t can1_ams_status_decoded = canlib::decode::can1::ams_status(can1_ams_status); + if(canlib::callback::can1::ams_status != NULL) { + canlib::callback::can1::ams_status(can1_ams_status, can1_ams_status_decoded); + } + return true; + } + case 9: + { + can1_ams_slave_panic_t can1_ams_slave_panic; + can1_ams_slave_panic_unpack(&can1_ams_slave_panic, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_slave_panic_t can1_ams_slave_panic_decoded = canlib::decode::can1::ams_slave_panic(can1_ams_slave_panic); + if(canlib::callback::can1::ams_slave_panic != NULL) { + canlib::callback::can1::ams_slave_panic(can1_ams_slave_panic, can1_ams_slave_panic_decoded); + } + return true; + } + case 11: + { + can1_ams_in_t can1_ams_in; + can1_ams_in_unpack(&can1_ams_in, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::ams_in_t can1_ams_in_decoded = canlib::decode::can1::ams_in(can1_ams_in); + if(canlib::callback::can1::ams_in != NULL) { + canlib::callback::can1::ams_in(can1_ams_in, can1_ams_in_decoded); + } + return true; + } + case 1313: + { + can1_shunt_current_t can1_shunt_current; + can1_shunt_current_unpack(&can1_shunt_current, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::shunt_current_t can1_shunt_current_decoded = canlib::decode::can1::shunt_current(can1_shunt_current); + if(canlib::callback::can1::shunt_current != NULL) { + canlib::callback::can1::shunt_current(can1_shunt_current, can1_shunt_current_decoded); + } + return true; + } + case 1314: + { + can1_shunt_voltage1_t can1_shunt_voltage1; + can1_shunt_voltage1_unpack(&can1_shunt_voltage1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::shunt_voltage1_t can1_shunt_voltage1_decoded = canlib::decode::can1::shunt_voltage1(can1_shunt_voltage1); + if(canlib::callback::can1::shunt_voltage1 != NULL) { + canlib::callback::can1::shunt_voltage1(can1_shunt_voltage1, can1_shunt_voltage1_decoded); + } + return true; + } + case 1315: + { + can1_shunt_voltage2_t can1_shunt_voltage2; + can1_shunt_voltage2_unpack(&can1_shunt_voltage2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::shunt_voltage2_t can1_shunt_voltage2_decoded = canlib::decode::can1::shunt_voltage2(can1_shunt_voltage2); + if(canlib::callback::can1::shunt_voltage2 != NULL) { + canlib::callback::can1::shunt_voltage2(can1_shunt_voltage2, can1_shunt_voltage2_decoded); + } + return true; + } + case 1316: + { + can1_shunt_voltage3_t can1_shunt_voltage3; + can1_shunt_voltage3_unpack(&can1_shunt_voltage3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::shunt_voltage3_t can1_shunt_voltage3_decoded = canlib::decode::can1::shunt_voltage3(can1_shunt_voltage3); + if(canlib::callback::can1::shunt_voltage3 != NULL) { + canlib::callback::can1::shunt_voltage3(can1_shunt_voltage3, can1_shunt_voltage3_decoded); + } + return true; + } + case 1317: + { + can1_shunt_temperature_t can1_shunt_temperature; + can1_shunt_temperature_unpack(&can1_shunt_temperature, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::shunt_temperature_t can1_shunt_temperature_decoded = canlib::decode::can1::shunt_temperature(can1_shunt_temperature); + if(canlib::callback::can1::shunt_temperature != NULL) { + canlib::callback::can1::shunt_temperature(can1_shunt_temperature, can1_shunt_temperature_decoded); + } + return true; + } + case 200: + { + can1_pdu_command_t can1_pdu_command; + can1_pdu_command_unpack(&can1_pdu_command, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_command_t can1_pdu_command_decoded = canlib::decode::can1::pdu_command(can1_pdu_command); + if(canlib::callback::can1::pdu_command != NULL) { + canlib::callback::can1::pdu_command(can1_pdu_command, can1_pdu_command_decoded); + } + return true; + } + case 201: + { + can1_pdu_response_t can1_pdu_response; + can1_pdu_response_unpack(&can1_pdu_response, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_response_t can1_pdu_response_decoded = canlib::decode::can1::pdu_response(can1_pdu_response); + if(canlib::callback::can1::pdu_response != NULL) { + canlib::callback::can1::pdu_response(can1_pdu_response, can1_pdu_response_decoded); + } + return true; + } + case 1040: + { + can1_as_mission_fb_t can1_as_mission_fb; + can1_as_mission_fb_unpack(&can1_as_mission_fb, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::as_mission_fb_t can1_as_mission_fb_decoded = canlib::decode::can1::as_mission_fb(can1_as_mission_fb); + if(canlib::callback::can1::as_mission_fb != NULL) { + canlib::callback::can1::as_mission_fb(can1_as_mission_fb, can1_as_mission_fb_decoded); + } + return true; + } + case 1024: + { + can1_stw_mission_selected_t can1_stw_mission_selected; + can1_stw_mission_selected_unpack(&can1_stw_mission_selected, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::stw_mission_selected_t can1_stw_mission_selected_decoded = canlib::decode::can1::stw_mission_selected(can1_stw_mission_selected); + if(canlib::callback::can1::stw_mission_selected != NULL) { + canlib::callback::can1::stw_mission_selected(can1_stw_mission_selected, can1_stw_mission_selected_decoded); + } + return true; + } + case 293: + { + can1_epsc_out_t can1_epsc_out; + can1_epsc_out_unpack(&can1_epsc_out, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::epsc_out_t can1_epsc_out_decoded = canlib::decode::can1::epsc_out(can1_epsc_out); + if(canlib::callback::can1::epsc_out != NULL) { + canlib::callback::can1::epsc_out(can1_epsc_out, can1_epsc_out_decoded); + } + return true; + } + case 291: + { + can1_epsc_steering_in_t can1_epsc_steering_in; + can1_epsc_steering_in_unpack(&can1_epsc_steering_in, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::epsc_steering_in_t can1_epsc_steering_in_decoded = canlib::decode::can1::epsc_steering_in(can1_epsc_steering_in); + if(canlib::callback::can1::epsc_steering_in != NULL) { + canlib::callback::can1::epsc_steering_in(can1_epsc_steering_in, can1_epsc_steering_in_decoded); + } + return true; + } + case 1025: + { + can1_stw_buttons_t can1_stw_buttons; + can1_stw_buttons_unpack(&can1_stw_buttons, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::stw_buttons_t can1_stw_buttons_decoded = canlib::decode::can1::stw_buttons(can1_stw_buttons); + if(canlib::callback::can1::stw_buttons != NULL) { + canlib::callback::can1::stw_buttons(can1_stw_buttons, can1_stw_buttons_decoded); + } + return true; + } + case 1042: + { + can1_stw_status_t can1_stw_status; + can1_stw_status_unpack(&can1_stw_status, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::stw_status_t can1_stw_status_decoded = canlib::decode::can1::stw_status(can1_stw_status); + if(canlib::callback::can1::stw_status != NULL) { + canlib::callback::can1::stw_status(can1_stw_status, can1_stw_status_decoded); + } + return true; + } + case 202: + { + can1_pdu_current_1_t can1_pdu_current_1; + can1_pdu_current_1_unpack(&can1_pdu_current_1, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_current_1_t can1_pdu_current_1_decoded = canlib::decode::can1::pdu_current_1(can1_pdu_current_1); + if(canlib::callback::can1::pdu_current_1 != NULL) { + canlib::callback::can1::pdu_current_1(can1_pdu_current_1, can1_pdu_current_1_decoded); + } + return true; + } + case 203: + { + can1_pdu_current_2_t can1_pdu_current_2; + can1_pdu_current_2_unpack(&can1_pdu_current_2, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_current_2_t can1_pdu_current_2_decoded = canlib::decode::can1::pdu_current_2(can1_pdu_current_2); + if(canlib::callback::can1::pdu_current_2 != NULL) { + canlib::callback::can1::pdu_current_2(can1_pdu_current_2, can1_pdu_current_2_decoded); + } + return true; + } + case 204: + { + can1_pdu_current_3_t can1_pdu_current_3; + can1_pdu_current_3_unpack(&can1_pdu_current_3, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_current_3_t can1_pdu_current_3_decoded = canlib::decode::can1::pdu_current_3(can1_pdu_current_3); + if(canlib::callback::can1::pdu_current_3 != NULL) { + canlib::callback::can1::pdu_current_3(can1_pdu_current_3, can1_pdu_current_3_decoded); + } + return true; + } + case 205: + { + can1_pdu_current_4_t can1_pdu_current_4; + can1_pdu_current_4_unpack(&can1_pdu_current_4, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::pdu_current_4_t can1_pdu_current_4_decoded = canlib::decode::can1::pdu_current_4(can1_pdu_current_4); + if(canlib::callback::can1::pdu_current_4 != NULL) { + canlib::callback::can1::pdu_current_4(can1_pdu_current_4, can1_pdu_current_4_decoded); + } + return true; + } + case 292: + { + can1_epsc_config_in_t can1_epsc_config_in; + can1_epsc_config_in_unpack(&can1_epsc_config_in, can_frame_raw.data, can_frame_raw.can_dlc); + frame::decoded::can1::epsc_config_in_t can1_epsc_config_in_decoded = canlib::decode::can1::epsc_config_in(can1_epsc_config_in); + if(canlib::callback::can1::epsc_config_in != NULL) { + canlib::callback::can1::epsc_config_in(can1_epsc_config_in, can1_epsc_config_in_decoded); + } + return true; + } + + default: + return false; + } + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::inverter_velocity_t inverter_velocity) { + frame = can_frame(); + frame.can_id = 1910; + frame.can_dlc = 8; + can1_inverter_velocity_t can1_inverter_velocity_frame; + can1_inverter_velocity_init(&can1_inverter_velocity_frame); + can1_inverter_velocity_frame = canlib::encode::can1::inverter_velocity(inverter_velocity); + int frame_size = can1_inverter_velocity_pack(reinterpret_cast(&frame.data), &can1_inverter_velocity_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::inverter_errors_warnings_t inverter_errors_warnings) { + frame = can_frame(); + frame.can_id = 1920; + frame.can_dlc = 8; + can1_inverter_errors_warnings_t can1_inverter_errors_warnings_frame; + can1_inverter_errors_warnings_init(&can1_inverter_errors_warnings_frame); + can1_inverter_errors_warnings_frame = canlib::encode::can1::inverter_errors_warnings(inverter_errors_warnings); + int frame_size = can1_inverter_errors_warnings_pack(reinterpret_cast(&frame.data), &can1_inverter_errors_warnings_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::inverter_torque_actual_cw_t inverter_torque_actual_cw) { + frame = can_frame(); + frame.can_id = 1913; + frame.can_dlc = 8; + can1_inverter_torque_actual_cw_t can1_inverter_torque_actual_cw_frame; + can1_inverter_torque_actual_cw_init(&can1_inverter_torque_actual_cw_frame); + can1_inverter_torque_actual_cw_frame = canlib::encode::can1::inverter_torque_actual_cw(inverter_torque_actual_cw); + int frame_size = can1_inverter_torque_actual_cw_pack(reinterpret_cast(&frame.data), &can1_inverter_torque_actual_cw_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::inverter_temperatur_t inverter_temperatur) { + frame = can_frame(); + frame.can_id = 1912; + frame.can_dlc = 8; + can1_inverter_temperatur_t can1_inverter_temperatur_frame; + can1_inverter_temperatur_init(&can1_inverter_temperatur_frame); + can1_inverter_temperatur_frame = canlib::encode::can1::inverter_temperatur(inverter_temperatur); + int frame_size = can1_inverter_temperatur_pack(reinterpret_cast(&frame.data), &can1_inverter_temperatur_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::inverter_torque_wanted_t inverter_torque_wanted) { + frame = can_frame(); + frame.can_id = 1911; + frame.can_dlc = 8; + can1_inverter_torque_wanted_t can1_inverter_torque_wanted_frame; + can1_inverter_torque_wanted_init(&can1_inverter_torque_wanted_frame); + can1_inverter_torque_wanted_frame = canlib::encode::can1::inverter_torque_wanted(inverter_torque_wanted); + int frame_size = can1_inverter_torque_wanted_pack(reinterpret_cast(&frame.data), &can1_inverter_torque_wanted_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node1_t sdo_telemetrie_rx_node1) { + frame = can_frame(); + frame.can_id = 1843; + frame.can_dlc = 8; + can1_sdo_telemetrie_rx_node1_t can1_sdo_telemetrie_rx_node1_frame; + can1_sdo_telemetrie_rx_node1_init(&can1_sdo_telemetrie_rx_node1_frame); + can1_sdo_telemetrie_rx_node1_frame = canlib::encode::can1::sdo_telemetrie_rx_node1(sdo_telemetrie_rx_node1); + int frame_size = can1_sdo_telemetrie_rx_node1_pack(reinterpret_cast(&frame.data), &can1_sdo_telemetrie_rx_node1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sdo_telemetrie_rx_node2_t sdo_telemetrie_rx_node2) { + frame = can_frame(); + frame.can_id = 1841; + frame.can_dlc = 8; + can1_sdo_telemetrie_rx_node2_t can1_sdo_telemetrie_rx_node2_frame; + can1_sdo_telemetrie_rx_node2_init(&can1_sdo_telemetrie_rx_node2_frame); + can1_sdo_telemetrie_rx_node2_frame = canlib::encode::can1::sdo_telemetrie_rx_node2(sdo_telemetrie_rx_node2); + int frame_size = can1_sdo_telemetrie_rx_node2_pack(reinterpret_cast(&frame.data), &can1_sdo_telemetrie_rx_node2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sdo_telemetrie_tx_t sdo_telemetrie_tx) { + frame = can_frame(); + frame.can_id = 1842; + frame.can_dlc = 8; + can1_sdo_telemetrie_tx_t can1_sdo_telemetrie_tx_frame; + can1_sdo_telemetrie_tx_init(&can1_sdo_telemetrie_tx_frame); + can1_sdo_telemetrie_tx_frame = canlib::encode::can1::sdo_telemetrie_tx(sdo_telemetrie_tx); + int frame_size = can1_sdo_telemetrie_tx_pack(reinterpret_cast(&frame.data), &can1_sdo_telemetrie_tx_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::laptop_sdo_node_t laptop_sdo_node) { + frame = can_frame(); + frame.can_id = 1840; + frame.can_dlc = 1; + can1_laptop_sdo_node_t can1_laptop_sdo_node_frame; + can1_laptop_sdo_node_init(&can1_laptop_sdo_node_frame); + can1_laptop_sdo_node_frame = canlib::encode::can1::laptop_sdo_node(laptop_sdo_node); + int frame_size = can1_laptop_sdo_node_pack(reinterpret_cast(&frame.data), &can1_laptop_sdo_node_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::x_sens_long_lat_t x_sens_long_lat) { + frame = can_frame(); + frame.can_id = 1811; + frame.can_dlc = 8; + can1_x_sens_long_lat_t can1_x_sens_long_lat_frame; + can1_x_sens_long_lat_init(&can1_x_sens_long_lat_frame); + can1_x_sens_long_lat_frame = canlib::encode::can1::x_sens_long_lat(x_sens_long_lat); + int frame_size = can1_x_sens_long_lat_pack(reinterpret_cast(&frame.data), &can1_x_sens_long_lat_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::x_sens_rateofturn_t x_sens_rateofturn) { + frame = can_frame(); + frame.can_id = 1810; + frame.can_dlc = 6; + can1_x_sens_rateofturn_t can1_x_sens_rateofturn_frame; + can1_x_sens_rateofturn_init(&can1_x_sens_rateofturn_frame); + can1_x_sens_rateofturn_frame = canlib::encode::can1::x_sens_rateofturn(x_sens_rateofturn); + int frame_size = can1_x_sens_rateofturn_pack(reinterpret_cast(&frame.data), &can1_x_sens_rateofturn_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::x_sens_acceleration_t x_sens_acceleration) { + frame = can_frame(); + frame.can_id = 1809; + frame.can_dlc = 6; + can1_x_sens_acceleration_t can1_x_sens_acceleration_frame; + can1_x_sens_acceleration_init(&can1_x_sens_acceleration_frame); + can1_x_sens_acceleration_frame = canlib::encode::can1::x_sens_acceleration(x_sens_acceleration); + int frame_size = can1_x_sens_acceleration_pack(reinterpret_cast(&frame.data), &can1_x_sens_acceleration_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::x_sens_velocity_t x_sens_velocity) { + frame = can_frame(); + frame.can_id = 1812; + frame.can_dlc = 6; + can1_x_sens_velocity_t can1_x_sens_velocity_frame; + can1_x_sens_velocity_init(&can1_x_sens_velocity_frame); + can1_x_sens_velocity_frame = canlib::encode::can1::x_sens_velocity(x_sens_velocity); + int frame_size = can1_x_sens_velocity_pack(reinterpret_cast(&frame.data), &can1_x_sens_velocity_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::telemetrie_t telemetrie) { + frame = can_frame(); + frame.can_id = 1824; + frame.can_dlc = 7; + can1_telemetrie_t can1_telemetrie_frame; + can1_telemetrie_init(&can1_telemetrie_frame); + can1_telemetrie_frame = canlib::encode::can1::telemetrie(telemetrie); + int frame_size = can1_telemetrie_pack(reinterpret_cast(&frame.data), &can1_telemetrie_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::override_powermap_t override_powermap) { + frame = can_frame(); + frame.can_id = 1829; + frame.can_dlc = 8; + can1_override_powermap_t can1_override_powermap_frame; + can1_override_powermap_init(&can1_override_powermap_frame); + can1_override_powermap_frame = canlib::encode::can1::override_powermap(override_powermap); + int frame_size = can1_override_powermap_pack(reinterpret_cast(&frame.data), &can1_override_powermap_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::override_laptop_2_t override_laptop_2) { + frame = can_frame(); + frame.can_id = 1828; + frame.can_dlc = 5; + can1_override_laptop_2_t can1_override_laptop_2_frame; + can1_override_laptop_2_init(&can1_override_laptop_2_frame); + can1_override_laptop_2_frame = canlib::encode::can1::override_laptop_2(override_laptop_2); + int frame_size = can1_override_laptop_2_pack(reinterpret_cast(&frame.data), &can1_override_laptop_2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::override_epsc_cooling_t override_epsc_cooling) { + frame = can_frame(); + frame.can_id = 1827; + frame.can_dlc = 8; + can1_override_epsc_cooling_t can1_override_epsc_cooling_frame; + can1_override_epsc_cooling_init(&can1_override_epsc_cooling_frame); + can1_override_epsc_cooling_frame = canlib::encode::can1::override_epsc_cooling(override_epsc_cooling); + int frame_size = can1_override_epsc_cooling_pack(reinterpret_cast(&frame.data), &can1_override_epsc_cooling_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::override_laptop_t override_laptop) { + frame = can_frame(); + frame.can_id = 1825; + frame.can_dlc = 3; + can1_override_laptop_t can1_override_laptop_frame; + can1_override_laptop_init(&can1_override_laptop_frame); + can1_override_laptop_frame = canlib::encode::can1::override_laptop(override_laptop); + int frame_size = can1_override_laptop_pack(reinterpret_cast(&frame.data), &can1_override_laptop_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::apps_override_t apps_override) { + frame = can_frame(); + frame.can_id = 1826; + frame.can_dlc = 5; + can1_apps_override_t can1_apps_override_frame; + can1_apps_override_init(&can1_apps_override_frame); + can1_apps_override_frame = canlib::encode::can1::apps_override(apps_override); + int frame_size = can1_apps_override_pack(reinterpret_cast(&frame.data), &can1_apps_override_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_damper_t ftcu_damper) { + frame = can_frame(); + frame.can_id = 259; + frame.can_dlc = 8; + can1_ftcu_damper_t can1_ftcu_damper_frame; + can1_ftcu_damper_init(&can1_ftcu_damper_frame); + can1_ftcu_damper_frame = canlib::encode::can1::ftcu_damper(ftcu_damper); + int frame_size = can1_ftcu_damper_pack(reinterpret_cast(&frame.data), &can1_ftcu_damper_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_param_confirm_t ftcu_param_confirm) { + frame = can_frame(); + frame.can_id = 1043; + frame.can_dlc = 1; + can1_ftcu_param_confirm_t can1_ftcu_param_confirm_frame; + can1_ftcu_param_confirm_init(&can1_ftcu_param_confirm_frame); + can1_ftcu_param_confirm_frame = canlib::encode::can1::ftcu_param_confirm(ftcu_param_confirm); + int frame_size = can1_ftcu_param_confirm_pack(reinterpret_cast(&frame.data), &can1_ftcu_param_confirm_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_f_10_hz_t sensornode_f_10_hz) { + frame = can_frame(); + frame.can_id = 209; + frame.can_dlc = 3; + can1_sensornode_f_10_hz_t can1_sensornode_f_10_hz_frame; + can1_sensornode_f_10_hz_init(&can1_sensornode_f_10_hz_frame); + can1_sensornode_f_10_hz_frame = canlib::encode::can1::sensornode_f_10_hz(sensornode_f_10_hz); + int frame_size = can1_sensornode_f_10_hz_pack(reinterpret_cast(&frame.data), &can1_sensornode_f_10_hz_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_1_t sensornode_f_100_hz_1) { + frame = can_frame(); + frame.can_id = 211; + frame.can_dlc = 7; + can1_sensornode_f_100_hz_1_t can1_sensornode_f_100_hz_1_frame; + can1_sensornode_f_100_hz_1_init(&can1_sensornode_f_100_hz_1_frame); + can1_sensornode_f_100_hz_1_frame = canlib::encode::can1::sensornode_f_100_hz_1(sensornode_f_100_hz_1); + int frame_size = can1_sensornode_f_100_hz_1_pack(reinterpret_cast(&frame.data), &can1_sensornode_f_100_hz_1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_f_100_hz_2_t sensornode_f_100_hz_2) { + frame = can_frame(); + frame.can_id = 213; + frame.can_dlc = 3; + can1_sensornode_f_100_hz_2_t can1_sensornode_f_100_hz_2_frame; + can1_sensornode_f_100_hz_2_init(&can1_sensornode_f_100_hz_2_frame); + can1_sensornode_f_100_hz_2_frame = canlib::encode::can1::sensornode_f_100_hz_2(sensornode_f_100_hz_2); + int frame_size = can1_sensornode_f_100_hz_2_pack(reinterpret_cast(&frame.data), &can1_sensornode_f_100_hz_2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_f_1k_hz_t sensornode_f_1k_hz) { + frame = can_frame(); + frame.can_id = 215; + frame.can_dlc = 3; + can1_sensornode_f_1k_hz_t can1_sensornode_f_1k_hz_frame; + can1_sensornode_f_1k_hz_init(&can1_sensornode_f_1k_hz_frame); + can1_sensornode_f_1k_hz_frame = canlib::encode::can1::sensornode_f_1k_hz(sensornode_f_1k_hz); + int frame_size = can1_sensornode_f_1k_hz_pack(reinterpret_cast(&frame.data), &can1_sensornode_f_1k_hz_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_r_10_hz_t sensornode_r_10_hz) { + frame = can_frame(); + frame.can_id = 210; + frame.can_dlc = 7; + can1_sensornode_r_10_hz_t can1_sensornode_r_10_hz_frame; + can1_sensornode_r_10_hz_init(&can1_sensornode_r_10_hz_frame); + can1_sensornode_r_10_hz_frame = canlib::encode::can1::sensornode_r_10_hz(sensornode_r_10_hz); + int frame_size = can1_sensornode_r_10_hz_pack(reinterpret_cast(&frame.data), &can1_sensornode_r_10_hz_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_r_100_hz_t sensornode_r_100_hz) { + frame = can_frame(); + frame.can_id = 212; + frame.can_dlc = 8; + can1_sensornode_r_100_hz_t can1_sensornode_r_100_hz_frame; + can1_sensornode_r_100_hz_init(&can1_sensornode_r_100_hz_frame); + can1_sensornode_r_100_hz_frame = canlib::encode::can1::sensornode_r_100_hz(sensornode_r_100_hz); + int frame_size = can1_sensornode_r_100_hz_pack(reinterpret_cast(&frame.data), &can1_sensornode_r_100_hz_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::sensornode_r_1k_hz_t sensornode_r_1k_hz) { + frame = can_frame(); + frame.can_id = 216; + frame.can_dlc = 3; + can1_sensornode_r_1k_hz_t can1_sensornode_r_1k_hz_frame; + can1_sensornode_r_1k_hz_init(&can1_sensornode_r_1k_hz_frame); + can1_sensornode_r_1k_hz_frame = canlib::encode::can1::sensornode_r_1k_hz(sensornode_r_1k_hz); + int frame_size = can1_sensornode_r_1k_hz_pack(reinterpret_cast(&frame.data), &can1_sensornode_r_1k_hz_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pwm_duty_cycle_t pwm_duty_cycle) { + frame = can_frame(); + frame.can_id = 220; + frame.can_dlc = 7; + can1_pwm_duty_cycle_t can1_pwm_duty_cycle_frame; + can1_pwm_duty_cycle_init(&can1_pwm_duty_cycle_frame); + can1_pwm_duty_cycle_frame = canlib::encode::can1::pwm_duty_cycle(pwm_duty_cycle); + int frame_size = can1_pwm_duty_cycle_pack(reinterpret_cast(&frame.data), &can1_pwm_duty_cycle_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pwm_config_t pwm_config) { + frame = can_frame(); + frame.can_id = 221; + frame.can_dlc = 6; + can1_pwm_config_t can1_pwm_config_frame; + can1_pwm_config_init(&can1_pwm_config_frame); + can1_pwm_config_frame = canlib::encode::can1::pwm_config(pwm_config); + int frame_size = can1_pwm_config_pack(reinterpret_cast(&frame.data), &can1_pwm_config_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::dashboard_in_t dashboard_in) { + frame = can_frame(); + frame.can_id = 1056; + frame.can_dlc = 1; + can1_dashboard_in_t can1_dashboard_in_frame; + can1_dashboard_in_init(&can1_dashboard_in_frame); + can1_dashboard_in_frame = canlib::encode::can1::dashboard_in(dashboard_in); + int frame_size = can1_dashboard_in_pack(reinterpret_cast(&frame.data), &can1_dashboard_in_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_status_t ams_slave1_status) { + frame = can_frame(); + frame.can_id = 129; + frame.can_dlc = 8; + can1_ams_slave1_status_t can1_ams_slave1_status_frame; + can1_ams_slave1_status_init(&can1_ams_slave1_status_frame); + can1_ams_slave1_status_frame = canlib::encode::can1::ams_slave1_status(ams_slave1_status); + int frame_size = can1_ams_slave1_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log0_t ams_slave2_log0) { + frame = can_frame(); + frame.can_id = 1568; + frame.can_dlc = 8; + can1_ams_slave2_log0_t can1_ams_slave2_log0_frame; + can1_ams_slave2_log0_init(&can1_ams_slave2_log0_frame); + can1_ams_slave2_log0_frame = canlib::encode::can1::ams_slave2_log0(ams_slave2_log0); + int frame_size = can1_ams_slave2_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log1_t ams_slave2_log1) { + frame = can_frame(); + frame.can_id = 1569; + frame.can_dlc = 8; + can1_ams_slave2_log1_t can1_ams_slave2_log1_frame; + can1_ams_slave2_log1_init(&can1_ams_slave2_log1_frame); + can1_ams_slave2_log1_frame = canlib::encode::can1::ams_slave2_log1(ams_slave2_log1); + int frame_size = can1_ams_slave2_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log2_t ams_slave2_log2) { + frame = can_frame(); + frame.can_id = 1570; + frame.can_dlc = 8; + can1_ams_slave2_log2_t can1_ams_slave2_log2_frame; + can1_ams_slave2_log2_init(&can1_ams_slave2_log2_frame); + can1_ams_slave2_log2_frame = canlib::encode::can1::ams_slave2_log2(ams_slave2_log2); + int frame_size = can1_ams_slave2_log2_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log3_t ams_slave2_log3) { + frame = can_frame(); + frame.can_id = 1571; + frame.can_dlc = 8; + can1_ams_slave2_log3_t can1_ams_slave2_log3_frame; + can1_ams_slave2_log3_init(&can1_ams_slave2_log3_frame); + can1_ams_slave2_log3_frame = canlib::encode::can1::ams_slave2_log3(ams_slave2_log3); + int frame_size = can1_ams_slave2_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log4_t ams_slave2_log4) { + frame = can_frame(); + frame.can_id = 1572; + frame.can_dlc = 6; + can1_ams_slave2_log4_t can1_ams_slave2_log4_frame; + can1_ams_slave2_log4_init(&can1_ams_slave2_log4_frame); + can1_ams_slave2_log4_frame = canlib::encode::can1::ams_slave2_log4(ams_slave2_log4); + int frame_size = can1_ams_slave2_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log5_t ams_slave2_log5) { + frame = can_frame(); + frame.can_id = 1573; + frame.can_dlc = 8; + can1_ams_slave2_log5_t can1_ams_slave2_log5_frame; + can1_ams_slave2_log5_init(&can1_ams_slave2_log5_frame); + can1_ams_slave2_log5_frame = canlib::encode::can1::ams_slave2_log5(ams_slave2_log5); + int frame_size = can1_ams_slave2_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log6_t ams_slave5_log6) { + frame = can_frame(); + frame.can_id = 1622; + frame.can_dlc = 8; + can1_ams_slave5_log6_t can1_ams_slave5_log6_frame; + can1_ams_slave5_log6_init(&can1_ams_slave5_log6_frame); + can1_ams_slave5_log6_frame = canlib::encode::can1::ams_slave5_log6(ams_slave5_log6); + int frame_size = can1_ams_slave5_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log6_t ams_slave4_log6) { + frame = can_frame(); + frame.can_id = 1606; + frame.can_dlc = 8; + can1_ams_slave4_log6_t can1_ams_slave4_log6_frame; + can1_ams_slave4_log6_init(&can1_ams_slave4_log6_frame); + can1_ams_slave4_log6_frame = canlib::encode::can1::ams_slave4_log6(ams_slave4_log6); + int frame_size = can1_ams_slave4_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log6_t ams_slave3_log6) { + frame = can_frame(); + frame.can_id = 1590; + frame.can_dlc = 8; + can1_ams_slave3_log6_t can1_ams_slave3_log6_frame; + can1_ams_slave3_log6_init(&can1_ams_slave3_log6_frame); + can1_ams_slave3_log6_frame = canlib::encode::can1::ams_slave3_log6(ams_slave3_log6); + int frame_size = can1_ams_slave3_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_log6_t ams_slave2_log6) { + frame = can_frame(); + frame.can_id = 1574; + frame.can_dlc = 8; + can1_ams_slave2_log6_t can1_ams_slave2_log6_frame; + can1_ams_slave2_log6_init(&can1_ams_slave2_log6_frame); + can1_ams_slave2_log6_frame = canlib::encode::can1::ams_slave2_log6(ams_slave2_log6); + int frame_size = can1_ams_slave2_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log6_t ams_slave1_log6) { + frame = can_frame(); + frame.can_id = 1558; + frame.can_dlc = 8; + can1_ams_slave1_log6_t can1_ams_slave1_log6_frame; + can1_ams_slave1_log6_init(&can1_ams_slave1_log6_frame); + can1_ams_slave1_log6_frame = canlib::encode::can1::ams_slave1_log6(ams_slave1_log6); + int frame_size = can1_ams_slave1_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log5_t ams_slave5_log5) { + frame = can_frame(); + frame.can_id = 1621; + frame.can_dlc = 8; + can1_ams_slave5_log5_t can1_ams_slave5_log5_frame; + can1_ams_slave5_log5_init(&can1_ams_slave5_log5_frame); + can1_ams_slave5_log5_frame = canlib::encode::can1::ams_slave5_log5(ams_slave5_log5); + int frame_size = can1_ams_slave5_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log5_t ams_slave4_log5) { + frame = can_frame(); + frame.can_id = 1605; + frame.can_dlc = 8; + can1_ams_slave4_log5_t can1_ams_slave4_log5_frame; + can1_ams_slave4_log5_init(&can1_ams_slave4_log5_frame); + can1_ams_slave4_log5_frame = canlib::encode::can1::ams_slave4_log5(ams_slave4_log5); + int frame_size = can1_ams_slave4_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log5_t ams_slave3_log5) { + frame = can_frame(); + frame.can_id = 1589; + frame.can_dlc = 8; + can1_ams_slave3_log5_t can1_ams_slave3_log5_frame; + can1_ams_slave3_log5_init(&can1_ams_slave3_log5_frame); + can1_ams_slave3_log5_frame = canlib::encode::can1::ams_slave3_log5(ams_slave3_log5); + int frame_size = can1_ams_slave3_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log5_t ams_slave1_log5) { + frame = can_frame(); + frame.can_id = 1557; + frame.can_dlc = 8; + can1_ams_slave1_log5_t can1_ams_slave1_log5_frame; + can1_ams_slave1_log5_init(&can1_ams_slave1_log5_frame); + can1_ams_slave1_log5_frame = canlib::encode::can1::ams_slave1_log5(ams_slave1_log5); + int frame_size = can1_ams_slave1_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log4_t ams_slave5_log4) { + frame = can_frame(); + frame.can_id = 1620; + frame.can_dlc = 6; + can1_ams_slave5_log4_t can1_ams_slave5_log4_frame; + can1_ams_slave5_log4_init(&can1_ams_slave5_log4_frame); + can1_ams_slave5_log4_frame = canlib::encode::can1::ams_slave5_log4(ams_slave5_log4); + int frame_size = can1_ams_slave5_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log4_t ams_slave4_log4) { + frame = can_frame(); + frame.can_id = 1604; + frame.can_dlc = 6; + can1_ams_slave4_log4_t can1_ams_slave4_log4_frame; + can1_ams_slave4_log4_init(&can1_ams_slave4_log4_frame); + can1_ams_slave4_log4_frame = canlib::encode::can1::ams_slave4_log4(ams_slave4_log4); + int frame_size = can1_ams_slave4_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log4_t ams_slave3_log4) { + frame = can_frame(); + frame.can_id = 1588; + frame.can_dlc = 6; + can1_ams_slave3_log4_t can1_ams_slave3_log4_frame; + can1_ams_slave3_log4_init(&can1_ams_slave3_log4_frame); + can1_ams_slave3_log4_frame = canlib::encode::can1::ams_slave3_log4(ams_slave3_log4); + int frame_size = can1_ams_slave3_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log4_t ams_slave1_log4) { + frame = can_frame(); + frame.can_id = 1556; + frame.can_dlc = 6; + can1_ams_slave1_log4_t can1_ams_slave1_log4_frame; + can1_ams_slave1_log4_init(&can1_ams_slave1_log4_frame); + can1_ams_slave1_log4_frame = canlib::encode::can1::ams_slave1_log4(ams_slave1_log4); + int frame_size = can1_ams_slave1_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log3_t ams_slave5_log3) { + frame = can_frame(); + frame.can_id = 1619; + frame.can_dlc = 8; + can1_ams_slave5_log3_t can1_ams_slave5_log3_frame; + can1_ams_slave5_log3_init(&can1_ams_slave5_log3_frame); + can1_ams_slave5_log3_frame = canlib::encode::can1::ams_slave5_log3(ams_slave5_log3); + int frame_size = can1_ams_slave5_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log3_t ams_slave4_log3) { + frame = can_frame(); + frame.can_id = 1603; + frame.can_dlc = 8; + can1_ams_slave4_log3_t can1_ams_slave4_log3_frame; + can1_ams_slave4_log3_init(&can1_ams_slave4_log3_frame); + can1_ams_slave4_log3_frame = canlib::encode::can1::ams_slave4_log3(ams_slave4_log3); + int frame_size = can1_ams_slave4_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log3_t ams_slave3_log3) { + frame = can_frame(); + frame.can_id = 1587; + frame.can_dlc = 8; + can1_ams_slave3_log3_t can1_ams_slave3_log3_frame; + can1_ams_slave3_log3_init(&can1_ams_slave3_log3_frame); + can1_ams_slave3_log3_frame = canlib::encode::can1::ams_slave3_log3(ams_slave3_log3); + int frame_size = can1_ams_slave3_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log3_t ams_slave1_log3) { + frame = can_frame(); + frame.can_id = 1555; + frame.can_dlc = 8; + can1_ams_slave1_log3_t can1_ams_slave1_log3_frame; + can1_ams_slave1_log3_init(&can1_ams_slave1_log3_frame); + can1_ams_slave1_log3_frame = canlib::encode::can1::ams_slave1_log3(ams_slave1_log3); + int frame_size = can1_ams_slave1_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log2_t ams_slave5_log2) { + frame = can_frame(); + frame.can_id = 1618; + frame.can_dlc = 8; + can1_ams_slave5_log2_t can1_ams_slave5_log2_frame; + can1_ams_slave5_log2_init(&can1_ams_slave5_log2_frame); + can1_ams_slave5_log2_frame = canlib::encode::can1::ams_slave5_log2(ams_slave5_log2); + int frame_size = can1_ams_slave5_log2_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log2_t ams_slave4_log2) { + frame = can_frame(); + frame.can_id = 1602; + frame.can_dlc = 8; + can1_ams_slave4_log2_t can1_ams_slave4_log2_frame; + can1_ams_slave4_log2_init(&can1_ams_slave4_log2_frame); + can1_ams_slave4_log2_frame = canlib::encode::can1::ams_slave4_log2(ams_slave4_log2); + int frame_size = can1_ams_slave4_log2_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log2_t ams_slave3_log2) { + frame = can_frame(); + frame.can_id = 1586; + frame.can_dlc = 8; + can1_ams_slave3_log2_t can1_ams_slave3_log2_frame; + can1_ams_slave3_log2_init(&can1_ams_slave3_log2_frame); + can1_ams_slave3_log2_frame = canlib::encode::can1::ams_slave3_log2(ams_slave3_log2); + int frame_size = can1_ams_slave3_log2_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log2_t ams_slave1_log2) { + frame = can_frame(); + frame.can_id = 1554; + frame.can_dlc = 8; + can1_ams_slave1_log2_t can1_ams_slave1_log2_frame; + can1_ams_slave1_log2_init(&can1_ams_slave1_log2_frame); + can1_ams_slave1_log2_frame = canlib::encode::can1::ams_slave1_log2(ams_slave1_log2); + int frame_size = can1_ams_slave1_log2_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log1_t ams_slave5_log1) { + frame = can_frame(); + frame.can_id = 1617; + frame.can_dlc = 8; + can1_ams_slave5_log1_t can1_ams_slave5_log1_frame; + can1_ams_slave5_log1_init(&can1_ams_slave5_log1_frame); + can1_ams_slave5_log1_frame = canlib::encode::can1::ams_slave5_log1(ams_slave5_log1); + int frame_size = can1_ams_slave5_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log1_t ams_slave4_log1) { + frame = can_frame(); + frame.can_id = 1601; + frame.can_dlc = 8; + can1_ams_slave4_log1_t can1_ams_slave4_log1_frame; + can1_ams_slave4_log1_init(&can1_ams_slave4_log1_frame); + can1_ams_slave4_log1_frame = canlib::encode::can1::ams_slave4_log1(ams_slave4_log1); + int frame_size = can1_ams_slave4_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log1_t ams_slave3_log1) { + frame = can_frame(); + frame.can_id = 1585; + frame.can_dlc = 8; + can1_ams_slave3_log1_t can1_ams_slave3_log1_frame; + can1_ams_slave3_log1_init(&can1_ams_slave3_log1_frame); + can1_ams_slave3_log1_frame = canlib::encode::can1::ams_slave3_log1(ams_slave3_log1); + int frame_size = can1_ams_slave3_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log1_t ams_slave1_log1) { + frame = can_frame(); + frame.can_id = 1553; + frame.can_dlc = 8; + can1_ams_slave1_log1_t can1_ams_slave1_log1_frame; + can1_ams_slave1_log1_init(&can1_ams_slave1_log1_frame); + can1_ams_slave1_log1_frame = canlib::encode::can1::ams_slave1_log1(ams_slave1_log1); + int frame_size = can1_ams_slave1_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_log0_t ams_slave5_log0) { + frame = can_frame(); + frame.can_id = 1616; + frame.can_dlc = 8; + can1_ams_slave5_log0_t can1_ams_slave5_log0_frame; + can1_ams_slave5_log0_init(&can1_ams_slave5_log0_frame); + can1_ams_slave5_log0_frame = canlib::encode::can1::ams_slave5_log0(ams_slave5_log0); + int frame_size = can1_ams_slave5_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_log0_t ams_slave4_log0) { + frame = can_frame(); + frame.can_id = 1600; + frame.can_dlc = 8; + can1_ams_slave4_log0_t can1_ams_slave4_log0_frame; + can1_ams_slave4_log0_init(&can1_ams_slave4_log0_frame); + can1_ams_slave4_log0_frame = canlib::encode::can1::ams_slave4_log0(ams_slave4_log0); + int frame_size = can1_ams_slave4_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_log0_t ams_slave3_log0) { + frame = can_frame(); + frame.can_id = 1584; + frame.can_dlc = 8; + can1_ams_slave3_log0_t can1_ams_slave3_log0_frame; + can1_ams_slave3_log0_init(&can1_ams_slave3_log0_frame); + can1_ams_slave3_log0_frame = canlib::encode::can1::ams_slave3_log0(ams_slave3_log0); + int frame_size = can1_ams_slave3_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave1_log0_t ams_slave1_log0) { + frame = can_frame(); + frame.can_id = 1552; + frame.can_dlc = 8; + can1_ams_slave1_log0_t can1_ams_slave1_log0_frame; + can1_ams_slave1_log0_init(&can1_ams_slave1_log0_frame); + can1_ams_slave1_log0_frame = canlib::encode::can1::ams_slave1_log0(ams_slave1_log0); + int frame_size = can1_ams_slave1_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave1_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_heartbeat_t pdu_heartbeat) { + frame = can_frame(); + frame.can_id = 206; + frame.can_dlc = 1; + can1_pdu_heartbeat_t can1_pdu_heartbeat_frame; + can1_pdu_heartbeat_init(&can1_pdu_heartbeat_frame); + can1_pdu_heartbeat_frame = canlib::encode::can1::pdu_heartbeat(pdu_heartbeat); + int frame_size = can1_pdu_heartbeat_pack(reinterpret_cast(&frame.data), &can1_pdu_heartbeat_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_pneumatik_t ftcu_pneumatik) { + frame = can_frame(); + frame.can_id = 272; + frame.can_dlc = 8; + can1_ftcu_pneumatik_t can1_ftcu_pneumatik_frame; + can1_ftcu_pneumatik_init(&can1_ftcu_pneumatik_frame); + can1_ftcu_pneumatik_frame = canlib::encode::can1::ftcu_pneumatik(ftcu_pneumatik); + int frame_size = can1_ftcu_pneumatik_pack(reinterpret_cast(&frame.data), &can1_ftcu_pneumatik_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::acu_tx_commands_t acu_tx_commands) { + frame = can_frame(); + frame.can_id = 227; + frame.can_dlc = 6; + can1_acu_tx_commands_t can1_acu_tx_commands_frame; + can1_acu_tx_commands_init(&can1_acu_tx_commands_frame); + can1_acu_tx_commands_frame = canlib::encode::can1::acu_tx_commands(acu_tx_commands); + int frame_size = can1_acu_tx_commands_pack(reinterpret_cast(&frame.data), &can1_acu_tx_commands_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::acu_rx_commands_t acu_rx_commands) { + frame = can_frame(); + frame.can_id = 226; + frame.can_dlc = 4; + can1_acu_rx_commands_t can1_acu_rx_commands_frame; + can1_acu_rx_commands_init(&can1_acu_rx_commands_frame); + can1_acu_rx_commands_frame = canlib::encode::can1::acu_rx_commands(acu_rx_commands); + int frame_size = can1_acu_rx_commands_pack(reinterpret_cast(&frame.data), &can1_acu_rx_commands_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::acu_rx_t acu_rx) { + frame = can_frame(); + frame.can_id = 225; + frame.can_dlc = 3; + can1_acu_rx_t can1_acu_rx_frame; + can1_acu_rx_init(&can1_acu_rx_frame); + can1_acu_rx_frame = canlib::encode::can1::acu_rx(acu_rx); + int frame_size = can1_acu_rx_pack(reinterpret_cast(&frame.data), &can1_acu_rx_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log0_t ams_slave0_log0) { + frame = can_frame(); + frame.can_id = 1536; + frame.can_dlc = 8; + can1_ams_slave0_log0_t can1_ams_slave0_log0_frame; + can1_ams_slave0_log0_init(&can1_ams_slave0_log0_frame); + can1_ams_slave0_log0_frame = canlib::encode::can1::ams_slave0_log0(ams_slave0_log0); + int frame_size = can1_ams_slave0_log0_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log0_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log1_t ams_slave0_log1) { + frame = can_frame(); + frame.can_id = 1537; + frame.can_dlc = 8; + can1_ams_slave0_log1_t can1_ams_slave0_log1_frame; + can1_ams_slave0_log1_init(&can1_ams_slave0_log1_frame); + can1_ams_slave0_log1_frame = canlib::encode::can1::ams_slave0_log1(ams_slave0_log1); + int frame_size = can1_ams_slave0_log1_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log3_t ams_slave0_log3) { + frame = can_frame(); + frame.can_id = 1539; + frame.can_dlc = 8; + can1_ams_slave0_log3_t can1_ams_slave0_log3_frame; + can1_ams_slave0_log3_init(&can1_ams_slave0_log3_frame); + can1_ams_slave0_log3_frame = canlib::encode::can1::ams_slave0_log3(ams_slave0_log3); + int frame_size = can1_ams_slave0_log3_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log4_t ams_slave0_log4) { + frame = can_frame(); + frame.can_id = 1540; + frame.can_dlc = 6; + can1_ams_slave0_log4_t can1_ams_slave0_log4_frame; + can1_ams_slave0_log4_init(&can1_ams_slave0_log4_frame); + can1_ams_slave0_log4_frame = canlib::encode::can1::ams_slave0_log4(ams_slave0_log4); + int frame_size = can1_ams_slave0_log4_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log5_t ams_slave0_log5) { + frame = can_frame(); + frame.can_id = 1541; + frame.can_dlc = 8; + can1_ams_slave0_log5_t can1_ams_slave0_log5_frame; + can1_ams_slave0_log5_init(&can1_ams_slave0_log5_frame); + can1_ams_slave0_log5_frame = canlib::encode::can1::ams_slave0_log5(ams_slave0_log5); + int frame_size = can1_ams_slave0_log5_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log5_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_log6_t ams_slave0_log6) { + frame = can_frame(); + frame.can_id = 1542; + frame.can_dlc = 8; + can1_ams_slave0_log6_t can1_ams_slave0_log6_frame; + can1_ams_slave0_log6_init(&can1_ams_slave0_log6_frame); + can1_ams_slave0_log6_frame = canlib::encode::can1::ams_slave0_log6(ams_slave0_log6); + int frame_size = can1_ams_slave0_log6_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_log6_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::acu_tx_t acu_tx) { + frame = can_frame(); + frame.can_id = 224; + frame.can_dlc = 2; + can1_acu_tx_t can1_acu_tx_frame; + can1_acu_tx_init(&can1_acu_tx_frame); + can1_acu_tx_frame = canlib::encode::can1::acu_tx(acu_tx); + int frame_size = can1_acu_tx_pack(reinterpret_cast(&frame.data), &can1_acu_tx_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave5_status_t ams_slave5_status) { + frame = can_frame(); + frame.can_id = 133; + frame.can_dlc = 8; + can1_ams_slave5_status_t can1_ams_slave5_status_frame; + can1_ams_slave5_status_init(&can1_ams_slave5_status_frame); + can1_ams_slave5_status_frame = canlib::encode::can1::ams_slave5_status(ams_slave5_status); + int frame_size = can1_ams_slave5_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave5_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave4_status_t ams_slave4_status) { + frame = can_frame(); + frame.can_id = 132; + frame.can_dlc = 8; + can1_ams_slave4_status_t can1_ams_slave4_status_frame; + can1_ams_slave4_status_init(&can1_ams_slave4_status_frame); + can1_ams_slave4_status_frame = canlib::encode::can1::ams_slave4_status(ams_slave4_status); + int frame_size = can1_ams_slave4_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave4_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave3_status_t ams_slave3_status) { + frame = can_frame(); + frame.can_id = 131; + frame.can_dlc = 8; + can1_ams_slave3_status_t can1_ams_slave3_status_frame; + can1_ams_slave3_status_init(&can1_ams_slave3_status_frame); + can1_ams_slave3_status_frame = canlib::encode::can1::ams_slave3_status(ams_slave3_status); + int frame_size = can1_ams_slave3_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave3_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave2_status_t ams_slave2_status) { + frame = can_frame(); + frame.can_id = 130; + frame.can_dlc = 8; + can1_ams_slave2_status_t can1_ams_slave2_status_frame; + can1_ams_slave2_status_init(&can1_ams_slave2_status_frame); + can1_ams_slave2_status_frame = canlib::encode::can1::ams_slave2_status(ams_slave2_status); + int frame_size = can1_ams_slave2_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave2_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_error_t ams_error) { + frame = can_frame(); + frame.can_id = 12; + frame.can_dlc = 2; + can1_ams_error_t can1_ams_error_frame; + can1_ams_error_init(&can1_ams_error_frame); + can1_ams_error_frame = canlib::encode::can1::ams_error(ams_error); + int frame_size = can1_ams_error_pack(reinterpret_cast(&frame.data), &can1_ams_error_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_cooling_t ftcu_cooling) { + frame = can_frame(); + frame.can_id = 263; + frame.can_dlc = 8; + can1_ftcu_cooling_t can1_ftcu_cooling_frame; + can1_ftcu_cooling_init(&can1_ftcu_cooling_frame); + can1_ftcu_cooling_frame = canlib::encode::can1::ftcu_cooling(ftcu_cooling); + int frame_size = can1_ftcu_cooling_pack(reinterpret_cast(&frame.data), &can1_ftcu_cooling_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_brake_t_t ftcu_brake_t) { + frame = can_frame(); + frame.can_id = 261; + frame.can_dlc = 8; + can1_ftcu_brake_t_t can1_ftcu_brake_t_frame; + can1_ftcu_brake_t_init(&can1_ftcu_brake_t_frame); + can1_ftcu_brake_t_frame = canlib::encode::can1::ftcu_brake_t(ftcu_brake_t); + int frame_size = can1_ftcu_brake_t_pack(reinterpret_cast(&frame.data), &can1_ftcu_brake_t_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_wheelspeed_t ftcu_wheelspeed) { + frame = can_frame(); + frame.can_id = 260; + frame.can_dlc = 8; + can1_ftcu_wheelspeed_t can1_ftcu_wheelspeed_frame; + can1_ftcu_wheelspeed_init(&can1_ftcu_wheelspeed_frame); + can1_ftcu_wheelspeed_frame = canlib::encode::can1::ftcu_wheelspeed(ftcu_wheelspeed); + int frame_size = can1_ftcu_wheelspeed_pack(reinterpret_cast(&frame.data), &can1_ftcu_wheelspeed_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_timings_t ftcu_timings) { + frame = can_frame(); + frame.can_id = 258; + frame.can_dlc = 8; + can1_ftcu_timings_t can1_ftcu_timings_frame; + can1_ftcu_timings_init(&can1_ftcu_timings_frame); + can1_ftcu_timings_frame = canlib::encode::can1::ftcu_timings(ftcu_timings); + int frame_size = can1_ftcu_timings_pack(reinterpret_cast(&frame.data), &can1_ftcu_timings_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ftcu_driver_t ftcu_driver) { + frame = can_frame(); + frame.can_id = 273; + frame.can_dlc = 8; + can1_ftcu_driver_t can1_ftcu_driver_frame; + can1_ftcu_driver_init(&can1_ftcu_driver_frame); + can1_ftcu_driver_frame = canlib::encode::can1::ftcu_driver(ftcu_driver); + int frame_size = can1_ftcu_driver_pack(reinterpret_cast(&frame.data), &can1_ftcu_driver_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::tts_rr_t tts_rr) { + frame = can_frame(); + frame.can_id = 1796; + frame.can_dlc = 8; + can1_tts_rr_t can1_tts_rr_frame; + can1_tts_rr_init(&can1_tts_rr_frame); + can1_tts_rr_frame = canlib::encode::can1::tts_rr(tts_rr); + int frame_size = can1_tts_rr_pack(reinterpret_cast(&frame.data), &can1_tts_rr_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::tts_rl_t tts_rl) { + frame = can_frame(); + frame.can_id = 1795; + frame.can_dlc = 8; + can1_tts_rl_t can1_tts_rl_frame; + can1_tts_rl_init(&can1_tts_rl_frame); + can1_tts_rl_frame = canlib::encode::can1::tts_rl(tts_rl); + int frame_size = can1_tts_rl_pack(reinterpret_cast(&frame.data), &can1_tts_rl_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::tts_fr_t tts_fr) { + frame = can_frame(); + frame.can_id = 1794; + frame.can_dlc = 8; + can1_tts_fr_t can1_tts_fr_frame; + can1_tts_fr_init(&can1_tts_fr_frame); + can1_tts_fr_frame = canlib::encode::can1::tts_fr(tts_fr); + int frame_size = can1_tts_fr_pack(reinterpret_cast(&frame.data), &can1_tts_fr_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::tts_fl_t tts_fl) { + frame = can_frame(); + frame.can_id = 1793; + frame.can_dlc = 8; + can1_tts_fl_t can1_tts_fl_frame; + can1_tts_fl_init(&can1_tts_fl_frame); + can1_tts_fl_frame = canlib::encode::can1::tts_fl(tts_fl); + int frame_size = can1_tts_fl_pack(reinterpret_cast(&frame.data), &can1_tts_fl_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::stw_param_set_t stw_param_set) { + frame = can_frame(); + frame.can_id = 1026; + frame.can_dlc = 6; + can1_stw_param_set_t can1_stw_param_set_frame; + can1_stw_param_set_init(&can1_stw_param_set_frame); + can1_stw_param_set_frame = canlib::encode::can1::stw_param_set(stw_param_set); + int frame_size = can1_stw_param_set_pack(reinterpret_cast(&frame.data), &can1_stw_param_set_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave0_status_t ams_slave0_status) { + frame = can_frame(); + frame.can_id = 128; + frame.can_dlc = 8; + can1_ams_slave0_status_t can1_ams_slave0_status_frame; + can1_ams_slave0_status_init(&can1_ams_slave0_status_frame); + can1_ams_slave0_status_frame = canlib::encode::can1::ams_slave0_status(ams_slave0_status); + int frame_size = can1_ams_slave0_status_pack(reinterpret_cast(&frame.data), &can1_ams_slave0_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ssu_message_t ssu_message) { + frame = can_frame(); + frame.can_id = 1280; + frame.can_dlc = 4; + can1_ssu_message_t can1_ssu_message_frame; + can1_ssu_message_init(&can1_ssu_message_frame); + can1_ssu_message_frame = canlib::encode::can1::ssu_message(ssu_message); + int frame_size = can1_ssu_message_pack(reinterpret_cast(&frame.data), &can1_ssu_message_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_status_t ams_status) { + frame = can_frame(); + frame.can_id = 10; + frame.can_dlc = 8; + can1_ams_status_t can1_ams_status_frame; + can1_ams_status_init(&can1_ams_status_frame); + can1_ams_status_frame = canlib::encode::can1::ams_status(ams_status); + int frame_size = can1_ams_status_pack(reinterpret_cast(&frame.data), &can1_ams_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_slave_panic_t ams_slave_panic) { + frame = can_frame(); + frame.can_id = 9; + frame.can_dlc = 8; + can1_ams_slave_panic_t can1_ams_slave_panic_frame; + can1_ams_slave_panic_init(&can1_ams_slave_panic_frame); + can1_ams_slave_panic_frame = canlib::encode::can1::ams_slave_panic(ams_slave_panic); + int frame_size = can1_ams_slave_panic_pack(reinterpret_cast(&frame.data), &can1_ams_slave_panic_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::ams_in_t ams_in) { + frame = can_frame(); + frame.can_id = 11; + frame.can_dlc = 1; + can1_ams_in_t can1_ams_in_frame; + can1_ams_in_init(&can1_ams_in_frame); + can1_ams_in_frame = canlib::encode::can1::ams_in(ams_in); + int frame_size = can1_ams_in_pack(reinterpret_cast(&frame.data), &can1_ams_in_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::shunt_current_t shunt_current) { + frame = can_frame(); + frame.can_id = 1313; + frame.can_dlc = 6; + can1_shunt_current_t can1_shunt_current_frame; + can1_shunt_current_init(&can1_shunt_current_frame); + can1_shunt_current_frame = canlib::encode::can1::shunt_current(shunt_current); + int frame_size = can1_shunt_current_pack(reinterpret_cast(&frame.data), &can1_shunt_current_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::shunt_voltage1_t shunt_voltage1) { + frame = can_frame(); + frame.can_id = 1314; + frame.can_dlc = 6; + can1_shunt_voltage1_t can1_shunt_voltage1_frame; + can1_shunt_voltage1_init(&can1_shunt_voltage1_frame); + can1_shunt_voltage1_frame = canlib::encode::can1::shunt_voltage1(shunt_voltage1); + int frame_size = can1_shunt_voltage1_pack(reinterpret_cast(&frame.data), &can1_shunt_voltage1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::shunt_voltage2_t shunt_voltage2) { + frame = can_frame(); + frame.can_id = 1315; + frame.can_dlc = 6; + can1_shunt_voltage2_t can1_shunt_voltage2_frame; + can1_shunt_voltage2_init(&can1_shunt_voltage2_frame); + can1_shunt_voltage2_frame = canlib::encode::can1::shunt_voltage2(shunt_voltage2); + int frame_size = can1_shunt_voltage2_pack(reinterpret_cast(&frame.data), &can1_shunt_voltage2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::shunt_voltage3_t shunt_voltage3) { + frame = can_frame(); + frame.can_id = 1316; + frame.can_dlc = 6; + can1_shunt_voltage3_t can1_shunt_voltage3_frame; + can1_shunt_voltage3_init(&can1_shunt_voltage3_frame); + can1_shunt_voltage3_frame = canlib::encode::can1::shunt_voltage3(shunt_voltage3); + int frame_size = can1_shunt_voltage3_pack(reinterpret_cast(&frame.data), &can1_shunt_voltage3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::shunt_temperature_t shunt_temperature) { + frame = can_frame(); + frame.can_id = 1317; + frame.can_dlc = 6; + can1_shunt_temperature_t can1_shunt_temperature_frame; + can1_shunt_temperature_init(&can1_shunt_temperature_frame); + can1_shunt_temperature_frame = canlib::encode::can1::shunt_temperature(shunt_temperature); + int frame_size = can1_shunt_temperature_pack(reinterpret_cast(&frame.data), &can1_shunt_temperature_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_command_t pdu_command) { + frame = can_frame(); + frame.can_id = 200; + frame.can_dlc = 7; + can1_pdu_command_t can1_pdu_command_frame; + can1_pdu_command_init(&can1_pdu_command_frame); + can1_pdu_command_frame = canlib::encode::can1::pdu_command(pdu_command); + int frame_size = can1_pdu_command_pack(reinterpret_cast(&frame.data), &can1_pdu_command_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_response_t pdu_response) { + frame = can_frame(); + frame.can_id = 201; + frame.can_dlc = 7; + can1_pdu_response_t can1_pdu_response_frame; + can1_pdu_response_init(&can1_pdu_response_frame); + can1_pdu_response_frame = canlib::encode::can1::pdu_response(pdu_response); + int frame_size = can1_pdu_response_pack(reinterpret_cast(&frame.data), &can1_pdu_response_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::as_mission_fb_t as_mission_fb) { + frame = can_frame(); + frame.can_id = 1040; + frame.can_dlc = 1; + can1_as_mission_fb_t can1_as_mission_fb_frame; + can1_as_mission_fb_init(&can1_as_mission_fb_frame); + can1_as_mission_fb_frame = canlib::encode::can1::as_mission_fb(as_mission_fb); + int frame_size = can1_as_mission_fb_pack(reinterpret_cast(&frame.data), &can1_as_mission_fb_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::stw_mission_selected_t stw_mission_selected) { + frame = can_frame(); + frame.can_id = 1024; + frame.can_dlc = 1; + can1_stw_mission_selected_t can1_stw_mission_selected_frame; + can1_stw_mission_selected_init(&can1_stw_mission_selected_frame); + can1_stw_mission_selected_frame = canlib::encode::can1::stw_mission_selected(stw_mission_selected); + int frame_size = can1_stw_mission_selected_pack(reinterpret_cast(&frame.data), &can1_stw_mission_selected_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::epsc_out_t epsc_out) { + frame = can_frame(); + frame.can_id = 293; + frame.can_dlc = 8; + can1_epsc_out_t can1_epsc_out_frame; + can1_epsc_out_init(&can1_epsc_out_frame); + can1_epsc_out_frame = canlib::encode::can1::epsc_out(epsc_out); + int frame_size = can1_epsc_out_pack(reinterpret_cast(&frame.data), &can1_epsc_out_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::epsc_steering_in_t epsc_steering_in) { + frame = can_frame(); + frame.can_id = 291; + frame.can_dlc = 2; + can1_epsc_steering_in_t can1_epsc_steering_in_frame; + can1_epsc_steering_in_init(&can1_epsc_steering_in_frame); + can1_epsc_steering_in_frame = canlib::encode::can1::epsc_steering_in(epsc_steering_in); + int frame_size = can1_epsc_steering_in_pack(reinterpret_cast(&frame.data), &can1_epsc_steering_in_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::stw_buttons_t stw_buttons) { + frame = can_frame(); + frame.can_id = 1025; + frame.can_dlc = 1; + can1_stw_buttons_t can1_stw_buttons_frame; + can1_stw_buttons_init(&can1_stw_buttons_frame); + can1_stw_buttons_frame = canlib::encode::can1::stw_buttons(stw_buttons); + int frame_size = can1_stw_buttons_pack(reinterpret_cast(&frame.data), &can1_stw_buttons_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::stw_status_t stw_status) { + frame = can_frame(); + frame.can_id = 1042; + frame.can_dlc = 7; + can1_stw_status_t can1_stw_status_frame; + can1_stw_status_init(&can1_stw_status_frame); + can1_stw_status_frame = canlib::encode::can1::stw_status(stw_status); + int frame_size = can1_stw_status_pack(reinterpret_cast(&frame.data), &can1_stw_status_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_current_1_t pdu_current_1) { + frame = can_frame(); + frame.can_id = 202; + frame.can_dlc = 8; + can1_pdu_current_1_t can1_pdu_current_1_frame; + can1_pdu_current_1_init(&can1_pdu_current_1_frame); + can1_pdu_current_1_frame = canlib::encode::can1::pdu_current_1(pdu_current_1); + int frame_size = can1_pdu_current_1_pack(reinterpret_cast(&frame.data), &can1_pdu_current_1_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_current_2_t pdu_current_2) { + frame = can_frame(); + frame.can_id = 203; + frame.can_dlc = 8; + can1_pdu_current_2_t can1_pdu_current_2_frame; + can1_pdu_current_2_init(&can1_pdu_current_2_frame); + can1_pdu_current_2_frame = canlib::encode::can1::pdu_current_2(pdu_current_2); + int frame_size = can1_pdu_current_2_pack(reinterpret_cast(&frame.data), &can1_pdu_current_2_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_current_3_t pdu_current_3) { + frame = can_frame(); + frame.can_id = 204; + frame.can_dlc = 8; + can1_pdu_current_3_t can1_pdu_current_3_frame; + can1_pdu_current_3_init(&can1_pdu_current_3_frame); + can1_pdu_current_3_frame = canlib::encode::can1::pdu_current_3(pdu_current_3); + int frame_size = can1_pdu_current_3_pack(reinterpret_cast(&frame.data), &can1_pdu_current_3_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::pdu_current_4_t pdu_current_4) { + frame = can_frame(); + frame.can_id = 205; + frame.can_dlc = 8; + can1_pdu_current_4_t can1_pdu_current_4_frame; + can1_pdu_current_4_init(&can1_pdu_current_4_frame); + can1_pdu_current_4_frame = canlib::encode::can1::pdu_current_4(pdu_current_4); + int frame_size = can1_pdu_current_4_pack(reinterpret_cast(&frame.data), &can1_pdu_current_4_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + +extern "C" void canlib::Transceiver::transmit(canlib::frame::decoded::can1::epsc_config_in_t epsc_config_in) { + frame = can_frame(); + frame.can_id = 292; + frame.can_dlc = 6; + can1_epsc_config_in_t can1_epsc_config_in_frame; + can1_epsc_config_in_init(&can1_epsc_config_in_frame); + can1_epsc_config_in_frame = canlib::encode::can1::epsc_config_in(epsc_config_in); + int frame_size = can1_epsc_config_in_pack(reinterpret_cast(&frame.data), &can1_epsc_config_in_frame, sizeof(frame.data)); + + if (frame_size < 0) { + perror("Pack"); + printf("CAN Frame size unacceptable"); + return; + } + + if (::write(socket_instance, &frame, sizeof(struct can_frame)) < 0) { + perror("Write to device: "); + printf("Not able to write to socket can"); + return; + } +} + + diff --git a/ros2_ws/src/ft_can_viewer/CMakeLists.txt b/ros2_ws/src/ft_can_viewer/CMakeLists.txt new file mode 100644 index 0000000..8e570bd --- /dev/null +++ b/ros2_ws/src/ft_can_viewer/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 3.8) +project(ft_can_viewer) + +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra) +endif() + +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +find_package(ament_cmake REQUIRED) +find_package(rclcpp REQUIRED) +find_package(std_msgs REQUIRED) +find_package(ft_can_transceiver_lib REQUIRED) + +# Executable +add_executable(can_viewer_node src/can_viewer_node.cpp) +target_compile_features(can_viewer_node PUBLIC cxx_std_17) + +# ROS‑2‑Includes & -Deps +ament_target_dependencies( + can_viewer_node + rclcpp + std_msgs + ft_can_transceiver_lib +) + +# Ganz wichtiger Link‑Step: +target_link_libraries( + can_viewer_node + ft_can_transceiver_lib +) + +install( + TARGETS can_viewer_node + DESTINATION lib/${PROJECT_NAME} +) + +ament_package() diff --git a/ros2_ws/src/ft_can_viewer/package.xml b/ros2_ws/src/ft_can_viewer/package.xml new file mode 100644 index 0000000..70fd833 --- /dev/null +++ b/ros2_ws/src/ft_can_viewer/package.xml @@ -0,0 +1,18 @@ + + + + ft_can_viewer + 0.1.0 + CAN - ROS2 Publisher für Foxglove mit Transceiver-Lib + Elias + MIT + + ament_cmake + rclcpp + std_msgs + ft_can_transceiver_lib + + + ament_cmake + + diff --git a/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp b/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp new file mode 100644 index 0000000..842e2f9 --- /dev/null +++ b/ros2_ws/src/ft_can_viewer/src/can_viewer_node.cpp @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include +#include + +class CanViewerNode : public rclcpp::Node { +public: + CanViewerNode() : Node("can_viewer_node"), transceiver_("vcan0", {}) { + allow_torque_pub_ = this->create_publisher("can/telemetrie/allow_torque", 10); + brake_ok_pub_ = this->create_publisher("can/telemetrie/brake_ok", 10); + torque_limit_pub_ = this->create_publisher("can/telemetrie/torque_limit", 10); + + canlib::callback::can1::telemetrie = [this](can1_telemetrie_t /*frame_raw*/, canlib::frame::decoded::can1::telemetrie_t frame_decoded) { + std_msgs::msg::Bool msg_allow, msg_brake; + std_msgs::msg::Float64 msg_torque; + + msg_allow.data = frame_decoded.allow_torque; + msg_brake.data = frame_decoded.brake_ok; + msg_torque.data = frame_decoded.torque_limit; + + allow_torque_pub_->publish(msg_allow); + brake_ok_pub_->publish(msg_brake); + torque_limit_pub_->publish(msg_torque); + + RCLCPP_INFO(this->get_logger(), "Telemetrie: allow_torque=%d brake_ok=%d torque_limit=%f", msg_allow.data, msg_brake.data, msg_torque.data); + }; + + // Empfangsthread starten + receiver_thread_ = std::thread([this]() { + while (rclcpp::ok()) { + transceiver_.receive(); + } + }); + receiver_thread_.detach(); + } + +private: + canlib::Transceiver transceiver_; + std::thread receiver_thread_; + // Die Publisher + rclcpp::Publisher::SharedPtr allow_torque_pub_; + rclcpp::Publisher::SharedPtr brake_ok_pub_; + rclcpp::Publisher::SharedPtr torque_limit_pub_; +}; + +int main(int argc, char * argv[]) { + rclcpp::init(argc, argv); + auto node = std::make_shared(); + rclcpp::spin(node); + rclcpp::shutdown(); + return 0; +} \ No newline at end of file