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,"",8,4,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,"",8,2050,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,"",8,2,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,"",8,2,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,"",8,2,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,"",8,2,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 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,18,frequency_clock_t(5.00000f),true,
453 { // beginning signals vector
454 {std::make_shared<signal_t> (signal_t{
455 "Eng.Momentary.Overspeed.Enable",// generic_name
462 frequency_clock_t(0.00000f),// frequency
464 false,// force_send_changed
466 {0,"MomentaryEngOverspeedIsDisabled"},
467 {1,"MomentaryEngOverspeedIsEnabled"},
472 decoder_t::decode_state,// decoder
475 std::make_pair<bool, int>(false, 0),// multiplex
480 {std::make_shared<signal_t> (signal_t{
481 "Momentary.Eng.Max.Power.Enable",// generic_name
488 frequency_clock_t(0.00000f),// frequency
490 false,// force_send_changed
493 {1,"mmntarilyRqingMaxPowerAvailable"},
495 {0,"notRqingMaxPowerAvailable"}
498 decoder_t::decode_state,// decoder
501 std::make_pair<bool, int>(false, 0),// multiplex
506 {std::make_shared<signal_t> (signal_t{
507 "Percent.Clutch.Slip",// generic_name
514 frequency_clock_t(0.00000f),// frequency
516 false,// force_send_changed
523 std::make_pair<bool, int>(false, 0),// multiplex
528 {std::make_shared<signal_t> (signal_t{
529 "Progressive.Shift.Disable",// generic_name
536 frequency_clock_t(0.00000f),// frequency
538 false,// force_send_changed
540 {1,"ProgressiveShiftIsDisabled"},
541 {0,"ProgressiveShiftIsNotDisabled"},
546 decoder_t::decode_state,// decoder
549 std::make_pair<bool, int>(false, 0),// multiplex
554 {std::make_shared<signal_t> (signal_t{
555 "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
562 frequency_clock_t(0.00000f),// frequency
564 false,// force_send_changed
571 std::make_pair<bool, int>(false, 0),// multiplex
576 {std::make_shared<signal_t> (signal_t{
577 "Trans.Driveline.Engaged",// generic_name
584 frequency_clock_t(0.00000f),// frequency
586 false,// force_send_changed
588 {0,"DrivelineDisengaged"},
589 {1,"DrivelineEngaged"},
594 decoder_t::decode_state,// decoder
597 std::make_pair<bool, int>(false, 0),// multiplex
602 {std::make_shared<signal_t> (signal_t{
603 "Trans.Input.Shaft.Speed",// generic_name
610 frequency_clock_t(0.00000f),// frequency
612 false,// force_send_changed
619 std::make_pair<bool, int>(false, 0),// multiplex
624 {std::make_shared<signal_t> (signal_t{
625 "Trans.Output.Shaft.Speed",// generic_name
632 frequency_clock_t(0.00000f),// frequency
634 false,// force_send_changed
641 std::make_pair<bool, int>(false, 0),// multiplex
646 {std::make_shared<signal_t> (signal_t{
647 "Trans.Shift.In.Process",// generic_name
654 frequency_clock_t(0.00000f),// frequency
656 false,// force_send_changed
660 {1,"ShiftInProcess"},
661 {0,"ShiftIsNotInProcess"}
664 decoder_t::decode_state,// decoder
667 std::make_pair<bool, int>(false, 0),// multiplex
672 {std::make_shared<signal_t> (signal_t{
673 "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
680 frequency_clock_t(0.00000f),// frequency
682 false,// force_send_changed
686 {1,"TransitionIsInProcess"},
687 {0,"TransitionIsNotInProcess"}
690 decoder_t::decode_state,// decoder
693 std::make_pair<bool, int>(false, 0),// multiplex
698 {std::make_shared<signal_t> (signal_t{
699 "Trns.Trque.Converter.Lockup.Engaged",// generic_name
706 frequency_clock_t(0.00000f),// frequency
708 false,// force_send_changed
712 {0,"TorqueConverterLockupDisengaged"},
713 {1,"TorqueConverterLockupEngaged"}
716 decoder_t::decode_state,// decoder
719 std::make_pair<bool, int>(false, 0),// multiplex
724 } // end signals vector
725 })} // end message_definition entry
726 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,18,frequency_clock_t(5.00000f),true,
727 { // beginning signals vector
728 {std::make_shared<signal_t> (signal_t{
729 "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
736 frequency_clock_t(0.00000f),// frequency
738 false,// force_send_changed
743 {8,"1111NotAvailable"}
746 decoder_t::decode_state,// decoder
749 std::make_pair<bool, int>(false, 0),// multiplex
754 {std::make_shared<signal_t> (signal_t{
755 "Actual.Eng.Percent.Torque",// generic_name
762 frequency_clock_t(0.00000f),// frequency
764 false,// force_send_changed
771 std::make_pair<bool, int>(false, 0),// multiplex
776 {std::make_shared<signal_t> (signal_t{
777 "Drivers.Demand.Eng.Percent.Torque",// generic_name
784 frequency_clock_t(0.00000f),// frequency
786 false,// force_send_changed
793 std::make_pair<bool, int>(false, 0),// multiplex
798 {std::make_shared<signal_t> (signal_t{
799 "Eng.Demand.Percent.Torque",// generic_name
806 frequency_clock_t(0.00000f),// frequency
808 false,// force_send_changed
815 std::make_pair<bool, int>(false, 0),// multiplex
820 {std::make_shared<signal_t> (signal_t{
821 "Eng.Speed",// generic_name
828 frequency_clock_t(0.00000f),// frequency
830 false,// force_send_changed
837 std::make_pair<bool, int>(false, 0),// multiplex
842 {std::make_shared<signal_t> (signal_t{
843 "Eng.Starter.Mode",// generic_name
850 frequency_clock_t(0.00000f),// frequency
852 false,// force_send_changed
858 {2,"starterActiveGearEngaged"},
859 {1,"starterActiveGearNotEngaged"},
860 {12,"starterInhibitedReasonUnknown"},
861 {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
862 {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
863 {5,"strtrInhbtdDTEngNtReadyForStart"},
864 {7,"strtrInhbtdDToActiveImmobilizer"},
865 {4,"strtrInhbtdDToEngAlreadyRunning"},
866 {8,"strtrInhbtdDueToStarterOvertemp"}
869 decoder_t::decode_state,// decoder
872 std::make_pair<bool, int>(false, 0),// multiplex
877 {std::make_shared<signal_t> (signal_t{
878 "Eng.Torque.Mode",// generic_name
885 frequency_clock_t(0.00000f),// frequency
887 false,// force_send_changed
891 {1,"Accelerator pedal/operator selec"},
892 {10,"Braking system"},
893 {2,"Cruise control"},
894 {9,"High speed governor"},
895 {0,"Low idle governor/no request (de"},
896 {15,"Not available"},
898 {11,"Remote accelerator"},
899 {4,"Road speed governor"},
900 {8,"Torque limiting"},
901 {6,"Transmission control"}
904 decoder_t::decode_state,// decoder
907 std::make_pair<bool, int>(false, 0),// multiplex
912 {std::make_shared<signal_t> (signal_t{
913 "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
920 frequency_clock_t(0.00000f),// frequency
922 false,// force_send_changed
929 std::make_pair<bool, int>(false, 0),// multiplex
934 } // end signals vector
935 })} // end message_definition entry
936 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,18,frequency_clock_t(5.00000f),true,
937 { // beginning signals vector
938 {std::make_shared<signal_t> (signal_t{
939 "Lateral.Acceleration",// generic_name
942 0.000488281f,// factor
946 frequency_clock_t(0.00000f),// frequency
948 false,// force_send_changed
955 std::make_pair<bool, int>(false, 0),// multiplex
960 {std::make_shared<signal_t> (signal_t{
961 "Longitudinal.Acceleration",// generic_name
968 frequency_clock_t(0.00000f),// frequency
970 false,// force_send_changed
977 std::make_pair<bool, int>(false, 0),// multiplex
982 {std::make_shared<signal_t> (signal_t{
983 "Steer.Wheel.Angle",// generic_name
986 0.000976562f,// factor
990 frequency_clock_t(0.00000f),// frequency
992 false,// force_send_changed
999 std::make_pair<bool, int>(false, 0),// multiplex
1004 {std::make_shared<signal_t> (signal_t{
1005 "Steer.Wheel.Angle.Sensor.Type",// generic_name
1012 frequency_clock_t(0.00000f),// frequency
1014 false,// force_send_changed
1016 {1,"AbsMeasuringPrinciple"},
1018 {0,"RelativeMeasuringPrinciple"},
1022 decoder_t::decode_state,// decoder
1025 std::make_pair<bool, int>(false, 0),// multiplex
1030 {std::make_shared<signal_t> (signal_t{
1031 "Steer.Wheel.Turn.Counter",// generic_name
1038 frequency_clock_t(0.00000f),// frequency
1040 false,// force_send_changed
1047 std::make_pair<bool, int>(false, 0),// multiplex
1052 {std::make_shared<signal_t> (signal_t{
1053 "Yaw.Rate",// generic_name
1056 0.000122070f,// factor
1060 frequency_clock_t(0.00000f),// frequency
1062 false,// force_send_changed
1069 std::make_pair<bool, int>(false, 0),// multiplex
1074 } // end signals vector
1075 })} // end message_definition entry
1076 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,18,frequency_clock_t(5.00000f),true,
1077 { // beginning signals vector
1078 {std::make_shared<signal_t> (signal_t{
1079 "Front.Axle.Speed",// generic_name
1082 0.00390625f,// factor
1086 frequency_clock_t(0.00000f),// frequency
1088 false,// force_send_changed
1095 std::make_pair<bool, int>(false, 0),// multiplex
1100 {std::make_shared<signal_t> (signal_t{
1101 "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
1104 0.0625000f,// factor
1108 frequency_clock_t(0.00000f),// frequency
1110 false,// force_send_changed
1117 std::make_pair<bool, int>(false, 0),// multiplex
1122 {std::make_shared<signal_t> (signal_t{
1123 "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
1126 0.0625000f,// factor
1130 frequency_clock_t(0.00000f),// frequency
1132 false,// force_send_changed
1139 std::make_pair<bool, int>(false, 0),// multiplex
1144 {std::make_shared<signal_t> (signal_t{
1145 "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
1148 0.0625000f,// factor
1152 frequency_clock_t(0.00000f),// frequency
1154 false,// force_send_changed
1161 std::make_pair<bool, int>(false, 0),// multiplex
1166 {std::make_shared<signal_t> (signal_t{
1167 "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
1170 0.0625000f,// factor
1174 frequency_clock_t(0.00000f),// frequency
1176 false,// force_send_changed
1183 std::make_pair<bool, int>(false, 0),// multiplex
1188 {std::make_shared<signal_t> (signal_t{
1189 "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
1192 0.0625000f,// factor
1196 frequency_clock_t(0.00000f),// frequency
1198 false,// force_send_changed
1205 std::make_pair<bool, int>(false, 0),// multiplex
1210 {std::make_shared<signal_t> (signal_t{
1211 "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
1214 0.0625000f,// factor
1218 frequency_clock_t(0.00000f),// frequency
1220 false,// force_send_changed
1227 std::make_pair<bool, int>(false, 0),// multiplex
1232 } // end signals vector
1233 })} // end message_definition entry
1234 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,18,frequency_clock_t(5.00000f),true,
1235 { // beginning signals vector
1236 {std::make_shared<signal_t> (signal_t{
1237 "Eng.Total.Hours.Of.Operation",// generic_name
1240 0.0500000f,// factor
1244 frequency_clock_t(0.00000f),// frequency
1246 false,// force_send_changed
1253 std::make_pair<bool, int>(false, 0),// multiplex
1258 {std::make_shared<signal_t> (signal_t{
1259 "Eng.Total.Revolutions",// generic_name
1266 frequency_clock_t(0.00000f),// frequency
1268 false,// force_send_changed
1275 std::make_pair<bool, int>(false, 0),// multiplex
1280 } // end signals vector
1281 })} // end message_definition entry
1282 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,18,frequency_clock_t(5.00000f),true,
1283 { // beginning signals vector
1284 {std::make_shared<signal_t> (signal_t{
1285 "Eng.Coolant.Temp",// generic_name
1288 0.0312500f,// factor
1292 frequency_clock_t(0.00000f),// frequency
1294 false,// force_send_changed
1301 std::make_pair<bool, int>(false, 0),// multiplex
1306 {std::make_shared<signal_t> (signal_t{
1307 "Eng.Fuel.Temp1",// generic_name
1314 frequency_clock_t(0.00000f),// frequency
1316 false,// force_send_changed
1323 std::make_pair<bool, int>(false, 0),// multiplex
1328 {std::make_shared<signal_t> (signal_t{
1329 "Eng.Intercooler.Temp",// generic_name
1336 frequency_clock_t(0.00000f),// frequency
1338 false,// force_send_changed
1345 std::make_pair<bool, int>(false, 0),// multiplex
1350 {std::make_shared<signal_t> (signal_t{
1351 "Eng.Intercooler.Thermostat.Opening",// generic_name
1358 frequency_clock_t(0.00000f),// frequency
1360 false,// force_send_changed
1367 std::make_pair<bool, int>(false, 0),// multiplex
1372 {std::make_shared<signal_t> (signal_t{
1373 "Eng.Oil.Temp1",// generic_name
1376 0.0312500f,// factor
1380 frequency_clock_t(0.00000f),// frequency
1382 false,// force_send_changed
1389 std::make_pair<bool, int>(false, 0),// multiplex
1394 {std::make_shared<signal_t> (signal_t{
1395 "Eng.Turbo.Oil.Temp",// generic_name
1398 0.0312500f,// factor
1402 frequency_clock_t(0.00000f),// frequency
1404 false,// force_send_changed
1411 std::make_pair<bool, int>(false, 0),// multiplex
1416 } // end signals vector
1417 })} // end message_definition entry
1419 }, // end message_definition vector
1420 { // beginning diagnostic_messages_ vector
1421 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1428 decoder_t::decode_obd2_response,
1433 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1435 "engine.coolant.temperature",
1440 decoder_t::decode_obd2_response,
1445 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1452 decoder_t::decode_obd2_response,
1457 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1459 "intake.manifold.pressure",
1464 decoder_t::decode_obd2_response,
1469 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1476 decoder_t::decode_obd2_response,
1481 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1488 decoder_t::decode_obd2_response,
1493 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1495 "intake.air.temperature",
1500 decoder_t::decode_obd2_response,
1505 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1512 decoder_t::decode_obd2_response,
1517 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1519 "throttle.position",
1524 decoder_t::decode_obd2_response,
1529 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1536 decoder_t::decode_obd2_response,
1541 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1548 decoder_t::decode_obd2_response,
1553 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1560 decoder_t::decode_obd2_response,
1565 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1567 "barometric.pressure",
1572 decoder_t::decode_obd2_response,
1577 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1579 "ambient.air.temperature",
1584 decoder_t::decode_obd2_response,
1589 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1591 "commanded.throttle.position",
1596 decoder_t::decode_obd2_response,
1601 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1603 "ethanol.fuel.percentage",
1608 decoder_t::decode_obd2_response,
1613 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1615 "accelerator.pedal.position",
1620 decoder_t::decode_obd2_response,
1625 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1627 "hybrid.battery-pack.remaining.life",
1632 decoder_t::decode_obd2_response,
1637 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1639 "engine.oil.temperature",
1644 decoder_t::decode_obd2_response,
1649 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1656 decoder_t::decode_obd2_response,
1661 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1668 decoder_t::decode_obd2_response,
1674 } // end diagnostic_messages_ vector
1675 })} // end message_set entry
1676 } // end message_set vector
1678 for(std::shared_ptr<message_set_t> cms: message_set_)
1680 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
1681 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
1683 cmd->set_parent(cms);
1684 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
1685 for(std::shared_ptr<signal_t> sig: signals)
1687 sig->set_parent(cmd);
1691 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
1692 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
1694 dm->set_parent(cms);
1699 const std::string application_t::get_diagnostic_bus() const