summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanley Huang <stanleyhuangyc@gmail.com>2013-04-02 14:09:28 +0800
committerStanley Huang <stanleyhuangyc@gmail.com>2013-04-02 14:09:28 +0800
commit9e2dd0fbafa3e56885ca30f321bf03501de423b9 (patch)
tree270cc661c97c6743006a04627899f3e9f9cb0919
parent7af9330e5a976b4715eb406d613dff915dc292d8 (diff)
download2021-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.cpp31
-rw-r--r--libraries/OBD/OBD.h1
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() {}
};