plugins: Conditionnal building of the j1939 plugin 37/23237/6
authorRomain Forlot <romain.forlot@iot.bzh>
Tue, 7 Jan 2020 17:21:33 +0000 (18:21 +0100)
committerRomain Forlot <romain.forlot@iot.bzh>
Thu, 9 Jan 2020 15:25:32 +0000 (16:25 +0100)
Bug-AGL: SPEC-2988

Change-Id: Idf77aa32ca4fd44163d93d0515f21d51f1d7abd7
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
plugins/CMakeLists.txt
plugins/j1939-signals.cpp [new file with mode: 0644]

index 6d0bc0b..631c68c 100755 (executable)
@@ -41,3 +41,32 @@ PROJECT_TARGET_ADD(agl-vcar-signals)
        bitfield-c
        afb-helpers
        ${link_libraries})
+
+if(WITH_FEATURE_J1939)
+PROJECT_TARGET_ADD(j1939-signals)
+
+       # Define targets
+       ADD_LIBRARY(${TARGET_NAME} MODULE ${TARGET_NAME}.cpp)
+
+       # Alsa Plugin properties
+       SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+                       LABELS "PLUGIN"
+                       PREFIX ""
+                       SUFFIX ".ctlso"
+                       OUTPUT_NAME ${TARGET_NAME}
+       )
+
+       target_include_directories(${TARGET_NAME}
+       PRIVATE "../low-can-binding")
+
+       # Library dependencies (include updates automatically)
+       TARGET_LINK_LIBRARIES(${TARGET_NAME}
+       low-can
+       ini-config
+       openxc-message-format
+       uds-c
+       isotp-c
+       bitfield-c
+       afb-helpers
+       ${link_libraries})
+endif()
diff --git a/plugins/j1939-signals.cpp b/plugins/j1939-signals.cpp
new file mode 100644 (file)
index 0000000..7ec634a
--- /dev/null
@@ -0,0 +1,1035 @@
+#include <binding/application.hpp>
+#include <can/can-decoder.hpp>
+#include <can/can-encoder.hpp>
+
+extern "C"
+{
+
+CTLP_CAPI_REGISTER("j1939-signals");
+
+std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set_t{0,"Virtual J1939",
+                       { // beginning message_definition_ vector
+                               {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Momentary.Overspeed.Enable",// generic_name
+                                                       32,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {0,"MomentaryEngOverspeedIsDisabled"},
+                                                               {1,"MomentaryEngOverspeedIsEnabled"},
+                                                               {2,"Reserved"},
+                                                               {3,"TakeNoAction"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Momentary.Eng.Max.Power.Enable",// generic_name
+                                                       36,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {2,"fault"},
+                                                               {1,"mmntarilyRqingMaxPowerAvailable"},
+                                                               {3,"notAvailable"},
+                                                               {0,"notRqingMaxPowerAvailable"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Percent.Clutch.Slip",// generic_name
+                                                       24,// bit_position
+                                                       8,// bit_size
+                                                       0.400000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Progressive.Shift.Disable",// generic_name
+                                                       34,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {1,"ProgressiveShiftIsDisabled"},
+                                                               {0,"ProgressiveShiftIsNotDisabled"},
+                                                               {2,"Reserved"},
+                                                               {3,"TakeNoAction"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
+                                                       56,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trans.Driveline.Engaged",// generic_name
+                                                       0,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {0,"DrivelineDisengaged"},
+                                                               {1,"DrivelineEngaged"},
+                                                               {2,"Error"},
+                                                               {3,"NotAvailable"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trans.Input.Shaft.Speed",// generic_name
+                                                       40,// bit_position
+                                                       16,// bit_size
+                                                       0.125000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "rpm"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trans.Output.Shaft.Speed",// generic_name
+                                                       8,// bit_position
+                                                       16,// bit_size
+                                                       0.125000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "rpm"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trans.Shift.In.Process",// generic_name
+                                                       4,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {2,"Error"},
+                                                               {3,"NotAvailable"},
+                                                               {1,"ShiftInProcess"},
+                                                               {0,"ShiftIsNotInProcess"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
+                                                       6,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {2,"Error"},
+                                                               {3,"NotAvailable"},
+                                                               {1,"TransitionIsInProcess"},
+                                                               {0,"TransitionIsNotInProcess"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Trns.Trque.Converter.Lockup.Engaged",// generic_name
+                                                       2,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {2,"Error"},
+                                                               {3,"NotAvailable"},
+                                                               {0,"TorqueConverterLockupDisengaged"},
+                                                               {1,"TorqueConverterLockupEngaged"}
+                                                       },// states
+                                                       true,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                              {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
+                                                       4,// bit_position
+                                                       4,// bit_size
+                                                       0.125000f,// factor
+                                                       0.00000f,// offset
+                                                       0,// min_value
+                                                       0,// max_value
+                                                       frequency_clock_t(0.00000f),// frequency
+                                                       true,// send_same
+                                                       false,// force_send_changed
+                                                       {
+                                                               {0,"0000"},
+                                                               {1,"0125"},
+                                                               {7,"0875"},
+                                                               {8,"1111NotAvailable"}
+                                                       },// states
+                                                       false,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Actual.Eng.Percent.Torque",// generic_name
+                                                       16,// bit_position
+                                                       8,// bit_size
+                                                       1.00000f,// factor
+                                                       -125.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Drivers.Demand.Eng.Percent.Torque",// generic_name
+                                                       8,// bit_position
+                                                       8,// bit_size
+                                                       1.00000f,// factor
+                                                       -125.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Demand.Percent.Torque",// generic_name
+                                                       56,// bit_position
+                                                       8,// bit_size
+                                                       1.00000f,// factor
+                                                       -125.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Speed",// generic_name
+                                                       24,// bit_position
+                                                       16,// bit_size
+                                                       0.125000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "rpm"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Starter.Mode",// generic_name
+                                                       48,// 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
+                                                       {
+                                                               {9,"1011Reserved"},
+                                                               {14,"error"},
+                                                               {15,"notAvailable"},
+                                                               {0,"startNotRqed"},
+                                                               {2,"starterActiveGearEngaged"},
+                                                               {1,"starterActiveGearNotEngaged"},
+                                                               {12,"starterInhibitedReasonUnknown"},
+                                                               {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
+                                                               {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
+                                                               {5,"strtrInhbtdDTEngNtReadyForStart"},
+                                                               {7,"strtrInhbtdDToActiveImmobilizer"},
+                                                               {4,"strtrInhbtdDToEngAlreadyRunning"},
+                                                               {8,"strtrInhbtdDueToStarterOvertemp"}
+                                                       },// states
+                                                       false,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Torque.Mode",// generic_name
+                                                       0,// 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
+                                                       {
+                                                               {7,"ABS control"},
+                                                               {5,"ASR control"},
+                                                               {1,"Accelerator pedal/operator selec"},
+                                                               {10,"Braking system"},
+                                                               {2,"Cruise control"},
+                                                               {9,"High speed governor"},
+                                                               {0,"Low idle governor/no request (de"},
+                                                               {15,"Not available"},
+                                                               {3,"PTO governor"},
+                                                               {11,"Remote accelerator"},
+                                                               {4,"Road speed governor"},
+                                                               {8,"Torque limiting"},
+                                                               {6,"Transmission control"}
+                                                       },// states
+                                                       false,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
+                                                       40,// 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
+                                                       false,// writable
+                                                       nullptr,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                              {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Lateral.Acceleration",// generic_name
+                                                       40,// bit_position
+                                                       16,// bit_size
+                                                       0.000488281f,// factor
+                                                       -15.6870f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "m/s/s"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Longitudinal.Acceleration",// generic_name
+                                                       56,// bit_position
+                                                       8,// bit_size
+                                                       0.100000f,// factor
+                                                       -12.5000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "m/s/s"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Steer.Wheel.Angle",// generic_name
+                                                       0,// bit_position
+                                                       16,// bit_size
+                                                       0.000976562f,// factor
+                                                       -31.3740f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "rad"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Steer.Wheel.Angle.Sensor.Type",// generic_name
+                                                       22,// bit_position
+                                                       2,// 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
+                                                       {
+                                                               {1,"AbsMeasuringPrinciple"},
+                                                               {3,"NotAvailable"},
+                                                               {0,"RelativeMeasuringPrinciple"},
+                                                               {2,"Reserved"}
+                                                       },// states
+                                                       false,// writable
+                                                       decoder_t::decode_state,// decoder
+                                                       nullptr,// encoder
+                                                       false,// received
+                                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                                       false,// is_big_endian
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       ""// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Steer.Wheel.Turn.Counter",// generic_name
+                                                       16,// bit_position
+                                                       6,// bit_size
+                                                       1.00000f,// factor
+                                                       -32.0000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "turns"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Yaw.Rate",// generic_name
+                                                       24,// bit_position
+                                                       16,// bit_size
+                                                       0.000122070f,// factor
+                                                       -3.92000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "rad/s"// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                              {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Front.Axle.Speed",// generic_name
+                                                       0,// bit_position
+                                                       16,// bit_size
+                                                       0.00390625f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
+                                                       16,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
+                                                       32,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
+                                                       48,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
+                                                       24,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
+                                                       40,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
+                                                       56,// bit_position
+                                                       8,// bit_size
+                                                       0.0625000f,// factor
+                                                       -7.81250f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "km/h"// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                              {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Total.Hours.Of.Operation",// generic_name
+                                                       0,// bit_position
+                                                       32,// bit_size
+                                                       0.0500000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "hr"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Total.Revolutions",// generic_name
+                                                       32,// bit_position
+                                                       32,// bit_size
+                                                       1000.00f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "r"// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+,                              {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,4,true,frequency_clock_t(5.00000f),true,
+                                       { // beginning signals vector
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Coolant.Temp",// generic_name
+                                                       0,// bit_position
+                                                       8,// bit_size
+                                                       0.0312500f,// factor
+                                                       -273.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "deg C"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Fuel.Temp1",// generic_name
+                                                       8,// bit_position
+                                                       8,// bit_size
+                                                       1.00000f,// factor
+                                                       -40.0000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "deg C"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Intercooler.Temp",// generic_name
+                                                       48,// bit_position
+                                                       8,// bit_size
+                                                       1.00000f,// factor
+                                                       -40.0000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "deg C"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Intercooler.Thermostat.Opening",// generic_name
+                                                       56,// bit_position
+                                                       8,// bit_size
+                                                       0.400000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "%"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Oil.Temp1",// generic_name
+                                                       16,// bit_position
+                                                       16,// bit_size
+                                                       0.0312500f,// factor
+                                                       -273.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "deg C"// unit
+                                               })},
+                                               {std::make_shared<signal_t> (signal_t{
+                                                       "Eng.Turbo.Oil.Temp",// generic_name
+                                                       32,// bit_position
+                                                       16,// bit_size
+                                                       0.0312500f,// factor
+                                                       -273.000f,// 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
+                                                       static_cast<sign_t>(0),// signed
+                                                       -1,// bit_sign_position
+                                                       "deg C"// unit
+                                               })}
+                                       } // end signals vector
+                               })} // end message_definition entry
+
+               }, // end message_definition vector
+                       { // beginning diagnostic_messages_ vector
+
+                       } // end diagnostic_messages_ vector
+               });
+
+CTLP_ONLOAD(plugin, handle)
+{
+       afb_api_t api = (afb_api_t) plugin->api;
+       CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
+       application_t* app = (application_t*) getExternalData(CtlConfig);
+
+       return app->add_message_set(cms);
+}
+
+}
+