1 #include "application.hpp"
2 #include "../can/can-decoder.hpp"
3 #include "../can/can-encoder.hpp"
5 application_t::application_t()
6 : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
8 {std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
9 { // beginning message_definition_ vector
10 {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",0,false,message_format_t::EXTENDED,frequency_clock_t(5.00000f),true,
11 { // beginning signals vector
12 {std::make_shared<signal_t> (signal_t{
13 "hvac.fan.speed",// generic_name
20 frequency_clock_t(0.00000f),// frequency
22 false,// force_send_changed
29 std::make_pair<bool, int>(false, 0),// multiplex
34 {std::make_shared<signal_t> (signal_t{
35 "hvac.temperature.left",// generic_name
42 frequency_clock_t(0.00000f),// frequency
44 false,// force_send_changed
51 std::make_pair<bool, int>(false, 0),// multiplex
56 {std::make_shared<signal_t> (signal_t{
57 "hvac.temperature.right",// generic_name
64 frequency_clock_t(0.00000f),// frequency
66 false,// force_send_changed
73 std::make_pair<bool, int>(false, 0),// multiplex
78 {std::make_shared<signal_t> (signal_t{
79 "hvac.temperature.average",// generic_name
86 frequency_clock_t(0.00000f),// frequency
88 false,// force_send_changed
95 std::make_pair<bool, int>(false, 0),// multiplex
100 } // end signals vector
101 })} // end message_definition entry
102 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",0,true,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
103 { // beginning signals vector
104 {std::make_shared<signal_t> (signal_t{
105 "engine.speed",// generic_name
112 frequency_clock_t(0.00000f),// frequency
114 false,// force_send_changed
121 std::make_pair<bool, int>(false, 0),// multiplex
126 {std::make_shared<signal_t> (signal_t{
127 "fuel.level.low",// generic_name
134 frequency_clock_t(0.00000f),// frequency
136 false,// force_send_changed
140 decoder_t::decode_boolean,// decoder
143 std::make_pair<bool, int>(false, 0),// multiplex
148 {std::make_shared<signal_t> (signal_t{
149 "fuel.level",// generic_name
156 frequency_clock_t(0.00000f),// frequency
158 false,// force_send_changed
165 std::make_pair<bool, int>(false, 0),// multiplex
170 } // end signals vector
171 })} // end message_definition entry
172 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
173 { // beginning signals vector
174 {std::make_shared<signal_t> (signal_t{
175 "vehicle.average.speed",// generic_name
182 frequency_clock_t(0.00000f),// frequency
184 false,// force_send_changed
191 std::make_pair<bool, int>(false, 0),// multiplex
196 } // end signals vector
197 })} // end message_definition entry
198 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
199 { // beginning signals vector
200 {std::make_shared<signal_t> (signal_t{
201 "engine.oil.temp",// generic_name
208 frequency_clock_t(0.00000f),// frequency
210 false,// force_send_changed
217 std::make_pair<bool, int>(false, 0),// multiplex
222 {std::make_shared<signal_t> (signal_t{
223 "engine.oil.temp.high",// generic_name
230 frequency_clock_t(0.00000f),// frequency
232 false,// force_send_changed
236 decoder_t::decode_boolean,// decoder
239 std::make_pair<bool, int>(false, 0),// multiplex
244 } // end signals vector
245 })} // end message_definition entry
246 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
247 { // beginning signals vector
248 {std::make_shared<signal_t> (signal_t{
249 "doors.boot.open",// generic_name
256 frequency_clock_t(0.00000f),// frequency
258 false,// force_send_changed
262 decoder_t::decode_boolean,// decoder
265 std::make_pair<bool, int>(false, 0),// multiplex
270 {std::make_shared<signal_t> (signal_t{
271 "doors.front_left.open",// generic_name
278 frequency_clock_t(0.00000f),// frequency
280 false,// force_send_changed
284 decoder_t::decode_boolean,// decoder
287 std::make_pair<bool, int>(false, 0),// multiplex
292 {std::make_shared<signal_t> (signal_t{
293 "doors.front_right.open",// generic_name
300 frequency_clock_t(0.00000f),// frequency
302 false,// force_send_changed
306 decoder_t::decode_boolean,// decoder
309 std::make_pair<bool, int>(false, 0),// multiplex
314 {std::make_shared<signal_t> (signal_t{
315 "doors.rear_left.open",// generic_name
322 frequency_clock_t(0.00000f),// frequency
324 false,// force_send_changed
328 decoder_t::decode_boolean,// decoder
331 std::make_pair<bool, int>(false, 0),// multiplex
336 {std::make_shared<signal_t> (signal_t{
337 "doors.rear_right.open",// generic_name
344 frequency_clock_t(0.00000f),// frequency
346 false,// force_send_changed
350 decoder_t::decode_boolean,// decoder
353 std::make_pair<bool, int>(false, 0),// multiplex
358 } // end signals vector
359 })} // end message_definition entry
360 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",0,false,message_format_t::STANDARD,frequency_clock_t(5.00000f),true,
361 { // beginning signals vector
362 {std::make_shared<signal_t> (signal_t{
363 "windows.front_left.open",// generic_name
370 frequency_clock_t(0.00000f),// frequency
372 false,// force_send_changed
376 decoder_t::decode_boolean,// decoder
379 std::make_pair<bool, int>(false, 0),// multiplex
384 {std::make_shared<signal_t> (signal_t{
385 "windows.front_right.open",// generic_name
392 frequency_clock_t(0.00000f),// frequency
394 false,// force_send_changed
398 decoder_t::decode_boolean,// decoder
401 std::make_pair<bool, int>(false, 0),// multiplex
406 {std::make_shared<signal_t> (signal_t{
407 "windows.rear_left.open",// generic_name
414 frequency_clock_t(0.00000f),// frequency
416 false,// force_send_changed
420 decoder_t::decode_boolean,// decoder
423 std::make_pair<bool, int>(false, 0),// multiplex
428 {std::make_shared<signal_t> (signal_t{
429 "windows.rear_right.open",// generic_name
436 frequency_clock_t(0.00000f),// frequency
438 false,// force_send_changed
442 decoder_t::decode_boolean,// decoder
445 std::make_pair<bool, int>(false, 0),// multiplex
450 } // end signals vector
451 })} // end message_definition entry
452 #ifdef USE_FEATURE_J1939
453 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
454 { // beginning signals vector
455 {std::make_shared<signal_t> (signal_t{
456 "Eng.Momentary.Overspeed.Enable",// generic_name
463 frequency_clock_t(0.00000f),// frequency
465 false,// force_send_changed
467 {0,"MomentaryEngOverspeedIsDisabled"},
468 {1,"MomentaryEngOverspeedIsEnabled"},
473 decoder_t::decode_state,// decoder
476 std::make_pair<bool, int>(false, 0),// multiplex
481 {std::make_shared<signal_t> (signal_t{
482 "Momentary.Eng.Max.Power.Enable",// generic_name
489 frequency_clock_t(0.00000f),// frequency
491 false,// force_send_changed
494 {1,"mmntarilyRqingMaxPowerAvailable"},
496 {0,"notRqingMaxPowerAvailable"}
499 decoder_t::decode_state,// decoder
502 std::make_pair<bool, int>(false, 0),// multiplex
507 {std::make_shared<signal_t> (signal_t{
508 "Percent.Clutch.Slip",// generic_name
515 frequency_clock_t(0.00000f),// frequency
517 false,// force_send_changed
524 std::make_pair<bool, int>(false, 0),// multiplex
529 {std::make_shared<signal_t> (signal_t{
530 "Progressive.Shift.Disable",// generic_name
537 frequency_clock_t(0.00000f),// frequency
539 false,// force_send_changed
541 {1,"ProgressiveShiftIsDisabled"},
542 {0,"ProgressiveShiftIsNotDisabled"},
547 decoder_t::decode_state,// decoder
550 std::make_pair<bool, int>(false, 0),// multiplex
555 {std::make_shared<signal_t> (signal_t{
556 "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
563 frequency_clock_t(0.00000f),// frequency
565 false,// force_send_changed
572 std::make_pair<bool, int>(false, 0),// multiplex
577 {std::make_shared<signal_t> (signal_t{
578 "Trans.Driveline.Engaged",// generic_name
585 frequency_clock_t(0.00000f),// frequency
587 false,// force_send_changed
589 {0,"DrivelineDisengaged"},
590 {1,"DrivelineEngaged"},
595 decoder_t::decode_state,// decoder
598 std::make_pair<bool, int>(false, 0),// multiplex
603 {std::make_shared<signal_t> (signal_t{
604 "Trans.Input.Shaft.Speed",// generic_name
611 frequency_clock_t(0.00000f),// frequency
613 false,// force_send_changed
620 std::make_pair<bool, int>(false, 0),// multiplex
625 {std::make_shared<signal_t> (signal_t{
626 "Trans.Output.Shaft.Speed",// generic_name
633 frequency_clock_t(0.00000f),// frequency
635 false,// force_send_changed
642 std::make_pair<bool, int>(false, 0),// multiplex
647 {std::make_shared<signal_t> (signal_t{
648 "Trans.Shift.In.Process",// generic_name
655 frequency_clock_t(0.00000f),// frequency
657 false,// force_send_changed
661 {1,"ShiftInProcess"},
662 {0,"ShiftIsNotInProcess"}
665 decoder_t::decode_state,// decoder
668 std::make_pair<bool, int>(false, 0),// multiplex
673 {std::make_shared<signal_t> (signal_t{
674 "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
681 frequency_clock_t(0.00000f),// frequency
683 false,// force_send_changed
687 {1,"TransitionIsInProcess"},
688 {0,"TransitionIsNotInProcess"}
691 decoder_t::decode_state,// decoder
694 std::make_pair<bool, int>(false, 0),// multiplex
699 {std::make_shared<signal_t> (signal_t{
700 "Trns.Trque.Converter.Lockup.Engaged",// generic_name
707 frequency_clock_t(0.00000f),// frequency
709 false,// force_send_changed
713 {0,"TorqueConverterLockupDisengaged"},
714 {1,"TorqueConverterLockupEngaged"}
717 decoder_t::decode_state,// decoder
720 std::make_pair<bool, int>(false, 0),// multiplex
725 } // end signals vector
726 })} // end message_definition entry
727 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
728 { // beginning signals vector
729 {std::make_shared<signal_t> (signal_t{
730 "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
737 frequency_clock_t(0.00000f),// frequency
739 false,// force_send_changed
744 {8,"1111NotAvailable"}
747 decoder_t::decode_state,// decoder
750 std::make_pair<bool, int>(false, 0),// multiplex
755 {std::make_shared<signal_t> (signal_t{
756 "Actual.Eng.Percent.Torque",// generic_name
763 frequency_clock_t(0.00000f),// frequency
765 false,// force_send_changed
772 std::make_pair<bool, int>(false, 0),// multiplex
777 {std::make_shared<signal_t> (signal_t{
778 "Drivers.Demand.Eng.Percent.Torque",// generic_name
785 frequency_clock_t(0.00000f),// frequency
787 false,// force_send_changed
794 std::make_pair<bool, int>(false, 0),// multiplex
799 {std::make_shared<signal_t> (signal_t{
800 "Eng.Demand.Percent.Torque",// generic_name
807 frequency_clock_t(0.00000f),// frequency
809 false,// force_send_changed
816 std::make_pair<bool, int>(false, 0),// multiplex
821 {std::make_shared<signal_t> (signal_t{
822 "Eng.Speed",// generic_name
829 frequency_clock_t(0.00000f),// frequency
831 false,// force_send_changed
838 std::make_pair<bool, int>(false, 0),// multiplex
843 {std::make_shared<signal_t> (signal_t{
844 "Eng.Starter.Mode",// generic_name
851 frequency_clock_t(0.00000f),// frequency
853 false,// force_send_changed
859 {2,"starterActiveGearEngaged"},
860 {1,"starterActiveGearNotEngaged"},
861 {12,"starterInhibitedReasonUnknown"},
862 {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
863 {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
864 {5,"strtrInhbtdDTEngNtReadyForStart"},
865 {7,"strtrInhbtdDToActiveImmobilizer"},
866 {4,"strtrInhbtdDToEngAlreadyRunning"},
867 {8,"strtrInhbtdDueToStarterOvertemp"}
870 decoder_t::decode_state,// decoder
873 std::make_pair<bool, int>(false, 0),// multiplex
878 {std::make_shared<signal_t> (signal_t{
879 "Eng.Torque.Mode",// generic_name
886 frequency_clock_t(0.00000f),// frequency
888 false,// force_send_changed
892 {1,"Accelerator pedal/operator selec"},
893 {10,"Braking system"},
894 {2,"Cruise control"},
895 {9,"High speed governor"},
896 {0,"Low idle governor/no request (de"},
897 {15,"Not available"},
899 {11,"Remote accelerator"},
900 {4,"Road speed governor"},
901 {8,"Torque limiting"},
902 {6,"Transmission control"}
905 decoder_t::decode_state,// decoder
908 std::make_pair<bool, int>(false, 0),// multiplex
913 {std::make_shared<signal_t> (signal_t{
914 "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
921 frequency_clock_t(0.00000f),// frequency
923 false,// force_send_changed
930 std::make_pair<bool, int>(false, 0),// multiplex
935 } // end signals vector
936 })} // end message_definition entry
937 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
938 { // beginning signals vector
939 {std::make_shared<signal_t> (signal_t{
940 "Lateral.Acceleration",// generic_name
943 0.000488281f,// factor
947 frequency_clock_t(0.00000f),// frequency
949 false,// force_send_changed
956 std::make_pair<bool, int>(false, 0),// multiplex
961 {std::make_shared<signal_t> (signal_t{
962 "Longitudinal.Acceleration",// generic_name
969 frequency_clock_t(0.00000f),// frequency
971 false,// force_send_changed
978 std::make_pair<bool, int>(false, 0),// multiplex
983 {std::make_shared<signal_t> (signal_t{
984 "Steer.Wheel.Angle",// generic_name
987 0.000976562f,// factor
991 frequency_clock_t(0.00000f),// frequency
993 false,// force_send_changed
1000 std::make_pair<bool, int>(false, 0),// multiplex
1005 {std::make_shared<signal_t> (signal_t{
1006 "Steer.Wheel.Angle.Sensor.Type",// generic_name
1013 frequency_clock_t(0.00000f),// frequency
1015 false,// force_send_changed
1017 {1,"AbsMeasuringPrinciple"},
1019 {0,"RelativeMeasuringPrinciple"},
1023 decoder_t::decode_state,// decoder
1026 std::make_pair<bool, int>(false, 0),// multiplex
1031 {std::make_shared<signal_t> (signal_t{
1032 "Steer.Wheel.Turn.Counter",// generic_name
1039 frequency_clock_t(0.00000f),// frequency
1041 false,// force_send_changed
1048 std::make_pair<bool, int>(false, 0),// multiplex
1053 {std::make_shared<signal_t> (signal_t{
1054 "Yaw.Rate",// generic_name
1057 0.000122070f,// factor
1061 frequency_clock_t(0.00000f),// frequency
1063 false,// force_send_changed
1070 std::make_pair<bool, int>(false, 0),// multiplex
1075 } // end signals vector
1076 })} // end message_definition entry
1077 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
1078 { // beginning signals vector
1079 {std::make_shared<signal_t> (signal_t{
1080 "Front.Axle.Speed",// generic_name
1083 0.00390625f,// factor
1087 frequency_clock_t(0.00000f),// frequency
1089 false,// force_send_changed
1096 std::make_pair<bool, int>(false, 0),// multiplex
1101 {std::make_shared<signal_t> (signal_t{
1102 "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
1105 0.0625000f,// factor
1109 frequency_clock_t(0.00000f),// frequency
1111 false,// force_send_changed
1118 std::make_pair<bool, int>(false, 0),// multiplex
1123 {std::make_shared<signal_t> (signal_t{
1124 "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
1127 0.0625000f,// factor
1131 frequency_clock_t(0.00000f),// frequency
1133 false,// force_send_changed
1140 std::make_pair<bool, int>(false, 0),// multiplex
1145 {std::make_shared<signal_t> (signal_t{
1146 "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
1149 0.0625000f,// factor
1153 frequency_clock_t(0.00000f),// frequency
1155 false,// force_send_changed
1162 std::make_pair<bool, int>(false, 0),// multiplex
1167 {std::make_shared<signal_t> (signal_t{
1168 "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
1171 0.0625000f,// factor
1175 frequency_clock_t(0.00000f),// frequency
1177 false,// force_send_changed
1184 std::make_pair<bool, int>(false, 0),// multiplex
1189 {std::make_shared<signal_t> (signal_t{
1190 "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
1193 0.0625000f,// factor
1197 frequency_clock_t(0.00000f),// frequency
1199 false,// force_send_changed
1206 std::make_pair<bool, int>(false, 0),// multiplex
1211 {std::make_shared<signal_t> (signal_t{
1212 "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
1215 0.0625000f,// factor
1219 frequency_clock_t(0.00000f),// frequency
1221 false,// force_send_changed
1228 std::make_pair<bool, int>(false, 0),// multiplex
1233 } // end signals vector
1234 })} // end message_definition entry
1235 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
1236 { // beginning signals vector
1237 {std::make_shared<signal_t> (signal_t{
1238 "Eng.Total.Hours.Of.Operation",// generic_name
1241 0.0500000f,// factor
1245 frequency_clock_t(0.00000f),// frequency
1247 false,// force_send_changed
1254 std::make_pair<bool, int>(false, 0),// multiplex
1259 {std::make_shared<signal_t> (signal_t{
1260 "Eng.Total.Revolutions",// generic_name
1267 frequency_clock_t(0.00000f),// frequency
1269 false,// force_send_changed
1276 std::make_pair<bool, int>(false, 0),// multiplex
1281 } // end signals vector
1282 })} // end message_definition entry
1283 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,false,message_format_t::J1939,frequency_clock_t(5.00000f),true,
1284 { // beginning signals vector
1285 {std::make_shared<signal_t> (signal_t{
1286 "Eng.Coolant.Temp",// generic_name
1289 0.0312500f,// factor
1293 frequency_clock_t(0.00000f),// frequency
1295 false,// force_send_changed
1302 std::make_pair<bool, int>(false, 0),// multiplex
1307 {std::make_shared<signal_t> (signal_t{
1308 "Eng.Fuel.Temp1",// generic_name
1315 frequency_clock_t(0.00000f),// frequency
1317 false,// force_send_changed
1324 std::make_pair<bool, int>(false, 0),// multiplex
1329 {std::make_shared<signal_t> (signal_t{
1330 "Eng.Intercooler.Temp",// generic_name
1337 frequency_clock_t(0.00000f),// frequency
1339 false,// force_send_changed
1346 std::make_pair<bool, int>(false, 0),// multiplex
1351 {std::make_shared<signal_t> (signal_t{
1352 "Eng.Intercooler.Thermostat.Opening",// generic_name
1359 frequency_clock_t(0.00000f),// frequency
1361 false,// force_send_changed
1368 std::make_pair<bool, int>(false, 0),// multiplex
1373 {std::make_shared<signal_t> (signal_t{
1374 "Eng.Oil.Temp1",// generic_name
1377 0.0312500f,// factor
1381 frequency_clock_t(0.00000f),// frequency
1383 false,// force_send_changed
1390 std::make_pair<bool, int>(false, 0),// multiplex
1395 {std::make_shared<signal_t> (signal_t{
1396 "Eng.Turbo.Oil.Temp",// generic_name
1399 0.0312500f,// factor
1403 frequency_clock_t(0.00000f),// frequency
1405 false,// force_send_changed
1412 std::make_pair<bool, int>(false, 0),// multiplex
1417 } // end signals vector
1418 })} // end message_definition entry
1420 }, // end message_definition vector
1421 { // beginning diagnostic_messages_ vector
1422 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1429 decoder_t::decode_obd2_response,
1434 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1436 "engine.coolant.temperature",
1441 decoder_t::decode_obd2_response,
1446 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1453 decoder_t::decode_obd2_response,
1458 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1460 "intake.manifold.pressure",
1465 decoder_t::decode_obd2_response,
1470 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1477 decoder_t::decode_obd2_response,
1482 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1489 decoder_t::decode_obd2_response,
1494 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1496 "intake.air.temperature",
1501 decoder_t::decode_obd2_response,
1506 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1513 decoder_t::decode_obd2_response,
1518 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1520 "throttle.position",
1525 decoder_t::decode_obd2_response,
1530 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1537 decoder_t::decode_obd2_response,
1542 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1549 decoder_t::decode_obd2_response,
1554 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1561 decoder_t::decode_obd2_response,
1566 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1568 "barometric.pressure",
1573 decoder_t::decode_obd2_response,
1578 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1580 "ambient.air.temperature",
1585 decoder_t::decode_obd2_response,
1590 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1592 "commanded.throttle.position",
1597 decoder_t::decode_obd2_response,
1602 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1604 "ethanol.fuel.percentage",
1609 decoder_t::decode_obd2_response,
1614 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1616 "accelerator.pedal.position",
1621 decoder_t::decode_obd2_response,
1626 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1628 "hybrid.battery-pack.remaining.life",
1633 decoder_t::decode_obd2_response,
1638 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1640 "engine.oil.temperature",
1645 decoder_t::decode_obd2_response,
1650 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1657 decoder_t::decode_obd2_response,
1662 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1669 decoder_t::decode_obd2_response,
1675 } // end diagnostic_messages_ vector
1676 })} // end message_set entry
1677 } // end message_set vector
1679 for(std::shared_ptr<message_set_t> cms: message_set_)
1681 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
1682 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
1684 cmd->set_parent(cms);
1685 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
1686 for(std::shared_ptr<signal_t> sig: signals)
1688 sig->set_parent(cmd);
1692 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
1693 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
1695 dm->set_parent(cms);
1700 const std::string application_t::get_diagnostic_bus() const