To fix the hang problem
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Diff: COM_POWER_OFF_TX.h
- Revision:
- 215:570251b23c7b
- Parent:
- 213:867de6d350fa
- Child:
- 216:93505a6f8db7
--- a/COM_POWER_OFF_TX.h Sun Jul 03 09:26:42 2016 +0000 +++ b/COM_POWER_OFF_TX.h Sun Jul 03 09:47:05 2016 +0000 @@ -1,136 +1,15 @@ -#define RESET_CDMS {\ - Base_tc *RESET_tc = new Short_tc;\ - RESET_tc->next_TC = NULL;\ - PUTshort_or_long(RESET_tc,SHORT_TC_CODE);\ - PUTcrc_pass(RESET_tc,0x1);\ - PUTexec_status(RESET_tc,0);\ - RESET_tc->TC_string[0] = 0x01;\ - RESET_tc->TC_string[1] = 0x81;\ - RESET_tc->TC_string[2] = 0x81;\ - RESET_tc->TC_string[3] = 0x38;\ - RESET_tc->TC_string[4] = 0;\ - RESET_tc->TC_string[5] = 0;\ - RESET_tc->TC_string[6] = 0;\ - RESET_tc->TC_string[7] = 0;\ - RESET_tc->TC_string[8] = 0;\ - uint16_t crc16 = crc16_gen(RESET_tc->TC_string, 9);\ - RESET_tc->TC_string[9] = (crc16 & 0xFF00)>>8;\ - RESET_tc->TC_string[10] = (crc16 & 0x00FF);\ - Base_tm *tm_ptr = NULL;\ - tm_ptr = FCTN_CDMS_RLY_TMTC(RESET_tc);\ - delete RESET_tc;\ - /*DELETE THE TM AFTER USE*/\ - Base_tm *del_tm = tm_ptr;\ - while( del_tm != NULL ){\ - Base_tm *temp = del_tm->next_TM;\ - delete del_tm;\ - del_tm = temp;\ - }\ -} - -#define power_on_bae {\ - Base_tc *power_on_BAE = new Short_tc;\ - power_on_BAE->next_TC = NULL;\ - PUTshort_or_long(power_on_BAE,SHORT_TC_CODE);\ - PUTcrc_pass(power_on_BAE,0x1);\ - PUTexec_status(power_on_BAE,0);\ - power_on_BAE->TC_string[0] = 0x01;\ - power_on_BAE->TC_string[1] = BAE_APID_SOURCE;\ - power_on_BAE->TC_string[2] = BAE_SERVICE;\ - power_on_BAE->TC_string[3] = BAE_POWER_ON_PID;\ - power_on_BAE->TC_string[4] = 0;\ - power_on_BAE->TC_string[5] = 0;\ - power_on_BAE->TC_string[6] = 0;\ - power_on_BAE->TC_string[7] = 0;\ - power_on_BAE->TC_string[8] = 0;\ - uint16_t crc16 = crc16_gen(power_on_BAE->TC_string, 9);\ - power_on_BAE->TC_string[9] = (crc16 & 0xFF00)>>8;\ - power_on_BAE->TC_string[10] = (crc16 & 0x00FF);\ - Base_tm *tm_ptr = NULL;\ - tm_ptr = FCTN_CDMS_RLY_TMTC(power_on_BAE);\ - delete power_on_BAE;\ - /*DELETE THE TM AFTER USE*/\ - Base_tm *del_tm = tm_ptr;\ - int overCount = 0;\ - while( del_tm != NULL ){\ - if( (overCount < TM_OVERFLOW_CONSTANT) ){\ - Base_tm *temp = del_tm->next_TM;\ - delete del_tm;\ - del_tm = temp;\ - ++overCount;\ - }\ - else{\ - RESET_CDMS;\ - break;\ - }\ - }\ -} - -#define resume_bcn {\ - Base_tc *beacon_tc = new Long_tc;\ - beacon_tc->next_TC = NULL;\ - PUTshort_or_long(beacon_tc,LONG_TC_CODE);\ - PUTcrc_pass(beacon_tc,0x1);\ - PUTexec_status(beacon_tc,0);\ - beacon_tc->TC_string[0] = 0x01;\ - beacon_tc->TC_string[1] = BCN_APID_SOURCE;\ - beacon_tc->TC_string[2] = BCN_SERVICE;\ - beacon_tc->TC_string[3] = 0xE2;\ - beacon_tc->TC_string[4] = 0x00;\ - beacon_tc->TC_string[5] = 0;\ - beacon_tc->TC_string[6] = 0;\ - beacon_tc->TC_string[7] = 0;\ - beacon_tc->TC_string[8] = 0;\ - uint16_t crc16 = crc16_gen(beacon_tc->TC_string, 9);\ - beacon_tc->TC_string[9] = (crc16 & 0xFF00)>>8;\ - beacon_tc->TC_string[10] = (crc16 & 0x00FF);\ - for(int i = 11; i < 135; i++){\ - beacon_tc->TC_string[i] = 0;\ - }\ - Base_tm *tm_ptr = NULL;\ - tm_ptr = FCTN_CDMS_RLY_TMTC(beacon_tc);\ - delete beacon_tc;\ - /*DELETE THE TM AFTER USE*/\ - Base_tm *del_tm = tm_ptr;\ - int overCount = 0;\ - while( del_tm != NULL ){\ - if( (overCount < TM_OVERFLOW_CONSTANT) ){\ - Base_tm *temp = del_tm->next_TM;\ - delete del_tm;\ - del_tm = temp;\ - ++overCount;\ - }\ - else{\ - RESET_CDMS;\ - break;\ - }\ - }\ -} - #define COM_POWER_OFF_TX {\ /*gPC.puts("Inside COM_POWER_OFF_TX\r\n");*/\ - COM_TX_CNTRL = 0;\ + /*PENDING: POWER OFF TRANSMITTER*/\ RX1M.attach(&rx_read, Serial::RxIrq);\ gFLAGS = gFLAGS & (~COM_MNG_TMTC_RUNNING_FLAG);\ - RF_SW_CNTRL_BCN = 1;\ - Thread::wait(25);\ - RF_SW_CNTRL_BCN = 0;\ - gFLAGS = gFLAGS | RF_SW_STATUS_FLAG;\ - if( gFLAGS & COM_AUTO_POWER_OFF_BAE_FLAG ){\ - power_on_bae;\ - gFLAGS = gFLAGS | BAE_SW_EN_FLAG;\ - gFLAGS & (~COM_AUTO_POWER_OFF_BAE_FLAG);\ - resume_bcn;\ - }\ - else{\ - if( gFLAGS & BAE_SW_EN_FLAG ){\ - resume_bcn;\ - }\ - }\ + /*PENDING: SWITCH RF RELAY TO BEACON*/\ + /*PENDING: RF_SW_STATUS = RF_BCN*/\ + /*PENDING: POWER ON BAE*/\ + /*PENDING: SET BAE SW_EN_STATUS*/\ + /*PENDING: RESUME BEACON*/\ gFLAGS = gFLAGS & (~COM_PA_HOT_FLAG);\ - gFLAGS = gFLAGS & (~COM_PA_OC_FLAG);\ gCOM_PA_COOLING_TIMEOUT.detach();\ gFLAGS = gFLAGS & (~COM_TX_FLAG);\ - gFLAGS = gFLAGS & (~COM_SESSION_TIMEOUT_FLAG);\ - /*gPC.puts("completed com_power_off tx\r\n");*/\ + /*gPC.puts("ompleted com_power_off tx\r\n");*/\ } \ No newline at end of file