Team Fox / Mbed 2 deprecated workinQM_5thJan_azad

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of workinQM_10thDec by Team Fox

Revision:
33:76f2b8735501
Parent:
27:61c856be467e
Child:
39:670133e7ffd8
--- a/EPS.cpp	Sat Jul 02 14:06:34 2016 +0000
+++ b/EPS.cpp	Mon Jul 04 04:29:59 2016 +0000
@@ -47,6 +47,7 @@
 extern uint8_t BCN_INIT_STATUS;
 extern uint8_t BCN_FAIL_COUNT;
 extern uint16_t BCN_TX_MAIN_COUNTER;
+extern uint8_t BCN_TX_MAIN_STATUS;
 
 //bae
 extern uint8_t BAE_RESET_COUNTER;
@@ -57,6 +58,8 @@
 //eps
 extern uint8_t ACS_INIT_STATUS;
 extern uint16_t EPS_MAIN_COUNTER;
+extern uint8_t EPS_BTRY_TMP_STATUS;
+
 
 //main
 extern uint8_t HTR_CYCLE_COUNTER;
@@ -69,7 +72,8 @@
 /***********************************************global variable declaration***************************************************************/
 extern uint32_t BAE_STATUS;
 extern uint32_t BAE_ENABLE;
-extern uint8_t BAE_HK_data[134];
+extern uint8_t LONG_HK_data[2][134];
+//extern uint8_t BAE_HK_data[134];
 //extern char BAE_chardata[74]; 
 
 //implement them assign them default values  
@@ -102,7 +106,7 @@
 DigitalOut TRXY(TRXY_DR_EN);            //active high
 DigitalOut TRZ(TRZ_DR_EN);              //active high
 DigitalOut EN3V3A(ENBL3V3A);
-DigitalOut EN_BTRY_HT(BATT_HEAT);
+DigitalOut BTRY_HTR_ENABLE(BATT_HEAT);// earlier BTRY_HTR_ENABLE
 //DigitalIn BTRY_HT_OUTPUT(BATT_HEAT_OUTPUT);
 //AnalogIn Vbatt_ang(VBATT);
 AnalogIn Batt_voltage(PIN20);   //Battery voltage
@@ -132,16 +136,17 @@
 extern uint8_t EPS_INIT_STATUS ;
 extern uint8_t EPS_BATTERY_GAUGE_STATUS ;
 extern uint8_t EPS_MAIN_STATUS;
-extern uint8_t EPS_BATTERY_TEMP_STATUS ;
+extern uint8_t EPS_BTRY_TMP_STATUS ;
 extern uint8_t EPS_STATUS ;
 
-extern uint8_t EPS_BTRY_HTR_AUTO ;
+extern uint8_t EPS_BTRY_HTR ;
 
 //eps cdms fault
 extern uint8_t CDMS_SW_STATUS;
 extern DigitalOut CDMS_OC_FAULT;
 extern bool CDMS_SW_ENABLE;
 extern int CDMS_FAULT_COUNTER;
+extern uint8_t EPS_BTRY_HTR_AUTO;
 
 //eps hw faults
 
@@ -188,11 +193,12 @@
     EN3V3A = 1;                             //enable dc dc converter A  
     char value=alertFlags(); // initialization part of battery gauge
     unsigned short value_u= (short int )value;
-    value_u &=0x0001;                     
-    if(value_u ==0x0001)                       // battery gauge not initialised
+    //value_u &=0x0001;                     
+    if(value_u & 0x0001 == 0x0001)                       // battery gauge not initialised
     {
         actual_data.power_mode = 1;
         EPS_BATTERY_GAUGE_STATUS = 0;               //clear EPS_BATTERY_GAUGE_STATUS
+        printf(" init BTG fail - %d\n\r", value_u);
     }
     else
     {
@@ -200,7 +206,11 @@
         actual_data.Batt_voltage_actual = Batt_voltage.read()*3.3; //1 corresponds to 3.3 scaling factor
         FCTN_EPS_POWERMODE(actual_data.Batt_gauge_actual[1]);
         EPS_BATTERY_GAUGE_STATUS = 1;               //set EPS_BATTERY_GAUGE_STATUS
+        printf("init BTG success - %d\n\r", value_u);
     }
