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",0x21,"",8,2,frequency_clock_t(5.00000f),true,
11 { // beginning signals vector
12 {std::make_shared<signal_t> (signal_t{
13 "steering_wheel.cruise.cancel",// generic_name
20 frequency_clock_t(0.00000f),// frequency
22 false,// force_send_changed
26 decoder_t::decode_boolean,// decoder
29 std::make_pair<bool, int>(false, 0),// multiplex
30 false,// is_big_endian
34 {std::make_shared<signal_t> (signal_t{
35 "steering_wheel.cruise.distance",// generic_name
42 frequency_clock_t(0.00000f),// frequency
44 false,// force_send_changed
48 decoder_t::decode_boolean,// decoder
51 std::make_pair<bool, int>(false, 0),// multiplex
52 false,// is_big_endian
56 {std::make_shared<signal_t> (signal_t{
57 "steering_wheel.cruise.enable",// generic_name
64 frequency_clock_t(0.00000f),// frequency
66 false,// force_send_changed
70 decoder_t::decode_boolean,// decoder
73 std::make_pair<bool, int>(false, 0),// multiplex
74 false,// is_big_endian
78 {std::make_shared<signal_t> (signal_t{
79 "steering_wheel.cruise.limit",// generic_name
86 frequency_clock_t(0.00000f),// frequency
88 false,// force_send_changed
92 decoder_t::decode_boolean,// decoder
95 std::make_pair<bool, int>(false, 0),// multiplex
96 false,// is_big_endian
100 {std::make_shared<signal_t> (signal_t{
101 "steering_wheel.cruise.resume",// generic_name
108 frequency_clock_t(0.00000f),// frequency
110 false,// force_send_changed
114 decoder_t::decode_boolean,// decoder
117 std::make_pair<bool, int>(false, 0),// multiplex
118 false,// is_big_endian
122 {std::make_shared<signal_t> (signal_t{
123 "steering_wheel.cruise.set",// generic_name
130 frequency_clock_t(0.00000f),// frequency
132 false,// force_send_changed
136 decoder_t::decode_boolean,// decoder
139 std::make_pair<bool, int>(false, 0),// multiplex
140 false,// is_big_endian
144 {std::make_shared<signal_t> (signal_t{
145 "steering_wheel.horn",// generic_name
152 frequency_clock_t(0.00000f),// frequency
154 false,// force_send_changed
158 decoder_t::decode_boolean,// decoder
161 std::make_pair<bool, int>(false, 0),// multiplex
162 false,// is_big_endian
166 {std::make_shared<signal_t> (signal_t{
167 "steering_wheel.info",// generic_name
174 frequency_clock_t(0.00000f),// frequency
176 false,// force_send_changed
180 decoder_t::decode_boolean,// decoder
183 std::make_pair<bool, int>(false, 0),// multiplex
184 false,// is_big_endian
188 {std::make_shared<signal_t> (signal_t{
189 "steering_wheel.lane_departure_warning",// generic_name
196 frequency_clock_t(0.00000f),// frequency
198 false,// force_send_changed
202 decoder_t::decode_boolean,// decoder
205 std::make_pair<bool, int>(false, 0),// multiplex
206 false,// is_big_endian
210 {std::make_shared<signal_t> (signal_t{
211 "steering_wheel.mode",// generic_name
218 frequency_clock_t(0.00000f),// frequency
220 false,// force_send_changed
224 decoder_t::decode_boolean,// decoder
227 std::make_pair<bool, int>(false, 0),// multiplex
228 false,// is_big_endian
232 {std::make_shared<signal_t> (signal_t{
233 "steering_wheel.next",// generic_name
240 frequency_clock_t(0.00000f),// frequency
242 false,// force_send_changed
246 decoder_t::decode_boolean,// decoder
249 std::make_pair<bool, int>(false, 0),// multiplex
250 false,// is_big_endian
254 {std::make_shared<signal_t> (signal_t{
255 "steering_wheel.phone.call",// generic_name
262 frequency_clock_t(0.00000f),// frequency
264 false,// force_send_changed
268 decoder_t::decode_boolean,// decoder
271 std::make_pair<bool, int>(false, 0),// multiplex
272 false,// is_big_endian
276 {std::make_shared<signal_t> (signal_t{
277 "steering_wheel.phone.hangup",// generic_name
284 frequency_clock_t(0.00000f),// frequency
286 false,// force_send_changed
290 decoder_t::decode_boolean,// decoder
293 std::make_pair<bool, int>(false, 0),// multiplex
294 false,// is_big_endian
298 {std::make_shared<signal_t> (signal_t{
299 "steering_wheel.previous",// generic_name
306 frequency_clock_t(0.00000f),// frequency
308 false,// force_send_changed
312 decoder_t::decode_boolean,// decoder
315 std::make_pair<bool, int>(false, 0),// multiplex
316 false,// is_big_endian
320 {std::make_shared<signal_t> (signal_t{
321 "steering_wheel.voice",// generic_name
328 frequency_clock_t(0.00000f),// frequency
330 false,// force_send_changed
334 decoder_t::decode_boolean,// decoder
337 std::make_pair<bool, int>(false, 0),// multiplex
338 false,// is_big_endian
342 {std::make_shared<signal_t> (signal_t{
343 "steering_wheel.volume.down",// generic_name
350 frequency_clock_t(0.00000f),// frequency
352 false,// force_send_changed
356 decoder_t::decode_boolean,// decoder
359 std::make_pair<bool, int>(false, 0),// multiplex
360 false,// is_big_endian
364 {std::make_shared<signal_t> (signal_t{
365 "steering_wheel.volume.mute",// generic_name
372 frequency_clock_t(0.00000f),// frequency
374 false,// force_send_changed
378 decoder_t::decode_boolean,// decoder
381 std::make_pair<bool, int>(false, 0),// multiplex
382 false,// is_big_endian
386 {std::make_shared<signal_t> (signal_t{
387 "steering_wheel.volume.up",// generic_name
394 frequency_clock_t(0.00000f),// frequency
396 false,// force_send_changed
400 decoder_t::decode_boolean,// decoder
403 std::make_pair<bool, int>(false, 0),// multiplex
404 false,// is_big_endian
408 } // end signals vector
409 })} // end message_definition entry
410 , {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true,
411 { // beginning signals vector
412 {std::make_shared<signal_t> (signal_t{
413 "hvac.fan.speed",// generic_name
420 frequency_clock_t(0.00000f),// frequency
422 false,// force_send_changed
429 std::make_pair<bool, int>(false, 0),// multiplex
430 false,// is_big_endian
434 {std::make_shared<signal_t> (signal_t{
435 "hvac.temperature.left",// generic_name
442 frequency_clock_t(0.00000f),// frequency
444 false,// force_send_changed
451 std::make_pair<bool, int>(false, 0),// multiplex
452 false,// is_big_endian
456 {std::make_shared<signal_t> (signal_t{
457 "hvac.temperature.right",// generic_name
464 frequency_clock_t(0.00000f),// frequency
466 false,// force_send_changed
473 std::make_pair<bool, int>(false, 0),// multiplex
474 false,// is_big_endian
478 {std::make_shared<signal_t> (signal_t{
479 "hvac.temperature.average",// generic_name
486 frequency_clock_t(0.00000f),// frequency
488 false,// force_send_changed
495 std::make_pair<bool, int>(false, 0),// multiplex
496 false,// is_big_endian
500 } // end signals vector
501 })} // end message_definition entry
502 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,128,true,frequency_clock_t(5.00000f),true,
503 { // beginning signals vector
504 {std::make_shared<signal_t> (signal_t{
505 "engine.speed",// generic_name
512 frequency_clock_t(0.00000f),// frequency
514 false,// force_send_changed
521 std::make_pair<bool, int>(false, 0),// multiplex
522 false,// is_big_endian
526 {std::make_shared<signal_t> (signal_t{
527 "fuel.level.low",// generic_name
534 frequency_clock_t(0.00000f),// frequency
536 false,// force_send_changed
540 decoder_t::decode_boolean,// decoder
543 std::make_pair<bool, int>(false, 0),// multiplex
544 false,// is_big_endian
548 {std::make_shared<signal_t> (signal_t{
549 "fuel.level",// generic_name
556 frequency_clock_t(0.00000f),// frequency
558 false,// force_send_changed
565 std::make_pair<bool, int>(false, 0),// multiplex
566 false,// is_big_endian
570 } // end signals vector
571 })} // end message_definition entry
572 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,0,true,frequency_clock_t(5.00000f),true,
573 { // beginning signals vector
574 {std::make_shared<signal_t> (signal_t{
575 "vehicle.average.speed",// generic_name
582 frequency_clock_t(0.00000f),// frequency
584 false,// force_send_changed
591 std::make_pair<bool, int>(false, 0),// multiplex
592 false,// is_big_endian
596 } // end signals vector
597 })} // end message_definition entry
598 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,0,true,frequency_clock_t(5.00000f),true,
599 { // beginning signals vector
600 {std::make_shared<signal_t> (signal_t{
601 "engine.oil.temp",// generic_name
608 frequency_clock_t(0.00000f),// frequency
610 false,// force_send_changed
617 std::make_pair<bool, int>(false, 0),// multiplex
618 false,// is_big_endian
622 {std::make_shared<signal_t> (signal_t{
623 "engine.oil.temp.high",// generic_name
630 frequency_clock_t(0.00000f),// frequency
632 false,// force_send_changed
636 decoder_t::decode_boolean,// decoder
639 std::make_pair<bool, int>(false, 0),// multiplex
640 false,// is_big_endian
644 } // end signals vector
645 })} // end message_definition entry
646 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,0,true,frequency_clock_t(5.00000f),true,
647 { // beginning signals vector
648 {std::make_shared<signal_t> (signal_t{
649 "doors.boot.open",// generic_name
656 frequency_clock_t(0.00000f),// frequency
658 false,// force_send_changed
662 decoder_t::decode_boolean,// decoder
665 std::make_pair<bool, int>(false, 0),// multiplex
666 false,// is_big_endian
670 {std::make_shared<signal_t> (signal_t{
671 "doors.front_left.open",// generic_name
678 frequency_clock_t(0.00000f),// frequency
680 false,// force_send_changed
684 decoder_t::decode_boolean,// decoder
687 std::make_pair<bool, int>(false, 0),// multiplex
688 false,// is_big_endian
692 {std::make_shared<signal_t> (signal_t{
693 "doors.front_right.open",// generic_name
700 frequency_clock_t(0.00000f),// frequency
702 false,// force_send_changed
706 decoder_t::decode_boolean,// decoder
709 std::make_pair<bool, int>(false, 0),// multiplex
710 false,// is_big_endian
714 {std::make_shared<signal_t> (signal_t{
715 "doors.rear_left.open",// generic_name
722 frequency_clock_t(0.00000f),// frequency
724 false,// force_send_changed
728 decoder_t::decode_boolean,// decoder
731 std::make_pair<bool, int>(false, 0),// multiplex
732 false,// is_big_endian
736 {std::make_shared<signal_t> (signal_t{
737 "doors.rear_right.open",// generic_name
744 frequency_clock_t(0.00000f),// frequency
746 false,// force_send_changed
750 decoder_t::decode_boolean,// decoder
753 std::make_pair<bool, int>(false, 0),// multiplex
754 false,// is_big_endian
758 } // end signals vector
759 })} // end message_definition entry
760 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,0,true,frequency_clock_t(5.00000f),true,
761 { // beginning signals vector
762 {std::make_shared<signal_t> (signal_t{
763 "windows.front_left.open",// generic_name
770 frequency_clock_t(0.00000f),// frequency
772 false,// force_send_changed
776 decoder_t::decode_boolean,// decoder
779 std::make_pair<bool, int>(false, 0),// multiplex
780 false,// is_big_endian
784 {std::make_shared<signal_t> (signal_t{
785 "windows.front_right.open",// generic_name
792 frequency_clock_t(0.00000f),// frequency
794 false,// force_send_changed
798 decoder_t::decode_boolean,// decoder
801 std::make_pair<bool, int>(false, 0),// multiplex
802 false,// is_big_endian
806 {std::make_shared<signal_t> (signal_t{
807 "windows.rear_left.open",// generic_name
814 frequency_clock_t(0.00000f),// frequency
816 false,// force_send_changed
820 decoder_t::decode_boolean,// decoder
823 std::make_pair<bool, int>(false, 0),// multiplex
824 false,// is_big_endian
828 {std::make_shared<signal_t> (signal_t{
829 "windows.rear_right.open",// generic_name
836 frequency_clock_t(0.00000f),// frequency
838 false,// force_send_changed
842 decoder_t::decode_boolean,// decoder
845 std::make_pair<bool, int>(false, 0),// multiplex
846 false,// is_big_endian
850 } // end signals vector
851 })} // end message_definition entry
853 }, // end message_definition vector
854 { // beginning diagnostic_messages_ vector
855 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
862 decoder_t::decode_obd2_response,
867 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
869 "engine.coolant.temperature",
874 decoder_t::decode_obd2_response,
879 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
886 decoder_t::decode_obd2_response,
891 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
893 "intake.manifold.pressure",
898 decoder_t::decode_obd2_response,
903 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
910 decoder_t::decode_obd2_response,
915 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
922 decoder_t::decode_obd2_response,
927 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
929 "intake.air.temperature",
934 decoder_t::decode_obd2_response,
939 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
946 decoder_t::decode_obd2_response,
951 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
958 decoder_t::decode_obd2_response,
963 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
970 decoder_t::decode_obd2_response,
975 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
982 decoder_t::decode_obd2_response,
987 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
994 decoder_t::decode_obd2_response,
999 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1001 "barometric.pressure",
1006 decoder_t::decode_obd2_response,
1011 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1013 "ambient.air.temperature",
1018 decoder_t::decode_obd2_response,
1023 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1025 "commanded.throttle.position",
1030 decoder_t::decode_obd2_response,
1035 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1037 "ethanol.fuel.percentage",
1042 decoder_t::decode_obd2_response,
1047 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1049 "accelerator.pedal.position",
1054 decoder_t::decode_obd2_response,
1059 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1061 "hybrid.battery-pack.remaining.life",
1066 decoder_t::decode_obd2_response,
1071 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1073 "engine.oil.temperature",
1078 decoder_t::decode_obd2_response,
1083 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1090 decoder_t::decode_obd2_response,
1095 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1102 decoder_t::decode_obd2_response,
1108 } // end diagnostic_messages_ vector
1109 })} // end message_set entry
1110 } // end message_set vector
1112 for(std::shared_ptr<message_set_t> cms: message_set_)
1114 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
1115 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
1117 cmd->set_parent(cms);
1118 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
1119 for(std::shared_ptr<signal_t> sig: signals)
1121 sig->set_parent(cmd);
1125 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
1126 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
1128 dm->set_parent(cms);
1133 const std::string application_t::get_diagnostic_bus() const