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

Files at this revision

API Documentation at this revision

Comitter:
jayf
Date:
Fri May 15 04:14:09 2015 +0000
Parent:
44:80d821b5a0e7
Commit message:
More changes

Changed in this revision

Buffers.h Show annotated file Show diff for this revision Revisions of this file
Screen_Performance_Test.cpp Show annotated file Show diff for this revision Revisions of this file
Screen_Performance_Test.h Show annotated file Show diff for this revision Revisions of this file
Screens.h Show annotated file Show diff for this revision Revisions of this file
Steering.cpp Show annotated file Show diff for this revision Revisions of this file
Steering.cpp.orig Show diff for this revision Revisions of this file
--- a/Buffers.h	Thu May 14 18:49:05 2015 +0000
+++ b/Buffers.h	Fri May 15 04:14:09 2015 +0000
@@ -1,4 +1,4 @@
-#define _size 10
+/*#define _size 10
 
 // Battery
 char BigBatLifeBuffer[_size];
@@ -48,8 +48,8 @@
 char ConnectedStatusBuffer = 0;
 char DriveStatus;
 char DriveStatusRequestBuffer;
-char TxResetBuffer = 1;
-
+char TxResetBuffer = 1;*/
+char message_data[2048][8] __attribute__((section("AHBSRAM0")));
 
 //char CAN1Buffer[_size];     USED IN DEMO 
 //char CAN2Buffer[_size];     USED IN DEMO
--- a/Screen_Performance_Test.cpp	Thu May 14 18:49:05 2015 +0000
+++ b/Screen_Performance_Test.cpp	Fri May 15 04:14:09 2015 +0000
@@ -1,5 +1,72 @@
-#include Screen_Performance_Test.h
+#include "Screen_Performance_Test.h"
 
 int main(){
-    
+    DigitalOut RST=p26, DI=p21,  RW=p22,  E=p23,  CS2=p25,  CS1=p24;
+    KS0108 screen(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11);
+    BusInOut DB(p8, p7, p6, p5, p13, p14, p12, p11);
+    Serial s(USBTX,USBRX);
+    s.baud(921600);
+    DB.output();
+    RW=0;
+    uint8_t a=170,b=85;
+    bool toggle=0;
+    while(1){
+        Timer t;
+        t.start();
+        toggle=!toggle;
+        CS1=1;
+        CS2=0;
+        for(int page=0;page<8;page++){
+            wait_us(2);
+            DI=0;
+            E=1;
+            DB.write(0xB8|page);
+            wait_us(1);
+            E=0;
+            for(int x=0;x<64;x++){
+                wait_us(2);
+                DI=0;
+                E=1;
+                DB.write(0x40|x);
+                wait_us(1);
+                E=0;
+                wait_us(2);
+                
+                DI=1;
+                E=1;
+                DB.write((toggle^(x%2))?a:b);
+                wait_us(1);
+                E=0;
+            }
+        }
+        CS1=0;
+        CS2=1;
+        for(int page=0;page<8;page++){
+            wait_us(2);
+            DI=0;
+            E=1;
+            DB.write(0xB8|page);
+            wait_us(1);
+            E=0;
+            for(int x=0;x<64;x++){
+                wait_us(2);
+                DI=0;
+                E=1;
+                DB.write(0x40|x);
+                wait_us(1);
+                E=0;
+                wait_us(2);
+                
+                DI=1;
+                E=1;
+                DB.write((toggle^(x%2))?a:b);
+                wait_us(1);
+                E=0;
+            }
+        }
+        t.stop();
+        float time=t.read();
+        s.printf("%1.10f\n",time);
+        wait(.2);
+    }
 }
