Extremely simple OBDII library
Dependents: DodgeRadioEmulatorv30
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
Generated on Mon Aug 1 2022 22:01:45 by
