Team Fox / Mbed 2 deprecated BAE_QM_MAR9

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_5thJan_azad by Team Fox

Revision:
30:22b338b027de
Parent:
29:bb0d64656ba1
Child:
31:046685b48b71
--- a/main.cpp	Thu Jun 23 12:14:28 2016 +0000
+++ b/main.cpp	Fri Jul 01 14:59:12 2016 +0000
@@ -44,7 +44,7 @@
 char EPS_BATTERY_GAUGE_STATUS = 'q';
 //eps main
 char EPS_MAIN_STATUS = 'q';
-char EPS_BATTERY_TEMP_STATUS = 'q';
+char EPS_BTRY_TMP_STATUS = 'q';
 char EPS_STATUS = 'q';
 
 char EPS_BATTERY_HEATER_ENABLE = 'q';
@@ -55,13 +55,18 @@
 
 //eps main
 uint8_t EPS_MAIN_STATUS = 0;
-uint8_t EPS_BATTERY_TEMP_STATUS = 0;
+uint8_t EPS_BTRY_TMP_STATUS = 0;
 uint8_t EPS_STATUS = 7; //invalid status
+uint8_t EPS_BTRY_HTR_AUTO = 1;
 
 int EPS_MAIN_COUNTER = 0;
 
-uint8_t EPS_BATTERY_HEATER_ENABLE = 0;
-float EPS_BAT_TEMP_LOW = 20.0;
+uint8_t EPS_BTRY_HTR = 0;
+float EPS_BTRY_TMP_LOW;
+float EPS_BTRY_TMP_HIGH;
+int EPS_BAT_TEMP_DEFAULT = 20;
+
+
 
 //eps cdms fault
 uint8_t CDMS_SW_STATUS;
@@ -98,6 +103,7 @@
 bool BCN_TX_OC_FAULT;
 int BCN_TX_FAULT_COUNTER;
 
+
 //.......................global variables..................................................................// new hk structure- everything has to changed based on this
 uint8_t BAE_data[74];  
 char BAE_chardata[74];     
@@ -137,7 +143,7 @@
 InterruptIn irpt_4m_mstr(PIN38);                                      //I2c interrupt from CDMS
 DigitalOut irpt_2_mstr(PIN4);                                        //I2C interrupt to CDMS
 I2CSlave slave (PIN1,PIN2);///pin1 pin2
-DigitalOut batt_heat(PIN96);
+DigitalOut BTRY_HTR_ENABLE(BATT_HEAT); //BTRY_HEAT
 
 //ATS1_SW_ENABLE = 0;
 PwmOut PWM1(PIN93); //x                         //Functions used to generate PWM signal 
