Repository for CDMS code

Dependencies:   SimpleDMA mbed-rtos mbed eeprom

Fork of COM_MNG_TMTC_SIMPLE by Shreesha S

Files at this revision

API Documentation at this revision

Comitter:
ee12b079
Date:
Thu Jun 30 21:38:54 2016 +0000
Parent:
198:17200a427e71
Child:
200:05ff11766d9a
Commit message:
obsrs tm to be checked

Changed in this revision

Compression.h Show annotated file Show diff for this revision Revisions of this file
OBSRS.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
adf.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Compression.h	Thu Jun 30 13:01:42 2016 +0000
+++ b/Compression.h	Thu Jun 30 21:38:54 2016 +0000
@@ -324,11 +324,11 @@
                 frames[id][132] = temp_crc>>8;
                 frames[id][133] = temp_crc & 0xff;
                 //if(test_cntr++ == 0){
-                    gPC.puts("frame start\r\n");
+                    /*gPC.puts("frame start\r\n");
                     for(int i = 0; i<134; i++){
                         gPC.printf("%02X",frames[id][i]);
                     }    
-                    gPC.puts("frame ends\r\n");
+                    gPC.puts("frame ends\r\n");*/
                 //}
                    
                 
@@ -613,11 +613,11 @@
                 temp_crc = crc16_gen(frames[id],132);
                 frames[id][132] = temp_crc>>8;
                 frames[id][133] = temp_crc & 0xff;
-                gPC.puts("frame start\r\n");
-                for(int i = 0; i<134; i++){
+                /*gPC.puts("frame start\r\n");*/
+                /*for(int i = 0; i<134; i++){
                     gPC.printf("%02X",frames[id][i]);
                 }    
-                gPC.puts("frame ends\r\n");
+                gPC.puts("frame ends\r\n");*/
                 exor(frames[id]);
                 convolution(frames[id]);
                 interleave(TM_convoluted_data,TM_interleave_data);
--- a/OBSRS.h	Thu Jun 30 13:01:42 2016 +0000
+++ b/OBSRS.h	Thu Jun 30 21:38:54 2016 +0000
@@ -44,12 +44,12 @@
 uint8_t SID ;
 unsigned char buffer_112[112];
 uint32_t FSC;
-uint8_t read_success = 0;
+uint16_t read_success = false;
 uint16_t counter_buffer_112=0, counter_EoS=0,T_frames_sent=0;
 uint16_t counter_interleavedata=0;
 uint16_t counter_buffer_512=0;
 uint16_t max_segments  =  65415/(48+T_frames_in_segment*159);
-uint8_t ack_code = 0xA0;
+uint16_t ack_code = 0xA0;
 uint8_t segments_sent = 0;
 uint8_t counter_SCH40 = 0;
 uint8_t counter_FCCH80 = 0;
@@ -92,7 +92,19 @@
 }
 
 void restart_adf(){
-    
+    /*go to phy off and and py on then phy TX again    */
+    gCS_ADF = 0;
+    spi.write(0xB1);/*phy_on */
+    gCS_ADF = 1;
+    gCS_ADF = 0;
+    spi.write(0xB0);/*phy_off */
+    gCS_ADF = 1;
+    gCS_ADF = 0;
+    spi.write(0xB1);/*phy_on */
+    gCS_ADF = 1;
+    gCS_ADF = 0;
+    spi.write(0xB5);/*start transmission*/
+    gCS_ADF = 1;
     }
     
 int diff_prev;
@@ -107,7 +119,8 @@
 }
 
 #define check_PA_temp {\
-/*    return 0 or 1*/\
+/* pending temperature check function*/\
+/*   return 0 or 1*/\
     PA_HOT=0;\
 }
 
@@ -138,7 +151,7 @@
  enable_FCCH = false;\
  enable_DS = false;\
  half_buffer = 0;\
- read_success = 0;\
+ read_success = false;\
  counter_buffer_112=0;\
  counter_EoS=0;\
  T_frames_sent=0;\
