diff options
author | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-04-02 14:09:28 +0800 |
---|---|---|
committer | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-04-02 14:09:28 +0800 |
commit | 9e2dd0fbafa3e56885ca30f321bf03501de423b9 (patch) | |
tree | 270cc661c97c6743006a04627899f3e9f9cb0919 | |
parent | 7af9330e5a976b4715eb406d613dff915dc292d8 (diff) | |
download | 2021-arduino-obd-9e2dd0fbafa3e56885ca30f321bf03501de423b9.tar.gz 2021-arduino-obd-9e2dd0fbafa3e56885ca30f321bf03501de423b9.tar.bz2 2021-arduino-obd-9e2dd0fbafa3e56885ca30f321bf03501de423b9.zip |
adding DataTimeout callback
-rw-r--r-- | libraries/OBD/OBD.cpp | 31 | ||||
-rw-r--r-- | libraries/OBD/OBD.h | 1 |
2 files changed, 17 insertions, 15 deletions
diff --git a/libraries/OBD/OBD.cpp b/libraries/OBD/OBD.cpp index b3da34e..938523b 100644 --- a/libraries/OBD/OBD.cpp +++ b/libraries/OBD/OBD.cpp @@ -240,12 +240,12 @@ bool COBD::Init(bool passive) strcpy_P(cmd, s_initcmd[i]); WriteData(cmd); } - n = 0; - prompted = 0; + n = 0; + prompted = 0; currentMillis = millis(); - for (;;) { - if (DataAvailable()) { - char c = ReadData(); + for (;;) { + if (DataAvailable()) { + char c = ReadData(); if (c == '>') { buffer[n] = 0; prompted++; @@ -254,16 +254,17 @@ bool COBD::Init(bool passive) } } else if (prompted) { break; - } else { - unsigned long elapsed = millis() - currentMillis; - if (elapsed > OBD_TIMEOUT_INIT) { - // init timeout - //WriteData("\r"); - return false; - } - } - } - } + } else { + unsigned long elapsed = millis() - currentMillis; + if (elapsed > OBD_TIMEOUT_INIT) { + // init timeout + //WriteData("\r"); + return false; + } + DataTimeout(); + } + } + } errors = 0; return true; } diff --git a/libraries/OBD/OBD.h b/libraries/OBD/OBD.h index 1247c49..e608fee 100644 --- a/libraries/OBD/OBD.h +++ b/libraries/OBD/OBD.h @@ -81,4 +81,5 @@ protected: virtual char ReadData(); virtual void WriteData(const char* s); virtual void WriteData(const char c); + virtual void DataTimeout() {} }; |