@@ -396,81 +402,64 @@
 
 void F_EPS()
 {
-    
-        pc.printf("\n\rEntered EPS   %f\n",t_start.read());
-        EPS_MAIN_STATUS = 1; // Set EPS main status
-        EPS_MAIN_COUNTER++;
-        FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
-          pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
-          EPS_BATTERY_TEMP_STATUS = 1;          //set EPS_BATTERY_TEMP_STATUS
-          if(EPS_BATTERY_HEATER_ENABLE == 1)
-          {
-              if((actual_data.Batt_temp_actual[0] < EPS_BAT_TEMP_LOW) && (actual_data.Batt_temp_actual[1] < EPS_BAT_TEMP_LOW)) // to confirm
-              {
-                  batt_heat = 1;    //turn on battery heater
-                  if( actual_data.current_actual[12] == 0 )
-                    EPS_STATUS = 3; // Set EPS_ERR_HEATER_SWITCH_ON
-                  else
-                    EPS_STATUS = 5; // Set EPS_BATTERY_HEATER_ON                  
-              }
-              else
-              {
-                  batt_heat = 0;     //turn off battery heater
-                  if( actual_data.current_actual[12] == 0 )
-                    EPS_STATUS = 2; // Set EPS_ERR_HEATER_SWITCH_OFF
-                  else
-                    EPS_STATUS = 4; // Set EPS_BATTERY_HEATER_OFF  
-              }
-              
-           } 
-          else if(EPS_BATTERY_HEATER_ENABLE == 0)
-          {
-                EPS_STATUS = 1;//EPS_STATUS = EPS_BATTERY_HEATER_DISABLED
-          }
-        
-        int BTG_MAIN_FLAG = 0;                         //Flag to check whether data received from gauge
+      float eps_btry_temp;
+      pc.printf("\n\rEntered EPS   %f\n",t_start.read());
+      EPS_MAIN_STATUS = 1; // Set EPS main status
+      EPS_MAIN_COUNTER++;
+      FCTN_BATT_TEMP_SENSOR_MAIN(actual_data.Batt_temp_actual);
+      pc.printf("\n\r Battery temperature %f %f" ,actual_data.Batt_temp_actual[0], actual_data.Batt_temp_actual[1]);
+      if(abs(actual_data.Batt_temp_actual[0] - actual_data.Batt_temp_actual[1]) > 10)
+      {
+          EPS_BTRY_TMP_STATUS = 0;          //clear EPS_BTRY_TMP_STATUS
+          eps_btry_temp = (float) EPS_BAT_TEMP_DEFAULT;
+      }
+      else   
+      {
+          EPS_BTRY_TMP_STATUS = 1;          //set EPS_BTRY_TMP_STATUS
+          eps_btry_temp = ( actual_data.Batt_temp_actual[0] + actual_data.Batt_temp_actual[1] )/2;
+      }
+         
+      if(EPS_BTRY_HTR_AUTO == 0)
+          EPS_STATUS = 1;                   //EPS_BATTERY_HEATER_DISABLED
+      else if( EPS_BTRY_TMP_STATUS == 0 )
+      {
+          BTRY_HTR_ENABLE = 0;
+          EPS_BTRY_HTR = 0;
+          EPS_STATUS = 0;                   //Set EPS_ERR_BATTERY_TEMP
+      }
+      else
+      {
+            if( EPS_BTRY_HTR == 1 && eps_btry_temp >= EPS_BTRY_TMP_HIGH )
+            {
+              BTRY_HTR_ENABLE = 0;
+              EPS_BTRY_HTR = 0;
+              EPS_STATUS = 4;               //Set EPS_BATTERY_HEATER_OFF
+            }
+            else if( EPS_BTRY_HTR == 0 && eps_btry_temp < EPS_BTRY_TMP_LOW )
+            {
+              BTRY_HTR_ENABLE = 1;
+              EPS_BTRY_HTR = 1;
+              EPS_STATUS = 5;               //Set EPS_BATTERY_HEATER_ON
+            }
+      }  
+
+        unsigned short statusreg = read(REG_STATUS);
+        if( EPS_BATTERY_GAUGE_STATUS == 0 ) reset();
         if( read(REG_STATUS)  & 0x0100 == 0x0100 )     //checking if Reset Indicator bit is set
-        {
             FCTN_BATTERYGAUGE_INIT();
-            write(REG_STATUS, read(REG_STATUS) & 0xFEFF);   //Clearing Reset Indicator bit
-            if( EPS_BATTERY_TEMP_STATUS == 1 )
-            {
-                FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
-                BTG_MAIN_FLAG = 1;
-            }
-            else
+            
+        int BTG_MAIN_FLAG = FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual, eps_btry_temp);
+        if( BTG_MAIN_FLAG == 0 )                      //Data not received
             {
               actual_data.power_mode = 1;
               EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
             }
-        }
-        if( read(REG_STATUS)  & 0x0100 == 0x0000 )
-        {
-            FCTN_BATTERYGAUGE_MAIN(actual_data.Batt_gauge_actual);
-            BTG_MAIN_FLAG = 1;
-        }
-        if( BTG_MAIN_FLAG == 1 )
-            if (actual_data.Batt_gauge_actual[1] == 200)   //data not received
-            {
-              actual_data.power_mode = 1;
-              EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
-            }
-            else
+        else
             {
               FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]);            //updating power level 
               EPS_BATTERY_GAUGE_STATUS = 1;           //set EPS_BATTERY_GAUGE_STATUS
             }
