1 #include "application.hpp"
2 #include "../can/can-decoder.hpp"
3 #include "../can/can-encoder.hpp"
5 application_t::application_t()
6 : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
8 {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,4,true,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 false,// is_big_endian
35 static_cast<sign_t>(0),// signed
36 -1,// bit_sign_position
39 {std::make_shared<signal_t> (signal_t{
40 "Momentary.Eng.Max.Power.Enable",// generic_name
47 frequency_clock_t(0.00000f),// frequency
49 false,// force_send_changed
52 {1,"mmntarilyRqingMaxPowerAvailable"},
54 {0,"notRqingMaxPowerAvailable"}
57 decoder_t::decode_state,// decoder
60 std::make_pair<bool, int>(false, 0),// multiplex
61 false,// is_big_endian
62 static_cast<sign_t>(0),// signed
63 -1,// bit_sign_position
66 {std::make_shared<signal_t> (signal_t{
67 "Percent.Clutch.Slip",// generic_name
74 frequency_clock_t(0.00000f),// frequency
76 false,// force_send_changed
83 std::make_pair<bool, int>(false, 0),// multiplex
84 false,// is_big_endian
85 static_cast<sign_t>(0),// signed
86 -1,// bit_sign_position
89 {std::make_shared<signal_t> (signal_t{
90 "Progressive.Shift.Disable",// generic_name
97 frequency_clock_t(0.00000f),// frequency
99 false,// force_send_changed
101 {1,"ProgressiveShiftIsDisabled"},
102 {0,"ProgressiveShiftIsNotDisabled"},
107 decoder_t::decode_state,// decoder
110 std::make_pair<bool, int>(false, 0),// multiplex
111 false,// is_big_endian
112 static_cast<sign_t>(0),// signed
113 -1,// bit_sign_position
116 {std::make_shared<signal_t> (signal_t{
117 "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name
124 frequency_clock_t(0.00000f),// frequency
126 false,// force_send_changed
133 std::make_pair<bool, int>(false, 0),// multiplex
134 false,// is_big_endian
135 static_cast<sign_t>(0),// signed
136 -1,// bit_sign_position
139 {std::make_shared<signal_t> (signal_t{
140 "Trans.Driveline.Engaged",// generic_name
147 frequency_clock_t(0.00000f),// frequency
149 false,// force_send_changed
151 {0,"DrivelineDisengaged"},
152 {1,"DrivelineEngaged"},
157 decoder_t::decode_state,// decoder
160 std::make_pair<bool, int>(false, 0),// multiplex
161 false,// is_big_endian
162 static_cast<sign_t>(0),// signed
163 -1,// bit_sign_position
166 {std::make_shared<signal_t> (signal_t{
167 "Trans.Input.Shaft.Speed",// generic_name
174 frequency_clock_t(0.00000f),// frequency
176 false,// force_send_changed
183 std::make_pair<bool, int>(false, 0),// multiplex
184 false,// is_big_endian
185 static_cast<sign_t>(0),// signed
186 -1,// bit_sign_position
189 {std::make_shared<signal_t> (signal_t{
190 "Trans.Output.Shaft.Speed",// generic_name
197 frequency_clock_t(0.00000f),// frequency
199 false,// force_send_changed
206 std::make_pair<bool, int>(false, 0),// multiplex
207 false,// is_big_endian
208 static_cast<sign_t>(0),// signed
209 -1,// bit_sign_position
212 {std::make_shared<signal_t> (signal_t{
213 "Trans.Shift.In.Process",// generic_name
220 frequency_clock_t(0.00000f),// frequency
222 false,// force_send_changed
226 {1,"ShiftInProcess"},
227 {0,"ShiftIsNotInProcess"}
230 decoder_t::decode_state,// decoder
233 std::make_pair<bool, int>(false, 0),// multiplex
234 false,// is_big_endian
235 static_cast<sign_t>(0),// signed
236 -1,// bit_sign_position
239 {std::make_shared<signal_t> (signal_t{
240 "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name
247 frequency_clock_t(0.00000f),// frequency
249 false,// force_send_changed
253 {1,"TransitionIsInProcess"},
254 {0,"TransitionIsNotInProcess"}
257 decoder_t::decode_state,// decoder
260 std::make_pair<bool, int>(false, 0),// multiplex
261 false,// is_big_endian
262 static_cast<sign_t>(0),// signed
263 -1,// bit_sign_position
266 {std::make_shared<signal_t> (signal_t{
267 "Trns.Trque.Converter.Lockup.Engaged",// generic_name
274 frequency_clock_t(0.00000f),// frequency
276 false,// force_send_changed
280 {0,"TorqueConverterLockupDisengaged"},
281 {1,"TorqueConverterLockupEngaged"}
284 decoder_t::decode_state,// decoder
287 std::make_pair<bool, int>(false, 0),// multiplex
288 false,// is_big_endian
289 static_cast<sign_t>(0),// signed
290 -1,// bit_sign_position
293 } // end signals vector
294 })} // end message_definition entry
295 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61444,"EEC1",8,4,true,frequency_clock_t(5.00000f),true,
296 { // beginning signals vector
297 {std::make_shared<signal_t> (signal_t{
298 "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name
305 frequency_clock_t(0.00000f),// frequency
307 false,// force_send_changed
312 {8,"1111NotAvailable"}
315 decoder_t::decode_state,// decoder
318 std::make_pair<bool, int>(false, 0),// multiplex
319 false,// is_big_endian
320 static_cast<sign_t>(0),// signed
321 -1,// bit_sign_position
324 {std::make_shared<signal_t> (signal_t{
325 "Actual.Eng.Percent.Torque",// generic_name
332 frequency_clock_t(0.00000f),// frequency
334 false,// force_send_changed
341 std::make_pair<bool, int>(false, 0),// multiplex
342 false,// is_big_endian
343 static_cast<sign_t>(0),// signed
344 -1,// bit_sign_position
347 {std::make_shared<signal_t> (signal_t{
348 "Drivers.Demand.Eng.Percent.Torque",// generic_name
355 frequency_clock_t(0.00000f),// frequency
357 false,// force_send_changed
364 std::make_pair<bool, int>(false, 0),// multiplex
365 false,// is_big_endian
366 static_cast<sign_t>(0),// signed
367 -1,// bit_sign_position
370 {std::make_shared<signal_t> (signal_t{
371 "Eng.Demand.Percent.Torque",// generic_name
378 frequency_clock_t(0.00000f),// frequency
380 false,// force_send_changed
387 std::make_pair<bool, int>(false, 0),// multiplex
388 false,// is_big_endian
389 static_cast<sign_t>(0),// signed
390 -1,// bit_sign_position
393 {std::make_shared<signal_t> (signal_t{
394 "Eng.Speed",// generic_name
401 frequency_clock_t(0.00000f),// frequency
403 false,// force_send_changed
410 std::make_pair<bool, int>(false, 0),// multiplex
411 false,// is_big_endian
412 static_cast<sign_t>(0),// signed
413 -1,// bit_sign_position
416 {std::make_shared<signal_t> (signal_t{
417 "Eng.Starter.Mode",// generic_name
424 frequency_clock_t(0.00000f),// frequency
426 false,// force_send_changed
432 {2,"starterActiveGearEngaged"},
433 {1,"starterActiveGearNotEngaged"},
434 {12,"starterInhibitedReasonUnknown"},
435 {3,"strtFnshdStrtrNtActvAftrHvngBnA"},
436 {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"},
437 {5,"strtrInhbtdDTEngNtReadyForStart"},
438 {7,"strtrInhbtdDToActiveImmobilizer"},
439 {4,"strtrInhbtdDToEngAlreadyRunning"},
440 {8,"strtrInhbtdDueToStarterOvertemp"}
443 decoder_t::decode_state,// decoder
446 std::make_pair<bool, int>(false, 0),// multiplex
447 false,// is_big_endian
448 static_cast<sign_t>(0),// signed
449 -1,// bit_sign_position
452 {std::make_shared<signal_t> (signal_t{
453 "Eng.Torque.Mode",// generic_name
460 frequency_clock_t(0.00000f),// frequency
462 false,// force_send_changed
466 {1,"Accelerator pedal/operator selec"},
467 {10,"Braking system"},
468 {2,"Cruise control"},
469 {9,"High speed governor"},
470 {0,"Low idle governor/no request (de"},
471 {15,"Not available"},
473 {11,"Remote accelerator"},
474 {4,"Road speed governor"},
475 {8,"Torque limiting"},
476 {6,"Transmission control"}
479 decoder_t::decode_state,// decoder
482 std::make_pair<bool, int>(false, 0),// multiplex
483 false,// is_big_endian
484 static_cast<sign_t>(0),// signed
485 -1,// bit_sign_position
488 {std::make_shared<signal_t> (signal_t{
489 "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name
496 frequency_clock_t(0.00000f),// frequency
498 false,// force_send_changed
505 std::make_pair<bool, int>(false, 0),// multiplex
506 false,// is_big_endian
507 static_cast<sign_t>(0),// signed
508 -1,// bit_sign_position
511 } // end signals vector
512 })} // end message_definition entry
513 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,"VDC2",8,4,true,frequency_clock_t(5.00000f),true,
514 { // beginning signals vector
515 {std::make_shared<signal_t> (signal_t{
516 "Lateral.Acceleration",// generic_name
519 0.000488281f,// factor
523 frequency_clock_t(0.00000f),// frequency
525 false,// force_send_changed
532 std::make_pair<bool, int>(false, 0),// multiplex
533 false,// is_big_endian
534 static_cast<sign_t>(0),// signed
535 -1,// bit_sign_position
538 {std::make_shared<signal_t> (signal_t{
539 "Longitudinal.Acceleration",// generic_name
546 frequency_clock_t(0.00000f),// frequency
548 false,// force_send_changed
555 std::make_pair<bool, int>(false, 0),// multiplex
556 false,// is_big_endian
557 static_cast<sign_t>(0),// signed
558 -1,// bit_sign_position
561 {std::make_shared<signal_t> (signal_t{
562 "Steer.Wheel.Angle",// generic_name
565 0.000976562f,// factor
569 frequency_clock_t(0.00000f),// frequency
571 false,// force_send_changed
578 std::make_pair<bool, int>(false, 0),// multiplex
579 false,// is_big_endian
580 static_cast<sign_t>(0),// signed
581 -1,// bit_sign_position
584 {std::make_shared<signal_t> (signal_t{
585 "Steer.Wheel.Angle.Sensor.Type",// generic_name
592 frequency_clock_t(0.00000f),// frequency
594 false,// force_send_changed
596 {1,"AbsMeasuringPrinciple"},
598 {0,"RelativeMeasuringPrinciple"},
602 decoder_t::decode_state,// decoder
605 std::make_pair<bool, int>(false, 0),// multiplex
606 false,// is_big_endian
607 static_cast<sign_t>(0),// signed
608 -1,// bit_sign_position
611 {std::make_shared<signal_t> (signal_t{
612 "Steer.Wheel.Turn.Counter",// generic_name
619 frequency_clock_t(0.00000f),// frequency
621 false,// force_send_changed
628 std::make_pair<bool, int>(false, 0),// multiplex
629 false,// is_big_endian
630 static_cast<sign_t>(0),// signed
631 -1,// bit_sign_position
634 {std::make_shared<signal_t> (signal_t{
635 "Yaw.Rate",// generic_name
638 0.000122070f,// factor
642 frequency_clock_t(0.00000f),// frequency
644 false,// force_send_changed
651 std::make_pair<bool, int>(false, 0),// multiplex
652 false,// is_big_endian
653 static_cast<sign_t>(0),// signed
654 -1,// bit_sign_position
657 } // end signals vector
658 })} // end message_definition entry
659 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65215,"EBC2",8,4,true,frequency_clock_t(5.00000f),true,
660 { // beginning signals vector
661 {std::make_shared<signal_t> (signal_t{
662 "Front.Axle.Speed",// generic_name
665 0.00390625f,// factor
669 frequency_clock_t(0.00000f),// frequency
671 false,// force_send_changed
678 std::make_pair<bool, int>(false, 0),// multiplex
679 false,// is_big_endian
680 static_cast<sign_t>(0),// signed
681 -1,// bit_sign_position
684 {std::make_shared<signal_t> (signal_t{
685 "Relative.Speed.Front.Axle.Left.Wheel",// generic_name
692 frequency_clock_t(0.00000f),// frequency
694 false,// force_send_changed
701 std::make_pair<bool, int>(false, 0),// multiplex
702 false,// is_big_endian
703 static_cast<sign_t>(0),// signed
704 -1,// bit_sign_position
707 {std::make_shared<signal_t> (signal_t{
708 "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name
715 frequency_clock_t(0.00000f),// frequency
717 false,// force_send_changed
724 std::make_pair<bool, int>(false, 0),// multiplex
725 false,// is_big_endian
726 static_cast<sign_t>(0),// signed
727 -1,// bit_sign_position
730 {std::make_shared<signal_t> (signal_t{
731 "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name
738 frequency_clock_t(0.00000f),// frequency
740 false,// force_send_changed
747 std::make_pair<bool, int>(false, 0),// multiplex
748 false,// is_big_endian
749 static_cast<sign_t>(0),// signed
750 -1,// bit_sign_position
753 {std::make_shared<signal_t> (signal_t{
754 "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name
761 frequency_clock_t(0.00000f),// frequency
763 false,// force_send_changed
770 std::make_pair<bool, int>(false, 0),// multiplex
771 false,// is_big_endian
772 static_cast<sign_t>(0),// signed
773 -1,// bit_sign_position
776 {std::make_shared<signal_t> (signal_t{
777 "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name
784 frequency_clock_t(0.00000f),// frequency
786 false,// force_send_changed
793 std::make_pair<bool, int>(false, 0),// multiplex
794 false,// is_big_endian
795 static_cast<sign_t>(0),// signed
796 -1,// bit_sign_position
799 {std::make_shared<signal_t> (signal_t{
800 "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name
807 frequency_clock_t(0.00000f),// frequency
809 false,// force_send_changed
816 std::make_pair<bool, int>(false, 0),// multiplex
817 false,// is_big_endian
818 static_cast<sign_t>(0),// signed
819 -1,// bit_sign_position
822 } // end signals vector
823 })} // end message_definition entry
824 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,"HOURS",8,4,true,frequency_clock_t(5.00000f),true,
825 { // beginning signals vector
826 {std::make_shared<signal_t> (signal_t{
827 "Eng.Total.Hours.Of.Operation",// generic_name
834 frequency_clock_t(0.00000f),// frequency
836 false,// force_send_changed
843 std::make_pair<bool, int>(false, 0),// multiplex
844 false,// is_big_endian
845 static_cast<sign_t>(0),// signed
846 -1,// bit_sign_position
849 {std::make_shared<signal_t> (signal_t{
850 "Eng.Total.Revolutions",// generic_name
857 frequency_clock_t(0.00000f),// frequency
859 false,// force_send_changed
866 std::make_pair<bool, int>(false, 0),// multiplex
867 false,// is_big_endian
868 static_cast<sign_t>(0),// signed
869 -1,// bit_sign_position
872 } // end signals vector
873 })} // end message_definition entry
874 , {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,"ET1",8,4,true,frequency_clock_t(5.00000f),true,
875 { // beginning signals vector
876 {std::make_shared<signal_t> (signal_t{
877 "Eng.Coolant.Temp",// generic_name
884 frequency_clock_t(0.00000f),// frequency
886 false,// force_send_changed
893 std::make_pair<bool, int>(false, 0),// multiplex
894 false,// is_big_endian
895 static_cast<sign_t>(0),// signed
896 -1,// bit_sign_position
899 {std::make_shared<signal_t> (signal_t{
900 "Eng.Fuel.Temp1",// generic_name
907 frequency_clock_t(0.00000f),// frequency
909 false,// force_send_changed
916 std::make_pair<bool, int>(false, 0),// multiplex
917 false,// is_big_endian
918 static_cast<sign_t>(0),// signed
919 -1,// bit_sign_position
922 {std::make_shared<signal_t> (signal_t{
923 "Eng.Intercooler.Temp",// generic_name
930 frequency_clock_t(0.00000f),// frequency
932 false,// force_send_changed
939 std::make_pair<bool, int>(false, 0),// multiplex
940 false,// is_big_endian
941 static_cast<sign_t>(0),// signed
942 -1,// bit_sign_position
945 {std::make_shared<signal_t> (signal_t{
946 "Eng.Intercooler.Thermostat.Opening",// generic_name
953 frequency_clock_t(0.00000f),// frequency
955 false,// force_send_changed
962 std::make_pair<bool, int>(false, 0),// multiplex
963 false,// is_big_endian
964 static_cast<sign_t>(0),// signed
965 -1,// bit_sign_position
968 {std::make_shared<signal_t> (signal_t{
969 "Eng.Oil.Temp1",// generic_name
976 frequency_clock_t(0.00000f),// frequency
978 false,// force_send_changed
985 std::make_pair<bool, int>(false, 0),// multiplex
986 false,// is_big_endian
987 static_cast<sign_t>(0),// signed
988 -1,// bit_sign_position
991 {std::make_shared<signal_t> (signal_t{
992 "Eng.Turbo.Oil.Temp",// generic_name
999 frequency_clock_t(0.00000f),// frequency
1001 false,// force_send_changed
1008 std::make_pair<bool, int>(false, 0),// multiplex
1009 false,// is_big_endian
1010 static_cast<sign_t>(0),// signed
1011 -1,// bit_sign_position
1014 } // end signals vector
1015 })} // end message_definition entry
1017 }, // end message_definition vector
1018 { // beginning diagnostic_messages_ vector
1020 } // end diagnostic_messages_ vector
1021 })} // end message_set entry
1022 } // end message_set vector
1024 for(std::shared_ptr<message_set_t> cms: message_set_)
1026 std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
1027 for(std::shared_ptr<message_definition_t> cmd : messages_definition)
1029 cmd->set_parent(cms);
1030 std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
1031 for(std::shared_ptr<signal_t> sig: signals)
1033 sig->set_parent(cmd);
1037 std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
1038 for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
1040 dm->set_parent(cms);
1045 const std::string application_t::get_diagnostic_bus() const