Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SimpleDMA eeprom mbed-rtos mbed
Fork of CDMS_CODE_FM_28JAN2017 by
Diff: COM_POWER_OFF_TX.h
- Revision:
- 231:e2bd2a990bfe
- Parent:
- 12:ffdb29353058
diff -r 335da5b0d3e4 -r e2bd2a990bfe COM_POWER_OFF_TX.h
--- a/COM_POWER_OFF_TX.h Mon Jul 04 23:13:24 2016 +0000
+++ b/COM_POWER_OFF_TX.h Tue Jul 05 11:27:29 2016 +0000
@@ -1,15 +1,136 @@
+/*#define RESET_CDMS_TC {\
+ 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");*/\
- /*PENDING: POWER OFF TRANSMITTER*/\
+ COM_TX_CNTRL = 0;\
RX1M.attach(&rx_read, Serial::RxIrq);\
gFLAGS = gFLAGS & (~COM_MNG_TMTC_RUNNING_FLAG);\
- /*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*/\
+ 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;\
+ }\
+ }\
gFLAGS = gFLAGS & (~COM_PA_HOT_FLAG);\
+ gFLAGS = gFLAGS & (~COM_PA_OC_FLAG);\
gCOM_PA_COOLING_TIMEOUT.detach();\
gFLAGS = gFLAGS & (~COM_TX_FLAG);\
- /*gPC.puts("ompleted com_power_off tx\r\n");*/\
+ gFLAGS = gFLAGS & (~COM_SESSION_TIMEOUT_FLAG);\
+ /*gPC.puts("completed com_power_off tx\r\n");*/\
}
\ No newline at end of file
