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,"",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.horn",// 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.info",// 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.lane_departure_warning",// 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.mode",// 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.next",// 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.phone.call",// 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.hangup",// 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.previous",// 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.voice",// 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.volume.down",// 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.mute",// 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.up",// 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 } // end signals vector
387 })} // end message_definition entry
388 , {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,4,frequency_clock_t(5.00000f),true,
389 { // beginning signals vector
390 {std::make_shared<signal_t> (signal_t{
391 "hvac.fan.speed",// generic_name
398 frequency_clock_t(0.00000f),// frequency
400 false,// force_send_changed
407 std::make_pair<bool, int>(false, 0),// multiplex
408 false,// is_big_endian
412 {std::make_shared<signal_t> (signal_t{
413 "hvac.temperature.left",// 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.right",// 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.average",// 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 } // end signals vector
479 })} // end message_definition entry
480 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,2,frequency_clock_t(5.00000f),true,
481 { // beginning signals vector
482 {std::make_shared<signal_t> (signal_t{
483 "engine.speed",// generic_name
490 frequency_clock_t(0.00000f),// frequency
492 false,// force_send_changed
499 std::make_pair<bool, int>(false, 0),// multiplex
500 false,// is_big_endian
504 {std::make_shared<signal_t> (signal_t{
505 "fuel.level.low",// generic_name
512 frequency_clock_t(0.00000f),// frequency
514 false,// force_send_changed
518 decoder_t::decode_boolean,// decoder
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",// generic_name
534 frequency_clock_t(0.00000f),// frequency
536 false,// force_send_changed
543 std::make_pair<bool, int>(false, 0),// multiplex
544 false,// is_big_endian
548 } // end signals vector
549 })} // end message_definition entry
550 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,2,frequency_clock_t(5.00000f),true,
551 { // beginning signals vector
552 {std::make_shared<signal_t> (signal_t{
553 "vehicle.average.speed",// generic_name
560 frequency_clock_t(0.00000f),// frequency
562 false,// force_send_changed
569 std::make_pair<bool, int>(false, 0),// multiplex
570 false,// is_big_endian
574 } // end signals vector
575 })} // end message_definition entry
576 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,2,frequency_clock_t(5.00000f),true,
577 { // beginning signals vector
578 {std::make_shared<signal_t> (signal_t{
579 "engine.oil.temp",// generic_name
586 frequency_clock_t(0.00000f),// frequency
588 false,// force_send_changed
595 std::make_pair<bool, int>(false, 0),// multiplex
596 false,// is_big_endian
600 {std::make_shared<signal_t> (signal_t{
601 "engine.oil.temp.high",// generic_name
608 frequency_clock_t(0.00000f),// frequency
610 false,// force_send_changed
614 decoder_t::decode_boolean,// decoder
617 std::make_pair<bool, int>(false, 0),// multiplex
618 false,// is_big_endian
622 } // end signals vector
623 })} // end message_definition entry
624 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,2,frequency_clock_t(5.00000f),true,
625 { // beginning signals vector
626 {std::make_shared<signal_t> (signal_t{
627 "doors.boot.open",// generic_name
634 frequency_clock_t(0.00000f),// frequency
636 false,// force_send_changed
640 decoder_t::decode_boolean,// decoder
643 std::make_pair<bool, int>(false, 0),// multiplex
644 false,// is_big_endian
648 {std::make_shared<signal_t> (signal_t{
649 "doors.front_left.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_right.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.rear_left.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_right.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 } // end signals vector
737 })} // end message_definition entry
738 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,2,frequency_clock_t(5.00000f),true,
739 { // beginning signals vector
740 {std::make_shared<signal_t> (signal_t{
741 "windows.front_left.open",// generic_name
748 frequency_clock_t(0.00000f),// frequency
750 false,// force_send_changed
754 decoder_t::decode_boolean,// decoder
757 std::make_pair<bool, int>(false, 0),// multiplex
758 false,// is_big_endian
762 {std::make_shared<signal_t> (signal_t{
763 "windows.front_right.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.rear_left.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_right.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 } // end signals vector
829 })} // end message_definition entry
831 }, // end message_definition vector
832 { // beginning diagnostic_messages_ vector
834 } // end diagnostic_messages_ vector
835 })} // end message_set entry
836 } // end message_set vector
838 for(std::shared_ptr<message_set_t> cms: message_set_)
840 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
841 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
843 cmd->set_parent(cms);
844 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
845 for(std::shared_ptr<signal_t> sig: signals)
847 sig->set_parent(cmd);
851 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
852 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
859 const std::string application_t::get_diagnostic_bus() const
861 return diagnostic_manager_.get_bus_device_name();;