1 #include <binding/application.hpp>
2 #include <can/can-decoder.hpp>
3 #include <can/can-encoder.hpp>
8 CTLP_CAPI_REGISTER("j1939-signals");
10 std::shared_ptr<message_set_t> cms = std::make_shared<message_set_t>(message_set_t{0,"Virtual J1939",
11 { // beginning message_definition_ vector
12 {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,"ETC1",8,4,true,frequency_clock_t(5.00000f),true,
13 { // beginning signals vector
14 {std::make_shared<signal_t> (signal_t{
15 "Eng.Momentary.Overspeed.Enable",// generic_name
22 frequency_clock_t(0.00000f),// frequency
24 false,// force_send_changed
26 {0,"MomentaryEngOverspeedIsDisabled"},
27 {1,"MomentaryEngOverspeedIsEnabled"},
32 decoder_t::decode_state,// decoder
35 std::make_pair<bool, int>(false, 0),// multiplex
36 false,// is_big_endian
37 static_cast<sign_t>(0),// signed
38 -1,// bit_sign_position
41 {std::make_shared<signal_t> (signal_t{
42 "Momentary.Eng.Max.Power.Enable",// generic_name
49 frequency_clock_t(0.00000f),// frequency
51 false,// force_send_changed
54 {1,"mmntarilyRqingMaxPowerAvailable"},
56 {0,"notRqingMaxPowerAvailable"}
59 decoder_t::decode_state,// decoder
62 std::make_pair<bool, int>(false, 0),// multiplex
63 false,// is_big_endian
64 static_cast<sign_t>(0),// signed
65 -1,// bit_sign_position
68 {std::make_shared<signal_t> (signal_t{
69 "Percent.Clutch.Slip",// generic_name
76 frequency_clock_t(0.00000f),// frequency
78 false,// force_send_changed
85 std::make_pair<bool, int>(false, 0),// multiplex
86 false,// is_big_endian
87 static_cast<sign_t>(0),// signed
88 -1,// bit_sign_position
91 {std::make_shared<signal_t> (signal_t{
92 "Progressive.Shift.Disable",// generic_name
99 frequency_clock_t(0.00000f),// frequency
101 false,// force_send_changed
103 {1,"ProgressiveShiftIsDisabled"},
104 {0,"ProgressiveShiftIsNotDisabled"},
109 decoder_t::decode_state,// decoder
112 std::make_pair<bool, int>(false, 0),// multiplex
113 false,// is_big_endian
114 static_cast<sign_t>(0),// signed
115 -1,// bit_sign_position
118 {std::make_shared<signal_t> (signal_t{
119 "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
126 frequency_clock_t(0.00000f),// frequency
128 false,// force_send_changed
135 std::make_pair<bool, int>(false, 0),// multiplex
136 false,// is_big_endian
137 static_cast<sign_t>(0),// signed
138 -1,// bit_sign_position
141 {std::make_shared<signal_t> (signal_t{
142 "Trans.Driveline.Engaged",// generic_name
149 frequency_clock_t(0.00000f),// frequency
151 false,// force_send_changed
153 {0,"DrivelineDisengaged"},
154 {1,"DrivelineEngaged"},
159 decoder_t::decode_state,// decoder
162 std::make_pair<bool, int>(false, 0),// multiplex
163 false,// is_big_endian
164 static_cast<sign_t>(0),// signed
165 -1,// bit_sign_position
168 {std::make_shared<signal_t> (signal_t{
169 "Trans.Input.Shaft.Speed",// generic_name
176 frequency_clock_t(0.00000f),// frequency
178 false,// force_send_changed
185 std::make_pair<bool, int>(false, 0),// multiplex
186 false,// is_big_endian
187 static_cast<sign_t>(0),// signed
188 -1,// bit_sign_position
191 {std::make_shared<signal_t> (signal_t{
192 "Trans.Output.Shaft.Speed",// generic_name
199 frequency_clock_t(0.00000f),// frequency
201 false,// force_send_changed
208 std::make_pair<bool, int>(false, 0),// multiplex
209 false,// is_big_endian
210 static_cast<sign_t>(0),// signed
211 -1,// bit_sign_position
214 {std::make_shared<signal_t> (signal_t{
215 "Trans.Shift.In.Process",// generic_name
222 frequency_clock_t(0.00000f),// frequency
224 false,// force_send_changed
228 {1,"ShiftInProcess"},
229 {0,"ShiftIsNotInProcess"}
232 decoder_t::decode_state,// decoder
235 std::make_pair<bool, int>(false, 0),// multiplex
236 false,// is_big_endian
237 static_cast<sign_t>(0),// signed
238 -1,// bit_sign_position
241 {std::make_shared<signal_t> (signal_t{
242 "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
249 frequency_clock_t(0.00000f),// frequency
251 false,// force_send_changed
255 {1,"TransitionIsInProcess"},
256 {0,"TransitionIsNotInProcess"}
259 decoder_t::decode_state,// decoder
262 std::make_pair<bool, int>(false, 0),// multiplex
263 false,// is_big_endian
264 static_cast<sign_t>(0),// signed
265 -1,// bit_sign_position
268 {std::make_shared<signal_t> (signal_t{
269 "Trns.Trque.Converter.Lockup.Engaged",// generic_name
276 frequency_clock_t(0.00000f),// frequency
278 false,// force_send_changed
282 {0,"TorqueConverterLockupDisengaged"},
283 {1,"TorqueConverterLockupEngaged"}
286 decoder_t::decode_state,// decoder
289 std::make_pair<bool, int>(false, 0),// multiplex
290 false,// is_big_endian
291 static_cast<sign_t>(0),// signed
292 -1,// bit_sign_position
295 } // end signals vector
296 })} // end message_definition entry
297 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,4,true,frequency_clock_t(5.00000f),true,
298 { // beginning signals vector
299 {std::make_shared<signal_t> (signal_t{
300 "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
307 frequency_clock_t(0.00000f),// frequency
309 false,// force_send_changed
314 {8,"1111NotAvailable"}
317 decoder_t::decode_state,// decoder
320 std::make_pair<bool, int>(false, 0),// multiplex
321 false,// is_big_endian
322 static_cast<sign_t>(0),// signed
323 -1,// bit_sign_position
326 {std::make_shared<signal_t> (signal_t{
327 "Actual.Eng.Percent.Torque",// generic_name
334 frequency_clock_t(0.00000f),// frequency
336 false,// force_send_changed
343 std::make_pair<bool, int>(false, 0),// multiplex
344 false,// is_big_endian
345 static_cast<sign_t>(0),// signed
346 -1,// bit_sign_position
349 {std::make_shared<signal_t> (signal_t{
350 "Drivers.Demand.Eng.Percent.Torque",// generic_name
357 frequency_clock_t(0.00000f),// frequency
359 false,// force_send_changed
366 std::make_pair<bool, int>(false, 0),// multiplex
367 false,// is_big_endian
368 static_cast<sign_t>(0),// signed
369 -1,// bit_sign_position
372 {std::make_shared<signal_t> (signal_t{
373 "Eng.Demand.Percent.Torque",// generic_name
380 frequency_clock_t(0.00000f),// frequency
382 false,// force_send_changed
389 std::make_pair<bool, int>(false, 0),// multiplex
390 false,// is_big_endian
391 static_cast<sign_t>(0),// signed
392 -1,// bit_sign_position
395 {std::make_shared<signal_t> (signal_t{
396 "Eng.Speed",// generic_name
403 frequency_clock_t(0.00000f),// frequency
405 false,// force_send_changed
412 std::make_pair<bool, int>(false, 0),// multiplex
413 false,// is_big_endian
414 static_cast<sign_t>(0),// signed
415 -1,// bit_sign_position
418 {std::make_shared<signal_t> (signal_t{
419 "Eng.Starter.Mode",// generic_name
426 frequency_clock_t(0.00000f),// frequency
428 false,// force_send_changed
434 {2,"starterActiveGearEngaged"},
435 {1,"starterActiveGearNotEngaged"},
436 {12,"starterInhibitedReasonUnknown"},
437 {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
438 {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
439 {5,"strtrInhbtdDTEngNtReadyForStart"},
440 {7,"strtrInhbtdDToActiveImmobilizer"},
441 {4,"strtrInhbtdDToEngAlreadyRunning"},
442 {8,"strtrInhbtdDueToStarterOvertemp"}
445 decoder_t::decode_state,// decoder
448 std::make_pair<bool, int>(false, 0),// multiplex
449 false,// is_big_endian
450 static_cast<sign_t>(0),// signed
451 -1,// bit_sign_position
454 {std::make_shared<signal_t> (signal_t{
455 "Eng.Torque.Mode",// generic_name
462 frequency_clock_t(0.00000f),// frequency
464 false,// force_send_changed
468 {1,"Accelerator pedal/operator selec"},
469 {10,"Braking system"},
470 {2,"Cruise control"},
471 {9,"High speed governor"},
472 {0,"Low idle governor/no request (de"},
473 {15,"Not available"},
475 {11,"Remote accelerator"},
476 {4,"Road speed governor"},
477 {8,"Torque limiting"},
478 {6,"Transmission control"}
481 decoder_t::decode_state,// decoder
484 std::make_pair<bool, int>(false, 0),// multiplex
485 false,// is_big_endian
486 static_cast<sign_t>(0),// signed
487 -1,// bit_sign_position
490 {std::make_shared<signal_t> (signal_t{
491 "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
498 frequency_clock_t(0.00000f),// frequency
500 false,// force_send_changed
507 std::make_pair<bool, int>(false, 0),// multiplex
508 false,// is_big_endian
509 static_cast<sign_t>(0),// signed
510 -1,// bit_sign_position
513 } // end signals vector
514 })} // end message_definition entry
515 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,4,true,frequency_clock_t(5.00000f),true,
516 { // beginning signals vector
517 {std::make_shared<signal_t> (signal_t{
518 "Lateral.Acceleration",// generic_name
521 0.000488281f,// factor
525 frequency_clock_t(0.00000f),// frequency
527 false,// force_send_changed
534 std::make_pair<bool, int>(false, 0),// multiplex
535 false,// is_big_endian
536 static_cast<sign_t>(0),// signed
537 -1,// bit_sign_position
540 {std::make_shared<signal_t> (signal_t{
541 "Longitudinal.Acceleration",// generic_name
548 frequency_clock_t(0.00000f),// frequency
550 false,// force_send_changed
557 std::make_pair<bool, int>(false, 0),// multiplex
558 false,// is_big_endian
559 static_cast<sign_t>(0),// signed
560 -1,// bit_sign_position
563 {std::make_shared<signal_t> (signal_t{
564 "Steer.Wheel.Angle",// generic_name
567 0.000976562f,// factor
571 frequency_clock_t(0.00000f),// frequency
573 false,// force_send_changed
580 std::make_pair<bool, int>(false, 0),// multiplex
581 false,// is_big_endian
582 static_cast<sign_t>(0),// signed
583 -1,// bit_sign_position
586 {std::make_shared<signal_t> (signal_t{
587 "Steer.Wheel.Angle.Sensor.Type",// generic_name
594 frequency_clock_t(0.00000f),// frequency
596 false,// force_send_changed
598 {1,"AbsMeasuringPrinciple"},
600 {0,"RelativeMeasuringPrinciple"},
604 decoder_t::decode_state,// decoder
607 std::make_pair<bool, int>(false, 0),// multiplex
608 false,// is_big_endian
609 static_cast<sign_t>(0),// signed
610 -1,// bit_sign_position
613 {std::make_shared<signal_t> (signal_t{
614 "Steer.Wheel.Turn.Counter",// generic_name
621 frequency_clock_t(0.00000f),// frequency
623 false,// force_send_changed
630 std::make_pair<bool, int>(false, 0),// multiplex
631 false,// is_big_endian
632 static_cast<sign_t>(0),// signed
633 -1,// bit_sign_position
636 {std::make_shared<signal_t> (signal_t{
637 "Yaw.Rate",// generic_name
640 0.000122070f,// factor
644 frequency_clock_t(0.00000f),// frequency
646 false,// force_send_changed
653 std::make_pair<bool, int>(false, 0),// multiplex
654 false,// is_big_endian
655 static_cast<sign_t>(0),// signed
656 -1,// bit_sign_position
659 } // end signals vector
660 })} // end message_definition entry
661 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,4,true,frequency_clock_t(5.00000f),true,
662 { // beginning signals vector
663 {std::make_shared<signal_t> (signal_t{
664 "Front.Axle.Speed",// generic_name
667 0.00390625f,// factor
671 frequency_clock_t(0.00000f),// frequency
673 false,// force_send_changed
680 std::make_pair<bool, int>(false, 0),// multiplex
681 false,// is_big_endian
682 static_cast<sign_t>(0),// signed
683 -1,// bit_sign_position
686 {std::make_shared<signal_t> (signal_t{
687 "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
694 frequency_clock_t(0.00000f),// frequency
696 false,// force_send_changed
703 std::make_pair<bool, int>(false, 0),// multiplex
704 false,// is_big_endian
705 static_cast<sign_t>(0),// signed
706 -1,// bit_sign_position
709 {std::make_shared<signal_t> (signal_t{
710 "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
717 frequency_clock_t(0.00000f),// frequency
719 false,// force_send_changed
726 std::make_pair<bool, int>(false, 0),// multiplex
727 false,// is_big_endian
728 static_cast<sign_t>(0),// signed
729 -1,// bit_sign_position
732 {std::make_shared<signal_t> (signal_t{
733 "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
740 frequency_clock_t(0.00000f),// frequency
742 false,// force_send_changed
749 std::make_pair<bool, int>(false, 0),// multiplex
750 false,// is_big_endian
751 static_cast<sign_t>(0),// signed
752 -1,// bit_sign_position
755 {std::make_shared<signal_t> (signal_t{
756 "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
763 frequency_clock_t(0.00000f),// frequency
765 false,// force_send_changed
772 std::make_pair<bool, int>(false, 0),// multiplex
773 false,// is_big_endian
774 static_cast<sign_t>(0),// signed
775 -1,// bit_sign_position
778 {std::make_shared<signal_t> (signal_t{
779 "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
786 frequency_clock_t(0.00000f),// frequency
788 false,// force_send_changed
795 std::make_pair<bool, int>(false, 0),// multiplex
796 false,// is_big_endian
797 static_cast<sign_t>(0),// signed
798 -1,// bit_sign_position
801 {std::make_shared<signal_t> (signal_t{
802 "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
809 frequency_clock_t(0.00000f),// frequency
811 false,// force_send_changed
818 std::make_pair<bool, int>(false, 0),// multiplex
819 false,// is_big_endian
820 static_cast<sign_t>(0),// signed
821 -1,// bit_sign_position
824 } // end signals vector
825 })} // end message_definition entry
826 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,4,true,frequency_clock_t(5.00000f),true,
827 { // beginning signals vector
828 {std::make_shared<signal_t> (signal_t{
829 "Eng.Total.Hours.Of.Operation",// generic_name
836 frequency_clock_t(0.00000f),// frequency
838 false,// force_send_changed
845 std::make_pair<bool, int>(false, 0),// multiplex
846 false,// is_big_endian
847 static_cast<sign_t>(0),// signed
848 -1,// bit_sign_position
851 {std::make_shared<signal_t> (signal_t{
852 "Eng.Total.Revolutions",// generic_name
859 frequency_clock_t(0.00000f),// frequency
861 false,// force_send_changed
868 std::make_pair<bool, int>(false, 0),// multiplex
869 false,// is_big_endian
870 static_cast<sign_t>(0),// signed
871 -1,// bit_sign_position
874 } // end signals vector
875 })} // end message_definition entry
876 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,4,true,frequency_clock_t(5.00000f),true,
877 { // beginning signals vector
878 {std::make_shared<signal_t> (signal_t{
879 "Eng.Coolant.Temp",// generic_name
886 frequency_clock_t(0.00000f),// frequency
888 false,// force_send_changed
895 std::make_pair<bool, int>(false, 0),// multiplex
896 false,// is_big_endian
897 static_cast<sign_t>(0),// signed
898 -1,// bit_sign_position
901 {std::make_shared<signal_t> (signal_t{
902 "Eng.Fuel.Temp1",// generic_name
909 frequency_clock_t(0.00000f),// frequency
911 false,// force_send_changed
918 std::make_pair<bool, int>(false, 0),// multiplex
919 false,// is_big_endian
920 static_cast<sign_t>(0),// signed
921 -1,// bit_sign_position
924 {std::make_shared<signal_t> (signal_t{
925 "Eng.Intercooler.Temp",// generic_name
932 frequency_clock_t(0.00000f),// frequency
934 false,// force_send_changed
941 std::make_pair<bool, int>(false, 0),// multiplex
942 false,// is_big_endian
943 static_cast<sign_t>(0),// signed
944 -1,// bit_sign_position
947 {std::make_shared<signal_t> (signal_t{
948 "Eng.Intercooler.Thermostat.Opening",// generic_name
955 frequency_clock_t(0.00000f),// frequency
957 false,// force_send_changed
964 std::make_pair<bool, int>(false, 0),// multiplex
965 false,// is_big_endian
966 static_cast<sign_t>(0),// signed
967 -1,// bit_sign_position
970 {std::make_shared<signal_t> (signal_t{
971 "Eng.Oil.Temp1",// generic_name
978 frequency_clock_t(0.00000f),// frequency
980 false,// force_send_changed
987 std::make_pair<bool, int>(false, 0),// multiplex
988 false,// is_big_endian
989 static_cast<sign_t>(0),// signed
990 -1,// bit_sign_position
993 {std::make_shared<signal_t> (signal_t{
994 "Eng.Turbo.Oil.Temp",// generic_name
1001 frequency_clock_t(0.00000f),// frequency
1003 false,// force_send_changed
1010 std::make_pair<bool, int>(false, 0),// multiplex
1011 false,// is_big_endian
1012 static_cast<sign_t>(0),// signed
1013 -1,// bit_sign_position
1016 } // end signals vector
1017 })} // end message_definition entry
1019 }, // end message_definition vector
1020 { // beginning diagnostic_messages_ vector
1022 } // end diagnostic_messages_ vector
1025 CTLP_ONLOAD(plugin, handle)
1027 afb_api_t api = (afb_api_t) plugin->api;
1028 CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api);
1029 application_t* app = (application_t*) getExternalData(CtlConfig);
1031 return app->add_message_set(cms);