controller: Prepare project ot use the Controller
authorArthur Guyader <arthur.guyader@iot.bzh>
Thu, 7 Nov 2019 13:16:16 +0000 (14:16 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 7 Nov 2019 13:16:16 +0000 (14:16 +0100)
Change-Id: I39c39da66f9a0716bd75dc82824941508c236bf2
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
12 files changed:
conf.d/CMakeLists.txt [new file with mode: 0644]
conf.d/cmake/00-default-osconfig.cmake [new file with mode: 0644]
conf.d/cmake/00-suse-config.cmake [new file with mode: 0644]
conf.d/cmake/01-debian-config.cmake [new file with mode: 0644]
conf.d/cmake/01-ubuntu-config.cmake [new file with mode: 0644]
conf.d/cmake/config.cmake
conf.d/project/CMakeLists.txt [new file with mode: 0644]
conf.d/project/etc/CMakeLists.txt [new file with mode: 0644]
conf.d/project/etc/control-low-can.json [new file with mode: 0644]
low-can-binding/CMakeLists.txt
plugins/CMakeLists.txt [new file with mode: 0755]
plugins/agl-signals.cpp [new file with mode: 0644]

diff --git a/conf.d/CMakeLists.txt b/conf.d/CMakeLists.txt
new file mode 100644 (file)
index 0000000..28a0609
--- /dev/null
@@ -0,0 +1,22 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: Fulup Ar Foll <fulup@iot.bzh>
+#
+# 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 (file)
index 0000000..a2b9325
--- /dev/null
@@ -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 (file)
index 0000000..8c8303b
--- /dev/null
@@ -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 (file)
index 0000000..0e5a695
--- /dev/null
@@ -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 (file)
index 0000000..0e5a695
--- /dev/null
@@ -0,0 +1 @@
+list(APPEND PKG_REQUIRED_LIST lua53-c++>=5.3)
index 0f67843..d7d5f43 100644 (file)
@@ -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 (file)
index 0000000..28a0609
--- /dev/null
@@ -0,0 +1,22 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: Fulup Ar Foll <fulup@iot.bzh>
+#
+# 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 (file)
index 0000000..2b1d84e
--- /dev/null
@@ -0,0 +1,31 @@
+###########################################################################
+# Copyright 2017 IoT.bzh
+#
+# author: Fulup Ar Foll <fulup@iot.bzh>
+#
+# 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 (file)
index 0000000..3dbdf18
--- /dev/null
@@ -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"
+               }
+       ]
+}
index ada0e80..9ba223b 100644 (file)
@@ -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 (executable)
index 0000000..8b46407
--- /dev/null
@@ -0,0 +1,69 @@
+###########################################################################
+# Copyright 2015, 2016, 2017 IoT.bzh
+#
+# author: Romain Forlot <romain.forlot@iot.bzh>
+#
+# 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 (file)
index 0000000..324a9d0
--- /dev/null
@@ -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_t> message_set =
+       std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
+               { // beginning message_definition_ vector
+                       {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                      {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                      {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                      {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                      {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                      {std::make_shared<message_definition_t>(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> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(false, 0),// multiplex
+                                               0,// is_big_endian
+                                               0,// is_signed
+                                               ""// unit
+                                       })},
+                                       {std::make_shared<signal_t> (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<bool, int>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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>(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;
+}
+}