1 #include <binding/application.hpp>
2 #include <can/can-decoder.hpp>
3 #include <can/can-encoder.hpp>
6 CTLP_CAPI_REGISTER("agl-virtual-car");
8 std::shared_ptr<message_set_t> cms = 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,0,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
30 static_cast<sign_t>(0),// signed
31 -1,// bit_sign_position
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
52 static_cast<sign_t>(0),// signed
53 -1,// bit_sign_position
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
74 static_cast<sign_t>(0),// signed
75 -1,// bit_sign_position
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
96 static_cast<sign_t>(0),// signed
97 -1,// bit_sign_position
100 } // end signals vector
101 })} // end message_definition entry
102 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,2,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
122 static_cast<sign_t>(0),// signed
123 -1,// bit_sign_position
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
144 static_cast<sign_t>(0),// signed
145 -1,// bit_sign_position
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
166 static_cast<sign_t>(0),// signed
167 -1,// bit_sign_position
170 } // end signals vector
171 })} // end message_definition entry
172 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,0,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
192 static_cast<sign_t>(0),// signed
193 -1,// bit_sign_position
196 } // end signals vector
197 })} // end message_definition entry
198 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,0,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
218 static_cast<sign_t>(0),// signed
219 -1,// bit_sign_position
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
240 static_cast<sign_t>(0),// signed
241 -1,// bit_sign_position
244 } // end signals vector
245 })} // end message_definition entry
246 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,0,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
266 static_cast<sign_t>(0),// signed
267 -1,// bit_sign_position
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
288 static_cast<sign_t>(0),// signed
289 -1,// bit_sign_position
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
310 static_cast<sign_t>(0),// signed
311 -1,// bit_sign_position
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
332 static_cast<sign_t>(0),// signed
333 -1,// bit_sign_position
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
354 static_cast<sign_t>(0),// signed
355 -1,// bit_sign_position
358 } // end signals vector
359 })} // end message_definition entry
360 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,0,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
380 static_cast<sign_t>(0),// signed
381 -1,// bit_sign_position
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
402 static_cast<sign_t>(0),// signed
403 -1,// bit_sign_position
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
424 static_cast<sign_t>(0),// signed
425 -1,// bit_sign_position
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
446 static_cast<sign_t>(0),// signed
447 -1,// bit_sign_position
450 } // end signals vector
451 })} // end message_definition entry
452 }, // end message_definition vector
453 { // beginning diagnostic_messages_ vector
454 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
461 decoder_t::decode_obd2_response,
466 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
468 "engine.coolant.temperature",
473 decoder_t::decode_obd2_response,
478 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
485 decoder_t::decode_obd2_response,
490 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
492 "intake.manifold.pressure",
497 decoder_t::decode_obd2_response,
502 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
509 decoder_t::decode_obd2_response,
514 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
521 decoder_t::decode_obd2_response,
526 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
528 "intake.air.temperature",
533 decoder_t::decode_obd2_response,
538 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
545 decoder_t::decode_obd2_response,
550 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
557 decoder_t::decode_obd2_response,
562 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
569 decoder_t::decode_obd2_response,
574 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
581 decoder_t::decode_obd2_response,
586 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
593 decoder_t::decode_obd2_response,
598 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
600 "barometric.pressure",
605 decoder_t::decode_obd2_response,
610 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
612 "ambient.air.temperature",
617 decoder_t::decode_obd2_response,
622 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
624 "commanded.throttle.position",
629 decoder_t::decode_obd2_response,
634 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
636 "ethanol.fuel.percentage",
641 decoder_t::decode_obd2_response,
646 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
648 "accelerator.pedal.position",
653 decoder_t::decode_obd2_response,
658 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
660 "hybrid.battery-pack.remaining.life",
665 decoder_t::decode_obd2_response,
670 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
672 "engine.oil.temperature",
677 decoder_t::decode_obd2_response,
682 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
689 decoder_t::decode_obd2_response,
694 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
701 decoder_t::decode_obd2_response,
707 } // end diagnostic_messages_ vector
708 }); // end message_set entry
710 CTLP_ONLOAD(plugin, handle) {
711 afb_api_t api = (afb_api_t) plugin->api;
712 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
713 application_t* app = (application_t*) getExternalData(CtlConfig);
715 return app->add_message_set(cms);