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",0x21,"",8,0,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 static_cast<sign_t>(0),// signed
31 -1,// bit_sign_position
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 static_cast<sign_t>(0),// signed
53 -1,// bit_sign_position
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 static_cast<sign_t>(0),// signed
75 -1,// bit_sign_position
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 static_cast<sign_t>(0),// signed
97 -1,// bit_sign_position
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 static_cast<sign_t>(0),// signed
119 -1,// bit_sign_position
122 {std::make_shared<signal_t> (signal_t{
123 "steering_wheel.cruise.set",// 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 static_cast<sign_t>(0),// signed
141 -1,// bit_sign_position
144 {std::make_shared<signal_t> (signal_t{
145 "steering_wheel.horn",// 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 static_cast<sign_t>(0),// signed
163 -1,// bit_sign_position
166 {std::make_shared<signal_t> (signal_t{
167 "steering_wheel.info",// 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 static_cast<sign_t>(0),// signed
185 -1,// bit_sign_position
188 {std::make_shared<signal_t> (signal_t{
189 "steering_wheel.lane_departure_warning",// 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 static_cast<sign_t>(0),// signed
207 -1,// bit_sign_position
210 {std::make_shared<signal_t> (signal_t{
211 "steering_wheel.mode",// 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 static_cast<sign_t>(0),// signed
229 -1,// bit_sign_position
232 {std::make_shared<signal_t> (signal_t{
233 "steering_wheel.next",// 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 static_cast<sign_t>(0),// signed
251 -1,// bit_sign_position
254 {std::make_shared<signal_t> (signal_t{
255 "steering_wheel.phone.call",// 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 static_cast<sign_t>(0),// signed
273 -1,// bit_sign_position
276 {std::make_shared<signal_t> (signal_t{
277 "steering_wheel.phone.hangup",// 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 static_cast<sign_t>(0),// signed
295 -1,// bit_sign_position
298 {std::make_shared<signal_t> (signal_t{
299 "steering_wheel.previous",// 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 static_cast<sign_t>(0),// signed
317 -1,// bit_sign_position
320 {std::make_shared<signal_t> (signal_t{
321 "steering_wheel.voice",// 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 static_cast<sign_t>(0),// signed
339 -1,// bit_sign_position
342 {std::make_shared<signal_t> (signal_t{
343 "steering_wheel.volume.down",// 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 static_cast<sign_t>(0),// signed
361 -1,// bit_sign_position
364 {std::make_shared<signal_t> (signal_t{
365 "steering_wheel.volume.mute",// 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 static_cast<sign_t>(0),// signed
383 -1,// bit_sign_position
386 {std::make_shared<signal_t> (signal_t{
387 "steering_wheel.volume.up",// generic_name
394 frequency_clock_t(0.00000f),// frequency
396 false,// force_send_changed
400 decoder_t::decode_boolean,// decoder
403 std::make_pair<bool, int>(false, 0),// multiplex
404 static_cast<sign_t>(0),// signed
405 -1,// bit_sign_position
408 } // end signals vector
409 })} // end message_definition entry
410 , {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,0,frequency_clock_t(5.00000f),true,
411 { // beginning signals vector
412 {std::make_shared<signal_t> (signal_t{
413 "hvac.fan.speed",// generic_name
420 frequency_clock_t(0.00000f),// frequency
422 false,// force_send_changed
429 std::make_pair<bool, int>(false, 0),// multiplex
430 static_cast<sign_t>(0),// signed
431 -1,// bit_sign_position
434 {std::make_shared<signal_t> (signal_t{
435 "hvac.temperature.left",// generic_name
442 frequency_clock_t(0.00000f),// frequency
444 false,// force_send_changed
451 std::make_pair<bool, int>(false, 0),// multiplex
452 static_cast<sign_t>(0),// signed
453 -1,// bit_sign_position
456 {std::make_shared<signal_t> (signal_t{
457 "hvac.temperature.right",// generic_name
464 frequency_clock_t(0.00000f),// frequency
466 false,// force_send_changed
473 std::make_pair<bool, int>(false, 0),// multiplex
474 static_cast<sign_t>(0),// signed
475 -1,// bit_sign_position
478 {std::make_shared<signal_t> (signal_t{
479 "hvac.temperature.average",// generic_name
486 frequency_clock_t(0.00000f),// frequency
488 false,// force_send_changed
495 std::make_pair<bool, int>(false, 0),// multiplex
496 static_cast<sign_t>(0),// signed
497 -1,// bit_sign_position
500 } // end signals vector
501 })} // end message_definition entry
502 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,0,frequency_clock_t(5.00000f),true,
503 { // beginning signals vector
504 {std::make_shared<signal_t> (signal_t{
505 "engine.speed",// generic_name
512 frequency_clock_t(0.00000f),// frequency
514 false,// force_send_changed
521 std::make_pair<bool, int>(false, 0),// multiplex
522 static_cast<sign_t>(0),// signed
523 -1,// bit_sign_position
526 {std::make_shared<signal_t> (signal_t{
527 "fuel.level.low",// generic_name
534 frequency_clock_t(0.00000f),// frequency
536 false,// force_send_changed
540 decoder_t::decode_boolean,// decoder
543 std::make_pair<bool, int>(false, 0),// multiplex
544 static_cast<sign_t>(0),// signed
545 -1,// bit_sign_position
548 {std::make_shared<signal_t> (signal_t{
549 "fuel.level",// generic_name
556 frequency_clock_t(0.00000f),// frequency
558 false,// force_send_changed
565 std::make_pair<bool, int>(false, 0),// multiplex
566 static_cast<sign_t>(0),// signed
567 -1,// bit_sign_position
570 } // end signals vector
571 })} // end message_definition entry
572 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,0,frequency_clock_t(5.00000f),true,
573 { // beginning signals vector
574 {std::make_shared<signal_t> (signal_t{
575 "vehicle.average.speed",// generic_name
582 frequency_clock_t(0.00000f),// frequency
584 false,// force_send_changed
591 std::make_pair<bool, int>(false, 0),// multiplex
592 static_cast<sign_t>(0),// signed
593 -1,// bit_sign_position
596 } // end signals vector
597 })} // end message_definition entry
598 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,0,frequency_clock_t(5.00000f),true,
599 { // beginning signals vector
600 {std::make_shared<signal_t> (signal_t{
601 "engine.oil.temp",// generic_name
608 frequency_clock_t(0.00000f),// frequency
610 false,// force_send_changed
617 std::make_pair<bool, int>(false, 0),// multiplex
618 static_cast<sign_t>(0),// signed
619 -1,// bit_sign_position
622 {std::make_shared<signal_t> (signal_t{
623 "engine.oil.temp.high",// generic_name
630 frequency_clock_t(0.00000f),// frequency
632 false,// force_send_changed
636 decoder_t::decode_boolean,// decoder
639 std::make_pair<bool, int>(false, 0),// multiplex
640 static_cast<sign_t>(0),// signed
641 -1,// bit_sign_position
644 } // end signals vector
645 })} // end message_definition entry
646 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,0,frequency_clock_t(5.00000f),true,
647 { // beginning signals vector
648 {std::make_shared<signal_t> (signal_t{
649 "doors.boot.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 static_cast<sign_t>(0),// signed
667 -1,// bit_sign_position
670 {std::make_shared<signal_t> (signal_t{
671 "doors.front_left.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 static_cast<sign_t>(0),// signed
689 -1,// bit_sign_position
692 {std::make_shared<signal_t> (signal_t{
693 "doors.front_right.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 static_cast<sign_t>(0),// signed
711 -1,// bit_sign_position
714 {std::make_shared<signal_t> (signal_t{
715 "doors.rear_left.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 static_cast<sign_t>(0),// signed
733 -1,// bit_sign_position
736 {std::make_shared<signal_t> (signal_t{
737 "doors.rear_right.open",// generic_name
744 frequency_clock_t(0.00000f),// frequency
746 false,// force_send_changed
750 decoder_t::decode_boolean,// decoder
753 std::make_pair<bool, int>(false, 0),// multiplex
754 static_cast<sign_t>(0),// signed
755 -1,// bit_sign_position
758 } // end signals vector
759 })} // end message_definition entry
760 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,0,frequency_clock_t(5.00000f),true,
761 { // beginning signals vector
762 {std::make_shared<signal_t> (signal_t{
763 "windows.front_left.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 static_cast<sign_t>(0),// signed
781 -1,// bit_sign_position
784 {std::make_shared<signal_t> (signal_t{
785 "windows.front_right.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 static_cast<sign_t>(0),// signed
803 -1,// bit_sign_position
806 {std::make_shared<signal_t> (signal_t{
807 "windows.rear_left.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 static_cast<sign_t>(0),// signed
825 -1,// bit_sign_position
828 {std::make_shared<signal_t> (signal_t{
829 "windows.rear_right.open",// generic_name
836 frequency_clock_t(0.00000f),// frequency
838 false,// force_send_changed
842 decoder_t::decode_boolean,// decoder
845 std::make_pair<bool, int>(false, 0),// multiplex
846 static_cast<sign_t>(0),// signed
847 -1,// bit_sign_position
850 } // end signals vector
851 })} // end message_definition entry
852 }, // end message_definition vector
853 { // beginning diagnostic_messages_ vector
854 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
861 decoder_t::decode_obd2_response,
866 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
868 "engine.coolant.temperature",
873 decoder_t::decode_obd2_response,
878 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
885 decoder_t::decode_obd2_response,
890 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
892 "intake.manifold.pressure",
897 decoder_t::decode_obd2_response,
902 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
909 decoder_t::decode_obd2_response,
914 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
921 decoder_t::decode_obd2_response,
926 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
928 "intake.air.temperature",
933 decoder_t::decode_obd2_response,
938 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
945 decoder_t::decode_obd2_response,
950 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
957 decoder_t::decode_obd2_response,
962 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
969 decoder_t::decode_obd2_response,
974 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
981 decoder_t::decode_obd2_response,
986 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
993 decoder_t::decode_obd2_response,
998 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1000 "barometric.pressure",
1005 decoder_t::decode_obd2_response,
1010 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1012 "ambient.air.temperature",
1017 decoder_t::decode_obd2_response,
1022 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1024 "commanded.throttle.position",
1029 decoder_t::decode_obd2_response,
1034 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1036 "ethanol.fuel.percentage",
1041 decoder_t::decode_obd2_response,
1046 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1048 "accelerator.pedal.position",
1053 decoder_t::decode_obd2_response,
1058 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1060 "hybrid.battery-pack.remaining.life",
1065 decoder_t::decode_obd2_response,
1070 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1072 "engine.oil.temperature",
1077 decoder_t::decode_obd2_response,
1082 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1089 decoder_t::decode_obd2_response,
1094 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
1101 decoder_t::decode_obd2_response,
1107 } // end diagnostic_messages_ vector
1108 }); // end message_set entry
1110 CTLP_ONLOAD(plugin, handle) {
1111 afb_api_t api = (afb_api_t) plugin->api;
1112 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
1113 application_t* app = (application_t*) getExternalData(CtlConfig);
1115 return app->add_message_set(cms);