diff options
author | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-09-08 01:41:39 +0800 |
---|---|---|
committer | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-09-08 01:41:39 +0800 |
commit | 32d6eaec94f2d6abcedba94c528de47a503cd72e (patch) | |
tree | 4cdaa0c7106b8072f288d8b586414cce43826ae0 /libraries/OBD/OBD.h | |
parent | fa1d3eac1a2450d6c3d945e33b87d84615ff5b7b (diff) | |
download | 2021-arduino-obd-32d6eaec94f2d6abcedba94c528de47a503cd72e.tar.gz 2021-arduino-obd-32d6eaec94f2d6abcedba94c528de47a503cd72e.tar.bz2 2021-arduino-obd-32d6eaec94f2d6abcedba94c528de47a503cd72e.zip |
improve stability
Diffstat (limited to 'libraries/OBD/OBD.h')
-rw-r--r-- | libraries/OBD/OBD.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/libraries/OBD/OBD.h b/libraries/OBD/OBD.h index b13056d..e75a26f 100644 --- a/libraries/OBD/OBD.h +++ b/libraries/OBD/OBD.h @@ -7,9 +7,8 @@ #define OBD_TIMEOUT_SHORT 2000 /* ms */ #define OBD_TIMEOUT_LONG 7000 /* ms */ -#define OBD_TIMEOUT_INIT 3000 /* ms */ #define OBD_SERIAL_BAUDRATE 38400 -#define OBD_RECV_BUF_SIZE 64 +#define OBD_RECV_BUF_SIZE 128 #ifndef OBDUART #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega644P__) @@ -37,13 +36,18 @@ #define PID_RUNTIME 0x1F #define PID_DISTANCE 0x31 +// states +#define STATE_DISCONNECTED 0 +#define STATE_CONNECTING 1 +#define STATE_CONNECTED 2 + unsigned int hex2uint16(const char *p); unsigned char hex2uint8(const char *p); class COBD { public: - COBD():dataMode(1),errors(0) {} + COBD():dataMode(1),errors(0),state(STATE_DISCONNECTED) {} void begin(); bool init(bool passive = false); bool readSensor(byte pid, int& result, bool passive = false); @@ -57,8 +61,11 @@ public: byte errors; byte pidmap[4 * 4]; byte vin[17]; + byte state; //char recvBuf[OBD_RECV_BUF_SIZE]; protected: + byte receive(char* buffer); + void debugOutput(const char* s); static int normalizeData(byte pid, char* data); static int getPercentageValue(char* data) { @@ -80,6 +87,5 @@ protected: virtual char read(); virtual void write(const char* s); virtual void write(const char c); - virtual void initIdleLoop() {} virtual void dataIdleLoop() {} }; |