Compression code changed and RLY_TMTC pointers managed
Dependencies: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
COM_POWER_ON_TX.h
- Committer:
- aniruddhv
- Date:
- 2016-03-24
- Revision:
- 137:489a93a04d6b
- Parent:
- 95:42d6747900cb
- Child:
- 144:4c20fcc105ce
File content as of revision 137:489a93a04d6b:
#define SET_BCN_STANDBY ( tm_ptr ){\ Base_tc *beacon_tc = new Short_tc;\ beacon_tc->next_TC = NULL;\ PUTshort_or_long(beacon_tc,0);\ PUTcrc_pass(beacon_tc,0x1);\ PUTexec_status(beacon_tc,0);\ beacon_tc->TC_string[0] = 0x01;\ beacon_tc->TC_string[1] = 0x41;\ beacon_tc->TC_string[2] = 0x65;\ beacon_tc->TC_string[3] = 0x11;\ 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);\ tm_ptr = FCTN_CDMS_RLY_TMTC(beacon_tc);\ } #define reset_bae {\ Base_tc *reset_BAE = new Short_tc;\ reset_BAE->next_TC = NULL;\ PUTshort_or_long(reset_BAE,0);\ PUTcrc_pass(reset_BAE,0x1);\ PUTexec_status(reset_BAE,0);\ reset_BAE->TC_string[0] = 0x01;\ reset_BAE->TC_string[1] = 0x81;\ reset_BAE->TC_string[2] = 0x81;\ reset_BAE->TC_string[3] = 0x33;\ reset_BAE->TC_string[4] = 0;\ reset_BAE->TC_string[5] = 0;\ reset_BAE->TC_string[6] = 0;\ reset_BAE->TC_string[7] = 0;\ reset_BAE->TC_string[8] = 0;\ uint16_t crc16 = crc16_gen(reset_BAE->TC_string, 9);\ reset_BAE->TC_string[9] = (crc16 & 0xFF00)>>8;\ reset_BAE->TC_string[10] = (crc16 & 0x00FF);\ Base_tm *tm_ptr = new Short_tm;\ tm_ptr = FCTN_CDMS_RLY_TMTC(reset_BAE);\ /*DELETE THE TM AFTER USE*/\ obosc_tm_current = tm_ptr;\ int overCount = 0;\ while( obosc_tm_current != NULL ){\ if( (overCount < TM_OVERFLOW_CONSTANT) ){\ Base_tm *temp = obosc_tm_current->next_TM;\ delete obosc_tm_current;\ obosc_tm_current = temp;\ ++overCount;\ }\ else{\ /*PENDING: RESET CDMS: MEMORY LEAK FOUND*/\ break;\ }\ }\ } #define power_off_bae {\ Base_tc *power_off_BAE = new Short_tc;\ power_off_BAE->next_TC = NULL;\ PUTshort_or_long(power_off_BAE,0);\ PUTcrc_pass(power_off_BAE,0x1);\ PUTexec_status(power_off_BAE,0);\ power_off_BAE->TC_string[0] = 0x01;\ power_off_BAE->TC_string[1] = 0x81;\ power_off_BAE->TC_string[2] = 0x81;\ power_off_BAE->TC_string[3] = 0x23;\ power_off_BAE->TC_string[4] = 0;\ power_off_BAE->TC_string[5] = 0;\ power_off_BAE->TC_string[6] = 0;\ power_off_BAE->TC_string[7] = 0;\ power_off_BAE->TC_string[8] = 0;\ uint16_t crc16 = crc16_gen(power_off_BAE->TC_string, 9);\ power_off_BAE->TC_string[9] = (crc16 & 0xFF00)>>8;\ power_off_BAE->TC_string[10] = (crc16 & 0x00FF);\ Base_tm *tm_ptr = new Short_tm;\ tm_ptr = FCTN_CDMS_RLY_TMTC(power_off_BAE);\ /*DELETE THE TM AFTER USE*/\ obosc_tm_current = tm_ptr;\ int overCount = 0;\ while( obosc_tm_current != NULL ){\ if( (overCount < TM_OVERFLOW_CONSTANT) ){\ Base_tm *temp = obosc_tm_current->next_TM;\ delete obosc_tm_current;\ obosc_tm_current = temp;\ ++overCount;\ }\ else{\ /*PENDING: RESET CDMS: MEMORY LEAK FOUND*/\ break;\ }\ }\ } #define COM_POWER_ON_TX {\ if (DEBUG)\ gPC.puts("Inside COM_POWER_ON_TX\r\n");\ if( !(gFLAGS & COM_TX_FLAG) ){\ gFLAGS = gFLAGS | COM_TX_FLAG;\ if( gFLAGS & BAE_SW_EN_FLAG ){\ /*WARNING: INFINITE WHILE LOOP POSSIBLE: if standby ack received and bcn tx main status = 0*/\ bool retryFlag = true;\ while( retryFlag == true ){\ Base_tm *tm_ptr = new Short_tm;\ SET_BCN_STANDBY ( tm_ptr );\ uint8_t standbyAck = (tm_ptr & 0xEF);\ if( standbyAck == 0xE0 ){\ /*ACK RECCEIVED*/\ uint8_t bcn_main_status = 0xFF;\ /*PENDING: BEACON TX MAIN STATUS from tm_ptr*/\ if( bcn_main_status ){\ retryFlag = false;\ /*PENDING: SWITCH RELAY TO COM_TX*/\ gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);\ }\ else{\ gCOM_MNG_TMTC_THREAD->wait(5000);\ }\ }\ else{\ reset_bae;\ Base_tm *tm_ptr2 = new Short_tm;\ SET_BCN_STANDBY ( tm_ptr2 );\ uint8_t standbyAck2 = (tm_ptr2 & 0xEF);\ if( standbyAck2 == 0xEF ){\ uint8_t bcn_main_status = 0xFF;\ /*PENDING: BEACON TX MAIN STATUS from tm_ptr2*/\ if( bcn_main_status = 0xFF ){\ retryFlag = false;\ /*PENDING: SWITCH RF RELAY TO COM TX*/\ gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);\ }\ else{\ gCOM_MNG_TMTC_THREAD->wait(5000);\ }\ }\ else{\ retryFlag = false;\ power_off_bae;\ gFLAGS = gFLAGS | COM_AUTO_POWER_OFF_BAE_FLAG;\ gFLAGS = gFLAGS & (~BAE_SW_EN_FLAG);\ /*PENDING: SWITCH RF RELAY TO COM TX*/\ gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);\ }\ /*DELETE THE TM AFTER USE*/\ obosc_tm_current = tm_ptr2;\ int overCount = 0;\ while( obosc_tm_current != NULL ){\ if( (overCount < TM_OVERFLOW_CONSTANT) ){\ Base_tm *temp = obosc_tm_current->next_TM;\ delete obosc_tm_current;\ obosc_tm_current = temp;\ ++overCount;\ }\ else{\ /*PENDING: RESET CDMS: MEMORY LEAK FOUND*/\ break;\ }\ }\ }\ /*DELETE THE TM AFTER USE*/\ obosc_tm_current = tm_ptr;\ int overCount = 0;\ while( obosc_tm_current != NULL ){\ if( (overCount < TM_OVERFLOW_CONSTANT) ){\ Base_tm *temp = obosc_tm_current->next_TM;\ delete obosc_tm_current;\ obosc_tm_current = temp;\ ++overCount;\ }\ else{\ /*PENDING: RESET CDMS: MEMORY LEAK FOUND*/\ break;\ }\ }\ }\ }\ else{\ power_off_bae;\ gFLAGS = gFLAGS & (~BAE_SW_EN_FLAG);\ /*PENDING: SWITCH RF RELAY TO COM TX*/\ gFLAGS = gFLAGS & (~RF_SW_STATUS_FLAG);\ }\ }\ /*PENDING: POWER ON COM_TX*/\ /*power_on_com_tx_pin = 1;*/\ uint8_t adfConfigPass = 0xFF;\ for( int i = 0 ; i < COM_TX_CONFIG_LIMIT ; ++i ){\ /*PENDING: CONFIGURE ADF*/\ if( adfConfigPass == 0xFF ){\ break;\ }\ }\ if( adfConfigPass == 0xFF ){\ /*adf successfully configured*/\ /*CALL SIGN*/\ Base_tm *power_on_tm = NULL;\ Base_tm *power_on_tm_head = NULL;\ get_call_sign( power_on_tm_head );\ power_on_tm = power_on_tm_head;\ /*ACK L1*/\ get_ack_l1(power_on_tm->next_TM);\ int overFlowCountADF = 0;\ while( power_on_tm->next_TM != NULL ){\ if( overFlowCountADF < TM_OVERFLOW_CONSTANT ){\ power_on_tm = power_on_tm->next_TM;\ ++overFlowCountADF;\ }\ else{\ /*PENDING: RESET CDMS*/\ break;\ }\ }\ get_tc_list(power_on_tm->next_TM, 0x00);\ /*Call Sign, ACK_L1, TC_LIST*/\ /*snd_tm.head_pointer(power_on_tm_head);*/\ /*transmit_adf;*/\ /*deleting the telemetry*/\ power_on_tm = power_on_tm_head;\ overFlowCountADF = 0;\ while( power_on_tm != NULL ){\ if( overFlowCountADF < TM_OVERFLOW_CONSTANT ){\ Base_tm *temp = power_on_tm->next_TM;\ delete power_on_tm;\ power_on_tm = temp;\ ++overFlowCountADF;\ }\ else{\ /*PENDING: RESET CDMS*/\ break;\ }\ }\ if(/*NOT Transmitted succesfully*/){\ COM_POWER_OFF_TX;\ /*PENDING: CDMS HK MAIN*/\ uint8_t ackReceived = 0x00;\ /*PENDING: BCN TX MAIN*/\ if( ackReceived == 0xFF ){\ gCOM_MNG_TMTC_THREAD->wait(5000);\ /*PENDING: RESET CDMS*/\ }\ else{\ /*PENDING: RESET CDMS*/\ }\ }\ }\ else{\ /*PENDING: COM_POWER OFF TX*/\ /*PENDING: CDMS HK MAIN*/\ uint8_t ackReceived = 0x00;\ /*PENDING: BCN TX MAIN*/\ if( ackReceived == 0xFF ){\ gCOM_MNG_TMTC_THREAD->wait(5000);\ /*PENDING: RESET CDMS*/\ }\ else{\ /*PENDING: RESET CDMS*/\ }\ }\ /*gPC.puts("COMPLETED COM_POWER_ON_TX\r\n");*/\ }