+    
+    //if( read(REG_VERSION) == 
+    printf("REG_VERSION = %d\r\n",read(REG_VERSION));
    
     FCTN_BATTTEMP_INIT();
     EPS_BATTERY_GAUGE_STATUS = 1;
@@ -515,169 +525,169 @@
 
 void FCTN_APPEND_HKDATA()
 {
-    BAE_HK_data[0] = 0x28;
-    BAE_HK_data[1] = 0x00;
-    BAE_HK_data[2] = 0x00;
-    BAE_HK_data[3] = 0x00;
-    BAE_HK_data[4] = ACS_ATS_STATUS;
-    BAE_HK_data[5] = ACS_TR_XY_SW_STATUS;
-    BAE_HK_data[5] = (BAE_HK_data[5]<<2)| ACS_TR_Z_SW_STATUS;
-    BAE_HK_data[5] = (BAE_HK_data[5]<<4) | ACS_STATE;
+    LONG_HK_data[1][0] = 0x28;
+    LONG_HK_data[1][1] = 0x00;
+    LONG_HK_data[1][2] = 0x00;
+    LONG_HK_data[1][3] = 0x00;
+    LONG_HK_data[1][4] = ACS_ATS_STATUS;
+    LONG_HK_data[1][5] = ACS_TR_XY_SW_STATUS;
+    LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<2)| ACS_TR_Z_SW_STATUS;
+    LONG_HK_data[1][5] = (LONG_HK_data[1][5]<<4) | ACS_STATE;
     
-    BAE_HK_data[6] = ACS_DETUMBLING_ALGO_TYPE;
-    BAE_HK_data[6] = (BAE_HK_data[6]<<2) | BCN_TX_SW_STATUS;
-    BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_SPND_TX;
-    BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_FEN;
-    BAE_HK_data[6] = (BAE_HK_data[6]<<1) | BCN_LONG_MSG_TYPE;
-    BAE_HK_data[6] = (BAE_HK_data[6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
-    BAE_HK_data[6] = (BAE_HK_data[6]<<1);
+    LONG_HK_data[1][6] = ACS_DETUMBLING_ALGO_TYPE;
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<2) | BCN_TX_SW_STATUS;
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_SPND_TX;
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_FEN;
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | BCN_LONG_MSG_TYPE;
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1) | EPS_BTRY_HTR_AUTO;//EPS_BATTERY_HEATER_ENABLE
+    LONG_HK_data[1][6] = (LONG_HK_data[1][6]<<1);
     //now one spares in BAE_HK_data[5]
-    BAE_HK_data[7] = BAE_RESET_COUNTER;
-    BAE_HK_data[8] = EPS_SOC_LEVEL_12; 
-    BAE_HK_data[9] = EPS_SOC_LEVEL_23;
-    BAE_HK_data[10] = ACS_MAG_TIME_DELAY;
-    BAE_HK_data[11] = ACS_DEMAG_TIME_DELAY;
-    BAE_HK_data[12] = EPS_BAT_TEMP_LOW;
-    BAE_HK_data[13] = EPS_BAT_TEMP_HIGH;
-    BAE_HK_data[14] = EPS_BAT_TEMP_DEFAULT;
-    BAE_HK_data[15] = ACS_MM_X_COMSN >> 8;
-    BAE_HK_data[16] = ACS_MM_X_COMSN;
+    LONG_HK_data[1][7] = BAE_RESET_COUNTER;
+    LONG_HK_data[1][8] = EPS_SOC_LEVEL_12; 
+    LONG_HK_data[1][9] = EPS_SOC_LEVEL_23;
+    LONG_HK_data[1][10] = ACS_MAG_TIME_DELAY;
+    LONG_HK_data[1][11] = ACS_DEMAG_TIME_DELAY;
+    LONG_HK_data[1][12] = EPS_BAT_TEMP_LOW;
+    LONG_HK_data[1][13] = EPS_BAT_TEMP_HIGH;
+    LONG_HK_data[1][14] = EPS_BAT_TEMP_DEFAULT;
+    LONG_HK_data[1][15] = ACS_MM_X_COMSN >> 8;
+    LONG_HK_data[1][16] = ACS_MM_X_COMSN;
     