-       // if( Temperature data received)
-        //{
-          
-          
-      //  }
-//        else
-//        {
-//          Set battery temp to XX  
-//          EPS_BATTERY_TEMP_STATUS = 0;          //clear EPS_BATTERY_TEMP_STATUS
-//          EPS_STATUS = EPS_ERR_BATTERY_TEMP;
-//        }
+     
         FCTN_HK_MAIN();
        // printf("\n\r here");
         FCTN_EPS_HANDLE_HW_FAULTS();
@@ -700,19 +689,19 @@
         schedcount = 1;
     }
     if(schedcount%1==0)
-    { pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE);
-      pc.printf("\niterp1 !!!!!! = %x !!\n",iterP1);
-      pc.printf("\niteri2 IS !!!!!! = %x !!\n",iterI2);
-       F_ACS();
+    { //pc.printf("\nSTATE IS !!!!!! = %x !!\n",ACS_STATE);
+      //pc.printf("\niterp1 !!!!!! = %x !!\n",iterP1);
+      //pc.printf("\niteri2 IS !!!!!! = %x !!\n",iterI2);
+      //F_ACS();
     }
     
     if(schedcount%2==0)
     {
-    //    F_EPS();
+        F_EPS();
     }
     if(schedcount%1==0)
     { 
-       F_BCN();
+    //   F_BCN();
     }
     schedcount++;
     printf("\n\r exited scheduler");
@@ -797,9 +786,9 @@
     BAE_STATUS &= 0xFFFDFFFF;
 
 
-if (EPS_BATTERY_TEMP_STATUS==1)             // Set EPS_BATTERY_TEMP_STATUS
+if (EPS_BTRY_TMP_STATUS==1)             // Set EPS_BTRY_TMP_STATUS
     BAE_STATUS |= 0x00080000;
-else if(EPS_BATTERY_TEMP_STATUS==0)       // Clear
+else if(EPS_BTRY_TMP_STATUS==0)       // Clear
     BAE_STATUS &= 0xFFF7FFFF;
 
 if (EPS_STATUS==0)
@@ -816,9 +805,9 @@
     BAE_STATUS = (BAE_STATUS & 0xFF8FFFFF)|0x00050000;          // Set EPS_BATTERY_HEATER_ON   
     
 
-    if(EPS_BATTERY_HEATER_ENABLE == 1)
+    if(EPS_BTRY_HTR == 1)
         BAE_ENABLE |= 0x00000080;
-    else if(EPS_BATTERY_HEATER_ENABLE == 0)
+    else if(EPS_BTRY_HTR == 0)
         BAE_ENABLE = BAE_ENABLE &0xFFFFFF7;    
     
 
@@ -833,7 +822,7 @@
     ACS_STATE = 4;
     ACS_ATS_ENABLE = 1;
     ACS_DATA_ACQ_ENABLE = 1;
-    EPS_BATTERY_HEATER_ENABLE = 1;
+    EPS_BTRY_HTR = 1;
     actual_data.power_mode=3;
     //............intializing pins................//
     ATS1_SW_ENABLE = 0;
@@ -845,8 +834,8 @@
     TRXY_SW = 1;
     
     //............................//
-    FCTN_ACS_INIT();
-   // FCTN_EPS_INIT();
+    //FCTN_ACS_INIT();
+   FCTN_EPS_INIT();
     //FCTN_BCN_INIT();
 
     
@@ -872,7 +861,7 @@
 
     
     //FLAG();
-    FCTN_BAE_INIT();
+    //FCTN_BAE_INIT();
     
     
     //...i2c..