Update agl-vcar to match test expectations 62/25362/1 10.91.0 koi/10.91.0 koi_10.91.0
authorScott Murray <scott.murray@konsulko.com>
Tue, 29 Sep 2020 22:44:39 +0000 (18:44 -0400)
committerScott Murray <scott.murray@konsulko.com>
Tue, 29 Sep 2020 22:55:53 +0000 (18:55 -0400)
The regeneration of the agl-vcar and default plugin signals code
broke some expectations of the afb-test and pyagl tests, changes
to get things back to a good state:

- Add the missing J1939 messages that were in default-signals.cpp
  before it was regenerated to the agl-vcar signals.json, and then
  regenerate the affected cpp files; this fixes the J1939 test
  expectations.  An alternative approach would be using the ability
  to load a different set of signals by configuring a different
  plugin, but that has been deemed not workable for AGL CI.
- Remove the old application-generated.cpp file from the agl-vcar
  examples directory to avoid confusion.
- Update the testFilter01pass.canreplay CAN data file used for the
  Filter_Test_01/Step_2 test to use the non-FD version of the
  0x3D9 CAN message that matches the agl-vcar definition.  A new
  0x3DA message that is a FD copy of 0x3D9 has been added to the
  agl-vcar signals.json to allow testing CAN FD messaging, and a new
  testFilter01pass-FD.canreplay data file has been added that can
  potentially be used for doing so.

Bug-AGL: SPEC-3603

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I24c960ca33aaf122ac83a2583cb2df0cd6dbd9e3

examples/agl-vcar/agl-vcar-signals.cpp
examples/agl-vcar/application-generated.cpp [deleted file]
examples/agl-vcar/signals.json
plugins/default-signals.cpp
test/afb-test/fixtures/testFilter01pass-FD.canreplay [new file with mode: 0644]
test/afb-test/fixtures/testFilter01pass.canreplay

index b38f168..5d7629d 100644 (file)
@@ -569,6 +569,76 @@ std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set
                                })}
                        } // end signals vector
                })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3DA,"",8,2,frequency_clock_t(5.00000f),true,
+                       { // beginning signals vector
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       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{"hs",0x3E9,"",8,0,frequency_clock_t(5.00000f),true,
                        { // beginning signals vector
                                {std::make_shared<signal_t> (signal_t{
@@ -849,6 +919,609 @@ std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set
                                })}
                        } // end signals vector
                })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"j1939",130306,"Wind.Data",8,8,frequency_clock_t(5.00000f),true,