-    BAE_HK_data[17] = ACS_MM_Y_COMSN >> 8;
-    BAE_HK_data[18] = ACS_MM_Y_COMSN;
+    LONG_HK_data[1][17] = ACS_MM_Y_COMSN >> 8;
+    LONG_HK_data[1][18] = ACS_MM_Y_COMSN;
                                                                 
-    BAE_HK_data[19] = ACS_MG_X_COMSN >> 8;
-    BAE_HK_data[20] = ACS_MG_X_COMSN;
+    LONG_HK_data[1][19] = ACS_MG_X_COMSN >> 8;
+    LONG_HK_data[1][20] = ACS_MG_X_COMSN;
                                                                 
-    BAE_HK_data[21] = ACS_MG_Y_COMSN >> 8;
-    BAE_HK_data[22] = ACS_MG_Y_COMSN;
+    LONG_HK_data[1][21] = ACS_MG_Y_COMSN >> 8;
+    LONG_HK_data[1][22] = ACS_MG_Y_COMSN;
                                                             
-    BAE_HK_data[23] = ACS_MM_Z_COMSN >> 8;
-    BAE_HK_data[24] = ACS_MM_Z_COMSN;
+    LONG_HK_data[1][23] = ACS_MM_Z_COMSN >> 8;
+    LONG_HK_data[1][24] = ACS_MM_Z_COMSN;
                                                                 
-    BAE_HK_data[25] = ACS_MG_Z_COMSN >> 8;
-    BAE_HK_data[26] = ACS_MG_Z_COMSN;
+    LONG_HK_data[1][25] = ACS_MG_Z_COMSN >> 8;
+    LONG_HK_data[1][26] = ACS_MG_Z_COMSN;
                                                                 
-    BAE_HK_data[27] = ACS_Z_FIXED_MOMENT >> 8;
-    BAE_HK_data[28] = ACS_Z_FIXED_MOMENT; 
+    LONG_HK_data[1][27] = ACS_Z_FIXED_MOMENT >> 8;
+    LONG_HK_data[1][28] = ACS_Z_FIXED_MOMENT; 
                                                              
     //BAE RAM PARAMETER
-    BAE_HK_data[29] = BAE_INIT_STATUS;
-    BAE_HK_data[29] = (BAE_HK_data[29]<<1) | 0;//change it================================
-    BAE_HK_data[29] = (BAE_HK_data[29]<<1) | BCN_INIT_STATUS; 
-    BAE_HK_data[29] = (BAE_HK_data[29]<<1) | BCN_TX_MAIN_STATUS;
-    BAE_HK_data[29] = (BAE_HK_data[29]<<3) | BCN_TX_STATUS;
-    BAE_HK_data[29] = (BAE_HK_data[29]<<3) | ACS_INIT_STATUS;
+    LONG_HK_data[1][29] = BAE_INIT_STATUS;
+    LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | 0;//change it================================
+    LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_INIT_STATUS; 
+    LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<1) | BCN_TX_MAIN_STATUS;
+    LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<3) | BCN_TX_STATUS;
+    LONG_HK_data[1][29] = (LONG_HK_data[1][29]<<3) | ACS_INIT_STATUS;
                                                                 
-    BAE_HK_data[30] = ACS_DATA_ACQ_STATUS;
-    BAE_HK_data[30] = (BAE_HK_data[30]<<1) | ACS_MAIN_STATUS;
-    BAE_HK_data[30] = (BAE_HK_data[30]<<4) | ACS_STATUS;
-    BAE_HK_data[30] = (BAE_HK_data[30]<<1) | EPS_INIT_STATUS;
+    LONG_HK_data[1][30] = ACS_DATA_ACQ_STATUS;
+    LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | ACS_MAIN_STATUS;
+    LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<4) | ACS_STATUS;
+    LONG_HK_data[1][30] = (LONG_HK_data[1][30]<<1) | EPS_INIT_STATUS;
     
