summaryrefslogtreecommitdiff
path: root/libraries/OBDUART/OBDUART.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/OBDUART/OBDUART.h')
-rw-r--r--libraries/OBDUART/OBDUART.h171
1 files changed, 0 insertions, 171 deletions
diff --git a/libraries/OBDUART/OBDUART.h b/libraries/OBDUART/OBDUART.h
deleted file mode 100644
index eb9fad5..0000000
--- a/libraries/OBDUART/OBDUART.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*************************************************************************
-* Arduino Library for Freematics OBD-II UART Adapter
-* Distributed under BSD License
-* Visit http://freematics.com for more information
-* (C)2012-2016 Stanley Huang <stanleyhuangyc@gmail.com>
-*************************************************************************/
-
-#include <Arduino.h>
-
-#define OBD_TIMEOUT_SHORT 1000 /* ms */
-#define OBD_TIMEOUT_LONG 15000 /* ms */
-#define OBD_TIMEOUT_GPS 200 /* ms */
-#define OBD_SERIAL_BAUDRATE 38400
-
-#ifndef OBDUART
-#if defined(__AVR_ATmega328P__) || defined(__AVR_ATmega168P__)
-#define OBDUART Serial
-#else
-#define OBDUART Serial1
-#endif
-#endif
-
-// Mode 1 PIDs
-#define PID_ENGINE_LOAD 0x04
-#define PID_COOLANT_TEMP 0x05
-#define PID_SHORT_TERM_FUEL_TRIM_1 0x06
-#define PID_LONG_TERM_FUEL_TRIM_1 0x07
-#define PID_SHORT_TERM_FUEL_TRIM_2 0x08
-#define PID_LONG_TERM_FUEL_TRIM_2 0x09
-#define PID_FUEL_PRESSURE 0x0A
-#define PID_INTAKE_MAP 0x0B
-#define PID_RPM 0x0C
-#define PID_SPEED 0x0D
-#define PID_TIMING_ADVANCE 0x0E
-#define PID_INTAKE_TEMP 0x0F
-#define PID_MAF_FLOW 0x10
-#define PID_THROTTLE 0x11
-#define PID_AUX_INPUT 0x1E
-#define PID_RUNTIME 0x1F
-#define PID_DISTANCE_WITH_MIL 0x21
-#define PID_COMMANDED_EGR 0x2C
-#define PID_EGR_ERROR 0x2D
-#define PID_COMMANDED_EVAPORATIVE_PURGE 0x2E
-#define PID_FUEL_LEVEL 0x2F
-#define PID_WARMS_UPS 0x30
-#define PID_DISTANCE 0x31
-#define PID_EVAP_SYS_VAPOR_PRESSURE 0x32
-#define PID_BAROMETRIC 0x33
-#define PID_CATALYST_TEMP_B1S1 0x3C
-#define PID_CATALYST_TEMP_B2S1 0x3D
-#define PID_CATALYST_TEMP_B1S2 0x3E
-#define PID_CATALYST_TEMP_B2S2 0x3F
-#define PID_CONTROL_MODULE_VOLTAGE 0x42
-#define PID_ABSOLUTE_ENGINE_LOAD 0x43
-#define PID_AIR_FUEL_EQUIV_RATIO 0x44
-#define PID_RELATIVE_THROTTLE_POS 0x45
-#define PID_AMBIENT_TEMP 0x46
-#define PID_ABSOLUTE_THROTTLE_POS_B 0x47
-#define PID_ABSOLUTE_THROTTLE_POS_C 0x48
-#define PID_ACC_PEDAL_POS_D 0x49
-#define PID_ACC_PEDAL_POS_E 0x4A
-#define PID_ACC_PEDAL_POS_F 0x4B
-#define PID_COMMANDED_THROTTLE_ACTUATOR 0x4C
-#define PID_TIME_WITH_MIL 0x4D
-#define PID_TIME_SINCE_CODES_CLEARED 0x4E
-#define PID_ETHANOL_FUEL 0x52
-#define PID_FUEL_RAIL_PRESSURE 0x59
-#define PID_HYBRID_BATTERY_PERCENTAGE 0x5B
-#define PID_ENGINE_OIL_TEMP 0x5C
-#define PID_FUEL_INJECTION_TIMING 0x5D
-#define PID_ENGINE_FUEL_RATE 0x5E
-#define PID_ENGINE_TORQUE_DEMANDED 0x61
-#define PID_ENGINE_TORQUE_PERCENTAGE 0x62
-#define PID_ENGINE_REF_TORQUE 0x63
-
-typedef enum {
- PROTO_AUTO = 0,
- PROTO_ISO_9141_2 = 3,
- PROTO_KWP2000_5KBPS = 4,
- PROTO_KWP2000_FAST = 5,
- PROTO_CAN_11B_500K = 6,
- PROTO_CAN_29B_500K = 7,
- PROTO_CAN_29B_250K = 8,
- PROTO_CAN_11B_250K = 9,
-} OBD_PROTOCOLS;
-
-// states
-typedef enum {
- OBD_DISCONNECTED = 0,
- OBD_CONNECTING = 1,
- OBD_CONNECTED = 2,
- OBD_FAILED = 3
-} OBD_STATES;
-
-uint16_t hex2uint16(const char *p);
-uint8_t hex2uint8(const char *p);
-
-class COBDUART
-{
-public:
- COBDUART():dataMode(1),errors(0),m_state(OBD_DISCONNECTED) {}
- // begin serial UART
- virtual void begin();
- // initialize OBD-II connection
- virtual bool init(OBD_PROTOCOLS protocol = PROTO_AUTO);
- // un-initialize OBD-II connection
- virtual void end();
- // set serial baud rate
- virtual bool setBaudRate(unsigned long baudrate);
- // get connection state
- virtual OBD_STATES getState() { return m_state; }
- // read specified OBD-II PID value
- virtual bool readPID(byte pid, int& result);
- // read multiple (up to 8) OBD-II PID values, return number of values obtained
- virtual byte readPID(const byte pid[], byte count, int result[]);
- // set device into
- virtual void sleep();
- // set working protocol (default auto)
- virtual bool setProtocol(OBD_PROTOCOLS h = PROTO_AUTO);
- // send AT command and receive response
- virtual byte sendCommand(const char* cmd, char* buf, byte bufsize, int timeout = OBD_TIMEOUT_LONG);
- // clear diagnostic trouble code
- virtual void clearDTC();
- // get battery voltage (in 0.1V, e.g. 125 for 12.5V, works without ECU)
- virtual float getVoltage();
- // get VIN as a string, buffer length should be >= OBD_RECV_BUF_SIZE
- virtual bool getVIN(char* buffer, byte bufsize);
- // send query for specified PID
- virtual void sendQuery(byte pid);
- // retrive and parse the response of specifie PID
- virtual bool getResult(byte& pid, int& result);
- // determine if the PID is supported
- virtual bool isValidPID(byte pid);
- // init GPS module
- // parse GPS data
- // set current PID mode
- byte dataMode;
- // occurrence of errors
- byte errors;
- // bit map of supported PIDs
- byte pidmap[4 * 4];
- // adapter version
- byte version;
-protected:
- virtual char* getResponse(byte& pid, char* buffer, byte bufsize);
- virtual byte receive(char* buffer, byte bufsize, int timeout = OBD_TIMEOUT_SHORT);
- virtual void write(const char* s);
- virtual void dataIdleLoop() {}
- void recover();
- void debugOutput(const char* s);
- int normalizeData(byte pid, char* data);
- OBD_STATES m_state;
-private:
- virtual uint8_t getPercentageValue(char* data)
- {
- return (uint16_t)hex2uint8(data) * 100 / 255;
- }
- virtual uint16_t getLargeValue(char* data)
- {
- return hex2uint16(data);
- }
- virtual uint8_t getSmallValue(char* data)
- {
- return hex2uint8(data);
- }
- virtual int16_t getTemperatureValue(char* data)
- {
- return (int)hex2uint8(data) - 40;
- }
-};
-