summaryrefslogtreecommitdiff
path: root/libraries/OBD/OBD.h
diff options
context:
space:
mode:
authorStanley Huang <stanleyhuangyc@gmail.com>2013-09-08 01:41:39 +0800
committerStanley Huang <stanleyhuangyc@gmail.com>2013-09-08 01:41:39 +0800
commit32d6eaec94f2d6abcedba94c528de47a503cd72e (patch)
tree4cdaa0c7106b8072f288d8b586414cce43826ae0 /libraries/OBD/OBD.h
parentfa1d3eac1a2450d6c3d945e33b87d84615ff5b7b (diff)
download2021-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.h14
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() {}
};