Dheeraj M Pai / Mbed 2 deprecated COM_MNG_TMTC_SIMPLE

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of COM_MNG_TMTC_SIMPLE by Shreesha S

Files at this revision

API Documentation at this revision

Comitter:
aniruddhv
Date:
Sat Jan 09 09:56:01 2016 +0000
Parent:
23:c89376564196
Child:
44:b9b067d0559f
Commit message:
Modified Execute_OBOSC, gsCODEver, execute_tc

Changed in this revision

COM_MNG_TMTC.h Show annotated file Show diff for this revision Revisions of this file
DefinitionsAndGlobals.h Show annotated file Show diff for this revision Revisions of this file
ThreadsAndFunctions.h Show annotated file Show diff for this revision Revisions of this file
--- a/COM_MNG_TMTC.h	Wed Jan 06 13:24:24 2016 +0000
+++ b/COM_MNG_TMTC.h	Sat Jan 09 09:56:01 2016 +0000
@@ -168,8 +168,8 @@
     returnHere = tempReturn;\
     /*UPDATE gMASTER STATE*/\
     if( (returnHere == 0x00) ){\
-        if( (gMASTER_STATE == TCL_STATE_INCOMPLETE) || (gMASTER_STATE == TCL_STATE_COMPLETED) ){\
-            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_EXECUTING;\
         }\
     }\
     else{\
@@ -189,8 +189,8 @@
     returnHere = 0xFF;\
     while( (overflowCount < TCL_OVERFLOW_CONSTANT) && (testTC != NULL) ){\
         if( (GETpacket_seq_count(testTC) == PSC_CALLSIGN) && (GETapid(testTC) == APID_CALLSIGN) ){\
-            uint8_t temp8 = testTC->TC_string[1];\
-            if( temp8 & 0x04 ){\
+            /*uint8_t temp8 = testTC->TC_string[1];*/\
+            if( true ){\
                 for( int i = 2 ; i <= 8 ; ++i ){\
                     if( testTC->TC_string[i] != gGSCODE[i-2] ){\
                         returnHere = 0;\
@@ -539,21 +539,6 @@
 }
 
 #define EXECUTE_OBOSC_ONLY {\
-    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;\
-        }\
-    }\
     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;\
@@ -571,19 +556,55 @@
                             /*gPC.printf("It is obosc: %u\r\n", execute_psc);*/\
                             /*EXECUTION OF OBOSC TC*/\
                             /*WARNING: LARGE MEMORY UTILIZATION FOR TC-LIST-REPORT */\
-                            execute_obosc_core(current_TC, obosc_tm_current->next_TM);\
-                            /*INCREMENT POINTER TO THE LAST NODE*/\
-                            int overflowCountOBinside = 0;\
+                            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);\
+                            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( overflowCountOBinside < TM_OVERFLOW_CONSTANT ){\
+                                if( overflowCountOBONLY < TM_OVERFLOW_CONSTANT ){\
                                     obosc_tm_current = obosc_tm_current->next_TM;\
-                                    ++overflowCountOBinside;\
+                                    ++overflowCountOBONLY;\
                                 }\
                                 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;\
+                                }\
+                            }\
                             uint16_t temp16 = TC_STATE_SUCCESSFULLY_EXECUTED;\
                             PUTexec_status(current_TC, temp16);\
                         }\
@@ -598,37 +619,6 @@
             }\
         }\
     }\
-    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;\
-        }\
-    }\
 }
 
 #define EXECUTE_TC {\
@@ -670,6 +660,7 @@
                                 /*gPC.printf("obosc tc inside normal tc at %u\r\n", execute_psc);*/\
                                 /*EXECUTION OF OBOSC TC*/\
                                 /*SKIP EXECUTION OF OBOSC HERE*/\