-    BAE_HK_data[31] = EPS_BATTERY_GAUGE_STATUS;
-    BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_MAIN_STATUS;
-    BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_BATTERY_TEMP_STATUS;
-    BAE_HK_data[31] = (BAE_HK_data[31]<<3) | EPS_STATUS;
-    BAE_HK_data[31] = (BAE_HK_data[31]<<2) | CDMS_SW_STATUS;
+    LONG_HK_data[1][31] = EPS_BATTERY_GAUGE_STATUS;
+    LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_MAIN_STATUS;
+    LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<1) | EPS_BTRY_TMP_STATUS;;
+    LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<3) | EPS_STATUS;
+    LONG_HK_data[1][31] = (LONG_HK_data[1][31]<<2) | CDMS_SW_STATUS;
     ////BAE_HK_data[31] = (BAE_HK_data[31]<<1) | EPS_BTRY_HTR_STATUS;//new to : implement===========
     
-    //BAE_HK_data[32] = EPS_BTRY_HTR_STATUS;
+    LONG_HK_data[1][32] = EPS_BTRY_HTR;// to be disscussed
     //spare 4
-    BAE_HK_data[32] = (BAE_HK_data[32]<<7) | BAE_STANDBY;
+    LONG_HK_data[1][32] = (LONG_HK_data[1][32]<<7) | BAE_STANDBY;
     // 6 next telemetries value to be given by registers
-    BAE_HK_data[33] = ATS1_EVENT_STATUS_RGTR;
-    BAE_HK_data[34] = ATS1_SENTRAL_STATUS_RGTR;
-    BAE_HK_data[35] = ATS1_ERROR_RGTR;
-    BAE_HK_data[36] = ATS2_EVENT_STATUS_RGTR;
-    BAE_HK_data[37] = ATS2_SENTRAL_STATUS_RGTR;
-    BAE_HK_data[38] = ATS2_ERROR_RGTR;
+    LONG_HK_data[1][33] = ATS1_EVENT_STATUS_RGTR;
+    LONG_HK_data[1][34] = ATS1_SENTRAL_STATUS_RGTR;
+    LONG_HK_data[1][35] = ATS1_ERROR_RGTR;
+    LONG_HK_data[1][36] = ATS2_EVENT_STATUS_RGTR;
+    LONG_HK_data[1][37] = ATS2_SENTRAL_STATUS_RGTR;
+    LONG_HK_data[1][38] = ATS2_ERROR_RGTR;
                                                                 
-    BAE_HK_data[39] = BCN_FAIL_COUNT;
-    BAE_HK_data[40] = actual_data.power_mode;
-    BAE_HK_data[41] = HTR_CYCLE_COUNTER;//new to : implement
+    LONG_HK_data[1][39] = BCN_FAIL_COUNT;
+    LONG_HK_data[1][40] = actual_data.power_mode;
+    LONG_HK_data[1][41] = HTR_CYCLE_COUNTER;//new to : implement
                                                                 
-    BAE_HK_data[42] = BAE_I2C_COUNTER;
-    BAE_HK_data[43] = BAE_I2C_COUNTER>>8;
-    BAE_HK_data[44] = ACS_MAIN_COUNTER;
-    BAE_HK_data[45] = ACS_MAIN_COUNTER>>8;
-    BAE_HK_data[46] = BCN_TX_MAIN_COUNTER;
-    BAE_HK_data[47] = BCN_TX_MAIN_COUNTER>>8;
-    BAE_HK_data[48] = EPS_MAIN_COUNTER;
-    BAE_HK_data[49] = EPS_MAIN_COUNTER>>8;
-    BAE_HK_data[50] = actual_data.bit_data_acs_mm[0];
-    BAE_HK_data[51] = actual_data.bit_data_acs_mm[0]>>8;
-    BAE_HK_data[52] = actual_data.bit_data_acs_mm[1];
-    BAE_HK_data[53] = actual_data.bit_data_acs_mm[1]>>8;
-    BAE_HK_data[54] = actual_data.bit_data_acs_mm[2];
-    BAE_HK_data[55] = actual_data.bit_data_acs_mm[2]>>8;
+    LONG_HK_data[1][42] = BAE_I2C_COUNTER;
+    LONG_HK_data[1][43] = BAE_I2C_COUNTER>>8;
+    LONG_HK_data[1][44] = ACS_MAIN_COUNTER;
+    LONG_HK_data[1][45] = ACS_MAIN_COUNTER>>8;
+    LONG_HK_data[1][46] = BCN_TX_MAIN_COUNTER;
+    LONG_HK_data[1][47] = BCN_TX_MAIN_COUNTER>>8;
+    LONG_HK_data[1][48] = EPS_MAIN_COUNTER;
+    LONG_HK_data[1][49] = EPS_MAIN_COUNTER>>8;
+    LONG_HK_data[1][50] = actual_data.bit_data_acs_mm[0];
+    LONG_HK_data[1][51] = actual_data.bit_data_acs_mm[0]>>8;
+    LONG_HK_data[1][52] = actual_data.bit_data_acs_mm[1];
+    LONG_HK_data[1][53] = actual_data.bit_data_acs_mm[1]>>8;
+    LONG_HK_data[1][54] = actual_data.bit_data_acs_mm[2];
+    LONG_HK_data[1][55] = actual_data.bit_data_acs_mm[2]>>8;
                                                                 
