Dual CANbus monitor and instrumentation cluster supporting ILI9341 display controller
Dependencies: SPI_TFTx2_ILI9341 TOUCH_TFTx2_ILI9341 TFT_fonts mbed
Fork of CANary by
utility.h@176:9c19f9856c76, 2014-02-17 (annotated)
- Committer:
- TickTock
- Date:
- Mon Feb 17 02:39:54 2014 +0000
- Revision:
- 176:9c19f9856c76
- Parent:
- 174:cd27e80f197d
- Child:
- 186:d1f9b57fdd27
// Added to the temperature lookup table; // Fixed div0 boundary condition bug in CP histogram; // Splash trip meter on second screen when turned off if showHealth is enabled; // Max and min efficiency computed over 24 hour interval (to get roundtrip ef
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TickTock | 13:62e0f7f39ff5 | 1 | // utility.h |
TickTock | 13:62e0f7f39ff5 | 2 | |
TickTock | 12:8e42d7ba8468 | 3 | #include "CAN.h" |
TickTock | 13:62e0f7f39ff5 | 4 | #include "common.h" |
TickTock | 23:cd03f9c3395e | 5 | #include "TOUCH_TFTx2.h" |
leafman | 98:9f8bab96edff | 6 | #include <cctype> |
TickTock | 110:ffddff3ad2f2 | 7 | #include "ff.h" |
TickTock | 12:8e42d7ba8468 | 8 | |
TickTock | 13:62e0f7f39ff5 | 9 | extern Timer timer; |
TickTock | 79:68f0dd8d1f19 | 10 | extern Ticker msgReq; |
TickTock | 131:0d926c080a65 | 11 | extern volatile unsigned short secsNoCarCanMsg; |
TickTock | 132:08748a67280a | 12 | extern volatile unsigned short secsNoEvCanMsg; |
TickTock | 75:77bd26829dca | 13 | extern volatile unsigned short secsNoTouch; |
TickTock | 131:0d926c080a65 | 14 | extern volatile bool carCanIdle; |
TickTock | 132:08748a67280a | 15 | extern volatile bool evCanIdle; |
TickTock | 13:62e0f7f39ff5 | 16 | extern volatile bool userIdle; |
TickTock | 13:62e0f7f39ff5 | 17 | extern char displayLog[20][40]; |
TickTock | 13:62e0f7f39ff5 | 18 | extern unsigned char displayLoc; |
TickTock | 13:62e0f7f39ff5 | 19 | extern bool touched; |
TickTock | 13:62e0f7f39ff5 | 20 | extern bool logOpen; |
TickTock | 39:eef8beac7411 | 21 | extern bool logCP; // Turbo3 |
TickTock | 48:d1ce92104a1f | 22 | extern bool yesBattLog ; // gg - Batt Log |
TickTock | 40:0e6e71a7323f | 23 | extern bool showCP; |
TickTock | 13:62e0f7f39ff5 | 24 | extern char writeBuffer[maxBufLen][13]; |
TickTock | 13:62e0f7f39ff5 | 25 | extern volatile int writePointer; |
TickTock | 76:fb6779d0963e | 26 | extern int readPointer; |
TickTock | 13:62e0f7f39ff5 | 27 | extern DigitalOut led1,led2,led3,led4; |
TickTock | 13:62e0f7f39ff5 | 28 | extern char indexLastMsg[0x800]; |
TickTock | 13:62e0f7f39ff5 | 29 | extern unsigned char dMode[2]; |
TickTock | 13:62e0f7f39ff5 | 30 | extern unsigned char msgChanged[100]; |
TickTock | 124:0d622967b764 | 31 | extern unsigned char battData[BatDataBufMax]; // BatDataBufMax |
TickTock | 13:62e0f7f39ff5 | 32 | extern CANMessage lastMsg[100]; |
TickTock | 13:62e0f7f39ff5 | 33 | extern CAN can1,can2; |
leafman | 98:9f8bab96edff | 34 | extern unsigned int fwCount; |
TickTock | 13:62e0f7f39ff5 | 35 | extern DigitalOut can1SleepMode,can2SleepMode; |
TickTock | 34:4751a8259b18 | 36 | extern bool tick; |
garygid | 69:6bfdfc002036 | 37 | extern bool ZeroSecTick; |
TickTock | 34:4751a8259b18 | 38 | extern bool headlights; |
TickTock | 23:cd03f9c3395e | 39 | extern TOUCH_TFTx2 tt; |
TickTock | 35:5acbd8a64a89 | 40 | extern float ledHi; |
TickTock | 35:5acbd8a64a89 | 41 | extern float ledLo; |
TickTock | 35:5acbd8a64a89 | 42 | extern unsigned short pollInt; |
TickTock | 170:7ee98e3611bc | 43 | extern float scale12V,kWperGid; |
TickTock | 36:dbd39c315258 | 44 | extern bool playbackEn; |
TickTock | 36:dbd39c315258 | 45 | extern bool playbackOpen; |
TickTock | 36:dbd39c315258 | 46 | extern bool step; |
TickTock | 36:dbd39c315258 | 47 | extern float playbackInt; |
TickTock | 40:0e6e71a7323f | 48 | extern signed long mWs_x4; |
TickTock | 40:0e6e71a7323f | 49 | extern unsigned short numWsamples; |
TickTock | 174:cd27e80f197d | 50 | extern signed long motorRPM; |
TickTock | 41:8d4609ea7259 | 51 | extern unsigned short numSsamples; |
TickTock | 48:d1ce92104a1f | 52 | extern unsigned char skin; |
TickTock | 50:83d5864c64a0 | 53 | extern unsigned char dtePeriod; |
TickTock | 78:a383971fe02f | 54 | extern unsigned char reqMsgCnt; |
TickTock | 108:29b5a760adc2 | 55 | extern float maxTemp; |
TickTock | 102:fd19f777a0b4 | 56 | extern unsigned long Ah_x10000; |
TickTock | 102:fd19f777a0b4 | 57 | extern unsigned long SOC_x10000; |
TickTock | 143:88b5155622a5 | 58 | extern unsigned short SOH2_x100; |
leafman | 98:9f8bab96edff | 59 | extern bool metric; |
TickTock | 100:63a7456fc972 | 60 | extern unsigned char lastDMode[2]; |
TickTock | 100:63a7456fc972 | 61 | extern unsigned char whichTouched; |
TickTock | 120:041edeec08f5 | 62 | extern float unloadedV_x2,Resr,curRmax,curRmin,redRmax,redRmin,incRmax,incRmin; |
TickTock | 121:553faf139a20 | 63 | extern signed short Imax, Imin; |
TickTock | 118:02010b18efdc | 64 | extern unsigned char tNavRow ; // gg - 4x4 |
TickTock | 118:02010b18efdc | 65 | extern char revStr[7]; // gg - version |
TickTock | 118:02010b18efdc | 66 | extern bool debugMode; |
TickTock | 121:553faf139a20 | 67 | extern bool shunt[96]; |
TickTock | 122:138a40892a4c | 68 | extern float accV; |
TickTock | 152:a4d66901785d | 69 | extern bool accOn; |
TickTock | 143:88b5155622a5 | 70 | extern float accV2; |
TickTock | 131:0d926c080a65 | 71 | extern bool showHealth; |
TickTock | 176:9c19f9856c76 | 72 | extern float kWh_trip[4]; |
TickTock | 176:9c19f9856c76 | 73 | extern float CCkWh_trip[4]; |
TickTock | 176:9c19f9856c76 | 74 | extern float miles_trip[4]; |
TickTock | 155:f31006516956 | 75 | extern PwmOut dled; // for test |
TickTock | 155:f31006516956 | 76 | extern PwmOut spkr; |
TickTock | 159:577e9d015693 | 77 | extern bool brakeMon, regenMon, heaterMon; |
TickTock | 140:ab3e94eb0227 | 78 | extern Ticker geiger; |
TickTock | 140:ab3e94eb0227 | 79 | extern unsigned short chirpInt; |
TickTock | 149:e9739523109f | 80 | extern unsigned short uMsgId[8]; |
TickTock | 152:a4d66901785d | 81 | extern bool autoSync; |
TickTock | 152:a4d66901785d | 82 | extern unsigned short modelYear; |
TickTock | 154:90ea16ca7475 | 83 | extern bool enableSound; |
TickTock | 158:059abeb44ba1 | 84 | extern const unsigned char Arial12x12[]; |
TickTock | 171:355e284f5201 | 85 | extern unsigned long tbScalar; |
TickTock | 171:355e284f5201 | 86 | extern unsigned long rbScalar; |
TickTock | 171:355e284f5201 | 87 | extern unsigned long fbScalar; |
TickTock | 12:8e42d7ba8468 | 88 | |
TickTock | 12:8e42d7ba8468 | 89 | extern "C" { |
TickTock | 12:8e42d7ba8468 | 90 | void mbed_reset(); |
TickTock | 13:62e0f7f39ff5 | 91 | void RTC_IRQHandler(); |
TickTock | 13:62e0f7f39ff5 | 92 | void RTC_Init (void); |
TickTock | 93:c2402e8cd0e2 | 93 | void printMsg (char *msg); |
TickTock | 13:62e0f7f39ff5 | 94 | void touch_ISR(); |
TickTock | 13:62e0f7f39ff5 | 95 | unsigned short getTimeStamp(); |
TickTock | 13:62e0f7f39ff5 | 96 | void logCan (char mType, CANMessage canRXmsg); |
TickTock | 13:62e0f7f39ff5 | 97 | void logTS (); |
TickTock | 138:a2f5af85ed0d | 98 | void logEvent (char * errMsg); // gg - messeges |
TickTock | 138:a2f5af85ed0d | 99 | void sendTempReq(); |
TickTock | 78:a383971fe02f | 100 | void sendReq(); |
TickTock | 36:dbd39c315258 | 101 | void autoPollISR(); |
TickTock | 36:dbd39c315258 | 102 | void playbackISR(); |
TickTock | 13:62e0f7f39ff5 | 103 | void recieve1(); |
TickTock | 13:62e0f7f39ff5 | 104 | void recieve2(); |
TickTock | 36:dbd39c315258 | 105 | void doNothing(); |
TickTock | 22:a43df3905863 | 106 | unsigned char buttonX(unsigned short X, unsigned char columns); |
TickTock | 22:a43df3905863 | 107 | unsigned char buttonY(unsigned short Y,unsigned char rows); |
TickTock | 23:cd03f9c3395e | 108 | void saveConfig(); |
TickTock | 25:ddf0ec209f03 | 109 | void readConfig(); |
TickTock | 25:ddf0ec209f03 | 110 | void upDate(unsigned char field, bool updownbar); |
TickTock | 153:e94cfe3c339c | 111 | bool syncDateTime(); |
TickTock | 39:eef8beac7411 | 112 | void logPackVoltages(); // Turbo3 |
TickTock | 108:29b5a760adc2 | 113 | void tripLog(); // Turbo3 |
leafman | 98:9f8bab96edff | 114 | void updateFirmware(); // LM - Update firmware off USB |
TickTock | 169:84d790ac18a2 | 115 | void updateConfig(); |
TickTock | 108:29b5a760adc2 | 116 | bool detectUSB(); |
TickTock | 140:ab3e94eb0227 | 117 | void chirp(); |
TickTock | 155:f31006516956 | 118 | void beep(float freq, float time); |
TickTock | 160:905fe45ed54b | 119 | void beep3(float freq1, float time1, float freq2, float time2, float freq3, float time3); |
TickTock | 25:ddf0ec209f03 | 120 | } |
TickTock | 12:8e42d7ba8468 | 121 | |
TickTock | 12:8e42d7ba8468 | 122 | //LEAF OBD |
TickTock | 12:8e42d7ba8468 | 123 | //1: |
TickTock | 12:8e42d7ba8468 | 124 | //2: |
TickTock | 12:8e42d7ba8468 | 125 | //3: AVCAN-L White/Blue |
TickTock | 12:8e42d7ba8468 | 126 | //4: VSS-Shield |
TickTock | 12:8e42d7ba8468 | 127 | //5: VSS Brown,White/Brown |
TickTock | 12:8e42d7ba8468 | 128 | //6: CARCAN-H Green |
TickTock | 12:8e42d7ba8468 | 129 | //7: |
TickTock | 12:8e42d7ba8468 | 130 | //8: 12V-SW Orange,White/Orange |
TickTock | 12:8e42d7ba8468 | 131 | //9: |
TickTock | 12:8e42d7ba8468 | 132 | //10: |
TickTock | 12:8e42d7ba8468 | 133 | //11: AVCAN-H Blue |
TickTock | 12:8e42d7ba8468 | 134 | //12: EVCAN-L White/Grey |
TickTock | 12:8e42d7ba8468 | 135 | //13: EVCAN-H Grey |
TickTock | 12:8e42d7ba8468 | 136 | //14: CARCAN-L White/Green |
TickTock | 12:8e42d7ba8468 | 137 | //15: |
TickTock | 12:8e42d7ba8468 | 138 | //16: 12V-AON Red/Blue,Blue/Red |
TickTock | 12:8e42d7ba8468 | 139 | |
TickTock | 12:8e42d7ba8468 | 140 | //VP230 |
TickTock | 12:8e42d7ba8468 | 141 | //1:D |
TickTock | 12:8e42d7ba8468 | 142 | //2:GND |
TickTock | 12:8e42d7ba8468 | 143 | //3:VCC |
TickTock | 12:8e42d7ba8468 | 144 | //4:R |
TickTock | 12:8e42d7ba8468 | 145 | //5:Vref |
TickTock | 12:8e42d7ba8468 | 146 | //6:CANL |
TickTock | 12:8e42d7ba8468 | 147 | //7:CANH |
TickTock | 12:8e42d7ba8468 | 148 | //8:RS |
TickTock | 12:8e42d7ba8468 | 149 | |
TickTock | 12:8e42d7ba8468 | 150 | //LPC1768 |
TickTock | 12:8e42d7ba8468 | 151 | //1: VSS |
TickTock | 12:8e42d7ba8468 | 152 | //2: NC:VIN (4.5-9V supply) |
TickTock | 12:8e42d7ba8468 | 153 | //3: NC:VB |
TickTock | 12:8e42d7ba8468 | 154 | //4: NC:nR |
TickTock | 22:a43df3905863 | 155 | //5: SPI:Reset |
TickTock | 22:a43df3905863 | 156 | //6: SPI:CS0 |
TickTock | 22:a43df3905863 | 157 | //7: SPI:CS1 |
TickTock | 12:8e42d7ba8468 | 158 | //8: CAN1:Sleep --> 8:CAN1:RS |
TickTock | 12:8e42d7ba8468 | 159 | //9: CAN1:RX --> 4:CAN1:R |
TickTock | 12:8e42d7ba8468 | 160 | //10: CAN1:TX --> 1:CAN1:D |
TickTock | 12:8e42d7ba8468 | 161 | //11: SPI:MOSI |
TickTock | 12:8e42d7ba8468 | 162 | //12: SPI:MISO |
TickTock | 12:8e42d7ba8468 | 163 | //13: SPI:SCLK |
TickTock | 12:8e42d7ba8468 | 164 | //14: NC:Ain |
TickTock | 12:8e42d7ba8468 | 165 | //15: MON12V --> 4K to 12V, 1K to VSS (To be implemented) |
TickTock | 12:8e42d7ba8468 | 166 | //16: TOUCH_X+ |
TickTock | 12:8e42d7ba8468 | 167 | //17: TOUCH_X- |
TickTock | 12:8e42d7ba8468 | 168 | //18: NC:Aout |
TickTock | 12:8e42d7ba8468 | 169 | //19: TOUCH_Y+ |
TickTock | 12:8e42d7ba8468 | 170 | //20: TOUCH_Y- |
TickTock | 12:8e42d7ba8468 | 171 | //21: Spkr+ |
TickTock | 22:a43df3905863 | 172 | //22: NC:pwm |
TickTock | 22:a43df3905863 | 173 | //23: LED |
TickTock | 22:a43df3905863 | 174 | //24: NC:pwm |
TickTock | 12:8e42d7ba8468 | 175 | //25: NC:pwm |
TickTock | 12:8e42d7ba8468 | 176 | //26: NC:pwm |
TickTock | 12:8e42d7ba8468 | 177 | //27: NC |
TickTock | 12:8e42d7ba8468 | 178 | //28: CAN2:Sleep --> 8:CAN2:RS |
TickTock | 12:8e42d7ba8468 | 179 | //29: CAN2:TX --> 1:CAN2:D |
TickTock | 12:8e42d7ba8468 | 180 | //30: CAN2:RX --> 4:CAN2:R |
TickTock | 12:8e42d7ba8468 | 181 | //31: USB_D+ |
TickTock | 12:8e42d7ba8468 | 182 | //32: USB_D- |
TickTock | 12:8e42d7ba8468 | 183 | //33: NC:Eth_TD+ |
TickTock | 12:8e42d7ba8468 | 184 | //34: NC:Eth_TD- |
TickTock | 12:8e42d7ba8468 | 185 | //35: NC:Eth_RD+ |
TickTock | 12:8e42d7ba8468 | 186 | //36: NC:Eth_RD- |
TickTock | 12:8e42d7ba8468 | 187 | //37: NC:IF+ |
TickTock | 12:8e42d7ba8468 | 188 | //38: NC:IF- |
TickTock | 12:8e42d7ba8468 | 189 | //39: NC:5Vout (only available when connected as USB device) |
TickTock | 12:8e42d7ba8468 | 190 | //40: VCC3.3 |