The Code Repository for the REV0 Steering Wheel.

Dependencies:   CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses

Fork of REVO_Updated_Steering by Penn Electric

Revision:
40:92f08fdc32df
Parent:
39:e6aa6dcf3f75
Child:
41:7c5ea411fad2
diff -r e6aa6dcf3f75 -r 92f08fdc32df Steering.cpp
--- a/Steering.cpp	Sun Feb 08 05:47:05 2015 +0000
+++ b/Steering.cpp	Sun Feb 08 08:48:17 2015 +0000
@@ -24,11 +24,6 @@
 {
     Init();
 
-    display.GotoXY(10,16);
-    display.SelectFont(Arial_14,BLACK,ReadData);
-    display.PrintString("Penn Electric Racing");
-    wait(1);
-
     CANMessage Rxmsg;
 
     Thread Thread2(ProcessButtons);
@@ -50,7 +45,6 @@
     BRButtonGreen;
     TLButtonGreen;
     TRButtonGreen;
-    DriveStatus = 0; // Off
     //initialize screen Startup Process
     wait(2);
 }
@@ -108,234 +102,305 @@
         // 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]);
-        switch (Rxmsg.id) {
+        if (Rxmsg.id == MODE_TX_ID) {
+            CANFloat = GetFloat;
+            sprintf(&DriveStatus,"%3.2d", int(CANFloat));                       //confirm that I am interpreting this correctly
+            DriveStatusRequestBuffer = !DriveStatus;
+            if (DriveStatus == 1) {
+                BLButtonGreen;
+            } else {
+                BLButtonRed;
+            }
+        }
+
+        switch (CurrScreen) {
+            case HOME_SCREEN:
+                switch (Rxmsg.id) {
 
-                // HOME SCREEN *******************************************************************************************
-            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);
-                    //display.PutString(5,108,AvgBatTBuffer); this is for the battery screen
-                }
-                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));          // Figure out Max/Min and Figure out various screen display
-                    display.PutString(3,103,MaxBatTBuffer);
-                    //display.PutString(5,20,MaxBatTBuffer); this is for the battery screen
-                }
-                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); this is for the battery screen
-                }
-                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));          // We need to figure out how to handle the bytes for left and right motors
-                    display.PutString(5,34,LMtrTmpBuffer);
-                    // display.PutString(1,34,LMtrTmpBuffer); this is for the motor screen
-                }
-                CANFloat2 = GetFloat4;
-                if (abs((CANFloat2*9.0/5.0)+32 - *RMtrTmpBuffer) >= 1) {
-                    sprintf(RMtrTmpBuffer,"%3.2d", int((CANFloat2*9.0/5.0)+32));          // We need to figure out how to handle the bytes for left and right motors
-                    display.PutString(5,34,RMtrTmpBuffer);
-                    //display.PutString(1,98,LMtrTmpBuffer); this is for the motor screen
-                }
-                break;
-
-                // BATTERY SCREEN***********************************************************************************
-            case VOLTAGE_TX_ID:
-                CANFloat = GetFloat;
-                if (abs(CANFloat - *BigBatVoltBuffer) >= 0.1) {
-                    sprintf(BigBatVoltBuffer,"%3.2d", int(CANFloat));                       // Volts
-                    //display.PutString(1,10,BigBatVoltBuffer);
-                    //display.PutString(3,94,BigBatVoltBuffer); this is for the charging screen
-                }
-                break;
-            case POWER_TX_ID:
-                CANFloat = GetFloat;
-                if (abs(CANFloat - *BigBatPowerBuffer) >= 1) {
-                    sprintf(BigBatPowerBuffer,"%3.2d", int(CANFloat));                       // Watts
-                    //display.PutString(1,55,BigBatPowerBuffer);
+                        // 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;
-            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));                                 // We need to figure out how to handle max and min
-                    //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 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);
+                // 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 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));                   // Figure out the left and the right
-                //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));                   // Figure out the left and the right
-                //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));                   // Figure out the left and the right
-                //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);
+            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_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));                   // Duty Cycle. Figure out the left and the right
-                //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));                   // Duty Cycle. Figure out the left and the right
-                //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,107,IMDRBuffer);
+            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;
 
-                // CHARGER SCREEN *************************************************************
-            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;
-
-                // OTHER **********************************************************************
-            case MODE_TX_ID:
-                CANFloat = GetFloat;
-                sprintf(&DriveStatus,"%3.2d", int(CANFloat));                       //confirm that I am interpreting this correctly
-                if (DriveStatus == 1) {
-                    BLButtonGreen;
-                } else {
-                    BLButtonRed;
+                // 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:
@@ -353,7 +418,6 @@
 
 void RequestStatusChange()
 {
-    DriveStatusRequestBuffer = !DriveStatus;
     CANMessage TxDriveStatusRequest(0x601, &DriveStatusRequestBuffer,1);
     for (int j=0; j<10; j++) {
         SteeringCANPort.txWrite(TxDriveStatusRequest);