Extremely simple OBDII library

Dependents:   DodgeRadioEmulatorv30

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers OBDII.h Source File

OBDII.h

00001 #ifndef OBDII_H
00002 #define OBDII_H
00003 
00004 #include "Eth.h"
00005 
00006 #define CANSPEED_125      125000        // CAN speed at 125 kbps
00007 #define CANSPEED_250      250000        // CAN speed at 250 kbps
00008 #define CANSPEED_500      500000        // CAN speed at 500 kbps
00009 
00010  /* Details from http://en.wikipedia.org/wiki/OBD-II_PIDs */
00011 #define ENGINE_COOLANT_TEMP 0x05
00012 #define ENGINE_RPM          0x0C
00013 #define VEHICLE_SPEED       0x0D
00014 #define MAF_SENSOR          0x10
00015 #define THROTTLE            0x11
00016 #define O2_VOLTAGE          0x14
00017 #define FUEL_LEVEL          0x2f
00018 
00019 #define PID_REQUEST         0x7DF
00020 #define PID_REPLY           0x7E8
00021 #define PID_ENHANCED_REQUEST         0x7E0
00022 
00023 
00024 class OBDII : public SocketReceiver
00025 {
00026 
00027 public:
00028 
00029     OBDII( CAN *c, DigitalOut *rs, int can_speed);
00030     
00031     void UpdateData(void);
00032 
00033 private: 
00034 
00035     CAN *can;
00036     DigitalOut *canRS;
00037     
00038     void request(unsigned char pid);
00039     void EnhancedRequest(unsigned short pid);
00040     void readCAN();
00041     
00042     virtual void ReceivedData(int socketStatus, int len, char *msg);
00043     UDPSock *HostSock;
00044     Host *statusHost;
00045 
00046     // Use a timer to see if things take too long
00047     Timer CANTimer; 
00048     bool done;
00049     int mode;
00050     
00051     unsigned short currentRequest_;
00052     
00053     struct ecu_info {
00054         int coolantTemp;
00055         int rpm;
00056         int speed;
00057         int mafSensor;
00058         int throttle;
00059         int o2Voltage;
00060         int fuel;
00061         float mpg;
00062         
00063         unsigned int supported[256];
00064     } data;
00065 };
00066 
00067 
00068 #endif