AT&T IoT hackster.io contest entry: Carpal2

Dependencies:   FXOS8700CQ Pubnub_mbed2_sync WNCInterface mbed-rtos mbed

Committer:
cswiger
Date:
Sat Dec 24 17:31:00 2016 +0000
Revision:
2:fe8e935b9342
Parent:
0:d2425a595807
added Ignition awareness so Carpal2 will resume working after car has been turned off and back on.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cswiger 0:d2425a595807 1 /* Library for the Sparkfun OBD2 uart - cloned from
cswiger 0:d2425a595807 2 * https://github.com/sigalabs/Vehicle-OBD2-Shield
cswiger 0:d2425a595807 3 */
cswiger 0:d2425a595807 4
cswiger 0:d2425a595807 5 #ifndef __OBD2_H
cswiger 0:d2425a595807 6 #define __OBD2_H
cswiger 0:d2425a595807 7
cswiger 0:d2425a595807 8
cswiger 0:d2425a595807 9 #define NUL '\0'
cswiger 0:d2425a595807 10 #define CR '\r'
cswiger 0:d2425a595807 11 #define PROMPT '>'
cswiger 0:d2425a595807 12 #define DATA 1
cswiger 0:d2425a595807 13
cswiger 0:d2425a595807 14 #define STRLEN 40
cswiger 0:d2425a595807 15
cswiger 0:d2425a595807 16 #define DTC_BUFFER (MAX_DTC_READ*6)+2
cswiger 0:d2425a595807 17 //OBD2 PIDs
cswiger 0:d2425a595807 18
cswiger 0:d2425a595807 19 #define PID_SUPPORT00 0x00
cswiger 0:d2425a595807 20 #define MIL_CODE 0x01
cswiger 0:d2425a595807 21 #define FREEZE_DTC 0x02
cswiger 0:d2425a595807 22 #define FUEL_STATUS 0x03
cswiger 0:d2425a595807 23 #define LOAD_VALUE 0x04
cswiger 0:d2425a595807 24 #define COOLANT_TEMP 0x05
cswiger 0:d2425a595807 25 #define STFT_BANK1 0x06
cswiger 0:d2425a595807 26 #define LTFT_BANK1 0x07
cswiger 0:d2425a595807 27 #define STFT_BANK2 0x08
cswiger 0:d2425a595807 28 #define LTFT_BANK2 0x09
cswiger 0:d2425a595807 29 #define FUEL_PRESSURE 0x0A
cswiger 0:d2425a595807 30 #define MAN_PRESSURE 0x0B
cswiger 0:d2425a595807 31 #define ENGINE_RPM 0x0C
cswiger 0:d2425a595807 32 #define VEHICLE_SPEED 0x0D
cswiger 0:d2425a595807 33 #define TIMING_ADV 0x0E
cswiger 0:d2425a595807 34 #define INT_AIR_TEMP 0x0F
cswiger 0:d2425a595807 35 #define MAF_AIR_FLOW 0x10
cswiger 0:d2425a595807 36 #define THROTTLE_POS 0x11
cswiger 0:d2425a595807 37 #define SEC_AIR_STAT 0x12
cswiger 0:d2425a595807 38 #define OXY_SENSORS1 0x13
cswiger 0:d2425a595807 39 #define B1S1_O2_V 0x14
cswiger 0:d2425a595807 40 #define B1S2_O2_V 0x15
cswiger 0:d2425a595807 41 #define B1S3_O2_V 0x16
cswiger 0:d2425a595807 42 #define B1S4_O2_V 0x17
cswiger 0:d2425a595807 43 #define B2S1_O2_V 0x18
cswiger 0:d2425a595807 44 #define B2S2_O2_V 0x19
cswiger 0:d2425a595807 45 #define B2S3_O2_V 0x1A
cswiger 0:d2425a595807 46 #define B2S4_O2_V 0x1B
cswiger 0:d2425a595807 47 #define OBD_STD 0x1C
cswiger 0:d2425a595807 48 #define OXY_SENSORS2 0x1D
cswiger 0:d2425a595807 49 #define AUX_INPUT 0x1E
cswiger 0:d2425a595807 50 #define RUNTIME_START 0x1F
cswiger 0:d2425a595807 51 #define PID_SUPPORT20 0x20
cswiger 0:d2425a595807 52 #define DIST_MIL_ON 0x21
cswiger 0:d2425a595807 53 #define FUEL_RAIL_P 0x22
cswiger 0:d2425a595807 54 #define FUEL_RAIL_DIESEL 0x23
cswiger 0:d2425a595807 55 #define O2S1_WR_V 0x24
cswiger 0:d2425a595807 56 #define O2S2_WR_V 0x25
cswiger 0:d2425a595807 57 #define O2S3_WR_V 0x26
cswiger 0:d2425a595807 58 #define O2S4_WR_V 0x27
cswiger 0:d2425a595807 59 #define O2S5_WR_V 0x28
cswiger 0:d2425a595807 60 #define O2S6_WR_V 0x29
cswiger 0:d2425a595807 61 #define O2S7_WR_V 0x2A
cswiger 0:d2425a595807 62 #define O2S8_WR_V 0x2B
cswiger 0:d2425a595807 63 #define EGR 0x2C
cswiger 0:d2425a595807 64 #define EGR_ERROR 0x2D
cswiger 0:d2425a595807 65 #define EVAP_PURGE 0x2E
cswiger 0:d2425a595807 66 #define FUEL_LEVEL 0x2F
cswiger 0:d2425a595807 67 #define WARM_UPS 0x30
cswiger 0:d2425a595807 68 #define DIST_MIL_CLR 0x31
cswiger 0:d2425a595807 69 #define EVAP_PRESSURE 0x32
cswiger 0:d2425a595807 70 #define BARO_PRESSURE 0x33
cswiger 0:d2425a595807 71 #define O2S1_WR_C 0x34
cswiger 0:d2425a595807 72 #define O2S2_WR_C 0x35
cswiger 0:d2425a595807 73 #define O2S3_WR_C 0x36
cswiger 0:d2425a595807 74 #define O2S4_WR_C 0x37
cswiger 0:d2425a595807 75 #define O2S5_WR_C 0x38
cswiger 0:d2425a595807 76 #define O2S6_WR_C 0x39
cswiger 0:d2425a595807 77 #define O2S7_WR_C 0x3A
cswiger 0:d2425a595807 78 #define O2S8_WR_C 0x3B
cswiger 0:d2425a595807 79 #define CAT_TEMP_B1S1 0x3C
cswiger 0:d2425a595807 80 #define CAT_TEMP_B2S1 0x3D
cswiger 0:d2425a595807 81 #define CAT_TEMP_B1S2 0x3E
cswiger 0:d2425a595807 82 #define CAT_TEMP_B2S2 0x3F
cswiger 0:d2425a595807 83 #define PID_SUPPORT40 0x40
cswiger 0:d2425a595807 84 #define MONITOR_STAT 0x41
cswiger 0:d2425a595807 85 #define CTRL_MOD_V 0x42
cswiger 0:d2425a595807 86 #define ABS_LOAD_VAL 0x43
cswiger 0:d2425a595807 87 #define CMD_EQUIV_R 0x44
cswiger 0:d2425a595807 88 #define REL_THR_POS 0x45
cswiger 0:d2425a595807 89 #define AMBIENT_TEMP 0x46
cswiger 0:d2425a595807 90 #define ABS_THR_POS_B 0x47
cswiger 0:d2425a595807 91 #define ABS_THR_POS_C 0x48
cswiger 0:d2425a595807 92 #define ACCEL_PEDAL_D 0x49
cswiger 0:d2425a595807 93 #define ACCEL_PEDAL_E 0x4A
cswiger 0:d2425a595807 94 #define ACCEL_PEDAL_F 0x4B
cswiger 0:d2425a595807 95 #define CMD_THR_ACTU 0x4C
cswiger 0:d2425a595807 96 #define TIME_MIL_ON 0x4D
cswiger 0:d2425a595807 97 #define TIME_MIL_CLR 0x4E
cswiger 0:d2425a595807 98 #define FUEL_TYPE 0x51
cswiger 0:d2425a595807 99 #define ETHYL_FUEL 0x52
cswiger 0:d2425a595807 100 #define LAST_PID 0x52
cswiger 0:d2425a595807 101
cswiger 0:d2425a595807 102
cswiger 0:d2425a595807 103 //DTCs
cswiger 0:d2425a595807 104 #define MAX_DTC_READ 5
cswiger 0:d2425a595807 105
cswiger 0:d2425a595807 106
cswiger 0:d2425a595807 107 // function prototypes
cswiger 0:d2425a595807 108 char Init();
cswiger 0:d2425a595807 109 char stn1110_read(char *str, char size);
cswiger 0:d2425a595807 110 void stn1110_write(char *str);
cswiger 0:d2425a595807 111 char stn1110_check_response(const char *cmd, char *str);
cswiger 0:d2425a595807 112 char stn1110_compact_response(char *buf, char *str);
cswiger 0:d2425a595807 113 char stn1110_command(char *str, char *cmd);
cswiger 0:d2425a595807 114 void check_supported_pids(void);
cswiger 0:d2425a595807 115 char is_pid_supported(char pid);
cswiger 0:d2425a595807 116 char get_pid(char pid, long *ret);
cswiger 0:d2425a595807 117 char verifyECUAlive(void);
cswiger 0:d2425a595807 118 char Refresh(void);
cswiger 0:d2425a595807 119 bool dtc_read(void);
cswiger 0:d2425a595807 120 bool dtc_clear(void);
cswiger 0:d2425a595807 121
cswiger 0:d2425a595807 122 //Structures
cswiger 0:d2425a595807 123 struct DTC_t {
cswiger 0:d2425a595807 124 char code[6];
cswiger 0:d2425a595807 125 } DTC[MAX_DTC_READ];
cswiger 0:d2425a595807 126
cswiger 0:d2425a595807 127 //Variables
cswiger 0:d2425a595807 128 char isIgnitionOn;
cswiger 0:d2425a595807 129 char isEngineOn;
cswiger 0:d2425a595807 130 bool has_dtc;
cswiger 0:d2425a595807 131
cswiger 0:d2425a595807 132
cswiger 0:d2425a595807 133 char *strip_answer(char *s);
cswiger 0:d2425a595807 134 unsigned long pid01to20_support;
cswiger 0:d2425a595807 135 unsigned long pid21to40_support;
cswiger 0:d2425a595807 136 unsigned long pid41to60_support;
cswiger 0:d2425a595807 137 long tempLong;
cswiger 0:d2425a595807 138 long engineRPM;
cswiger 0:d2425a595807 139
cswiger 0:d2425a595807 140
cswiger 0:d2425a595807 141 #endif