test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: utility.cpp
- Branch:
- Metric
- Revision:
- 126:e0d039096891
- Parent:
- 125:f58b7ab2abee
- Parent:
- 79:68f0dd8d1f19
- Child:
- 127:27c739fd6d71
--- a/utility.cpp Sun Jul 21 11:08:38 2013 +0000 +++ b/utility.cpp Sun Jul 21 11:23:57 2013 +0000 @@ -352,6 +352,53 @@ motorRPM+=imotorRPM; numSsamples++; } +<<<<<<< local +======= + if(bdi<0xff){ + i=canRXmsg.data[0]&0x0f; //lower nibble of D0 is index + if(lasti>i){ //detect rollover and offset index appropriately + bdi=0x10; + } + lasti=i; //remember the msb to detect rollover next time around + i+=bdi; + //if(i==22) logCP=true; //Turbo3 + //if( (i==22) && (yesBattLog) ) logCP=true; // only if enabled gg - Batt Log + if(i==22){ + logCP=yesBattLog; // Only log if logging enabled + showCP=true; // Always show + } + i*=7; + if(i<0xfa){ // Is there a better way to do this? + battData[i+0]=canRXmsg.data[1]; + battData[i+1]=canRXmsg.data[2]; + battData[i+2]=canRXmsg.data[3]; + battData[i+3]=canRXmsg.data[4]; + battData[i+4]=canRXmsg.data[5]; + battData[i+5]=canRXmsg.data[6]; + battData[i+6]=canRXmsg.data[7]; + } + } + }else if((mType==1)&&(canRXmsg.id==0x1db)){ //Battery Volts and Amps + packV=((canRXmsg.data[2]<<2)|(canRXmsg.data[3]>>6)); // 1 LSB = 0.5V + packA=((canRXmsg.data[0]<<3)|(canRXmsg.data[1]>>5)); // 1 LSB = 0.5A + if(packA>0x03ff){ + packA|=0xf800;//extend sign; + } + packA -= 1; //Slight correction to value required (unique to my Leaf?) + imWs_x4 = packV; // Volts*milliSeconds*2 + imWs_x4 *= -packA; // milliWattseconds*4 + if (!((imotorRPM<2)&&(imWs_x4<0))){ //Ignore if charging from wall + mWs_x4 += imWs_x4; // total mWs_x4 + numWsamples++; + } + }else if((mType==1)&&(canRXmsg.id==0x1da)){ //Motor Speed + imotorRPM=((canRXmsg.data[4]<<8)|(canRXmsg.data[5])); + if(imotorRPM<0){ // take absolute value + imotorRPM=-imotorRPM; + } + motorRPM+=imotorRPM; + numSsamples++; +>>>>>>> other } } @@ -399,32 +446,54 @@ data[1]=0x21; data[2]=0x01; break; +<<<<<<< local case BatDataBaseG2: // group 1 has 6 frames +======= + case 6: // group 1 has 6 frames + can1.monitor(false); // set to active mode + can1SleepMode = 0; // enable TX +>>>>>>> other data[0]=0x02; //change to request group 2 (cp data) data[1]=0x21; data[2]=0x02; break; +<<<<<<< local case BatDataBaseG3: // group 2 has 29 frames +======= + case 35: // group 2 has 29 frames +>>>>>>> other data[0]=0x02; //change to request group 3 data[1]=0x21; data[2]=0x03; break; +<<<<<<< local case BatDataBaseG4: // group 3 has 5 frames +======= + case 40: // group 3 has 5 frames +>>>>>>> other data[0]=0x02; //change to request group 4 (temperature) data[1]=0x21; data[2]=0x04; break; +<<<<<<< local case BatDataBaseG5: // group 4 has 3 frames +======= + case 43: // group 4 has 3 frames +>>>>>>> other data[0]=0x02; //change to request group 5 data[1]=0x21; data[2]=0x05; break; +<<<<<<< local case BatDataBaseG6: // group 4 has 3 frames data[0]=0x02; //change to request group 5 data[1]=0x21; data[2]=0x06; break; case BatDataBaseG7: // group 5 has 11 frames +======= + case 54: // group 5 has 11 frames +>>>>>>> other reqMsgCnt = 99; can1SleepMode = VP230Sleep; // disable TX can1.monitor(true); // set to snoop mode @@ -447,6 +516,38 @@ msgReq.attach(&sendReq,0.015); } +<<<<<<< local +======= +void sendTreq() { + char i; + char data[8] = {0x02, 0x21, 0x04, 0xff, 0xff, 0xff, 0xff, 0xff}; + can1.monitor(false); // set to active mode + can1SleepMode = 0; // enable TX + can1.write(CANMessage(0x79b, data, 8)); + + if( ZeroSecTick ) { ZeroSecTick = false; logTS(); } // gg - 0-second EV bus + + logCan(1,CANMessage(0x79b, data, 8)); // Group 4 request on EV + data[0]=0x30; //change to request next line message + data[1]=0x01; + data[2]=0x00; + for(i=0;i<3;i++){ + wait_ms(16); //wait 16ms + can1.write(CANMessage(0x79b, data, 8)); + } + can1SleepMode = 1; // disable TX + can1.monitor(true); // set to snoop mode +} + +void autoPollISR() { //This is the ticker ISR for auto-polling + pollCP=true; //Set a flag to do in main loop instead of here +} //since ticker blocks other interrupts*/ + +void autoPollISR(){ + reqMsgCnt = 0; //reset message counter + msgReq.attach(&sendReq,0.015); +} +>>>>>>> other void playbackISR() { //Used for autoplayback step=true; }