summaryrefslogtreecommitdiffstats
path: root/examples/j1939
diff options
context:
space:
mode:
Diffstat (limited to 'examples/j1939')
-rw-r--r--examples/j1939/Source2
-rw-r--r--examples/j1939/application-generated.cpp672
-rw-r--r--examples/j1939/j1939_parse.json576
3 files changed, 1250 insertions, 0 deletions
diff --git a/examples/j1939/Source b/examples/j1939/Source
new file mode 100644
index 00000000..9539d4f8
--- /dev/null
+++ b/examples/j1939/Source
@@ -0,0 +1,2 @@
+The json file is inspired by the following folder :
+https://github.com/tomahawkins/ecu \ No newline at end of file
diff --git a/examples/j1939/application-generated.cpp b/examples/j1939/application-generated.cpp
new file mode 100644
index 00000000..ebb580a6
--- /dev/null
+++ b/examples/j1939/application-generated.cpp
@@ -0,0 +1,672 @@
+#include "application.hpp"
+#include "../can/can-decoder.hpp"
+#include "../can/can-encoder.hpp"
+
+application_t::application_t()
+ : can_bus_manager_{utils::config_parser_t{"/etc/dev-mapping.conf"}}
+ , message_set_{
+ {std::make_shared<message_set_t>(message_set_t{0,"J1939",
+ { // beginning message_definition_ vector
+
+ {std::make_shared<message_definition_t>(message_definition_t{"j1939",61442,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+ { // beginning signals vector
+ {std::make_shared<signal_t> (signal_t{
+ "EngMomentaryOverspeedEnable",// generic_name
+ 32,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to"// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "MomentaryEngMaxPowerEnable",// generic_name
+ 36,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Momentarily Requesting highest torque map from the engine control"// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "PercentClutchSlip",// generic_name
+ 24,// bit_position
+ 8,// bit_size
+ 0.400000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "%",// unit
+ "Parameter which represents the ratio of input shaft speed to current engine speed (in percent)."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "ProgressiveShiftDisable",// generic_name
+ 34,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Command signal used to indicate that progressive shifting by the engine should be disallowed."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "SrcAddrssOfCtrllngDvcFrTrnsCntrl",// generic_name
+ 56,// bit_position
+ 8,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "The source address of the SAE J1939 device currently controlling the transmission."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TransDrivelineEngaged",// generic_name
+ 0,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer"// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TransInputShaftSpeed",// generic_name
+ 40,// bit_position
+ 16,// bit_size
+ 0.125000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "rpm",// unit
+ "Rotational velocity of the primary shaft transferring power into the transmission."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TransOutputShaftSpeed",// generic_name
+ 8,// bit_position
+ 16,// bit_size
+ 0.125000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "rpm",// unit
+ "Calculated speed of the transmission output shaft."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TransShiftInProcess",// generic_name
+ 4,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Indicates that the transmission is in process of shifting from the current gear to the selected gear."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TrnsTrqCnvrtrLckpTrnstnInPrcess",// generic_name
+ 6,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being"// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "TrnsTrqueConverterLockupEngaged",// generic_name
+ 2,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ false,// writable
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "State signal which indicates whether the torque converter lockup is engaged."// comment
+ })}
+ } // end signals vector
+ })}, // end message_definition entry
+
+ {std::make_shared<message_definition_t>(message_definition_t{"j1939",61449,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+ { // beginning signals vector
+ {std::make_shared<signal_t> (signal_t{
+ "LateralAcceleration",// generic_name
+ 40,// bit_position
+ 16,// bit_size
+ 0.000488281f,// factor
+ -15.6870,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "m/s/s",// unit
+ "Indicates a lateral acceleration of the vehicle."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "LongitudinalAcceleration",// generic_name
+ 56,// bit_position
+ 8,// bit_size
+ 0.100000f,// factor
+ -12.5000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "m/s/s",// unit
+ "Indicates the longitudinal acceleration of the vehicle."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "SteerWheelAngle",// generic_name
+ 0,// bit_position
+ 16,// bit_size
+ 0.000976562f,// factor
+ -31.3740,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "rad",// unit
+ "The main operator`s steering wheel angle (on the steering column, not the actual wheel angle)."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "SteerWheelAngleSensorType",// generic_name
+ 22,// bit_position
+ 2,// bit_size
+ 1.00000f,// factor
+ 0.00000,// 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
+ nullptr,// decoder
+ nullptr,// encoder
+ false,// received
+ std::make_pair<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "",// unit
+ "Indicates whether the steering wheel angle sensor is capable of absolute measuring of the number of steering wheel"// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "SteerWheelTurnCounter",// generic_name
+ 16,// bit_position
+ 6,// bit_size
+ 1.00000f,// factor
+ -32.0000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "turns",// unit
+ "Indicates number of steering wheel turns, absolute position or relative position at ignition on."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "YawRate",// generic_name
+ 24,// bit_position
+ 16,// bit_size
+ 0.000122070f,// factor
+ -3.92000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "rad/s",// unit
+ "Indicates the rotation about the vertical axis."// comment
+ })}
+ } // end signals vector
+ })}, // end message_definition entry
+
+ {std::make_shared<message_definition_t>(message_definition_t{"j1939",65253,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+ { // beginning signals vector
+ {std::make_shared<signal_t> (signal_t{
+ "EngTotalHoursOfOperation",// generic_name
+ 0,// bit_position
+ 32,// bit_size
+ 0.0500000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "hr",// unit
+ "Accumulated time of operation of engine."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngTotalRevolutions",// generic_name
+ 32,// bit_position
+ 32,// bit_size
+ 1000.00f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "r",// unit
+ "Accumulated number of revolutions of engine crankshaft during its operation."// comment
+ })}
+ } // end signals vector
+ })}, // end message_definition entry
+
+
+ {std::make_shared<message_definition_t>(message_definition_t{"j1939",65262,0,message_format_t::J1939,frequency_clock_t(5.00000f),true,8,
+ { // beginning signals vector
+ {std::make_shared<signal_t> (signal_t{
+ "EngCoolantTemp",// generic_name
+ 0,// bit_position
+ 8,// bit_size
+ 0.0312500f,// factor
+ -273.000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "deg C",// unit
+ "Temperature of liquid found in engine cooling system."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngFuelTemp1",// generic_name
+ 8,// bit_position
+ 8,// bit_size
+ 1.00000f,// factor
+ -40.0000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "deg C",// unit
+ "Temperature of fuel (or gas) passing through the first fuel control system."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngIntercoolerTemp",// generic_name
+ 48,// bit_position
+ 8,// bit_size
+ 1.00000f,// factor
+ -40.0000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "deg C",// unit
+ "Temperature of liquid found in the intercooler located after the turbocharger."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngIntercoolerThermostatOpening",// generic_name
+ 56,// bit_position
+ 8,// bit_size
+ 0.400000f,// factor
+ 0.00000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "%",// unit
+ "The current position of the thermostat used to regulate the temperature of the engine intercooler."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngOilTemp1",// generic_name
+ 16,// bit_position
+ 16,// bit_size
+ 0.0312500f,// factor
+ -273.000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "deg C",// unit
+ "Temperature of the engine lubricant."// comment
+ })},
+ {std::make_shared<signal_t> (signal_t{
+ "EngTurboOilTemp",// generic_name
+ 32,// bit_position
+ 16,// bit_size
+ 0.0312500f,// factor
+ -273.000,// 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<bool, int>(false, 0),// multiplex
+ 0,// is_big_endian
+ 0,// is_signed
+ "deg C",// unit
+ "Temperature of the turbocharger lubricant."// comment
+ })}
+ } // end signals vector
+ })} // end message_definition entry
+
+ }, // end message_definition vector
+ { // beginning diagnostic_messages_ vector
+
+ } // end diagnostic_messages_ vector
+ })} // end message_set entry
+ } // end message_set vector
+{
+ for(std::shared_ptr<message_set_t> cms: message_set_)
+ {
+ std::vector<std::shared_ptr<message_definition_t>> messages_definition = cms->get_messages_definition();
+ for(std::shared_ptr<message_definition_t> cmd : messages_definition)
+ {
+ cmd->set_parent(cms);
+ std::vector<std::shared_ptr<signal_t>> signals = cmd->get_signals();
+ for(std::shared_ptr<signal_t> sig: signals)
+ {
+ sig->set_parent(cmd);
+ }
+ }
+
+ std::vector<std::shared_ptr<diagnostic_message_t>> diagnostic_messages = cms->get_diagnostic_messages();
+ for(std::shared_ptr<diagnostic_message_t> dm : diagnostic_messages)
+ {
+ dm->set_parent(cms);
+ }
+ }
+ }
+
+const std::string application_t::get_diagnostic_bus() const
+{
+ return "";
+}
+
+
diff --git a/examples/j1939/j1939_parse.json b/examples/j1939/j1939_parse.json
new file mode 100644
index 00000000..fd4c3fc2
--- /dev/null
+++ b/examples/j1939/j1939_parse.json
@@ -0,0 +1,576 @@
+
+{ "name": "Virtual J1939",
+ "extra_sources": [],
+ "initializers": [],
+ "loopers": [],
+ "buses": {},
+ "commands": [],
+ "messages": {
+ "61442": {
+ "comment": "Electronic Transmission Controller 1",
+ "length": 8,
+ "name": "ETC1",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "TrnsTrqueConverterLockupEngaged" : {
+ "generic_name": "TrnsTrqueConverterLockupEngaged",
+ "bit_position": 2,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "State signal which indicates whether the torque converter lockup is engaged.",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "TorqueConverterLockupDisengaged": [0],
+ "TorqueConverterLockupEngaged": [1],
+ "Error": [2],
+ "NotAvailable": [3]
+ }
+ },
+ "TrnsTrqCnvrtrLckpTrnstnInPrcess" : {
+ "generic_name": "TrnsTrqCnvrtrLckpTrnstnInPrcess",
+ "bit_position": 6,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "State signal indicating whether or not the transmission torque converter lock up clutch is transitioning between being",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "TransitionIsNotInProcess": [0],
+ "TransitionIsInProcess": [1],
+ "Error": [2],
+ "NotAvailable": [3]
+ }
+ },
+ "SrcAddrssOfCtrllngDvcFrTrnsCntrl" : {
+ "generic_name": "SrcAddrssOfCtrllngDvcFrTrnsCntrl",
+ "bit_position": 56,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": 0,
+ "comment": "The source address of the SAE J1939 device currently controlling the transmission.",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "MomentaryEngMaxPowerEnable" : {
+ "generic_name": "MomentaryEngMaxPowerEnable",
+ "bit_position": 36,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Momentarily Requesting highest torque map from the engine control",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "notRqingMaxPowerAvailable": [0],
+ "mmntarilyRqingMaxPowerAvailable": [1],
+ "fault": [2],
+ "notAvailable": [3]
+ }
+ },
+ "TransInputShaftSpeed" : {
+ "generic_name": "TransInputShaftSpeed",
+ "bit_position": 40,
+ "bit_size": 16,
+ "factor": 0.125,
+ "offset": 0,
+ "comment": "Rotational velocity of the primary shaft transferring power into the transmission.",
+ "unit": "rpm",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "ProgressiveShiftDisable" : {
+ "generic_name": "ProgressiveShiftDisable",
+ "bit_position": 34,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Command signal used to indicate that progressive shifting by the engine should be disallowed.",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "ProgressiveShiftIsNotDisabled": [0],
+ "ProgressiveShiftIsDisabled": [1],
+ "Reserved": [2],
+ "TakeNoAction": [3]
+ }
+ },
+ "EngMomentaryOverspeedEnable" : {
+ "generic_name": "EngMomentaryOverspeedEnable",
+ "bit_position": 32,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Command signal used to indicate that the engine speed may be boosted up to the maximum engine overspeed value to",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "MomentaryEngOverspeedIsDisabled": [0],
+ "MomentaryEngOverspeedIsEnabled": [1],
+ "Reserved": [2],
+ "TakeNoAction": [3]
+ }
+ },
+ "PercentClutchSlip" : {
+ "generic_name": "PercentClutchSlip",
+ "bit_position": 24,
+ "bit_size": 8,
+ "factor": 0.4,
+ "offset": 0,
+ "comment": "Parameter which represents the ratio of input shaft speed to current engine speed (in percent).",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "TransOutputShaftSpeed" : {
+ "generic_name": "TransOutputShaftSpeed",
+ "bit_position": 8,
+ "bit_size": 16,
+ "factor": 0.125,
+ "offset": 0,
+ "comment": "Calculated speed of the transmission output shaft.",
+ "unit": "rpm",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "TransShiftInProcess" : {
+ "generic_name": "TransShiftInProcess",
+ "bit_position": 4,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Indicates that the transmission is in process of shifting from the current gear to the selected gear.",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "ShiftIsNotInProcess": [0],
+ "ShiftInProcess": [1],
+ "Error": [2],
+ "NotAvailable": [3]
+ }
+ },
+ "TransDrivelineEngaged" : {
+ "generic_name": "TransDrivelineEngaged",
+ "bit_position": 0,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Driveline engaged indicates the transmission controlled portion of the driveline is engaged sufficiently to allow a transfer",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "DrivelineDisengaged": [0],
+ "DrivelineEngaged": [1],
+ "Error": [2],
+ "NotAvailable": [3]
+ }
+ }
+ }
+ },
+ "61444": {
+ "comment": "Electronic Engine Controller 1",
+ "length": 8,
+ "name": "EEC1",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "SrcAddrssOfCtrllngDvcFrEngCntrl" : {
+ "generic_name": "SrcAddrssOfCtrllngDvcFrEngCntrl",
+ "bit_position": 40,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": 0,
+ "comment": "The source address of the SAE J1939 device currently controlling the engine.",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "ActlEngPrcntTrqueHighResolution" : {
+ "generic_name": "ActlEngPrcntTrqueHighResolution",
+ "bit_position": 4,
+ "bit_size": 4,
+ "factor": 0.125,
+ "offset": 0,
+ "comment": "This parameter displays an additional torque in percent of the reference engine torque.",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "0000": [0],
+ "0125": [1],
+ "0875": [7],
+ "1111NotAvailable": [8]
+ }
+ },
+ "EngDemandPercentTorque" : {
+ "generic_name": "EngDemandPercentTorque",
+ "bit_position": 56,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": -125,
+ "comment": "The requested torque output of the engine by all dynamic internal inputs, including smoke control, noise control and low",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngStarterMode" : {
+ "generic_name": "EngStarterMode",
+ "bit_position": 48,
+ "bit_size": 4,
+ "factor": 1,
+ "offset": 0,
+ "comment": "There are several phases in a starting action and different reasons why a start cannot take place.",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "startNotRqed": [0],
+ "starterActiveGearNotEngaged": [1],
+ "starterActiveGearEngaged": [2],
+ "strtFnshdStrtrNtActvAftrHvngBnA": [3],
+ "strtrInhbtdDToEngAlreadyRunning": [4],
+ "strtrInhbtdDTEngNtReadyForStart": [5],
+ "strtrInhbtdDTDrvlnEnggdOthrTrns": [6],
+ "strtrInhbtdDToActiveImmobilizer": [7],
+ "strtrInhbtdDueToStarterOvertemp": [8],
+ "1011Reserved": [9],
+ "starterInhibitedReasonUnknown": [12],
+ "error": [14],
+ "notAvailable": [15]
+ }
+ },
+ "EngSpeed" : {
+ "generic_name": "EngSpeed",
+ "bit_position": 24,
+ "bit_size": 16,
+ "factor": 0.125,
+ "offset": 0,
+ "comment": "Actual engine speed which is calculated over a minimum crankshaft angle of 720 degrees divided by the number of cylinders.",
+ "unit": "rpm",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "ActualEngPercentTorque" : {
+ "generic_name": "ActualEngPercentTorque",
+ "bit_position": 16,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": -125,
+ "comment": "The calculated output torque of the engine.",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "DriversDemandEngPercentTorque" : {
+ "generic_name": "DriversDemandEngPercentTorque",
+ "bit_position": 8,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": -125,
+ "comment": "The requested torque output of the engine by the driver.",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngTorqueMode" : {
+ "generic_name": "EngTorqueMode",
+ "bit_position": 0,
+ "bit_size": 4,
+ "factor": 1,
+ "offset": 0,
+ "comment": "State signal which indicates which engine torque mode is currently generating, limiting, or controlling the torque.",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "Low idle governor/no request (de": [0],
+ "Accelerator pedal/operator selec": [1],
+ "Cruise control": [2],
+ "PTO governor": [3],
+ "Road speed governor": [4],
+ "ASR control": [5],
+ "Transmission control": [6],
+ "ABS control": [7],
+ "Torque limiting": [8],
+ "High speed governor": [9],
+ "Braking system": [10],
+ "Remote accelerator": [11],
+ "Not available": [15]
+ }
+ }
+ }
+ },
+ "65253": {
+ "comment": "Engine Hours, Revolutions",
+ "length": 8,
+ "name": "HOURS",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "EngTotalRevolutions" : {
+ "generic_name": "EngTotalRevolutions",
+ "bit_position": 32,
+ "bit_size": 32,
+ "factor": 1000,
+ "offset": 0,
+ "comment": "Accumulated number of revolutions of engine crankshaft during its operation.",
+ "unit": "r",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngTotalHoursOfOperation" : {
+ "generic_name": "EngTotalHoursOfOperation",
+ "bit_position": 0,
+ "bit_size": 32,
+ "factor": 0.05,
+ "offset": 0,
+ "comment": "Accumulated time of operation of engine.",
+ "unit": "hr",
+ "is_big_endian": false,
+ "is_signed": false
+ }
+ }
+ },
+ "61449": {
+ "comment": "Vehicle Dynamic Stability Control 2",
+ "length": 8,
+ "name": "VDC2",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "SteerWheelAngle" : {
+ "generic_name": "SteerWheelAngle",
+ "bit_position": 0,
+ "bit_size": 16,
+ "factor": 0.0009765625,
+ "offset": -31.374,
+ "comment": "The main operator`s steering wheel angle (on the steering column, not the actual wheel angle).",
+ "unit": "rad",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "LongitudinalAcceleration" : {
+ "generic_name": "LongitudinalAcceleration",
+ "bit_position": 56,
+ "bit_size": 8,
+ "factor": 0.1,
+ "offset": -12.5,
+ "comment": "Indicates the longitudinal acceleration of the vehicle.",
+ "unit": "m/s/s",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "LateralAcceleration" : {
+ "generic_name": "LateralAcceleration",
+ "bit_position": 40,
+ "bit_size": 16,
+ "factor": 0.00048828125,
+ "offset": -15.687,
+ "comment": "Indicates a lateral acceleration of the vehicle.",
+ "unit": "m/s/s",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "YawRate" : {
+ "generic_name": "YawRate",
+ "bit_position": 24,
+ "bit_size": 16,
+ "factor": 0.0001220703125,
+ "offset": -3.92,
+ "comment": "Indicates the rotation about the vertical axis.",
+ "unit": "rad/s",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "SteerWheelAngleSensorType" : {
+ "generic_name": "SteerWheelAngleSensorType",
+ "bit_position": 22,
+ "bit_size": 2,
+ "factor": 1,
+ "offset": 0,
+ "comment": "Indicates whether the steering wheel angle sensor is capable of absolute measuring of the number of steering wheel",
+ "is_big_endian": false,
+ "is_signed": false,
+ "states": {
+ "RelativeMeasuringPrinciple": [0],
+ "AbsMeasuringPrinciple": [1],
+ "Reserved": [2],
+ "NotAvailable": [3]
+ }
+ },
+ "SteerWheelTurnCounter" : {
+ "generic_name": "SteerWheelTurnCounter",
+ "bit_position": 16,
+ "bit_size": 6,
+ "factor": 1,
+ "offset": -32,
+ "comment": "Indicates number of steering wheel turns, absolute position or relative position at ignition on.",
+ "unit": "turns",
+ "is_big_endian": false,
+ "is_signed": false
+ }
+ }
+ },
+ "65215": {
+ "comment": "Wheel Speed Information",
+ "length": 8,
+ "name": "EBC2",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "RlativeSpeedRearAxle2RightWheel" : {
+ "generic_name": "RlativeSpeedRearAxle2RightWheel",
+ "bit_position": 56,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the rear axle #2, right wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "RelativeSpeedRearAxle2LeftWheel" : {
+ "generic_name": "RelativeSpeedRearAxle2LeftWheel",
+ "bit_position": 48,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the rear axle #2, left wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "RlativeSpeedRearAxle1RightWheel" : {
+ "generic_name": "RlativeSpeedRearAxle1RightWheel",
+ "bit_position": 40,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the rear axle #1, right wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "RelativeSpeedRearAxle1LeftWheel" : {
+ "generic_name": "RelativeSpeedRearAxle1LeftWheel",
+ "bit_position": 32,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the rear axle #1, left wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "RlativeSpeedFrontAxleRightWheel" : {
+ "generic_name": "RlativeSpeedFrontAxleRightWheel",
+ "bit_position": 24,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the front axle, right wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "RelativeSpeedFrontAxleLeftWheel" : {
+ "generic_name": "RelativeSpeedFrontAxleLeftWheel",
+ "bit_position": 16,
+ "bit_size": 8,
+ "factor": 0.0625,
+ "offset": -7.8125,
+ "comment": "The speed of the front axle, left wheel relative to the front axle speed, SPN 904.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "FrontAxleSpeed" : {
+ "generic_name": "FrontAxleSpeed",
+ "bit_position": 0,
+ "bit_size": 16,
+ "factor": 0.00390625,
+ "offset": 0,
+ "comment": "The average speed of the two front wheels.",
+ "unit": "km/h",
+ "is_big_endian": false,
+ "is_signed": false
+ }
+ }
+ },
+ "65262": {
+ "comment": "Engine Temperature 1",
+ "length": 8,
+ "name": "ET1",
+ "bus" : "j1939",
+ "is_j1939" : true,
+ "signals" : {
+ "EngFuelTemp1" : {
+ "generic_name": "EngFuelTemp1",
+ "bit_position": 8,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": -40,
+ "comment": "Temperature of fuel (or gas) passing through the first fuel control system.",
+ "unit": "deg C",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngIntercoolerThermostatOpening" : {
+ "generic_name": "EngIntercoolerThermostatOpening",
+ "bit_position": 56,
+ "bit_size": 8,
+ "factor": 0.4,
+ "offset": 0,
+ "comment": "The current position of the thermostat used to regulate the temperature of the engine intercooler.",
+ "unit": "%",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngIntercoolerTemp" : {
+ "generic_name": "EngIntercoolerTemp",
+ "bit_position": 48,
+ "bit_size": 8,
+ "factor": 1,
+ "offset": -40,
+ "comment": "Temperature of liquid found in the intercooler located after the turbocharger.",
+ "unit": "deg C",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngTurboOilTemp" : {
+ "generic_name": "EngTurboOilTemp",
+ "bit_position": 32,
+ "bit_size": 16,
+ "factor": 0.03125,
+ "offset": -273,
+ "comment": "Temperature of the turbocharger lubricant.",
+ "unit": "deg C",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngOilTemp1" : {
+ "generic_name": "EngOilTemp1",
+ "bit_position": 16,
+ "bit_size": 16,
+ "factor": 0.03125,
+ "offset": -273,
+ "comment": "Temperature of the engine lubricant.",
+ "unit": "deg C",
+ "is_big_endian": false,
+ "is_signed": false
+ },
+ "EngCoolantTemp" : {
+ "generic_name": "EngCoolantTemp",
+ "bit_position": 0,
+ "bit_size": 8,
+ "factor": 0.03125,
+ "offset": -273,
+ "comment": "Temperature of liquid found in engine cooling system.",
+ "unit": "deg C",
+ "is_big_endian": false,
+ "is_signed": false
+ }
+ }
+ }
+ }
+}