1 #include <binding/application.hpp>
2 #include <can/can-decoder.hpp>
3 #include <can/can-encoder.hpp>
6 CTLP_CAPI_REGISTER("virtual-j1939");
8 std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set_t{0,"Virtual J1939",
9 { // beginning message_definition_ vector
10 {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,8,frequency_clock_t(5.00000f),true,
11 { // beginning signals vector
12 {std::make_shared<signal_t> (signal_t{
13 "Eng.Momentary.Overspeed.Enable",// generic_name
20 frequency_clock_t(0.00000f),// frequency
22 false,// force_send_changed
24 {0,"MomentaryEngOverspeedIsDisabled"},
25 {1,"MomentaryEngOverspeedIsEnabled"},
30 decoder_t::decode_state,// decoder
33 std::make_pair<bool, int>(false, 0),// multiplex
34 static_cast<sign_t>(0),// signed
35 -1,// bit_sign_position
38 {std::make_shared<signal_t> (signal_t{
39 "Momentary.Eng.Max.Power.Enable",// generic_name
46 frequency_clock_t(0.00000f),// frequency
48 false,// force_send_changed
51 {1,"mmntarilyRqingMaxPowerAvailable"},
53 {0,"notRqingMaxPowerAvailable"}
56 decoder_t::decode_state,// decoder
59 std::make_pair<bool, int>(false, 0),// multiplex
60 static_cast<sign_t>(0),// signed
61 -1,// bit_sign_position
64 {std::make_shared<signal_t> (signal_t{
65 "Percent.Clutch.Slip",// generic_name
72 frequency_clock_t(0.00000f),// frequency
74 false,// force_send_changed
81 std::make_pair<bool, int>(false, 0),// multiplex
82 static_cast<sign_t>(0),// signed
83 -1,// bit_sign_position
86 {std::make_shared<signal_t> (signal_t{
87 "Progressive.Shift.Disable",// generic_name
94 frequency_clock_t(0.00000f),// frequency
96 false,// force_send_changed
98 {1,"ProgressiveShiftIsDisabled"},
99 {0,"ProgressiveShiftIsNotDisabled"},
104 decoder_t::decode_state,// decoder
107 std::make_pair<bool, int>(false, 0),// multiplex
108 static_cast<sign_t>(0),// signed
109 -1,// bit_sign_position
112 {std::make_shared<signal_t> (signal_t{
113 "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
120 frequency_clock_t(0.00000f),// frequency
122 false,// force_send_changed
129 std::make_pair<bool, int>(false, 0),// multiplex
130 static_cast<sign_t>(0),// signed
131 -1,// bit_sign_position
134 {std::make_shared<signal_t> (signal_t{
135 "Trans.Driveline.Engaged",// generic_name
142 frequency_clock_t(0.00000f),// frequency
144 false,// force_send_changed
146 {0,"DrivelineDisengaged"},
147 {1,"DrivelineEngaged"},
152 decoder_t::decode_state,// decoder
155 std::make_pair<bool, int>(false, 0),// multiplex
156 static_cast<sign_t>(0),// signed
157 -1,// bit_sign_position
160 {std::make_shared<signal_t> (signal_t{
161 "Trans.Input.Shaft.Speed",// generic_name
168 frequency_clock_t(0.00000f),// frequency
170 false,// force_send_changed
177 std::make_pair<bool, int>(false, 0),// multiplex
178 static_cast<sign_t>(0),// signed
179 -1,// bit_sign_position
182 {std::make_shared<signal_t> (signal_t{
183 "Trans.Output.Shaft.Speed",// generic_name
190 frequency_clock_t(0.00000f),// frequency
192 false,// force_send_changed
199 std::make_pair<bool, int>(false, 0),// multiplex
200 static_cast<sign_t>(0),// signed
201 -1,// bit_sign_position
204 {std::make_shared<signal_t> (signal_t{
205 "Trans.Shift.In.Process",// generic_name
212 frequency_clock_t(0.00000f),// frequency
214 false,// force_send_changed
218 {1,"ShiftInProcess"},
219 {0,"ShiftIsNotInProcess"}
222 decoder_t::decode_state,// decoder
225 std::make_pair<bool, int>(false, 0),// multiplex
226 static_cast<sign_t>(0),// signed
227 -1,// bit_sign_position
230 {std::make_shared<signal_t> (signal_t{
231 "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
238 frequency_clock_t(0.00000f),// frequency
240 false,// force_send_changed
244 {1,"TransitionIsInProcess"},
245 {0,"TransitionIsNotInProcess"}
248 decoder_t::decode_state,// decoder
251 std::make_pair<bool, int>(false, 0),// multiplex
252 static_cast<sign_t>(0),// signed
253 -1,// bit_sign_position
256 {std::make_shared<signal_t> (signal_t{
257 "Trns.Trque.Converter.Lockup.Engaged",// generic_name
264 frequency_clock_t(0.00000f),// frequency
266 false,// force_send_changed
270 {0,"TorqueConverterLockupDisengaged"},
271 {1,"TorqueConverterLockupEngaged"}
274 decoder_t::decode_state,// decoder
277 std::make_pair<bool, int>(false, 0),// multiplex
278 static_cast<sign_t>(0),// signed
279 -1,// bit_sign_position
282 } // end signals vector
283 })} // end message_definition entry
284 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,8,frequency_clock_t(5.00000f),true,
285 { // beginning signals vector
286 {std::make_shared<signal_t> (signal_t{
287 "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
294 frequency_clock_t(0.00000f),// frequency
296 false,// force_send_changed
301 {8,"1111NotAvailable"}
304 decoder_t::decode_state,// decoder
307 std::make_pair<bool, int>(false, 0),// multiplex
308 static_cast<sign_t>(0),// signed
309 -1,// bit_sign_position
312 {std::make_shared<signal_t> (signal_t{
313 "Actual.Eng.Percent.Torque",// generic_name
320 frequency_clock_t(0.00000f),// frequency
322 false,// force_send_changed
329 std::make_pair<bool, int>(false, 0),// multiplex
330 static_cast<sign_t>(0),// signed
331 -1,// bit_sign_position
334 {std::make_shared<signal_t> (signal_t{
335 "Drivers.Demand.Eng.Percent.Torque",// generic_name
342 frequency_clock_t(0.00000f),// frequency
344 false,// force_send_changed
351 std::make_pair<bool, int>(false, 0),// multiplex
352 static_cast<sign_t>(0),// signed
353 -1,// bit_sign_position
356 {std::make_shared<signal_t> (signal_t{
357 "Eng.Demand.Percent.Torque",// generic_name
364 frequency_clock_t(0.00000f),// frequency
366 false,// force_send_changed
373 std::make_pair<bool, int>(false, 0),// multiplex
374 static_cast<sign_t>(0),// signed
375 -1,// bit_sign_position
378 {std::make_shared<signal_t> (signal_t{
379 "Eng.Speed",// generic_name
386 frequency_clock_t(0.00000f),// frequency
388 false,// force_send_changed
395 std::make_pair<bool, int>(false, 0),// multiplex
396 static_cast<sign_t>(0),// signed
397 -1,// bit_sign_position
400 {std::make_shared<signal_t> (signal_t{
401 "Eng.Starter.Mode",// generic_name
408 frequency_clock_t(0.00000f),// frequency
410 false,// force_send_changed
416 {2,"starterActiveGearEngaged"},
417 {1,"starterActiveGearNotEngaged"},
418 {12,"starterInhibitedReasonUnknown"},
419 {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
420 {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
421 {5,"strtrInhbtdDTEngNtReadyForStart"},
422 {7,"strtrInhbtdDToActiveImmobilizer"},
423 {4,"strtrInhbtdDToEngAlreadyRunning"},
424 {8,"strtrInhbtdDueToStarterOvertemp"}
427 decoder_t::decode_state,// decoder
430 std::make_pair<bool, int>(false, 0),// multiplex
431 static_cast<sign_t>(0),// signed
432 -1,// bit_sign_position
435 {std::make_shared<signal_t> (signal_t{
436 "Eng.Torque.Mode",// generic_name
443 frequency_clock_t(0.00000f),// frequency
445 false,// force_send_changed
449 {1,"Accelerator pedal/operator selec"},
450 {10,"Braking system"},
451 {2,"Cruise control"},
452 {9,"High speed governor"},
453 {0,"Low idle governor/no request (de"},
454 {15,"Not available"},
456 {11,"Remote accelerator"},
457 {4,"Road speed governor"},
458 {8,"Torque limiting"},
459 {6,"Transmission control"}
462 decoder_t::decode_state,// decoder
465 std::make_pair<bool, int>(false, 0),// multiplex
466 static_cast<sign_t>(0),// signed
467 -1,// bit_sign_position
470 {std::make_shared<signal_t> (signal_t{
471 "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
478 frequency_clock_t(0.00000f),// frequency
480 false,// force_send_changed
487 std::make_pair<bool, int>(false, 0),// multiplex
488 static_cast<sign_t>(0),// signed
489 -1,// bit_sign_position
492 } // end signals vector
493 })} // end message_definition entry
494 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,8,frequency_clock_t(5.00000f),true,
495 { // beginning signals vector
496 {std::make_shared<signal_t> (signal_t{
497 "Lateral.Acceleration",// generic_name
500 0.000488281f,// factor
504 frequency_clock_t(0.00000f),// frequency
506 false,// force_send_changed
513 std::make_pair<bool, int>(false, 0),// multiplex
514 static_cast<sign_t>(0),// signed
515 -1,// bit_sign_position
518 {std::make_shared<signal_t> (signal_t{
519 "Longitudinal.Acceleration",// generic_name
526 frequency_clock_t(0.00000f),// frequency
528 false,// force_send_changed
535 std::make_pair<bool, int>(false, 0),// multiplex
536 static_cast<sign_t>(0),// signed
537 -1,// bit_sign_position
540 {std::make_shared<signal_t> (signal_t{
541 "Steer.Wheel.Angle",// generic_name
544 0.000976562f,// factor
548 frequency_clock_t(0.00000f),// frequency
550 false,// force_send_changed
557 std::make_pair<bool, int>(false, 0),// multiplex
558 static_cast<sign_t>(0),// signed
559 -1,// bit_sign_position
562 {std::make_shared<signal_t> (signal_t{
563 "Steer.Wheel.Angle.Sensor.Type",// generic_name
570 frequency_clock_t(0.00000f),// frequency
572 false,// force_send_changed
574 {1,"AbsMeasuringPrinciple"},
576 {0,"RelativeMeasuringPrinciple"},
580 decoder_t::decode_state,// decoder
583 std::make_pair<bool, int>(false, 0),// multiplex
584 static_cast<sign_t>(0),// signed
585 -1,// bit_sign_position
588 {std::make_shared<signal_t> (signal_t{
589 "Steer.Wheel.Turn.Counter",// generic_name
596 frequency_clock_t(0.00000f),// frequency
598 false,// force_send_changed
605 std::make_pair<bool, int>(false, 0),// multiplex
606 static_cast<sign_t>(0),// signed
607 -1,// bit_sign_position
610 {std::make_shared<signal_t> (signal_t{
611 "Yaw.Rate",// generic_name
614 0.000122070f,// factor
618 frequency_clock_t(0.00000f),// frequency
620 false,// force_send_changed
627 std::make_pair<bool, int>(false, 0),// multiplex
628 static_cast<sign_t>(0),// signed
629 -1,// bit_sign_position
632 } // end signals vector
633 })} // end message_definition entry
634 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,8,frequency_clock_t(5.00000f),true,
635 { // beginning signals vector
636 {std::make_shared<signal_t> (signal_t{
637 "Front.Axle.Speed",// generic_name
640 0.00390625f,// factor
644 frequency_clock_t(0.00000f),// frequency
646 false,// force_send_changed
653 std::make_pair<bool, int>(false, 0),// multiplex
654 static_cast<sign_t>(0),// signed
655 -1,// bit_sign_position
658 {std::make_shared<signal_t> (signal_t{
659 "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
666 frequency_clock_t(0.00000f),// frequency
668 false,// force_send_changed
675 std::make_pair<bool, int>(false, 0),// multiplex
676 static_cast<sign_t>(0),// signed
677 -1,// bit_sign_position
680 {std::make_shared<signal_t> (signal_t{
681 "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
688 frequency_clock_t(0.00000f),// frequency
690 false,// force_send_changed
697 std::make_pair<bool, int>(false, 0),// multiplex
698 static_cast<sign_t>(0),// signed
699 -1,// bit_sign_position
702 {std::make_shared<signal_t> (signal_t{
703 "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
710 frequency_clock_t(0.00000f),// frequency
712 false,// force_send_changed
719 std::make_pair<bool, int>(false, 0),// multiplex
720 static_cast<sign_t>(0),// signed
721 -1,// bit_sign_position
724 {std::make_shared<signal_t> (signal_t{
725 "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
732 frequency_clock_t(0.00000f),// frequency
734 false,// force_send_changed
741 std::make_pair<bool, int>(false, 0),// multiplex
742 static_cast<sign_t>(0),// signed
743 -1,// bit_sign_position
746 {std::make_shared<signal_t> (signal_t{
747 "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
754 frequency_clock_t(0.00000f),// frequency
756 false,// force_send_changed
763 std::make_pair<bool, int>(false, 0),// multiplex
764 static_cast<sign_t>(0),// signed
765 -1,// bit_sign_position
768 {std::make_shared<signal_t> (signal_t{
769 "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
776 frequency_clock_t(0.00000f),// frequency
778 false,// force_send_changed
785 std::make_pair<bool, int>(false, 0),// multiplex
786 static_cast<sign_t>(0),// signed
787 -1,// bit_sign_position
790 } // end signals vector
791 })} // end message_definition entry
792 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,8,frequency_clock_t(5.00000f),true,
793 { // beginning signals vector
794 {std::make_shared<signal_t> (signal_t{
795 "Eng.Total.Hours.Of.Operation",// generic_name
802 frequency_clock_t(0.00000f),// frequency
804 false,// force_send_changed
811 std::make_pair<bool, int>(false, 0),// multiplex
812 static_cast<sign_t>(0),// signed
813 -1,// bit_sign_position
816 {std::make_shared<signal_t> (signal_t{
817 "Eng.Total.Revolutions",// generic_name
824 frequency_clock_t(0.00000f),// frequency
826 false,// force_send_changed
833 std::make_pair<bool, int>(false, 0),// multiplex
834 static_cast<sign_t>(0),// signed
835 -1,// bit_sign_position
838 } // end signals vector
839 })} // end message_definition entry
840 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,8,frequency_clock_t(5.00000f),true,
841 { // beginning signals vector
842 {std::make_shared<signal_t> (signal_t{
843 "Eng.Coolant.Temp",// generic_name
850 frequency_clock_t(0.00000f),// frequency
852 false,// force_send_changed
859 std::make_pair<bool, int>(false, 0),// multiplex
860 static_cast<sign_t>(0),// signed
861 -1,// bit_sign_position
864 {std::make_shared<signal_t> (signal_t{
865 "Eng.Fuel.Temp1",// generic_name
872 frequency_clock_t(0.00000f),// frequency
874 false,// force_send_changed
881 std::make_pair<bool, int>(false, 0),// multiplex
882 static_cast<sign_t>(0),// signed
883 -1,// bit_sign_position
886 {std::make_shared<signal_t> (signal_t{
887 "Eng.Intercooler.Temp",// generic_name
894 frequency_clock_t(0.00000f),// frequency
896 false,// force_send_changed
903 std::make_pair<bool, int>(false, 0),// multiplex
904 static_cast<sign_t>(0),// signed
905 -1,// bit_sign_position
908 {std::make_shared<signal_t> (signal_t{
909 "Eng.Intercooler.Thermostat.Opening",// generic_name
916 frequency_clock_t(0.00000f),// frequency
918 false,// force_send_changed
925 std::make_pair<bool, int>(false, 0),// multiplex
926 static_cast<sign_t>(0),// signed
927 -1,// bit_sign_position
930 {std::make_shared<signal_t> (signal_t{
931 "Eng.Oil.Temp1",// generic_name
938 frequency_clock_t(0.00000f),// frequency
940 false,// force_send_changed
947 std::make_pair<bool, int>(false, 0),// multiplex
948 static_cast<sign_t>(0),// signed
949 -1,// bit_sign_position
952 {std::make_shared<signal_t> (signal_t{
953 "Eng.Turbo.Oil.Temp",// generic_name
960 frequency_clock_t(0.00000f),// frequency
962 false,// force_send_changed
969 std::make_pair<bool, int>(false, 0),// multiplex
970 static_cast<sign_t>(0),// signed
971 -1,// bit_sign_position
974 } // end signals vector
975 })} // end message_definition entry
976 }, // end message_definition vector
977 { // beginning diagnostic_messages_ vector
979 } // end diagnostic_messages_ vector
980 }); // end message_set entry
982 CTLP_ONLOAD(plugin, handle) {
983 afb_api_t api = (afb_api_t) plugin->api;
984 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
985 application_t* app = (application_t*) getExternalData(CtlConfig);
987 return app->add_message_set(cms);