Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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;
}
