
CDMS code for testing sbc
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Revision 258:7d404e9dc9e2, committed 2016-07-12
- Comitter:
- chaithanyarss
- Date:
- Tue Jul 12 17:07:17 2016 +0000
- Parent:
- 254:22d97475ca79
- Child:
- 259:066a7abd2a5f
- Commit message:
- pipi;
Changed in this revision
--- a/CDMS_HK.h Tue Jul 12 11:10:48 2016 +0000 +++ b/CDMS_HK.h Tue Jul 12 17:07:17 2016 +0000 @@ -1,5 +1,3 @@ - - void FCTN_CDMS_HK_MAIN(); void FCTN_CDMS_HK(); void VERIFY_COMRX(); @@ -41,10 +39,11 @@ { while(1) { + gHK_THREAD->signal_wait(HK_SIGNAL); gPC.printf("Entering HK thread"); - gHK_THREAD->signal_wait(HK_SIGNAL); + gMutex.lock(); - gPC.printf("HK thread signal set"); + CDMS_HK_MAIN_STATUS = 0x01; CDMS_HK_MAIN_COUNTER++; @@ -54,43 +53,42 @@ VERIFY_RTC(); HANDLE_HW_FAULTS(); FUNC_CDMS_GPIO_STATUS(); //yet to be done - gPC.printf("Checking RTCoun"); - uint8_t CDMS_quant[19]; + + uint8_t CDMS_quant[20]; + CDMS_quant[1]= (uint8_t)quant_data.CDMS_temp_quant; + CDMS_quant[2]= (uint8_t)RSSI_volatge; for(int i=0; i<16; i++) { - CDMS_quant[i]= (uint8_t)quant_data.temp_quant[i]; + CDMS_quant[i+4]= (uint8_t)quant_data.temp_quant[i]; } - CDMS_quant[16]= (uint8_t)RSSI_volatge; - CDMS_quant[17]= (uint8_t)quant_data.CDMS_temp_quant; minMaxHkData(); - gPC.printf("here1"); - uint64_t time = FCTN_CDMS_RD_RTC(); //Reading Time from RTC - gPC.printf("0x%08X \n",time); - time = time>>7; - uint32_t HK_time = (uint32_t)time; - for(int i = 0; i<4; i++) - CDMS_HEALTH_DATA[i] = HK_time >> i; - gPC.printf("here2"); - // Here: Have to FIT flash data. - for(int i = 0; i<19; i++) //Collecting Data from Temp sensors - CDMS_HEALTH_DATA[i+24] = CDMS_quant[i]; - COLLECT_CDMS_RAM(); //Reading RAM parameters + CDMS_HEALTH_DATA[1] = GPIO_STATUS; //Reading GPIO Pins + CDMS_HEALTH_DATA[0] = GPIO_STATUS >> 8; + COLLECT_CDMS_RAM(); + for(int i = 0;i<84;i++) + CDMS_HEALTH_DATA[2+i] = CDMS_RAM[i]; //Reading RAM parameters + for(int i = 0;i<20;i++) //Collecting Data from Temp sensors + CDMS_HEALTH_DATA[86+i] = CDMS_quant[i]; - CDMS_HEALTH_DATA[126] = GPIO_STATUS; //Reading GPIO Pins - CDMS_HEALTH_DATA[127] = GPIO_STATUS >> 8; + // Here: Have to FIT flash data. + + 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; + FCTN_SD_MNGR(); //Adding FSC & TMID to TM frame CDMS_HK_FRAME[0] = 0x20; CDMS_HK_FRAME[1] = FSC_CURRENT[4]+1; CDMS_HK_FRAME[2] = (FSC_CURRENT[4]+1) >> 8; CDMS_HK_FRAME[3] = (FSC_CURRENT[4]+1) >> 16; - gPC.printf("here3"); + for(int i = 0; i<128; i++) /*Adding actual CDMS Health data to TM frame*/ CDMS_HK_FRAME[4+i] = CDMS_HEALTH_DATA[i]; uint16_t crc = crc16_gen(CDMS_HK_FRAME,132); /*Adding CRC to TM frame*/ CDMS_HK_FRAME[133] = crc; CDMS_HK_FRAME[132] = crc >> 8; - + exor(CDMS_HK_FRAME); CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME , convoluted_CDMS_HK); CDMS_HEALTH.convolutionEncode(CDMS_HK_FRAME + 67, convoluted_CDMS_HK + 135); @@ -99,7 +97,7 @@ 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); + SD_WRITE(CDMS_HEALTH_FINAL,FSC_CURRENT[4]+1,4); gPC.printf("\rCompleted CDMS HK\n"); /*---------------------------------- BAE HK --------------------------------------------*/ @@ -114,7 +112,7 @@ 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] = HK_time >> i; + BAE_HK[i] = time >> i; BAE_HK_FRAME[0] = 0x28; BAE_HK_FRAME[1] = FSC_CURRENT[5]+1; BAE_HK_FRAME[2] = (FSC_CURRENT[5]+1) >> 8; @@ -279,6 +277,10 @@ GPIO_STATUS=(PL_BEE_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<5)):(GPIO_STATUS)&(~((uint16_t)(0x1<<5))); //PL_EPS_LATCH_SW_OC_FAULT // to be verified GPIO_STATUS=(PL_EPS_LATCH_SW_OC_FAULT)?(GPIO_STATUS)||((uint16_t)(0x1<<4)):(GPIO_STATUS)&(~((uint16_t)(0x1<<4))); + //EPS_V_C_EN_STATUS + GPIO_STATUS=(EPS_V_C_EN_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<3)):(GPIO_STATUS)&(~((uint16_t)(0x1<<3))); + //EPS_V_D_EN_STATUS + GPIO_STATUS=(EPS_V_D_EN_STATUS)?(GPIO_STATUS)||((uint16_t)(0x1<<2)):(GPIO_STATUS)&(~((uint16_t)(0x1<<2))); } @@ -306,7 +308,6 @@ gCS_RTC=0; spi.write(0x0F); if(spi.write(0x00) & 0x04 == 0x04) { - RTC_STATUS = 0x00; RESET_RTC(); RTC_FAULTCOUNT++; @@ -398,72 +399,56 @@ void COLLECT_CDMS_RAM() { - /*--------------------Current FSC's---------------------*/ - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+43] = FSC_LAST[5] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+47] = FSC_CURRENT[5] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+51] = FSC_LAST[4] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+55] = FSC_CURRENT[4] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+59] = FSC_LAST[3] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+63] = FSC_CURRENT[3] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+67] = FSC_LAST[2] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+71] = FSC_CURRENT[2] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+75] = FSC_LAST[1] >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+79] = FSC_CURRENT[1] >> (i*8); - /*---------------------Latest Time----------------------*/ - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+83] = TIME_LATEST_SPI_SPEED >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+87] = TIME_LATEST_SD_RD >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+91] = TIME_LATEST_SD_WR >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+95] = TIME_LATEST_I2C_SPEED >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+99] = TIME_LATEST_I2C_BAE >> (i*8); - for(int i=0; i<4; i++) - CDMS_HEALTH_DATA[i+103] = TIME_LATEST_RTC >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+107] = COMRX_RESET_COUNTER >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+107] = PL_RCV_SC_DATA_COUNTER >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+111] = PL_MAIN_COUNTER >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+113] = CDMS_HK_MAIN_COUNTER >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+115] = CDMS_I2C_ERR_BAE_COUNTER >> (i*8); - for(int i=0; i<2; i++) - CDMS_HEALTH_DATA[i+117] = CDMS_I2C_ERR_SPEED_COUNTER >> (i*8); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | CDMS_STANDBY_PL << 7; - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_INIT_STATUS << 6) & 0x40); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_MAIN_STATUS << 5) & 0x20); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_HK_STATUS << 3) & 0x18); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((COMRX_STATUS << 2) & 0x04); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] | ((CDMS_RTC_BL << 1) & 0x02); - CDMS_HEALTH_DATA[120] = CDMS_HEALTH_DATA[120] & 0xFE; - - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | PL_RCV_SC_DATA_STATUS << 7; - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_SESSION << 6) & 0x40); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_RX << 5) & 0x20); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((RF_SW_STATUS << 4) & 0x10); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX << 3) & 0x08); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_TX_STATUS << 2) & 0x04); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | ((COM_MNG_TMTC << 1) & 0x02); - CDMS_HEALTH_DATA[121] = CDMS_HEALTH_DATA[121] | (CDMS_STANDBY_HK & 0x01); - - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | PL_INIT_STATUS << 7; - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_MAIN_STATUS << 6) & 0x40); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_LOW_POWER << 5) & 0x20); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | ((PL_STATE << 3) & 0x18); - CDMS_HEALTH_DATA[122] = CDMS_HEALTH_DATA[122] | (PL_STATUS & 0x07); + CDMS_RAM[0] = ((PL_INIT_STATUS<<7)&0x80)|((PL_MAIN_STATUS<<6)&0x40)|((PL_LOW_POWER<<5)&0x20)|((PL_STATE<<3)&0x18)|(PL_STATUS&0x07); + CDMS_RAM[1] = ((PL_RCV_SC_DATA_STATUS<<7)&0x80)|((COM_SESSION<<6)&0x40)|((COM_RX<<5)&0x20)|((RF_SW_STATUS<<4)&0x10)|((COM_TX<<3)&0x08)|((COM_TX_STATUS<<2)&0x04)|((COM_MNG_TMTC<<1)&0x02)|(EN_CDMS_HK&0x01); + CDMS_RAM[2] = ((EN_PL<<7)&0x80)|((EN_RCV_SC<<6)&0x40)|((CDMS_INIT_STATUS<<5)&0x20)|((CDMS_HK_MAIN_STATUS<<4)&0x10)|((CDMS_HK_STATUS<<2)&0x0C)|((COM_RX_STATUS<<1)&0x02)|(CDMS_RTC_BL&0x01); + CDMS_RAM[3] = CDMS_I2C_ERR_SPEED_COUNTER >> 8; + CDMS_RAM[4] = CDMS_I2C_ERR_SPEED_COUNTER; + CDMS_RAM[5] = CDMS_I2C_ERR_BAE_COUNTER >> 8; + CDMS_RAM[6] = CDMS_I2C_ERR_BAE_COUNTER; + CDMS_RAM[7] = CDMS_HK_MAIN_COUNTER >> 8; + CDMS_RAM[8] = CDMS_HK_MAIN_COUNTER; + CDMS_RAM[9] = PL_MAIN_COUNTER >> 8; + CDMS_RAM[10] = PL_MAIN_COUNTER; + CDMS_RAM[11] = PL_RCV_SC_DATA_COUNTER >> 8; + CDMS_RAM[12] = PL_RCV_SC_DATA_COUNTER; + CDMS_RAM[13] = COMRX_RESET_COUNTER >> 8; + CDMS_RAM[14] = COMRX_RESET_COUNTER; + CDMS_RAM[15] = CDMS_WR_SD_FAULT_COUNTER >> 8; + CDMS_RAM[16] = CDMS_WR_SD_FAULT_COUNTER; + CDMS_RAM[17] = SD_LIB_WRITES >> 8; + CDMS_RAM[18] = SD_LIB_WRITES; + for(int i = 0; i<4; i++) + CDMS_RAM[19+i] = TIME_LATEST_RTC >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[23+i] = TIME_LATEST_I2C_BAE >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[27+i] = TIME_LATEST_I2C_SPEED >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[31+i] = TIME_LATEST_SD_WR >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[35+i] = TIME_LATEST_SD_RD >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[39+i] = TIME_LATEST_SPI_SPEED >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[43+i] = FSC_CURRENT[1] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[47+i] = FSC_LAST[1] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[51+i] = FSC_CURRENT[2] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[55+i] = FSC_LAST[2] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[59+i] = FSC_CURRENT[3] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[63+i] = FSC_LAST[3] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[67+i] = FSC_CURRENT[4] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[71+i] = FSC_LAST[4] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[75+i] = FSC_CURRENT[5] >> i*8; + for(int i = 0; i<4; i++) + CDMS_RAM[79+i] = FSC_LAST[5] >> i*8; + CDMS_RAM[83] = 0x00; } \ No newline at end of file
--- a/CDMS_PL.h Tue Jul 12 11:10:48 2016 +0000 +++ b/CDMS_PL.h Tue Jul 12 17:07:17 2016 +0000 @@ -6,7 +6,7 @@ uint32_t pl_time; uint32_t TIME_LATEST_PL=0; uint8_t i; -uint8_t PL_BEE_SW_STATUS=0; +//extern uint8_t PL_BEE_SW_STATUS=0; //Serial pc(USBTX,USBRX);
--- a/COM_MNG_TMTC.h Tue Jul 12 11:10:48 2016 +0000 +++ b/COM_MNG_TMTC.h Tue Jul 12 17:07:17 2016 +0000 @@ -16,6 +16,25 @@ //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; @@ -31,7 +50,7 @@ uint8_t ACK_CODE; void TM_PMS_PL_SCHEDULE(Base_tm* tm_pointer1,uint8_t psc); -void ACK_L234(Base_tm* tm_pointer_short1,uint8_t ackCode,uint8_t psc); +void ACK_L234(Base_tm* tm_pointer1,uint8_t ackCode,uint8_t psc); #define delete_TC(tc_ptr) {\ if(tc_ptr == gHEAD_NODE_TCL){\ @@ -201,19 +220,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_pointer_short1,uint8_t ackCode,uint8_t psc) +void ACK_L234(Base_tm* tm_pointer1,uint8_t ackCode,uint8_t psc) { - 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; + 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; for(uint8_t i=0;i<6;i++) - 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; + 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; } void TM_PMS_PL_SCHEDULE(Base_tm *tm_pointer1,uint8_t psc) { @@ -348,26 +367,23 @@ //uint8_t ACKCODE = 0xB0; bool y; //gPC.printf("\rTC execution in progress\r\n"); - Base_tm *tm_pointer = new Long_tm; + Base_tm *tm_pointer = new Base_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_ptr_short,0x03,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x03,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(y==0) { @@ -390,17 +406,17 @@ } else if(y==1) { - ACK_L234(tm_ptr_short,0x85,GETpacket_seq_count(tc_ptr)); + ACK_L234(tm_pointer,0x85,GETpacket_seq_count(tc_ptr)); //gPC.printf("\n\rPTE->PDIR = 0x%08X",PTE->PDIR); - return tm_ptr_short; + return tm_ptr; 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_ptr_short,0x84,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x84,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } BAE_I2C_mutex.unlock(); @@ -411,7 +427,7 @@ //gPC.printf("Telecommand is for CDMS\r\n"); //apid = 10 corresponds to cdms switch(GETservice_type(tc_ptr)) { - /*case 0x60: //service type = 0x6 + case 0x60: //service type = 0x6 { gPC.printf("service:MMS\r\n"); switch(GETservice_subtype(tc_ptr)) @@ -422,19 +438,20 @@ mid=((uint16_t)(tc_ptr->TC_string[3]<<4))+((uint16_t)(tc_ptr->TC_string[4])); if(mid!=0x0000 && mid!=0x0001) { - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } - FCTN_CDMS_RD_L_RAM(tm_pointer); 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[11] = (uint8_t)((crc16&0xFF00)>>8); - tm_pointer->TM_string[12] = (uint8_t)(crc16&0x00FF); + tm_pointer->TM_string[132] = (uint8_t)((crc16&0xFF00)>>8); + tm_pointer->TM_string[133] = (uint8_t)(crc16&0x00FF); tm_pointer->next_TM = NULL; return tm_ptr; } @@ -444,17 +461,17 @@ mid=(uint16_t)(tc_ptr->TC_string[3]<<4)+(uint16_t)(tc_ptr->TC_string[4]); //32 bits at a time - if(mid!= && mid!=) //allowable MID values? + if(mid<0 || mid>4) //allowable MID values? { - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } + + 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])); - FCTN_CDMS_WR_S_FLASH(tc_ptr); + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); //ackCode = ? for success - ACK_L234(tm_ptr_short,???,GETpacket_seq_count(tc_ptr)); //ackCode = ? for success - - return tm_ptr_short; + return tm_ptr; } case 0x6: { @@ -464,20 +481,20 @@ if(mid<0x0002 || mid>0x000A) //allowable MID values? { - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); //ackCode = ? for invalid mid - return tm_ptr_short; + 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 + //Send TM for success after writing onto flash FCTN_CDMS_WR_L_FLASH(mid); - return tm_ptr_short; + return tm_ptr; } default: { gPC.printf("INVALID SERVICE SUBTYPE\r\n"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } } */ @@ -494,13 +511,13 @@ P_PL_INIT(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x02) @@ -511,13 +528,13 @@ P_PL_MAIN(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x03) @@ -528,13 +545,13 @@ P_COM_INIT(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x04) @@ -545,13 +562,13 @@ P_CDMS_HK_MAIN(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x05) @@ -562,13 +579,13 @@ P_PL_RCV_SC_DATA(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x06) @@ -579,13 +596,13 @@ P_CDMS_INIT_SD(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(CDMS_STANDBY==0) { - ACK_L234(tm_ptr_short,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now - return tm_ptr_short; + ACK_L234(tm_pointer,0x87,GETpacket_seq_count(tc_ptr)); //TC cannot be processed now + return tm_ptr; } } else if(GETpid(tc_ptr)==0x11) @@ -594,8 +611,8 @@ CDMS_SD_SW_ON(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x21) { @@ -603,8 +620,26 @@ CDMS_SD_SW_OFF(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; + } + else if(GETpid(tc_ptr)==0x12) + { + //gPC.printf("TC_SW_ON_SD\r\n"); // call PWR_SWCH_ON function + + CDMS_RTC_ON(); + + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; + } + else if(GETpid(tc_ptr)==0x22) + { + //gPC.printf("TC_SW_ON_SD\r\n"); // call PWR_SWCH_ON function + + CDMS_RTC_OFF(); + + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x13) { @@ -612,8 +647,8 @@ SW_ON_BAE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x23) { @@ -621,8 +656,8 @@ SW_OFF_BAE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x14) { @@ -630,8 +665,8 @@ SW_ON_PL_BEE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x24) { @@ -639,8 +674,8 @@ SW_OFF_PL_BEE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x15) { @@ -648,8 +683,8 @@ SW_ON_PL_EPS(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x25) { @@ -657,8 +692,8 @@ SW_OFF_PL_EPS(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x16) { @@ -667,8 +702,8 @@ SW_ON_V_A_EN(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x26) { @@ -676,8 +711,8 @@ SW_OFF_V_A_EN(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x31) { @@ -685,8 +720,8 @@ RST_SD(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x33) { @@ -694,8 +729,8 @@ RST_BAE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x34) { @@ -703,24 +738,25 @@ RST_PL_BEE(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x38) { //gPC.printf() CDMS_INTERNAL_RESET(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x40) { //gPC.printf("RESET_HK_COUNTER\r\n"); // call PWR_SWCH_ON function - RST_HK_COUNTER(); + STANDBY_PRCS(); //////// Need to Complete this function - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0x41) { @@ -728,22 +764,22 @@ RST_HK_COUNTER(); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } else if(GETpid(tc_ptr)==0xF1) { //gPC.printf("TC_CDMS_RD_RTC\r\n"); // call PWR_SWCH_ON function - /*uint32_t time_temp = FCTN_CDMS_RD_RTC(); //RTC_RD_EROR has to incorporated + 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; + tm_pointer->TM_string[2] = 0xA0; // ACK CODE tm_pointer->TM_string[3] = 0x00; - tm_pointer->TM_string[4] = (uint8_t)((time & 0xFF000000)>>24); - tm_pointer->TM_string[5] = (uint8_t)((time & 0x00FF0000)>>16); - tm_pointer->TM_string[6] = (uint8_t)((time & 0x0000FF00)>>8); - tm_pointer->TM_string[7] = (uint8_t)((time & 0x000000FF)); + tm_pointer->TM_string[4] = (uint8_t)((time_temp & 0xFF000000)>>24); + tm_pointer->TM_string[5] = (uint8_t)((time_temp & 0x00FF0000)>>16); + tm_pointer->TM_string[6] = (uint8_t)((time_temp & 0x0000FF00)>>8); + tm_pointer->TM_string[7] = (uint8_t)((time_temp & 0x000000FF)); for(uint8_t i=0;i<124;i++) { tm_pointer->TM_string[i+8] = 0x00; @@ -751,27 +787,50 @@ 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; - return tm_ptr; */ //incomplete + tm_pointer->next_TM = NULL; //incomplete + return tm_ptr; } else if(GETpid(tc_ptr)==0xF0) { uint8_t statusbits[64]; - CDMS_RD_SD_HK(statusbits); - ACK_L234(tm_ptr_short,0xC0,GETpacket_seq_count(tc_ptr)); + if( CDMS_RD_SD_HK(statusbits) != 0){ + ACK_L234(tm_pointer,0xC0,GETpacket_seq_count(tc_ptr)); + return tm_ptr; + } + else + { + 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[3] = 0x00; + for(int i=4;i<64;i++) + { + tm_pointer->TM_string[i+4] = (i<68)?statusbits[i]:0x00; + } + for(uint8_t i=68;i<132;i++) + { + tm_pointer->TM_string[i] = 0x00; + } + 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; + } } else { gPC.printf("INVALID FID\r\n"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } else { gPC.printf("INVALID SERVICE SUBTYPE\r\n"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } case 0x70: @@ -871,15 +930,15 @@ else { gPC.printf("INVALID SERVICE SUBTYPE\r\n"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } default: { gPC.printf("ILLEGAL TC"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } } @@ -895,8 +954,8 @@ if(y==1) { - ACK_L234(tm_ptr_short,0x03,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x03,GETpacket_seq_count(tc_ptr)); + return tm_ptr; break; } else if(y==0) @@ -921,25 +980,25 @@ } else if(y==1) { - ACK_L234(tm_ptr_short,0x85,GETpacket_seq_count(tc_ptr)); + ACK_L234(tm_pointer,0x85,GETpacket_seq_count(tc_ptr)); //gPC.printf("\n\rPTE->PDIR = 0x%08X",PTE->PDIR); - return tm_ptr_short; + return tm_ptr; 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_ptr_short,0x84,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x84,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } } default: //invalid TC { gPC.printf("INVALID TC\r\n"); - ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); - return tm_ptr_short; + ACK_L234(tm_pointer,0x02,GETpacket_seq_count(tc_ptr)); + return tm_ptr; } } return;
--- a/DefinitionsAndGlobals.h Tue Jul 12 11:10:48 2016 +0000 +++ b/DefinitionsAndGlobals.h Tue Jul 12 17:07:17 2016 +0000 @@ -264,19 +264,22 @@ DigitalIn COMRX_OC_FAULT (PIN68); DigitalIn COMTX_OC_FAULT (PIN69); DigitalIn BAE_OC_FAULT (PIN92); -DigitalIn PL_GPIO_1_STATUS (PIN71); -DigitalIn PL_GPIO_2_STATUS (PIN81); -DigitalIn PL_GPIO_3_STATUS (PIN80); +Digitalout PL_GPIO_1_STATUS (PIN71); +DigitalOut PL_GPIO_2_STATUS (PIN81); +DigitalOut PL_GPIO_3_STATUS (PIN80); DigitalIn PL_BEE_SW_OC_FAULT (PIN91); DigitalIn PL_EPS_LATCH_SW_OC_FAULT (PIN5); -DigitalIn V_D_EN_STATUS (PIN56); +DigitalOut EPS_V_C_EN_STATUS (PIN72); +DigitalOut EPS_V_D_EN_STATUS (PIN56); DigitalIn SD_OC_FAULT (PIN90); DigitalOut SD_SW_EN_DS (PIN97); DigitalOut BAE_SW_EN_DS (PIN47); -DigitalOut TRXY_PWR_CNTRL (PIN84); -DigitalOut TRZ_PWR_CNTRL (PIN88); +DigitalOut TRXY_EN (PIN84); +DigitalOut TRZ_EN (PIN88); +DigitalOut V_A_EN (PIN99); +DigitalOut Sys_pwr_rst (PIN96); DigitalOut PYLD_DFF (PIN73); DigitalOut PYLD_DFF_CLK (PIN65); @@ -306,6 +309,8 @@ uint16_t COMRX_RESET_COUNTER; uint16_t PL_MAIN_COUNTER; uint16_t PL_RCV_SC_DATA_COUNTER; +uint16_t CDMS_WR_SD_FAULT_COUNTER; +uint16_t SD_LIB_WRITES = 0; //CDMS RAM parameters uint8_t PL_INIT_STATUS; @@ -319,8 +324,29 @@ uint8_t COM_TX; uint8_t COM_TX_STATUS; uint8_t COM_MNG_TMTC; -uint8_t CDMS_STANDBY_HK; -uint8_t CDMS_STANDBY_PL; +uint8_t EN_CDMS_HK; +uint8_t EN_PL; +uint8_t EN_RCV_SC; uint8_t CDMS_INIT_STATUS; uint8_t CDMS_HK_STATUS; -uint8_t CDMS_RTC_BL; \ No newline at end of file +uint8_t COM_RX_STATUS; +uint8_t CDMS_RTC_BL; + +//CDMS FLASH parameters +uint8_t EPS_V_A_EN_STATUS; +uint8_t BAE_SW_STATUS; +uint8_t CDMS_SD_SW_STATUS; +uint8_t PL_BEE_SW_STATUS; +uint8_t PL_EPS_LATCH_SW_EN; +uint8_t RTC_INIT_STATUS; +uint8_t CDMS_RTC_DISABLE; +uint16_t CDMS_RESET_COUNTER; +uint32_t TIME_LATEST_CDSMS_RESET; +uint16_t COM_TC_BYTES_LIMIT; +uint8_t COM_RX_CURRENT_MAX; +uint8_t COM_RX_DISABLE_TIMEOUT; +uint8_t COM_PA_TMP_HIGH; +uint8_t COM_PA_RECOVERY_TIMEOUT; +uint8_t COM_SESSION_TIMEOUT; +uint8_t COM_RSSI_MIN; +uint16_t SD_LIB_BLK_CURRENT; \ No newline at end of file
--- a/FMS_all.h Tue Jul 12 11:10:48 2016 +0000 +++ b/FMS_all.h Tue Jul 12 17:07:17 2016 +0000 @@ -1,3 +1,9 @@ + +// Includes MMS RAM functions also + +/*===================================================FMS Functions=================================================*/ + +void STANDBY_PRCS(); //Run processes void P_PL_INIT(); @@ -27,17 +33,22 @@ void SW_RST_PL_BEE(); void RST_BAE(); void RST_PL_BEE(); -void CDMS_INTERNAL_RESET(); +void CDMS_RESET(); void SYS_PWR_RESET(); // Have to be decided with EPS team. void EPS_V_A_EN(); void EPS_V_C_EN(); void RST_HK_COUNTER(); -uint8_t CDMS_RD_SD_HK(uint8_t *); +int8_t CDMS_RD_SD_HK(uint8_t *); void CDMS_RD_RTC(uint64_t *); -void CDMS_CALIB_RTC(); -void CDMS_RESET(); +void CDMS_CALIB_RTC(uint8_t *); +void TOTAL_RESET_WITH_CDMS(); + +void STANDBY_PRCS() +{ + +} void P_PL_INIT() { @@ -46,7 +57,7 @@ void P_PL_MAIN() { - // FCTN_CDMS_PL_MAIN((void *)NULL); + FCTN_CDMS_PL_MAIN((void *)NULL); } void P_COM_INIT() @@ -81,12 +92,23 @@ void CDMS_RTC_ON() { - + //FCTN_CDMS_INIT_RTC(); + SPI_mutex.lock(); + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x81); //register address with write flag + spi.write(0x00);//disabling stop bit in the seconds register + SPI_mutex.unlock(); } void CDMS_RTC_OFF() { - + SPI_mutex.lock(); + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x81); //register address with write flag + spi.write(0x80);//enabling stop bit in the seconds register + SPI_mutex.unlock(); } void SW_ON_BAE() @@ -145,14 +167,12 @@ void SW_ON_V_A_EN() { - TRXY_PWR_CNTRL = 1; - TRZ_PWR_CNTRL = 1; + V_A_EN = 1; } void SW_OFF_V_A_EN() { - TRXY_PWR_CNTRL = 0; - TRZ_PWR_CNTRL = 0; + V_A_EN = 0; } void RST_SD() @@ -197,16 +217,14 @@ void SYS_PWR_RESET() // Have to be decided with EPS team. { - + sys_pwr_rst = 1; } void EPS_V_A_EN() // This is a reset function { - TRXY_PWR_CNTRL = 0; - TRZ_PWR_CNTRL = 0; + V_A_EN = 0; wait_ms(10); - TRXY_PWR_CNTRL = 1; - TRZ_PWR_CNTRL = 1; + V_A_EN = 1; } void EPS_V_C_EN() // This is a reset function @@ -221,25 +239,19 @@ firstCount = true; } -uint8_t CDMS_RD_SD_HK(uint8_t *sd_statusbits) +int8_t CDMS_RD_SD_HK(uint8_t *sd_statusbits) { - uint8_t p; - uint8_t ACK; + int8_t p; if(SD_SW_EN_DS != DEVICE_POWERED) { - ACK = 0x89; SD_RD_ERROR = 1; - //Generate TM + p = 1; } else { p = disk_read_statusbits(sd_statusbits); - if(p == 0) - ACK = 0xA0; - else - ACK = 0x89; } - return ACK; + return p; } void CDMS_RD_RTC(uint64_t *time) @@ -247,9 +259,39 @@ *time = FCTN_CDMS_RD_RTC(); } -void CDMS_CALIB_RTC() +void CDMS_CALIB_RTC(uint64_t *time) { + SPI_mutex.lock(); + gCS_RTC=1; + spi.format(8,0); + spi.frequency(1000000); + + gCS_RTC=0; + spi.write(0x82); + spi.write(time[0]);//set minutes + gCS_RTC=1; + + gCS_RTC=0; + spi.write(0x83); + spi.write(time[1] & 0x3F); //set hours + gCS_RTC=1; + gCS_RTC=0; + spi.write(0x85); + spi.write(time[2] & 0x3F); //set date + gCS_RTC=1; + + gCS_RTC=0; + spi.write(0x86); + spi.write(time[3] & 0x1F); //set month + gCS_RTC=1; + + gCS_RTC=0; + spi.write(0x87); + spi.write(time[4]); //set year to 00(2000) + gCS_RTC=1; + gPC.puts("\n\r rtc initalised \n"); + SPI_mutex.unlock(); } void CDMS_RESET() @@ -262,4 +304,16 @@ { } -*/ \ No newline at end of file +*/ + +//===============================MMS RAM functions================================== + +void FCTN_CDMS_RD_L_RAM(Base_tm *); + +void FCTN_CDMS_RD_L_RAM(Base_tm *tm_pointer) +{ + for(int i=4;i<132;i++) + tm_pointer->TM_string[i] = CDMS_HK_FRAME[i-4]; +} + +
--- a/Flash.h Tue Jul 12 11:10:48 2016 +0000 +++ b/Flash.h Tue Jul 12 17:07:17 2016 +0000 @@ -1,28 +1,83 @@ #include "FreescaleIAP.h" -int strt_add = flash_size() - (4*SECTOR_SIZE); -uint32_t flasharray[256+(3*1024)]; -char *nativeflash = (char*)strt_add; +int strt_add = flash_size() - (2*SECTOR_SIZE); +uint32_t flasharray[32]; //256+(3*1024) +uint32_t INITIAL_FLASH[32]; +/*corrected*/ +int *nativeflash = (int*)strt_add; + +void FLASH_INI() +{ + uint32_t read[32]; + for(int i=0;i<32;i++) + { + read[i] = nativeflash[i]; + } + + if(read[0] == -1) + for(int j=0;j<32;j++) + { + FCTN_CDMS_WR_FLASH(j,INITIAL_FLASH[j]); + } + else + { + for(int j=0;j<32;j++) + { + read[j] = nativeflash[j]; + } + EPS_V_A_EN_STATUS = read[0] >> 31; + BAE_SW_STATUS = (read[0] << 1) >> 30; + CDMS_SD_SW_STATUS = (read[0] << 3) >> 30; + PL_BEE_SW_STATUS = (read[0] << 5) >> 30; + PL_EPS_LATCH_SW_EN = (read[0] << 7) >> 31; + RTC_INIT_STATUS = (read[0] << 8) >> 30; + CDMS_RTC_DISABLE = (read[0] << 10) >> 31; + CDMS_RESET_COUNTER = read[0]; + TIME_LATEST_CDSMS_RESET = read[1]; + COM_TC_BYTES_LIMIT = read[2] >> 16; + COM_RX_CURRENT_MAX = (read[2] << 16) >> 24; + COM_RX_DISABLE_TIMEOUT = read[2]; + COM_PA_TMP_HIGH = read[3] >> 24; + COM_PA_RECOVERY_TIMEOUT = (read[3] << 8) >> 24; + COM_SESSION_TIMEOUT = (read[3] << 16) << 24; + COM_RSSI_MIN = read[3]; + SD_LIB_BLK_CURRENT = read[4] >> 16; + } + +} /*Writing to the Flash*/ -void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t block) +void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t datablock) //j-position to write address ; fdata - flash data to be written { - for(int64_t i=0;i<(256+(3*1024));i++) + for(int i=0;i<5;i++) { flasharray[i]=nativeflash[i]; } - flasharray[j]=block; + flasharray[j]=datablock; erase_sector(strt_add); - program_flash(strt_add, (char*)&flasharray,4*(256+(1024*3))); + program_flash(strt_add, (char*)flasharray,32); } /*End*/ -/*Reading from Flash*/ -uint32_t FCTN_CDMS_RD_FLASH(uint16_t j) +/*===================================================MMS Functions=================================================*/ + +void WRITE_TO_FLASH(uint8_t *); + +void WRITE_TO_FLASH(uint8_t *flash) { - for(int64_t i=0;i<(256+(3*1024));i++) - { - flasharray[i]=nativeflash[i]; - } - return flasharray[j]; + uint32_t FLASH[5]; + FLASH[0] = ((uint32_t)flash[0] << 24) | ((uint32_t)flash[1] << 16) | ((uint32_t)flash[2] << 8) | ((uint32_t)flash[3]); + FLASH[1] = ((uint32_t)flash[4] << 24) | ((uint32_t)flash[5] << 16) | ((uint32_t)flash[6] << 8) | ((uint32_t)flash[7]); + FLASH[2] = ((uint32_t)flash[8] << 24) | ((uint32_t)flash[9] << 16) | ((uint32_t)flash[10] << 8) | ((uint32_t)flash[11]); + FLASH[3] = ((uint32_t)flash[12] << 24) | ((uint32_t)flash[13] << 16) | ((uint32_t)flash[14] << 8) | ((uint32_t)flash[15]); + FLASH[4] = ((uint32_t)flash[16] << 24) | ((uint32_t)flash[17] << 16) | ((uint32_t)flash[18] << 8) | ((uint32_t)flash[19]); + erase_sector(strt_add); + program_flash(strt_add, (char*)FLASH,160); +} + +void FCTN_CDMS_WR_S_FLASH(uint16_t , uint32_t); + +void FCTN_CDMS_WR_S_FLASH(uint16_t mid, uint32_t datavalue) +{ + } \ No newline at end of file
--- a/RESET_functions.h Tue Jul 12 11:10:48 2016 +0000 +++ b/RESET_functions.h Tue Jul 12 17:07:17 2016 +0000 @@ -10,12 +10,13 @@ } void RESET_RTC() -{ +{ + SPI_mutex.lock(); gCS_RTC=1; gCS_RTC=0; spi.write(0x81); //register address with write flag spi.write(0x80);//enabling stop bit in the seconds register - + gCS_RTC=1; gCS_RTC=0; spi.write(0x81); @@ -33,6 +34,5 @@ gCS_RTC=0; spi.write(0x8F); spi.write(0x00); -} - - + SPI_mutex.unlock(); +} \ No newline at end of file
--- a/cdms_rtc.h Tue Jul 12 11:10:48 2016 +0000 +++ b/cdms_rtc.h Tue Jul 12 17:07:17 2016 +0000 @@ -12,6 +12,11 @@ spi.write(0x81); //register address with write flag spi.write(0x80);//enabling stop bit in the seconds register gCS_RTC=1; + + gCS_RTC=0; + spi.write(0x81); + spi.write(0x00);//disabling the stop bit to restart the oscillator + gCS_RTC=1; //clearing the halt bit gCS_RTC=1; @@ -31,12 +36,6 @@ spi.write(0x80|0x03); spi.write(0x00); gCS_RTC=1; - - - gCS_RTC=0; - spi.write(0x81); - spi.write(0x00);//disabling the stop bit to restart the oscillator - gCS_RTC=1; gCS_RTC=0; spi.write(0x80);
--- a/cdms_sd.h Tue Jul 12 11:10:48 2016 +0000 +++ b/cdms_sd.h Tue Jul 12 17:07:17 2016 +0000 @@ -31,7 +31,6 @@ uint32_t LOG_FIRST =5001; uint32_t LOG_LAST=6000; uint32_t SD_MNG_SECT=7000; -uint16_t SD_LIB_WRITES = 0; extern uint8_t SD_INIT_FLAGS;
--- a/main.cpp Tue Jul 12 11:10:48 2016 +0000 +++ b/main.cpp Tue Jul 12 17:07:17 2016 +0000 @@ -1,7 +1,6 @@ // TESTING PUSH PULL IN MAIN CPP - #include "mbed.h" #define DEBUG 1 @@ -27,8 +26,8 @@ #include "adf.h" #include "COM_RCV_TC.h" //#include "Flash.h" +#include "CDMS_PL.h" #include "FMS_all.h" -#include "CDMS_PL.h" #include "COM_MNG_TMTC.h" #include "COM_POWER_ON_TX.h" #include "COM_POWER_OFF_TX.h" @@ -99,7 +98,7 @@ gRX_COUNT = 0; RX1M.attach(&rx_read, Serial::RxIrq); - gPC.baud(1200);//changed for bypassing COM + gPC.baud(115200);//changed for bypassing COM // COMMON SPI spi.format(8,0); @@ -110,12 +109,12 @@ gCS_RTC = 1; gCS_ADF = 1; - //FCTN_CDMS_INIT_RTC();/* rtc initialization*/ - FCTN_CDMS_SD_INIT();/* sd card initialization*/ + FCTN_CDMS_INIT_RTC();/* rtc initialization*/ + //FCTN_CDMS_SD_INIT();/* sd card initialization*/ - uint8_t test[512] = {0}; - disk_write(test,7000); //to be used only just before launch + //uint8_t test[512] = {0}; + //disk_write(test,7000); //to be used only just before launch #if DEBUG gPC.puts("welcome to mng_tmtc\r\n"); @@ -143,13 +142,11 @@ 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);*/ - gPC.printf("HK counter started"); - - /*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);