From b8850421ba13a408b413d23d4eb3e1fb7250196a Mon Sep 17 00:00:00 2001 From: Arthur Guyader Date: Thu, 7 Nov 2019 14:16:16 +0100 Subject: [PATCH] controller: Prepare project ot use the Controller Change-Id: I39c39da66f9a0716bd75dc82824941508c236bf2 Signed-off-by: Romain Forlot --- conf.d/CMakeLists.txt | 22 + conf.d/cmake/00-default-osconfig.cmake | 1 + conf.d/cmake/00-suse-config.cmake | 2 + conf.d/cmake/01-debian-config.cmake | 1 + conf.d/cmake/01-ubuntu-config.cmake | 1 + conf.d/cmake/config.cmake | 10 +- conf.d/project/CMakeLists.txt | 22 + conf.d/project/etc/CMakeLists.txt | 31 ++ conf.d/project/etc/control-low-can.json | 30 ++ low-can-binding/CMakeLists.txt | 4 +- plugins/CMakeLists.txt | 69 +++ plugins/agl-signals.cpp | 722 ++++++++++++++++++++++++++++++++ 12 files changed, 912 insertions(+), 3 deletions(-) create mode 100644 conf.d/CMakeLists.txt create mode 100644 conf.d/cmake/00-default-osconfig.cmake create mode 100644 conf.d/cmake/00-suse-config.cmake create mode 100644 conf.d/cmake/01-debian-config.cmake create mode 100644 conf.d/cmake/01-ubuntu-config.cmake create mode 100644 conf.d/project/CMakeLists.txt create mode 100644 conf.d/project/etc/CMakeLists.txt create mode 100644 conf.d/project/etc/control-low-can.json create mode 100755 plugins/CMakeLists.txt create mode 100644 plugins/agl-signals.cpp diff --git a/conf.d/CMakeLists.txt b/conf.d/CMakeLists.txt new file mode 100644 index 00000000..28a06096 --- /dev/null +++ b/conf.d/CMakeLists.txt @@ -0,0 +1,22 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Fulup Ar Foll +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + + +# Include any directory not starting with _ +# ----------------------------------------------------- +PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN}) diff --git a/conf.d/cmake/00-default-osconfig.cmake b/conf.d/cmake/00-default-osconfig.cmake new file mode 100644 index 00000000..a2b9325c --- /dev/null +++ b/conf.d/cmake/00-default-osconfig.cmake @@ -0,0 +1 @@ +list(APPEND PKG_REQUIRED_LIST lua>=5.3) diff --git a/conf.d/cmake/00-suse-config.cmake b/conf.d/cmake/00-suse-config.cmake new file mode 100644 index 00000000..8c8303ba --- /dev/null +++ b/conf.d/cmake/00-suse-config.cmake @@ -0,0 +1,2 @@ +add_definitions(-DSUSE_LUA_INCDIR) +list(APPEND PKG_REQUIRED_LIST lua>=5.3) diff --git a/conf.d/cmake/01-debian-config.cmake b/conf.d/cmake/01-debian-config.cmake new file mode 100644 index 00000000..0e5a695e --- /dev/null +++ b/conf.d/cmake/01-debian-config.cmake @@ -0,0 +1 @@ +list(APPEND PKG_REQUIRED_LIST lua53-c++>=5.3) diff --git a/conf.d/cmake/01-ubuntu-config.cmake b/conf.d/cmake/01-ubuntu-config.cmake new file mode 100644 index 00000000..0e5a695e --- /dev/null +++ b/conf.d/cmake/01-ubuntu-config.cmake @@ -0,0 +1 @@ +list(APPEND PKG_REQUIRED_LIST lua53-c++>=5.3) diff --git a/conf.d/cmake/config.cmake b/conf.d/cmake/config.cmake index 0f678433..d7d5f43e 100644 --- a/conf.d/cmake/config.cmake +++ b/conf.d/cmake/config.cmake @@ -38,7 +38,7 @@ set(PROJECT_CMAKE_CONF_DIR "conf.d") # Compilation Mode (DEBUG, RELEASE) # ---------------------------------- -set(BUILD_TYPE "RELEASE" CACHE STRING "Default Build variant chosen. (Overwritten by cli if given)") +set(BUILD_TYPE "DEBUG" CACHE STRING "Default Build variant chosen. (Overwritten by cli if given)") # Activate J1939 # Need module in kernel @@ -100,6 +100,7 @@ set (PKG_REQUIRED_LIST libsystemd>=222 afb-daemon afb-helpers + appcontroller ) # Prefix path where will be installed the files @@ -216,6 +217,13 @@ set(AFB_REMPORT "1234" CACHE STRING "Default binder listening port") set(CLOSING_MESSAGE "Typical binding launch: afb-daemon --port=${AFB_REMPORT} --workdir=${CMAKE_BINARY_DIR}/package --ldpaths=lib --roothttp=htdocs --token=\"${AFB_TOKEN}\" --tracereq=common --verbose") set(PACKAGE_MESSAGE "Install widget file using in the target : afm-util install ${PROJECT_NAME}.wgt") + +# Add Controller config +add_definitions(-DCONTROL_PLUGIN_PATH="${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/lib/plugins:${CMAKE_BINARY_DIR}/package/lib/plugins:${CMAKE_BINARY_DIR}/package/var:${CMAKE_BINARY_DIR}/package-test") +add_definitions(-DCONTROL_CONFIG_PATH="${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}/etc:${CMAKE_BINARY_DIR}/package/etc:${CMAKE_BINARY_DIR}/package-test/") + + + # Optional schema validator about now only XML, LUA and JSON # are supported #------------------------------------------------------------ diff --git a/conf.d/project/CMakeLists.txt b/conf.d/project/CMakeLists.txt new file mode 100644 index 00000000..28a06096 --- /dev/null +++ b/conf.d/project/CMakeLists.txt @@ -0,0 +1,22 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Fulup Ar Foll +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + + +# Include any directory not starting with _ +# ----------------------------------------------------- +PROJECT_SUBDIRS_ADD(${PROJECT_SRC_DIR_PATTERN}) diff --git a/conf.d/project/etc/CMakeLists.txt b/conf.d/project/etc/CMakeLists.txt new file mode 100644 index 00000000..2b1d84ee --- /dev/null +++ b/conf.d/project/etc/CMakeLists.txt @@ -0,0 +1,31 @@ +########################################################################### +# Copyright 2017 IoT.bzh +# +# author: Fulup Ar Foll +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +################################################## +# Control Policy Config file +################################################## +PROJECT_TARGET_ADD(low-can-config) + + file(GLOB CONF_FILES "*.json") + + add_input_files("${CONF_FILES}") + + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + LABELS "BINDING-CONFIG" + OUTPUT_NAME ${TARGET_NAME} + ) diff --git a/conf.d/project/etc/control-low-can.json b/conf.d/project/etc/control-low-can.json new file mode 100644 index 00000000..3dbdf18b --- /dev/null +++ b/conf.d/project/etc/control-low-can.json @@ -0,0 +1,30 @@ +{ + "$schema": "", + "metadata": { + "uid": "Low Can", + "version": "1.0", + "api": "low-can", + "info": "Low can Configuration" + }, + "config": { + "active_message_set": 0, + "diagnostic_bus": "hs" + }, + "plugins": [ + { + "uid": "agl-callbacks", + "info": "AGL signals", + "libs": "agl-signals.ctlso" + }, + { + "uid": "j1939-callbacks", + "info": "J1939 signals", + "libs": "j1939-signals.ctlso" + }, + { + "uid": "nmea2000-callbacks", + "info": "NMEA2000 Signals", + "libs": "nmea2000-signals.ctlso" + } + ] +} diff --git a/low-can-binding/CMakeLists.txt b/low-can-binding/CMakeLists.txt index ada0e808..9ba223b4 100644 --- a/low-can-binding/CMakeLists.txt +++ b/low-can-binding/CMakeLists.txt @@ -23,8 +23,8 @@ PROJECT_TARGET_ADD(low-can) # Define project Targets set (SOURCES - #binding/${TARGET_NAME}-hat.cpp binding/${TARGET_NAME}-cb.cpp + binding/${TARGET_NAME}-hat.cpp binding/${TARGET_NAME}-subscription.cpp binding/application.cpp can/can-bus.cpp @@ -84,6 +84,6 @@ PROJECT_TARGET_ADD(low-can) uds-c isotp-c bitfield-c - afb-helpers + appcontroller ${link_libraries}) diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt new file mode 100755 index 00000000..8b464072 --- /dev/null +++ b/plugins/CMakeLists.txt @@ -0,0 +1,69 @@ +########################################################################### +# Copyright 2015, 2016, 2017 IoT.bzh +# +# author: Romain Forlot +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +########################################################################### + +#PROJECT_TARGET_ADD(agl-signals) + +# # Define targets +# ADD_LIBRARY(${TARGET_NAME} MODULE ${TARGET_NAME}.cpp) + +# # Alsa Plugin properties +# SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES +# LABELS "PLUGIN" +# PREFIX "" +# SUFFIX ".ctlso" +# OUTPUT_NAME ${TARGET_NAME} +# ) +# +# target_include_directories(${TARGET_NAME} +# PRIVATE "../low-can-binding") + +# # Library dependencies (include updates automatically) +# TARGET_LINK_LIBRARIES(${TARGET_NAME} +# ini-config +# openxc-message-format +# uds-c +# isotp-c +# bitfield-c +# afb-helpers +# ${link_libraries}) + +PROJECT_TARGET_ADD(j1939-signals) + + # Define targets + ADD_LIBRARY(${TARGET_NAME} MODULE ${TARGET_NAME}.cpp) + + # Alsa Plugin properties + SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES + LABELS "PLUGIN" + PREFIX "" + SUFFIX ".ctlso" + OUTPUT_NAME ${TARGET_NAME} + ) + + target_include_directories(${TARGET_NAME} + PRIVATE "../low-can-binding") + + # Library dependencies (include updates automatically) + TARGET_LINK_LIBRARIES(${TARGET_NAME} + ini-config + openxc-message-format + uds-c + isotp-c + bitfield-c + afb-helpers + ${link_libraries}) diff --git a/plugins/agl-signals.cpp b/plugins/agl-signals.cpp new file mode 100644 index 00000000..324a9d0b --- /dev/null +++ b/plugins/agl-signals.cpp @@ -0,0 +1,722 @@ +#include "binding/application.hpp" +#include "can/can-decoder.hpp" +#include "can/can-encoder.hpp" + + +extern "C" +{ + +CTLP_LUA_REGISTER("TO-EDIT"); + + +std::shared_ptr message_set = + std::make_shared(message_set_t{0,"AGL Virtual Car", + { // beginning message_definition_ vector + {std::make_shared(message_definition_t{"ls", 0x30,"", 0, false, message_format_t::EXTENDED, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "hvac.fan.speed",// generic_name + 32,// bit_position + 8,// bit_size + 23.5294f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "hvac.temperature.left",// generic_name + 0,// bit_position + 8,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + true,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "hvac.temperature.right",// generic_name + 8,// bit_position + 8,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + true,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "hvac.temperature.average",// generic_name + 16,// bit_position + 8,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + true,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs", 0x3D9,"", 0, true, message_format_t::STANDARD, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "engine.speed",// generic_name + 16,// bit_position + 16,// bit_size + 0.250000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "fuel.level.low",// generic_name + 55,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "fuel.level",// generic_name + 8,// bit_position + 8,// bit_size + 0.392157f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs", 0x3E9,"", 0, false, message_format_t::STANDARD, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "vehicle.average.speed",// generic_name + 0,// bit_position + 15,// bit_size + 0.0156250f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs", 0x4D1,"", 0, false, message_format_t::STANDARD, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "engine.oil.temp",// generic_name + 16,// bit_position + 8,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + nullptr,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "engine.oil.temp.high",// generic_name + 7,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs", 0x620,"", 0, false, message_format_t::STANDARD, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "doors.boot.open",// generic_name + 47,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "doors.front_left.open",// generic_name + 43,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "doors.front_right.open",// generic_name + 44,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "doors.rear_left.open",// generic_name + 46,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "doors.rear_right.open",// generic_name + 45,// bit_position + 4,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs", 0x799,"", 0, false, message_format_t::STANDARD, frequency_clock_t(5.00000f), true, + { // beginning signals vector + {std::make_shared (signal_t{ + "windows.front_left.open",// generic_name + 43,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "windows.front_right.open",// generic_name + 44,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "windows.rear_left.open",// generic_name + 46,// bit_position + 1,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })}, + {std::make_shared (signal_t{ + "windows.rear_right.open",// generic_name + 45,// bit_position + 4,// bit_size + 1.00000f,// factor + 0.00000,// offset + 0,// min_value + 0,// max_value + frequency_clock_t(0.00000f),// frequency + true,// send_same + false,// force_send_changed + { + },// states + false,// writable + decoder_t::decode_boolean,// decoder + nullptr,// encoder + false,// received + std::make_pair(false, 0),// multiplex + 0,// is_big_endian + 0,// is_signed + ""// unit + })} + } // end signals vector + })} // end message_definition entry + + }, // end message_definition vector + { // beginning diagnostic_messages_ vector + {std::make_shared(diagnostic_message_t{ + 4, + "engine.load", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 5, + "engine.coolant.temperature", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 10, + "fuel.pressure", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 11, + "intake.manifold.pressure", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 12, + "engine.speed", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 13, + "vehicle.speed", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 15, + "intake.air.temperature", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 16, + "mass.airflow", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 17, + "throttle.position", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 31, + "running.time", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 45, + "EGR.error", + 0, + 0, + UNIT::INVALID, + 0.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 47, + "fuel.level", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 51, + "barometric.pressure", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 70, + "ambient.air.temperature", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 76, + "commanded.throttle.position", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 82, + "ethanol.fuel.percentage", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 90, + "accelerator.pedal.position", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 91, + "hybrid.battery-pack.remaining.life", + 0, + 0, + UNIT::INVALID, + 5.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 92, + "engine.oil.temperature", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 94, + "engine.fuel.rate", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} +, {std::make_shared(diagnostic_message_t{ + 99, + "engine.torque", + 0, + 0, + UNIT::INVALID, + 1.00000f, + decoder_t::decode_obd2_response, + nullptr, + true, + false + })} + } // end diagnostic_messages_ vector + }); // end message_set entry + + +CTLP_ONLOAD(plugin, composerHandle) +{ + application_t *application_ = (application_t*) composerHandle; + application_->add_message_set(message_set); + return 0; +} +} -- 2.16.6