controller: Prepare project ot use the Controller 94/23194/6
authorArthur Guyader <arthur.guyader@iot.bzh>
Thu, 7 Nov 2019 13:16:16 +0000 (14:16 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 9 Jan 2020 09:43:00 +0000 (10:43 +0100)
Initialize an empty message_set to fill later when loading the Plugins
Add the required method to be able to add a message_set

Bug-AGL: SPEC-2988

Change-Id: I1dc784648f69832de8681184adaccbf5300f831d
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
19 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
low-can-binding/binding/application-generated.cpp [deleted file]
low-can-binding/binding/application.cpp
low-can-binding/binding/application.hpp
low-can-binding/can/message-definition.cpp
low-can-binding/can/message-definition.hpp
low-can-binding/can/message-set.cpp
low-can-binding/can/message-set.hpp
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..fd13b42 100644 (file)
@@ -23,7 +23,6 @@ PROJECT_TARGET_ADD(low-can)
 
        # Define project Targets
        set (SOURCES
-               #binding/${TARGET_NAME}-hat.cpp
                binding/${TARGET_NAME}-cb.cpp
                binding/${TARGET_NAME}-subscription.cpp
                binding/application.cpp
@@ -46,7 +45,6 @@ PROJECT_TARGET_ADD(low-can)
                utils/socketcan-bcm.cpp
                utils/config-parser.cpp
                utils/converter.cpp
-               binding/application-generated.cpp
                )
 
 
@@ -84,6 +82,6 @@ PROJECT_TARGET_ADD(low-can)
                uds-c
                isotp-c
                bitfield-c
-               afb-helpers
+               appcontroller
                ${link_libraries})
 
diff --git a/low-can-binding/binding/application-generated.cpp b/low-can-binding/binding/application-generated.cpp
deleted file mode 100644 (file)
index edde0e2..0000000
+++ /dev/null
@@ -1,864 +0,0 @@
-#include "application.hpp"
-#include "../can/can-decoder.hpp"
-#include "../can/can-encoder.hpp"
-
-application_t::application_t()
-       : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
-       , message_set_{
-               {std::make_shared<message_set_t>(message_set_t{0,"example",
-                       { // beginning message_definition_ vector
-                               {std::make_shared<message_definition_t>(message_definition_t{"ls",0x21,"",8,2,frequency_clock_t(5.00000f),true,
-                                       { // beginning signals vector
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.cancel",// generic_name
-                                                       52,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.distance",// generic_name
-                                                       55,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.enable",// generic_name
-                                                       48,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.limit",// generic_name
-                                                       54,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.cruise.resume",// generic_name
-                                                       49,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.horn",// generic_name
-                                                       56,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.info",// generic_name
-                                                       38,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.lane_departure_warning",// generic_name
-                                                       63,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.mode",// generic_name
-                                                       34,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.next",// generic_name
-                                                       36,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.phone.call",// generic_name
-                                                       47,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.phone.hangup",// generic_name
-                                                       46,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.previous",// generic_name
-                                                       32,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.voice",// generic_name
-                                                       45,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.volume.down",// generic_name
-                                                       35,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.volume.mute",// generic_name
-                                                       39,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "steering_wheel.volume.up",// generic_name
-                                                       33,// bit_position
-                                                       1,// bit_size
-                                                       1.00000f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,4,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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,2,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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })},
-                                               {std::make_shared<signal_t> (signal_t{
-                                                       "fuel.level",// generic_name
-                                                       8,// bit_position
-                                                       8,// bit_size
-                                                       0.392157f,// factor
-                                                       0.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,2,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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,2,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.00000f,// 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
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,2,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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-,                              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,2,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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// 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.00000f,// offset
-                                                       0,// min_value
-                                                       0,// max_value
-                                                       frequency_clock_t(0.00000f),// frequency
-                                                       true,// send_same
-                                                       false,// force_send_changed
-                                                       {
-                                                       },// states
-                                                       true,// writable
-                                                       decoder_t::decode_boolean,// decoder
-                                                       nullptr,// encoder
-                                                       false,// received
-                                                       std::make_pair<bool, int>(false, 0),// multiplex
-                                                       false,// is_big_endian
-                                                       false,// is_signed
-                                                       ""// unit
-                                               })}
-                                       } // end signals vector
-                               })} // end message_definition entry
-
-               }, // end message_definition vector
-                       { // beginning diagnostic_messages_ vector
-
-                       } // end diagnostic_messages_ vector
-               })} // end message_set entry
-       } // end message_set vector
-{
-       for(std::shared_ptr<message_set_t> cms: message_set_)
-       {
-               std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
-               for(std::shared_ptr<message_definition_t> cmd : messages_definition)
-               {
-                       cmd->set_parent(cms);
-                       std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
-                       for(std::shared_ptr<signal_t> sig: signals)
-                       {
-                               sig->set_parent(cmd);
-                       }
-               }
-
-               std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
-               for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
-               {
-                       dm->set_parent(cms);
-               }
-       }
-               }
-
-const std::string application_t::get_diagnostic_bus() const
-{
-       return diagnostic_manager_.get_bus_device_name();;
-}
-
-
index d22633f..bcb8d73 100644 (file)
@@ -52,6 +52,47 @@ uint8_t application_t::get_active_message_set() const
        return active_message_set_;
 }
 
