OBD II see: https://os.mbed.com/users/okini3939/notebook/obd2-can-bus/

Dependencies:   OBD2 mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers ecu_reader.h Source File

ecu_reader.h

00001 #ifndef ECU_READER_H
00002 #define ECU_READER_H
00003 
00004 #define CANSPEED_125      125000        // CAN speed at 125 kbps
00005 #define CANSPEED_250      250000        // CAN speed at 250 kbps
00006 #define CANSPEED_500      500000        // CAN speed at 500 kbps
00007 
00008 /* Details from http://en.wikipedia.org/wiki/OBD-II_PIDs */
00009 #define PID_0_20            0x00    //PID 0 - 20 supported
00010 #define PID_0_20_DESC               "PID 0x00 - 0x20 Supported"
00011 #define STATUS_DTC          0x01    ///
00012 #define STATUS_DTC_DESC             "Status since DTC Cleared"
00013 #define FREEZE_DTC          0x02    ///
00014 #define FREEZE_DTC_DESC             "Freeze Diagnostic Trouble Code"
00015 #define FUEL_SYS_STATUS     0x03    ///
00016 #define FUEL_SYS_STATUS_DESC        "Fuel System Status"
00017 #define ENGINE_LOAD         0x04    //
00018 #define ENGINE_LOAD_DESC            "Calculated Engine Load"
00019 #define ENGINE_COOLANT_TEMP 0x05
00020 #define ENGINE_COOLANT_TEMP_DESC    "Engine Coolant Temperature"
00021 #define ST_FUEL_TRIM_1      0x06    ///
00022 #define ST_FUEL_TRIM_1_DESC         "Short Term Fuel % Trim - Bank 1"
00023 #define LT_FUEL_TRIM_1      0x07    ///
00024 #define LT_FUEL_TRIM_1_DESC         "Long Term Fuel % Trim - Bank 1"
00025 #define ST_FUEL_TRIM_2      0x08    ///
00026 #define ST_FUEL_TRIM_2_DESC         "Short Term Fuel % Trim - Bank 2"
00027 #define LT_FUEL_TRIM_2      0x09    ///
00028 #define LT_FUEL_TRIM_2_DESC         "Long Term Fuel % Trim - Bank 2"
00029 #define FUEL_PRESSURE       0x0A    //
00030 #define FUEL_PRESSURE_DESC          "Fuel Pressure"
00031 #define INTAKE_PRESSURE     0x0B    //
00032 #define INTAKE_PRESSURE_DESC        "Intake Manifold Absolute Pressure"
00033 #define ENGINE_RPM          0x0C
00034 #define ENGINE_RPM_DESC             "Engine RPM"
00035 #define VEHICLE_SPEED       0x0D
00036 #define VEHICLE_SPEED_DESC          "Vehicle Speed"
00037 #define TIMING_ADVANCE      0x0E    //
00038 #define TIMING_ADVANCE_DESC         "Timing Advance"
00039 #define INTAKE_TEMP         0x0F    //
00040 #define INTAKE_TEMP_DESC            "Intake Air Temperature"
00041 #define MAF_SENSOR          0x10
00042 #define MAF_SENSOR_DESC             "MAF Sensor Air Flow Rate"
00043 #define THROTTLE            0x11
00044 #define THROTTLE_DESC               "Throttle Position"
00045 #define COMMANDED_SEC_AIR   0x12    ///
00046 #define COMMANDED_SEC_AIR_DESC      "Commanded Secondary Air Status"
00047 #define O2_SENS_PRES        0x13    ///
00048 #define O2_SENS_PRES_DESC           "Detected O2 Sensors"
00049 #define O2_B1S1_VOLTAGE     0x14    ///
00050 #define O2_B1S1_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 1 Sensor 1"
00051 #define O2_B1S2_VOLTAGE     0x15    ///
00052 #define O2_B1S2_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 1 Sensor 2"
00053 #define O2_B1S3_VOLTAGE     0x16    ///
00054 #define O2_B1S3_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 1 Sensor 3"
00055 #define O2_B1S4_VOLTAGE     0x17    ///
00056 #define O2_B1S4_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 1 Sensor 4"
00057 #define O2_B2S1_VOLTAGE     0x18    ///
00058 #define O2_B2S1_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 2 Sensor 1"
00059 #define O2_B2S2_VOLTAGE     0x19    ///
00060 #define O2_B2S2_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 2 Sensor 2"
00061 #define O2_B2S3_VOLTAGE     0x1A    ///
00062 #define O2_B2S3_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 2 Sensor 3"
00063 #define O2_B2S4_VOLTAGE     0x1B    ///
00064 #define O2_B2S4_VOLTAGE_DESC        "O2 Sensor Voltage - Bank 2 Sensor 4"
00065 #define OBDII_STANDARDS     0x1C    //List of OBDII Standars the car conforms to
00066 #define OBDII_STANDARDS_DESC        "Supported OBDII Standards"
00067 #define O2_SENS_PRES_ALT    0x1D    ///
00068 #define O2_SENS_PRES_ALT_DESC       "Detected O2 Sensors - Alternate Grouping"
00069 #define AUX_IN_STATUS       0x1E    ///
00070 #define AUX_IN_STATUS_DESC          "Auxiliary Input Status"
00071 #define ENGINE_RUNTIME      0x1F    //
00072 #define ENGINE_RUNTIME_DESC         "Run Time Since Engine Started"
00073 #define PID_21_40           0x20    //PID 21-40 supported
00074 #define PID_21_40_DESC              "PID 0x21 - 0x40 Supported"
00075 #define DIST_TRAVELED_MIL   0x21    ///
00076 #define DIST_TRAVELED_MIL_DESC      "Distance Traveled with MIL On"
00077 #define FUEL_RAIL_PRESSURE  0x22    //
00078 #define FUEL_RAIL_PRESSURE_DESC     "Fuel Rail Pressure Relative to Manifold"
00079 #define FUEL_RAIL_PRES_ALT  0x23    ///
00080 #define FUEL_RAIL_PRES_ALT_DESC     "MPI/Diesel Fuel Rail Pressure"
00081 #define O2S1_WR_LAMBDA_V    0x24    ///
00082 #define O2S1_WR_LAMBDA_V_DESC       "O2 Sensor 1 Equivalence Ratio Voltage"
00083 #define O2S2_WR_LAMBDA_V    0x25    ///
00084 #define O2S2_WR_LAMBDA_V_DESC       "O2 Sensor 2 Equivalence Ratio Voltage"
00085 #define O2S3_WR_LAMBDA_V    0x26    ///
00086 #define O2S3_WR_LAMBDA_V_DESC       "O2 Sensor 3 Equivalence Ratio Voltage"
00087 #define O2S4_WR_LAMBDA_V    0x27    ///
00088 #define O2S4_WR_LAMBDA_V_DESC       "O2 Sensor 4 Equivalence Ratio Voltage"
00089 #define O2S5_WR_LAMBDA_V    0x28    ///
00090 #define O2S5_WR_LAMBDA_V_DESC       "O2 Sensor 5 Equivalence Ratio Voltage"
00091 #define O2S6_WR_LAMBDA_V    0x29    ///
00092 #define O2S6_WR_LAMBDA_V_DESC       "O2 Sensor 6 Equivalence Ratio Voltage"
00093 #define O2S7_WR_LAMBDA_V    0x2A    ///
00094 #define O2S7_WR_LAMBDA_V_DESC       "O2 Sensor 7 Equivalence Ratio Voltage"
00095 #define O2S8_WR_LAMBDA_V    0x2B    ///
00096 #define O2S8_WR_LAMBDA_V_DESC       "O2 Sensor 8 Equivalence Ratio Voltage"
00097 #define COMMANDED_EGR       0x2C    //
00098 #define COMMANDED_EGR_DESC          "Commanded EGR"
00099 #define EGR_ERROR           0x2D    //
00100 #define EGR_ERROR_DESC              "EGR Error"
00101 #define COMMANDED_EVAP_P    0x2E    ///
00102 #define COMMANDED_EVAP_P_DESC       "Commanded Evaporative Purge"
00103 #define FUEL_LEVEL          0x2F    //
00104 #define FUEL_LEVEL_DESC             "Fuel Level Input"
00105 #define WARMUPS_SINCE_CLR   0x30    ///
00106 #define WARMUPS_SINCE_CLR_DESC      "Number of Warmups since DTC Cleared"
00107 #define DIST_SINCE_CLR      0x31    ///
00108 #define DIST_SINCE_CLR_DESC         "Distance Traveled Since DTC Cleared"
00109 #define EVAP_PRESSURE       0x32    //
00110 #define EVAP_PRESSURE_DESC          "Evap. System Vapor Pressure"
00111 #define BAROMETRIC_PRESSURE 0x33    //
00112 #define BAROMETRIC_PRESSURE_DESC    "Barometric Pressure"
00113 #define O2S1_WR_LAMBDA_I    0x34    ///
00114 #define O2S1_WR_LAMBDA_I_DESC       "O2 Sensor 1 Equivalence Ratio Current"
00115 #define O2S2_WR_LAMBDA_I    0x35    ///
00116 #define O2S2_WR_LAMBDA_I_DESC       "O2 Sensor 2 Equivalence Ratio Current"
00117 #define O2S3_WR_LAMBDA_I    0x36    ///
00118 #define O2S3_WR_LAMBDA_I_DESC       "O2 Sensor 3 Equivalence Ratio Current"
00119 #define O2S4_WR_LAMBDA_I    0x37    ///
00120 #define O2S4_WR_LAMBDA_I_DESC       "O2 Sensor 4 Equivalence Ratio Current"
00121 #define O2S5_WR_LAMBDA_I    0x38    ///
00122 #define O2S5_WR_LAMBDA_I_DESC       "O2 Sensor 5 Equivalence Ratio Current"
00123 #define O2S6_WR_LAMBDA_I    0x39    ///
00124 #define O2S6_WR_LAMBDA_I_DESC       "O2 Sensor 6 Equivalence Ratio Current"
00125 #define O2S7_WR_LAMBDA_I    0x3A    ///
00126 #define O2S7_WR_LAMBDA_I_DESC       "O2 Sensor 7 Equivalence Ratio Current"
00127 #define O2S8_WR_LAMBDA_I    0x3B    ///
00128 #define O2S8_WR_LAMBDA_I_DESC       "O2 Sensor 8 Equivalence Ratio Current"
00129 #define CAT_TEMP_B1S1       0x3C    ///
00130 #define CAT_TEMP_B1S1_DESC          "Catalyst Temperature Bank 1 Sensor 1"
00131 #define CAT_TEMP_B1S2       0x3E    ///
00132 #define CAT_TEMP_B1S2_DESC          "Catalyst Temperature Bank 1 Sensor 2"
00133 #define CAT_TEMP_B2S1       0x3D    ///
00134 #define CAT_TEMP_B2S1_DESC          "Catalyst Temperature Bank 2 Sensor 1"
00135 #define CAT_TEMP_B2S2       0x3F    ///
00136 #define CAT_TEMP_B2S2_DESC          "Catalyst Temperature Bank 2 Sensor 2"
00137 #define PID_41_60           0x40    //PID 41-60 supported
00138 #define PID_41_60_DESC              "PID 0x41 - 0x60 Supported"
00139 #define MONITOR_STATUS      0x41    ///
00140 #define MONITOR_STATUS_DESC         "Monitor Status This Drive Cycle"
00141 #define ECU_VOLTAGE         0x42    //
00142 #define ECU_VOLTAGE_DESC            "Control Module Voltage"
00143 #define ABSOLUTE_LOAD       0x43    //
00144 #define ABSOLUTE_LOAD_DESC          "Absolute Load Value"
00145 #define COMMANDED_EQUIV_R   0x44    ///
00146 #define COMMANDED_EQUIV_R_DESC      "Commanded Equivalence Ratio"
00147 #define REL_THROTTLE_POS    0x45    ///
00148 #define REL_THROTTLE_POS_DESC       "Relative Throttle Position"
00149 #define AMB_AIR_TEMP        0x46    ///
00150 #define AMB_AIR_TEMP_DESC           "Ambient Air Temperature"
00151 #define ABS_THROTTLE_POS_B  0x47    ///
00152 #define ABS_THROTTLE_POS_B_DESC     "Absolute Throttle Position B"
00153 #define ABS_THROTTLE_POS_C  0x48    ///
00154 #define ABS_THROTTLE_POS_C_DESC     "Absolute Throttle Position C"
00155 #define ACCEL_POS_D         0x49    ///
00156 #define ACCEL_POS_D_DESC            "Accelerator Pedal Position D"
00157 #define ACCEL_POS_E         0x4A    ///
00158 #define ACCEL_POS_E_DESC            "Accelerator Pedal Position E"
00159 #define ACCEL_POS_F         0x4B    ///
00160 #define ACCEL_POS_F_DESC            "Accelerator Pedal Position F"
00161 #define COMMANDED_THROTTLE  0x4C    ///
00162 #define COMMANDED_THROTTLE_DESC     "Commanded Throttle Actuator"
00163 #define TIME_RUN_WITH_MIL   0x4D    ///
00164 #define TIME_RUN_WITH_MIL_DESC      "Time Run with MIL on"
00165 #define TIME_SINCE_CLR      0x4E    ///
00166 #define TIME_SINCE_CLR_DESC         "Time Since DTC Cleared"
00167 #define MAX_R_O2_VI_PRES    0x4F    ///
00168 #define MAX_R_O2_VI_PRES_DESC       "Maximum Value - Equivalence ratio, O2 Voltage, O2 Current, Intake Manifold Pressure"
00169 #define MAX_AIRFLOW_MAF     0x50    ///
00170 #define MAX_AIRFLOW_MAF_DESC        "Maximum MAF Airflow Value"
00171 #define FUEL_TYPE           0x51    //
00172 #define FUEL_TYPE_DESC              "Fuel Type"
00173 #define ETHANOL_PERCENT     0x52    //
00174 #define ETHANOL_PERCENT_DESC        "Ethanol fuel %"
00175 #define ABS_EVAP_SYS_PRES   0x53    ///
00176 #define ABS_EVAP_SYS_PRES_DESC      "absolute Evap. System Vapor Pressure"
00177 #define EVAP_SYS_PRES       0x54    ///
00178 #define EVAP_SYS_PRES_DESC          "Evap. System Vapor Pressure"
00179 #define ST_O2_TRIM_B1B3     0x55    ///
00180 #define ST_O2_TRIM_B1B3_DESC        "Short Term Secondary O2 Sensor Trim - Bank 1 and 3"
00181 #define LT_O2_TRIM_B1B3     0x56    ///
00182 #define LT_O2_TRIM_B1B3_DESC        "Long Term Secondary O2 Sensor Trim - Bank 1 and 3"
00183 #define ST_02_TRIM_B2B4     0x57    ///
00184 #define ST_O2_TRIM_B2B4_DESC        "Short Term Secondary O2 Sensor Trim - Bank 2 and 4"
00185 #define LT_O2_TRIM_B2B4     0x58    ///
00186 #define LT_O2_TRIM_B2B4_DESC        "Long Term Secondary O2 Sensor Trim - Bank 2 and 4"
00187 #define ABS_FUEL_RAIL_PRES  0x59    ///
00188 #define ABS_FUEL_RAIL_PRES_DESC     "Absolute Fuel Rail Pressure"
00189 #define REL_ACCEL_POS       0x5A    ///
00190 #define REL_ACCEL_POS_DESC          "Relative Accelerator Pedal Position"
00191 #define HYBRID_BATT_PCT     0x5B    ///
00192 #define HYBRID_BATT_PCT_DESC        "Hybrid Battery Pack Charge Percent"
00193 #define ENGINE_OIL_TEMP     0x5C    ///
00194 #define ENGINE_OIL_TEMP_DESC        "Engine Oil Temperature"
00195 #define FUEL_TIMING         0x5D    //
00196 #define FUEL_TIMING_DESC            "Fuel Injection Timing"
00197 #define FUEL_RATE           0x5E    //
00198 #define FUEL_RATE_DESC              "Engine Fuel Rate"
00199 #define EMISSIONS_STANDARD  0x5F    ///
00200 #define EMISSIONS_STANDARD_DESC     "Emmissions Requirements"
00201 #define DEMANDED_TORQUE     0x61    ///
00202 #define DEMANDED_TORQUE_DESC        "Driver's Demanded Torque - Percent"
00203 #define ACTUAL_TORQUE       0x62    ///
00204 #define ACTUAL_TORQUE_DESC          "Actual Engine Torque - Percent"
00205 #define REFERENCE_TORQUE    0x63    //
00206 #define REFERENCE_TORQUE_DESC       "Engine Reference Torque"
00207 #define ENGINE_PCT_TORQUE   0x64    ///
00208 #define ENGINE_PCT_TORQUE_DESC      "Engine Percent Torque"
00209 #define AUX_IO_SUPPORTED    0x65    ///
00210 #define AUX_IO_SUPPORTED_DESC       "Auxiliary Input/Output Supported"
00211 #define P_MAF_SENSOR        0x66    ///
00212 #define P_ENGINE_COOLANT_T  0x67    ///
00213 #define P_INTAKE_TEMP       0x68    ///
00214 #define P_COMMANDED_EGR     0x69    ///
00215 #define P_COMMANDED_INTAKE  0x6A    ///
00216 #define P_EGR_TEMP          0x6B    ///
00217 #define P_COMMANDED_THROT   0x6C    ///
00218 #define P_FUEL_PRESSURE     0x6D    ///
00219 #define P_FUEL_INJ_PRES     0x6E    ///
00220 #define P_TURBO_PRESSURE    0x6F    ///
00221 #define P_BOOST_PRES_CONT   0x70    ///
00222 #define P_VGT_CONTROL       0x71    ///
00223 #define P_WASTEGATE_CONT    0x72    ///
00224 #define P_EXHAUST_PRESSURE  0x73    ///
00225 #define P_TURBO_RPM         0x74    ///
00226 #define P_TURBO_TEMP1       0x75    ///
00227 #define P_TURBO_TEMP2       0x76    ///
00228 #define P_CACT              0x77    ///
00229 #define P_EGT_B1            0x78    ///
00230 #define P_EGT_B2            0x79    ///
00231 #define P_DPF1              0x7A    ///
00232 #define P_DPF2              0x7B    ///
00233 #define P_DPF_TEMP          0x7C    ///
00234 #define P_NOX_NTE_STATUS    0x7D    ///
00235 #define P_PM_NTE_STATUS     0x7E    ///
00236 #define P_ENGINE_RUNTUME    0x7F    ///
00237 #define P_ENGINE_AECD_1     0x81    ///
00238 #define P_ENGINE_AECD_2     0x82    ///
00239 #define P_NOX_SENSOR        0x83    ///
00240 #define P_MANIFOLD_TEMP     0x84    ///
00241 #define P_NOX_SYSTEM        0x85    ///
00242 #define P_PM_SENSOR         0x86    ///
00243 #define P_IN_MANIF_TEMP     0x87    ///
00244  
00245 #define PID_REQUEST         0x7DF
00246 #define PID_REPLY           0x7E8
00247 
00248 namespace mbed { 
00249 
00250 class ecu_reader{
00251 
00252 public:
00253 
00254     ecu_reader(PinName rd, PinName td, int can_speed);
00255 
00256     unsigned char request(unsigned char pid,  float *buffer);
00257 
00258 private: 
00259     CAN can2;
00260     CANMessage can_MsgRx;
00261     Timer CANTimer;  
00262     int PID020, PID2140, PID4160; //PID Support Masks
00263 
00264     int i;
00265  
00266 };
00267 
00268 
00269 
00270 
00271 
00272     } 
00273 
00274 
00275 
00276 #endif