diff options
Diffstat (limited to 'libraries')
-rw-r--r-- | libraries/OBD/OBD.cpp | 45 | ||||
-rw-r--r-- | libraries/OBD/OBD.h | 14 |
2 files changed, 6 insertions, 53 deletions
diff --git a/libraries/OBD/OBD.cpp b/libraries/OBD/OBD.cpp index 431d910..f20d459 100644 --- a/libraries/OBD/OBD.cpp +++ b/libraries/OBD/OBD.cpp @@ -420,36 +420,6 @@ void COBDI2C::end() m_state = OBD_DISCONNECTED; } -bool COBDI2C::init(OBD_PROTOCOLS protocol) -{ - bool success = false; - m_state = OBD_CONNECTING; - sendCommand(CMD_QUERY_STATUS); - - char recvbuf[MAX_PAYLOAD_SIZE]; - for (byte n = 0; n < 3; n++) { - memset(recvbuf, 0, sizeof(recvbuf)); - receive(recvbuf); - if (!memcmp(recvbuf, "OBD ", 4)) - break; - } - if (recvbuf[4] == 'Y') { - memcpy(pidmap, recvbuf + 16, sizeof(pidmap)); - if (protocol != PROTO_AUTO) { - setProtocol(protocol); - } - int value; - success = read(PID_RPM, value); - } - if (success) { - return true; - m_state = OBD_CONNECTED; - } else { - m_state = OBD_DISCONNECTED; - return false; - } -} - bool COBDI2C::read(byte pid, int& result) { sendQuery(pid); @@ -503,23 +473,10 @@ byte COBDI2C::receive(char* buffer, int timeout) } return offset; - } while(millis() - start < OBD_TIMEOUT_LONG); + } while(millis() - start < timeout); return 0; } -bool COBDI2C::gpsQuery(GPS_DATA* gpsdata) -{ - if (!sendCommand(CMD_GPS_QUERY, 0)) return false; - Wire.requestFrom((byte)I2C_ADDR, (byte)MAX_PAYLOAD_SIZE, (byte)1); - Wire.readBytes((char*)gpsdata, MAX_PAYLOAD_SIZE); - return true; -} - -void COBDI2C::gpsSetup(uint32_t baudrate, const char* cmds) -{ - sendCommand(CMD_GPS_SETUP, baudrate / 1200, (byte*)cmds, cmds ? strlen(cmds) : 0); -} - void COBDI2C::setPID(byte pid) { byte n = 0; diff --git a/libraries/OBD/OBD.h b/libraries/OBD/OBD.h index e53d243..acf64e9 100644 --- a/libraries/OBD/OBD.h +++ b/libraries/OBD/OBD.h @@ -140,16 +140,16 @@ public: protected:
virtual char* getResponse(byte& pid, char* buffer);
virtual byte receive(char* buffer = 0, int timeout = OBD_TIMEOUT_SHORT);
+ virtual bool available();
+ virtual char read();
+ virtual void write(const char* s);
+ virtual void write(char c);
virtual void dataIdleLoop() {}
void recover();
void debugOutput(const char* s);
int normalizeData(byte pid, char* data);
OBD_STATES m_state;
private:
- virtual bool available();
- virtual char read();
- virtual void write(const char* s);
- virtual void write(char c);
virtual uint8_t getPercentageValue(char* data)
{
return (uint16_t)hex2uint8(data) * 100 / 255;
@@ -208,7 +208,6 @@ class COBDI2C : public COBD { public:
void begin();
void end();
- bool init(OBD_PROTOCOLS protocol = PROTO_AUTO);
bool read(byte pid, int& result);
void write(const char* s);
// Asynchronized access API
@@ -216,12 +215,9 @@ public: void applyPIDs();
void loadData();
uint16_t getData(byte pid, int& result);
- // GPS API
- bool gpsQuery(GPS_DATA* gpsdata);
- void gpsSetup(uint32_t baudrate, const char* cmds = 0);
protected:
bool sendCommand(byte cmd, uint8_t data = 0, byte* payload = 0, byte payloadBytes = 0);
- byte receive(char* buffer, int timeout = OBD_TIMEOUT_SHORT);
+ byte receive(char* buffer, int timeout = OBD_TIMEOUT_LONG);
byte m_addr;
PID_INFO obdInfo[MAX_PIDS];
byte obdPid[MAX_PIDS];
|