1 #include <binding/application.hpp>
2 #include <can/can-decoder.hpp>
3 #include <can/can-encoder.hpp>
8 CTLP_CAPI_REGISTER("agl-vcar-signals");
10 std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set_t{0,"AGL Virtual Car",
11 { // beginning message_definition_ vector
12 {std::make_shared<message_definition_t>(message_definition_t{"ls",0x30,"",8,0,true,frequency_clock_t(5.00000f),true,
13 { // beginning signals vector
14 {std::make_shared<signal_t> (signal_t{
15 "hvac.fan.speed",// generic_name
22 frequency_clock_t(0.00000f),// frequency
24 false,// force_send_changed
31 std::make_pair<bool, int>(false, 0),// multiplex
32 false,// is_big_endian
33 static_cast<sign_t>(0),// signed
34 -1,// bit_sign_position
37 {std::make_shared<signal_t> (signal_t{
38 "hvac.temperature.left",// generic_name
45 frequency_clock_t(0.00000f),// frequency
47 false,// force_send_changed
54 std::make_pair<bool, int>(false, 0),// multiplex
55 false,// is_big_endian
56 static_cast<sign_t>(0),// signed
57 -1,// bit_sign_position
60 {std::make_shared<signal_t> (signal_t{
61 "hvac.temperature.right",// generic_name
68 frequency_clock_t(0.00000f),// frequency
70 false,// force_send_changed
77 std::make_pair<bool, int>(false, 0),// multiplex
78 false,// is_big_endian
79 static_cast<sign_t>(0),// signed
80 -1,// bit_sign_position
83 {std::make_shared<signal_t> (signal_t{
84 "hvac.temperature.average",// generic_name
91 frequency_clock_t(0.00000f),// frequency
93 false,// force_send_changed
100 std::make_pair<bool, int>(false, 0),// multiplex
101 false,// is_big_endian
102 static_cast<sign_t>(0),// signed
103 -1,// bit_sign_position
106 } // end signals vector
107 })} // end message_definition entry
108 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3D9,"",8,128,true,frequency_clock_t(5.00000f),true,
109 { // beginning signals vector
110 {std::make_shared<signal_t> (signal_t{
111 "engine.speed",// generic_name
118 frequency_clock_t(0.00000f),// frequency
120 false,// force_send_changed
127 std::make_pair<bool, int>(false, 0),// multiplex
128 false,// is_big_endian
129 static_cast<sign_t>(0),// signed
130 -1,// bit_sign_position
133 {std::make_shared<signal_t> (signal_t{
134 "fuel.level.low",// generic_name
141 frequency_clock_t(0.00000f),// frequency
143 false,// force_send_changed
147 decoder_t::decode_boolean,// decoder
150 std::make_pair<bool, int>(false, 0),// multiplex
151 false,// is_big_endian
152 static_cast<sign_t>(0),// signed
153 -1,// bit_sign_position
156 {std::make_shared<signal_t> (signal_t{
157 "fuel.level",// generic_name
164 frequency_clock_t(0.00000f),// frequency
166 false,// force_send_changed
173 std::make_pair<bool, int>(false, 0),// multiplex
174 false,// is_big_endian
175 static_cast<sign_t>(0),// signed
176 -1,// bit_sign_position
179 } // end signals vector
180 })} // end message_definition entry
181 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x3E9,"",8,0,true,frequency_clock_t(5.00000f),true,
182 { // beginning signals vector
183 {std::make_shared<signal_t> (signal_t{
184 "vehicle.average.speed",// generic_name
191 frequency_clock_t(0.00000f),// frequency
193 false,// force_send_changed
200 std::make_pair<bool, int>(false, 0),// multiplex
201 false,// is_big_endian
202 static_cast<sign_t>(0),// signed
203 -1,// bit_sign_position
206 } // end signals vector
207 })} // end message_definition entry
208 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x4D1,"",8,0,true,frequency_clock_t(5.00000f),true,
209 { // beginning signals vector
210 {std::make_shared<signal_t> (signal_t{
211 "engine.oil.temp",// generic_name
218 frequency_clock_t(0.00000f),// frequency
220 false,// force_send_changed
227 std::make_pair<bool, int>(false, 0),// multiplex
228 false,// is_big_endian
229 static_cast<sign_t>(0),// signed
230 -1,// bit_sign_position
233 {std::make_shared<signal_t> (signal_t{
234 "engine.oil.temp.high",// generic_name
241 frequency_clock_t(0.00000f),// frequency
243 false,// force_send_changed
247 decoder_t::decode_boolean,// decoder
250 std::make_pair<bool, int>(false, 0),// multiplex
251 false,// is_big_endian
252 static_cast<sign_t>(0),// signed
253 -1,// bit_sign_position
256 } // end signals vector
257 })} // end message_definition entry
258 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x620,"",8,0,true,frequency_clock_t(5.00000f),true,
259 { // beginning signals vector
260 {std::make_shared<signal_t> (signal_t{
261 "doors.boot.open",// generic_name
268 frequency_clock_t(0.00000f),// frequency
270 false,// force_send_changed
274 decoder_t::decode_boolean,// decoder
277 std::make_pair<bool, int>(false, 0),// multiplex
278 false,// is_big_endian
279 static_cast<sign_t>(0),// signed
280 -1,// bit_sign_position
283 {std::make_shared<signal_t> (signal_t{
284 "doors.front_left.open",// generic_name
291 frequency_clock_t(0.00000f),// frequency
293 false,// force_send_changed
297 decoder_t::decode_boolean,// decoder
300 std::make_pair<bool, int>(false, 0),// multiplex
301 false,// is_big_endian
302 static_cast<sign_t>(0),// signed
303 -1,// bit_sign_position
306 {std::make_shared<signal_t> (signal_t{
307 "doors.front_right.open",// generic_name
314 frequency_clock_t(0.00000f),// frequency
316 false,// force_send_changed
320 decoder_t::decode_boolean,// decoder
323 std::make_pair<bool, int>(false, 0),// multiplex
324 false,// is_big_endian
325 static_cast<sign_t>(0),// signed
326 -1,// bit_sign_position
329 {std::make_shared<signal_t> (signal_t{
330 "doors.rear_left.open",// generic_name
337 frequency_clock_t(0.00000f),// frequency
339 false,// force_send_changed
343 decoder_t::decode_boolean,// decoder
346 std::make_pair<bool, int>(false, 0),// multiplex
347 false,// is_big_endian
348 static_cast<sign_t>(0),// signed
349 -1,// bit_sign_position
352 {std::make_shared<signal_t> (signal_t{
353 "doors.rear_right.open",// generic_name
360 frequency_clock_t(0.00000f),// frequency
362 false,// force_send_changed
366 decoder_t::decode_boolean,// decoder
369 std::make_pair<bool, int>(false, 0),// multiplex
370 false,// is_big_endian
371 static_cast<sign_t>(0),// signed
372 -1,// bit_sign_position
375 } // end signals vector
376 })} // end message_definition entry
377 , {std::make_shared<message_definition_t>(message_definition_t{"hs",0x799,"",8,0,true,frequency_clock_t(5.00000f),true,
378 { // beginning signals vector
379 {std::make_shared<signal_t> (signal_t{
380 "windows.front_left.open",// generic_name
387 frequency_clock_t(0.00000f),// frequency
389 false,// force_send_changed
393 decoder_t::decode_boolean,// decoder
396 std::make_pair<bool, int>(false, 0),// multiplex
397 false,// is_big_endian
398 static_cast<sign_t>(0),// signed
399 -1,// bit_sign_position
402 {std::make_shared<signal_t> (signal_t{
403 "windows.front_right.open",// generic_name
410 frequency_clock_t(0.00000f),// frequency
412 false,// force_send_changed
416 decoder_t::decode_boolean,// decoder
419 std::make_pair<bool, int>(false, 0),// multiplex
420 false,// is_big_endian
421 static_cast<sign_t>(0),// signed
422 -1,// bit_sign_position
425 {std::make_shared<signal_t> (signal_t{
426 "windows.rear_left.open",// generic_name
433 frequency_clock_t(0.00000f),// frequency
435 false,// force_send_changed
439 decoder_t::decode_boolean,// decoder
442 std::make_pair<bool, int>(false, 0),// multiplex
443 false,// is_big_endian
444 static_cast<sign_t>(0),// signed
445 -1,// bit_sign_position
448 {std::make_shared<signal_t> (signal_t{
449 "windows.rear_right.open",// generic_name
456 frequency_clock_t(0.00000f),// frequency
458 false,// force_send_changed
462 decoder_t::decode_boolean,// decoder
465 std::make_pair<bool, int>(false, 0),// multiplex
466 false,// is_big_endian
467 static_cast<sign_t>(0),// signed
468 -1,// bit_sign_position
471 } // end signals vector
472 })} // end message_definition entry
474 }, // end message_definition vector
475 { // beginning diagnostic_messages_ vector
476 {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
483 decoder_t::decode_obd2_response,
488 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
490 "engine.coolant.temperature",
495 decoder_t::decode_obd2_response,
500 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
507 decoder_t::decode_obd2_response,
512 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
514 "intake.manifold.pressure",
519 decoder_t::decode_obd2_response,
524 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
531 decoder_t::decode_obd2_response,
536 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
543 decoder_t::decode_obd2_response,
548 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
550 "intake.air.temperature",
555 decoder_t::decode_obd2_response,
560 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
567 decoder_t::decode_obd2_response,
572 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
579 decoder_t::decode_obd2_response,
584 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
591 decoder_t::decode_obd2_response,
596 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
603 decoder_t::decode_obd2_response,
608 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
615 decoder_t::decode_obd2_response,
620 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
622 "barometric.pressure",
627 decoder_t::decode_obd2_response,
632 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
634 "ambient.air.temperature",
639 decoder_t::decode_obd2_response,
644 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
646 "commanded.throttle.position",
651 decoder_t::decode_obd2_response,
656 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
658 "ethanol.fuel.percentage",
663 decoder_t::decode_obd2_response,
668 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
670 "accelerator.pedal.position",
675 decoder_t::decode_obd2_response,
680 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
682 "hybrid.battery-pack.remaining.life",
687 decoder_t::decode_obd2_response,
692 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
694 "engine.oil.temperature",
699 decoder_t::decode_obd2_response,
704 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
711 decoder_t::decode_obd2_response,
716 , {std::make_shared<diagnostic_message_t>(diagnostic_message_t{
723 decoder_t::decode_obd2_response,
729 } // end diagnostic_messages_ vector
730 }); // end message_set entry
732 CTLP_ONLOAD(plugin, handle)
734 afb_api_t api = (afb_api_t) plugin->api;
735 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
736 application_t* app = (application_t*) getExternalData(CtlConfig);
738 return app->add_message_set(cms);