\ No newline at end of file
--- a/Screen_Performance_Test.h	Thu May 14 18:49:05 2015 +0000
+++ b/Screen_Performance_Test.h	Fri May 15 04:14:09 2015 +0000
@@ -1,1 +1,3 @@
-#include 
\ No newline at end of file
+#include "mbed.h"
+#include "KS0108.h"
+#include "PinNames.h"
\ No newline at end of file
--- a/Screens.h	Thu May 14 18:49:05 2015 +0000
+++ b/Screens.h	Fri May 15 04:14:09 2015 +0000
@@ -3,7 +3,6 @@
 
 // Macro for printing to screen; Where y is the start poition of the text, and y2 is the start position of the variable
 #define PUT2SCREEN(string, var, unit, x, y, y2)   display.PutString(x, y,  string);   display.PutString(x, y2, var);   display.PutString(x,y2+15,unit);
-
 #define HOME_SCREEN     0
 #define BATTERY_SCREEN  1
 #define MOTOR_SCREEN    2
@@ -12,31 +11,55 @@
 #define FAULT_SCREEN    5
 
 
-
+char display_string_buffer[30];
+char* formatPercentage(int CANID){
+    return float_to_string(CANID);
+}
+char* wheel_speed(int CANID){
+    float average_rpm =*((float*)message_data[CANID])+*((float*)(message_data[CANID]+4))
+    //assuming nominal tire diameter of 19.25in
+    sprintf(display_string_buffer,"%2.2f",average_rpm*1.09375);
+    return display_string_buffer;
+}
+char* CtoF(int CANID){
+    sprintf(display_string_buffer,"3.2f", 32+9*((float*)message_data[CANID])/5;
+    return display_string_buffer;
+}
+char* CtoF(int CANID,int index){
+    sprintf(display_string_buffer,"3.2f", 32+9*((float*)message_data[CANID]+index)/5;
+    return display_string_buffer;
+}
+char* float_to_string(int CANID){
+    sprintf(display_string_buffer,"%3.2f",message_data[CANID]);
+    return display_string_buffer;
+}
+char* float_to_string(int CANID,int index){
+    sprintf(display_string_buffer,"%3.2f",*((float*)(message_data[CANID]+index)));
+    return display_string_buffer;
+}
 // Initialize Variables
 int  CurrScreen = HOME_SCREEN;
 int  PrevScreen = !CurrScreen;
 
 // Defines the pins for the dsiplay. These are hardwired.
 KS0108 display(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11);
-
 void DisplayHomeScreen()
 {
     display.ClearScreen();
     display.PutString(0, 54, "Home");
 
     //Info line 1: Battery Life & Vehicle Speed
-    PUT2SCREEN("BatLife:",  BigBatLifeBuffer,   "%",   1,  0, 39);
-    PUT2SCREEN(",",         SmallBatLifeBuffer, "%",   1, 59, 62);
-    PUT2SCREEN("Spd:",      CarSpdBuffer,       "",    1, 89,108);
+    PUT2SCREEN("BatLife:",  formatPercentage(0x30B),   "%",   1,  0, 39);//SOC_TX_ID
+    PUT2SCREEN(",",         formatPercentage(0x513), "%",   1, 59, 62);//SYS_GLV_SOC_ID
+    PUT2SCREEN("Spd:",      wheel_speed(0x222),       "mph",    1, 89,108);//PCM_FRPM_ID
 
     //Info line 2: Average Battery Temp & Peak Battery Temp
-    PUT2SCREEN("AvgBatT:",  AvgBatTBuffer,   "F",      3,  0, 39);
-    PUT2SCREEN("PkBatT:",   MaxBatTBuffer,   "F",      3, 69,103);
+    PUT2SCREEN("AvgBatT:",  CtoF(0x319),   "F",      3,  0, 39);//TEMP_MMA_TX_ID_BASE2
+    PUT2SCREEN("PkBatT:",   CtoF(0x318),   "F",      3, 69,103);//TEMP_MMA_TX_ID_BASE
 
     //Info line 3: Left Motor Temp & Right Motor Temp
-    PUT2SCREEN("LMtTmp:",   LMtrTmpBuffer,   "F",      5,  0, 34);
-    PUT2SCREEN("RMtTmp:",   RMtrTmpBuffer,   "F",      5, 69,103);
+    PUT2SCREEN("LMtTmp:",   CtoF(0x212),   "F",      5,  0, 34);//MOC_MOTEMP_ID
+    PUT2SCREEN("RMtTmp:",   CtoF(0x212,4),   "F",      5, 69,103);//MOC_MOTEMP_ID bytes 4-7
 
     //Fault line
     display.PutString(7, 14, "Reserved for faults");
@@ -48,22 +71,22 @@
     display.PutString(0, 34, "Main Battery");
 
     //Info line 1: Battery Voltage, Power & Current
-    PUT2SCREEN("V:",        BigBatVoltBuffer,       "V",    1,   0, 10);
-    PUT2SCREEN("P:",        BigBatPowerBuffer,      "W",    1,  45, 55);
-    PUT2SCREEN("I:",        BigBatCurrentBuffer,    "A",    1,  90,100);
+    PUT2SCREEN("V:",        float_to_string(0x308),       "V",    1,   0, 10);//VOLTAGE_TX_ID
+    PUT2SCREEN("P:",       float_to_string(0x314),      "W",    1,  45, 55);//POWER_TX_ID
+    PUT2SCREEN("I:",        float_to_string(0x306),    "A",    1,  90,100);//CURRENT_TX_ID
 
     //Info line 2: High, Low, & Average Cell Voltage
-    PUT2SCREEN("Vmx:",      VmaxBuffer,             "V",    3,   0, 20);
-    PUT2SCREEN("Vmn:",      VminBuffer,              "",    3,  47, 67);
-    PUT2SCREEN("Vav:",      VavgBuffer,              "",    3,  88,108);
+    PUT2SCREEN("Vmx:",      VmaxBuffer,             "V",    3,   0, 20);//CELLV_MMA_TX_ID_BASE 4-7
+    PUT2SCREEN("Vmn:",      VminBuffer,              "",    3,  47, 67);//CELLV_MMA_TX_ID_BASE 0-3
+    PUT2SCREEN("Vav:",      VavgBuffer,              "",    3,  88,108);//CELLV_MMA_TX_ID_BASE2
 
     //Info line 3: High, Low, & Average Cell Temp
-    PUT2SCREEN("Tmx:",        MaxBatTBuffer,       "F",     5,  0, 20);
-    PUT2SCREEN("Tmn:",        MinBatTBuffer,        "",     5, 47, 67);
-    PUT2SCREEN("Tav:",        AvgBatTBuffer,        "",     5, 88,108);
+    PUT2SCREEN("Tmx:",        MaxBatTBuffer,       "F",     5,  0, 20);//TEMP_MMA_TX_ID_BASE 4-7
+    PUT2SCREEN("Tmn:",        MinBatTBuffer,        "",     5, 47, 67);//TEMP_MMA_TX_ID_BASE 0-3
+    PUT2SCREEN("Tav:",        AvgBatTBuffer,        "",     5, 88,108);//TEMP_MMA_TX_ID_BASE2
 
     //Info line 4: Highest Board Temp
-    PUT2SCREEN("HighBoardTemp:",  BoardTempBuffer,   "F",   7,  17, 87);
+    PUT2SCREEN("HighBoardTemp:",  BoardTempBuffer,   "F",   7,  17, 87);//BOARDTEMP_TX_ID
 }
 
 void DisplayMotorScreen()
--- a/Steering.cpp	Thu May 14 18:49:05 2015 +0000
+++ b/Steering.cpp	Fri May 15 04:14:09 2015 +0000
@@ -107,8 +107,8 @@
             CANFloat = GetFloat;
             LEDBar = (CANFloat/85.0)*(2.6/3.3);
         }
-
-        switch (CurrScreen) {
+        memcpy(message_data[Rxmsg.id],Rxmsg.data,8);
+        /*switch (CurrScreen) {
             case HOME_SCREEN:
                 switch (Rxmsg.id) {
 
@@ -125,7 +125,7 @@
                                 sprintf(BrkPedalBuffer,"%3.2d", int(CANFloat2*100));
                                 display.PutString(1,60,BrkPedalBuffer);
                             }
-                            break;*/
+                            break;
 
                     case SOC_TX_ID:
                         CANFloat = GetFloat;
@@ -400,7 +400,8 @@
                 break;
             default:
                 break;
-        }
+        }*/
+        
     }
 }
 