-    BAE_HK_data[56] = actual_data.bit_data_acs_mg[0];
-    BAE_HK_data[57] = actual_data.bit_data_acs_mg[0]>>8;
-    BAE_HK_data[58] = actual_data.bit_data_acs_mg[1];
-    BAE_HK_data[59] = actual_data.bit_data_acs_mg[1]>>8;
-    BAE_HK_data[60] = actual_data.bit_data_acs_mg[2];
-    BAE_HK_data[61] = actual_data.bit_data_acs_mg[2]>>8;
+    LONG_HK_data[1][56] = actual_data.bit_data_acs_mg[0];
+    LONG_HK_data[1][57] = actual_data.bit_data_acs_mg[0]>>8;
+    LONG_HK_data[1][58] = actual_data.bit_data_acs_mg[1];
+    LONG_HK_data[1][59] = actual_data.bit_data_acs_mg[1]>>8;
+    LONG_HK_data[1][60] = actual_data.bit_data_acs_mg[2];
+    LONG_HK_data[1][61] = actual_data.bit_data_acs_mg[2]>>8;
                                                                 
-    BAE_HK_data[62] = BCN_TX_OC_FAULT;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_ENABLE;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_Z_ENABLE;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_OC_FAULT;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_Z_OC_FAULT;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | ACS_TR_XY_FAULT;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | EPS_CHARGER_FAULT;
-    BAE_HK_data[62] = (BAE_HK_data[62]<<1) | EPS_CHARGER_STATUS;
+    LONG_HK_data[1][62] = BCN_TX_OC_FAULT;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_ENABLE;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_ENABLE;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_OC_FAULT;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_Z_OC_FAULT;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | ACS_TR_XY_FAULT;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_FAULT;
+    LONG_HK_data[1][62] = (LONG_HK_data[1][62]<<1) | EPS_CHARGER_STATUS;
                                                                 
-    BAE_HK_data[63] = EPS_BATTERY_GAUGE_ALERT;
-    BAE_HK_data[63] = (BAE_HK_data[63]<<1) | CDMS_OC_FAULT;
-    BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_ATS1_OC_FAULT;
-    BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_ATS2_OC_FAULT;
-    BAE_HK_data[63] = (BAE_HK_data[63]<<1) | ACS_TR_Z_FAULT;
-    BAE_HK_data[63] = (BAE_HK_data[63]<<3);
+    LONG_HK_data[1][63] = EPS_BATTERY_GAUGE_ALERT;
+    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | CDMS_OC_FAULT;
+    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS1_OC_FAULT;
+    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_ATS2_OC_FAULT;
+    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<1) | ACS_TR_Z_FAULT;
+    LONG_HK_data[1][63] = (LONG_HK_data[1][63]<<3);
     //3 spare
                                                                 
-    BAE_HK_data[64] = ACS_TR_X_PWM;
-    BAE_HK_data[65] = ACS_TR_Y_PWM;
-    BAE_HK_data[66] = ACS_TR_Z_PWM;
+    LONG_HK_data[1][64] = ACS_TR_X_PWM;
+    LONG_HK_data[1][65] = ACS_TR_Y_PWM;
+    LONG_HK_data[1][66] = ACS_TR_Z_PWM;
     //spare byte
     //assigned it to counter HTR_CYCLE_COUNTER
                                                                 
     //assign it b_scz_angle
