FM
Dependencies: SimpleDMA eeprom mbed-rtos mbed FreescaleIAP
Fork of CDMS_CODE by
common_functions.h
- Committer:
- krishanprajapat
- Date:
- 2016-02-06
- Revision:
- 116:8f431a8bbe82
File content as of revision 116:8f431a8bbe82:
#define get_call_sign(tm_ptr) {\ Base_tm* call_sign_tm = new Short_tm;\ call_sign_tm->next_TM = NULL;\ tm_ptr = call_sign_tm;\ uint8_t temp8 = TMID_CALL_SIGN;\ PUTtmid(call_sign_tm->fields, temp8);\ temp8 = SHORT_TM_CODE;\ PUTshort_or_long_tm(call_sign_tm->fields, temp8);\ for( int i = 0 ; i < TM_SHORT_SIZE ; ++i ){\ call_sign_tm->TM_string[i] = gCALL_SIGN_STRING[i];\ }\ } #define get_ack_l1( tm_ptr ){\ Base_tc *current_TC = gHEAD_NODE_TCL;\ Base_tm *l1_ack = new Short_tm;\ /*APPEND TO THE tm_ptr HERE*/\ tm_ptr = l1_ack;\ fill_l1_ack(l1_ack);\ int TC_count = 0;\ int overflowCountL1 = 0;\ while(current_TC != NULL){\ if( overflowCountL1 < TCL_OVERFLOW_CONSTANT ){\ /*IF CRC PASS*/\ if( (GETcrc_pass(current_TC) == 1) ){\ if(TC_count > 4){\ /*PENDING: FILL TC_EXEC_CODE, APPEND CRC TO THE TM*/\ put_crc_l1_ack( l1_ack );\ /*extend the TM linked list*/\ TC_count = 0;\ l1_ack->next_TM = new Short_tm;\ l1_ack = l1_ack->next_TM;\ fill_l1_ack(l1_ack);\ }\ /*PSC starts from 7th byte*/\ l1_ack->TM_string[6+TC_count] = GETpacket_seq_count(current_TC);\ /*TC exec status*/\ switch(TC_count){\ case 0:\ l1_ack->TM_string[3] = (GETexec_status(current_TC)) & 0x0F;\ break;\ case 1:\ l1_ack->TM_string[4] = (GETexec_status(current_TC) << 4) & 0xF0;\ break;\ case 2:\ l1_ack->TM_string[4] |= (GETexec_status(current_TC)) & 0x0F;\ break;\ case 3:\ l1_ack->TM_string[5] = (GETexec_status(current_TC) << 4) & 0xF0;\ break;\ case 4:\ l1_ack->TM_string[5] |= (GETexec_status(current_TC)) & 0x0F;\ }\ ++TC_count;\ }\ current_TC = current_TC->next_TC;\ ++overflowCountL1;\ }\ else{\ /*PENDING: RESET CDMS*/\ break;\ }\ }\ /*FILL UP THE REMAINING FIELDS WITH 0x00 as PSC, AND 0xF as tc exec status*/\ if( (TC_count < 5) && (TC_count != 0) ){\ while(TC_count < 5){\ l1_ack->TM_string[6+TC_count] = 0x00;\ switch(TC_count){\ case 1:\ l1_ack->TM_string[4] = 0xF0;\ break;\ case 2:\ l1_ack->TM_string[4] |= 0x0F;\ break;\ case 3:\ l1_ack->TM_string[5] = 0xF0;\ break;\ case 4:\ l1_ack->TM_string[5] |= 0x0F;\ }\ ++TC_count;\ }\ }\ put_crc_l1_ack(l1_ack);\ }