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: SimpleDMA mbed-rtos mbed eeprom
Fork of COM_MNG_TMTC_SIMPLE by
Diff: COM_MNG_TMTC.h
- Revision:
- 180:ccc21cc163f8
- Parent:
- 169:451b54864992
- Child:
- 187:2c7263530c57
- Child:
- 211:77bee0cbebfe
diff -r 67588115bca3 -r ccc21cc163f8 COM_MNG_TMTC.h
--- a/COM_MNG_TMTC.h Fri Apr 22 19:43:13 2016 +0000
+++ b/COM_MNG_TMTC.h Wed May 25 15:28:32 2016 +0000
@@ -152,7 +152,7 @@
}\
}\
else{\
- if( (gMASTER_STATE == TCL_STATE_INCOMPLETE) || (gMASTER_STATE == TCL_STATE_COMPLETED) ){\
+ if( (gMASTER_STATE == TCL_STATE_INCOMPLETE) || (gMASTER_STATE == TCL_STATE_COMPLETED) || (gMASTER_STATE == TCL_STATE_ABORTED) ){\
gMASTER_STATE = TCL_STATE_INCOMPLETE;\
}\
}\
@@ -945,6 +945,8 @@
int reset_flag = 0;\
if (DEBUG)\
gPC.puts("iNSIDE EXECUTE_OBOSC_ONLY\r\n");\
+ Base_tm *obosc_tm_core = NULL;\
+ Base_tm *obosc_tm = obosc_tm_core;\
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;\
@@ -963,27 +965,13 @@
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);\
+ Base_tm *obosc_tm_current = obosc_tm_core;\
+ while(obosc_tm_core != NULL){\
+ obosc_tm_core = obosc_tm_core->next_TM;\
+ }\
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;\
- while( obosc_tm_current->next_TM != NULL ){\
- if( overflowCountOBONLY < TM_OVERFLOW_CONSTANT ){\
- obosc_tm_current = obosc_tm_current->next_TM;\
- ++overflowCountOBONLY;\
- }\
- else{\
- 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) == SHORT_TM_CODE ){\
@@ -997,24 +985,6 @@
}\
obosc_tm_current = obosc_tm_current->next_TM;\
}\
- /*Sending OBOSC TM to GS*/\
- /*snd_tm.head_pointer(obosc_tm_head);*/\
- /*transmit_adf;*/\
- /*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{\
- RESET_CDMS;\
- break;\
- }\
- }\
if ( reset_flag ==1 ){\
reset_all;\
}\
@@ -1030,6 +1000,42 @@
}\
}\
}\
+ if(obosc_tm_core != NULL){\
+ 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{\
+ RESET_CDMS;\
+ break;\
+ }\
+ }\
+ obosc_tm_current->next_TM = obosc_tm;\
+ /*Sending OBOSC TM to GS*/\
+ /*snd_tm.head_pointer(obosc_tm_head);*/\
+ /*transmit_adf;*/\
+ /*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{\
+ RESET_CDMS;\
+ break;\
+ }\
+ }\
+ }\
}
#define EXECUTE_TC {\
@@ -1050,6 +1056,10 @@
uint8_t current_exec_status = GETexec_status(current_TC);\
if( (current_exec_status == TC_STATE_SUCCESSFULLY_EXECUTED) || (current_exec_status == TC_STATE_DISABLED) ){\
/*gPC.printf("disabled or completed at %u\n", execute_psc);*/\
+ if( execute_psc == (gTOTAL_VALID_TC-1) ){\
+ /*LAST TC IS EXECUTED*/\
+ gMASTER_STATE = TCL_STATE_COMPLETED;\
+ }\
break;\
}\
else if( (current_exec_status == TC_STATE_EXECUTION_FAILED) && (GETabort_on_nack(current_TC) == 1) ){\
@@ -1141,25 +1151,6 @@
/*LAST TC IS EXECUTED*/\
gMASTER_STATE = TCL_STATE_COMPLETED;\
}\
- else{\
- uint8_t check1 = 1;\
- for( uint8_t test_psc = execute_psc+1 ; test_psc < gTOTAL_VALID_TC ; ++test_psc ){\
- Base_tc* test_TC = gHEAD_NODE_TCL;\
- while(test_TC != NULL){\
- if( GETpacket_seq_count(test_TC) == test_psc ){\
- uint8_t checkval;\
- isit_obosc(test_TC, checkval);\
- if( checkval == 0 ){\
- check1 = 0;\
- }\
- }\
- test_TC = test_TC->next_TC;\
- }\
- }\
- if( check1 == 0x01 ){\
- gMASTER_STATE = TCL_STATE_COMPLETED;\
- }\
- }\
/*update last executed L1_ack*/\
if( put_tm_here != NULL ){\
if( GETshort_or_long_tm(put_tm_here) == SHORT_TM_CODE ){\
@@ -1360,7 +1351,7 @@
if (DEBUG)\
gPC.puts("ABORTING DUE TO ABORT ON NACK\r\n");\
/*EXITED DUE TO ABORT ON NACK:*/\
- /*PENDING : POWER OFF COM TX*/\
+ /*COM_TX_CNTRL = 0;*/\
RX1M.attach(&rx_read, Serial::RxIrq);\
gFLAGS = gFLAGS & (~COM_MNG_TMTC_RUNNING_FLAG);\
break;\
@@ -1368,7 +1359,7 @@
else if( gFLAGS & COM_PA_HOT_FLAG ){\
/*PA HOT: WAIT FOR TIMEOUT*/\
gCOM_PA_COOLING_TIMEOUT.attach(&after_cooling_pa, COM_PA_COOLING_TIME_LIMIT);\
- /*PENDING : POWER OFF COMM TX*/\
+ /*COM_TX_CNTRL = 0;*/\
RX1M.attach(&rx_read, Serial::RxIrq);\
gFLAGS = gFLAGS & (~COM_MNG_TMTC_RUNNING_FLAG);\
break;\
