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,"example",
9 { // beginning message_definition_ vector
10 {std::make_shared<message_definition_t>(message_definition_t{"ls",0x21,"",0,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 decoder_t::decode_boolean,// decoder
124 false,// is_big_endian
128 {std::make_shared<signal_t> (signal_t{
129 "steering_wheel.horn",// generic_name
136 frequency_clock_t(0.00000f),// frequency
138 false,// force_send_changed
142 decoder_t::decode_boolean,// decoder
145 std::make_pair<bool, int>(false, 0),// multiplex
146 false,// is_big_endian
150 {std::make_shared<signal_t> (signal_t{
151 "steering_wheel.info",// generic_name
158 frequency_clock_t(0.00000f),// frequency
160 false,// force_send_changed
164 decoder_t::decode_boolean,// decoder
167 std::make_pair<bool, int>(false, 0),// multiplex
168 false,// is_big_endian
172 {std::make_shared<signal_t> (signal_t{
173 "steering_wheel.lane_departure_warning",// generic_name
180 frequency_clock_t(0.00000f),// frequency
182 false,// force_send_changed
186 decoder_t::decode_boolean,// decoder
189 std::make_pair<bool, int>(false, 0),// multiplex
190 false,// is_big_endian
194 {std::make_shared<signal_t> (signal_t{
195 "steering_wheel.mode",// generic_name
202 frequency_clock_t(0.00000f),// frequency
204 false,// force_send_changed
208 decoder_t::decode_boolean,// decoder
211 std::make_pair<bool, int>(false, 0),// multiplex
212 false,// is_big_endian
216 {std::make_shared<signal_t> (signal_t{
217 "steering_wheel.next",// generic_name
224 frequency_clock_t(0.00000f),// frequency
226 false,// force_send_changed
230 decoder_t::decode_boolean,// decoder
233 std::make_pair<bool, int>(false, 0),// multiplex
234 false,// is_big_endian
238 {std::make_shared<signal_t> (signal_t{
239 "steering_wheel.phone.call",// generic_name
246 frequency_clock_t(0.00000f),// frequency
248 false,// force_send_changed
252 decoder_t::decode_boolean,// decoder
255 std::make_pair<bool, int>(false, 0),// multiplex
256 false,// is_big_endian
260 {std::make_shared<signal_t> (signal_t{
261 "steering_wheel.phone.hangup",// generic_name
268 frequency_clock_t(0.00000f),// frequency
270 false,// force_send_changed
274 decoder_t::decode_boolean,// decoder
277 std::make_pair<bool, int>(false, 0),// multiplex
278 false,// is_big_endian
282 {std::make_shared<signal_t> (signal_t{
283 "steering_wheel.previous",// generic_name
290 frequency_clock_t(0.00000f),// frequency
292 false,// force_send_changed
296 decoder_t::decode_boolean,// decoder
299 std::make_pair<bool, int>(false, 0),// multiplex
300 false,// is_big_endian
304 {std::make_shared<signal_t> (signal_t{
305 "steering_wheel.voice",// generic_name
312 frequency_clock_t(0.00000f),// frequency
314 false,// force_send_changed
318 decoder_t::decode_boolean,// decoder
321 std::make_pair<bool, int>(false, 0),// multiplex
322 false,// is_big_endian
326 {std::make_shared<signal_t> (signal_t{
327 "steering_wheel.volume.down",// generic_name
334 frequency_clock_t(0.00000f),// frequency
336 false,// force_send_changed
340 decoder_t::decode_boolean,// decoder
343 std::make_pair<bool, int>(false, 0),// multiplex
344 false,// is_big_endian
348 {std::make_shared<signal_t> (signal_t{
349 "steering_wheel.volume.mute",// generic_name
356 frequency_clock_t(0.00000f),// frequency
358 false,// force_send_changed
362 decoder_t::decode_boolean,// decoder
365 std::make_pair<bool, int>(false, 0),// multiplex
366 false,// is_big_endian
370 {std::make_shared<signal_t> (signal_t{
371 "steering_wheel.volume.up",// generic_name
378 frequency_clock_t(0.00000f),// frequency
380 false,// force_send_changed
384 decoder_t::decode_boolean,// decoder
387 std::make_pair<bool, int>(false, 0),// multiplex
388 false,// is_big_endian
392 } // end signals vector
393 })} // end message_definition entry
394 , {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true,
395 { // beginning signals vector
396 {std::make_shared<signal_t> (signal_t{
397 "hvac.fan.speed",// generic_name
404 frequency_clock_t(0.00000f),// frequency
406 false,// force_send_changed
413 std::make_pair<bool, int>(false, 0),// multiplex
414 false,// is_big_endian
418 {std::make_shared<signal_t> (signal_t{
419 "hvac.temperature.left",// generic_name
426 frequency_clock_t(0.00000f),// frequency
428 false,// force_send_changed
435 std::make_pair<bool, int>(false, 0),// multiplex
436 false,// is_big_endian
440 {std::make_shared<signal_t> (signal_t{
441 "hvac.temperature.right",// generic_name
448 frequency_clock_t(0.00000f),// frequency
450 false,// force_send_changed
457 std::make_pair<bool, int>(false, 0),// multiplex
458 false,// is_big_endian
462 {std::make_shared<signal_t> (signal_t{
463 "hvac.temperature.average",// generic_name
470 frequency_clock_t(0.00000f),// frequency
472 false,// force_send_changed
479 std::make_pair<bool, int>(false, 0),// multiplex
480 false,// is_big_endian
484 } // end signals vector
485 })} // end message_definition entry
486 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,2050,frequency_clock_t(5.00000f),true,
487 { // beginning signals vector
488 {std::make_shared<signal_t> (signal_t{
489 "engine.speed",// generic_name
496 frequency_clock_t(0.00000f),// frequency
498 false,// force_send_changed
505 std::make_pair<bool, int>(false, 0),// multiplex
506 false,// is_big_endian
510 {std::make_shared<signal_t> (signal_t{
511 "fuel.level.low",// generic_name
518 frequency_clock_t(0.00000f),// frequency
520 false,// force_send_changed
524 decoder_t::decode_boolean,// decoder
527 std::make_pair<bool, int>(false, 0),// multiplex
528 false,// is_big_endian
532 {std::make_shared<signal_t> (signal_t{
533 "fuel.level",// generic_name
540 frequency_clock_t(0.00000f),// frequency
542 false,// force_send_changed
549 std::make_pair<bool, int>(false, 0),// multiplex
550 false,// is_big_endian
554 } // end signals vector
555 })} // end message_definition entry
556 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,2,frequency_clock_t(5.00000f),true,
557 { // beginning signals vector
558 {std::make_shared<signal_t> (signal_t{
559 "vehicle.average.speed",// generic_name
566 frequency_clock_t(0.00000f),// frequency
568 false,// force_send_changed
575 std::make_pair<bool, int>(false, 0),// multiplex
576 false,// is_big_endian
580 } // end signals vector
581 })} // end message_definition entry
582 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,2,frequency_clock_t(5.00000f),true,
583 { // beginning signals vector
584 {std::make_shared<signal_t> (signal_t{
585 "engine.oil.temp",// generic_name
592 frequency_clock_t(0.00000f),// frequency
594 false,// force_send_changed
601 std::make_pair<bool, int>(false, 0),// multiplex
602 false,// is_big_endian
606 {std::make_shared<signal_t> (signal_t{
607 "engine.oil.temp.high",// generic_name
614 frequency_clock_t(0.00000f),// frequency
616 false,// force_send_changed
620 decoder_t::decode_boolean,// decoder
623 std::make_pair<bool, int>(false, 0),// multiplex
624 false,// is_big_endian
628 } // end signals vector
629 })} // end message_definition entry
630 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,2,frequency_clock_t(5.00000f),true,
631 { // beginning signals vector
632 {std::make_shared<signal_t> (signal_t{
633 "doors.boot.open",// generic_name
640 frequency_clock_t(0.00000f),// frequency
642 false,// force_send_changed
646 decoder_t::decode_boolean,// decoder
649 std::make_pair<bool, int>(false, 0),// multiplex
650 false,// is_big_endian
654 {std::make_shared<signal_t> (signal_t{
655 "doors.front_left.open",// generic_name
662 frequency_clock_t(0.00000f),// frequency
664 false,// force_send_changed
668 decoder_t::decode_boolean,// decoder
671 std::make_pair<bool, int>(false, 0),// multiplex
672 false,// is_big_endian
676 {std::make_shared<signal_t> (signal_t{
677 "doors.front_right.open",// generic_name
684 frequency_clock_t(0.00000f),// frequency
686 false,// force_send_changed
690 decoder_t::decode_boolean,// decoder
693 std::make_pair<bool, int>(false, 0),// multiplex
694 false,// is_big_endian
698 {std::make_shared<signal_t> (signal_t{
699 "doors.rear_left.open",// generic_name
706 frequency_clock_t(0.00000f),// frequency
708 false,// force_send_changed
712 decoder_t::decode_boolean,// decoder
715 std::make_pair<bool, int>(false, 0),// multiplex
716 false,// is_big_endian
720 {std::make_shared<signal_t> (signal_t{
721 "doors.rear_right.open",// generic_name
728 frequency_clock_t(0.00000f),// frequency
730 false,// force_send_changed
734 decoder_t::decode_boolean,// decoder
737 std::make_pair<bool, int>(false, 0),// multiplex
738 false,// is_big_endian
742 } // end signals vector
743 })} // end message_definition entry
744 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,2,frequency_clock_t(5.00000f),true,
745 { // beginning signals vector
746 {std::make_shared<signal_t> (signal_t{
747 "windows.front_left.open",// generic_name
754 frequency_clock_t(0.00000f),// frequency
756 false,// force_send_changed
760 decoder_t::decode_boolean,// decoder
763 std::make_pair<bool, int>(false, 0),// multiplex
764 false,// is_big_endian
768 {std::make_shared<signal_t> (signal_t{
769 "windows.front_right.open",// generic_name
776 frequency_clock_t(0.00000f),// frequency
778 false,// force_send_changed
782 decoder_t::decode_boolean,// decoder
785 std::make_pair<bool, int>(false, 0),// multiplex
786 false,// is_big_endian
790 {std::make_shared<signal_t> (signal_t{
791 "windows.rear_left.open",// generic_name
798 frequency_clock_t(0.00000f),// frequency
800 false,// force_send_changed
804 decoder_t::decode_boolean,// decoder
807 std::make_pair<bool, int>(false, 0),// multiplex
808 false,// is_big_endian
812 {std::make_shared<signal_t> (signal_t{
813 "windows.rear_right.open",// generic_name
820 frequency_clock_t(0.00000f),// frequency
822 false,// force_send_changed
826 decoder_t::decode_boolean,// decoder
829 std::make_pair<bool, int>(false, 0),// multiplex
830 false,// is_big_endian
834 } // end signals vector
835 })} // end message_definition entry
836 }, // end message_definition vector
837 { // beginning diagnostic_messages_ vector
839 } // end diagnostic_messages_ vector
840 })} // end message_set entry
841 } // end message_set vector
843 for(std::shared_ptr<message_set_t> cms: message_set_)
845 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
846 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
848 cmd->set_parent(cms);
849 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
850 for(std::shared_ptr<signal_t> sig: signals)
852 sig->set_parent(cmd);
856 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
857 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
864 const std::string application_t::get_diagnostic_bus() const
866 return diagnostic_manager_.get_bus_device_name();;