for frequency correction testing

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Files at this revision

API Documentation at this revision

Comitter:
chaithanyarss
Date:
Mon Sep 05 11:25:33 2016 +0000
Parent:
302:701ac67649b7
Child:
304:7cc4fe191a54
Child:
306:82b7d137db31
Child:
316:dd699de634b7
Commit message:
Merged code

Changed in this revision

CDMS_HK.h Show annotated file Show diff for this revision Revisions of this file
CDMS_PL.h Show annotated file Show diff for this revision Revisions of this file
DefinitionsAndGlobals.h Show annotated file Show diff for this revision Revisions of this file
FMS_all.h Show annotated file Show diff for this revision Revisions of this file
Structures.h Show annotated file Show diff for this revision Revisions of this file
ThreadsAndFunctions.h Show annotated file Show diff for this revision Revisions of this file
cdms_sd.h Show annotated file Show diff for this revision Revisions of this file
i2c.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/CDMS_HK.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/CDMS_HK.h	Mon Sep 05 11:25:33 2016 +0000
@@ -20,8 +20,14 @@
 
 DigitalOut SelectLinec3 (PIN79); // MSB of Select Lines
 DigitalOut SelectLinec2 (PIN78);
+DigitalOut SelectLinec1 (PIN76);
+DigitalOut SelectLinec0 (PIN77); // LSB of Select Lines
+
+/*
+Before SBC. To be restored in FM model
 DigitalOut SelectLinec1 (PIN77);
 DigitalOut SelectLinec0 (PIN76); // LSB of Select Lines
+*/
 
 Convolution CDMS_HEALTH;
 Convolution BAE_HEALTH;
@@ -57,16 +63,16 @@
         FCTN_CDMS_PL_MAIN((void const *)NULL);
         hk_count = 2;
     }
-    gPC.printf("\n\nEntering HK thread\n");
+    gPC.printf("\n\rEntering HK thread\n");
 
     if(EN_CDMS_HK == 0x00)
     continue;
     CDMS_HK_MAIN_STATUS = 0x01;
     CDMS_HK_MAIN_COUNTER++;
 
-    FCTN_CDMS_HK();//collects temperatures
+    FCTN_CDMS_HK();         //collects temperatures
     RSSI_volatge = COMRX_RSSI_volatge.read() * 3.3;//to be checked
-    gPC.printf("\n%f\n",RSSI_volatge);
+    gPC.printf("\n\rRSSI voltage  = %f",RSSI_volatge);
     VERIFY_COMRX();
     VERIFY_RTC();
     HANDLE_HW_FAULTS();
@@ -117,10 +123,12 @@
     CDMS_HK_FRAME[1] = FSC_CURRENT[4]+1;
     CDMS_HK_FRAME[2] = (FSC_CURRENT[4]+1) >> 8;
     CDMS_HK_FRAME[3] = (FSC_CURRENT[4]+1) >> 16;
-
-    for(int i = 0; i<128; i++)                       /*Adding actual CDMS Health data to TM frame*/
-        CDMS_HK_FRAME[4+i] = CDMS_HEALTH_DATA[i];
-
+    gPC.printf("\n");
+    for(int i = 0; i<128; i++){                       /*Adding actual CDMS Health data to TM frame*/
+        CDMS_HK_FRAME[i+4] = CDMS_HEALTH_DATA[i];
+        gPC.printf("%02x",CDMS_HEALTH_DATA[i]);
+    }
+    gPC.printf("\n");
     uint16_t crc = crc16_gen(CDMS_HK_FRAME,132);      /*Adding CRC to TM frame*/
     CDMS_HK_FRAME[133] = crc;
     CDMS_HK_FRAME[132] = crc >> 8;
