Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE_samp_23SEP_DMA_flag by
Revision 261:1e54415b34d3, committed 2016-07-14
- Comitter:
- chaithanyarss
- Date:
- Thu Jul 14 13:07:30 2016 +0000
- Parent:
- 260:65e1ace927fd
- Child:
- 262:752c8689944a
- Commit message:
- Added thresholds in flash
Changed in this revision
--- a/CDMS_HK.h Tue Jul 12 17:54:30 2016 +0000
+++ b/CDMS_HK.h Thu Jul 14 13:07:30 2016 +0000
@@ -40,7 +40,7 @@
while(1)
{
gHK_THREAD->signal_wait(HK_SIGNAL);
- gPC.printf("Entering HK thread");
+ gPC.printf("\n\nEntering HK thread\n");
gMutex.lock();
@@ -75,7 +75,7 @@
uint64_t time = FCTN_CDMS_RD_RTC() >> 7; //Reading Time from RTC
for(int i = 124; i<128; i++)
CDMS_HEALTH_DATA[i] = time >> i*8;
-
+ gPC.printf("0x%x\n",time);
FCTN_SD_MNGR(); //Adding FSC & TMID to TM frame
CDMS_HK_FRAME[0] = 0x20;
CDMS_HK_FRAME[1] = FSC_CURRENT[4]+1;
@@ -97,20 +97,19 @@
for(int i=0; i<288; i++)
CDMS_HEALTH_FINAL[i] = interleave_CDMS_HK[i];
- SD_WRITE(CDMS_HEALTH_FINAL,FSC_CURRENT[4]+1,4);
- gPC.printf("\rCompleted CDMS HK\n");
+ //SD_WRITE(CDMS_HEALTH_FINAL,FSC_CURRENT[4]+1,4);
+ gPC.printf("Completed CDMS HK\t");
/*---------------------------------- BAE HK --------------------------------------------*/
-
BAE_HK_I2C = FCTN_I2C_READ(BAE_HK,134);
- gPC.printf("\rEntering BAE HK\n");
+ gPC.printf("Entering BAE HK\t");
if(BAE_HK_I2C == 0) {
crc = crc16_gen((unsigned char *)BAE_HK,132);
if(crc == ((uint16_t)BAE_HK[132] << 8) | (uint16_t)BAE_HK[133]){
TIME_LATEST_I2C_BAE = FCTN_CDMS_RD_RTC() >> 7;
- for(int i = 0; i<15; i++)
- gPC.printf("\r 0x%02X\n",BAE_HK[i]);
+ /*for(int i = 0; i<15; i++)
+ gPC.printf("\r 0x%02X\n",BAE_HK[i]);*/
for(int i = 0; i<4; i++)
BAE_HK[i] = time >> i;
BAE_HK_FRAME[0] = 0x28;
@@ -133,11 +132,11 @@
}
} else {
- gPC.printf("\rBAE HK data not recieved through I2C\n");
+ gPC.printf("BAE HK data not recieved through I2C\t");
for(int i = 0; i<134; i++)
BAE_HK[i] = 0;
}
- gPC.printf("\rCompleted BAE HK\n");
+ gPC.printf("Completed BAE HK\n");
/*----------------------------------Beacon message--------------------------------------*/
unsigned char SC_HK_LBM_0[135];
--- a/COM_MNG_TMTC.h Tue Jul 12 17:54:30 2016 +0000
+++ b/COM_MNG_TMTC.h Thu Jul 14 13:07:30 2016 +0000
@@ -16,25 +16,6 @@
//DigitalIn tm_status_4m_pl(PIN61); //I2C interrupt to CDMS from PL
#define RESET_CDMS NVIC_SystemReset()
-#define BAE_TC{\
- tc_ptr->next_TC = NULL;\
- PUTshort_or_long(tc_ptr,SHORT_TC_CODE);\
- PUTcrc_pass(tc_ptr,0x1);\
- PUTexec_status(tc_ptr,0);\
- tc_ptr->TC_string[0] = 0x01;\
- tc_ptr->TC_string[1] = 0x60;\
- tc_ptr->TC_string[2] = 0x81;\
- tc_ptr->TC_string[3] = 0x21;\
- tc_ptr->TC_string[4] = 0x00;\
- tc_ptr->TC_string[5] = 0;\
- tc_ptr->TC_string[6] = 0;\
- tc_ptr->TC_string[7] = 0;\
- tc_ptr->TC_string[8] = 0;\
- uint16_t crc16 = crc16_gen(tc_ptr->TC_string, 9);\
- tc_ptr->TC_string[9] = (crc16 & 0xFF00)>>8;\
- tc_ptr->TC_string[10] = (crc16 & 0x00FF);\
-}
-
uint8_t received = 0;
uint16_t mid1;
@@ -50,7 +31,7 @@
uint8_t ACK_CODE;
void TM_PMS_PL_SCHEDULE(Base_tm* tm_pointer1,uint8_t psc);
-void ACK_L234(Base_tm* tm_pointer1,uint8_t ackCode,uint8_t psc);
+void ACK_L234(Base_tm* tm_pointer_short1,uint8_t ackCode,uint8_t psc);
#define delete_TC(tc_ptr) {\
if(tc_ptr == gHEAD_NODE_TCL){\
@@ -220,19 +201,19 @@
/*tm_ptr is the next_TM of a linked list, and should have the value NULL, i.e. tm_ptr should be the next_TM pointer of thte last node */
// CDMS TEAM CODE START
-void ACK_L234(Base_tm* tm_pointer1,uint8_t ackCode,uint8_t psc)
+void ACK_L234(Base_tm* tm_pointer_short1,uint8_t ackCode,uint8_t psc)
{
- tm_pointer1->TM_string[0] = 0xB0;
- tm_pointer1->TM_string[1] = psc;
- tm_pointer1->TM_string[2] = ackCode;
- tm_pointer1->TM_string[3] = 0x00;
- tm_pointer1->TM_string[4] = 0x00;
+ tm_pointer_short1->TM_string[0] = 0xB0;
+ tm_pointer_short1->TM_string[1] = psc;
+ tm_pointer_short1->TM_string[2] = ackCode;
+ tm_pointer_short1->TM_string[3] = 0x00;
+ tm_pointer_short1->TM_string[4] = 0x00;
for(uint8_t i=0;i<6;i++)
- tm_pointer1->TM_string[i+5] = 0;
- crc16 = crc16_gen(tm_pointer1->TM_string,11);
- tm_pointer1->TM_string[11] = (uint8_t)((crc16&0xFF00)>>8);
- tm_pointer1->TM_string[12] = (uint8_t)(crc16&0x00FF);
- tm_pointer1->next_TM = NULL;
+ tm_pointer_short1->TM_string[i+5] = 0;
+ crc16 = crc16_gen(tm_pointer_short1->TM_string,11);
+ tm_pointer_short1->TM_string[11] = (uint8_t)((crc16&0xFF00)>>8);
+ tm_pointer_short1->TM_string[12] = (uint8_t)(crc16&0x00FF);
+ tm_pointer_short1->next_TM = NULL;
}
void TM_PMS_PL_SCHEDULE(Base_tm *tm_pointer1,uint8_t psc)
{
@@ -367,23 +348,26 @@
//uint8_t ACKCODE = 0xB0;
bool y;
//gPC.printf("\rTC execution in progress\r\n");
- Base_tm *tm_pointer = new Base_tm;
+ Base_tm *tm_pointer = new Long_tm;
Base_tm *tm_ptr = tm_pointer;
+ //Base_tm *tm_ptr = new Long_tm;
+ Base_tm *tm_pointer_short = new Short_tm;
+ Base_tm *tm_ptr_short = tm_pointer_short;
received = 0;
switch(GETapid(tc_ptr)) //checking APID's
{
case 1: //apid=01 implies it corresponds to bae
{
BAE_I2C_mutex.lock();
- BAE_TC;
+ //BAE_TC;
gPC.printf("Telecommand is for BAE\r\n");
gPC.printf("Sending TC to BAE...\r\n"); //interrupt to be sent to the bae
y = FCTN_I2C_WRITE((char*)tc_ptr->TC_string,TC_LONG_SIZE); // Check for SHORT and LONG TC and then send
if(y==1)
{
- ACK_L234(tm_pointer,0x03,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x03,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(y==0)
{
@@ -406,17 +390,17 @@
}
else if(y==1)
{
- ACK_L234(tm_pointer,0x85,GETpacket_seq_count(tc_ptr));
+ ACK_L234(tm_ptr_short,0x85,GETpacket_seq_count(tc_ptr));
//gPC.printf("\n\rPTE->PDIR = 0x%08X",PTE->PDIR);
- return tm_ptr;
+ return tm_ptr_short;
break;
}
}
else if(BAE_I2C_GPIO == 0) //name to be changed later
{
gPC.printf("BAE_I2C_GPIO is not high\r\n");
- ACK_L234(tm_pointer,0x84,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x84,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
BAE_I2C_mutex.unlock();
@@ -438,17 +422,15 @@
mid=((uint16_t)(tc_ptr->TC_string[3]<<4))+((uint16_t)(tc_ptr->TC_string[4]));
if(mid!=0x0000 && mid!=0x0001)
{
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
tm_pointer->TM_string[0] = 0x30;
tm_pointer->TM_string[1] = GETpacket_seq_count(tc_ptr);
tm_pointer->TM_string[2] = 0xA0;
tm_pointer->TM_string[3] = 0x00; //spare bits
-
FCTN_CDMS_RD_L_RAM(tm_pointer);
-
crc16 = crc16_gen(tm_ptr->TM_string,132);
tm_pointer->TM_string[132] = (uint8_t)((crc16&0xFF00)>>8);
tm_pointer->TM_string[133] = (uint8_t)(crc16&0x00FF);
@@ -461,43 +443,169 @@
mid=(uint16_t)(tc_ptr->TC_string[3]<<4)+(uint16_t)(tc_ptr->TC_string[4]);
//32 bits at a time
- if(mid<0 || mid>16) //allowable MID values?
+ if(mid == 0x0101 || mid==0x0102 || mid == 0x0103 || mid == 0x0100) //allowable MID values?
{
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
-
- FCTN_CDMS_WR_FLASH(mid,(uint32_t)(tc_ptr->TC_string[5]<<24)+(uint32_t)(tc_ptr->TC_string[6]<<16)+(uint32_t)(tc_ptr->TC_string[7]<<8)+(uint32_t)(tc_ptr->TC_string[8]));
+
+ FCTN_CDMS_WR_S_FLASH(mid,(uint32_t)(tc_ptr->TC_string[5]<<24)+(uint32_t)(tc_ptr->TC_string[6]<<16)+(uint32_t)(tc_ptr->TC_string[7]<<8)+(uint32_t)(tc_ptr->TC_string[8]));
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); //ackCode = ? for success
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ return tm_ptr_short;
}
- case 0x6:
+ case 0x6: //service subtye = WR_L_FLASH
{
- //gPC.printf("WRITE ON LONG_FLASH_MEMORY\r\n");
- mid=(uint16_t)(tc_ptr->TC_string[3]<<4)+(uint16_t)(tc_ptr->TC_string[4]);
- //1024 bits at a time
-
- if(mid<0x0002 || mid>0x000A) //allowable MID values?
+ mid=((uint16_t)(tc_ptr->TC_string[3]<<8))+((uint16_t)(tc_ptr->TC_string[4]));
+ if(mid == 0x0002)
+ {
+ for(uint8_t z=0;z<24;z++)
+ scp_threshold_m0[z] = tc_ptr->TC_string[z+5];
+ for(uint8_t z=24;z<32;z++)
+ scp_threshold_m0[z+8] = tc_ptr->TC_string[z+5];
+ //int strt_add = flash_size() - (11*SECTOR_SIZE);
+ //uint32_t flasharray[32] = {0};
+ for(uint8_t z=0;z<24;z++)
+ flasharray_thres[z] = scp_threshold_m0[z];
+ for(uint8_t z=24;z<32;z++)
+ flasharray_thres[z] = scp_threshold_m0[z+8];
+ erase_sector(strt_add_thres);
+ program_flash(strt_add_thres, (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0003)
+ {
+ for(uint8_t z=0;z<12;z++)
+ scp_threshold_m0[z+40] = tc_ptr->TC_string[z+5];
+ //int strt_add = flash_size() - (10*SECTOR_SIZE);
+ //uint32_t flasharray[32] = {0};
+ for(uint8_t z=0;z<12;z++)
+ flasharray_thres[z] = scp_threshold_m0[z+40];
+ erase_sector(strt_add_thres+SECTOR_SIZE);
+ program_flash(strt_add_thres+SECTOR_SIZE, (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0004)
+ {
+ for(uint8_t z=0;z<32;z++)
+ scp_threshold_m1[z] = tc_ptr->TC_string[z+5];
+ //int strt_add = flash_size() - (9*SECTOR_SIZE);
+ //uint32_t flasharray[32] = {0};
+ for(uint8_t z=0;z<32;z++)
+ flasharray_thres[z] = scp_threshold_m1[z];
+ erase_sector(strt_add_thres+(2*SECTOR_SIZE));
+ program_flash(strt_add_thres+(2*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0005)
+ {
+ for(uint8_t z=0;z<20;z++)
+ scp_threshold_m1[z+32] = tc_ptr->TC_string[z+5];
+ //int strt_add = flash_size() - (8*SECTOR_SIZE);
+ //uint32_t flasharray[32] = {0};
+ for(uint8_t z=0;z<20;z++)
+ flasharray_thres[z] = scp_threshold_m1[z+32];
+ erase_sector(strt_add_thres+(3*SECTOR_SIZE));
+ program_flash(strt_add_thres+(3*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0006)
{
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); //ackCode = ? for invalid mid
- return tm_ptr;
- }
-
- //Send TM for success after writing onto flash
- //FCTN_CDMS_WR_L_FLASH(mid);
-
- return tm_ptr;
- }
+ scp_threshold_m0_1[7] = tc_ptr->TC_string[5];
+ scp_threshold_m0_1[5] = tc_ptr->TC_string[6];
+ scp_threshold_m0_1[8] = tc_ptr->TC_string[7];
+ scp_threshold_m0_1[6] = tc_ptr->TC_string[8];
+ for(uint8_t z=0;z<5;z++)
+ scp_threshold_m0_1[z] = tc_ptr->TC_string[z+9];
+ //scp_sfp_threshold_m0_2[0] = tc_ptr->TC_string[14];
+ //scp_sfp_threshold_m0_2[1] = tc_ptr->TC_string[15];
+ //scp_sfp_threshold_m0_2[2] = tc_ptr->TC_string[16];
+ //int strt_add = flash_size() - (7*SECTOR_SIZE);
+ //uint32_t flasharray[32] = {0};
+ flasharray_thres[0] = scp_threshold_m0_1[7];
+ flasharray_thres[1] = scp_threshold_m0_1[5];
+ flasharray_thres[2] = scp_threshold_m0_1[8];
+ flasharray_thres[3] = scp_threshold_m0_1[6];
+ for(uint8_t z=0;z<5;z++)
+ flasharray_thres[z+4] = scp_threshold_m0_1[z];
+ //flasharray_thres[9] = scp_sfp_threshold_m0_2[0];
+ //flasharray_thres[10] = scp_sfp_threshold_m0_2[1];
+ //flasharray_thres[11] = scp_sfp_threshold_m0_2[2];
+ erase_sector(strt_add_thres+(4*SECTOR_SIZE));
+ program_flash(strt_add_thres+(4*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0007)
+ {
+ for(uint8_t z=0;z<24;z++)
+ sfp_threshold_m0[z] = tc_ptr->TC_string[z+5];
+ for(uint8_t z=24;z<32;z++)
+ sfp_threshold_m0[z+8] = tc_ptr->TC_string[z+5];
+ //int strt_add_thres = flash_size() - (6*SECTOR_SIZE);
+ //uint32_t flasharray_thres[32] = {0};
+ for(uint8_t z=0;z<24;z++)
+ flasharray_thres[z] = sfp_threshold_m0[z];
+ for(uint8_t z=24;z<32;z++)
+ flasharray_thres[z] = sfp_threshold_m0[z+8];
+ erase_sector(strt_add_thres+(5*SECTOR_SIZE));
+ program_flash(strt_add_thres+(5*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0008)
+ {
+ for(uint8_t z=0;z<12;z++)
+ sfp_threshold_m0[z+40] = tc_ptr->TC_string[z+5];
+ //int strt_add_thres = flash_size() - (5*SECTOR_SIZE);
+ //uint32_t flasharray_thres[32] = {0};
+ for(uint8_t z=0;z<12;z++)
+ flasharray_thres[z] = sfp_threshold_m0[z+40];
+ erase_sector(strt_add_thres+(6*SECTOR_SIZE));
+ program_flash(strt_add_thres+(6*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x0009)
+ {
+ for(uint8_t z=0;z<32;z++)
+ sfp_threshold_m1[z] = tc_ptr->TC_string[z+5];
+ //int strt_add_thres = flash_size() - (4*SECTOR_SIZE);
+ //uint32_t flasharray_thres[32] = {0};
+ for(uint8_t z=0;z<32;z++)
+ flasharray_thres[z] = sfp_threshold_m1[z];
+ erase_sector(strt_add_thres+(7*SECTOR_SIZE));
+ program_flash(strt_add_thres+(7*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ else if(mid == 0x000A)
+ {
+ for(uint8_t z=0;z<20;z++)
+ sfp_threshold_m1[z+32] = tc_ptr->TC_string[z+5];
+ //int strt_add_thres = flash_size() - (3*SECTOR_SIZE);
+ //uint32_t flasharray_thres[32] = {0};
+ for(uint8_t z=0;z<20;z++)
+ flasharray_thres[z] = sfp_threshold_m1[z+32];
+ erase_sector(strt_add_thres+(8*SECTOR_SIZE));
+ program_flash(strt_add_thres+(8*SECTOR_SIZE), (char*)flasharray_thres,32);
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
+ }
default:
{
gPC.printf("INVALID SERVICE SUBTYPE\r\n");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
- }
+ }
case 0x80:
{
gPC.printf("service:FUNCTION MANAGEMENT SERVICE\r\n");
@@ -511,13 +619,13 @@
P_PL_INIT();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x02)
@@ -528,13 +636,13 @@
P_PL_MAIN();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x03)
@@ -545,13 +653,13 @@
P_COM_INIT();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x04)
@@ -560,15 +668,15 @@
{
//gPC.printf("TC_P_CDMS_HK_MAIN\r\n"); // call PWR_SWCH_ON function
- P_CDMS_HK_MAIN();
+ //gHK_THREAD->signal_set(HK_SIGNAL);
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x05)
@@ -579,13 +687,13 @@
P_PL_RCV_SC_DATA();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x06)
@@ -593,16 +701,16 @@
if(CDMS_STANDBY==1)
{
//gPC.printf("TC_SW_ON_RTC\r\n"); // call PWR_SWCH_ON function
-
+ gPC.printf("SD _INIT\r\n");
P_CDMS_INIT_SD();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(CDMS_STANDBY==0)
{
- ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now
+ return tm_ptr_short;
}
}
else if(GETpid(tc_ptr)==0x11)
@@ -611,8 +719,8 @@
CDMS_SD_SW_ON();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x21)
{
@@ -620,8 +728,8 @@
CDMS_SD_SW_OFF();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x12)
{
@@ -629,8 +737,8 @@
CDMS_RTC_ON();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x22)
{
@@ -638,17 +746,17 @@
CDMS_RTC_OFF();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
- }
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
+ }
else if(GETpid(tc_ptr)==0x13)
{
//gPC.printf("TC_SW_ON_BAE\r\n"); // call PWR_SWCH_ON function
SW_ON_BAE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x23)
{
@@ -656,8 +764,8 @@
SW_OFF_BAE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x14)
{
@@ -665,8 +773,8 @@
SW_ON_PL_BEE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x24)
{
@@ -674,8 +782,8 @@
SW_OFF_PL_BEE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x15)
{
@@ -683,8 +791,8 @@
SW_ON_PL_EPS();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x25)
{
@@ -692,8 +800,8 @@
SW_OFF_PL_EPS();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x16)
{
@@ -702,8 +810,8 @@
SW_ON_V_A_EN();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x26)
{
@@ -711,8 +819,8 @@
SW_OFF_V_A_EN();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x31)
{
@@ -720,8 +828,8 @@
RST_SD();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x33)
{
@@ -729,8 +837,8 @@
RST_BAE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x34)
{
@@ -738,25 +846,24 @@
RST_PL_BEE();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x38)
{
//gPC.printf()
CDMS_INTERNAL_RESET();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
}
else if(GETpid(tc_ptr)==0x40)
{
//gPC.printf("RESET_HK_COUNTER\r\n"); // call PWR_SWCH_ON function
- STANDBY_PRCS(); //////// Need to Complete this function
+ STANDBY_PRCS();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0x41)
{
@@ -764,8 +871,8 @@
RST_HK_COUNTER();
- ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
else if(GETpid(tc_ptr)==0xF1)
{
@@ -774,7 +881,7 @@
uint32_t time_temp = FCTN_CDMS_RD_RTC(); //RTC_RD_EROR has to incorporated
tm_pointer->TM_string[0] = 0x78;
tm_pointer->TM_string[1] = GETpacket_seq_count(tc_ptr);
- tm_pointer->TM_string[2] = 0xA0; // ACK CODE
+ tm_pointer->TM_string[2] = 0xA0;
tm_pointer->TM_string[3] = 0x00;
tm_pointer->TM_string[4] = (uint8_t)((time_temp & 0xFF000000)>>24);
tm_pointer->TM_string[5] = (uint8_t)((time_temp & 0x00FF0000)>>16);
@@ -787,14 +894,14 @@
crc16 = crc16_gen(tm_ptr->TM_string,132);
tm_pointer->TM_string[132] = (uint8_t)((crc16&0xFF00)>>8);
tm_pointer->TM_string[133] = (uint8_t)(crc16&0x00FF);
- tm_pointer->next_TM = NULL; //incomplete
- return tm_ptr;
+ tm_pointer->next_TM = NULL;
+ return tm_ptr; //incomplete
}
else if(GETpid(tc_ptr)==0xF0)
{
uint8_t statusbits[64];
if( CDMS_RD_SD_HK(statusbits) != 0){
- ACK_L234(tm_pointer,0xC0,GETpacket_seq_count(tc_ptr));
+ ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr));
return tm_ptr;
}
else
@@ -818,19 +925,25 @@
tm_pointer->next_TM = NULL; //incomplete
return tm_ptr;
}
+ }
+ else if(GETpid(tc_ptr)==0xF1)
+ {
+ CDMS_CALIB_RTC((uint64_t)(tc_ptr->TC_string[4])<<32 + (uint64_t)(tc_ptr->TC_string[5])<<24 + (uint64_t)(tc_ptr->TC_string[5])<<16 + (uint64_t)(tc_ptr->TC_string[6])<<8 +(uint64_t)(tc_ptr->TC_string[7]));
+ ACK_L234(tm_pointer,0xC0,GETpacket_seq_count(tc_ptr));
+ return tm_ptr;
}
else
{
gPC.printf("INVALID FID\r\n");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
else
{
gPC.printf("INVALID SERVICE SUBTYPE\r\n");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
case 0x70:
@@ -930,15 +1043,15 @@
else
{
gPC.printf("INVALID SERVICE SUBTYPE\r\n");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
default:
{
gPC.printf("ILLEGAL TC");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
}
@@ -954,8 +1067,8 @@
if(y==1)
{
- ACK_L234(tm_pointer,0x03,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x03,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
break;
}
else if(y==0)
@@ -980,25 +1093,25 @@
}
else if(y==1)
{
- ACK_L234(tm_pointer,0x85,GETpacket_seq_count(tc_ptr));
+ ACK_L234(tm_ptr_short,0x85,GETpacket_seq_count(tc_ptr));
//gPC.printf("\n\rPTE->PDIR = 0x%08X",PTE->PDIR);
- return tm_ptr;
+ return tm_ptr_short;
break;
}
}
else if(PL_I2C_Intr == 0) //name to be changed later
{
gPC.printf("PL_I2C_Intr is not high\r\n");
- ACK_L234(tm_pointer,0x84,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x84,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
}
default: //invalid TC
{
gPC.printf("INVALID TC\r\n");
- ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr));
- return tm_ptr;
+ ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr));
+ return tm_ptr_short;
}
}
return;
--- a/Compression.h Tue Jul 12 17:54:30 2016 +0000
+++ b/Compression.h Thu Jul 14 13:07:30 2016 +0000
@@ -49,9 +49,9 @@
uint8_t srp_mode , at , pzf , ezf ,sfp[65] ,scp[55];; //tells which mode is calibrated or plot 0 for calibrated and 1 for scatterered, below threshold , proton zero flux, electron zero flux.
unsigned int sfp_bin[52] , scp_bin[52]; //storing the bin values.
unsigned int sfp_threshold_m0[52] = {8128,8128,8128,8128,8128,8128,8128,8128,960,960,960,960,960,960,960,960,960,960,960,960,4032,4032,4032,4032,8128,8128,8128,8128,4032,4032,124,124,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,252,252,252,252,252};
-const unsigned int scp_threshold_m0[52] = {245760,245760,245760,245760,245760,245760,245760,245760,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,114688,114688,114688,114688,245760,245760,245760,245760,114688,114688,4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,4032,4032,4032,4032};
+unsigned int scp_threshold_m0[52] = {245760,245760,245760,245760,245760,245760,245760,245760,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,114688,114688,114688,114688,245760,245760,245760,245760,114688,114688,4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,4032,4032,4032,4032};
unsigned int scp_threshold_m0_1[9]={114688,245760,245760,245760,245760,114688,114688,65472,65472} ; //for mode 0..ie callibrated mode
-const unsigned int sfp_threshold_m1[2] ={252,8128},scp_threshold_m1[2]={7680,245760};
+unsigned int sfp_threshold_m1[2] ={252,8128},scp_threshold_m1[2]={7680,245760};
uint8_t frames[3][134] = {0};
uint8_t position_tm_frame[3] = {8,11,5} , position_tm_starting[3] = {8,11,5}; //{sc,sf-bt,sf-at}
uint8_t id; //sf = 0,sc-at = 1,sc-bt = 2;
@@ -292,7 +292,7 @@
space = adjust(1,0,pointer,8);
space = adjust(4,3,pointer,space);
FSC_science = FSC_CURRENT[3]+1;
- gPC.printf("SID = 3, FSC = %02X\r\n", FSC_CURRENT[3]+1);
+ //gPC.printf("SID = 3, FSC = %02X\r\n", FSC_CURRENT[3]+1);
frames[id][1] = (FSC_science>>24)&0xff;
frames[id][2] = (FSC_science>>16)&0xff;
frames[id][3] = (FSC_science>>8)&0xff;
@@ -306,7 +306,7 @@
space = adjust(1,0,pointer,8);
space = adjust(4,2,pointer,space);
FSC_science = FSC_CURRENT[2]+1;
- gPC.printf("SID = 2, FSC = %02X\r\n", FSC_science);
+ //gPC.printf("SID = 2, FSC = %02X\r\n", FSC_science);
frames[id][1] = (FSC_science>>16)&0xff;
frames[id][2] = (FSC_science>>8)&0xff;
frames[id][3] = FSC_science&0xff;
@@ -336,7 +336,7 @@
}
if(sd_stat)
{
- gPC.puts("sd write failure");
+ //gPC.puts("sd write failure");
break;
}
position_tm_frame[id] = position_tm_starting[id];
@@ -594,7 +594,7 @@
space = adjust(1,0,pointer,8);
space = adjust(4,1,pointer,space);
FSC_science = FSC_CURRENT[1]+1;
- gPC.printf("SID = 1, FSC = %02X\r\n", FSC_science);
+ //gPC.printf("SID = 1, FSC = %02X\r\n", FSC_science);
frames[id][1] = (FSC_science>>16)&0xff;
frames[id][2] = (FSC_science>>8)&0xff;
frames[id][3] = (FSC_science)&0xff;
@@ -616,7 +616,7 @@
sd_stat = SD_WRITE(TM_interleave_data,FSC_CURRENT[1]+1,1);
if(sd_stat)
{
- gPC.puts("sd write failure");
+ //gPC.puts("sd write failure");
break;
}
position_tm_frame[id] = position_tm_starting[id];
--- a/DefinitionsAndGlobals.h Tue Jul 12 17:54:30 2016 +0000
+++ b/DefinitionsAndGlobals.h Thu Jul 14 13:07:30 2016 +0000
@@ -1,15 +1,15 @@
// **************DEFINITIONS*********************
-#define bypass_adf 0
+#define bypass_adf 1
#define dma 0
// COM_RX
#define RX_TIMEOUT_LIMIT 0.5
- #define COM_RX_UART_TX PTE20 // For bypassing RX1M (SET BAUD RATE 1200) #define COM_RX_UART_TX USBTX
- #define COM_RX_UART_RX PTE21 // For bypassing RX1M (SET BAUD RATE 1200) #define COM_RX_UART_RX USBRX
+ //#define COM_RX_UART_TX PTE20 // For bypassing RX1M (SET BAUD RATE 1200) #define COM_RX_UART_TX USBTX
+ //#define COM_RX_UART_RX PTE21 // For bypassing RX1M (SET BAUD RATE 1200) #define COM_RX_UART_RX USBRX
- //#define COM_RX_UART_TX USBTX
- //#define COM_RX_UART_RX USBRX
+ #define COM_RX_UART_TX USBTX
+ #define COM_RX_UART_RX USBRX
// COMMON SPI
#define SPI_MOSI PTE1
@@ -17,7 +17,8 @@
#define SPI_CLK PTE2
#define SPI_CS_ADF PTA15
#define SPI_CS_SDC PIN20
- #define SPI_CS_RTC PIN26
+ //#define SPI_CS_RTC PIN26
+ #define SPI_CS_RTC PIN60
// COM_TX
#define COM_TX_CONFIG_LIMIT 3
--- a/FMS_all.h Tue Jul 12 17:54:30 2016 +0000
+++ b/FMS_all.h Thu Jul 14 13:07:30 2016 +0000
@@ -40,7 +40,6 @@
void RST_HK_COUNTER();
int8_t CDMS_RD_SD_HK(uint8_t *);
-void CDMS_RD_RTC(uint64_t *);
void CDMS_CALIB_RTC(uint8_t *);
void TOTAL_RESET_WITH_CDMS();
@@ -83,11 +82,19 @@
void CDMS_SD_SW_ON()
{
SD_SW_EN_DS = 0;
+ SD_STATUS = DEVICE_POWERED;
+ CDMS_SD_SW_STATUS = DEVICE_POWERED;
+ FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED);
+ gPC.printf("sw on sd\n");
}
void CDMS_SD_SW_OFF()
{
SD_SW_EN_DS = 1;
+ SD_STATUS = DEVICE_DISABLED;
+ CDMS_SD_SW_STATUS = DEVICE_DISABLED;
+ FCTN_CDMS_WR_FLASH(2,DEVICE_DISABLED);
+ gPC.printf("sw off sd\n");
}
void CDMS_RTC_ON()
@@ -99,6 +106,7 @@
spi.write(0x81); //register address with write flag
spi.write(0x00);//disabling stop bit in the seconds register
SPI_mutex.unlock();
+ gPC.printf("sw on rtc\n");
}
void CDMS_RTC_OFF()
@@ -109,27 +117,39 @@
spi.write(0x81); //register address with write flag
spi.write(0x80);//enabling stop bit in the seconds register
SPI_mutex.unlock();
+ gPC.printf("sw off rtc\n");
}
void SW_ON_BAE()
{
BAE_SW_EN_DS = 0;
+ BAE_STATUS = DEVICE_POWERED;
+ BAE_SW_STATUS = DEVICE_POWERED;
+ FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED);
+ gPC.printf("sw on bae\n");
}
void SW_OFF_BAE()
{
BAE_SW_EN_DS = 1;
+ BAE_STATUS = DEVICE_DISABLED;
+ BAE_SW_STATUS = DEVICE_DISABLED;
+ FCTN_CDMS_WR_FLASH(1,DEVICE_DISABLED);
+ gPC.printf("sw off bae\n");
}
void SW_ON_PL_BEE()
{
- PYLD_DFF_CLK = 0;\
- PYLD_DFF = 1;\
- wait_us(1);\
- PYLD_DFF_CLK = 1;\
- wait_us(1);\
- PYLD_DFF_CLK = 0;\
- wait_us(1);\
+ PYLD_DFF_CLK = 0;
+ PYLD_DFF = 1;
+ wait_us(1);
+ PYLD_DFF_CLK = 1;
+ wait_us(1);
+ PYLD_DFF_CLK = 0;
+ wait_us(1);
+ PL_STATUS = DEVICE_POWERED;
+ PL_BEE_SW_STATUS = DEVICE_POWERED;
+ FCTN_CDMS_WR_FLASH(3,DEVICE_POWERED);
}
void SW_OFF_PL_BEE()
@@ -141,38 +161,49 @@
wait_us(1);
PYLD_DFF_CLK = 0;
wait_us(1);
+ PL_STATUS = DEVICE_DISABLED;
+ PL_BEE_SW_STATUS = DEVICE_DISABLED;
+ FCTN_CDMS_WR_FLASH(3,DEVICE_DISABLED);
}
void SW_ON_PL_EPS()
{
- PYLD_EPS_DFF_PWR_CLK = 0;\
- PYLD_EPS_DFF_PWR = 1;\
- wait_us(1);\
- PYLD_EPS_DFF_PWR_CLK = 1;\
- wait_us(1);\
- PYLD_EPS_DFF_PWR_CLK = 0;\
- wait_us(1);\
+ PYLD_EPS_DFF_PWR_CLK = 0;
+ PYLD_EPS_DFF_PWR = 1;
+ wait_us(1);
+ PYLD_EPS_DFF_PWR_CLK = 1;
+ wait_us(1);
+ PYLD_EPS_DFF_PWR_CLK = 0;
+ wait_us(1);
+ PL_EPS_LATCH_SW_EN = 1;
+ FCTN_CDMS_WR_FLASH(4,1);
}
void SW_OFF_PL_EPS()
{
- PYLD_EPS_DFF_PWR_CLK = 0;\
- PYLD_EPS_DFF_PWR = 0;\
- wait_us(1);\
- PYLD_EPS_DFF_PWR_CLK = 1;\
- wait_us(1);\
- PYLD_EPS_DFF_PWR_CLK = 0;\
- wait_us(1);\
+ PYLD_EPS_DFF_PWR_CLK = 0;
+ PYLD_EPS_DFF_PWR = 0;
+ wait_us(1);
+ PYLD_EPS_DFF_PWR_CLK = 1;
+ wait_us(1);
+ PYLD_EPS_DFF_PWR_CLK = 0;
+ wait_us(1);
+ PL_EPS_LATCH_SW_EN = 0;
+ FCTN_CDMS_WR_FLASH(4,0);
}
void SW_ON_V_A_EN()
{
V_A_EN = 1;
+ EPS_V_A_EN_STATUS = 1;
+ FCTN_CDMS_WR_FLASH(0,1);
}
void SW_OFF_V_A_EN()
{
V_A_EN = 0;
+ EPS_V_A_EN_STATUS = 0;
+ FCTN_CDMS_WR_FLASH(0,0);
}
void RST_SD()
@@ -180,6 +211,7 @@
SD_SW_EN_DS = 1;
wait_ms(10);
SD_SW_EN_DS = 0;
+ gPC.printf("rst sd\n");
}
void SW_RST_BAE()
@@ -187,6 +219,7 @@
BAE_SW_EN_DS = 1;
wait_ms(10);
BAE_SW_EN_DS = 0;
+ gPC.printf("rst bae\n");
}
void SW_RST_PL_BEE()
@@ -254,12 +287,7 @@
return p;
}
-void CDMS_RD_RTC(uint64_t *time)
-{
- *time = FCTN_CDMS_RD_RTC();
-}
-
-void CDMS_CALIB_RTC(uint64_t *time)
+void CDMS_CALIB_RTC(uint64_t time)
{
SPI_mutex.lock();
gCS_RTC=1;
@@ -268,27 +296,27 @@
gCS_RTC=0;
spi.write(0x82);
- spi.write(time[0]);//set minutes
+ spi.write((uint8_t)time);//set minutes
gCS_RTC=1;
gCS_RTC=0;
spi.write(0x83);
- spi.write(time[1] & 0x3F); //set hours
+ spi.write((uint8_t)(time>>8) & 0x3F); //set hours
gCS_RTC=1;
gCS_RTC=0;
spi.write(0x85);
- spi.write(time[2] & 0x3F); //set date
+ spi.write((uint8_t)(time>>16) & 0x3F); //set date
gCS_RTC=1;
gCS_RTC=0;
spi.write(0x86);
- spi.write(time[3] & 0x1F); //set month
+ spi.write((uint8_t)(time>>24) & 0x1F); //set month
gCS_RTC=1;
gCS_RTC=0;
spi.write(0x87);
- spi.write(time[4]); //set year to 00(2000)
+ spi.write((uint8_t)(time>>32)); //set year to 00(2000)
gCS_RTC=1;
gPC.puts("\n\r rtc initalised \n");
SPI_mutex.unlock();
--- a/Flash.h Tue Jul 12 17:54:30 2016 +0000
+++ b/Flash.h Thu Jul 14 13:07:30 2016 +0000
@@ -1,5 +1,8 @@
#include "FreescaleIAP.h"
+int strt_add_thres = flash_size() - (11*SECTOR_SIZE);
+uint32_t flasharray_thres[32] = {0};
+
void FCTN_CDMS_WR_FLASH(uint16_t , uint32_t);
int strt_add = flash_size() - (2*SECTOR_SIZE);
uint32_t flasharray[32]; //256+(3*1024)
@@ -50,7 +53,7 @@
/*Writing to the Flash*/
void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t datablock) //j-position to write address ; fdata - flash data to be written
{
- for(int i=0;i<5;i++)
+ for(int i=0;i<17;i++)
{
flasharray[i]=nativeflash[i];
}
@@ -61,3 +64,29 @@
/*End*/
/*===================================================MMS Functions=================================================*/
+
+void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock);
+
+void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock)
+{
+ if(mid == 0x0100)
+ {
+ FCTN_CDMS_WR_FLASH(11,(datablock>>16) & 0x000000FF);
+ FCTN_CDMS_WR_FLASH(13,(datablock>>8) & 0x000000FF);
+ FCTN_CDMS_WR_FLASH(14,datablock & 0x000000FF);
+ }
+ else if(mid == 0x0101)
+ {
+ FCTN_CDMS_WR_FLASH(12,(datablock>>16) & 0x000000FF);
+ FCTN_CDMS_WR_FLASH(10,(datablock>>8) & 0x000000FF);
+ FCTN_CDMS_WR_FLASH(15,datablock & 0x000000FF);
+ }
+ else if(mid == 0x0102)
+ {
+ FCTN_CDMS_WR_FLASH(9,datablock & 0x0000FFFF);
+ }
+ else if(mid == 0x0103)
+ {
+ FCTN_CDMS_WR_FLASH(6,datablock & 0x00000001);
+ }
+}
\ No newline at end of file
--- a/ThreadsAndFunctions.h Tue Jul 12 17:54:30 2016 +0000
+++ b/ThreadsAndFunctions.h Thu Jul 14 13:07:30 2016 +0000
@@ -143,7 +143,7 @@
}
else if( gFLAGS & NEW_TC_RECEIVED ){
gPC.puts("NEW TC RECEIVED\r\n");
- Thread::wait(10000);
+ //Thread::wait(10000);
gFLAGS = gFLAGS & (~NEW_TC_RECEIVED);
gFLAGS = gFLAGS | COM_MNG_TMTC_RUNNING_FLAG;
--- a/adf.h Tue Jul 12 17:54:30 2016 +0000
+++ b/adf.h Thu Jul 14 13:07:30 2016 +0000
@@ -7,38 +7,29 @@
bool buffer_state;
bool finish_write_data;
uint8_t signal = 0x00;
-unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00};
-bool data_irq_err=0;
-bool data_err= false;
-unsigned char temp_byte=0x00;
-unsigned char data_err1[112];
-unsigned char data_err_cnt=0;
-unsigned int byte_count =0;
-#define DATA_ERR_THRS 20
-bool rolling_buffer_settings_error=true;
-bool bbram_write_success=true;
-int bbram_err_cnt=0;
-int rbp_err_cnt=0;
-bool reset_flag=false;
-#define RBP_THRS 4
-bool quit_configuration=false;
-bool power_reset_flag=false;
-unsigned int power_reset_count=0;
-bool Configuration_done=false;
-#define HW_THRS 2
+unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF4,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,0x7F,0x00,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x10,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00};
//int initialise_card();
//int disk_initialize();
+
+#define bbram_write {\
+ SPI_mutex.lock();\
+ gCS_ADF=0;\
+ spi.write(0xB0);\
+ wait_us(300);\
+ gCS_ADF=1;\
+ gCS_ADF=0;\
+ for(int i=0;i<66;i++){\
+ spi.write(bbram_buffer[i]);\
+ }\
+ gCS_ADF=1;\
+ SPI_mutex.unlock();\
+}
//------------------------------------------------------------------------
// state checking functions
//bool assrt_phy_off( int, int, int);
//bool assrt_phy_on( int,int,int);
//bool assrt_phy_tx(int,int,int);
-
-#define TRANSMIT_LEN_1 0xFF
-#define TRANSMIT_LEN_2 0xFF
-/***/
-Timer T;
#define START_ADDRESS 0x020;
#define MISO_PIN PTE3
@@ -54,105 +45,7 @@
#define CMD_PHY_OFF 0xB0
#define CMD_PHY_TX 0xB5
#define CMD_CONFIG_DEV 0xBB
-/**STATES**/
-//=======================
-#define PHY_OFF 0xB1
-#define PHY_ON 0xB2
-#define PHY_TX 0xB4
-#define BUSY 0x00
-//===================================================
-
-unsigned int Adf_data_counter=0;
-unsigned char status =0;
-unsigned int cmd_err_cnt=0;
-unsigned int data_length;
-unsigned int state_err_cnt=0;
-unsigned int miso_err_cnt=0;
-unsigned int hw_reset_err_cnt=0;
-unsigned int counter =0;
-bool temp_return = 0;
-bool bcn_flag=0;
-bool bbram_flag=0;
-
-bool stop_transmission=false;
-
-#define reset_flags {\
-finish_write_data = false;\
-buffer_state = true;\
-last_buffer = false;\
-loop_on = true;\
-ADF_off = false;\
-buffer_state = true;\
-loop_on = true;\
-ADF_off = false;\
-sent_tmfrom_SDcard = false;\
-Adf_data_counter=0;\
-status =0;\
-cmd_err_cnt=0;\
-data_length;\
-state_err_cnt=0;\
-miso_err_cnt=0;\
-hw_reset_err_cnt=0;\
-counter =0;\
-bcn_flag=0;\
-bbram_flag=0;\
-stop_transmission=false;\
- }
-
-
-int err_arr[64];
-bool bbram_err=false;
-int err_idx=-1;
-int err[64];
-#define bbram_check gCS_ADF=0;\
- for(int i=0;i<64;i++){\
- err_arr[i]=0;\
- }\
- for(int i=0;i<64;i++){\
- err[i]=0;\
- }\
- bbram_err=false;\
- gCS_ADF=0;\
- spi.write(0x39);\
- spi.write(0x00);\
- spi.write(0xFF);\
- for(int i=0;i<64;i++){\
- err_arr[i]=spi.write(0xFF);\
- if(err_arr[i]!=bbram_buffer[i+2]){\
- err[i]=1;\
- bbram_err=true;\
- }\
- }\
- gCS_ADF=1;\
- if(!bbram_err)\
- gPC.printf("BBRAM verified \r\n");\
- else\
- gPC.printf("BBRAM error \r\n");\
-
-bool tx_loop=1;
-
-#define PRNT_ONCE {\
- gPC.printf("%d %d lol_ what?\r\n",segment_len,EOS_len);\
- }
-
-#define bbram_write {\
- gCS_ADF=0;\
- spi.write(0xB0);\
- wait_us(300);\
- gCS_ADF=1;\
- gCS_ADF=0;\
- for(int i=0;i<66;i++){\
- spi.write(bbram_buffer[i]);\
- }\
- gCS_ADF=1;\
-}
-//------------------------------------------------------------------------
-// state checking functions
-//bool assrt_phy_off( int, int, int);
-//bool assrt_phy_on( int,int,int);
-//bool assrt_phy_tx(int,int,int);
-
#define check_status {\
unsigned char stat=0;\
gCS_ADF=0;\
@@ -161,106 +54,97 @@
gCS_ADF=1;\
status = stat;\
}
-
-/*CMD_VAR*/
-bool cmd_bit=true;
-bool cmd_err_flag=false;
-unsigned char command = 0x00;
-#define CMD(command) {\
- cmd_err_cnt=0;\
- cmd_err_flag=false;\
- while(cmd_err_cnt<3) {\
+
+// all three arguments are int
+#define assrt_phy_off(return_this) {\
+ int cmd_err_cnt = 0;\
+ int spi_err_cnt = 0;\
+ int state_err_cnt = 0;\
+ for(int i = 0 ; i < 40 ;i++){\
check_status;\
- cmd_bit=status&0x20;\
- if(cmd_bit) {\
+ if(status == 0xB1){\
+ return_this = 0;\
+ break;\
+ }\
+ else if(cmd_err_cnt>THRS||spi_err_cnt>THRS){\
+ return_this = 1;\
+ break;\
+ }\
+ else if(state_err_cnt>STATE_ERR_THRS){\
+ return_this = 1;\
+ break;\
+ }\
+ else if( (status & 0xA0) == 0xA0 ){\
gCS_ADF=0;\
- spi.write(command);\
+ spi.write(CMD_PHY_OFF);\
gCS_ADF=1;\
- break;\
- } else {\
- wait_us(5);\
+ wait_us(PHY_OFF_EXEC_TIME);\
+ state_err_cnt++;\
+ }\
+ else if(status&0x80==0x00){\
+ wait_ms(5);\
+ spi_err_cnt++;\
+ }\
+ else {\
+ wait_ms(1);\
cmd_err_cnt++;\
}\
}\
- if(cmd_err_cnt==3) {\
- cmd_err_flag=true;\
- }\
}
-// all three arguments are int\
-#define assrt_phy_off {\
- int state_err_cnt = 0;\
- CMD(CMD_PHY_OFF);\
- if(cmd_err_flag){\
- temp_return=1;\
+
+
+#define initial_adf_check {\
+ spi.write(CMD_PHY_OFF);\
+ int tempReturn = 0;\
+ bool flag = false;\
+ while( hw_reset_err_cnt < 2 ){\
+ assrt_phy_off( tempReturn);\
+ if( !tempReturn ){\
+ bbram_write;\
+ bbram_flag=1;\
+ flag = true;\
+ break;\
}\
- else{\
- for(int i = 0 ; i < 40 ;i++){\
- CMD(CMD_PHY_OFF);\
- check_status;\
- if(status == PHY_OFF){\
- temp_return = 0;\
- break;\
- }\
- else if(state_err_cnt>THRS){\
- temp_return = 1;\
- break;\
- }\
- else {\
- wait_ms(1);\
- }\
+ else{\
+ hardware_reset(0);\
+ hw_reset_err_cnt++;\
+ gPC.puts("Resetting hardware\r\n");\
}\
}\
+ if( flag == false ){\
+ gPC.puts("Seems to be SPI problem\r\n");\
+ }\
+ assrt_phy_off(tempReturn);\
+ if(!bbram_flag){\
+ bcn_flag=1;\
+ }\
}
-
-
-bool hardware_reset(int bcn_call)
-{
- for(int i= 0; i < 2 ; i++) {
+
+unsigned char status =0;
+unsigned int cmd_err_cnt=0;
+unsigned int state_err_cnt=0;
+unsigned int miso_err_cnt=0;
+unsigned int hw_reset_err_cnt=0;
+bool bcn_flag=0;
+bool bbram_flag=0;
+
+bool hardware_reset(int bcn_call){
+ for(int i= 0; i < 20 ; i++){
gCS_ADF=0;
spi.write(CMD_HW_RESET);
gCS_ADF=1;
wait_ms(2);// Typically 1 ms
int count=0;
- temp_return = 0;
- while(count<10 && miso_err_cnt<10) {
- if(MISO_PIN) {
-// assrt_phy_off;
-/*asseert_phyoff Starts**/
-{\
- int state_err_cnt = 0;\
- CMD(CMD_PHY_OFF);\
- if(cmd_err_flag){\
- temp_return=1;\
- }\
- else{\
- for(int i = 0 ; i < 40 ;i++){\
- CMD(CMD_PHY_OFF);\
- check_status;\
- if(status == PHY_OFF){\
- temp_return = 0;\
- break;\
- }\
- else if(state_err_cnt>THRS){\
- temp_return = 1;\
- break;\
- }\
- else {\
- wait_ms(1);\
- }\
- }\
- }\
-}\
-/*Assert_phy_off_ends*/
-
-
-
-
-
+ int temp_return = 0;
+ while(count<10 && miso_err_cnt<10){
+ if(MISO_PIN){
+ assrt_phy_off(temp_return);
if(!temp_return){
return 0;
}
count++;
- } else {
+ }
+ else{
wait_us(50);
miso_err_cnt++;
}
@@ -268,158 +152,46 @@
}
return 1;
}
-//for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
+
+//for reseting the transmission call assert function after b5 and b1. after b1 assert_phi_on and after b5 assert_phi_tx.
//----------------------------------------------------------------------------
-unsigned char temp;
-bool reg_err;
-int reg_err_cnt;
-#define REG_ERR_THRS 5
-#define reg_check(addr1,addr2,reg_val){\
- gCS_ADF=0;\
- reg_err=false;\
- spi.write(addr1);\
- spi.write(addr2);\
- spi.write(0xFF);\
- temp = spi.write(0xFF);\
- if(temp==reg_val)\
- reg_err = false;\
- else\
- reg_err=true;\
- gCS_ADF=1;\
-}
-
-#define initiate {\
+
+# define initiate {\
+ SPI_mutex.lock();\
gCS_ADF=0;\
spi.write(0xFF);\
spi.write(0xFF);\
gCS_ADF=1;\
- reg_err=true;\
- for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
- gCS_ADF=0;\
- spi.write(0x08);\
- spi.write(0x14);\
- spi.write(TRANSMIT_LEN_1);\
- gCS_ADF=1;\
- reg_check(0x28,0x14,TRANSMIT_LEN_1);\
- }\
- if(reg_err)\
- gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
- else\
- gPC.printf("reg written successful %x \r\n",(int)temp);\
- reg_err=true;\
- for(reg_err_cnt=0;reg_err_cnt<REG_ERR_THRS && reg_err;reg_err_cnt++){\
- gCS_ADF=0;\
- spi.write(0x08);\
- spi.write(0x15);\
- spi.write(TRANSMIT_LEN_2);\
- gCS_ADF=1;\
- reg_check(0x28,0x15,TRANSMIT_LEN_2);\
- }\
- if(reg_err)\
- gPC.printf("Reg_err_ignored %x \r\n",(int)temp);\
- else\
- gPC.printf("reg written successful %x \r\n",(int)temp);\
-}
-
-#define write_data {\
- counter++;\
+ gCS_ADF=0;\
+ spi.write(0x08);\
+ spi.write(0x14);\
+ spi.write(0xFF);\
+ gCS_ADF=1;\
gCS_ADF=0;\
- spi.write(0x0B);\
- spi.write(0x36);\
- spi.write(0xFF);\
+ spi.write(0x08);\
+ spi.write(0x15);\
+ spi.write(0xFF);\
+ gCS_ADF=1;\
+ gCS_ADF=0;\
+ spi.write(0x09);\
+ spi.write(0x24);\
+ spi.write(0x20);\
gCS_ADF=1;\
- data_err_cnt=0;\
- data_err=true;\
- while(data_err && (data_err_cnt<DATA_ERR_THRS)){\
- gCS_ADF=0;\
- if(buffer_state){\
- spi.write(0x18);\
- spi.write(0x20);\
- for(unsigned char i=0; i<112;i++){\
- if(bypass_adf)\
- gPC.putc(buffer_112[i]);\
- else\
- spi.write(buffer_112[i]);\
- /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
- }\
- }\
- else{\
- spi.write(0x18);\
- spi.write(0x90);\
- for(unsigned char i=0; i<112;i++){\
- if(bypass_adf)\
- gPC.putc(buffer_112[i]);\
- else\
- spi.write(buffer_112[i]);\
- /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
- }\
- }\
- gCS_ADF=1;\
- wait_us(5);\
- data_err=false;\
- gCS_ADF=0;\
- spi.write(0x38);\
- if(buffer_state){\
- spi.write(0x20);\
- }\
- else{\
- spi.write(0x90);\
- }\
- spi.write(0xFF);\
- for(unsigned char i=0; i<112;i++){\
- temp_byte=spi.write(0xFF);\
- if(buffer_112[i]!=temp_byte){\
- data_err1[i]=1;\
- data_err=true;\
- }\
- }\
+ gCS_ADF=0;\
+ spi.write(0x09);\
+ spi.write(0x37);\
+ spi.write(0xE0);\
gCS_ADF=1;\
- /*SPI_mutex.unlock();*/\
- if(data_err==false){\
- buffer_state = !buffer_state;\
- }\
- data_err_cnt++;\
- if(last_buffer){\
- finish_write_data = true;\
- /*gPC.puts("adf_off\r\n");*/\
- }\
- }\
-}
-
-#define check {\
- check_status;\
- /*gPC.printf("I 0x%X\r\n",(int)status);*/\
- if(IRQ || bypass_adf){\
- /*gPC.printf("det\r\n");*/\
- if(!ADF_off) {\
- if(finish_write_data) {\
- write_data;\
- ADF_off=true;\
- } else {\
- write_data;\
- if(sent_tmfrom_SDcard)\
- send_tm_from_SD_card_fun();\
- else snd_tm.transmit_data(buffer_112,&last_buffer);\
- }\
- } else {\
- wait_ms(20);\
- gCS_ADF=0;\
- spi.write(0xB1);\
- gCS_ADF=1;\
- gPC.puts("transmission done\r\n");\
- loop_on=false;\
- }\
- }\
- else{\
- if(T.read_us()>98000){\
- data_irq_err=true;\
- CMD(CMD_PHY_ON);\
- gPC.printf("Data_error_detected");\
- }\
- }\
-}
-
-#define send_data {\
+ gCS_ADF=0;\
+ spi.write(0x09);\
+ spi.write(0x36);\
+ spi.write(0x70);\
+ gCS_ADF=1;\
+ gCS_ADF=0;\
+ spi.write(0x09);\
+ spi.write(0x39);\
+ spi.write(0x10);\
+ gCS_ADF=1;\
gCS_ADF=0;\
spi.write(0xBB);\
gCS_ADF=1;\
@@ -427,7 +199,58 @@
spi.write(0xFF);\
spi.write(0xFF);\
gCS_ADF=1;\
- if(sent_tmfrom_SDcard){\
+ SPI_mutex.unlock();\
+}
+
+#define write_data {\
+ SPI_mutex.lock();\
+ gCS_ADF=0;\
+ spi.write(0x0B);\
+ spi.write(0x36);\
+ spi.write(0xFF);\
+ gCS_ADF=1;\
+ gCS_ADF=0;\
+ if(buffer_state){\
+ spi.write(0x18);\
+ spi.write(0x20);\
+ for(unsigned char i=0; i<112;i++){\
+ if(bypass_adf)\
+ gPC.putc(buffer_112[i]);\
+ else\
+ spi.write(buffer_112[i]);\
+ /*gPC.printf("%02X",buffer_112[i])*/;\
+ }\
+ }\
+ else{\
+ spi.write(0x18);\
+ spi.write(0x90);\
+ for(unsigned char i=0; i<112;i++){\
+ if(bypass_adf)\
+ gPC.putc(buffer_112[i]);\
+ else\
+ spi.write(buffer_112[i]);\
+ /*gPC.printf("%02X",buffer_112[i])*/;\
+ }\
+ }\
+ gCS_ADF=1;\
+ SPI_mutex.unlock();\
+ buffer_state = !buffer_state;\
+ if(last_buffer){\
+ finish_write_data = true;\
+ /*gPC.puts("adf_off\r\n");*/\
+ }\
+}
+
+/*
+void check(){
+ if(IRQ){
+ gCOM_MNG_TMTC_THREAD->signal_set(signal);
+ }
+}*/
+
+
+#define send_data {\
+if(sent_tmfrom_SDcard){\
send_tm_from_SD_card_fun();\
}else{\
snd_tm.transmit_data(buffer_112,&last_buffer);\
@@ -444,6 +267,7 @@
}else{\
snd_tm.transmit_data(buffer_112,&last_buffer);\
}\
+ SPI_mutex.lock();\
gCS_ADF=0;\
spi.write(0xB1);\
gCS_ADF=1;\
@@ -460,114 +284,54 @@
spi.write(0xFF);\
spi.write(0xFF);\
gCS_ADF=1;\
+ SPI_mutex.unlock();\
+ /*ticker.attach_us(&check,32000);*/\
}
-
-#define initial_adf_check {\
- bool Configuration_Done=false;\
- quit_configuration=false;\
- bool reset_flag1 = 0;\
- bool flag = false;\
- while((hw_reset_err_cnt<HW_THRS)&&(quit_configuration==false)){\
- while((bbram_err_cnt<2)&&(quit_configuration==false)){\
- /*assrt_phy_off;*/\
- /*Assrt_phy_off Begin*/\
- {\
- int state_err_cnt = 0;\
- CMD(CMD_PHY_OFF);\
- if(cmd_err_flag){\
- temp_return=1;\
- }\
- else{\
- for(int i = 0 ; i < 40 ;i++){\
- CMD(CMD_PHY_OFF);\
- check_status;\
- if(status == PHY_OFF){\
- temp_return = 0;\
- break;\
- }\
- else if(state_err_cnt>THRS){\
- temp_return = 1;\
- break;\
- }\
- else {\
- wait_ms(1);\
- }\
- }\
- }\
-}\
- /*Assrt_phy_off end*/\
- reset_flag1=temp_return;\
- if(!reset_flag1){\
- bbram_write;\
- while((rbp_err_cnt<RBP_THRS)&&(quit_configuration==false)){\
- bbram_check;\
- if(bbram_err==0){\
- bbram_write_success=true;\
- bbram_err_cnt=0;\
- initiate;\
- if(reg_err){\
- rbp_err_cnt++;\
- }\
- else{\
- rbp_err_cnt=0;\
- gPC.printf("NO Reg err\r\n");\
- CMD(CMD_CONFIG_DEV);\
- if(cmd_err_flag){\
- reset_flag=1;\
- gPC.printf("CMD ERR\r\n");\
- }\
- else{\
- reset_flag=0;\
- gPC.printf("NO CMD ERR CONFIG_DONE\r\n");\
- quit_configuration=true;\
- }\
- }\
- }\
- else{\
- bbram_write_success=false;\
- bbram_err_cnt++;\
- break;\
- }\
- }\
- }\
- else{\
- break;\
- }\
- }\
- if(reset_flag1){\
- hardware_reset(0);\
- hw_reset_err_cnt++;\
- gPC.puts("Resetting hardware\r\n");\
- }\
- }\
- if(hw_reset_err_cnt==HW_THRS){\
- power_reset_flag=1;\
- power_reset_count++;\
- }\
- else{\
- Configuration_Done=true;\
- gPC.printf("Configuration_Done\n");\
- }\
-}
-
+
#define configure_adf {\
- reset_flags;\
+ finish_write_data = false;\
+ buffer_state = true;\
+ last_buffer = false;\
+ loop_on = true;\
+ ADF_off = false;\
initial_adf_check;\
- gPC.puts("Config_part done\r\n");\
+ gPC.puts("initial adf check\r\n");\
+ initiate;\
+ gPC.puts("adf configured\r\n");\
+ /*gLEDR = !gLEDR;*/\
}
#define transmit_adf {\
configure_adf;\
+ if(sent_tmfrom_SDcard)\
+ signal = COM_MNG_TMTC_SIGNAL_ADF_SD;\
+ else signal = COM_MNG_TMTC_SIGNAL_ADF_NSD;\
send_data;\
- CMD(CMD_PHY_TX);\
- wait_us(2000);\
while(loop_on){\
- wait_us(20);\
- check;\
- if(data_irq_err){\
- break;\
+ wait_ms(COM_TX_TICKER_LIMIT);\
+ if(IRQ || bypass_adf){\
+ if(finish_write_data){\
+ if(ADF_off){\
+ SPI_mutex.lock();\
+ gCS_ADF=0;\
+ spi.write(0xB1);\
+ gCS_ADF=1;\
+ SPI_mutex.unlock();\
+ loop_on = false;\
+ gPC.puts("Transmission done\r\n");\
+ gLEDR = 1;\
+ }\
+ else{\
+ ADF_off = true;\
+ }\
+ }else{\
+ gLEDG = !gLEDG;\
+ write_data;\
+ if(sent_tmfrom_SDcard)\
+ send_tm_from_SD_card_fun();\
+ else snd_tm.transmit_data(buffer_112,&last_buffer);\
+ }\
}\
}\
/*gPC.puts("after while loop\r\n");*/\
-}
-
+}
\ No newline at end of file
--- a/cdms_sd.h Tue Jul 12 17:54:30 2016 +0000
+++ b/cdms_sd.h Thu Jul 14 13:07:30 2016 +0000
@@ -4,7 +4,7 @@
//Serial sd1(USBTX,USBRX);
-#define SD_COMMAND_TIMEOUT 5000
+#define SD_COMMAND_TIMEOUT 325
#define SD_DBG 0
@@ -56,7 +56,7 @@
int SD_WRITE(uint8_t*,uint32_t,uint8_t);
int FCTN_CDMS_SD_INIT();
uint8_t SD_READ(uint8_t*,uint32_t,uint8_t);
-#define SDCARD_FAIL 0
+#define SDCARD_FAIL 4
#define SDCARD_V1 1
#define SDCARD_V2 2
#define SDCARD_V2HC 3
@@ -68,6 +68,8 @@
int FCTN_CDMS_SD_INIT()
{
int i = initialise_card();
+ if( i == 4)
+ return 4;
debug_if(SD_DBG, "init card = %d\n", i);
sectors = sd_sectors();
@@ -78,7 +80,7 @@
} else {
//printf("\rDisk initialization successfull\r\n");
}
-
+ SD_STATUS = DEVICE_POWERED;
spi.frequency(1000000); // Set to 1MHz for data transfer
return 0;
}
@@ -88,7 +90,9 @@
uint32_t fsc;
uint32_t start_fsc;
uint8_t buffer[512];
- int b=disk_read(buffer, SD_MNG_SECT);
+ int b;
+ if(SD_STATUS == DEVICE_POWERED){
+ b=disk_read(buffer, SD_MNG_SECT);
fsc=(uint32_t)(buffer[0]<<24)+(uint32_t)(buffer[1]<<16)+(uint32_t)(buffer[2]<<8)+(uint32_t)buffer[3];
start_fsc=(uint32_t)(buffer[4]<<24)+(uint32_t)(buffer[5]<<16)+(uint32_t)(buffer[6]<<8)+(uint32_t)buffer[7];
@@ -114,6 +118,7 @@
start_fsc=(uint32_t)(buffer[36]<<24)+(uint32_t)(buffer[37]<<16)+(uint32_t)(buffer[38]<<8)+(uint32_t)buffer[39];
FSC_CURRENT[5] = fsc;
FSC_LAST[5] = start_fsc;
+ }
}
int INCREMENT_SD_LIB(uint8_t sid)
@@ -259,6 +264,7 @@
{
uint32_t block_number;
int result = 10;
+ if(SD_STATUS == DEVICE_POWERED){
if(sid==0x01)
{
//block_number=SD_SCP_FIRST+(fsc%(SD_SCP_LAST-SD_SCP_FIRST+1))-1;
@@ -319,6 +325,7 @@
}
return result;
}
+ }
return 1;
}
--- a/main.cpp Tue Jul 12 17:54:30 2016 +0000
+++ b/main.cpp Thu Jul 14 13:07:30 2016 +0000
@@ -28,10 +28,11 @@
#include "Flash.h"
#include "CDMS_PL.h"
#include "FMS_all.h"
+#include "Compression.h"
#include "COM_MNG_TMTC.h"
#include "COM_POWER_ON_TX.h"
#include "COM_POWER_OFF_TX.h"
-#include "Compression.h"
+
#include "ThreadsAndFunctions.h"
#include "TEST_PL.h"
@@ -85,6 +86,47 @@
gPC.puts("exit_adf\r\n");\
}
+
+#define BAE_tc(tm_ptr) {\
+ Base_tc *bae_tc = new Long_tc;\
+ bae_tc->next_TC = NULL;\
+ PUTshort_or_long(bae_tc,0);\
+ PUTcrc_pass(bae_tc,0x1);\
+ PUTexec_status(bae_tc,0);\
+ bae_tc->TC_string[0] = 0x01;\
+ bae_tc->TC_string[1] = 0x71;\
+ bae_tc->TC_string[2] = 0x81;\
+ bae_tc->TC_string[3] = 0x32;\
+ bae_tc->TC_string[4] = 0;\
+ bae_tc->TC_string[5] = 0;\
+ bae_tc->TC_string[6] = 0;\
+ bae_tc->TC_string[7] = 0;\
+ bae_tc->TC_string[8] = 0;\
+ uint16_t crc16 = crc16_gen(bae_tc->TC_string, 9);\
+ bae_tc->TC_string[9] = (uint8_t)(crc16 & 0xFF00)>>8;\
+ bae_tc->TC_string[10] = (uint8_t)(crc16 & 0x00FF);\
+ for(uint8_t i=11;i<135;i++)\
+ bae_tc->TC_string[i] = 0;\
+ tm_ptr = FCTN_CDMS_RLY_TMTC(bae_tc);\
+ delete bae_tc;\
+ Base_tm *temp;\
+ temp = tm_ptr;\
+ while(tm_ptr!=NULL)\
+ {\
+ temp = temp->next_TM;\
+ delete tm_ptr;\
+ tm_ptr = temp;\
+ }\
+}
+
+void BAE_TC();
+void BAE_TC()
+{
+ Base_tm *tm_ptr = new Long_tm;
+ BAE_tc(tm_ptr);
+}
+
+
int main()
{
@@ -102,7 +144,7 @@
// COMMON SPI
spi.format(8,0);
- spi.frequency(1000000);
+ spi.frequency(500000);
// SD CARD
cs_sd = 1;
@@ -110,7 +152,7 @@
gCS_ADF = 1;
FCTN_CDMS_INIT_RTC();/* rtc initialization*/
- //FCTN_CDMS_SD_INIT();/* sd card initialization*/
+ FCTN_CDMS_SD_INIT();/* sd card initialization*/
//uint8_t test[512] = {0};
@@ -142,14 +184,15 @@
master.frequency(400000);
- /*HK_counter = new RtosTimer(hk_isr, osTimerPeriodic,(void * )NULL);
- HK_counter->start(10000);*/
+ HK_counter = new RtosTimer(hk_isr, osTimerPeriodic,(void * )NULL);
+ HK_counter->start(10000);
- 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;
+ flipper.attach(BAE_TC,31);*/
/*while(1){
gPC.printf("PL_TC sending\r\n");