+int application_t::add_message_set(std::shared_ptr<message_set_t> new_message_set)
+{
+
+       vect_ptr_msg_def_t messages_definition = new_message_set->get_messages_definition();
+       for(std::shared_ptr<message_definition_t> cmd : messages_definition)
+       {
+               cmd->set_parent(new_message_set);
+               std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
+               for(std::shared_ptr<signal_t> sig: signals)
+                       sig->set_parent(cmd);
+       }
+
+       std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = new_message_set->get_diagnostic_messages();
+       for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
+               dm->set_parent(new_message_set);
+
+       for(auto old_msg_set : message_set_)
+       {
+               if(old_msg_set->get_index() == new_message_set->get_index())
+               {
+
+                       for(auto new_msg_def : new_message_set->get_messages_definition())
+                       {
+                               if(old_msg_set->add_message_definition(new_msg_def) < 0)
+                                       return -1;
+                       }
+
+                       for(auto new_diag_msg : new_message_set->get_diagnostic_messages())
+                       {
+                               if(old_msg_set->add_diagnostic_message(new_diag_msg) < 0)
+                                       return -1;
+                       }
+
+                       return 0;
+               }
+       }
+
+       message_set_.push_back(new_message_set);
+       return 0;
+}
+
 std::vector<std::shared_ptr<message_set_t> > application_t::get_message_set()
 {
        return message_set_;
index 47a0e2f..95f64cf 100644 (file)
@@ -71,6 +71,8 @@ class application_t
 
                uint8_t get_active_message_set() const;
 
+               int add_message_set(std::shared_ptr<message_set_t> new_message_set);
+
                std::vector<std::shared_ptr<message_set_t> > get_message_set();
 
                vect_ptr_signal_t get_all_signals();
index b761ad6..114307e 100644 (file)
@@ -62,6 +62,10 @@ const std::string message_definition_t::get_bus_device_name() const
                .get_can_device_name(bus_);
 }
 
+const std::string message_definition_t::get_name() const{
+       return name_;
+}
+
 uint32_t message_definition_t::get_id() const
 {
        return id_ & CAN_EFF_MASK ?
index cce42e1..ca264b7 100644 (file)
@@ -79,6 +79,7 @@ public:
 
        const std::string get_bus_name() const;
        const std::string get_bus_device_name() const;
+       const std::string get_name() const;
        uint32_t get_id() const;
        bool is_fd() const;
        bool is_j1939() const;
index 2fc300a..6bf80c9 100644 (file)
@@ -31,6 +31,37 @@ message_set_t::message_set_t(
        , diagnostic_messages_{diagnostic_messages}
 {}
 
+
+int message_set_t::add_message_definition(std::shared_ptr<message_definition_t> msg_def)
+{
+       for (auto old_msg_def : messages_definition_)
+       {
+               if(old_msg_def->get_id() == msg_def->get_id())
+               {
+                       AFB_ERROR("Same id between : %s and %s", old_msg_def->get_name().c_str(), msg_def->get_name().c_str());
+                       return -1;
+               }
+       }
+       messages_definition_.push_back(msg_def);
+       return 0;
+}
+
+
+int message_set_t::add_diagnostic_message(std::shared_ptr<diagnostic_message_t> diag_msg)
+{
+       for (auto old_diag_msg : diagnostic_messages_)
+       {
+               if(old_diag_msg->get_pid() == diag_msg->get_pid())
+               {
+                       AFB_ERROR("Same pid between : %s and %s", old_diag_msg->get_generic_name().c_str(), diag_msg->get_generic_name().c_str());
+                       return -1;
+               }
+       }
+       diagnostic_messages_.push_back(diag_msg);
+       return 0;
+}
+
+
 /// @brief Returns a vector holding all message definitions which are handled by this message set.
 vect_ptr_msg_def_t& message_set_t::get_messages_definition()
 {
@@ -57,3 +88,8 @@ vect_ptr_diag_msg_t& message_set_t::get_diagnostic_messages()
 {
        return diagnostic_messages_;
 }
+
+uint8_t message_set_t::get_index() const
+{
+       return index_;
+}
index d54f27a..eab4ed6 100644 (file)
@@ -48,7 +48,12 @@ public:
                        const std::vector<std::shared_ptr<message_definition_t> >& messages_definition,
                        const vect_ptr_diag_msg_t& diagnostic_messages);
 
+       int add_message_definition(std::shared_ptr<message_definition_t> msg_def);
+       int add_diagnostic_message(std::shared_ptr<diagnostic_message_t> diag_msg);
+
        vect_ptr_msg_def_t& get_messages_definition();
        vect_ptr_signal_t get_all_signals() const;
        vect_ptr_diag_msg_t& get_diagnostic_messages();
+
+       uint8_t get_index() const;
 };
diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt
new file mode 100755 (executable)
index 0000000..426689e
--- /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(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})
diff --git a/plugins/agl-signals.cpp b/plugins/agl-signals.cpp
new file mode 100644 (file)
index 0000000..28a8cce
--- /dev/null
@@ -0,0 +1,722 @@
+#include "binding/application.hpp"
+#include "can/can-decoder.hpp"
+#include "can/can-encoder.hpp"
+#include <ctl-plugin.h>
+
+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, 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, 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, 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, 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, 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, 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;
+}
+}