@@ -249,7 +257,7 @@
 void minMaxHkData()
 {
     if(firstCount==true) {
-        for (int i = 0; i < 16; ++i) {
+        for (int i = 4; i < 16; ++i) {
             min_max_data.temp_min[i] = quant_data.temp_quant[i];
             min_max_data.temp_max[i] = quant_data.temp_quant[i];
         }
@@ -257,7 +265,7 @@
         min_max_data.CDMS_temp_min=quant_data.CDMS_temp_quant;
         min_max_data.CDMS_temp_max=quant_data.CDMS_temp_quant;
     } else {
-        for (int i = 0; i < 16; ++i) {
+        for (int i = 4; i < 16; ++i) {
             min_max_data.temp_min[i] = saveMin(min_max_data.temp_min[i],quant_data.temp_quant[i]);
             min_max_data.temp_max[i] = saveMax(min_max_data.temp_max[i],quant_data.temp_quant[i]);
         }
@@ -278,7 +286,7 @@
     SelectLinec1=0;
     SelectLinec2=0;
     SelectLinec3=0;
-
+    gPC.printf("\r%d %d %d %d\n",SelectLinec3.read(),SelectLinec2.read(),SelectLinec1.read(),SelectLinec0.read());
     for(Iteration=0; Iteration<16; Iteration++) {
 
         actual_data.temp_actual[Iteration]=TempInput.read();
@@ -290,35 +298,38 @@
             SelectLinec2=!(SelectLinec2);
         if(Iteration%8==7)
             SelectLinec3=!(SelectLinec3);
+        gPC.printf("\r%d %d %d %d\n",SelectLinec3.read(),SelectLinec2.read(),SelectLinec1.read(),SelectLinec0.read());
     }
 
     actual_data.CDMS_temp_actual=(-90.7*3.3*CDMS_temp_sensor.read())+190.1543;
-
+    
+    gPC.printf("\rRaw Temp = %f\n",actual_data.temp_actual[15]*3.3);
+    
     for(Iteration=0; Iteration<16; Iteration++) {
 
-        if(Iteration<14) {
-            actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3;
-            resistance=24000*actual_data.temp_actual[Iteration]/(3.3-actual_data.temp_actual[Iteration]);
+        if(Iteration<4)
+            actual_data.temp_actual[Iteration]=actual_data.temp_actual[Iteration]*3.3*2;
             
-            if(actual_data.temp_actual[Iteration]>1.47) {
+        else if(Iteration<14){
+            resistance=10000*actual_data.temp_actual[Iteration]*3.3/(3.3-actual_data.temp_actual[Iteration]*3.3);
+           
+            if(actual_data.temp_actual[Iteration]*3.3<1.47)      //Document says 1.378 .Pls Check
                 actual_data.temp_actual[Iteration]=3694/log(24.032242*resistance);
-            } else {
-
+            else
                 actual_data.temp_actual[Iteration]=3365.4/log(7.60573*resistance);
-            }
-        } else
+        }
+        else
             actual_data.temp_actual[Iteration]=(-90.7*3.3*actual_data.temp_actual[Iteration])+190.1543;
     }
-
     for(Iteration=0; Iteration<16; Iteration++) {
 
-        if(Iteration<14) {
-
+        if(Iteration<4)
+            quant_data.temp_quant[Iteration]=actual_data.temp_actual[Iteration] * 10;
+        else if(Iteration<14)
             quant_data.temp_quant[Iteration]=quantiz(tstart_thermistor,tstep_thermistor,actual_data.temp_actual[Iteration]);
-        } else
+        else
             quant_data.temp_quant[Iteration]=quantiz(tstart,tstep,actual_data.temp_actual[Iteration]);
     }
-
     quant_data.CDMS_temp_quant=quantiz(tstart,tstep,actual_data.CDMS_temp_actual);
 
     minMaxHkData();
@@ -327,34 +338,34 @@
 void FUNC_CDMS_GPIO_STATUS()       //Polls the status of Input GPIO PINS
 {
     //V_A_PGOOD //TRZ EN
-    GPIO_STATUS=(V_A_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<15)):(GPIO_STATUS)&(~((uint16_t)(0x1<<15)));
+    GPIO_STATUS=(V_A_PGOOD)?(GPIO_STATUS)|((uint16_t)(0x1<<15)):(GPIO_STATUS)&(~((uint16_t)(0x1<<15)));
     //V_B_PGOOD_1 //3V3BPGOOD //$
-    GPIO_STATUS=(V_B_PGOOD_1)?(GPIO_STATUS)||((uint16_t)(0x1<<14)):(GPIO_STATUS)&(~((uint16_t)(0x1<<14)));
+    GPIO_STATUS=(V_B_PGOOD_1)?(GPIO_STATUS)|((uint16_t)(0x1<<14)):(GPIO_STATUS)&(~((uint16_t)(0x1<<14)));
     //V_B_PGOOD_2 //3V3BEN //$
-    GPIO_STATUS=(V_B_PGOOD_2)?(GPIO_STATUS)||((uint16_t)(0x1<<13)):(GPIO_STATUS)&(~((uint16_t)(0x1<<13)));
+    GPIO_STATUS=(V_B_PGOOD_2)?(GPIO_STATUS)|((uint16_t)(0x1<<13)):(GPIO_STATUS)&(~((uint16_t)(0x1<<13)));
     //V_C_PGOOD //3V3CPGOOD //$
-    GPIO_STATUS=(V_C_PGOOD)?(GPIO_STATUS)||((uint16_t)(0x1<<12)):(GPIO_STATUS)&(~((uint16_t)(0x1<<12)));
+    GPIO_STATUS=(V_C_PGOOD)?(GPIO_STATUS)|((uint16_t)(0x1<<12)):(GPIO_STATUS)&(~((uint16_t)(0x1<<12)));
     //COMRX_OC_FAULT //$
-    GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11)));
+    GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11)));
     // COMTX_OC_FAULT //$
