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: FreescaleIAP SimpleDMA mbed-rtos mbed
Fork of CDMS_CODE by
Diff: COM_MNG_TMTC.h
- Revision:
- 74:65a271b5cf17
- Parent:
- 73:6c99294b7802
diff -r 6c99294b7802 -r 65a271b5cf17 COM_MNG_TMTC.h
--- a/COM_MNG_TMTC.h Mon Jan 18 22:21:23 2016 +0000
+++ b/COM_MNG_TMTC.h Mon Jan 18 22:49:35 2016 +0000
@@ -36,6 +36,24 @@
delete tc_ptr;\
}
+#define delete_all_tm(tm_ptr_head){\
+ /*DELETE THE TM AFTER USE*/\
+ Base_tm *temp_tm_ptr = tm_ptr_head;\
+ int overflowCountExecute = 0;\
+ while(temp_tm_ptr != NULL){\
+ if( overflowCountExecute < TM_OVERFLOW_CONSTANT ){\
+ Base_tm *temp = temp_tm_ptr->next_TM;\
+ delete temp_tm_ptr;\
+ temp_tm_ptr = temp;\
+ ++overflowCountExecute;\
+ }\
+ else{\
+ /*PENDING: RESET CDMS*/\
+ break;\
+ }\
+ }\
+}
+
// typeof tm_ptr: Base_tm
// typeof tc_ptr: Base_tc
// typeof temp_xxxx: uint8_t
@@ -1177,6 +1195,22 @@
#define EXECUTE_OBOSC_ONLY {\
int reset_flag = 0;\
+ Base_tm *obosc_tm_head = NULL;\
+ get_call_sign(obosc_tm_head);\
+ Base_tm *obosc_tm_current = obosc_tm_head;\
+ get_ack_l1(obosc_tm_current->next_TM);\
+ int overflowCountOBONLY = 0;\
+ while( obosc_tm_current->next_TM != NULL ){\
+ if( overflowCountOBONLY < TM_OVERFLOW_CONSTANT ){\
+ obosc_tm_current = obosc_tm_current->next_TM;\
+ ++overflowCountOBONLY;\
+ }\
+ else{\
+ /*PENDING: RESET CDMS*/\
+ break;\
+ }\
+ }\
+ uint8_t obosc_executed_count = 0;\
for(uint8_t execute_psc = PSC_START_VALUE ; execute_psc < gTOTAL_VALID_TC ; ++execute_psc){\
Base_tc* current_TC = gHEAD_NODE_TCL;\
int overCount = 0;\
@@ -1194,60 +1228,22 @@
/*gPC.printf("It is obosc: %u\r\n", execute_psc);*/\
/*EXECUTION OF OBOSC TC*/\
/*WARNING: LARGE MEMORY UTILIZATION FOR TC-LIST-REPORT */\
- Base_tm *obosc_tm_head = NULL;\
- get_call_sign(obosc_tm_head);\
- Base_tm *obosc_tm_core = NULL;\
- execute_obosc_core(current_TC, obosc_tm_core, reset_flag);\
- uint16_t temp16 = TC_STATE_SUCCESSFULLY_EXECUTED;\
- PUTexec_status(current_TC, temp16);\
- Base_tm *obosc_tm_current = obosc_tm_head;\
- get_ack_l1(obosc_tm_current->next_TM);\
- int overflowCountOBONLY = 0;\
+ execute_obosc_core(current_TC, obosc_tm_current->next_TM, reset_flag);\
+ ++obosc_executed_count;\
+ /*INCREMENT POINTER TO THE LAST NODE*/\
+ int overflowCountOBinside = 0;\
while( obosc_tm_current->next_TM != NULL ){\
- if( overflowCountOBONLY < TM_OVERFLOW_CONSTANT ){\
+ if( overflowCountOBinside < TM_OVERFLOW_CONSTANT ){\
obosc_tm_current = obosc_tm_current->next_TM;\
- ++overflowCountOBONLY;\
+ ++overflowCountOBinside;\
}\
else{\
/*PENDING: RESET CDMS*/\
break;\
}\
}\
- obosc_tm_current->next_TM = obosc_tm_core;\
- obosc_tm_current = obosc_tm_head;\
- while( obosc_tm_current != NULL ){\
- int length = TM_SHORT_SIZE;\
- if( GETshort_or_long_tm(obosc_tm_current->fields) == SHORT_TM_CODE ){\
- length = TM_SHORT_SIZE;\
- }\
- else{\
- length = TM_LONG_SIZE;\
- }\
- for(int i = 0 ; i < length ; ++i){\
- /*gPC.putc(obosc_tm_current->TM_string[i]);*/\
- }\
- obosc_tm_current = obosc_tm_current->next_TM;\
- }\
- /*snd_tm.head_pointer(obosc_tm_head);*/\
- /*adf_not_SDcard();*/\
- /*DELETE THE TM AFTER USE*/\
- obosc_tm_current = obosc_tm_head;\
- 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;\
- }\
- }\
- if ( reset_flag ==1 ){\
- reset_all;\
- }\
+ uint16_t temp16 = TC_STATE_SUCCESSFULLY_EXECUTED;\
+ PUTexec_status(current_TC, temp16);\
}\
}\
}\
@@ -1260,6 +1256,15 @@
}\
}\
}\
+ if( obosc_executed_count != 0 ){\
+ snd_tm.head_pointer(obosc_tm_head);\
+ adf_not_SDcard;\
+ }\
+ delete_all_tm(obosc_tm_head);\
+ if ( reset_flag == 1 ){\
+ reset_all;\
+ break;\
+ }\
}
#define EXECUTE_TC {\
