Simple version of COM_MNG_TMTC_CODE for IITMSAT.

Dependencies:   mbed-rtos mbed FreescaleIAP SimpleDMA

Revision:
143:d81df402a016
Parent:
142:83f48d1a1bc5
Child:
146:d9ce37c49409
--- a/OBSRS.h	Tue Mar 29 14:22:55 2016 +0000
+++ b/OBSRS.h	Tue Mar 29 17:30:38 2016 +0000
@@ -8,7 +8,7 @@
 // Illegal TC          Case 3 ackl234new->TM_string[2] = (000_0010) = 0x_2;     spare = 0  00000010 =  0x02 invalid SID
 
 #define TMID_ACK_L234 0xB
-#define T_frames_in_segment 40
+#define T_frames_in_segment 20
 
 using namespace std;
 Base_tc *current_obsrs_tc = NULL;   
@@ -38,6 +38,7 @@
 bool enable_FCCH = false;
 bool enable_DS = false;
 bool half_buffer = 0;
+bool TM_sent = false;
 //bool session_over = gFLAGS & COM_SESSION_TIMEOUT_FLAG;
 
 uint8_t SID ;
@@ -54,7 +55,7 @@
 uint8_t counter_FCCH80 = 0;
 uint8_t counter_S_frame = 0;
 uint8_t T_frame_Ack_andcallsign_sent = 0; 
-uint8_t T_frame_in_Ackandcallsign = 2;                        // needs to get from sukhdeep depends on size of Ack_L1
+uint8_t T_frame_in_Ackandcallsign ;                        // needs to get from sukhdeep depends on size of Ack_L1
 uint32_t block_counter = 0;
 uint8_t no_of_frames =0;                             
 
@@ -149,7 +150,7 @@
  counter_FCCH80 = 0;\
  counter_S_frame = 0;\
  T_frame_Ack_andcallsign_sent = 0;\
- T_frame_in_Ackandcallsign = 4;\
+ T_frame_in_Ackandcallsign ;\
  block_counter = 0;\
  no_of_frames =0;\
 }
@@ -172,9 +173,10 @@
             buffer_112[counter_buffer_112] = interleave_data[half_buffer][counter_interleavedata++];\
             if (counter_interleavedata == 144)\
             {   \
-                gPC.printf("Ads sent\r\n");\
+                gPC.printf("Ads sent  %d\r\n",half_buffer);\
                 enable_DS = false;\
                 enable_FCCH = true;\
+                counter_interleavedata = 0;\
             }\
         }\
         else if (enable_FCCH)\
@@ -184,20 +186,23 @@
             {\
                 gPC.printf("Afcch80 sent\r\n");\
                 enable_FCCH = false;\
+                counter_FCCH80 = 0;\
+                enable_SCH = true;\
                 if(half_buffer == 0){\
-                    enable_SCH = true;\
                     half_buffer = 1;\
-                    counter_FCCH80 = 0;\
-                    counter_interleavedata = 0;\
+                }\
+                else{\
+                    half_buffer =0;\
+                    TM_sent=true;\
                 }\
             }\
         }\
-        if((counter_interleavedata == 144 ) && (half_buffer == 1)){\
-            counter_interleavedata = 0;\
-            half_buffer = 0;\
+        if(TM_sent){\
+            TM_sent =false;\
             T_frames_sent = T_frames_sent +2;\
             if(repeat_last_2T_frames){\
-                /*cout<<"repeated last two T frames"<<" ";*/\
+                enable_SCH = true;\
+                gPC.printf("repeated last 2 tframes\r\n");\
                 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\
             }\
             else{\
@@ -212,7 +217,7 @@
                     enable_SCH = true;\
                 }\
                 else{\
-                    /*cout<<"error in send_Ack_andcallsign if T_frames_sent < T_frames_in_segment"<<ENDL;*/\
+                    gPC.printf("error in send ack\r\n");\
                 }\
             }\
             if(T_frames_sent == T_frames_in_segment){\
@@ -229,7 +234,7 @@
                 }\
                 else{\
                     send_EoS_and_stop = true; \
-                }   \
+                }\
             }\
         }\
     }\
@@ -357,8 +362,6 @@
         }\
 }
 
-
-
 void send_tm_from_SD_card_fun(){
     gPC.printf("\n\rsend tm sd called\r\n");
     for(counter_buffer_112=0;counter_buffer_112<112;counter_buffer_112++){
@@ -491,10 +494,6 @@
                 adf_limit = false;
             }
         }
-        else if(stop){
-//                cout<<"Done bro"<<ENDL;
-                break;
-        }
         else if(enable_ackandcallsign){
             if(create_Ack_andcallsign){
                 gPC.printf("cr ack\r\n");
@@ -515,6 +514,7 @@
                 snd_tm.head_pointer_sdcard(ack_head);
                 gPC.printf("test 4\r\n");
                 T_frame_in_Ackandcallsign = 2*snd_tm.make_shor_tm();
+                gPC.printf(" T_frame_in_Ackandcallsign = %d\r\n",T_frame_in_Ackandcallsign);
                 Base_tm *ack_l234 = ack_and_callsign->next_TM;
                 uint8_t temp2 = TC_STATE_SUCCESSFULLY_EXECUTED; // see all the possible cases
                 PUTexec_status(current_obsrs_tc, temp2);
@@ -538,17 +538,19 @@
                 }
                 gPC.printf("test 5\r\n");
                 ack_and_callsign = ack_head->next_TM;
-                delete ack_head;
-                gPC.printf("test 6\r\n");
-                while(ack_and_callsign != NULL){
-                    Base_tm *temp = ack_and_callsign->next_TM;
-                    delete ack_and_callsign;
-                    ack_and_callsign = temp;
-                }
+                
                 gPC.printf("ex cr ack\r\n");
             }    
             send_Ack_andcallsign;
         }
+        else if(last_buffer){
+//            delete ack_head;
+//            while(ack_and_callsign != NULL){
+//            Base_tm *temp = ack_and_callsign->next_TM;
+//            delete ack_and_callsign;
+//            ack_and_callsign = temp;
+//            }
+        }
         else if(enable_EoS){
 //            send_EoS();
             buffer_112[counter_buffer_112] = EoS[counter_EoS++];