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
453 }, // end message_definition vector
454 { // beginning diagnostic_messages_ vector
455 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
462 decoder_t::decode_obd2_response,
467 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
469 "engine.coolant.temperature",
474 decoder_t::decode_obd2_response,
479 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
486 decoder_t::decode_obd2_response,
491 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
493 "intake.manifold.pressure",
498 decoder_t::decode_obd2_response,
503 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
510 decoder_t::decode_obd2_response,
515 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
522 decoder_t::decode_obd2_response,
527 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
529 "intake.air.temperature",
534 decoder_t::decode_obd2_response,
539 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
546 decoder_t::decode_obd2_response,
551 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
558 decoder_t::decode_obd2_response,
563 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
570 decoder_t::decode_obd2_response,
575 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
582 decoder_t::decode_obd2_response,
587 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
594 decoder_t::decode_obd2_response,
599 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
601 "barometric.pressure",
606 decoder_t::decode_obd2_response,
611 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
613 "ambient.air.temperature",
618 decoder_t::decode_obd2_response,
623 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
625 "commanded.throttle.position",
630 decoder_t::decode_obd2_response,
635 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
637 "ethanol.fuel.percentage",
642 decoder_t::decode_obd2_response,
647 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
649 "accelerator.pedal.position",
654 decoder_t::decode_obd2_response,
659 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
661 "hybrid.battery-pack.remaining.life",
666 decoder_t::decode_obd2_response,
671 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
673 "engine.oil.temperature",
678 decoder_t::decode_obd2_response,
683 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
690 decoder_t::decode_obd2_response,
695 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
702 decoder_t::decode_obd2_response,
708 } // end diagnostic_messages_ vector
709 })} // end message_set entry
710 } // end message_set vector
712 for(std::shared_ptr<message_set_t> cms: message_set_)
714 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
715 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
717 cmd->set_parent(cms);
718 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
719 for(std::shared_ptr<signal_t> sig: signals)
721 sig->set_parent(cmd);
725 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
726 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
733 const std::string application_t::get_diagnostic_bus() const