+                       { // beginning signals vector
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Reference",// generic_name
+                                       40,// bit_position
+                                       3,// 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,"Apparent"},
+                                               {1,"Magnetic (ground referenced to Magnetic North)"},
+                                               {3,"True (boat referenced)"},
+                                               {0,"True (ground referenced to North)"},
+                                               {4,"True (water referenced)"}
+                                       },// states
+                                       false,// writable
+                                       decoder_t::decode_state,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Reserved",// generic_name
+                                       43,// bit_position
+                                       21,// 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_bytes,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Sid",// 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
+                                       false,// writable
+                                       nullptr,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Wind.Angle",// generic_name
+                                       24,// bit_position
+                                       16,// bit_size
+                                       0.000100000f,// 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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       "rad"// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Wind.Speed",// generic_name
+                                       8,// bit_position
+                                       16,// bit_size
+                                       0.0100000f,// 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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       "m/s"// unit
+                               })}
+                       } // end signals vector
+               })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,8,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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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,8,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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// 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{
diff --git a/examples/agl-vcar/application-generated.cpp b/examples/agl-vcar/application-generated.cpp
deleted file mode 100644 (file)
index 966755e..0000000
+++ /dev/null
@@ -1,1138 +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,"AGL Virtual Car",
-                       { // 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.cruise.set",// generic_name
-                                                       51,// 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,128,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.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,0,true,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,0,true,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,0,true,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,0,true,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
-                               {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
-       } // 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 "hs";
-}
-
-
index c1542eb..f3ca23d 100644 (file)
-{   "name": "AGL Virtual Car",
-       "version": "2.0",
-       "extra_sources": [],
-       "initializers": [],
-       "loopers": [],
-       "buses": {},
-       "commands": [],
-       "messages": {
-               "0x620": {
-                       "bus": "hs",
-                       "is_fd" : false,
-                       "is_j1939" : false,
-                       "signals": {
-                               "doors.driver.open": {
-                                       "generic_name": "doors.front_left.open",
-                                       "bit_position": 43,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "doors.passenger.open": {
-                                       "generic_name": "doors.front_right.open",
-                                       "bit_position": 44,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "doors.rearleft.open": {
-                                       "generic_name": "doors.rear_left.open",
-                                       "bit_position": 46,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "doors.rearright.open": {
-                                       "generic_name": "doors.rear_right.open",
-                                       "bit_position": 45,
-                                       "bit_size": 4,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "doors.coffer.open": {
-                                       "generic_name": "doors.boot.open",
-                                       "bit_position": 47,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"}
-                       }
-               },
-               "0x799": {
-                       "bus": "hs",
-                       "is_fd" : false,
-                       "is_j1939" : false,
-                       "signals": {
-                               "windows.driver.open": {
-                                       "generic_name": "windows.front_left.open",
-                                       "bit_position": 43,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "windows.passenger.open": {
-                                       "generic_name": "windows.front_right.open",
-                                       "bit_position": 44,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "windows.rearleft.open": {
-                                       "generic_name": "windows.rear_left.open",
-                                       "bit_position": 46,
-                                       "bit_size": 1,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"},
-                               "windows.rearright.open": {
-                                       "generic_name": "windows.rear_right.open",
-                                       "bit_position": 45,
-                                       "bit_size": 4,
-                                       "factor": 1.0,
-                                       "offset": 0,
-                                       "writable": true,
-                                       "decoder": "decoder_t::decode_boolean"}
-               }
-       },
-       "0x3D9": {
-       "bus": "hs",
-       "is_fd" : false,
-       "is_extended": false,
-       "is_j1939" : false,
-       "signals": {
-               "PT_FuelLevelPct": {
-                       "generic_name": "fuel.level",
-                       "bit_position": 8,
-                       "bit_size": 8,
-                       "factor": 0.392157,
-                       "offset": 0,
-                       "writable": true
-               },
-               "PT_EngineSpeed": {
-                       "generic_name": "engine.speed",
-                       "bit_position": 16,
-                       "bit_size": 16,
-                       "factor": 0.25,
-                       "offset": 0,
-                       "writable": true
-               },
-               "PT_FuelLevelLow": {
-                       "generic_name": "fuel.level.low",
-                       "bit_position": 55,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true,
-                       "decoder": "decoder_t::decode_boolean"
-               }
-       }
-       },
-       "0x4D1": {
-       "bus": "hs",
-       "is_fd" : false,
-       "is_extended": false,
-       "is_j1939" : false,
-       "signals": {
-               "PT_EngineOilTempHigh": {
-                       "generic_name": "engine.oil.temp.high",
-                       "bit_position": 7,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true,
-                       "decoder": "decoder_t::decode_boolean"
-               },
-               "PT_EngineOilTemp": {
-                       "generic_name": "engine.oil.temp",
-                       "bit_position": 16,
-                       "bit_size": 8,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true
-               }
-       }
-       },
-       "0x3E9": {
-       "bus": "hs",
-       "is_fd" : false,
-       "is_extended": false,
-       "is_j1939" : false,
-       "signals": {
-               "PT_VehicleAvgSpeed": {
-                       "generic_name": "vehicle.average.speed",
-                       "bit_position": 0,
-                       "bit_size": 15,
-                       "factor": 0.015625,
-                       "offset": 0,
-                       "writable": false
-               }
-       }
-       },
-       "0x30": {
-       "bus": "ls",
-       "is_fd" : false,
-       "is_extended": true,
-       "is_j1939" : false,
-       "signals": {
-               "LeftTemperature": {
-                       "generic_name": "hvac.temperature.left",
-                       "bit_position": 0,
-                       "bit_size": 8,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true
-               },
-               "RightTemperature": {
-                       "generic_name": "hvac.temperature.right",
-                       "bit_position": 8,
-                       "bit_size": 8,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true
-               },
-               "Temperature": {
-                       "generic_name": "hvac.temperature.average",
-                       "bit_position": 16,
-                       "bit_size": 8,
-                       "factor": 1,
-                       "offset": 0,
-                       "writable": true
-               },
-               "FanSpeed": {
-                       "generic_name": "hvac.fan.speed",
-                       "bit_position": 32,
-                       "bit_size": 8,
-                       "factor": 23.529411765,
-                       "offset": 0,
-                       "writable": true
-               }
-       }
-       },
-       "0x21": {
-       "bus": "ls",
-       "is_fd" : false,
-       "is_extended": false,
-       "is_j1939" : false,
-       "length" : 8,
-       "signals": {
-               "SW_Previous": {
-                       "generic_name": "steering_wheel.previous",
-                       "bit_position": 32,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_VolumeUp": {
-                       "generic_name": "steering_wheel.volume.up",
-                       "bit_position": 33,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_Mode": {
-                       "generic_name": "steering_wheel.mode",
-                       "bit_position": 34,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_VolumeDown": {
-                       "generic_name": "steering_wheel.volume.down",
-                       "bit_position": 35,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_Next": {
-                       "generic_name": "steering_wheel.next",
-                       "bit_position": 36,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_Info": {
-                       "generic_name": "steering_wheel.info",
-                       "bit_position": 38,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_VolumeMute": {
-                       "generic_name": "steering_wheel.volume.mute",
-                       "bit_position": 39,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_Voice": {
-                       "generic_name": "steering_wheel.voice",
-                       "bit_position": 45,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_PhoneHangup": {
-                       "generic_name": "steering_wheel.phone.hangup",
-                       "bit_position": 46,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_PhoneCall": {
-                       "generic_name": "steering_wheel.phone.call",
-                       "bit_position": 47,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseEnable": {
-                       "generic_name": "steering_wheel.cruise.enable",
-                       "bit_position": 48,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseResume": {
-                       "generic_name": "steering_wheel.cruise.resume",
-                       "bit_position": 49,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseSet": {
-                       "generic_name": "steering_wheel.cruise.set",
-                       "bit_position": 51,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseCancel": {
-                       "generic_name": "steering_wheel.cruise.cancel",
-                       "bit_position": 52,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseLimit": {
-                       "generic_name": "steering_wheel.cruise.limit",
-                       "bit_position": 54,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_CruiseDistance": {
-                       "generic_name": "steering_wheel.cruise.distance",
-                       "bit_position": 55,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_Horn": {
-                       "generic_name": "steering_wheel.horn",
-                       "bit_position": 56,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               },
-               "SW_LaneDepartureWarning": {
-                       "generic_name": "steering_wheel.lane_departure_warning",
-                       "bit_position": 63,
-                       "bit_size": 1,
-                       "factor": 1,
-                       "offset": 0,
-                       "decoder": "decoder_t::decode_boolean",
-                       "writable": false
-               }
-       }
-       }
-},
-"diagnostic_messages": [
-               {
-                       "bus": "hs",
-                       "pid": 4,
-                       "name": "engine.load",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 5,
-                       "name": "engine.coolant.temperature",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 10,
-                       "name": "fuel.pressure",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 11,
-                       "name": "intake.manifold.pressure",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 12,
-                       "name": "engine.speed",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 13,
-                       "name": "vehicle.speed",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 15,
-                       "name": "intake.air.temperature",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 16,
-                       "name": "mass.airflow",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 17,
-                       "name": "throttle.position",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 31,
-                       "name": "running.time",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 45,
-                       "name": "EGR.error",
-                       "frequency": 0,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 47,
-                       "name": "fuel.level",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 51,
-                       "name": "barometric.pressure",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 70,
-                       "name": "ambient.air.temperature",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 76,
-                       "name": "commanded.throttle.position",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 82,
-                       "name": "ethanol.fuel.percentage",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 90,
-                       "name": "accelerator.pedal.position",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 91,
-                       "name": "hybrid.battery-pack.remaining.life",
-                       "frequency": 5,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 92,
-                       "name": "engine.oil.temperature",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 94,
-                       "name": "engine.fuel.rate",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               },
-               {
-                       "bus": "hs",
-                       "pid": 99,
-                       "name": "engine.torque",
-                       "frequency": 1,
-                       "decoder": "decoder_t::decode_obd2_response"
-               }
-       ]
+{
+    "name": "AGL Virtual Car",
+    "version": "2.0",
+    "extra_sources": [],
+    "initializers": [],
+    "loopers": [],
+    "buses": {},
+    "commands": [],
+    "messages": {
+        "0x620": {
+            "bus": "hs",
+            "is_fd": false,
+            "is_j1939": false,
+            "signals": {
+                "doors.driver.open": {
+                    "generic_name": "doors.front_left.open",
+                    "bit_position": 43,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "doors.passenger.open": {
+                    "generic_name": "doors.front_right.open",
+                    "bit_position": 44,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "doors.rearleft.open": {
+                    "generic_name": "doors.rear_left.open",
+                    "bit_position": 46,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "doors.rearright.open": {
+                    "generic_name": "doors.rear_right.open",
+                    "bit_position": 45,
+                    "bit_size": 4,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "doors.coffer.open": {
+                    "generic_name": "doors.boot.open",
+                    "bit_position": 47,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                }
+            }
+        },
+        "0x799": {
+            "bus": "hs",
+            "is_fd": false,
+            "is_j1939": false,
+            "signals": {
+                "windows.driver.open": {
+                    "generic_name": "windows.front_left.open",
+                    "bit_position": 43,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "windows.passenger.open": {
+                    "generic_name": "windows.front_right.open",
+                    "bit_position": 44,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "windows.rearleft.open": {
+                    "generic_name": "windows.rear_left.open",
+                    "bit_position": 46,
+                    "bit_size": 1,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "windows.rearright.open": {
+                    "generic_name": "windows.rear_right.open",
+                    "bit_position": 45,
+                    "bit_size": 4,
+                    "factor": 1.0,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                }
+            }
+        },
+        "0x3D9": {
+            "bus": "hs",
+            "is_fd": true,
+            "is_extended": false,
+            "is_j1939": false,
+            "signals": {
+                "PT_FuelLevelPct": {
+                    "generic_name": "fuel.level",
+                    "bit_position": 8,
+                    "bit_size": 8,
+                    "factor": 0.392157,
+                    "offset": 0,
+                    "writable": true
+                },
+                "PT_EngineSpeed": {
+                    "generic_name": "engine.speed",
+                    "bit_position": 16,
+                    "bit_size": 16,
+                    "factor": 0.25,
+                    "offset": 0,
+                    "writable": true
+                },
+                "PT_FuelLevelLow": {
+                    "generic_name": "fuel.level.low",
+                    "bit_position": 55,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                }
+            }
+        },
+        "0x3DA": {
+            "bus": "hs",
+            "is_fd": true,
+            "is_extended": false,
+            "is_j1939": false,
+            "signals": {
+                "FD_PT_FuelLevelPct": {
+                    "generic_name": "fd.fuel.level",
+                    "bit_position": 8,
+                    "bit_size": 8,
+                    "factor": 0.392157,
+                    "offset": 0,
+                    "writable": true
+                },
+                "FD_PT_EngineSpeed": {
+                    "generic_name": "fd.engine.speed",
+                    "bit_position": 16,
+                    "bit_size": 16,
+                    "factor": 0.25,
+                    "offset": 0,
+                    "writable": true
+                },
+                "FD_PT_FuelLevelLow": {
+                    "generic_name": "fd.fuel.level.low",
+                    "bit_position": 55,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                }
+            }
+        },
+        "0x4D1": {
+            "bus": "hs",
+            "is_fd": false,
+            "is_extended": false,
+            "is_j1939": false,
+            "signals": {
+                "PT_EngineOilTempHigh": {
+                    "generic_name": "engine.oil.temp.high",
+                    "bit_position": 7,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true,
+                    "decoder": "decoder_t::decode_boolean"
+                },
+                "PT_EngineOilTemp": {
+                    "generic_name": "engine.oil.temp",
+                    "bit_position": 16,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true
+                }
+            }
+        },
+        "0x3E9": {
+            "bus": "hs",
+            "is_fd": false,
+            "is_extended": false,
+            "is_j1939": false,
+            "signals": {
+                "PT_VehicleAvgSpeed": {
+                    "generic_name": "vehicle.average.speed",
+                    "bit_position": 0,
+                    "bit_size": 15,
+                    "factor": 0.015625,
+                    "offset": 0,
+                    "writable": false
+                }
+            }
+        },
+        "0x30": {
+            "bus": "ls",
+            "is_fd": false,
+            "is_extended": true,
+            "is_j1939": false,
+            "signals": {
+                "LeftTemperature": {
+                    "generic_name": "hvac.temperature.left",
+                    "bit_position": 0,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true
+                },
+                "RightTemperature": {
+                    "generic_name": "hvac.temperature.right",
+                    "bit_position": 8,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true
+                },
+                "Temperature": {
+                    "generic_name": "hvac.temperature.average",
+                    "bit_position": 16,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "writable": true
+                },
+                "FanSpeed": {
+                    "generic_name": "hvac.fan.speed",
+                    "bit_position": 32,
+                    "bit_size": 8,
+                    "factor": 23.529411765,
+                    "offset": 0,
+                    "writable": true
+                }
+            }
+        },
+        "0x21": {
+            "bus": "ls",
+            "is_fd": false,
+            "is_extended": false,
+            "is_j1939": false,
+            "length": 8,
+            "signals": {
+                "SW_Previous": {
+                    "generic_name": "steering_wheel.previous",
+                    "bit_position": 32,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_VolumeUp": {
+                    "generic_name": "steering_wheel.volume.up",
+                    "bit_position": 33,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_Mode": {
+                    "generic_name": "steering_wheel.mode",
+                    "bit_position": 34,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_VolumeDown": {
+                    "generic_name": "steering_wheel.volume.down",
+                    "bit_position": 35,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_Next": {
+                    "generic_name": "steering_wheel.next",
+                    "bit_position": 36,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_Info": {
+                    "generic_name": "steering_wheel.info",
+                    "bit_position": 38,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_VolumeMute": {
+                    "generic_name": "steering_wheel.volume.mute",
+                    "bit_position": 39,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_Voice": {
+                    "generic_name": "steering_wheel.voice",
+                    "bit_position": 45,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_PhoneHangup": {
+                    "generic_name": "steering_wheel.phone.hangup",
+                    "bit_position": 46,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_PhoneCall": {
+                    "generic_name": "steering_wheel.phone.call",
+                    "bit_position": 47,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseEnable": {
+                    "generic_name": "steering_wheel.cruise.enable",
+                    "bit_position": 48,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseResume": {
+                    "generic_name": "steering_wheel.cruise.resume",
+                    "bit_position": 49,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseSet": {
+                    "generic_name": "steering_wheel.cruise.set",
+                    "bit_position": 51,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseCancel": {
+                    "generic_name": "steering_wheel.cruise.cancel",
+                    "bit_position": 52,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseLimit": {
+                    "generic_name": "steering_wheel.cruise.limit",
+                    "bit_position": 54,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_CruiseDistance": {
+                    "generic_name": "steering_wheel.cruise.distance",
+                    "bit_position": 55,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_Horn": {
+                    "generic_name": "steering_wheel.horn",
+                    "bit_position": 56,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                },
+                "SW_LaneDepartureWarning": {
+                    "generic_name": "steering_wheel.lane_departure_warning",
+                    "bit_position": 63,
+                    "bit_size": 1,
+                    "factor": 1,
+                    "offset": 0,
+                    "decoder": "decoder_t::decode_boolean",
+                    "writable": false
+                }
+            }
+        },
+        "61442": {
+            "comment": "Electronic Transmission Controller 1",
+            "length": 8,
+            "name": "ETC1",
+            "bus": "j1939",
+            "is_fd": false,
+            "is_extended": false,
+            "is_j1939": true,
+            "signals": {
+                "Trns.Trque.Converter.Lockup.Engaged": {
+                    "generic_name": "Trns.Trque.Converter.Lockup.Engaged",
+                    "bit_position": 2,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "State signal which indicates whether the torque converter lockup is engaged.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "TorqueConverterLockupDisengaged": [
+                            0
+                        ],
+                        "TorqueConverterLockupEngaged": [
+                            1
+                        ],
+                        "Error": [
+                            2
+                        ],
+                        "NotAvailable": [
+                            3
+                        ]
+                    }
+                },
+                "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess": {
+                    "generic_name": "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",
+                    "bit_position": 6,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "TransitionIsNotInProcess": [
+                            0
+                        ],
+                        "TransitionIsInProcess": [
+                            1
+                        ],
+                        "Error": [
+                            2
+                        ],
+                        "NotAvailable": [
+                            3
+                        ]
+                    }
+                },
+                "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl": {
+                    "generic_name": "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",
+                    "bit_position": 56,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "The source address of the SAE J1939 device currently controlling the transmission.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true
+                },
+                "Momentary.Eng.Max.Power.Enable": {
+                    "generic_name": "Momentary.Eng.Max.Power.Enable",
+                    "bit_position": 36,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "Momentarily Requesting highest torque map from the engine control",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "notRqingMaxPowerAvailable": [
+                            0
+                        ],
+                        "mmntarilyRqingMaxPowerAvailable": [
+                            1
+                        ],
+                        "fault": [
+                            2
+                        ],
+                        "notAvailable": [
+                            3
+                        ]
+                    }
+                },
+                "Trans.Input.Shaft.Speed": {
+                    "generic_name": "Trans.Input.Shaft.Speed",
+                    "bit_position": 40,
+                    "bit_size": 16,
+                    "factor": 0.125,
+                    "offset": 0,
+                    "comment": "Rotational velocity of the primary shaft transferring power into the transmission.",
+                    "unit": "rpm",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true
+                },
+                "Progressive.Shift.Disable": {
+                    "generic_name": "Progressive.Shift.Disable",
+                    "bit_position": 34,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "Command signal used to indicate that progressive shifting by the engine should be disallowed.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "ProgressiveShiftIsNotDisabled": [
+                            0
+                        ],
+                        "ProgressiveShiftIsDisabled": [
+                            1
+                        ],
+                        "Reserved": [
+                            2
+                        ],
+                        "TakeNoAction": [
+                            3
+                        ]
+                    }
+                },
+                "Eng.Momentary.Overspeed.Enable": {
+                    "generic_name": "Eng.Momentary.Overspeed.Enable",
+                    "bit_position": 32,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "MomentaryEngOverspeedIsDisabled": [
+                            0
+                        ],
+                        "MomentaryEngOverspeedIsEnabled": [
+                            1
+                        ],
+                        "Reserved": [
+                            2
+                        ],
+                        "TakeNoAction": [
+                            3
+                        ]
+                    }
+                },
+                "Percent.Clutch.Slip": {
+                    "generic_name": "Percent.Clutch.Slip",
+                    "bit_position": 24,
+                    "bit_size": 8,
+                    "factor": 0.4,
+                    "offset": 0,
+                    "comment": "Parameter which represents the ratio of input shaft speed to current engine speed (in percent).",
+                    "unit": "%",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true
+                },
+                "Trans.Output.Shaft.Speed": {
+                    "generic_name": "Trans.Output.Shaft.Speed",
+                    "bit_position": 8,
+                    "bit_size": 16,
+                    "factor": 0.125,
+                    "offset": 0,
+                    "comment": "Calculated speed of the transmission output shaft.",
+                    "unit": "rpm",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true
+                },
+                "Trans.Shift.In.Process": {
+                    "generic_name": "Trans.Shift.In.Process",
+                    "bit_position": 4,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "Indicates that the transmission is in process of shifting from the current gear to the selected gear.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "ShiftIsNotInProcess": [
+                            0
+                        ],
+                        "ShiftInProcess": [
+                            1
+                        ],
+                        "Error": [
+                            2
+                        ],
+                        "NotAvailable": [
+                            3
+                        ]
+                    }
+                },
+                "Trans.Driveline.Engaged": {
+                    "generic_name": "Trans.Driveline.Engaged",
+                    "bit_position": 0,
+                    "bit_size": 2,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "writable": true,
+                    "states": {
+                        "DrivelineDisengaged": [
+                            0
+                        ],
+                        "DrivelineEngaged": [
+                            1
+                        ],
+                        "Error": [
+                            2
+                        ],
+                        "NotAvailable": [
+                            3
+                        ]
+                    }
+                }
+            }
+        },
+        "61444": {
+            "comment": "Electronic Engine Controller 1",
+            "length": 8,
+            "name": "EEC1",
+            "bus": "j1939",
+            "is_fd": false,
+            "is_j1939": true,
+            "signals": {
+                "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl": {
+                    "generic_name": "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",
+                    "bit_position": 40,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "The source address of the SAE J1939 device currently controlling the engine.",
+                    "is_big_endian": false,
+                    "sign": 0
+                },
+                "Actl.Eng.Prcnt.Trque.High.Resolution": {
+                    "generic_name": "Actl.Eng.Prcnt.Trque.High.Resolution",
+                    "bit_position": 4,
+                    "bit_size": 4,
+                    "factor": 0.125,
+                    "offset": 0,
+                    "comment": "This parameter displays an additional torque in percent of the reference engine torque.",
+                    "unit": "%",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "states": {
+                        "0000": [
+                            0
+                        ],
+                        "0125": [
+                            1
+                        ],
+                        "0875": [
+                            7
+                        ],
+                        "1111NotAvailable": [
+                            8
+                        ]
+                    }
+                },
+                "Eng.Demand.Percent.Torque": {
+                    "generic_name": "Eng.Demand.Percent.Torque",
+                    "bit_position": 56,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": -125,
+                    "comment": "The requested torque output of the engine by all dynamic internal inputs, including smoke control, noise control and low",
+                    "unit": "%",
+                    "is_big_endian": false,
+                    "sign": 0
+                },
+                "Eng.Starter.Mode": {
+                    "generic_name": "Eng.Starter.Mode",
+                    "bit_position": 48,
+                    "bit_size": 4,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "There are several phases in a starting action and different reasons why a start cannot take place.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "states": {
+                        "startNotRqed": [
+                            0
+                        ],
+                        "starterActiveGearNotEngaged": [
+                            1
+                        ],
+                        "starterActiveGearEngaged": [
+                            2
+                        ],
+                        "strtFnshdStrtrNtActvAftrHvngBnA": [
+                            3
+                        ],
+                        "strtrInhbtdDToEngAlreadyRunning": [
+                            4
+                        ],
+                        "strtrInhbtdDTEngNtReadyForStart": [
+                            5
+                        ],
+                        "strtrInhbtdDTDrvlnEnggdOthrTrns": [
+                            6
+                        ],
+                        "strtrInhbtdDToActiveImmobilizer": [
+                            7
+                        ],
+                        "strtrInhbtdDueToStarterOvertemp": [
+                            8
+                        ],
+                        "1011Reserved": [
+                            9
+                        ],
+                        "starterInhibitedReasonUnknown": [
+                            12
+                        ],
+                        "error": [
+                            14
+                        ],
+                        "notAvailable": [
+                            15
+                        ]
+                    }
+                },
+                "Eng.Speed": {
+                    "generic_name": "Eng.Speed",
+                    "bit_position": 24,
+                    "bit_size": 16,
+                    "factor": 0.125,
+                    "offset": 0,
+                    "comment": "Actual engine speed which is calculated over a minimum crankshaft angle of 720 degrees divided by the number of cylinders.",
+                    "unit": "rpm",
+                    "is_big_endian": false,
+                    "sign": 0
+                },
+                "Actual.Eng.Percent.Torque": {
+                    "generic_name": "Actual.Eng.Percent.Torque",
+                    "bit_position": 16,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": -125,
+                    "comment": "The calculated output torque of the engine.",
+                    "unit": "%",
+                    "is_big_endian": false,
+                    "sign": 0
+                },
+                "Drivers.Demand.Eng.Percent.Torque": {
+                    "generic_name": "Drivers.Demand.Eng.Percent.Torque",
+                    "bit_position": 8,
+                    "bit_size": 8,
+                    "factor": 1,
+                    "offset": -125,
+                    "comment": "The requested torque output of the engine by the driver.",
+                    "unit": "%",
+                    "is_big_endian": false,
+                    "sign": 0
+                },
+                "Eng.Torque.Mode": {
+                    "generic_name": "Eng.Torque.Mode",
+                    "bit_position": 0,
+                    "bit_size": 4,
+                    "factor": 1,
+                    "offset": 0,
+                    "comment": "State signal which indicates which engine torque mode is currently generating, limiting, or controlling the torque.",
+                    "is_big_endian": false,
+                    "sign": 0,
+                    "states": {
+                        "Low idle governor/no request (de": [
+                            0
+                        ],
+                        "Accelerator pedal/operator selec": [
+                            1
+                        ],
+                        "Cruise control": [
+                            2
+                        ],
+                        "PTO governor": [
+                            3
+                        ],
+                        "Road speed governor": [
+                            4
+                        ],
+                        "ASR control": [
+                            5
+                        ],
+                        "Transmission control": [
+                            6
+                        ],
+                        "ABS control": [
+                            7
+                        ],
+                        "Torque limiting": [
+                            8
+                        ],
+                        "High speed governor": [
+                            9
+                        ],
+                        "Braking system": [
+                            10
+                        ],
+                        "Remote accelerator": [
+                            11
+                        ],
+                        "Not available": [
+                            15
+                        ]
+                    }
+                }
+            }
+        },
+        "130306": {
+            "name": "Wind.Data",
+            "bus": "j1939",
+            "comment": "Wind Data",
+            "length": 8,
+            "is_fd": false,
+            "is_extended": false,
+            "is_j1939": true,
+            "byte_frame_is_big_endian": true,
+            "bit_position_reversed": true,
+            "signals": {
+                "Sid": {
+                    "bit_position": 0,
+                    "bit_size": 8,
+                    "sign": 0,
+                    "generic_name": "Wind.Data.Sid"
+                },
+                "Wind.Speed": {
+                    "bit_position": 8,
+                    "bit_size": 16,
+                    "factor": 0.01,
+                    "sign": 0,
+                    "unit": "m/s",
+                    "generic_name": "Wind.Data.Wind.Speed"
+                },
+                "Wind.Angle": {
+                    "bit_position": 24,
+                    "bit_size": 16,
+                    "factor": 0.0001,
+                    "sign": 0,
+                    "unit": "rad",
+                    "generic_name": "Wind.Data.Wind.Angle"
+                },
+                "Reference": {
+                    "bit_position": 40,
+                    "bit_size": 3,
+                    "decoder": "decoder_t::decode_state",
+                    "sign": 0,
+                    "states": {
+                        "True (ground referenced to North)": [
+                            0
+                        ],
+                        "Magnetic (ground referenced to Magnetic North)": [
+                            1
+                        ],
+                        "Apparent": [
+                            2
+                        ],
+                        "True (boat referenced)": [
+                            3
+                        ],
+                        "True (water referenced)": [
+                            4
+                        ]
+                    },
+                    "generic_name": "Wind.Data.Reference"
+                },
+                "Reserved": {
+                    "bit_position": 43,
+                    "bit_size": 21,
+                    "decoder": "decoder_t::decode_bytes",
+                    "sign": 0,
+                    "generic_name": "Wind.Data.Reserved"
+                }
+            }
+        }
+    },
+    "diagnostic_messages": [
+        {
+            "bus": "hs",
+            "pid": 4,
+            "name": "engine.load",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 5,
+            "name": "engine.coolant.temperature",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 10,
+            "name": "fuel.pressure",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 11,
+            "name": "intake.manifold.pressure",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 12,
+            "name": "engine.speed",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 13,
+            "name": "vehicle.speed",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 15,
+            "name": "intake.air.temperature",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 16,
+            "name": "mass.airflow",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 17,
+            "name": "throttle.position",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 31,
+            "name": "running.time",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 45,
+            "name": "EGR.error",
+            "frequency": 0,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 47,
+            "name": "fuel.level",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 51,
+            "name": "barometric.pressure",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 70,
+            "name": "ambient.air.temperature",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 76,
+            "name": "commanded.throttle.position",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 82,
+            "name": "ethanol.fuel.percentage",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 90,
+            "name": "accelerator.pedal.position",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 91,
+            "name": "hybrid.battery-pack.remaining.life",
+            "frequency": 5,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 92,
+            "name": "engine.oil.temperature",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 94,
+            "name": "engine.fuel.rate",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        },
+        {
+            "bus": "hs",
+            "pid": 99,
+            "name": "engine.torque",
+            "frequency": 1,
+            "decoder": "decoder_t::decode_obd2_response"
+        }
+    ]
 }
index b38f168..5d7629d 100644 (file)
@@ -569,6 +569,76 @@ std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set
                                })}
                        } // end signals vector
                })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3DA,"",8,2,frequency_clock_t(5.00000f),true,