-    GPIO_STATUS=(COM_TX_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10)));
+    GPIO_STATUS=(COM_TX_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10)));
     //BAE_OC_FAULT //$
-    GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9)));
+    GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9)));
     //PL_GPIO_1_STATUS //$
-    GPIO_STATUS=(PL_GPIO_1_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8)));
+    GPIO_STATUS=(PL_GPIO_1_STATUS)?(GPIO_STATUS)|((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8)));
     //PL_GPIO_2_STATUS //$
-    GPIO_STATUS=(PL_GPIO_2_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<7)):(GPIO_STATUS)&(~((uint16_t)(0x1<<7)));
+    GPIO_STATUS=(PL_GPIO_2_STATUS)?(GPIO_STATUS)|((uint16_t)(0x1<<7)):(GPIO_STATUS)&(~((uint16_t)(0x1<<7)));
     //PL_GPIO_3_STATUS //$
-    GPIO_STATUS=(PL_GPIO_3_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<6)):(GPIO_STATUS)&(~((uint16_t)(0x1<<6)));
+    GPIO_STATUS=(PL_GPIO_3_STATUS)?(GPIO_STATUS)|((uint16_t)(0x1<<6)):(GPIO_STATUS)&(~((uint16_t)(0x1<<6)));
     //PL_BEE_SW_OC_FAULT //to be verified
-    GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5)));
+    GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5)));
     //PL_EPS_LATCH_SW_OC_FAULT // to be verified
-    GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4)));
+    GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4)));
     //EPS_V_C_EN_STATUS
-    GPIO_STATUS=(COM_RX_CNTRL)?(GPIO_STATUS)||((uint16_t)(0x1<<3)):(GPIO_STATUS)&(~((uint16_t)(0x1<<3)));
+    GPIO_STATUS=(COM_RX_CNTRL)?(GPIO_STATUS)|((uint16_t)(0x1<<3)):(GPIO_STATUS)&(~((uint16_t)(0x1<<3)));
     //EPS_V_D_EN_STATUS
-    GPIO_STATUS=(COM_TX_CNTRL)?(GPIO_STATUS)||((uint16_t)(0x1<<2)):(GPIO_STATUS)&(~((uint16_t)(0x1<<2)));
-    
+    GPIO_STATUS=(COM_TX_CNTRL)?(GPIO_STATUS)|((uint16_t)(0x1<<2)):(GPIO_STATUS)&(~((uint16_t)(0x1<<2)));
+    gPC.printf("%04x\n",GPIO_STATUS);
 }
 
 void VERIFY_COMRX()
