Penn Electric Racing / Mbed 2 deprecated REVO_Updated_Steering

Dependencies:   CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses

Fork of REVO_Updated_Steering by Penn Electric

Committer:
jayf
Date:
Thu May 14 18:49:05 2015 +0000
Revision:
44:80d821b5a0e7
Fixed Merge Conflicts

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jayf 44:80d821b5a0e7 1 #include "Steering.h"
jayf 44:80d821b5a0e7 2
jayf 44:80d821b5a0e7 3 // To-Do:
jayf 44:80d821b5a0e7 4 // Look at SYS management CAN translations: shutdown switches, DCDC status, & IMD (this is a resistance, in ohms)
jayf 44:80d821b5a0e7 5 // Figure out screen/variable updating options (hardware filter), NVIC_SetPriority(CAN_IRQn,####)LPC17xx.h
jayf 44:80d821b5a0e7 6 // Firgure out fault protocall
jayf 44:80d821b5a0e7 7
jayf 44:80d821b5a0e7 8 void Init();
jayf 44:80d821b5a0e7 9 void ProcessButtons(void const *args);
jayf 44:80d821b5a0e7 10 void RequestStatusChange();
jayf 44:80d821b5a0e7 11 void ResetSteeringWheel();
jayf 44:80d821b5a0e7 12 void ResetCar();
jayf 44:80d821b5a0e7 13 void ProcessCANMsg(CANMessage& msg);
jayf 44:80d821b5a0e7 14 void UpdateDisplay();
jayf 44:80d821b5a0e7 15 void ProcessButtons(void const *args);
jayf 44:80d821b5a0e7 16 void ConnectedStatusCANMsg();
jayf 44:80d821b5a0e7 17
jayf 44:80d821b5a0e7 18 float CANFloat;
jayf 44:80d821b5a0e7 19 float CANFloat2;
jayf 44:80d821b5a0e7 20
jayf 44:80d821b5a0e7 21 Ticker StatusMsg;
jayf 44:80d821b5a0e7 22
jayf 44:80d821b5a0e7 23 int main()
jayf 44:80d821b5a0e7 24 {
jayf 44:80d821b5a0e7 25 Init();
jayf 44:80d821b5a0e7 26
jayf 44:80d821b5a0e7 27 CANMessage Rxmsg;
jayf 44:80d821b5a0e7 28
jayf 44:80d821b5a0e7 29 Thread Thread2(ProcessButtons);
jayf 44:80d821b5a0e7 30 Thread Thread1(DisplayCurrScreen);
jayf 44:80d821b5a0e7 31
jayf 44:80d821b5a0e7 32 while(1) {
jayf 44:80d821b5a0e7 33 if (SteeringCANPort.rxRead(Rxmsg)) {
jayf 44:80d821b5a0e7 34 ProcessCANMsg(Rxmsg);
jayf 44:80d821b5a0e7 35 }
jayf 44:80d821b5a0e7 36 }
jayf 44:80d821b5a0e7 37 }
jayf 44:80d821b5a0e7 38
jayf 44:80d821b5a0e7 39
jayf 44:80d821b5a0e7 40 void Init()
jayf 44:80d821b5a0e7 41 {
jayf 44:80d821b5a0e7 42 StatusMsg.attach(&ConnectedStatusCANMsg,0.1);
jayf 44:80d821b5a0e7 43 pc.baud(921600);
jayf 44:80d821b5a0e7 44 BLButtonRed;
jayf 44:80d821b5a0e7 45 BRButtonGreen;
jayf 44:80d821b5a0e7 46 TLButtonGreen;
jayf 44:80d821b5a0e7 47 TRButtonGreen;
jayf 44:80d821b5a0e7 48 //initialize screen Startup Process
jayf 44:80d821b5a0e7 49 wait(2);
jayf 44:80d821b5a0e7 50 }
jayf 44:80d821b5a0e7 51
jayf 44:80d821b5a0e7 52
jayf 44:80d821b5a0e7 53 void ProcessButtons(void const *args)
jayf 44:80d821b5a0e7 54 {
jayf 44:80d821b5a0e7 55 while(1) {
jayf 44:80d821b5a0e7 56 Thread::wait(50);
jayf 44:80d821b5a0e7 57 if(biSWBR.read()) {
jayf 44:80d821b5a0e7 58 Thread::wait(750);
jayf 44:80d821b5a0e7 59 if (biSWBR.read()) {
jayf 44:80d821b5a0e7 60 ResetCar();
jayf 44:80d821b5a0e7 61 }
jayf 44:80d821b5a0e7 62 NVIC_SystemReset();
jayf 44:80d821b5a0e7 63 ResetSteeringWheel();
jayf 44:80d821b5a0e7 64 }
jayf 44:80d821b5a0e7 65
jayf 44:80d821b5a0e7 66 if(biSWBL.read()) {
jayf 44:80d821b5a0e7 67 Thread::wait(1000);
jayf 44:80d821b5a0e7 68 if (biSWBL.read()) {
jayf 44:80d821b5a0e7 69 RequestStatusChange();
jayf 44:80d821b5a0e7 70 }
jayf 44:80d821b5a0e7 71 }
jayf 44:80d821b5a0e7 72
jayf 44:80d821b5a0e7 73 if(biSWTR.read() && CurrScreen != 5) {
jayf 44:80d821b5a0e7 74 //If the toggle button is pressed and the screen isn't on Fault_Screen
jayf 44:80d821b5a0e7 75 ToggleScreen();
jayf 44:80d821b5a0e7 76 Thread::wait(250);
jayf 44:80d821b5a0e7 77 } else if (biSWTR.read() && CurrScreen == 5) {// If the screen was on Fault, go to Home
jayf 44:80d821b5a0e7 78 CurrScreen = 0;
jayf 44:80d821b5a0e7 79 Thread::wait(250);
jayf 44:80d821b5a0e7 80 }
jayf 44:80d821b5a0e7 81
jayf 44:80d821b5a0e7 82 if(biSWTL.read() && CurrScreen != 0) {
jayf 44:80d821b5a0e7 83 //If the Home button is pressed and the screen isn't on Fault_Screen
jayf 44:80d821b5a0e7 84 CurrScreen = 0;
jayf 44:80d821b5a0e7 85 Thread::wait(250);
jayf 44:80d821b5a0e7 86 } else if (biSWTL.read() && CurrScreen == 0) {// If the screen was on Fault, go to Home
jayf 44:80d821b5a0e7 87 CurrScreen = 5;
jayf 44:80d821b5a0e7 88 Thread::wait(250);
jayf 44:80d821b5a0e7 89 }
jayf 44:80d821b5a0e7 90 }
jayf 44:80d821b5a0e7 91 }
jayf 44:80d821b5a0e7 92
jayf 44:80d821b5a0e7 93
jayf 44:80d821b5a0e7 94 void UpdateDisplay()
jayf 44:80d821b5a0e7 95 {
jayf 44:80d821b5a0e7 96 }
jayf 44:80d821b5a0e7 97
jayf 44:80d821b5a0e7 98
jayf 44:80d821b5a0e7 99 void ProcessCANMsg(CANMessage& Rxmsg)
jayf 44:80d821b5a0e7 100 {
jayf 44:80d821b5a0e7 101 if (SteeringCANPort.rxRead(Rxmsg)) {
jayf 44:80d821b5a0e7 102 // Printing CAN message data:
jayf 44:80d821b5a0e7 103 // printf("Message ID: 0x%x len: %d hex: 0x%x float: %f\r\n", Rxmsg.id, Rxmsg.len, *((int*)((void*)(&Rxmsg.data[0]))), *((float*)((void*)(&Rxmsg.data[0]))));
jayf 44:80d821b5a0e7 104 // for (int i=0; i < Rxmsg.len; i++) printf("D[%d]: %x ", i, Rxmsg.data[i]);
jayf 44:80d821b5a0e7 105 if (Rxmsg.id == MODE_TX_ID) {
jayf 44:80d821b5a0e7 106 if(Rxmsg.data[0] != (1<<3))
jayf 44:80d821b5a0e7 107 DriveStatusRequestBuffer=1;
jayf 44:80d821b5a0e7 108 else
jayf 44:80d821b5a0e7 109 DriveStatusRequestBuffer=0;
jayf 44:80d821b5a0e7 110 }
jayf 44:80d821b5a0e7 111
jayf 44:80d821b5a0e7 112 if (Rxmsg.id == POWER_TX_ID) {
jayf 44:80d821b5a0e7 113 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 114 LEDBar = (CANFloat/85.0)*(2.6/3.3);
jayf 44:80d821b5a0e7 115 }
jayf 44:80d821b5a0e7 116
jayf 44:80d821b5a0e7 117 switch (CurrScreen) {
jayf 44:80d821b5a0e7 118 case HOME_SCREEN:
jayf 44:80d821b5a0e7 119 switch (Rxmsg.id) {
jayf 44:80d821b5a0e7 120
jayf 44:80d821b5a0e7 121 // HOME SCREEN *******************************************************************************************
jayf 44:80d821b5a0e7 122 // Pedal Test
jayf 44:80d821b5a0e7 123 /*case PCM_PEDALS_ID:
jayf 44:80d821b5a0e7 124 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 125 if (abs(CANFloat*100 - float (*AccPedalBuffer)) >= 1) {
jayf 44:80d821b5a0e7 126 sprintf(AccPedalBuffer,"%3.2d", int(CANFloat*100));
jayf 44:80d821b5a0e7 127 display.PutString(1,40,AccPedalBuffer);
jayf 44:80d821b5a0e7 128 }
jayf 44:80d821b5a0e7 129 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 130 if (abs(CANFloat2*100 - float (*BrkPedalBuffer)) >= 1) {
jayf 44:80d821b5a0e7 131 sprintf(BrkPedalBuffer,"%3.2d", int(CANFloat2*100));
jayf 44:80d821b5a0e7 132 display.PutString(1,60,BrkPedalBuffer);
jayf 44:80d821b5a0e7 133 }
jayf 44:80d821b5a0e7 134 break;*/
jayf 44:80d821b5a0e7 135
jayf 44:80d821b5a0e7 136 case SOC_TX_ID:
jayf 44:80d821b5a0e7 137 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 138 if (abs(CANFloat*100 - *BigBatLifeBuffer) >= 1) {
jayf 44:80d821b5a0e7 139 sprintf(BigBatLifeBuffer,"%3.2d", int(CANFloat*100)); // Big battery life percentage
jayf 44:80d821b5a0e7 140 display.PutString(1,40,BigBatLifeBuffer);
jayf 44:80d821b5a0e7 141 }
jayf 44:80d821b5a0e7 142 break;
jayf 44:80d821b5a0e7 143 case SYS_GLV_SOC_ID:
jayf 44:80d821b5a0e7 144 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 145 if (abs(CANFloat*100 - *SmallBatLifeBuffer) >= 1) {
jayf 44:80d821b5a0e7 146 sprintf(SmallBatLifeBuffer,"%3.2d", int(CANFloat*100)); // Small battery life percentage
jayf 44:80d821b5a0e7 147 display.PutString(1,60,SmallBatLifeBuffer);
jayf 44:80d821b5a0e7 148 }
jayf 44:80d821b5a0e7 149 break;
jayf 44:80d821b5a0e7 150 case PCM_FRPM_ID:
jayf 44:80d821b5a0e7 151 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 152 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 153 if (abs((CANFloat+CANFloat2)*WheelCircumference*30 - *CarSpdBuffer) >= 1) {
jayf 44:80d821b5a0e7 154 sprintf(CarSpdBuffer,"%3.2d", int((CANFloat+CANFloat2)*WheelCircumference*30)); // Miles per hour
jayf 44:80d821b5a0e7 155 display.PutString(1,108,CarSpdBuffer);
jayf 44:80d821b5a0e7 156 }
jayf 44:80d821b5a0e7 157 break;
jayf 44:80d821b5a0e7 158 case TEMP_MMA_TX_ID_BASE2:
jayf 44:80d821b5a0e7 159 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 160 if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
jayf 44:80d821b5a0e7 161 sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
jayf 44:80d821b5a0e7 162 display.PutString(3,39,AvgBatTBuffer);
jayf 44:80d821b5a0e7 163 }
jayf 44:80d821b5a0e7 164 break;
jayf 44:80d821b5a0e7 165 case TEMP_MMA_TX_ID_BASE:
jayf 44:80d821b5a0e7 166 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 167 if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
jayf 44:80d821b5a0e7 168 sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
jayf 44:80d821b5a0e7 169 display.PutString(3,103,MaxBatTBuffer);
jayf 44:80d821b5a0e7 170 }
jayf 44:80d821b5a0e7 171 break;
jayf 44:80d821b5a0e7 172 case MOC_MOTEMP_ID:
jayf 44:80d821b5a0e7 173 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 174 if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 175 sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
jayf 44:80d821b5a0e7 176 display.PutString(5,34,LMtrTmpBuffer);
jayf 44:80d821b5a0e7 177 }
jayf 44:80d821b5a0e7 178 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 179 if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 180 sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
jayf 44:80d821b5a0e7 181 display.PutString(5,34,RMtrTmpBuffer);
jayf 44:80d821b5a0e7 182 }
jayf 44:80d821b5a0e7 183 break;
jayf 44:80d821b5a0e7 184 default:
jayf 44:80d821b5a0e7 185 break;
jayf 44:80d821b5a0e7 186 }
jayf 44:80d821b5a0e7 187 break;
jayf 44:80d821b5a0e7 188 // BATTERY SCREEN***********************************************************************************
jayf 44:80d821b5a0e7 189 case BATTERY_SCREEN:
jayf 44:80d821b5a0e7 190 switch (Rxmsg.id) {
jayf 44:80d821b5a0e7 191 case VOLTAGE_TX_ID:
jayf 44:80d821b5a0e7 192 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 193 if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 194 sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat)); // Volts
jayf 44:80d821b5a0e7 195 display.PutString(1,10,BigBatVoltBuffer);
jayf 44:80d821b5a0e7 196 }
jayf 44:80d821b5a0e7 197 break;
jayf 44:80d821b5a0e7 198 case POWER_TX_ID:
jayf 44:80d821b5a0e7 199 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 200 LEDBar = (CANFloat/85.0)*(2.6/3.3);
jayf 44:80d821b5a0e7 201 if (abs(CANFloat - *BigBatPowerBuffer) >= 1) {
jayf 44:80d821b5a0e7 202 sprintf(BigBatPowerBuffer,"%3.2d", int(CANFloat)); // Watts
jayf 44:80d821b5a0e7 203 display.PutString(1,55,BigBatPowerBuffer);
jayf 44:80d821b5a0e7 204 }
jayf 44:80d821b5a0e7 205 break;
jayf 44:80d821b5a0e7 206 case CURRENT_TX_ID:
jayf 44:80d821b5a0e7 207 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 208 if (abs(CANFloat - *BigBatCurrentBuffer) >= 0.2) {
jayf 44:80d821b5a0e7 209 sprintf(BigBatCurrentBuffer,"%3.2d", int(CANFloat)); // Amps
jayf 44:80d821b5a0e7 210 display.PutString(1,100,BigBatCurrentBuffer);
jayf 44:80d821b5a0e7 211 }
jayf 44:80d821b5a0e7 212 break;
jayf 44:80d821b5a0e7 213 case CELLV_MMA_TX_ID_BASE:
jayf 44:80d821b5a0e7 214 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 215 if (abs(CANFloat2 - *VmaxBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 216 sprintf(VmaxBuffer,"%3.2d", int(CANFloat2));
jayf 44:80d821b5a0e7 217 display.PutString(3,20,VmaxBuffer);
jayf 44:80d821b5a0e7 218 }
jayf 44:80d821b5a0e7 219 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 220 if (abs(CANFloat - *VminBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 221 sprintf(VminBuffer,"%3.2d", int(CANFloat));
jayf 44:80d821b5a0e7 222 display.PutString(3,67,VminBuffer);
jayf 44:80d821b5a0e7 223 }
jayf 44:80d821b5a0e7 224 break;
jayf 44:80d821b5a0e7 225 case CELLV_MMA_TX_ID_BASE2:
jayf 44:80d821b5a0e7 226 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 227 if (abs(CANFloat - *VavgBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 228 sprintf(VavgBuffer,"%3.2d", int(CANFloat)); // Volts
jayf 44:80d821b5a0e7 229 display.PutString(3,108,VavgBuffer);
jayf 44:80d821b5a0e7 230 }
jayf 44:80d821b5a0e7 231 break;
jayf 44:80d821b5a0e7 232 case TEMP_MMA_TX_ID_BASE:
jayf 44:80d821b5a0e7 233 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 234 if (abs((CANFloat*9.0/5.0)+32 - *MinBatTBuffer) >= 1) {
jayf 44:80d821b5a0e7 235 sprintf(MinBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
jayf 44:80d821b5a0e7 236 display.PutString(5,67,MinBatTBuffer);
jayf 44:80d821b5a0e7 237 }
jayf 44:80d821b5a0e7 238 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 239 if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
jayf 44:80d821b5a0e7 240 sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
jayf 44:80d821b5a0e7 241 display.PutString(5,20,MaxBatTBuffer);
jayf 44:80d821b5a0e7 242 }
jayf 44:80d821b5a0e7 243 break;
jayf 44:80d821b5a0e7 244 case TEMP_MMA_TX_ID_BASE2:
jayf 44:80d821b5a0e7 245 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 246 if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
jayf 44:80d821b5a0e7 247 sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
jayf 44:80d821b5a0e7 248 display.PutString(5,108,AvgBatTBuffer);
jayf 44:80d821b5a0e7 249 }
jayf 44:80d821b5a0e7 250 break;
jayf 44:80d821b5a0e7 251 case BOARDTEMP_TX_ID:
jayf 44:80d821b5a0e7 252 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 253 if (abs((CANFloat*9.0/5.0)+32 - *BoardTempBuffer) >= 1) {
jayf 44:80d821b5a0e7 254 sprintf(BoardTempBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32)); // Degrees F
jayf 44:80d821b5a0e7 255 display.PutString(7,87,BoardTempBuffer);
jayf 44:80d821b5a0e7 256 }
jayf 44:80d821b5a0e7 257 break;
jayf 44:80d821b5a0e7 258 default:
jayf 44:80d821b5a0e7 259 break;
jayf 44:80d821b5a0e7 260 }
jayf 44:80d821b5a0e7 261 break;
jayf 44:80d821b5a0e7 262 // MOTOR SCREEN*****************************************************************
jayf 44:80d821b5a0e7 263 case MOTOR_SCREEN:
jayf 44:80d821b5a0e7 264 switch (Rxmsg.id) {
jayf 44:80d821b5a0e7 265 case MOC_MOTEMP_ID:
jayf 44:80d821b5a0e7 266 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 267 if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 268 sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
jayf 44:80d821b5a0e7 269 display.PutString(1,34,LMtrTmpBuffer);
jayf 44:80d821b5a0e7 270 }
jayf 44:80d821b5a0e7 271 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 272 if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 273 sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
jayf 44:80d821b5a0e7 274 display.PutString(1,98,LMtrTmpBuffer);
jayf 44:80d821b5a0e7 275 }
jayf 44:80d821b5a0e7 276 break;
jayf 44:80d821b5a0e7 277 case MOC_AIRTEMP_ID:
jayf 44:80d821b5a0e7 278 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 279 if (abs((CANFloat*9.0/5.0)+32 - *LAirTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 280 sprintf(LAirTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
jayf 44:80d821b5a0e7 281 display.PutString(2,34,LAirTmpBuffer);
jayf 44:80d821b5a0e7 282 }
jayf 44:80d821b5a0e7 283 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 284 if (abs((CANFloat2*9.0/5.0)+32 - *RAirTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 285 sprintf(RAirTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32)); // Degrees F
jayf 44:80d821b5a0e7 286 display.PutString(2,98,RAirTmpBuffer);
jayf 44:80d821b5a0e7 287 }
jayf 44:80d821b5a0e7 288 break;
jayf 44:80d821b5a0e7 289 case MOC_IGBTTEMP_ID:
jayf 44:80d821b5a0e7 290 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 291 if (abs((CANFloat*9.0/5.0)+32 - *LIGBTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 292 sprintf(LIGBTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
jayf 44:80d821b5a0e7 293 display.PutString(3,34,LIGBTmpBuffer);
jayf 44:80d821b5a0e7 294 }
jayf 44:80d821b5a0e7 295 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 296 if (abs((CANFloat2*9.0/5.0)+32 - *RIGBTmpBuffer) >= 1) {
jayf 44:80d821b5a0e7 297 sprintf(RIGBTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32)); // Degrees F
jayf 44:80d821b5a0e7 298 display.PutString(3,98,RIGBTmpBuffer);
jayf 44:80d821b5a0e7 299 }
jayf 44:80d821b5a0e7 300 break;
jayf 44:80d821b5a0e7 301 case MOC_RPM_ID:
jayf 44:80d821b5a0e7 302 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 303 if (abs(CANFloat - *Rpm_LBuffer) >= 1) {
jayf 44:80d821b5a0e7 304 sprintf(Rpm_LBuffer,"%3.2d", int(CANFloat));
jayf 44:80d821b5a0e7 305 display.PutString(5,30,Rpm_LBuffer);
jayf 44:80d821b5a0e7 306 }
jayf 44:80d821b5a0e7 307 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 308 if (abs(CANFloat2 - *Rpm_RBuffer) >= 1) {
jayf 44:80d821b5a0e7 309 sprintf(Rpm_RBuffer,"%3.2d", int(CANFloat2));
jayf 44:80d821b5a0e7 310 display.PutString(5,107,Rpm_RBuffer);
jayf 44:80d821b5a0e7 311 }
jayf 44:80d821b5a0e7 312 break;
jayf 44:80d821b5a0e7 313 case PCM_TORQUERQ_ID:
jayf 44:80d821b5a0e7 314 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 315 if (abs(CANFloat*100 - *TRequestBufferL) >= 1) {
jayf 44:80d821b5a0e7 316 sprintf(TRequestBufferL,"%3.2d", int(CANFloat*100)); // Percentage
jayf 44:80d821b5a0e7 317 display.PutString(7,89,TRequestBufferL);
jayf 44:80d821b5a0e7 318 }
jayf 44:80d821b5a0e7 319 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 320 if (abs(CANFloat2*100 - *TRequestBufferR) >= 1) {
jayf 44:80d821b5a0e7 321 sprintf(TRequestBufferR,"%3.2d", int(CANFloat2*100)); // Percentage
jayf 44:80d821b5a0e7 322 display.PutString(7,89,TRequestBufferR);
jayf 44:80d821b5a0e7 323 }
jayf 44:80d821b5a0e7 324 break;
jayf 44:80d821b5a0e7 325 default:
jayf 44:80d821b5a0e7 326 break;
jayf 44:80d821b5a0e7 327 }
jayf 44:80d821b5a0e7 328 break;
jayf 44:80d821b5a0e7 329
jayf 44:80d821b5a0e7 330 // SYSTEM MANAGEMENT SCREEN***************************************************
jayf 44:80d821b5a0e7 331 case SYS_MGMT_SCREEN:
jayf 44:80d821b5a0e7 332 switch (Rxmsg.id) {
jayf 44:80d821b5a0e7 333 case SYS_GLV_CURRENT_ID:
jayf 44:80d821b5a0e7 334 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 335 if (abs(CANFloat - *SmallBatCurrentBuffer) >= 0.2) {
jayf 44:80d821b5a0e7 336 sprintf(SmallBatCurrentBuffer,"%3.2d", int(CANFloat)); // Amps
jayf 44:80d821b5a0e7 337 display.PutString(1,30,SmallBatCurrentBuffer);
jayf 44:80d821b5a0e7 338 }
jayf 44:80d821b5a0e7 339 break;
jayf 44:80d821b5a0e7 340 case SYS_SWITCHES_ID:
jayf 44:80d821b5a0e7 341 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 342 sprintf(ShtdSwtchBuffer,"%3.2d", int(CANFloat)); // How the heck are we interpreting this data
jayf 44:80d821b5a0e7 343 display.PutString(1,108,ShtdSwtchBuffer);
jayf 44:80d821b5a0e7 344 break;
jayf 44:80d821b5a0e7 345 case SYS_PWM_FAN_ID:
jayf 44:80d821b5a0e7 346 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 347 if (abs(CANFloat*100 - *Fan1Buffer) >= 1) {
jayf 44:80d821b5a0e7 348 sprintf(Fan1Buffer,"%3.2d", int(CANFloat*100));
jayf 44:80d821b5a0e7 349 display.PutString(3,30,Fan1Buffer);
jayf 44:80d821b5a0e7 350 }
jayf 44:80d821b5a0e7 351 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 352 if (abs(CANFloat2*100 - *Fan1Buffer) >= 1) {
jayf 44:80d821b5a0e7 353 sprintf(Fan2Buffer,"%3.2d", int(CANFloat2*100));
jayf 44:80d821b5a0e7 354 display.PutString(3,107,Fan2Buffer);
jayf 44:80d821b5a0e7 355 }
jayf 44:80d821b5a0e7 356 break;
jayf 44:80d821b5a0e7 357 case SYS_PWM_PUMP_ID:
jayf 44:80d821b5a0e7 358 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 359 if (abs(CANFloat*100 - *Pump1Buffer) >= 1) {
jayf 44:80d821b5a0e7 360 sprintf(Pump1Buffer,"%3.2d", int(CANFloat*100));
jayf 44:80d821b5a0e7 361 display.PutString(5,30,Pump1Buffer);
jayf 44:80d821b5a0e7 362 }
jayf 44:80d821b5a0e7 363 CANFloat2 = GetFloat4;
jayf 44:80d821b5a0e7 364 if (abs(CANFloat2*100 - *Pump2Buffer) >= 1) {
jayf 44:80d821b5a0e7 365 sprintf(Pump2Buffer,"%3.2d", int(CANFloat2*100));
jayf 44:80d821b5a0e7 366 display.PutString(5,107,Pump2Buffer);
jayf 44:80d821b5a0e7 367 }
jayf 44:80d821b5a0e7 368 break;
jayf 44:80d821b5a0e7 369 case SYS_DCDC_STATUS_ID:
jayf 44:80d821b5a0e7 370 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 371 sprintf(DCDCBuffer,"%3.2d", int(CANFloat)); // How the heck are we interpreting this data
jayf 44:80d821b5a0e7 372 display.PutString(7,30,DCDCBuffer);
jayf 44:80d821b5a0e7 373 break;
jayf 44:80d821b5a0e7 374 case SYS_IMD_RESIST_ID:
jayf 44:80d821b5a0e7 375 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 376 if (abs(CANFloat - *IMDRBuffer) >= 1) {
jayf 44:80d821b5a0e7 377 sprintf(IMDRBuffer,"%3.2d", int(CANFloat));
jayf 44:80d821b5a0e7 378 display.PutString(7,82,IMDRBuffer);
jayf 44:80d821b5a0e7 379 }
jayf 44:80d821b5a0e7 380 break;
jayf 44:80d821b5a0e7 381 default:
jayf 44:80d821b5a0e7 382 break;
jayf 44:80d821b5a0e7 383 }
jayf 44:80d821b5a0e7 384 break;
jayf 44:80d821b5a0e7 385
jayf 44:80d821b5a0e7 386 // CHARGE SCREEN *************************************************************
jayf 44:80d821b5a0e7 387 case CHARGE_SCREEN:
jayf 44:80d821b5a0e7 388 switch (Rxmsg.id) {
jayf 44:80d821b5a0e7 389 case CHARGECURR_TX_ID:
jayf 44:80d821b5a0e7 390 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 391 if (abs(CANFloat - *ChargeCurrBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 392 sprintf(ChargeCurrBuffer,"%3.2d", int(CANFloat)); // Amps
jayf 44:80d821b5a0e7 393 display.PutString(3,94,ChargeCurrBuffer);
jayf 44:80d821b5a0e7 394 }
jayf 44:80d821b5a0e7 395 break;
jayf 44:80d821b5a0e7 396 case VOLTAGE_TX_ID:
jayf 44:80d821b5a0e7 397 CANFloat = GetFloat;
jayf 44:80d821b5a0e7 398 if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
jayf 44:80d821b5a0e7 399 sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat)); // Volts
jayf 44:80d821b5a0e7 400 display.PutString(3,94,BigBatVoltBuffer);
jayf 44:80d821b5a0e7 401 }
jayf 44:80d821b5a0e7 402 break;
jayf 44:80d821b5a0e7 403 default:
jayf 44:80d821b5a0e7 404 break;
jayf 44:80d821b5a0e7 405 }
jayf 44:80d821b5a0e7 406 break;
jayf 44:80d821b5a0e7 407 default:
jayf 44:80d821b5a0e7 408 break;
jayf 44:80d821b5a0e7 409 }
jayf 44:80d821b5a0e7 410 }
jayf 44:80d821b5a0e7 411 }
jayf 44:80d821b5a0e7 412
jayf 44:80d821b5a0e7 413 void ConnectedStatusCANMsg()
jayf 44:80d821b5a0e7 414 {
jayf 44:80d821b5a0e7 415 CANMessage ConnectedStatus(0x600, &ConnectedStatusBuffer,1);
jayf 44:80d821b5a0e7 416 SteeringCANPort.txWrite(ConnectedStatus);
jayf 44:80d821b5a0e7 417 }
jayf 44:80d821b5a0e7 418
jayf 44:80d821b5a0e7 419
jayf 44:80d821b5a0e7 420 void RequestStatusChange()
jayf 44:80d821b5a0e7 421 {
jayf 44:80d821b5a0e7 422 CANMessage TxDriveStatusRequest(0x601, &DriveStatusRequestBuffer,1);
jayf 44:80d821b5a0e7 423 for (int j=0; j<10; j++) {
jayf 44:80d821b5a0e7 424 SteeringCANPort.txWrite(TxDriveStatusRequest);
jayf 44:80d821b5a0e7 425 }
jayf 44:80d821b5a0e7 426 display.PutString(7,0," DRIVE REQUEST SENT ");
jayf 44:80d821b5a0e7 427 Thread::wait(750);
jayf 44:80d821b5a0e7 428 PrevScreen = !CurrScreen; // To force a screen update
jayf 44:80d821b5a0e7 429 }
jayf 44:80d821b5a0e7 430
jayf 44:80d821b5a0e7 431
jayf 44:80d821b5a0e7 432 void ResetSteeringWheel()
jayf 44:80d821b5a0e7 433 {
jayf 44:80d821b5a0e7 434 NVIC_SystemReset();
jayf 44:80d821b5a0e7 435 }
jayf 44:80d821b5a0e7 436
jayf 44:80d821b5a0e7 437
jayf 44:80d821b5a0e7 438 void ResetCar()
jayf 44:80d821b5a0e7 439 {
jayf 44:80d821b5a0e7 440 CANMessage TxCarReset(0x602,&TxResetBuffer,1);
jayf 44:80d821b5a0e7 441 for (int k=0; k<10; k++) {
jayf 44:80d821b5a0e7 442 SteeringCANPort.txWriteDirect(TxCarReset);
jayf 44:80d821b5a0e7 443 }
jayf 44:80d821b5a0e7 444 }