+                                break;\
                             }\
                             else{\
                                 /*gPC.printf("cdms relay tmtc at %u\r\n", execute_psc);*/\
@@ -697,6 +688,25 @@
                                 /*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->fields) == SHORT_TM_CODE ){\
@@ -769,6 +779,25 @@
                         else{\
                             /*gPC.printf("sd card at %u\r\n", execute_psc);*/\
                             /*EXECUTION OF SD-CARD DATA SENDING (OBSRS)*/\
+                            Base_tm *tm_ptr_head = NULL;\
+                            get_call_sign(tm_ptr_head);\
+                            Base_tm *put_tm_here = NULL;\
+                            /*execute_obsrs(current_TC, put_tm_here)*/\
+                            /*PENDING: APPEND ACK L1*/\
+                            Base_tm *tm_ptr = tm_ptr_head;\
+                            get_ack_l1(tm_ptr->next_TM);\
+                            int overflowCountExecute = 0;\
+                            while( tm_ptr->next_TM != NULL ){\
+                                if( overflowCountExecute < TM_OVERFLOW_CONSTANT ){\
+                                    tm_ptr = tm_ptr->next_TM;\
+                                    ++overflowCountExecute;\
+                                }\
+                                else{\
+                                    /*PENDING: RESET CDMS*/\
+                                    break;\
+                                }\
+                            }\
+                            tm_ptr->next_TM = put_tm_here;\
                             /*CHECK FOR HOT PA*/\
                             uint8_t tempPAhot = 0x00;\
                             isPAhot(tempPAhot);\
@@ -785,6 +814,58 @@
                             else if( execute_psc == (gTOTAL_VALID_TC-1) ){\
                                 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;\
+                                }\
+                            }\
+                            tm_ptr = tm_ptr_head;\
+                            while( tm_ptr != NULL ){\
+                                int length = TM_SHORT_SIZE;\
+                                if( GETshort_or_long_tm(tm_ptr->fields) == SHORT_TM_CODE ){\
+                                    length = TM_SHORT_SIZE;\
+                                }\
+                                else{\
+                                    length = TM_LONG_SIZE;\
+                                }\
+                                /*gPC.puts("Printing Call Sign, ACK_L1, TM list");*/\
+                                for(int i = 0 ; i < length ; ++i){\
+                                    gPC.putc(tm_ptr->TM_string[i]);\
+                                }\
+                                tm_ptr = tm_ptr->next_TM;\
+                            }\
+                            /*SEND DATA TO GS*/\
+                            /*snd_tm.head_pointer(tm_ptr_head);*/\
+                            /*adf_SDcard();*/\
+                            /*DELETE THE TM AFTER USE*/\
+                            tm_ptr = tm_ptr_head;\
+                            overflowCountExecute = 0;\
+                            while(tm_ptr != NULL){\
+                                if( overflowCountExecute < TM_OVERFLOW_CONSTANT ){\
+                                    Base_tm *temp = tm_ptr->next_TM;\
+                                    delete tm_ptr;\
+                                    tm_ptr = temp;\
+                                    ++overflowCountExecute;\
+                                }\
+                                else{\
+                                    /*PENDING: RESET CDMS*/\
+                                    break;\
+                                }\
+                            }\
                         }\
                     }\
                     break;\
--- a/DefinitionsAndGlobals.h	Wed Jan 06 13:24:24 2016 +0000
+++ b/DefinitionsAndGlobals.h	Sat Jan 09 09:56:01 2016 +0000
@@ -137,7 +137,7 @@
 Timeout gCOM_PA_COOLING_TIMEOUT;
 
 // GS code for verification
-const uint8_t gGSCODE[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+const uint8_t gGSCODE[] = {0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
 
 uint8_t gTOTAL_VALID_TC = 0x00;
 // USE LAST_L1_ACK FOR GENERATING REPORT
--- a/ThreadsAndFunctions.h	Wed Jan 06 13:24:24 2016 +0000
+++ b/ThreadsAndFunctions.h	Sat Jan 09 09:56:01 2016 +0000
@@ -131,8 +131,8 @@
                         uint8_t tempGSver = 0x00;
                         GScodeVerification(tempGSver);
                         /*PENDING: INCLUDE GS VERIFICATION CODE*/
-                        if( true ){
-                            /*gPC.puts("GC code match !!\r\n");*/
+                        if( tempGSver == 0xFF ){
+                            /*gPC.puts("GS code match !!\r\n");*/
                             gFLAGS = gFLAGS | COM_SESSION_VALIDITY;
                             COM_POWER_ON_TX;
                             // PENDING: PA HOT HANDLED IN EXECUTE_XXX FUNCTIONS