@@ -500,7 +511,10 @@
 
 void COLLECT_CDMS_RAM()
 {
-    CDMS_RAM[0] = ((PL_INIT_STATUS<<7)&0x80)|((PL_MAIN_status<<6)&0x40)|((PL_LOW_POWER<<5)&0x20)|((PL_STATE<<3)&0x18)|(PL_STATUS&0x07);
+    CDMS_RAM[0] = ((PL_INIT_STATUS<<7)&0x80)|((PL_MAIN_status<<6)&0x40)|((PL_LOW_power<<5)&0x20)|((PL_STATE<<3)&0x18)|(PL_STATUS&0x07);
+    gPC.printf("\n\rPL_STATUS : %d",PL_STATUS);
+    gPC.printf("\n\rPL_STATE : %d",PL_STATE);
+    gPC.printf("\n\rpl bits = %02x\n",CDMS_RAM[0]);
     CDMS_RAM[1] = ((PL_RCV_SC_DATA_STATUS<<7)&0x80)|((COM_SESSION<<6)&0x40)|((COM_RX<<5)&0x20)|((RF_SW_STATUS<<4)&0x10)|((COM_TX<<3)&0x08)|((COM_TX_STATUS<<2)&0x04)|((COM_MNG_TMTC<<1)&0x02)|(EN_CDMS_HK&0x01);
     CDMS_RAM[2] = ((EN_PL<<7)&0x80)|((EN_RCV_SC<<6)&0x40)|((CDMS_INIT_STATUS<<5)&0x20)|((CDMS_HK_MAIN_STATUS<<4)&0x10)|((CDMS_HK_STATUS<<2)&0x0C)|((COM_RX_STATUS<<1)&0x02)|(CDMS_RTC_BL&0x01);
     CDMS_RAM[3] = CDMS_I2C_ERR_SPEED_COUNTER >> 8;
@@ -520,37 +534,36 @@
     CDMS_RAM[17] = SD_LIB_WRITES >> 8;
     CDMS_RAM[18] = SD_LIB_WRITES;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[19+i] = TIME_LATEST_RTC >> ((3-i)*8);
+        CDMS_RAM[19+i] = TIME_LATEST_RTC >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[23+i] = TIME_LATEST_I2C_BAE >> ((3-i)*8);
+        CDMS_RAM[23+i] = TIME_LATEST_I2C_BAE >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[27+i] = TIME_LATEST_I2C_SPEED >> ((3-i)*8);
+        CDMS_RAM[27+i] = TIME_LATEST_I2C_SPEED >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[31+i] = TIME_LATEST_SD_WR >> ((3-i)*8);
+        CDMS_RAM[31+i] = TIME_LATEST_SD_WR >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[35+i] = TIME_LATEST_SD_RD >> ((3-i)*8);
+        CDMS_RAM[35+i] = TIME_LATEST_SD_RD >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[39+i] = TIME_LATEST_SPI_SPEED >> ((3-i)*8);
+        CDMS_RAM[39+i] = TIME_LATEST_SPI_SPEED >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[43+i] = FSC_CURRENT[1] >> ((3-i)*8);
+        CDMS_RAM[43+i] = FSC_CURRENT[1] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[47+i] = FSC_LAST[1] >> ((3-i)*8);
+        CDMS_RAM[47+i] = FSC_LAST[1] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[51+i] = FSC_CURRENT[2] >> ((3-i)*8);
+        CDMS_RAM[51+i] = FSC_CURRENT[2] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[55+i] = FSC_LAST[2] >> ((3-i)*8);
+        CDMS_RAM[55+i] = FSC_LAST[2] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[59+i] = FSC_CURRENT[3] >> ((3-i)*8);
+        CDMS_RAM[59+i] = FSC_CURRENT[3] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[63+i] = FSC_LAST[3] >> ((3-i)*8);
+        CDMS_RAM[63+i] = FSC_LAST[3] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[67+i] = FSC_CURRENT[4] >> ((3-i)*8);
+        CDMS_RAM[67+i] = FSC_CURRENT[4] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[71+i] = FSC_LAST[4] >> ((3-i)*8);
+        CDMS_RAM[71+i] = FSC_LAST[4] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[75+i] = FSC_CURRENT[5] >> ((3-i)*8);
+        CDMS_RAM[75+i] = FSC_CURRENT[5] >> (3-i)*8;
     for(int i = 0; i<4; i++)
-        CDMS_RAM[79+i] = FSC_LAST[5] >> ((3-i)*8);
+        CDMS_RAM[79+i] = FSC_LAST[5] >> (3-i)*8;
     CDMS_RAM[83] = 0x00;
-    gPC.printf("%d %d %d %d %d\n",FSC_CURRENT[1],FSC_CURRENT[2],FSC_CURRENT[3],FSC_CURRENT[4],FSC_CURRENT[5]);
 }