@@ -201,7 +214,6 @@
             TM_sent =false;\
             T_frames_sent = T_frames_sent +2;\
             if(repeat_last_2T_frames){\
-                memset(interleave_data, 0, sizeof(interleave_data));\
                 enable_SCH = true;\
                 /*gPC.printf("repeated last 2 tframes\r\n");*/\
                 /*cout<<"T_frames_sent = "<<T_frames_sent<<ENDL;*/\
@@ -248,6 +260,7 @@
             enable_ackandcallsign = false;\
             stop =true;\
             last_buffer = true;\
+            send_EoS_and_stop = false;\
         }\
     }\
     else if(adf_limit){\
@@ -273,7 +286,7 @@
         if(counter_S_frame == 48){\
                enable_new_segment=false;\
                counter_S_frame = 0;\
-               /*cout<<"S_frame_sent"<<ENDL;*/\
+               gPC.printf("S_frame_sent\r\n");\
                if(new_OBSRS_TC){\
                     enable_call_sign = true;\
                     new_OBSRS_TC = false;\                   
@@ -427,6 +440,9 @@
                             enable_read_block = false;
                             enable_T_frame = false;
                             enable_ackandcallsign = true;
+                            /*putting execution status */
+                            uint8_t temp2 = TC_STATE_SUCCESSFULLY_EXECUTED;
+                            PUTexec_status(current_obsrs_tc, temp2);
                             create_Ack_andcallsign = true;
                             if(T_frames_sent == T_frames_in_segment){
                                 if(segments_sent + 1>= max_segments){
@@ -501,16 +517,13 @@
             if(create_Ack_andcallsign){
 /*                gPC.printf("cr ack\r\n");*/
                 enable_SCH = true;
-                uint8_t temp2 = TC_STATE_SUCCESSFULLY_EXECUTED; // see all the possible cases
-                PUTexec_status(current_obsrs_tc, temp2);
+               
                 if( (GETexec_status(current_obsrs_tc) == TC_STATE_EXECUTION_FAILED) && (GETabort_on_nack(current_obsrs_tc) == 1) ){
                                 gMASTER_STATE = TCL_STATE_ABORTED;
                 }
                 else if( GETpacket_seq_count(current_obsrs_tc) == (gTOTAL_VALID_TC-1) ){
                     gMASTER_STATE = TCL_STATE_COMPLETED;
                 }
-                
-                
                 create_Ack_andcallsign = false;
                 Base_tm *ack_and_callsign = NULL;
                 Base_tm *ack_head = NULL;
@@ -545,6 +558,14 @@
 /*                gPC.printf("ex cr ack\r\n");*/
             }    
             send_Ack_andcallsign;
+            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(last_buffer){
 //            delete ack_head;
@@ -578,15 +599,12 @@
 //                        for(int i=0;i<512;i++){
 //                        printf("0x%02X,",write_buffer[i]);
 //                        }
-                  int write_success = SD_WRITE(write_buffer,FSC + block_counter,SID);
+                   //int write_success = SD_WRITE(write_buffer,FSC + block_counter,SID);
 //                   wait_ms(8);
-                   ack_code = SD_READ(buffer_512, FSC + block_counter,SID);
-                   for(int i = 0; i<512;i++)
-                   if(write_buffer[i] != buffer_512[i])
-                   gPC.printf("incorrect");
-                   
-                   gPC.printf("read block %d \n\r",read_success);
-             }
+                   //ack_code = SD_READ(buffer_512, FSC + block_counter,SID);
+/*                   gPC.printf("read block %d \n\r",read_success);*/
+                    ack_code = 0xA0;
+               }
                else{
                    ack_code = SD_READ(buffer_512, list_of_FSC[block_counter],SID);
                    }
@@ -596,7 +614,7 @@
                }
                enable_read_block = false;
                if(ack_code == 0xA0){
-                   gPC.puts("read one block successfully");
+                   /*gPC.puts("read one block successfully")*/;
                    enable_T_frame = true;
                    enable_SCH = true;
                 }
@@ -620,6 +638,8 @@
                 }
         }
         if((PA_HOT || (!valid_SID)|| (gFLAGS & COM_SESSION_TIMEOUT_FLAG) ||(read_success != 0))&&(!enable_ackandcallsign)){
+            uint8_t temp2 = TC_STATE_EXECUTION_FAILED;
+            PUTexec_status(current_obsrs_tc, temp2);
             enable_ackandcallsign = true;
             create_Ack_andcallsign = true;
             enable_T_frame = false;
--- a/ThreadsAndFunctions.h	Thu Jun 30 13:01:42 2016 +0000
+++ b/ThreadsAndFunctions.h	Thu Jun 30 21:38:54 2016 +0000
@@ -19,6 +19,7 @@
     while(true){
         gPC.puts("entering sci\r\n");
         gSCIENCE_THREAD->signal_wait(SCIENCE_SIGNAL);
+        PL_wo_dma->stop();//
         gPC.puts("sig_set\r\n");
         srp(gPAYLOAD_BUFFER);
         gPC.puts("exit_srp\r\n");
--- a/adf.h	Thu Jun 30 13:01:42 2016 +0000
+++ b/adf.h	Thu Jun 30 21:38:54 2016 +0000
@@ -214,22 +214,22 @@
         spi.write(0x18);\
         spi.write(0x20);\
         for(unsigned char i=0; i<112;i++){\
-            if(bypass_adf)\
-                gPC.putc(buffer_112[i]);\
+            if(bypass_adf);\
+                /*gPC.putc(buffer_112[i]);*/\
             else\
                 spi.write(buffer_112[i]);\
-            /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
+            /*gPC.printf("0x%02X,",buffer_112[i]);*/\
         }\
     }\
     else{\
         spi.write(0x18);\
         spi.write(0x90);\
         for(unsigned char i=0; i<112;i++){\
-            if(bypass_adf)\
-                gPC.putc(buffer_112[i]);\
+            if(bypass_adf);\
+                /*gPC.putc(buffer_112[i]);*/\
             else\
                 spi.write(buffer_112[i]);\
-            /*gPC.printf("0x%X,",spi.write(buffer_112[i]));*/\
+            /*gPC.printf("0x%02X,",buffer_112[i]);*/\
         }\
     }\
     gCS_ADF=1;\
--- a/main.cpp	Thu Jun 30 13:01:42 2016 +0000
+++ b/main.cpp	Thu Jun 30 21:38:54 2016 +0000
@@ -52,7 +52,34 @@
     beacon_tc->TC_string[10] = (crc16 & 0x00FF);\
     tm_ptr =  FCTN_CDMS_RLY_TMTC(beacon_tc);\
 }
-
+#define OBSRS_TC(tm_ptr){\
+    Base_tc *beacon_tc = new Short_tc;\
+    beacon_tc->next_TC = NULL;\
+    PUTshort_or_long(beacon_tc,SHORT_TC_CODE);\
+    PUTcrc_pass(beacon_tc,0x1);\
+    PUTexec_status(beacon_tc,0);\
+    beacon_tc->TC_string[0] = 0x01;\
+    beacon_tc->TC_string[1] = 0x20;\
+    beacon_tc->TC_string[2] = 0xf2;\
+    beacon_tc->TC_string[3] = 0x00;\
+    beacon_tc->TC_string[4] = 0x00;\
+    beacon_tc->TC_string[5] = 0;\
+    beacon_tc->TC_string[6] = 2;\
+    beacon_tc->TC_string[7] = 0;\
+    beacon_tc->TC_string[8] = 2;\
+    uint16_t crc16 = crc16_gen(beacon_tc->TC_string, 9);\
+    beacon_tc->TC_string[9]  = (crc16 & 0xFF00)>>8;\
+    beacon_tc->TC_string[10] = (crc16 & 0x00FF);\
+    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)*/\
+                            /*read_TC(current_TC);*/\
+                            execute_OBSRS_TC(beacon_tc);\
+                            gPC.puts("enter_adf\r\n");\
+                            transmit_adf;\
+                            gPC.puts("exit_adf\r\n");\
+}
 //void set_sig(){gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL);}
 int main()
 {
@@ -60,13 +87,6 @@
     CDMS_I2C_GPIO = 0; 
     PYLD_I2C_GPIO = 0; 
     
-    /*gPC.printf("PL_TC sending\r\n");
-    
-    Base_tm *tm_ptr = new Short_tm;
-    PL_TC(tm_ptr);
-    
-    gPC.printf("PL_TC sent");*/
-    
     //gLEDR = 1;
     
     // ******************INITIALISATIONS START******************
@@ -94,7 +114,7 @@
     gCS_ADF = 1;
     
     FCTN_CDMS_INIT_RTC();/* rtc initialization*/
-    FCTN_CDMS_SD_INIT();/* sd card initialization*/
+    //FCTN_CDMS_SD_INIT();/* sd card initialization*/
     
     
     uint8_t test[512] = {0};
@@ -125,6 +145,12 @@
     PL_wo_dma = new RtosTimer(payload_isr_fun_dma, osTimerPeriodic,(void * )NULL);
     //PL_wo_dma->start(6000);//
     
+    gPC.printf("PL_TC sending\r\n");
+    
+    Base_tm *tm_ptr = new Short_tm;
+    OBSRS_TC(tm_ptr);
+    
+    gPC.printf("PL_TC sent");
     
     // *******************INITIALISATIONS END********************