for frequency correction testing

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Committer:
chaithanyarss
Date:
Sun Jul 03 15:25:24 2016 +0000
Revision:
217:c63cdba0550f
Parent:
216:93505a6f8db7
Flash Completed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chaithanyarss 217:c63cdba0550f 1 extern void rx_read();
chaithanyarss 217:c63cdba0550f 2
chaithanyarss 216:93505a6f8db7 3 #define STANDBY_PRCS(tm_ptr){\
chaithanyarss 216:93505a6f8db7 4 Base_tc *stdby_tc = new Long_tc;\
chaithanyarss 216:93505a6f8db7 5 stdby_tc->next_TC = NULL;\
chaithanyarss 216:93505a6f8db7 6 PUTshort_or_long(stdby_tc,LONG_TC_CODE);\
chaithanyarss 216:93505a6f8db7 7 PUTcrc_pass(stdby_tc,0x1);\
chaithanyarss 216:93505a6f8db7 8 PUTexec_status(stdby_tc,0);\
chaithanyarss 216:93505a6f8db7 9 stdby_tc->TC_string[0] = 0x01;\
chaithanyarss 216:93505a6f8db7 10 stdby_tc->TC_string[1] = 0x41;\
chaithanyarss 216:93505a6f8db7 11 stdby_tc->TC_string[2] = 0x81;\
chaithanyarss 216:93505a6f8db7 12 stdby_tc->TC_string[3] = 0x40;\
chaithanyarss 216:93505a6f8db7 13 stdby_tc->TC_string[4] = 0x01;\
chaithanyarss 216:93505a6f8db7 14 stdby_tc->TC_string[5] = 0x01;\
chaithanyarss 216:93505a6f8db7 15 stdby_tc->TC_string[6] = 0x01;\
chaithanyarss 216:93505a6f8db7 16 stdby_tc->TC_string[7] = 0;\
chaithanyarss 216:93505a6f8db7 17 stdby_tc->TC_string[8] = 0;\
chaithanyarss 216:93505a6f8db7 18 uint16_t crc16 = crc16_gen(stdby_tc->TC_string, 9);\
chaithanyarss 216:93505a6f8db7 19 stdby_tc->TC_string[9] = (crc16 & 0xFF00)>>8;\
chaithanyarss 216:93505a6f8db7 20 stdby_tc->TC_string[10] = (crc16 & 0x00FF);\
chaithanyarss 216:93505a6f8db7 21 for(int i = 11; i < 135; i++){\
chaithanyarss 216:93505a6f8db7 22 stdby_tc->TC_string[i] = 0;\
chaithanyarss 216:93505a6f8db7 23 }\
chaithanyarss 216:93505a6f8db7 24 tm_ptr = FCTN_CDMS_RLY_TMTC(stdby_tc);\
chaithanyarss 216:93505a6f8db7 25 delete stdby_tc;\
chaithanyarss 216:93505a6f8db7 26 }
chaithanyarss 216:93505a6f8db7 27
chaithanyarss 216:93505a6f8db7 28 #define SET_BCN_STANDBY(tm_ptr){\
chaithanyarss 216:93505a6f8db7 29 Base_tc *beacon_tc = new Long_tc;\
chaithanyarss 216:93505a6f8db7 30 beacon_tc->next_TC = NULL;\
chaithanyarss 216:93505a6f8db7 31 PUTshort_or_long(beacon_tc,LONG_TC_CODE);\
chaithanyarss 216:93505a6f8db7 32 PUTcrc_pass(beacon_tc,0x1);\
chaithanyarss 216:93505a6f8db7 33 PUTexec_status(beacon_tc,0);\
chaithanyarss 216:93505a6f8db7 34 beacon_tc->TC_string[0] = 0x01;\
chaithanyarss 216:93505a6f8db7 35 beacon_tc->TC_string[1] = BCN_APID_SOURCE;\
chaithanyarss 216:93505a6f8db7 36 beacon_tc->TC_string[2] = BCN_SERVICE;\
chaithanyarss 216:93505a6f8db7 37 beacon_tc->TC_string[3] = 0xE2;\
chaithanyarss 216:93505a6f8db7 38 beacon_tc->TC_string[4] = 0x01;\
chaithanyarss 216:93505a6f8db7 39 beacon_tc->TC_string[5] = 0;\
chaithanyarss 216:93505a6f8db7 40 beacon_tc->TC_string[6] = 0;\
chaithanyarss 216:93505a6f8db7 41 beacon_tc->TC_string[7] = 0;\
chaithanyarss 216:93505a6f8db7 42 beacon_tc->TC_string[8] = 0;\
chaithanyarss 216:93505a6f8db7 43 uint16_t crc16 = crc16_gen(beacon_tc->TC_string, 9);\
chaithanyarss 216:93505a6f8db7 44 beacon_tc->TC_string[9] = (crc16 & 0xFF00)>>8;\
chaithanyarss 216:93505a6f8db7 45 beacon_tc->TC_string[10] = (crc16 & 0x00FF);\
chaithanyarss 216:93505a6f8db7 46 for(int i = 11; i < 135; i++){\
chaithanyarss 216:93505a6f8db7 47 beacon_tc->TC_string[i] = 0;\
chaithanyarss 216:93505a6f8db7 48 }\
chaithanyarss 216:93505a6f8db7 49 tm_ptr = FCTN_CDMS_RLY_TMTC(beacon_tc);\
chaithanyarss 216:93505a6f8db7 50 delete beacon_tc;\
chaithanyarss 216:93505a6f8db7 51 }
chaithanyarss 216:93505a6f8db7 52
chaithanyarss 216:93505a6f8db7 53 #define P_CDMS_HK_MAIN {\
chaithanyarss 216:93505a6f8db7 54 Base_tc *hk_main_ptr = new Short_tc;\
chaithanyarss 216:93505a6f8db7 55 hk_main_ptr->next_TC = NULL;\
chaithanyarss 216:93505a6f8db7 56 PUTshort_or_long(hk_main_ptr,SHORT_TC_CODE);\
chaithanyarss 216:93505a6f8db7 57 PUTcrc_pass(hk_main_ptr,0x1);\
chaithanyarss 216:93505a6f8db7 58 PUTexec_status(hk_main_ptr,0);\
chaithanyarss 216:93505a6f8db7 59 hk_main_ptr->TC_string[0] = 0x01;\
chaithanyarss 216:93505a6f8db7 60 hk_main_ptr->TC_string[1] = 0x81;\
chaithanyarss 216:93505a6f8db7 61 hk_main_ptr->TC_string[2] = 0x81;\
chaithanyarss 216:93505a6f8db7 62 hk_main_ptr->TC_string[3] = 0x04;\
chaithanyarss 216:93505a6f8db7 63 hk_main_ptr->TC_string[4] = 0;\
chaithanyarss 216:93505a6f8db7 64 hk_main_ptr->TC_string[5] = 0;\
chaithanyarss 216:93505a6f8db7 65 hk_main_ptr->TC_string[6] = 0;\
chaithanyarss 216:93505a6f8db7 66 hk_main_ptr->TC_string[7] = 0;\
chaithanyarss 216:93505a6f8db7 67 hk_main_ptr->TC_string[8] = 0;\
chaithanyarss 216:93505a6f8db7 68 uint16_t crc16 = crc16_gen(hk_main_ptr->TC_string, 9);\
chaithanyarss 216:93505a6f8db7 69 hk_main_ptr->TC_string[9] = (crc16 & 0xFF00)>>8;\
chaithanyarss 216:93505a6f8db7 70 hk_main_ptr->TC_string[10] = (crc16 & 0x00FF);\
chaithanyarss 216:93505a6f8db7 71 Base_tm *tm_ptr = NULL;\
chaithanyarss 216:93505a6f8db7 72 tm_ptr = FCTN_CDMS_RLY_TMTC(hk_main_ptr);\
chaithanyarss 216:93505a6f8db7 73 delete hk_main_ptr;\
chaithanyarss 216:93505a6f8db7 74 /*DELETE THE TM AFTER USE*/\
chaithanyarss 216:93505a6f8db7 75 Base_tm *del_tm = tm_ptr;\
chaithanyarss 216:93505a6f8db7 76 int overCount = 0;\
chaithanyarss 216:93505a6f8db7 77 while( del_tm != NULL ){\
chaithanyarss 216:93505a6f8db7 78 if( (overCount < TM_OVERFLOW_CONSTANT) ){\
chaithanyarss 216:93505a6f8db7 79 Base_tm *temp = del_tm->next_TM;\
chaithanyarss 216:93505a6f8db7 80 delete del_tm;\
chaithanyarss 216:93505a6f8db7 81 del_tm = temp;\
chaithanyarss 216:93505a6f8db7 82 ++overCount;\
chaithanyarss 216:93505a6f8db7 83 }\
chaithanyarss 216:93505a6f8db7 84 else{\
chaithanyarss 216:93505a6f8db7 85 RESET_CDMS;\
shreeshas95 4:104dd82c99b8 86 break;\
shreeshas95 4:104dd82c99b8 87 }\
shreeshas95 4:104dd82c99b8 88 }\
chaithanyarss 216:93505a6f8db7 89 }
chaithanyarss 216:93505a6f8db7 90
chaithanyarss 216:93505a6f8db7 91 #define P_BCN_TX_MAIN(tm_ptr) {\
chaithanyarss 216:93505a6f8db7 92 Base_tc *bcn_tx_main_ptr = new Long_tc;\
chaithanyarss 216:93505a6f8db7 93 bcn_tx_main_ptr->next_TC = NULL;\
chaithanyarss 216:93505a6f8db7 94 PUTshort_or_long(bcn_tx_main_ptr,LONG_TC_CODE);\
chaithanyarss 216:93505a6f8db7 95 PUTcrc_pass(bcn_tx_main_ptr,0x1);\
chaithanyarss 216:93505a6f8db7 96 PUTexec_status(bcn_tx_main_ptr,0);\
chaithanyarss 216:93505a6f8db7 97 bcn_tx_main_ptr->TC_string[0] = 0x01;\
chaithanyarss 216:93505a6f8db7 98 bcn_tx_main_ptr->TC_string[1] = 0x41;\
chaithanyarss 216:93505a6f8db7 99 bcn_tx_main_ptr->TC_string[2] = 0x81;\
chaithanyarss 216:93505a6f8db7 100 bcn_tx_main_ptr->TC_string[3] = 0x07;\
chaithanyarss 216:93505a6f8db7 101 bcn_tx_main_ptr->TC_string[4] = 0;\
chaithanyarss 216:93505a6f8db7 102 bcn_tx_main_ptr->TC_string[5] = 0;\
chaithanyarss 216:93505a6f8db7 103 bcn_tx_main_ptr->TC_string[6] = 0;\
chaithanyarss 216:93505a6f8db7 104 bcn_tx_main_ptr->TC_string[7] = 0;\
chaithanyarss 216:93505a6f8db7 105 bcn_tx_main_ptr->TC_string[8] = 0;\
chaithanyarss 216:93505a6f8db7 106 uint16_t crc16 = crc16_gen(bcn_tx_main_ptr->TC_string, 9);\
chaithanyarss 216:93505a6f8db7 107 bcn_tx_main_ptr->TC_string[9] = (crc16 & 0xFF00)>>8;\
chaithanyarss 216:93505a6f8db7 108 bcn_tx_main_ptr->TC_string[10] = (crc16 & 0x00FF);\
chaithanyarss 216:93505a6f8db7 109 for(int i = 11; i < 135; i++){\
chaithanyarss 216:93505a6f8db7 110 bcn_tx_main_ptr->TC_string[i] = 0;\
shreeshas95 4:104dd82c99b8 111 }\
chaithanyarss 216:93505a6f8db7 112 tm_ptr = FCTN_CDMS_RLY_TMTC(bcn_tx_main_ptr);\
chaithanyarss 216:93505a6f8db7 113 delete bcn_tx_main_ptr;\
chaithanyarss 216:93505a6f8db7 114 }
chaithanyarss 216:93505a6f8db7 115
chaithanyarss 216:93505a6f8db7 116 void COM_POWER_ON_TX() {
chaithanyarss 216:93505a6f8db7 117 if (DEBUG)
chaithanyarss 216:93505a6f8db7 118 gPC.puts("Inside COM_POWER_ON_TX\r\n");
chaithanyarss 216:93505a6f8db7 119 if( !(gFLAGS & COM_TX_FLAG) ){
chaithanyarss 216:93505a6f8db7 120 gFLAGS = gFLAGS | COM_TX_FLAG;
chaithanyarss 216:93505a6f8db7 121 if( gFLAGS & BAE_SW_EN_FLAG ){
chaithanyarss 216:93505a6f8db7 122 /*WARNING: INFINITE WHILE LOOP POSSIBLE: if standby ack received and bcn tx main status = 0*/
chaithanyarss 216:93505a6f8db7 123 bool retryFlag = true;
chaithanyarss 216:93505a6f8db7 124 while( retryFlag == true ){
chaithanyarss 216:93505a6f8db7 125 Base_tm *tm_ptr = NULL;
chaithanyarss 216:93505a6f8db7 126 SET_BCN_STANDBY(tm_ptr);
chaithanyarss 216:93505a6f8db7 127 uint8_t bcn_main_status = (tm_ptr->TM_string[2] & 0xEF);
chaithanyarss 216:93505a6f8db7 128 if(( bcn_main_status == 0xC0 )||( bcn_main_status ==0xA0 )){
chaithanyarss 216:93505a6f8db7 129 /*ACK RECCEIVED*/
chaithanyarss 216:93505a6f8db7 130 if( bcn_main_status == 0xA0 ){
chaithanyarss 216:93505a6f8db7 131 retryFlag = false;
chaithanyarss 216:93505a6f8db7 132 RF_SW_CNTRL_TX = 1;
chaithanyarss 216:93505a6f8db7 133 Thread::wait(25);
chaithanyarss 216:93505a6f8db7 134 RF_SW_CNTRL_TX = 0;
chaithanyarss 216:93505a6f8db7 135 gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);/*RF_SW_STATUS_FLAG set to RF_COM_TX*/
chaithanyarss 216:93505a6f8db7 136 }
chaithanyarss 216:93505a6f8db7 137 else{
chaithanyarss 216:93505a6f8db7 138 Thread::wait(5000);
chaithanyarss 216:93505a6f8db7 139 }
chaithanyarss 216:93505a6f8db7 140 }
chaithanyarss 216:93505a6f8db7 141 else{
chaithanyarss 217:c63cdba0550f 142 RST_BAE();
chaithanyarss 216:93505a6f8db7 143 Base_tm *tm_ptr2 = NULL;
chaithanyarss 216:93505a6f8db7 144 SET_BCN_STANDBY(tm_ptr2);
chaithanyarss 216:93505a6f8db7 145 uint8_t standbyAck2 = 0;
chaithanyarss 216:93505a6f8db7 146 uint8_t bcn_main_status2 = (tm_ptr2->TM_string[2] & 0xEF);
chaithanyarss 216:93505a6f8db7 147 if( ( bcn_main_status2 == 0xC0 )||( bcn_main_status2 == 0xA0 ) ){
chaithanyarss 216:93505a6f8db7 148 if( bcn_main_status2 == 0xA0 ){
chaithanyarss 216:93505a6f8db7 149 retryFlag = false;
chaithanyarss 216:93505a6f8db7 150 RF_SW_CNTRL_TX = 1;
chaithanyarss 216:93505a6f8db7 151 Thread::wait(25);
chaithanyarss 216:93505a6f8db7 152 RF_SW_CNTRL_TX = 0;
chaithanyarss 216:93505a6f8db7 153 gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);
chaithanyarss 216:93505a6f8db7 154 }
chaithanyarss 216:93505a6f8db7 155 else{
chaithanyarss 216:93505a6f8db7 156 Thread::wait(5000);
chaithanyarss 216:93505a6f8db7 157 }
chaithanyarss 216:93505a6f8db7 158 }
chaithanyarss 216:93505a6f8db7 159 else{
chaithanyarss 216:93505a6f8db7 160 retryFlag = false;
chaithanyarss 217:c63cdba0550f 161 SW_OFF_BAE();
chaithanyarss 216:93505a6f8db7 162 gFLAGS = gFLAGS | COM_AUTO_POWER_OFF_BAE_FLAG;
chaithanyarss 216:93505a6f8db7 163 gFLAGS = gFLAGS & (~BAE_SW_EN_FLAG);
chaithanyarss 216:93505a6f8db7 164 RF_SW_CNTRL_TX = 1;
chaithanyarss 216:93505a6f8db7 165 Thread::wait(25);
chaithanyarss 216:93505a6f8db7 166 RF_SW_CNTRL_TX = 0;
chaithanyarss 216:93505a6f8db7 167 gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);/*RF_SW_STATUS_FLAG set to RF_COM_TX*/
chaithanyarss 216:93505a6f8db7 168 }
chaithanyarss 216:93505a6f8db7 169 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 170 Base_tm *del_tm = tm_ptr2;
chaithanyarss 216:93505a6f8db7 171 int overCount = 0;
chaithanyarss 216:93505a6f8db7 172 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 173 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 174 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 175 delete del_tm;
chaithanyarss 216:93505a6f8db7 176 del_tm = temp;
chaithanyarss 216:93505a6f8db7 177 ++overCount;
chaithanyarss 216:93505a6f8db7 178 }
chaithanyarss 216:93505a6f8db7 179 else{
chaithanyarss 216:93505a6f8db7 180 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 181 break;
chaithanyarss 216:93505a6f8db7 182 }
chaithanyarss 216:93505a6f8db7 183 }
chaithanyarss 216:93505a6f8db7 184 }
chaithanyarss 216:93505a6f8db7 185 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 186 Base_tm *del_tm = tm_ptr;
chaithanyarss 216:93505a6f8db7 187 int overCount = 0;
chaithanyarss 216:93505a6f8db7 188 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 189 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 190 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 191 delete del_tm;
chaithanyarss 216:93505a6f8db7 192 del_tm = temp;
chaithanyarss 216:93505a6f8db7 193 ++overCount;
chaithanyarss 216:93505a6f8db7 194 }
chaithanyarss 216:93505a6f8db7 195 else{
chaithanyarss 216:93505a6f8db7 196 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 197 break;
chaithanyarss 216:93505a6f8db7 198 }
chaithanyarss 216:93505a6f8db7 199 }
chaithanyarss 216:93505a6f8db7 200 }
chaithanyarss 216:93505a6f8db7 201 }
chaithanyarss 216:93505a6f8db7 202 else{
chaithanyarss 216:93505a6f8db7 203 RF_SW_CNTRL_TX = 1;
chaithanyarss 216:93505a6f8db7 204 Thread::wait(25);
chaithanyarss 216:93505a6f8db7 205 RF_SW_CNTRL_TX = 0;
chaithanyarss 216:93505a6f8db7 206 gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);/*RF_SW_STATUS_FLAG set to RF_COM_TX*/
chaithanyarss 216:93505a6f8db7 207 }
chaithanyarss 216:93505a6f8db7 208 }
chaithanyarss 216:93505a6f8db7 209 COM_TX_CNTRL = 1;
chaithanyarss 216:93505a6f8db7 210 uint8_t adfConfigPass = 0xFF;
chaithanyarss 216:93505a6f8db7 211 for( int i = 0 ; i < COM_TX_CONFIG_LIMIT ; ++i ){
chaithanyarss 216:93505a6f8db7 212 /*PENDING: CONFIGURE ADF and set adfConfigPass*/
chaithanyarss 216:93505a6f8db7 213 if( adfConfigPass == 0xFF ){
chaithanyarss 216:93505a6f8db7 214 break;
chaithanyarss 216:93505a6f8db7 215 }
chaithanyarss 216:93505a6f8db7 216 }
chaithanyarss 216:93505a6f8db7 217 if( adfConfigPass == 0xFF ){
chaithanyarss 216:93505a6f8db7 218 /*adf successfully configured*/
chaithanyarss 216:93505a6f8db7 219 gFLAGS = gFLAGS | COM_TX_STATUS_FLAG;
chaithanyarss 216:93505a6f8db7 220 /*CALL SIGN*/
chaithanyarss 216:93505a6f8db7 221 Base_tm *power_on_tm = NULL;
chaithanyarss 216:93505a6f8db7 222 Base_tm *power_on_tm_head = NULL;
chaithanyarss 216:93505a6f8db7 223 get_call_sign( power_on_tm_head );
chaithanyarss 216:93505a6f8db7 224 power_on_tm = power_on_tm_head;
chaithanyarss 216:93505a6f8db7 225 /*ACK L1*/
chaithanyarss 216:93505a6f8db7 226 get_ack_l1(power_on_tm->next_TM);
chaithanyarss 216:93505a6f8db7 227 int overFlowCountADF = 0;
chaithanyarss 216:93505a6f8db7 228 while( power_on_tm->next_TM != NULL ){
chaithanyarss 216:93505a6f8db7 229 if( overFlowCountADF < TM_OVERFLOW_CONSTANT ){
chaithanyarss 216:93505a6f8db7 230 power_on_tm = power_on_tm->next_TM;
chaithanyarss 216:93505a6f8db7 231 ++overFlowCountADF;
chaithanyarss 216:93505a6f8db7 232 }
chaithanyarss 216:93505a6f8db7 233 else{
chaithanyarss 216:93505a6f8db7 234 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 235 break;
chaithanyarss 216:93505a6f8db7 236 }
chaithanyarss 216:93505a6f8db7 237 }
chaithanyarss 216:93505a6f8db7 238 get_tc_list(power_on_tm->next_TM, 0x00);
chaithanyarss 216:93505a6f8db7 239 /*Call Sign, ACK_L1, TC_LIST*/
chaithanyarss 216:93505a6f8db7 240 /*snd_tm.head_pointer(power_on_tm_head);*/
chaithanyarss 216:93505a6f8db7 241 /*transmit_adf;*/
chaithanyarss 216:93505a6f8db7 242 uint8_t transmissionPass = 0xFF;
chaithanyarss 216:93505a6f8db7 243 /*PENDING: get acknowledgement of transmission*/
chaithanyarss 216:93505a6f8db7 244 /*deleting the telemetry*/
chaithanyarss 216:93505a6f8db7 245 power_on_tm = power_on_tm_head;
chaithanyarss 216:93505a6f8db7 246 overFlowCountADF = 0;
chaithanyarss 216:93505a6f8db7 247 while( power_on_tm != NULL ){
chaithanyarss 216:93505a6f8db7 248 if( overFlowCountADF < TM_OVERFLOW_CONSTANT ){
chaithanyarss 216:93505a6f8db7 249 Base_tm *temp = power_on_tm->next_TM;
chaithanyarss 216:93505a6f8db7 250 delete power_on_tm;
chaithanyarss 216:93505a6f8db7 251 power_on_tm = temp;
chaithanyarss 216:93505a6f8db7 252 ++overFlowCountADF;
chaithanyarss 216:93505a6f8db7 253 }
chaithanyarss 216:93505a6f8db7 254 else{
chaithanyarss 216:93505a6f8db7 255 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 256 break;
chaithanyarss 216:93505a6f8db7 257 }
chaithanyarss 216:93505a6f8db7 258 }
chaithanyarss 216:93505a6f8db7 259 if( transmissionPass == 0 ){
chaithanyarss 216:93505a6f8db7 260 /*NOT Transmitted succesfully*/
chaithanyarss 216:93505a6f8db7 261 COM_POWER_OFF_TX;
chaithanyarss 216:93505a6f8db7 262 P_CDMS_HK_MAIN;
chaithanyarss 216:93505a6f8db7 263 Base_tm *ptr_tm = NULL;
chaithanyarss 216:93505a6f8db7 264 STANDBY_PRCS(ptr_tm);
chaithanyarss 216:93505a6f8db7 265 uint8_t standbyACK = 0x00;
chaithanyarss 216:93505a6f8db7 266 uint8_t bcn_main_status = (ptr_tm->TM_string[2] & 0xEF);
chaithanyarss 216:93505a6f8db7 267 if(( bcn_main_status == 0xC0 )||( bcn_main_status ==0xA0 )){
chaithanyarss 216:93505a6f8db7 268 standbyACK = 1;
chaithanyarss 216:93505a6f8db7 269 }
chaithanyarss 216:93505a6f8db7 270 if(standbyACK == 1){
chaithanyarss 216:93505a6f8db7 271 uint8_t ackReceived = 0x00;
chaithanyarss 216:93505a6f8db7 272 Base_tm *tm_ptr = NULL;
chaithanyarss 216:93505a6f8db7 273 P_BCN_TX_MAIN(tm_ptr);
chaithanyarss 216:93505a6f8db7 274 uint8_t ackcode = tm_ptr->TM_string[2] & 0xEF;
chaithanyarss 216:93505a6f8db7 275 if( (ackcode == 0xA0) || (ackcode == 0xC0))
chaithanyarss 216:93505a6f8db7 276 ackReceived = 0xFF;
chaithanyarss 216:93505a6f8db7 277 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 278 Base_tm *del_tm = tm_ptr;
chaithanyarss 216:93505a6f8db7 279 int overCount = 0;
chaithanyarss 216:93505a6f8db7 280 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 281 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 282 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 283 delete del_tm;
chaithanyarss 216:93505a6f8db7 284 del_tm = temp;
chaithanyarss 216:93505a6f8db7 285 ++overCount;
chaithanyarss 216:93505a6f8db7 286 }
chaithanyarss 216:93505a6f8db7 287 else{
chaithanyarss 216:93505a6f8db7 288 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 289 break;
chaithanyarss 216:93505a6f8db7 290 }
chaithanyarss 216:93505a6f8db7 291 }
chaithanyarss 216:93505a6f8db7 292 if( ackReceived == 0xFF ){
chaithanyarss 216:93505a6f8db7 293 Thread::wait(5000);
chaithanyarss 216:93505a6f8db7 294 }
chaithanyarss 216:93505a6f8db7 295 }
chaithanyarss 216:93505a6f8db7 296 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 297 Base_tm *del_tm = ptr_tm;
chaithanyarss 216:93505a6f8db7 298 int overCount = 0;
chaithanyarss 216:93505a6f8db7 299 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 300 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 301 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 302 delete del_tm;
chaithanyarss 216:93505a6f8db7 303 del_tm = temp;
chaithanyarss 216:93505a6f8db7 304 ++overCount;
chaithanyarss 216:93505a6f8db7 305 }
chaithanyarss 216:93505a6f8db7 306 else{
chaithanyarss 216:93505a6f8db7 307 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 308 break;
chaithanyarss 216:93505a6f8db7 309 }
chaithanyarss 216:93505a6f8db7 310 }
chaithanyarss 216:93505a6f8db7 311 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 312 }
chaithanyarss 216:93505a6f8db7 313 }
chaithanyarss 216:93505a6f8db7 314 else{
chaithanyarss 216:93505a6f8db7 315 /*ADF not configured*/
chaithanyarss 216:93505a6f8db7 316 gFLAGS = gFLAGS & (~COM_TX_STATUS_FLAG);
chaithanyarss 216:93505a6f8db7 317 COM_POWER_OFF_TX;
chaithanyarss 216:93505a6f8db7 318 P_CDMS_HK_MAIN;
chaithanyarss 216:93505a6f8db7 319 Base_tm *ptr_tm = NULL;
chaithanyarss 216:93505a6f8db7 320 STANDBY_PRCS(ptr_tm);
chaithanyarss 216:93505a6f8db7 321 uint8_t standbyACK = 0x00;
chaithanyarss 216:93505a6f8db7 322 uint8_t bcn_main_status = (ptr_tm->TM_string[2] & 0xEF);
chaithanyarss 216:93505a6f8db7 323 if(( bcn_main_status == 0xC0 )||( bcn_main_status ==0xA0 )){
chaithanyarss 216:93505a6f8db7 324 standbyACK = 1;
chaithanyarss 216:93505a6f8db7 325 }
chaithanyarss 216:93505a6f8db7 326 if(standbyACK == 1){
chaithanyarss 216:93505a6f8db7 327 uint8_t ackReceived = 0x00;
chaithanyarss 216:93505a6f8db7 328 Base_tm *tm_ptr = NULL;
chaithanyarss 216:93505a6f8db7 329 P_BCN_TX_MAIN(tm_ptr);
chaithanyarss 216:93505a6f8db7 330 uint8_t ackcode = tm_ptr->TM_string[2] & 0xEF;
chaithanyarss 216:93505a6f8db7 331 if( (ackcode == 0xA0) || (ackcode == 0xC0))
chaithanyarss 216:93505a6f8db7 332 ackReceived = 0xFF;
chaithanyarss 216:93505a6f8db7 333 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 334 Base_tm *del_tm = tm_ptr;
chaithanyarss 216:93505a6f8db7 335 int overCount = 0;
chaithanyarss 216:93505a6f8db7 336 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 337 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 338 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 339 delete del_tm;
chaithanyarss 216:93505a6f8db7 340 del_tm = temp;
chaithanyarss 216:93505a6f8db7 341 ++overCount;
chaithanyarss 216:93505a6f8db7 342 }
chaithanyarss 216:93505a6f8db7 343 else{
chaithanyarss 216:93505a6f8db7 344 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 345 break;
chaithanyarss 216:93505a6f8db7 346 }
chaithanyarss 216:93505a6f8db7 347 }
chaithanyarss 216:93505a6f8db7 348 if( ackReceived == 0xFF ){
chaithanyarss 216:93505a6f8db7 349 Thread::wait(5000);
chaithanyarss 216:93505a6f8db7 350 }
chaithanyarss 216:93505a6f8db7 351 }
chaithanyarss 216:93505a6f8db7 352 /*DELETE THE TM AFTER USE*/
chaithanyarss 216:93505a6f8db7 353 Base_tm *del_tm = ptr_tm;
chaithanyarss 216:93505a6f8db7 354 int overCount = 0;
chaithanyarss 216:93505a6f8db7 355 while( del_tm != NULL ){
chaithanyarss 216:93505a6f8db7 356 if( (overCount < TM_OVERFLOW_CONSTANT) ){
chaithanyarss 216:93505a6f8db7 357 Base_tm *temp = del_tm->next_TM;
chaithanyarss 216:93505a6f8db7 358 delete del_tm;
chaithanyarss 216:93505a6f8db7 359 del_tm = temp;
chaithanyarss 216:93505a6f8db7 360 ++overCount;
chaithanyarss 216:93505a6f8db7 361 }
chaithanyarss 216:93505a6f8db7 362 else{
chaithanyarss 216:93505a6f8db7 363 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 364 break;
chaithanyarss 216:93505a6f8db7 365 }
chaithanyarss 216:93505a6f8db7 366 }
chaithanyarss 216:93505a6f8db7 367 RESET_CDMS;
chaithanyarss 216:93505a6f8db7 368 }
chaithanyarss 216:93505a6f8db7 369 /*gPC.puts("COMPLETED COM_POWER_ON_TX\r\n");*/
shreeshas95 4:104dd82c99b8 370 }