\ No newline at end of file
--- a/CDMS_PL.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/CDMS_PL.h	Mon Sep 05 11:25:33 2016 +0000
@@ -199,6 +199,7 @@
                     gPC.printf("\n\rACK_CODE = 0x%02X",temp);
                 pl_main_flag  = pl_main_flag & (~PL_DISABLED);
                 pl_main_flag |= PL_SUCCESS_I2C;
+                PL_STATUS = 0x04;
                 pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
                 pl_block[pl_next_index-1] |= EXECUTED;
             }
@@ -208,6 +209,7 @@
                 //gPC.printf("\n\rACK_CODE = 0x%02X",temp);
                 pl_main_flag  = pl_main_flag & (~PL_DISABLED);
                 pl_main_flag |= PL_ERR_I2C;
+                PL_STATUS = 0x05;
                 pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
                 pl_block[pl_next_index-1] |= RETRY;   
             }
@@ -217,6 +219,7 @@
             gPC.printf("\n\rShort_TM CRC failed");
             pl_main_flag  = pl_main_flag & (~PL_DISABLED);
             pl_main_flag |= PL_ERR_I2C;
+            PL_STATUS = 0x05;
             pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
             pl_block[pl_next_index-1] |= RETRY;
         }
@@ -241,6 +244,7 @@
                     gPC.printf("\n\rACK_CODE = 0x%02X",temp);
                 pl_main_flag  = pl_main_flag & (~PL_DISABLED);
                 pl_main_flag |= PL_SUCCESS_I2C;
+                PL_STATUS = 0x04;
                 pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
                 pl_block[pl_next_index-1] |= EXECUTED;
             }
@@ -249,6 +253,7 @@
                 gPC.printf("\n\rACK_CODE failure (0x%02X)",temp);
                 pl_main_flag  = pl_main_flag & (~PL_DISABLED);
                 pl_main_flag |= PL_ERR_I2C;
+                PL_STATUS = 0x05;
                 pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
                 pl_block[pl_next_index-1] |= RETRY;   
             }   
@@ -257,7 +262,8 @@
         {
             gPC.printf("\n\rLong_TM CRC failed");
             pl_main_flag  = pl_main_flag & (~PL_DISABLED);
-            pl_main_flag |= PL_ERR_I2C;        
+            pl_main_flag |= PL_ERR_I2C;
+            PL_STATUS = 0x05;     
             pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
             pl_block[pl_next_index-1] |= RETRY;   
         }
@@ -303,8 +309,10 @@
     return;
     uint8_t temp[3];
     pl_main_flag|=PL_MAIN_STATUS;                       //Setting PL_MAIN_STATUS
+    PL_MAIN_status = 1;
     PL_MAIN_COUNTER++;                                  
     pl_main_flag&=~(PL_LOW_POWER);                      //Clearing PL_LOW_POWER
+    PL_LOW_power = 0;
     temp[0] = (pl_main_flag&STATE_SCIENCE)>>2;
     temp[1] = (pl_main_flag&PL_DISABLED)>>4;
     temp[2] = (PL_PREV_STATE & STATE_SCIENCE)>>2;
@@ -315,7 +323,9 @@
         gPC.printf("\n\rDevice Disabled or OC Fault");
         pl_main_flag  = pl_main_flag & (~PL_DISABLED);
         pl_main_flag |= PL_DISABLED;                        //setting PL_STATUS as PL_DISABLED
+        PL_STATUS = 0x07;
         pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);    //Clearing pl_main status
+        PL_MAIN_status = 0;
         print_exit(temp);
         return;
     }
