#include #include #include extern "C" { CTLP_CAPI_REGISTER("virtual-j1939"); std::shared_ptr cms = std::make_shared(message_set_t{0,"Virtual J1939", { // beginning message_definition_ vector {std::make_shared(message_definition_t{"j1939",61442,"ETC1",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Eng.Momentary.Overspeed.Enable",// generic_name 32,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {0,"MomentaryEngOverspeedIsDisabled"}, {1,"MomentaryEngOverspeedIsEnabled"}, {2,"Reserved"}, {3,"TakeNoAction"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Momentary.Eng.Max.Power.Enable",// generic_name 36,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {2,"fault"}, {1,"mmntarilyRqingMaxPowerAvailable"}, {3,"notAvailable"}, {0,"notRqingMaxPowerAvailable"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Percent.Clutch.Slip",// generic_name 24,// bit_position 8,// bit_size 0.400000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states true,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Progressive.Shift.Disable",// generic_name 34,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {1,"ProgressiveShiftIsDisabled"}, {0,"ProgressiveShiftIsNotDisabled"}, {2,"Reserved"}, {3,"TakeNoAction"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Src.Addrss.Of.Ctrllng.Dvc.Fr.Trns.Cntrl",// generic_name 56,// bit_position 8,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states true,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Trans.Driveline.Engaged",// generic_name 0,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {0,"DrivelineDisengaged"}, {1,"DrivelineEngaged"}, {2,"Error"}, {3,"NotAvailable"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Trans.Input.Shaft.Speed",// generic_name 40,// bit_position 16,// bit_size 0.125000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states true,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "rpm"// unit })}, {std::make_shared (signal_t{ "Trans.Output.Shaft.Speed",// generic_name 8,// bit_position 16,// bit_size 0.125000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states true,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "rpm"// unit })}, {std::make_shared (signal_t{ "Trans.Shift.In.Process",// generic_name 4,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {2,"Error"}, {3,"NotAvailable"}, {1,"ShiftInProcess"}, {0,"ShiftIsNotInProcess"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Trns.Trq.Cnvrtr.Lckp.Trnstn.In.Prcess",// generic_name 6,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {2,"Error"}, {3,"NotAvailable"}, {1,"TransitionIsInProcess"}, {0,"TransitionIsNotInProcess"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Trns.Trque.Converter.Lockup.Engaged",// generic_name 2,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {2,"Error"}, {3,"NotAvailable"}, {0,"TorqueConverterLockupDisengaged"}, {1,"TorqueConverterLockupEngaged"} },// states true,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })} } // end signals vector })} // end message_definition entry , {std::make_shared(message_definition_t{"j1939",61444,"EEC1",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Actl.Eng.Prcnt.Trque.High.Resolution",// generic_name 4,// bit_position 4,// bit_size 0.125000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {0,"0000"}, {1,"0125"}, {7,"0875"}, {8,"1111NotAvailable"} },// states false,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Actual.Eng.Percent.Torque",// generic_name 16,// bit_position 8,// bit_size 1.00000f,// factor -125.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Drivers.Demand.Eng.Percent.Torque",// generic_name 8,// bit_position 8,// bit_size 1.00000f,// factor -125.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Eng.Demand.Percent.Torque",// generic_name 56,// bit_position 8,// bit_size 1.00000f,// factor -125.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Eng.Speed",// generic_name 24,// bit_position 16,// bit_size 0.125000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "rpm"// unit })}, {std::make_shared (signal_t{ "Eng.Starter.Mode",// generic_name 48,// bit_position 4,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {9,"1011Reserved"}, {14,"error"}, {15,"notAvailable"}, {0,"startNotRqed"}, {2,"starterActiveGearEngaged"}, {1,"starterActiveGearNotEngaged"}, {12,"starterInhibitedReasonUnknown"}, {3,"strtFnshdStrtrNtActvAftrHvngBnA"}, {6,"strtrInhbtdDTDrvlnEnggdOthrTrns"}, {5,"strtrInhbtdDTEngNtReadyForStart"}, {7,"strtrInhbtdDToActiveImmobilizer"}, {4,"strtrInhbtdDToEngAlreadyRunning"}, {8,"strtrInhbtdDueToStarterOvertemp"} },// states false,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Eng.Torque.Mode",// generic_name 0,// bit_position 4,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {7,"ABS control"}, {5,"ASR control"}, {1,"Accelerator pedal/operator selec"}, {10,"Braking system"}, {2,"Cruise control"}, {9,"High speed governor"}, {0,"Low idle governor/no request (de"}, {15,"Not available"}, {3,"PTO governor"}, {11,"Remote accelerator"}, {4,"Road speed governor"}, {8,"Torque limiting"}, {6,"Transmission control"} },// states false,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Src.AddrssOf.Ctrllng.Dvc.Fr.Eng.Cntrl",// generic_name 40,// bit_position 8,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })} } // end signals vector })} // end message_definition entry , {std::make_shared(message_definition_t{"j1939",61449,"VDC2",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Lateral.Acceleration",// generic_name 40,// bit_position 16,// bit_size 0.000488281f,// factor -15.6870f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "m/s/s"// unit })}, {std::make_shared (signal_t{ "Longitudinal.Acceleration",// generic_name 56,// bit_position 8,// bit_size 0.100000f,// factor -12.5000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "m/s/s"// unit })}, {std::make_shared (signal_t{ "Steer.Wheel.Angle",// generic_name 0,// bit_position 16,// bit_size 0.000976562f,// factor -31.3740f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "rad"// unit })}, {std::make_shared (signal_t{ "Steer.Wheel.Angle.Sensor.Type",// generic_name 22,// bit_position 2,// bit_size 1.00000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { {1,"AbsMeasuringPrinciple"}, {3,"NotAvailable"}, {0,"RelativeMeasuringPrinciple"}, {2,"Reserved"} },// states false,// writable decoder_t::decode_state,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position ""// unit })}, {std::make_shared (signal_t{ "Steer.Wheel.Turn.Counter",// generic_name 16,// bit_position 6,// bit_size 1.00000f,// factor -32.0000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "turns"// unit })}, {std::make_shared (signal_t{ "Yaw.Rate",// generic_name 24,// bit_position 16,// bit_size 0.000122070f,// factor -3.92000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "rad/s"// unit })} } // end signals vector })} // end message_definition entry , {std::make_shared(message_definition_t{"j1939",65215,"EBC2",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Front.Axle.Speed",// generic_name 0,// bit_position 16,// bit_size 0.00390625f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Relative.Speed.Front.Axle.Left.Wheel",// generic_name 16,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Relative.Speed.Rear.Axle1.Left.Wheel",// generic_name 32,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Relative.Speed.Rear.Axle2.Left.Wheel",// generic_name 48,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Rlative.Speed.Front.Axle.Right.Wheel",// generic_name 24,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Rlative.Speed.Rear.Axle1.Right.Wheel",// generic_name 40,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })}, {std::make_shared (signal_t{ "Rlative.Speed.Rear.Axle2.Right.Wheel",// generic_name 56,// bit_position 8,// bit_size 0.0625000f,// factor -7.81250f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "km/h"// unit })} } // end signals vector })} // end message_definition entry , {std::make_shared(message_definition_t{"j1939",65253,"HOURS",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Eng.Total.Hours.Of.Operation",// generic_name 0,// bit_position 32,// bit_size 0.0500000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "hr"// unit })}, {std::make_shared (signal_t{ "Eng.Total.Revolutions",// generic_name 32,// bit_position 32,// bit_size 1000.00f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "r"// unit })} } // end signals vector })} // end message_definition entry , {std::make_shared(message_definition_t{"j1939",65262,"ET1",8,8,frequency_clock_t(5.00000f),true, { // beginning signals vector {std::make_shared (signal_t{ "Eng.Coolant.Temp",// generic_name 0,// bit_position 8,// bit_size 0.0312500f,// factor -273.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "deg C"// unit })}, {std::make_shared (signal_t{ "Eng.Fuel.Temp1",// generic_name 8,// bit_position 8,// bit_size 1.00000f,// factor -40.0000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "deg C"// unit })}, {std::make_shared (signal_t{ "Eng.Intercooler.Temp",// generic_name 48,// bit_position 8,// bit_size 1.00000f,// factor -40.0000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "deg C"// unit })}, {std::make_shared (signal_t{ "Eng.Intercooler.Thermostat.Opening",// generic_name 56,// bit_position 8,// bit_size 0.400000f,// factor 0.00000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "%"// unit })}, {std::make_shared (signal_t{ "Eng.Oil.Temp1",// generic_name 16,// bit_position 16,// bit_size 0.0312500f,// factor -273.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "deg C"// unit })}, {std::make_shared (signal_t{ "Eng.Turbo.Oil.Temp",// generic_name 32,// bit_position 16,// bit_size 0.0312500f,// factor -273.000f,// offset 0,// min_value 0,// max_value frequency_clock_t(0.00000f),// frequency true,// send_same false,// force_send_changed { },// states false,// writable nullptr,// decoder nullptr,// encoder false,// received std::make_pair(false, 0),// multiplex static_cast(0),// signed -1,// bit_sign_position "deg C"// unit })} } // end signals vector })} // end message_definition entry }, // end message_definition vector { // beginning diagnostic_messages_ vector } // end diagnostic_messages_ vector }); // end message_set entry CTLP_ONLOAD(plugin, handle) { afb_api_t api = (afb_api_t) plugin->api; CtlConfigT* CtlConfig = (CtlConfigT*) afb_api_get_userdata(api); application_t* app = (application_t*) getExternalData(CtlConfig); return app->add_message_set(cms); } }