--- a/Steering.cpp.orig	Thu May 14 18:49:05 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,444 +0,0 @@
-#include "Steering.h"
-
-// To-Do:
-// Look at SYS management CAN translations: shutdown switches, DCDC status, & IMD (this is a resistance, in ohms)
-// Figure out screen/variable updating options (hardware filter), NVIC_SetPriority(CAN_IRQn,####)LPC17xx.h
-// Firgure out fault protocall
-
-void Init();
-void ProcessButtons(void const *args);
-void RequestStatusChange();
-void ResetSteeringWheel();
-void ResetCar();
-void ProcessCANMsg(CANMessage& msg);
-void UpdateDisplay();
-void ProcessButtons(void const *args);
-void ConnectedStatusCANMsg();
-
-float CANFloat;
-float CANFloat2;
-
-Ticker StatusMsg;
-
-int main()
-{
-    Init();
-
-    CANMessage Rxmsg;
-
-    Thread Thread2(ProcessButtons);
-    Thread Thread1(DisplayCurrScreen);
-
-    while(1) {
-        if (SteeringCANPort.rxRead(Rxmsg)) {
-            ProcessCANMsg(Rxmsg);
-        }
-    }
-}
-
-
-void Init()
-{
-    StatusMsg.attach(&ConnectedStatusCANMsg,0.1);
-    pc.baud(921600);
-    BLButtonRed;
-    BRButtonGreen;
-    TLButtonGreen;
-    TRButtonGreen;
-    //initialize screen Startup Process
-    wait(2);
-}
-
-
-void ProcessButtons(void const *args)
-{
-    while(1) {
-        Thread::wait(50);
-        if(biSWBR.read()) {
-            Thread::wait(750);
-            if (biSWBR.read()) {
-                ResetCar();
-            }
-            NVIC_SystemReset();
-            ResetSteeringWheel();
-        }
-
-        if(biSWBL.read()) {
-            Thread::wait(1000);
-            if (biSWBL.read()) {
-                RequestStatusChange();
-            }
-        }
-
-        if(biSWTR.read() && CurrScreen != 5) {
-            //If the toggle button is pressed and the screen isn't on Fault_Screen
-            ToggleScreen();
-            Thread::wait(250);
-        } else if (biSWTR.read() && CurrScreen == 5) {// If the screen was on Fault, go to Home
-            CurrScreen = 0;
-            Thread::wait(250);
-        }
-
-        if(biSWTL.read() && CurrScreen != 0) {
-            //If the Home button is pressed and the screen isn't on Fault_Screen
-            CurrScreen = 0;
-            Thread::wait(250);
-        } else if (biSWTL.read() && CurrScreen == 0) {// If the screen was on Fault, go to Home
-            CurrScreen = 5;
-            Thread::wait(250);
-        }
-    }
-}
-
-
-void UpdateDisplay()
-{
-}
-
-
-void ProcessCANMsg(CANMessage& Rxmsg)
-{
-    if (SteeringCANPort.rxRead(Rxmsg)) {
-        // Printing CAN message data:
-        // 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]))));
-        // for (int i=0; i < Rxmsg.len; i++) printf("D[%d]: %x ", i, Rxmsg.data[i]);
-        if (Rxmsg.id == MODE_TX_ID) {
-            if(Rxmsg.data[0] != (1<<3))
-                DriveStatusRequestBuffer=1;
-            else
-                DriveStatusRequestBuffer=0;
-            }
-
-        if (Rxmsg.id == POWER_TX_ID) {
-            CANFloat = GetFloat;
-            LEDBar = (CANFloat/85.0)*(2.6/3.3);
-        }
-
-        switch (CurrScreen) {
-            case HOME_SCREEN:
-                switch (Rxmsg.id) {
-
-                        // HOME SCREEN *******************************************************************************************
-                        // Pedal Test
-                        /*case PCM_PEDALS_ID:
-                            CANFloat = GetFloat;
-                            if (abs(CANFloat*100 - float (*AccPedalBuffer)) >= 1) {
-                                sprintf(AccPedalBuffer,"%3.2d", int(CANFloat*100));
-                                display.PutString(1,40,AccPedalBuffer);
-                            }
-                            CANFloat2 = GetFloat4;
-                            if (abs(CANFloat2*100 - float (*BrkPedalBuffer)) >= 1) {
-                                sprintf(BrkPedalBuffer,"%3.2d", int(CANFloat2*100));
-                                display.PutString(1,60,BrkPedalBuffer);
-                            }
-                            break;*/
-
-                    case SOC_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat*100 - *BigBatLifeBuffer) >= 1) {
-                            sprintf(BigBatLifeBuffer,"%3.2d", int(CANFloat*100));                   // Big battery life percentage
-                            display.PutString(1,40,BigBatLifeBuffer);
-                        }
-                        break;
-                    case SYS_GLV_SOC_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat*100 - *SmallBatLifeBuffer) >= 1) {
-                            sprintf(SmallBatLifeBuffer,"%3.2d", int(CANFloat*100));                 // Small battery life percentage
-                            display.PutString(1,60,SmallBatLifeBuffer);
-                        }
-                        break;
-                    case PCM_FRPM_ID:
-                        CANFloat  = GetFloat;
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat+CANFloat2)*WheelCircumference*30 - *CarSpdBuffer) >= 1) {
-                            sprintf(CarSpdBuffer,"%3.2d", int((CANFloat+CANFloat2)*WheelCircumference*30));     // Miles per hour
-                            display.PutString(1,108,CarSpdBuffer);
-                        }
-                        break;
-                    case TEMP_MMA_TX_ID_BASE2:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
-                            sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));          // Degrees F
-                            display.PutString(3,39,AvgBatTBuffer);
-                        }
-                        break;
-                    case TEMP_MMA_TX_ID_BASE:
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
-                            sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
-                            display.PutString(3,103,MaxBatTBuffer);
-                        }
-                        break;
-                    case MOC_MOTEMP_ID:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
-                            sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
-                            display.PutString(5,34,LMtrTmpBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
-                            sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
-                            display.PutString(5,34,RMtrTmpBuffer);
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                break;
-                // BATTERY SCREEN***********************************************************************************
-            case BATTERY_SCREEN:
-                switch (Rxmsg.id) {
-                    case VOLTAGE_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
-                            sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat));                       // Volts
-                            display.PutString(1,10,BigBatVoltBuffer);
-                        }
-                        break;
-                    case POWER_TX_ID:
-                        CANFloat = GetFloat;
-                        LEDBar = (CANFloat/85.0)*(2.6/3.3);
-                        if (abs(CANFloat - *BigBatPowerBuffer) >= 1) {
-                            sprintf(BigBatPowerBuffer,"%3.2d", int(CANFloat));                       // Watts
-                            display.PutString(1,55,BigBatPowerBuffer);
-                        }
-                        break;
-                    case CURRENT_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *BigBatCurrentBuffer) >= 0.2) {
-                            sprintf(BigBatCurrentBuffer,"%3.2d", int(CANFloat));                       // Amps
-                            display.PutString(1,100,BigBatCurrentBuffer);
-                        }
-                        break;
-                    case CELLV_MMA_TX_ID_BASE:
-                        CANFloat2 = GetFloat4;
-                        if (abs(CANFloat2 - *VmaxBuffer) >= 0.1) {
-                            sprintf(VmaxBuffer,"%3.2d", int(CANFloat2));
-                            display.PutString(3,20,VmaxBuffer);
-                        }
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *VminBuffer) >= 0.1) {
-                            sprintf(VminBuffer,"%3.2d", int(CANFloat));
-                            display.PutString(3,67,VminBuffer);
-                        }
-                        break;
-                    case CELLV_MMA_TX_ID_BASE2:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *VavgBuffer) >= 0.1) {
-                            sprintf(VavgBuffer,"%3.2d", int(CANFloat));                                 // Volts
-                            display.PutString(3,108,VavgBuffer);
-                        }
-                        break;
-                    case TEMP_MMA_TX_ID_BASE:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *MinBatTBuffer) >= 1) {
-                            sprintf(MinBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
-                            display.PutString(5,67,MinBatTBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *MaxBatTBuffer) >=1) {
-                            sprintf(MaxBatTBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
-                            display.PutString(5,20,MaxBatTBuffer);
-                        }
-                        break;
-                    case TEMP_MMA_TX_ID_BASE2:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *AvgBatTBuffer) >=1) {
-                            sprintf(AvgBatTBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));          // Degrees F
-                            display.PutString(5,108,AvgBatTBuffer);
-                        }
-                        break;
-                    case BOARDTEMP_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *BoardTempBuffer) >= 1) {
-                            sprintf(BoardTempBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));                                 // Degrees F
-                            display.PutString(7,87,BoardTempBuffer);
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                break;
-                // MOTOR SCREEN*****************************************************************
-            case MOTOR_SCREEN:
-                switch (Rxmsg.id) {
-                    case MOC_MOTEMP_ID:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *LMtrTmpBuffer) >= 1) {
-                            sprintf(LMtrTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
-                            display.PutString(1,34,LMtrTmpBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
-                            sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));
-                            display.PutString(1,98,LMtrTmpBuffer);
-                        }
-                        break;
-                    case MOC_AIRTEMP_ID:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *LAirTmpBuffer) >= 1) {
-                            sprintf(LAirTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
-                            display.PutString(2,34,LAirTmpBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *RAirTmpBuffer) >= 1) {
-                            sprintf(RAirTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));                   // Degrees F
-                            display.PutString(2,98,RAirTmpBuffer);
-                        }
-                        break;
-                    case MOC_IGBTTEMP_ID:
-                        CANFloat = GetFloat;
-                        if (abs((CANFloat*9.0/5.0)+32 - *LIGBTmpBuffer) >= 1) {
-                            sprintf(LIGBTmpBuffer,"%3.2d", int((CANFloat*9.0/5.0)+32));
-                            display.PutString(3,34,LIGBTmpBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs((CANFloat2*9.0/5.0)+32 - *RIGBTmpBuffer) >= 1) {
-                            sprintf(RIGBTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));                   // Degrees F
-                            display.PutString(3,98,RIGBTmpBuffer);
-                        }
-                        break;
-                    case MOC_RPM_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *Rpm_LBuffer) >= 1) {
-                            sprintf(Rpm_LBuffer,"%3.2d", int(CANFloat));
-                            display.PutString(5,30,Rpm_LBuffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs(CANFloat2 - *Rpm_RBuffer) >= 1) {
-                            sprintf(Rpm_RBuffer,"%3.2d", int(CANFloat2));
-                            display.PutString(5,107,Rpm_RBuffer);
-                        }
-                        break;
-                    case PCM_TORQUERQ_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat*100 - *TRequestBufferL) >= 1) {
-                            sprintf(TRequestBufferL,"%3.2d", int(CANFloat*100));             // Percentage
-                            display.PutString(7,89,TRequestBufferL);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs(CANFloat2*100 - *TRequestBufferR) >= 1) {
-                            sprintf(TRequestBufferR,"%3.2d", int(CANFloat2*100));             // Percentage
-                            display.PutString(7,89,TRequestBufferR);
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                break;
-
-                // SYSTEM MANAGEMENT SCREEN***************************************************
-            case SYS_MGMT_SCREEN:
-                switch (Rxmsg.id) {
-                    case SYS_GLV_CURRENT_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *SmallBatCurrentBuffer) >= 0.2) {
-                            sprintf(SmallBatCurrentBuffer,"%3.2d", int(CANFloat));             // Amps
-                            display.PutString(1,30,SmallBatCurrentBuffer);
-                        }
-                        break;
-                    case SYS_SWITCHES_ID:
-                        CANFloat = GetFloat;
-                        sprintf(ShtdSwtchBuffer,"%3.2d", int(CANFloat));             // How the heck are we interpreting this data
-                        display.PutString(1,108,ShtdSwtchBuffer);
-                        break;
-                    case SYS_PWM_FAN_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat*100 - *Fan1Buffer) >= 1) {
-                            sprintf(Fan1Buffer,"%3.2d", int(CANFloat*100));
-                            display.PutString(3,30,Fan1Buffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs(CANFloat2*100 - *Fan1Buffer) >= 1) {
-                            sprintf(Fan2Buffer,"%3.2d", int(CANFloat2*100));
-                            display.PutString(3,107,Fan2Buffer);
-                        }
-                        break;
-                    case SYS_PWM_PUMP_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat*100 - *Pump1Buffer) >= 1) {
-                            sprintf(Pump1Buffer,"%3.2d", int(CANFloat*100));
-                            display.PutString(5,30,Pump1Buffer);
-                        }
-                        CANFloat2 = GetFloat4;
-                        if (abs(CANFloat2*100 - *Pump2Buffer) >= 1) {
-                            sprintf(Pump2Buffer,"%3.2d", int(CANFloat2*100));
-                            display.PutString(5,107,Pump2Buffer);
-                        }
-                        break;
-                    case SYS_DCDC_STATUS_ID:
-                        CANFloat = GetFloat;
-                        sprintf(DCDCBuffer,"%3.2d", int(CANFloat));             // How the heck are we interpreting this data
-                        display.PutString(7,30,DCDCBuffer);
-                        break;
-                    case SYS_IMD_RESIST_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *IMDRBuffer) >= 1) {
-                            sprintf(IMDRBuffer,"%3.2d", int(CANFloat));
-                            display.PutString(7,82,IMDRBuffer);
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                break;
-
-                // CHARGE SCREEN *************************************************************
-            case CHARGE_SCREEN:
-                switch (Rxmsg.id) {
-                    case CHARGECURR_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *ChargeCurrBuffer) >= 0.1) {
-                            sprintf(ChargeCurrBuffer,"%3.2d", int(CANFloat));                       // Amps
-                            display.PutString(3,94,ChargeCurrBuffer);
-                        }
-                        break;
-                    case VOLTAGE_TX_ID:
-                        CANFloat = GetFloat;
-                        if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
-                            sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat));                       // Volts
-                            display.PutString(3,94,BigBatVoltBuffer);
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                break;
-            default:
-                break;
-        }
-    }
-}
-
-void ConnectedStatusCANMsg()
-{
-    CANMessage ConnectedStatus(0x600, &ConnectedStatusBuffer,1);
-    SteeringCANPort.txWrite(ConnectedStatus);
-}
-
-
-void RequestStatusChange()
-{
-    CANMessage TxDriveStatusRequest(0x601, &DriveStatusRequestBuffer,1);
-    for (int j=0; j<10; j++) {
-        SteeringCANPort.txWrite(TxDriveStatusRequest);
-    }
-    display.PutString(7,0,"    DRIVE REQUEST SENT    ");
-    Thread::wait(750);
-    PrevScreen = !CurrScreen; // To force a screen update
-}
-
-
-void ResetSteeringWheel()
-{
-    NVIC_SystemReset();
-}
-
-
-void ResetCar()
-{
-    CANMessage TxCarReset(0x602,&TxResetBuffer,1);
-    for (int k=0; k<10; k++) {
-        SteeringCANPort.txWriteDirect(TxCarReset);
-    }
-}
\ No newline at end of file