@@ -355,6 +365,7 @@
         {
             pl_main_flag  = pl_main_flag & (~STATE_SCIENCE);
             pl_main_flag |= STATE_HIBERNATE;
+            PL_STATE = 0x02;
         } 
         else
         {                        
@@ -386,27 +397,32 @@
         {            
             pl_main_flag  = pl_main_flag & (~STATE_SCIENCE);
             pl_main_flag |= STATE_OFF;
+            PL_STATE = 0x00;
         }
         if((pl_block[pl_next_index-1] & 0x0000000C)==4)
         {
             pl_main_flag  = pl_main_flag & (~STATE_SCIENCE);
             pl_main_flag |= STATE_STANDBY;
+            PL_STATE = 0x01;
         }
         if((pl_block[pl_next_index-1] & 0x0000000C)==8)
         {
             pl_main_flag  = pl_main_flag & (~STATE_SCIENCE);
             pl_main_flag |= STATE_HIBERNATE;
+            PL_STATE = 0x02;
         }
         if((pl_block[pl_next_index-1] & 0x0000000C)==12)
         {
             pl_main_flag  = pl_main_flag & (~STATE_SCIENCE);
             pl_main_flag |= STATE_SCIENCE;
+            PL_STATE = 0x03;
         }
     }
     else if((pl_block[pl_next_index-1] & UNEXECUTED)==1)
     {
         gPC.printf("\n\rElapsed block is executed");
         pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS);                  //Clearing pl_main status
+        PL_MAIN_status = 0;
         print_exit(temp);
         return;   
     }      
@@ -414,6 +430,7 @@
     {
         gPC.printf("\n\rEmpty Schedule Block");        
         pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS);                  //Clearing pl_main status
+        PL_MAIN_status = 0;
         print_exit(temp);
         return;
     }
@@ -432,10 +449,12 @@
                 PL_STATUS=0;    
             }           
             pl_main_flag  = pl_main_flag & (~PL_DISABLED);
-            pl_main_flag |= PL_OFF;    
+            pl_main_flag |= PL_OFF;
+            PL_STATUS = 0x00;
             pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
             pl_block[pl_next_index-1] |= EXECUTED;                              
             pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS);                    //Clearing PL_MAIN_STATUS
+            PL_MAIN_status = 0;
             print_processed_block(pl_next_index-1);
             print_exit(temp);
             return;
@@ -456,8 +475,10 @@
             {
                 pl_main_flag = pl_main_flag & (~PL_DISABLED);
                 pl_main_flag |= PL_STANDBY; 
+                PL_STATUS = 0x01;
             }        
             pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS 
+            PL_MAIN_status = 0;
             print_processed_block(pl_next_index-1);
             print_exit(temp);
             return;                                                   
