From 64092acda9a8581034c61732754eddee39f747ca Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Tue, 29 Sep 2020 18:44:39 -0400 Subject: Update agl-vcar to match test expectations 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 Change-Id: I24c960ca33aaf122ac83a2583cb2df0cd6dbd9e3 --- examples/agl-vcar/agl-vcar-signals.cpp | 673 +++++++++ examples/agl-vcar/application-generated.cpp | 1138 -------------- examples/agl-vcar/signals.json | 1591 +++++++++++++------- plugins/default-signals.cpp | 673 +++++++++ .../fixtures/testFilter01pass-FD.canreplay | 8 + test/afb-test/fixtures/testFilter01pass.canreplay | 10 +- 6 files changed, 2424 insertions(+), 1669 deletions(-) delete mode 100644 examples/agl-vcar/application-generated.cpp create mode 100644 test/afb-test/fixtures/testFilter01pass-FD.canreplay diff --git a/examples/agl-vcar/agl-vcar-signals.cpp b/examples/agl-vcar/agl-vcar-signals.cpp index b38f168c..5d7629d1 100644 --- a/examples/agl-vcar/agl-vcar-signals.cpp +++ b/examples/agl-vcar/agl-vcar-signals.cpp @@ -569,6 +569,76 @@ std::shared_ptr cms = std::make_shared(message_set })} } // end signals vector })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs",0x3DA,"",8,2,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })} + } // end signals vector + })} // end message_definition entry , {std::make_shared(message_definition_t{"hs",0x3E9,"",8,0,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ @@ -849,6 +919,609 @@ std::shared_ptr cms = std::make_shared(message_set })} } // end signals vector })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",130306,"Wind.Data",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rad"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "m/s"// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",61442,"ETC1",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",61444,"EEC1",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(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{ diff --git a/examples/agl-vcar/application-generated.cpp b/examples/agl-vcar/application-generated.cpp deleted file mode 100644 index 966755ef..00000000 --- a/examples/agl-vcar/application-generated.cpp +++ /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{0,"AGL Virtual Car", - { // beginning message_definition_ vector - {std::make_shared(message_definition_t{"ls",0x21,"",8,2,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "hvac.fan.speed",// generic_name - 32,// bit_position - 8,// bit_size - 23.5294f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x3D9,"",8,128,true,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "engine.speed",// generic_name - 16,// bit_position - 16,// bit_size - 0.250000f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x3E9,"",8,0,true,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "vehicle.average.speed",// generic_name - 0,// bit_position - 15,// bit_size - 0.0156250f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x4D1,"",8,0,true,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "engine.oil.temp",// generic_name - 16,// bit_position - 8,// bit_size - 1.00000f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x620,"",8,0,true,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "doors.boot.open",// generic_name - 47,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })} - } // end signals vector - })} // end message_definition entry -, {std::make_shared(message_definition_t{"hs",0x799,"",8,0,true,frequency_clock_t(5.00000f),true, - { // beginning signals vector - {std::make_shared (signal_t{ - "windows.front_left.open",// generic_name - 43,// bit_position - 1,// bit_size - 1.00000f,// factor - 0.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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(false, 0),// multiplex - false,// is_big_endian - false,// is_signed - ""// unit - })}, - {std::make_shared (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(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{ - 4, - "engine.load", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 5, - "engine.coolant.temperature", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 10, - "fuel.pressure", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 11, - "intake.manifold.pressure", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 12, - "engine.speed", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 13, - "vehicle.speed", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 15, - "intake.air.temperature", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 16, - "mass.airflow", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 17, - "throttle.position", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 31, - "running.time", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 45, - "EGR.error", - 0, - 0, - UNIT::INVALID, - 0.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 47, - "fuel.level", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 51, - "barometric.pressure", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 70, - "ambient.air.temperature", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 76, - "commanded.throttle.position", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 82, - "ethanol.fuel.percentage", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 90, - "accelerator.pedal.position", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 91, - "hybrid.battery-pack.remaining.life", - 0, - 0, - UNIT::INVALID, - 5.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 92, - "engine.oil.temperature", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 94, - "engine.fuel.rate", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} -, {std::make_shared(diagnostic_message_t{ - 99, - "engine.torque", - 0, - 0, - UNIT::INVALID, - 1.00000f, - decoder_t::decode_obd2_response, - nullptr, - true, - false - })} - - } // end diagnostic_messages_ vector - })} // end message_set entry - } // end message_set vector -{ - for(std::shared_ptr cms: message_set_) - { - std::vector> messages_definition = cms->get_messages_definition(); - for(std::shared_ptr cmd : messages_definition) - { - cmd->set_parent(cms); - std::vector> signals = cmd->get_signals(); - for(std::shared_ptr sig: signals) - { - sig->set_parent(cmd); - } - } - - std::vector> diagnostic_messages = cms->get_diagnostic_messages(); - for(std::shared_ptr dm : diagnostic_messages) - { - dm->set_parent(cms); - } - } - } - -const std::string application_t::get_diagnostic_bus() const -{ - return "hs"; -} - - diff --git a/examples/agl-vcar/signals.json b/examples/agl-vcar/signals.json index c1542eba..f3ca23d5 100644 --- a/examples/agl-vcar/signals.json +++ b/examples/agl-vcar/signals.json @@ -1,530 +1,1063 @@ -{ "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" + } + ] } diff --git a/plugins/default-signals.cpp b/plugins/default-signals.cpp index b38f168c..5d7629d1 100644 --- a/plugins/default-signals.cpp +++ b/plugins/default-signals.cpp @@ -569,6 +569,76 @@ std::shared_ptr cms = std::make_shared(message_set })} } // end signals vector })} // end message_definition entry +, {std::make_shared(message_definition_t{"hs",0x3DA,"",8,2,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })} + } // end signals vector + })} // end message_definition entry , {std::make_shared(message_definition_t{"hs",0x3E9,"",8,0,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ @@ -849,6 +919,609 @@ std::shared_ptr cms = std::make_shared(message_set })} } // end signals vector })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",130306,"Wind.Data",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rad"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "m/s"// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",61442,"ETC1",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })} + } // end signals vector + })} // end message_definition entry +, {std::make_shared(message_definition_t{"j1939",61444,"EEC1",8,8,frequency_clock_t(5.00000f),true, + { // beginning signals vector + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "%"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + "rpm"// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(0),// signed + -1,// bit_sign_position + ""// unit + })}, + {std::make_shared (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(false, 0),// multiplex + static_cast(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{ diff --git a/test/afb-test/fixtures/testFilter01pass-FD.canreplay b/test/afb-test/fixtures/testFilter01pass-FD.canreplay new file mode 100644 index 00000000..dd9772b9 --- /dev/null +++ b/test/afb-test/fixtures/testFilter01pass-FD.canreplay @@ -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 diff --git a/test/afb-test/fixtures/testFilter01pass.canreplay b/test/afb-test/fixtures/testFilter01pass.canreplay index 2f6cd861..dfb6b14e 100644 --- a/test/afb-test/fixtures/testFilter01pass.canreplay +++ b/test/afb-test/fixtures/testFilter01pass.canreplay @@ -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 -- cgit 1.2.3-korg