-    BAE_HK_data[67] = 0x00; 
-    BAE_HK_data[67] = (BAE_HK_data[67]<<1) | alarmmode;
-    BAE_HK_data[67] = (BAE_HK_data[67]<<1) | controlmode_mms;
-    BAE_HK_data[67] = (BAE_HK_data[67]<<2);
+    LONG_HK_data[1][67] = 0x00; 
+    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | alarmmode;
+    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<1) | controlmode_mms;
+    LONG_HK_data[1][67] = (LONG_HK_data[1][67]<<2);
     //2 bit spare
                                                                 
     for(int i=0;i<9;i++)
         {
-            BAE_HK_data[68+i] =  invjm_mms[i];
-            BAE_HK_data[81+i] =  jm_mms[i];
+            LONG_HK_data[1][68+i] =  invjm_mms[i];
+            LONG_HK_data[1][81+i] =  jm_mms[i];
         }
                                                                 
     for(int i=0;i<3;i++)
-        BAE_HK_data[77+i] = bb_mms[i];
+        LONG_HK_data[1][77+i] = bb_mms[i];
                                                                 
-    BAE_HK_data[80] = singularity_flag_mms;                      
+    LONG_HK_data[1][80] = singularity_flag_mms;                      
                                                                 
     for(int i=0;i<16;i++)
         {
-            BAE_HK_data[90+i] = quant_data.voltage_quant[i];
-            BAE_HK_data[106+i] = quant_data.current_quant[i];
+            LONG_HK_data[1][90+i] = quant_data.voltage_quant[i];
+            LONG_HK_data[1][106+i] = quant_data.current_quant[i];
         }
                                                                 
-    BAE_HK_data[122] = quant_data.Batt_voltage_quant;
-    BAE_HK_data[123] = quant_data.BAE_temp_quant;
-    BAE_HK_data[124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
-    BAE_HK_data[125] = quant_data.Batt_temp_quant[0];
-    BAE_HK_data[126] = quant_data.Batt_temp_quant[1];
-    BAE_HK_data[127] = BCN_TMP;
-    BAE_HK_data[128] = 0x00;
-    BAE_HK_data[129] = 0x00;
-    BAE_HK_data[130] = 0x00;
-    BAE_HK_data[131] = 0x00;
+    LONG_HK_data[1][122] = quant_data.Batt_voltage_quant;
+    LONG_HK_data[1][123] = quant_data.BAE_temp_quant;
+    LONG_HK_data[1][124] = (uint8_t)(actual_data.Batt_gauge_actual[1]);
+    LONG_HK_data[1][125] = quant_data.Batt_temp_quant[0];
+    LONG_HK_data[1][126] = quant_data.Batt_temp_quant[1];
+    LONG_HK_data[1][127] = BCN_TMP;
+    LONG_HK_data[1][128] = 0x00;
+    LONG_HK_data[1][129] = 0x00;
+    LONG_HK_data[1][130] = 0x00;
+    LONG_HK_data[1][131] = 0x00;
     uint16_t crc = crc_hk_data();
-    BAE_HK_data[132] = (uint8_t)(crc >> 8);
-    BAE_HK_data[133] = crc;
+    LONG_HK_data[1][132] = (uint8_t)(crc >> 8);
+    LONG_HK_data[1][133] = crc;
 
 //===================================================
 /* can be retrived from the earlier code (function)*/   
@@ -810,13 +820,17 @@
         vAlertMinMaxThreshold();//set min, max value of Valrt register
         vResetThresholdSet();//set threshold voltage for reset
         vResetAlertEnabled(true);//enable alert on reset for V < Vreset
+        int ack = write(REG_STATUS, read(REG_STATUS) & 0xFEFF);   //Clearing Reset Indicator bit
+        if( ack == 0 ) printf("BTG init success\n\r");
+        else printf("BTG init fail ack = %d\n\r", ack);
+        write(REG_STATUS, read(REG_STATUS) & 0xFEFF);   //Clearing Reset Indicator bit
 }
 