@@ -480,12 +501,14 @@
                 if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C)
                 {
                     pl_main_flag = pl_main_flag & (~PL_DISABLED);
-                    pl_main_flag |= PL_HIBERNATE; 
+                    pl_main_flag |= PL_HIBERNATE;
+                    PL_STATUS = 0x02;
                 }
             }
             else 
             {
                 pl_main_flag |= PL_LOW_POWER;
+                PL_LOW_power = 1;
                 if(PL_STATUS==0) 
                 {
                     gPC.printf("\n\rPowering on PL_BEE");
@@ -499,14 +522,17 @@
                 {
                     pl_main_flag = pl_main_flag & (~PL_DISABLED);
                     pl_main_flag |= PL_STANDBY; 
+                    PL_STATUS = 0x01;
                 }        
                 pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS 
+                PL_MAIN_status = 0;
                 print_processed_block(pl_next_index-1);
                 print_exit(temp);
                 return;
                                                                                 //////DELETE THE TM AND TC LATER
             }            
             pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS
+            PL_MAIN_status = 0;
             print_processed_block(pl_next_index-1);
             print_exit(temp);
             return;
@@ -531,8 +557,10 @@
                 {
                     pl_main_flag = pl_main_flag & (~PL_DISABLED);
                     pl_main_flag |= PL_SCIENCE; 
+                    PL_STATUS = 0x03;
                 }
                 pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS
+                PL_MAIN_status = 0;
                 print_processed_block(pl_next_index-1);
                 print_exit(temp);
                 return;
@@ -541,6 +569,7 @@
             {   
                 gPC.printf("\n\rPower level = 2,3 or NA");
                 pl_main_flag |= PL_LOW_POWER;
+                PL_LOW_power = 1;
                 if(POWER_LEVEL==2 || POWER_LEVEL==3 || POWER_LEVEL==0)
                 {                
                     if(PL_STATUS==0) 
@@ -556,11 +585,13 @@
                     {
                         pl_main_flag = pl_main_flag & (~PL_DISABLED);
                         pl_main_flag |= PL_HIBERNATE; 
+                        PL_STATUS = 0x02;
                     }
                 }
                 else 
                 {
                     pl_main_flag |= PL_LOW_POWER;
+                    PL_LOW_power = 1;
                     if(PL_STATUS==0) 
                     {
                         gPC.printf("\n\rPowering on PL_BEE");
@@ -574,14 +605,17 @@
                     {
                         pl_main_flag = pl_main_flag & (~PL_DISABLED);
                         pl_main_flag |= PL_STANDBY; 
+                        PL_STATUS = 0x01;
                     }        
                     pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS 
+                    PL_MAIN_status = 0;
                     print_processed_block(pl_next_index-1);
                     print_exit(temp);
                     return;                                               
                                                                                     //////DELETE THE TM AND TC LATER
                 }            
                 pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS
+                PL_MAIN_status = 0;
                 print_processed_block(pl_next_index-1);
                 print_exit(temp);
                 return;
@@ -593,9 +627,11 @@
             gPC.printf("\n\rInvalid PL_STATE in block at index = %d",pl_next_index-1);
             pl_main_flag  = pl_main_flag & (~PL_DISABLED);
             pl_main_flag |= PL_INVALID_STATE;
+            PL_STATUS = 0x06;
             pl_block[pl_next_index-1] &= (~UNEXECUTED);                         //changing exec_status                    
             pl_block[pl_next_index-1] |= EXECUTED;
             pl_main_flag  = pl_main_flag & (~PL_MAIN_STATUS);               //Clearing PL_MAIN_STATUS
+            PL_MAIN_status = 0;
             print_processed_block(pl_next_index-1);
             print_exit(temp);
             return;
--- a/DefinitionsAndGlobals.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/DefinitionsAndGlobals.h	Mon Sep 05 11:25:33 2016 +0000
@@ -1,7 +1,7 @@
 ///639+................................++.300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002025555.
 // **************DEFINITIONS*********************
 
-#define dma 0
+#define dma 1
 
 // COM_RX
     #define RX_TIMEOUT_LIMIT 0.5
@@ -253,7 +253,7 @@
 // CDMS HK
 uint8_t CDMS_STANDBY;
 uint8_t CDMS_HEALTH_DATA[128];
-uint8_t CDMS_RAM[59];
+uint8_t CDMS_RAM[59] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 uint16_t GPIO_STATUS;
 uint8_t CDMS_HK_MAIN_STATUS;    
 uint8_t COMRX_STATUS;
@@ -332,7 +332,7 @@
 //CDMS RAM parameters
 uint8_t PL_INIT_STATUS = 0;
 uint8_t PL_MAIN_status;
-uint8_t PL_LOW_POWER;
+uint8_t PL_LOW_power;
 uint8_t PL_STATE;
 uint8_t PL_RCV_SC_DATA_STATUS = 0;
 uint8_t COM_SESSION;
--- a/FMS_all.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/FMS_all.h	Mon Sep 05 11:25:33 2016 +0000
@@ -339,5 +339,8 @@
 void FCTN_CDMS_RD_L_RAM(Base_tm *tm_pointer)
 {
     for(int i=0;i<128;i++)
-    tm_pointer->TM_string[i+4] = CDMS_HEALTH_DATA[i];
+    {
+        //tm_pointer->TM_string[i] = 0;
+        tm_pointer->TM_string[i+4] = CDMS_HEALTH_DATA[i];
+    }
 }
\ No newline at end of file
--- a/Structures.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/Structures.h	Mon Sep 05 11:25:33 2016 +0000
@@ -144,8 +144,8 @@
 
 // CDMS HK
 
-#define tstart -40
-#define tstep   1            //to be finalized by thermal team
+#define tstart -50
+#define tstep  1           //to be finalized by thermal team
 #define tstart_thermistor -40
 #define tstep_thermistor 1
 
--- a/ThreadsAndFunctions.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/ThreadsAndFunctions.h	Mon Sep 05 11:25:33 2016 +0000
@@ -14,7 +14,7 @@
     gPAY_SPI->format(8,0);
     gPC.printf("\n\rTest...........................");
     gPAY_SPI->bulkRead_init(gPAYLOAD_BUFFER, PAYLOAD_BUFFER_LENGTH, &payload_isr_fun);
-    //AY_SPI->bulkRead_start();
+    gPAY_SPI->bulkRead_start();
     //AY_SPI->bulkRead_pause();
     //AY_SPI->bulkRead_resume(&payload_isr_fun);
     while(true){
@@ -31,6 +31,7 @@
         wait(2);/*timeout to be decided*/
         if(dma)
         {
+            PL_RCV_SC_DATA_COUNTER++;
             gPAY_SPI->bulkRead_start();
             //gPAY_SPI->bulkRead_pause();
             //gPAY_SPI->bulkRead_resume(&payload_isr_fun);
--- a/cdms_sd.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/cdms_sd.h	Mon Sep 05 11:25:33 2016 +0000
@@ -30,7 +30,7 @@
 uint32_t SD_HK_ARCH_LAST= 5000;
 uint32_t LOG_FIRST =5001;
 uint32_t LOG_LAST=6000;
-uint32_t SD_MNG_SECT=7000;
+uint32_t SD_MNG_SECT=8000;
 
 extern uint8_t SD_INIT_FLAGS;
 
@@ -647,6 +647,7 @@
 {
     // set write address for single block (CMD24)
     if (cmd(24, block_number * cdv) != 0) {
+        CDMS_WR_SD_FAULT_COUNTER++;
         return 1;
     }
     
@@ -679,6 +680,7 @@
     if ((spi.write(0xFF) & 0x1F) != 0x05) {
         cs_sd = 1;
         spi.write(0xFF);
+        CDMS_WR_SD_FAULT_COUNTER++;
         return 1;
     }
 
--- a/i2c.h	Sun Sep 04 11:12:00 2016 +0000
+++ b/i2c.h	Mon Sep 05 11:25:33 2016 +0000
@@ -55,6 +55,7 @@
     }
     else if (read_ack == 1)
     {
+        CDMS_I2C_ERR_SPEED_COUNTER++;
         I2C_busreset();
     }
     PL_I2C_GPIO = 0;
@@ -89,6 +90,7 @@
     if (write_ack == 1)
     {
         I2C_busreset();
+        CDMS_I2C_ERR_SPEED_COUNTER++;
     }
     i2c_count = 0;
     return write_ack;
@@ -121,6 +123,8 @@
     else if (read_ack == 1)
     {
         I2C_busreset();
+        CDMS_I2C_ERR_BAE_COUNTER++;
+        
     }
     CDMS_I2C_GPIO = 0;
     i2c_count = 0;
@@ -155,6 +159,7 @@
     if (write_ack == 1)
     {
         I2C_busreset();
+        CDMS_I2C_ERR_BAE_COUNTER++;
     }
     CDMS_I2C_GPIO = 0;
     i2c_count = 0;
--- a/main.cpp	Sun Sep 04 11:12:00 2016 +0000
+++ b/main.cpp	Mon Sep 05 11:25:33 2016 +0000
@@ -114,8 +114,8 @@
     sys_reset_cdms_timer = new RtosTimer(sys_pwr_reset, osTimerPeriodic, (void * )NULL);
     sys_reset_cdms_timer->start(cdms_reset_timeout);
 
-    PL_wo_dma = new RtosTimer(payload_isr_fun_dma, osTimerPeriodic,(void * )NULL);
-    PL_wo_dma->start(6000);
+    //PL_wo_dma = new RtosTimer(payload_isr_fun_dma, osTimerPeriodic,(void * )NULL);
+    //PL_wo_dma->start(6000);
     //gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL);
     
     /*Timeout flipper;