f211

Dependencies:   mbed-dev1

Fork of OBD21121 by Surendar S

Committer:
takeuz
Date:
Mon Feb 27 07:45:55 2017 +0000
Revision:
4:3e1e2b161403
Parent:
2:d58ef72b4ab0
Child:
5:53d84cbf9890
communication protocol changes

Who changed what in which revision?

UserRevisionLine numberNew contents of line
takeuz 0:ccd2474129f2 1 #include "mbed.h"
takeuz 2:d58ef72b4ab0 2 #include "functions.h"
takeuz 2:d58ef72b4ab0 3
takeuz 2:d58ef72b4ab0 4 #define ENGINE_RPM 0x0C
takeuz 2:d58ef72b4ab0 5 #define VEHICLE_SPEED 0x0D
takeuz 2:d58ef72b4ab0 6 #define PID_REQUEST 0x7DF
takeuz 2:d58ef72b4ab0 7 #define PID_REPLY 0x7E8
takeuz 2:d58ef72b4ab0 8
takeuz 2:d58ef72b4ab0 9 //??USE ARRAYLIST Of Int
takeuz 2:d58ef72b4ab0 10 #define CANSPEED_500 500000 // CAN speed at 500 kbps
takeuz 2:d58ef72b4ab0 11 #define CANSPEED_250 250000 // CAN speed at 250 kbps
takeuz 2:d58ef72b4ab0 12 #define CANSPEED_125 125000 // CAN speed at 125 kbps
takeuz 2:d58ef72b4ab0 13 #define sendDebugMessage 1
takeuz 2:d58ef72b4ab0 14 #define pushDebugData 1
takeuz 2:d58ef72b4ab0 15
takeuz 4:3e1e2b161403 16 const int canSpeeds[3]= {CANSPEED_125,CANSPEED_250,CANSPEED_500};
takeuz 2:d58ef72b4ab0 17
takeuz 2:d58ef72b4ab0 18
takeuz 2:d58ef72b4ab0 19 DigitalOut myled(LED2);
takeuz 4:3e1e2b161403 20 DigitalOut canDriverPowerSave(P0_4);
takeuz 4:3e1e2b161403 21 InterruptIn canActivity(P0_5);
takeuz 4:3e1e2b161403 22 RawSerial serialPorts[3] = {RawSerial(P0_26,P0_6),RawSerial(P0_22,P0_23),RawSerial(USBTX,USBRX)};
takeuz 2:d58ef72b4ab0 23 //Serial pc(P0_9,P0_29);
takeuz 2:d58ef72b4ab0 24
takeuz 2:d58ef72b4ab0 25 CAN canBus(P0_24, P0_25);
takeuz 4:3e1e2b161403 26 AnalogIn batteryVoltage(P0_6);
takeuz 2:d58ef72b4ab0 27 //DigitalOut indicatorLEDs[3] = {P0_22,P0_23,P0_6};
takeuz 2:d58ef72b4ab0 28
takeuz 2:d58ef72b4ab0 29
takeuz 2:d58ef72b4ab0 30 //UART Counters
takeuz 2:d58ef72b4ab0 31 int kLine=0;
takeuz 2:d58ef72b4ab0 32 int interFace=1;
takeuz 2:d58ef72b4ab0 33 int debug=2;
takeuz 2:d58ef72b4ab0 34
takeuz 2:d58ef72b4ab0 35
takeuz 2:d58ef72b4ab0 36 int currentOBDProtocol=0;
takeuz 2:d58ef72b4ab0 37 const int protkLine=2;
takeuz 2:d58ef72b4ab0 38 const int protCan=1;
takeuz 2:d58ef72b4ab0 39 int canFrequency;
takeuz 2:d58ef72b4ab0 40 //LED Counters
takeuz 2:d58ef72b4ab0 41
takeuz 2:d58ef72b4ab0 42 Ticker timeCounter;
takeuz 2:d58ef72b4ab0 43 char can_msg[8];
takeuz 2:d58ef72b4ab0 44 Timer OBDTimer;
takeuz 2:d58ef72b4ab0 45
takeuz 2:d58ef72b4ab0 46 //Data Storage for incoming data on Interface
takeuz 2:d58ef72b4ab0 47 char *incomingDataInInterFace;
takeuz 2:d58ef72b4ab0 48 const int incomingDataInInterFaceSize=256;
takeuz 2:d58ef72b4ab0 49 int incomingDataInInterFaceCounter=0;
takeuz 2:d58ef72b4ab0 50
takeuz 2:d58ef72b4ab0 51 //Data Storage for incoming data on OBD
takeuz 2:d58ef72b4ab0 52 char *incomingDataInOBD;
takeuz 2:d58ef72b4ab0 53 const int incomingDataInOBDSize=256;
takeuz 2:d58ef72b4ab0 54 CANMessage can_MsgRx;
takeuz 2:d58ef72b4ab0 55 int incomingDataInOBDCounter=0;
takeuz 2:d58ef72b4ab0 56
takeuz 2:d58ef72b4ab0 57
takeuz 2:d58ef72b4ab0 58 //OBD Command data
takeuz 2:d58ef72b4ab0 59 char* charPid;
takeuz 2:d58ef72b4ab0 60 char* charID;
takeuz 2:d58ef72b4ab0 61 int pid;
takeuz 2:d58ef72b4ab0 62 int ID;
takeuz 2:d58ef72b4ab0 63
takeuz 2:d58ef72b4ab0 64
takeuz 0:ccd2474129f2 65
takeuz 2:d58ef72b4ab0 66 //Wait Duration for OBD comm
takeuz 2:d58ef72b4ab0 67 const int waitTimeForOBDComm=2000;
takeuz 2:d58ef72b4ab0 68 //Sleep time between commands
takeuz 2:d58ef72b4ab0 69 const int sleepTime=25000;
takeuz 2:d58ef72b4ab0 70 //Time to send chip to power save mode
takeuz 2:d58ef72b4ab0 71 const int powerSaveTime=120;
takeuz 2:d58ef72b4ab0 72
takeuz 2:d58ef72b4ab0 73 //Global Variables
takeuz 2:d58ef72b4ab0 74 //New Data receivd on OBD or Interface
takeuz 2:d58ef72b4ab0 75 int OBDCmdReceived=0;
takeuz 2:d58ef72b4ab0 76 int interfaceCmdReceived=0;
takeuz 2:d58ef72b4ab0 77
takeuz 2:d58ef72b4ab0 78 //Last activity time on OBD Interface
takeuz 2:d58ef72b4ab0 79 int lastOBDCmdRcvdTime=0;
takeuz 2:d58ef72b4ab0 80 int lastInterfaceCmdRcvdTime=0;
takeuz 2:d58ef72b4ab0 81
takeuz 4:3e1e2b161403 82 void activityOnCan()
takeuz 4:3e1e2b161403 83 {
takeuz 4:3e1e2b161403 84 }
takeuz 4:3e1e2b161403 85
takeuz 2:d58ef72b4ab0 86 void readInterface()
takeuz 2:d58ef72b4ab0 87 {
takeuz 2:d58ef72b4ab0 88 char c;
takeuz 2:d58ef72b4ab0 89 while(serialPorts[interFace].readable()) {
takeuz 2:d58ef72b4ab0 90 lastInterfaceCmdRcvdTime=0;
takeuz 2:d58ef72b4ab0 91 c = serialPorts[interFace].getc();
takeuz 4:3e1e2b161403 92 if(incomingDataInInterFaceCounter<incomingDataInInterFaceSize) {
takeuz 2:d58ef72b4ab0 93 incomingDataInInterFace[incomingDataInInterFaceCounter] = c;
takeuz 2:d58ef72b4ab0 94 }
takeuz 2:d58ef72b4ab0 95 incomingDataInInterFaceCounter++;
takeuz 4:3e1e2b161403 96
takeuz 2:d58ef72b4ab0 97 if(c=='\n') {
takeuz 2:d58ef72b4ab0 98 interfaceCmdReceived=1;
takeuz 2:d58ef72b4ab0 99 }
takeuz 0:ccd2474129f2 100
takeuz 2:d58ef72b4ab0 101 }
takeuz 2:d58ef72b4ab0 102 }
takeuz 2:d58ef72b4ab0 103 void readKLine()
takeuz 2:d58ef72b4ab0 104 {
takeuz 2:d58ef72b4ab0 105 char c;
takeuz 2:d58ef72b4ab0 106 while(serialPorts[kLine].readable()) {
takeuz 2:d58ef72b4ab0 107 lastOBDCmdRcvdTime=0;
takeuz 2:d58ef72b4ab0 108 c = serialPorts[kLine].getc();
takeuz 4:3e1e2b161403 109 if(incomingDataInOBDCounter<incomingDataInOBDSize) {
takeuz 2:d58ef72b4ab0 110 incomingDataInOBD[incomingDataInOBDCounter]=c;
takeuz 2:d58ef72b4ab0 111 }
takeuz 2:d58ef72b4ab0 112 incomingDataInOBDCounter++;
takeuz 2:d58ef72b4ab0 113 if(c=='\n') {
takeuz 2:d58ef72b4ab0 114 OBDCmdReceived=1;
takeuz 2:d58ef72b4ab0 115 }
takeuz 2:d58ef72b4ab0 116
takeuz 2:d58ef72b4ab0 117 }
takeuz 2:d58ef72b4ab0 118 }
takeuz 2:d58ef72b4ab0 119
takeuz 2:d58ef72b4ab0 120
takeuz 2:d58ef72b4ab0 121
takeuz 4:3e1e2b161403 122 void canReader()
takeuz 4:3e1e2b161403 123 {
takeuz 2:d58ef72b4ab0 124 if (canBus.read(can_MsgRx)) {
takeuz 4:3e1e2b161403 125 //Setting
takeuz 2:d58ef72b4ab0 126 lastOBDCmdRcvdTime=0;
takeuz 4:3e1e2b161403 127
takeuz 2:d58ef72b4ab0 128 if ((can_MsgRx.id == PID_REPLY) && (can_MsgRx.data[2] == ENGINE_RPM)) {
takeuz 2:d58ef72b4ab0 129 serialPorts[debug].puts("HRHK");
takeuz 2:d58ef72b4ab0 130 for (int i = 0; i < (int)can_MsgRx.len; i++) {
takeuz 2:d58ef72b4ab0 131 serialPorts[debug].printf("%d:%x , ", i, can_MsgRx.data[i]);
takeuz 2:d58ef72b4ab0 132 }
takeuz 2:d58ef72b4ab0 133 }
takeuz 2:d58ef72b4ab0 134 }
takeuz 2:d58ef72b4ab0 135 }
takeuz 2:d58ef72b4ab0 136
takeuz 4:3e1e2b161403 137 void timeCounterFunction()
takeuz 4:3e1e2b161403 138 {
takeuz 2:d58ef72b4ab0 139 lastInterfaceCmdRcvdTime++;
takeuz 2:d58ef72b4ab0 140 lastOBDCmdRcvdTime++;
takeuz 2:d58ef72b4ab0 141 //IF timout is over certain amount just shutdown
takeuz 4:3e1e2b161403 142
takeuz 4:3e1e2b161403 143
takeuz 2:d58ef72b4ab0 144 }
takeuz 0:ccd2474129f2 145
takeuz 4:3e1e2b161403 146 int main()
takeuz 4:3e1e2b161403 147 {
takeuz 2:d58ef72b4ab0 148
takeuz 4:3e1e2b161403 149 serialPorts[debug].puts("f2117\r\n");
takeuz 2:d58ef72b4ab0 150
takeuz 2:d58ef72b4ab0 151 //Initialization
takeuz 2:d58ef72b4ab0 152 incomingDataInInterFace=(char *)malloc(incomingDataInInterFaceSize*sizeof(char));
takeuz 2:d58ef72b4ab0 153 incomingDataInOBD=(char *)malloc(incomingDataInOBDSize*sizeof(char));
takeuz 2:d58ef72b4ab0 154
takeuz 2:d58ef72b4ab0 155 clearMemoryLocation(incomingDataInInterFace,incomingDataInInterFaceSize);
takeuz 4:3e1e2b161403 156 clearMemoryLocation(incomingDataInOBD,incomingDataInOBDSize);
takeuz 4:3e1e2b161403 157
takeuz 4:3e1e2b161403 158
takeuz 4:3e1e2b161403 159 canDriverPowerSave=0;
takeuz 4:3e1e2b161403 160
takeuz 2:d58ef72b4ab0 161 timeCounter.attach(&timeCounterFunction, 1.0);
takeuz 2:d58ef72b4ab0 162 serialPorts[interFace].attach(&readInterface);
takeuz 2:d58ef72b4ab0 163
takeuz 2:d58ef72b4ab0 164 serialPorts[interFace].puts("ELM327 v1.0\r\n");
takeuz 4:3e1e2b161403 165
takeuz 0:ccd2474129f2 166 while(1) {
takeuz 4:3e1e2b161403 167 if(!currentOBDProtocol) {
takeuz 4:3e1e2b161403 168 #if sendDebugMessage
takeuz 4:3e1e2b161403 169 serialPorts[debug].puts("Going to figure protocol\r\n");
takeuz 4:3e1e2b161403 170 #endif
takeuz 2:d58ef72b4ab0 171 serialPorts[kLine].attach(NULL);
takeuz 2:d58ef72b4ab0 172 canBus.attach(NULL);
takeuz 2:d58ef72b4ab0 173 serialPorts[interFace].puts("Searching...\r\n");
takeuz 2:d58ef72b4ab0 174 serialPorts[debug].puts("Searching...\r\n");
takeuz 2:d58ef72b4ab0 175 checkCommunicationProtocol();
takeuz 4:3e1e2b161403 176 if(currentOBDProtocol==protkLine) {
takeuz 2:d58ef72b4ab0 177 serialPorts[kLine].attach(&readKLine);
takeuz 4:3e1e2b161403 178 }
takeuz 4:3e1e2b161403 179 if(currentOBDProtocol==protCan) {
takeuz 2:d58ef72b4ab0 180 canBus.attach(&canReader);
takeuz 4:3e1e2b161403 181 }
takeuz 2:d58ef72b4ab0 182 //??Shall we do somehitng when receive a specific commnad
takeuz 4:3e1e2b161403 183
takeuz 2:d58ef72b4ab0 184 //?? Do this !Unknown only once.
takeuz 4:3e1e2b161403 185 if(!currentOBDProtocol) {
takeuz 2:d58ef72b4ab0 186 serialPorts[interFace].puts("!UnknownProtocol\r\n");
takeuz 4:3e1e2b161403 187 #if sendDebugMessage
takeuz 4:3e1e2b161403 188 serialPorts[debug].puts("!Unknownprotocol\r\n");
takeuz 4:3e1e2b161403 189 #endif
takeuz 2:d58ef72b4ab0 190 //Goto Sleep?
takeuz 2:d58ef72b4ab0 191 }
takeuz 2:d58ef72b4ab0 192 }
takeuz 2:d58ef72b4ab0 193
takeuz 2:d58ef72b4ab0 194
takeuz 4:3e1e2b161403 195 if(interfaceCmdReceived) {
takeuz 2:d58ef72b4ab0 196 checkForLocalInterfaceCommand();
takeuz 2:d58ef72b4ab0 197 }
takeuz 4:3e1e2b161403 198 if(interfaceCmdReceived) {
takeuz 2:d58ef72b4ab0 199 OBDTimer.reset();
takeuz 2:d58ef72b4ab0 200 OBDCmdReceived=0;
takeuz 2:d58ef72b4ab0 201 sendCommand();
takeuz 2:d58ef72b4ab0 202 OBDTimer.start();
takeuz 4:3e1e2b161403 203 while(OBDTimer.read_ms() < waitTimeForOBDComm) {
takeuz 4:3e1e2b161403 204 if(OBDCmdReceived) {
takeuz 2:d58ef72b4ab0 205 sendResponseToInterface();
takeuz 2:d58ef72b4ab0 206 break;
takeuz 2:d58ef72b4ab0 207 }
takeuz 2:d58ef72b4ab0 208 }
takeuz 2:d58ef72b4ab0 209 OBDTimer.stop();
takeuz 4:3e1e2b161403 210 if(!OBDCmdReceived) {
takeuz 2:d58ef72b4ab0 211 serialPorts[interFace].puts("?\r\n");
takeuz 2:d58ef72b4ab0 212 }
takeuz 2:d58ef72b4ab0 213 OBDCmdReceived=0;
takeuz 2:d58ef72b4ab0 214 interfaceCmdReceived=0;
takeuz 2:d58ef72b4ab0 215
takeuz 4:3e1e2b161403 216 //issueRegularCommands();
takeuz 2:d58ef72b4ab0 217 }
takeuz 2:d58ef72b4ab0 218 myled=0;
takeuz 2:d58ef72b4ab0 219 sleepProcess();
takeuz 4:3e1e2b161403 220 if(lastOBDCmdRcvdTime> powerSaveTime && lastInterfaceCmdRcvdTime> powerSaveTime ) {
takeuz 2:d58ef72b4ab0 221 powerSaveMode();
takeuz 2:d58ef72b4ab0 222 }
takeuz 2:d58ef72b4ab0 223 myled=1;
takeuz 0:ccd2474129f2 224 }
takeuz 0:ccd2474129f2 225 }
takeuz 2:d58ef72b4ab0 226
takeuz 4:3e1e2b161403 227 void checkCommunicationProtocol()
takeuz 4:3e1e2b161403 228 {
takeuz 4:3e1e2b161403 229 #if sendDebugMessage
takeuz 4:3e1e2b161403 230 serialPorts[debug].puts("check Communication protocal ENT\r\n");
takeuz 4:3e1e2b161403 231 #endif
takeuz 2:d58ef72b4ab0 232 int i=0;
takeuz 4:3e1e2b161403 233 do {
takeuz 4:3e1e2b161403 234 #if sendDebugMessage
takeuz 2:d58ef72b4ab0 235 serialPorts[debug].puts("CanBusCheck\r\n");
takeuz 4:3e1e2b161403 236 #endif
takeuz 2:d58ef72b4ab0 237 canBus.reset();
takeuz 2:d58ef72b4ab0 238 clearCanMessage();
takeuz 2:d58ef72b4ab0 239 canBus.frequency(canSpeeds[i]);
takeuz 2:d58ef72b4ab0 240 OBDTimer.reset();
takeuz 2:d58ef72b4ab0 241 OBDTimer.start();
takeuz 2:d58ef72b4ab0 242 OBDCmdReceived=0;
takeuz 2:d58ef72b4ab0 243 if (canBus.write(CANMessage(PID_REQUEST, can_msg, 8))) {
takeuz 4:3e1e2b161403 244 #if sendDebugMessage
takeuz 2:d58ef72b4ab0 245 serialPorts[debug].printf("OBDTIMER:%d\r\n",OBDTimer.read_ms());
takeuz 4:3e1e2b161403 246 #endif
takeuz 4:3e1e2b161403 247 while(OBDTimer.read_ms() < waitTimeForOBDComm) {
takeuz 4:3e1e2b161403 248 if(OBDCmdReceived) {
takeuz 2:d58ef72b4ab0 249 currentOBDProtocol=protCan;
takeuz 4:3e1e2b161403 250 canFrequency=i;
takeuz 4:3e1e2b161403 251 #if sendDebugMessage
takeuz 4:3e1e2b161403 252 serialPorts[debug].puts("check Communication protocal SET\r\n");
takeuz 4:3e1e2b161403 253 #endif
takeuz 4:3e1e2b161403 254 return;
takeuz 2:d58ef72b4ab0 255 }
takeuz 2:d58ef72b4ab0 256 }
takeuz 2:d58ef72b4ab0 257 }
takeuz 2:d58ef72b4ab0 258 wait_ms(200);
takeuz 4:3e1e2b161403 259 i++;
takeuz 4:3e1e2b161403 260 } while(i<3);
takeuz 2:d58ef72b4ab0 261 OBDTimer.stop();
takeuz 4:3e1e2b161403 262 #if sendDebugMessage
takeuz 2:d58ef72b4ab0 263 serialPorts[debug].puts("check Communication protocal EXT\r\n");
takeuz 4:3e1e2b161403 264 #endif
takeuz 2:d58ef72b4ab0 265 }
takeuz 2:d58ef72b4ab0 266
takeuz 2:d58ef72b4ab0 267 void clearMemoryLocation( char *base, int _size)
takeuz 2:d58ef72b4ab0 268 {
takeuz 2:d58ef72b4ab0 269 for(int forCount=0; forCount<_size; forCount++) {
takeuz 2:d58ef72b4ab0 270 base[forCount]='\0';
takeuz 2:d58ef72b4ab0 271 }
takeuz 2:d58ef72b4ab0 272 }
takeuz 4:3e1e2b161403 273 void clearCanMessage()
takeuz 4:3e1e2b161403 274 {
takeuz 4:3e1e2b161403 275 can_msg[0] = 0x02;
takeuz 4:3e1e2b161403 276 can_msg[1] = 0x01;
takeuz 4:3e1e2b161403 277 can_msg[2] = 0;
takeuz 4:3e1e2b161403 278 can_msg[3] = 0;
takeuz 4:3e1e2b161403 279 can_msg[4] = 0;
takeuz 4:3e1e2b161403 280 can_msg[5] = 0;
takeuz 4:3e1e2b161403 281 can_msg[6] = 0;
takeuz 4:3e1e2b161403 282 can_msg[7] = 0;
takeuz 2:d58ef72b4ab0 283 }
takeuz 2:d58ef72b4ab0 284
takeuz 4:3e1e2b161403 285 void sendCommand()
takeuz 4:3e1e2b161403 286 {
takeuz 2:d58ef72b4ab0 287
takeuz 2:d58ef72b4ab0 288 }
takeuz 2:d58ef72b4ab0 289
takeuz 2:d58ef72b4ab0 290
takeuz 4:3e1e2b161403 291 void sleepProcess()
takeuz 4:3e1e2b161403 292 {
takeuz 4:3e1e2b161403 293
takeuz 2:d58ef72b4ab0 294 #if pushDebugData
takeuz 2:d58ef72b4ab0 295 serialPorts[debug].puts("SPe\r\n");
takeuz 2:d58ef72b4ab0 296 #endif
takeuz 2:d58ef72b4ab0 297 OBDTimer.reset();
takeuz 2:d58ef72b4ab0 298 OBDTimer.start();
takeuz 4:3e1e2b161403 299 while(OBDTimer.read_ms()<sleepTime && !interfaceCmdReceived) {
takeuz 2:d58ef72b4ab0 300 wait_ms(50);
takeuz 2:d58ef72b4ab0 301 }
takeuz 2:d58ef72b4ab0 302 OBDTimer.stop();
takeuz 2:d58ef72b4ab0 303
takeuz 2:d58ef72b4ab0 304 }
takeuz 2:d58ef72b4ab0 305
takeuz 4:3e1e2b161403 306 void powerSaveMode()
takeuz 4:3e1e2b161403 307 {
takeuz 4:3e1e2b161403 308 //Putting CAn Driver on low power
takeuz 4:3e1e2b161403 309 //Detect can Activity
takeuz 4:3e1e2b161403 310 if(currentOBDProtocol==protCan) {
takeuz 4:3e1e2b161403 311 canDriverPowerSave=1;
takeuz 4:3e1e2b161403 312 }
takeuz 4:3e1e2b161403 313
takeuz 2:d58ef72b4ab0 314 #if pushDebugData
takeuz 2:d58ef72b4ab0 315 serialPorts[debug].puts("PowerSaveOn\r\n");
takeuz 2:d58ef72b4ab0 316 #endif
takeuz 2:d58ef72b4ab0 317 //Remove pin allocaitons
takeuz 4:3e1e2b161403 318
takeuz 4:3e1e2b161403 319 //Detect can Activity On Acnbus
takeuz 4:3e1e2b161403 320 if(currentOBDProtocol==protCan) {
takeuz 4:3e1e2b161403 321 canActivity.rise(&activityOnCan);
takeuz 4:3e1e2b161403 322 canActivity.fall(&activityOnCan);
takeuz 4:3e1e2b161403 323 }
takeuz 4:3e1e2b161403 324
takeuz 4:3e1e2b161403 325
takeuz 2:d58ef72b4ab0 326 wait(20);
takeuz 4:3e1e2b161403 327 if(currentOBDProtocol==protCan) {
takeuz 4:3e1e2b161403 328 canDriverPowerSave=0;
takeuz 4:3e1e2b161403 329 }
takeuz 4:3e1e2b161403 330
takeuz 2:d58ef72b4ab0 331 //Make pin allocaitons
takeuz 4:3e1e2b161403 332
takeuz 4:3e1e2b161403 333 //Detect can Activity On Acnbus
takeuz 4:3e1e2b161403 334 if(currentOBDProtocol==protCan) {
takeuz 4:3e1e2b161403 335 canActivity.rise(NULL);
takeuz 4:3e1e2b161403 336 canActivity.fall(NULL);
takeuz 4:3e1e2b161403 337 }
takeuz 4:3e1e2b161403 338
takeuz 2:d58ef72b4ab0 339 lastOBDCmdRcvdTime=0;
takeuz 2:d58ef72b4ab0 340 lastInterfaceCmdRcvdTime=0;
takeuz 4:3e1e2b161403 341
takeuz 2:d58ef72b4ab0 342 #if pushDebugData
takeuz 2:d58ef72b4ab0 343 serialPorts[debug].puts("PowerSaveOff\r\n");
takeuz 2:d58ef72b4ab0 344 #endif
takeuz 2:d58ef72b4ab0 345
takeuz 2:d58ef72b4ab0 346 }
takeuz 2:d58ef72b4ab0 347
takeuz 4:3e1e2b161403 348 void tprintf( char* str, int num)
takeuz 4:3e1e2b161403 349 {
takeuz 2:d58ef72b4ab0 350 int i2aCounter=0;
takeuz 4:3e1e2b161403 351 if (num == 0) {
takeuz 2:d58ef72b4ab0 352 str[i2aCounter++] = '0';
takeuz 2:d58ef72b4ab0 353 str[i2aCounter] = '\0';
takeuz 2:d58ef72b4ab0 354 return;
takeuz 2:d58ef72b4ab0 355 }
takeuz 2:d58ef72b4ab0 356 int tempNum=num;
takeuz 4:3e1e2b161403 357 while(tempNum!=0) {
takeuz 2:d58ef72b4ab0 358 tempNum/=10;
takeuz 2:d58ef72b4ab0 359 i2aCounter++;
takeuz 2:d58ef72b4ab0 360 }
takeuz 2:d58ef72b4ab0 361 str[i2aCounter]='\0';
takeuz 2:d58ef72b4ab0 362 i2aCounter--;
takeuz 4:3e1e2b161403 363 while(i2aCounter>=0) {
takeuz 2:d58ef72b4ab0 364 str[i2aCounter--] = (num % 10) + '0';
takeuz 2:d58ef72b4ab0 365 num = num/10;
takeuz 2:d58ef72b4ab0 366 }
takeuz 2:d58ef72b4ab0 367 return;
takeuz 2:d58ef72b4ab0 368 }
takeuz 2:d58ef72b4ab0 369
takeuz 4:3e1e2b161403 370 void checkForLocalInterfaceCommand()
takeuz 4:3e1e2b161403 371 {
takeuz 4:3e1e2b161403 372 // if(strstr(incomingDataInInterFace,"AT")==0){
takeuz 4:3e1e2b161403 373 // return;
takeuz 4:3e1e2b161403 374 // }
takeuz 4:3e1e2b161403 375 // if(strstr(incomingDataInInterFace,"ATZ")>0){
takeuz 4:3e1e2b161403 376 // NVIC_SystemReset();
takeuz 4:3e1e2b161403 377 // }
takeuz 4:3e1e2b161403 378 // if(strstr(incomingDataInInterFace,"ATRV")>0){
takeuz 4:3e1e2b161403 379 // serialPorts[interFace].puts("Gointoreport bat vol\r\n");
takeuz 4:3e1e2b161403 380 // interfaceCmdReceived=0;
takeuz 4:3e1e2b161403 381 // return;
takeuz 4:3e1e2b161403 382 // }
takeuz 2:d58ef72b4ab0 383 serialPorts[interFace].puts("?\r\n");
takeuz 2:d58ef72b4ab0 384
takeuz 2:d58ef72b4ab0 385 }
takeuz 4:3e1e2b161403 386 void sendResponseToInterface()
takeuz 4:3e1e2b161403 387 {
takeuz 2:d58ef72b4ab0 388
takeuz 4:3e1e2b161403 389 }