-void FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4])
+int FCTN_BATTERYGAUGE_MAIN(float Battery_parameters[4], float temp)
 {
 ////        printf("\n\r battery gauge \n");
 
-        float temp=30;    //=Battery_temp  (from temp sensor on battery board)       //value of battery temperature in C currently given a dummy value. Should be updated everytime.
+        //float temp=30;    //=Battery_temp  (from temp sensor on battery board)       //value of battery temperature in C currently given a dummy value. Should be updated everytime.
         tempCompensation(temp);
     
         
@@ -835,9 +849,83 @@
             clearAlert();//clear alert
             clearAlertFlags();//clear all alert flags
         }
+        if( soc() == 200) return 0;
+        else return 1; 
         
 }
 
+void tempCompensation(float temp)
+{
+    //Calculate the new RCOMP value
+    char rcomp;
+    if (temp > 20.0) {
+        rcomp = RCOMP0 + (temp - 20.0) * -0.5;
+    } else {
+        rcomp = RCOMP0 + (temp - 20.0) * -5.0;
+    }
+ 
+    //Update the RCOMP value
+    compensation(rcomp);
+}
+
+void compensation(char rcomp)
+{
+    //Read the current 16-bit register value
+    unsigned short value = read(REG_CONFIG);
+ 
+    //Update the register value
+    value &= 0x00FF;
+    value |= rcomp << 8;
+ 
+    //Write the value back out
+    write(REG_CONFIG, value);
+}
+
+int write(char reg, unsigned short data)
+    {
+        //Create a temporary buffer
+        char buff[3];
+   
+        //Load the register address and 16-bit data
+        buff[0] = reg;
+        buff[1] = data >> 8;
+        buff[2] = data;
+        
+        int flag = m_I2C.write(m_ADDR, buff, 3);    //Write the data and return ack
+        
+        if( flag != 0 )
+        {
+            flag = m_I2C.write(m_ADDR, buff, 3);    //Write the data and return ack
+            if( data != read(reg) )                 //Verify written data
+                EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
+        }
+        
+        return flag;
+    }
+   
+unsigned short read(char reg)
+    {
+        int flag = 1;
+        char buff[2];       //Create a temporary buffer
+ 
+        //Select the register
+        m_I2C.write(m_ADDR, &reg, 1, true);
+        //Read the 16-bit register
+        flag = m_I2C.read(m_ADDR, buff, 2);
+        
+        if( flag )
+        {
+            m_I2C.write(m_ADDR, &reg, 1, true);
+            flag = m_I2C.read(m_ADDR, buff, 2);
+            if( flag )
+                EPS_BATTERY_GAUGE_STATUS = 0;           //clear EPS_BATTERY_GAUGE_STATUS 
+        }
+ 
+        //Return the combined 16-bit value
+        return (buff[0] << 8) | buff[1];
+    } 
+/*
+
 unsigned short read(char reg)
     {
          
@@ -873,12 +961,14 @@
     }
    
  
- 
+*/ 
     // Command the MAX17049 to perform a power-on reset
     void reset()
     {
         //Write the POR command
         write(REG_CMD, 0x5400);
+        //Re-initialise gauge
+        FCTN_BATTERYGAUGE_INIT();
     }
     
     // Command the MAX17049 to perform a QuickStart
@@ -926,7 +1016,7 @@
         write(REG_CONFIG, value);
 } 
 
-
+/*
 void compensation(char rcomp)
 {
     //Read the current 16-bit register value
@@ -940,7 +1030,7 @@
     write(REG_CONFIG, value);
 }
 
- 
+
 void tempCompensation(float temp)
 {
     //Calculate the new RCOMP value
@@ -955,6 +1045,7 @@
     compensation(rcomp);
 }
 
+*/
   // Command the MAX17049 to de-assert the ALRT pin
     void clearAlert()
     {
@@ -1124,7 +1215,7 @@
     //HS=0;
     spi_bt.format(8,3);
     spi_bt.frequency(1000000);
-    EPS_BATTERY_TEMP_STATUS = 1;
+    EPS_BTRY_TMP_STATUS = 1;
 } 
 
 void FCTN_BATT_TEMP_SENSOR_MAIN(float temp[2])