+                       { // beginning signals vector
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "fd.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
+                                       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{"hs",0x3E9,"",8,0,frequency_clock_t(5.00000f),true,
                        { // beginning signals vector
                                {std::make_shared<signal_t> (signal_t{
@@ -849,6 +919,609 @@ std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set
                                })}
                        } // end signals vector
                })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"j1939",130306,"Wind.Data",8,8,frequency_clock_t(5.00000f),true,
+                       { // beginning signals vector
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Reference",// generic_name
+                                       40,// bit_position
+                                       3,// 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,"Apparent"},
+                                               {1,"Magnetic (ground referenced to Magnetic North)"},
+                                               {3,"True (boat referenced)"},
+                                               {0,"True (ground referenced to North)"},
+                                               {4,"True (water referenced)"}
+                                       },// states
+                                       false,// writable
+                                       decoder_t::decode_state,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Reserved",// generic_name
+                                       43,// bit_position
+                                       21,// 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_bytes,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Sid",// 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
+                                       false,// writable
+                                       nullptr,// decoder
+                                       nullptr,// encoder
+                                       false,// received
+                                       std::make_pair<bool, int>(false, 0),// multiplex
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Wind.Angle",// generic_name
+                                       24,// bit_position
+                                       16,// bit_size
+                                       0.000100000f,// 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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       "rad"// unit
+                               })},
+                               {std::make_shared<signal_t> (signal_t{
+                                       "Wind.Data.Wind.Speed",// generic_name
+                                       8,// bit_position
+                                       16,// bit_size
+                                       0.0100000f,// 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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       "m/s"// unit
+                               })}
+                       } // end signals vector
+               })} // end message_definition entry
+,              {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,8,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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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,8,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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       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
+                                       static_cast<sign_t>(0),// signed
+                                       -1,// bit_sign_position
+                                       ""// 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{
diff --git a/test/afb-test/fixtures/testFilter01pass-FD.canreplay b/test/afb-test/fixtures/testFilter01pass-FD.canreplay
new file mode 100644 (file)
index 0000000..dd9772b
--- /dev/null
@@ -0,0 +1,8 @@
+(1520951000.000000) can0 3DA##000000050000000
+(1520951000.000000) can0 3DA##000000074000000
+(1520951000.000000) can0 3DA##000000320000000
+(1520951000.000000) can0 3DA##000000194000000
+(1520951000.000000) can0 3DA##000000078000000
+(1520951000.000000) can0 3DA##000000190000000
+(1520951000.000000) can0 3DA##000000090000000
+(1520951001.100000) can0 3DA##000000080000000
index 2f6cd86..dfb6b14 100644 (file)
@@ -1,2 +1,8 @@
-(1520951000.000000) can0 3D9##000520090000000
-(1520951001.100000) can0 3D9##000410080000000
+(1520951000.000000) can0 3D9#0000005000000000
+(1520951000.100000) can0 3D9#0000007400000000
+(1520951000.200000) can0 3D9#0000032000000000
+(1520951000.300000) can0 3D9#0000019400000000
+(1520951000.400000) can0 3D9#0000007800000000
+(1520951000.500000) can0 3D9#0000019000000000
+(1520951000.600000) can0 3D9#0000009000000000
+(1520951000.700000) can0 3D9#0000008000000000