publishing to check changes in cdms code
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE_samp_23SEP_DMA_flag by
COM_POWER_ON_TX.h@218:c63cdba0550f, 2016-07-03 (annotated)
- Committer:
- chaithanyarss
- Date:
- Sun Jul 03 15:25:24 2016 +0000
- Revision:
- 218:c63cdba0550f
- Parent:
- 216:93505a6f8db7
Flash Completed;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chaithanyarss | 218:c63cdba0550f | 1 | extern void rx_read(); |
chaithanyarss | 218: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 | 218: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 | 218: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 | } |