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{"hs",0x3D9,"",8,0,true,frequency_clock_t(5.00000f),true,
11 { // beginning signals vector
12 {std::make_shared<signal_t> (signal_t{
13 "engine.speed",// generic_name
20 frequency_clock_t(0.00000f),// frequency
22 false,// force_send_changed
29 std::make_pair<bool, int>(false, 0),// multiplex
30 false,// is_big_endian
31 static_cast<sign_t>(0),// signed
32 -1,// bit_sign_position
35 {std::make_shared<signal_t> (signal_t{
36 "fuel.level.low",// generic_name
43 frequency_clock_t(0.00000f),// frequency
45 false,// force_send_changed
49 decoder_t::decode_boolean,// decoder
52 std::make_pair<bool, int>(false, 0),// multiplex
53 false,// is_big_endian
54 static_cast<sign_t>(0),// signed
55 -1,// bit_sign_position
58 {std::make_shared<signal_t> (signal_t{
59 "fuel.level",// generic_name
66 frequency_clock_t(0.00000f),// frequency
68 false,// force_send_changed
75 std::make_pair<bool, int>(false, 0),// multiplex
76 false,// is_big_endian
77 static_cast<sign_t>(0),// signed
78 -1,// bit_sign_position
81 } // end signals vector
82 })} // end message_definition entry
83 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,0,true,frequency_clock_t(5.00000f),true,
84 { // beginning signals vector
85 {std::make_shared<signal_t> (signal_t{
86 "vehicle.average.speed",// generic_name
93 frequency_clock_t(0.00000f),// frequency
95 false,// force_send_changed
102 std::make_pair<bool, int>(false, 0),// multiplex
103 false,// is_big_endian
104 static_cast<sign_t>(0),// signed
105 -1,// bit_sign_position
108 } // end signals vector
109 })} // end message_definition entry
110 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,0,true,frequency_clock_t(5.00000f),true,
111 { // beginning signals vector
112 {std::make_shared<signal_t> (signal_t{
113 "engine.oil.temp",// generic_name
120 frequency_clock_t(0.00000f),// frequency
122 false,// force_send_changed
129 std::make_pair<bool, int>(false, 0),// multiplex
130 false,// is_big_endian
131 static_cast<sign_t>(0),// signed
132 -1,// bit_sign_position
135 {std::make_shared<signal_t> (signal_t{
136 "engine.oil.temp.high",// generic_name
143 frequency_clock_t(0.00000f),// frequency
145 false,// force_send_changed
149 decoder_t::decode_boolean,// decoder
152 std::make_pair<bool, int>(false, 0),// multiplex
153 false,// is_big_endian
154 static_cast<sign_t>(0),// signed
155 -1,// bit_sign_position
158 } // end signals vector
159 })} // end message_definition entry
160 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,0,true,frequency_clock_t(5.00000f),true,
161 { // beginning signals vector
162 {std::make_shared<signal_t> (signal_t{
163 "doors.boot.open",// generic_name
170 frequency_clock_t(0.00000f),// frequency
172 false,// force_send_changed
176 decoder_t::decode_boolean,// decoder
179 std::make_pair<bool, int>(false, 0),// multiplex
180 false,// is_big_endian
181 static_cast<sign_t>(0),// signed
182 -1,// bit_sign_position
185 {std::make_shared<signal_t> (signal_t{
186 "doors.front_left.open",// generic_name
193 frequency_clock_t(0.00000f),// frequency
195 false,// force_send_changed
199 decoder_t::decode_boolean,// decoder
202 std::make_pair<bool, int>(false, 0),// multiplex
203 false,// is_big_endian
204 static_cast<sign_t>(0),// signed
205 -1,// bit_sign_position
208 {std::make_shared<signal_t> (signal_t{
209 "doors.front_right.open",// generic_name
216 frequency_clock_t(0.00000f),// frequency
218 false,// force_send_changed
222 decoder_t::decode_boolean,// decoder
225 std::make_pair<bool, int>(false, 0),// multiplex
226 false,// is_big_endian
227 static_cast<sign_t>(0),// signed
228 -1,// bit_sign_position
231 {std::make_shared<signal_t> (signal_t{
232 "doors.rear_left.open",// generic_name
239 frequency_clock_t(0.00000f),// frequency
241 false,// force_send_changed
245 decoder_t::decode_boolean,// decoder
248 std::make_pair<bool, int>(false, 0),// multiplex
249 false,// is_big_endian
250 static_cast<sign_t>(0),// signed
251 -1,// bit_sign_position
254 {std::make_shared<signal_t> (signal_t{
255 "doors.rear_right.open",// 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
273 static_cast<sign_t>(0),// signed
274 -1,// bit_sign_position
277 } // end signals vector
278 })} // end message_definition entry
279 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,0,true,frequency_clock_t(5.00000f),true,
280 { // beginning signals vector
281 {std::make_shared<signal_t> (signal_t{
282 "windows.front_left.open",// generic_name
289 frequency_clock_t(0.00000f),// frequency
291 false,// force_send_changed
295 decoder_t::decode_boolean,// decoder
298 std::make_pair<bool, int>(false, 0),// multiplex
299 false,// is_big_endian
300 static_cast<sign_t>(0),// signed
301 -1,// bit_sign_position
304 {std::make_shared<signal_t> (signal_t{
305 "windows.front_right.open",// 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
323 static_cast<sign_t>(0),// signed
324 -1,// bit_sign_position
327 {std::make_shared<signal_t> (signal_t{
328 "windows.rear_left.open",// generic_name
335 frequency_clock_t(0.00000f),// frequency
337 false,// force_send_changed
341 decoder_t::decode_boolean,// decoder
344 std::make_pair<bool, int>(false, 0),// multiplex
345 false,// is_big_endian
346 static_cast<sign_t>(0),// signed
347 -1,// bit_sign_position
350 {std::make_shared<signal_t> (signal_t{
351 "windows.rear_right.open",// generic_name
358 frequency_clock_t(0.00000f),// frequency
360 false,// force_send_changed
364 decoder_t::decode_boolean,// decoder
367 std::make_pair<bool, int>(false, 0),// multiplex
368 false,// is_big_endian
369 static_cast<sign_t>(0),// signed
370 -1,// bit_sign_position
373 } // end signals vector
374 })} // end message_definition entry
376 }, // end message_definition vector
377 { // beginning diagnostic_messages_ vector
378 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
385 decoder_t::decode_obd2_response,
390 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
392 "engine.coolant.temperature",
397 decoder_t::decode_obd2_response,
402 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
409 decoder_t::decode_obd2_response,
414 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
416 "intake.manifold.pressure",
421 decoder_t::decode_obd2_response,
426 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
433 decoder_t::decode_obd2_response,
438 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
445 decoder_t::decode_obd2_response,
450 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
452 "intake.air.temperature",
457 decoder_t::decode_obd2_response,
462 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
469 decoder_t::decode_obd2_response,
474 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
481 decoder_t::decode_obd2_response,
486 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
493 decoder_t::decode_obd2_response,
498 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
505 decoder_t::decode_obd2_response,
510 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
517 decoder_t::decode_obd2_response,
522 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
524 "barometric.pressure",
529 decoder_t::decode_obd2_response,
534 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
536 "ambient.air.temperature",
541 decoder_t::decode_obd2_response,
546 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
548 "commanded.throttle.position",
553 decoder_t::decode_obd2_response,
558 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
560 "ethanol.fuel.percentage",
565 decoder_t::decode_obd2_response,
570 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
572 "accelerator.pedal.position",
577 decoder_t::decode_obd2_response,
582 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
584 "hybrid.battery-pack.remaining.life",
589 decoder_t::decode_obd2_response,
594 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
596 "engine.oil.temperature",
601 decoder_t::decode_obd2_response,
606 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
613 decoder_t::decode_obd2_response,
618 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
625 decoder_t::decode_obd2_response,
631 } // end diagnostic_messages_ vector
632 })} // end message_set entry
633 } // end message_set vector
635 for(std::shared_ptr<message_set_t> cms: message_set_)
637 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
638 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
640 cmd->set_parent(cms);
641 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
642 for(std::shared_ptr<signal_t> sig: signals)
644 sig->set_parent(cmd);
648 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
649 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
656 const std::string application_t::get_diagnostic_bus() const