Extremely simple OBDII library

Dependents:   DodgeRadioEmulatorv30

Committer:
rtgree01
Date:
Mon Aug 20 02:35:38 2012 +0000
Revision:
0:7ec2509aa78c
[mbed] converted /DodgeRadioEmulatorv30/OBDIILib

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rtgree01 0:7ec2509aa78c 1 #ifndef OBDII_H
rtgree01 0:7ec2509aa78c 2 #define OBDII_H
rtgree01 0:7ec2509aa78c 3
rtgree01 0:7ec2509aa78c 4 #include "Eth.h"
rtgree01 0:7ec2509aa78c 5
rtgree01 0:7ec2509aa78c 6 #define CANSPEED_125 125000 // CAN speed at 125 kbps
rtgree01 0:7ec2509aa78c 7 #define CANSPEED_250 250000 // CAN speed at 250 kbps
rtgree01 0:7ec2509aa78c 8 #define CANSPEED_500 500000 // CAN speed at 500 kbps
rtgree01 0:7ec2509aa78c 9
rtgree01 0:7ec2509aa78c 10 /* Details from http://en.wikipedia.org/wiki/OBD-II_PIDs */
rtgree01 0:7ec2509aa78c 11 #define ENGINE_COOLANT_TEMP 0x05
rtgree01 0:7ec2509aa78c 12 #define ENGINE_RPM 0x0C
rtgree01 0:7ec2509aa78c 13 #define VEHICLE_SPEED 0x0D
rtgree01 0:7ec2509aa78c 14 #define MAF_SENSOR 0x10
rtgree01 0:7ec2509aa78c 15 #define THROTTLE 0x11
rtgree01 0:7ec2509aa78c 16 #define O2_VOLTAGE 0x14
rtgree01 0:7ec2509aa78c 17 #define FUEL_LEVEL 0x2f
rtgree01 0:7ec2509aa78c 18
rtgree01 0:7ec2509aa78c 19 #define PID_REQUEST 0x7DF
rtgree01 0:7ec2509aa78c 20 #define PID_REPLY 0x7E8
rtgree01 0:7ec2509aa78c 21 #define PID_ENHANCED_REQUEST 0x7E0
rtgree01 0:7ec2509aa78c 22
rtgree01 0:7ec2509aa78c 23
rtgree01 0:7ec2509aa78c 24 class OBDII : public SocketReceiver
rtgree01 0:7ec2509aa78c 25 {
rtgree01 0:7ec2509aa78c 26
rtgree01 0:7ec2509aa78c 27 public:
rtgree01 0:7ec2509aa78c 28
rtgree01 0:7ec2509aa78c 29 OBDII( CAN *c, DigitalOut *rs, int can_speed);
rtgree01 0:7ec2509aa78c 30
rtgree01 0:7ec2509aa78c 31 void UpdateData(void);
rtgree01 0:7ec2509aa78c 32
rtgree01 0:7ec2509aa78c 33 private:
rtgree01 0:7ec2509aa78c 34
rtgree01 0:7ec2509aa78c 35 CAN *can;
rtgree01 0:7ec2509aa78c 36 DigitalOut *canRS;
rtgree01 0:7ec2509aa78c 37
rtgree01 0:7ec2509aa78c 38 void request(unsigned char pid);
rtgree01 0:7ec2509aa78c 39 void EnhancedRequest(unsigned short pid);
rtgree01 0:7ec2509aa78c 40 void readCAN();
rtgree01 0:7ec2509aa78c 41
rtgree01 0:7ec2509aa78c 42 virtual void ReceivedData(int socketStatus, int len, char *msg);
rtgree01 0:7ec2509aa78c 43 UDPSock *HostSock;
rtgree01 0:7ec2509aa78c 44 Host *statusHost;
rtgree01 0:7ec2509aa78c 45
rtgree01 0:7ec2509aa78c 46 // Use a timer to see if things take too long
rtgree01 0:7ec2509aa78c 47 Timer CANTimer;
rtgree01 0:7ec2509aa78c 48 bool done;
rtgree01 0:7ec2509aa78c 49 int mode;
rtgree01 0:7ec2509aa78c 50
rtgree01 0:7ec2509aa78c 51 unsigned short currentRequest_;
rtgree01 0:7ec2509aa78c 52
rtgree01 0:7ec2509aa78c 53 struct ecu_info {
rtgree01 0:7ec2509aa78c 54 int coolantTemp;
rtgree01 0:7ec2509aa78c 55 int rpm;
rtgree01 0:7ec2509aa78c 56 int speed;
rtgree01 0:7ec2509aa78c 57 int mafSensor;
rtgree01 0:7ec2509aa78c 58 int throttle;
rtgree01 0:7ec2509aa78c 59 int o2Voltage;
rtgree01 0:7ec2509aa78c 60 int fuel;
rtgree01 0:7ec2509aa78c 61 float mpg;
rtgree01 0:7ec2509aa78c 62
rtgree01 0:7ec2509aa78c 63 unsigned int supported[256];
rtgree01 0:7ec2509aa78c 64 } data;
rtgree01 0:7ec2509aa78c 65 };
rtgree01 0:7ec2509aa78c 66
rtgree01 0:7ec2509aa78c 67
rtgree01 0:7ec2509aa78c 68 #endif