
Repository for CDMS code
Dependencies: SimpleDMA mbed-rtos mbed eeprom
Fork of COM_MNG_TMTC_SIMPLE 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");