
Repository for CDMS code
Dependencies: SimpleDMA mbed-rtos mbed eeprom
Fork of COM_MNG_TMTC_SIMPLE by
Diff: FMS_functions.h
- Revision:
- 206:fba4aeebf004
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FMS_functions.h Thu Jun 30 14:00:33 2016 +0000 @@ -0,0 +1,187 @@ +#include "CDMS_HK.h" + +uint8_t ACK_CODE; + +void CDMS_standby_prcs(); +void CDMS_run_prcs(); +void CDMS_rst_pwr(); +void CDMS_swch_pwr_on(); +void CDMS_swch_pwr_off(); +void CDMS_rst_hk_counter(); +void CDMS_rd_rtc(); +void CDMS_mng_rtc(); +void CDMS_rd_sd_hk(); + +extern uint8_t PL_STANDBY_STATE; +extern bool STANDBY_PL; +extern uint8_t CDMS_HK_STANDBY_STATE; +extern bool STANDBY_CDMS_HK; + +extern bool SD_RD_ERROR; + +extern uint8_t BAE_STATUS; +extern uint8_t PL_STATUS; +extern uint8_t SD_STATUS; + +// These are defined in CDMS_HK.h Please check +#define DEVICE_ENABLED 0x00; +#define DEVICE_POWERED 0x01; +#define DEVICE_OC_FAULT 0x02; +#define DEVICE_DISABLED 0x03; +DigitalOut SD_SW_EN_DS (PIN97); +DigitalOut BAE_SW_EN_DS (PIN47); + + +void CDMS_standby_prcs() // FID = 0x40 +{ + if(PL_STANDBY_STATE = 0x00) + STANDBY_PL = 0; + if(PL_STANDBY_STATE = 0x01) + STANDBY_PL = 1; + if(CDMS_HK_STANDBY_STATE = 0x00) + STANDBY_CDMS_HK = 0; + if(CDMS_HK_STANDBY_STATE = 0x01) + STANDBY_CDMS_HK = 1; + if(RCV_SC_STANDBY_STATE = 0x00) + RCV_SC = 0; + if(RCV_SC_STANDBY_STATE = 0x01) + RCV_SC = 1; + ACK_CODE = 0xC0; + // Generate the TM +} + +void CDMS_run_prcs() // FID = 0x0_ +{ + +} + +void CDMS_rst_pwr(uint8_t FID) // FID = 0x3_ +{ + switch(FID){ + case 0x31 : //power reset SD + SD_SW_EN_DS = 0; //switching OFF + wait_ms(10); + SD_SW_EN_DS = 1; //switching ON + ACK_CODE = 0xA0; + // Generate TM + } +} + +void CDMS_swch_pwr_on(uint8_t FID) // FID = 0x1_ +{ + if(FID = 0x14) + { + PL_STATUS = DEVICE_ENABLED; + ACK_CODE = 0xA0; + // Generate TM + } + else if(FID = 0x13) + { + BAE_STATUS = DEVICE_POWERED; + BAE_SW_EN_DS = 1; //Power ON BAE + ACK_CODE = 0xA0; + // Generate TM + } + else if(FID = 0x11) + { + SD_STATUS = DEVICE_POWERED; + SD_SW_EN_DS = 1; //Power ON SD + FCTN_CDMS_SD_INIT(); + ACK_CODE = 0xA0; + // Generate TM + } + else + { + ACK_CODE = 0x02; + // Generate TM + } +} + +void CDMS_swch_pwr_off(uint8_t FID) // FID = 0x2_ +{ + if(FID = 0x24) + { + PL_SW_EN_DS = 0; //switching OFF PL + PL_STATUS = DEVICE_DISABLED; + ACK_CODE = 0xA0; + // Generate TM + } + else if(FID = 0x23) + { + BAE_SW_EN_DS = 0; //Switching OFF BAE + BAE_STATUS = DEVICE_DISABLED; + ACK_CODE = 0xA0; + // Generate TM + } + else if(FID = 0x21) + { + SD_SW_EN_DS = 0; //Switching OFF SD + SD_STATUS = DEVICE_DISABLED; + FCTN_CDMS_SD_INIT(); + ACK_CODE = 0xA0; + // Generate TM + } + else + { + ACK_CODE = 0x02; + // Generate TM + } +} + +void CDMS_rst_hk_counter() // FID = 0x41 +{ + +} + +void CDMS_rd_rtc() // FID = 0xF1 +{ + uint8_t time = FCTN_CDMS_RD_RTC(); + // Check if time is read properly + if( /*if error in reading*/ ) + { + ACK_CODE = 0x88; + // Generate TM + } + else if( /*if Time is read properly*/ ) + { + ACK_CODE = 0xA0; + // Generate TM + } +} + +void CDMS_mng_rtc(uint64_t time) +{ + +} + +void CDMS_rd_sd_hk() +{ + uint8_t sd_statusbits[64]; + uint8_t *p; + int i; + if(SD_SW_EN_DS != DEVICE_POWERED) + { + ACK_CODE = 0x89; + SD_RD_ERROR = 1; + //Generate TM + } + else + { + p = disk_read_statusbits(); + if(p != NULL) + { + for(i = 0; i<64; i++) + sd_statusbits[i] = *(p + i); + SD_RD_ERROR = 0; + ACK_CODE = 0xA0; + // Generate TM + } + else + { + ACK_CODE = 0x89; + SD_RD_ERROR = 1; + //Generate TM + } + } +} +