June 30

Dependencies:   FreescaleIAP SimpleDMA mbed-rtos mbed

Fork of CDMS_CODE by shubham c

Files at this revision

API Documentation at this revision

Comitter:
ee12b079
Date:
Sat Apr 02 13:54:24 2016 +0000
Parent:
136:8074893cd24e
Child:
151:e6c7d4f87704
Commit message:
Integrating with BAE...

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
i2c.h Show annotated file Show diff for this revision Revisions of this file
--- a/COM_MNG_TMTC.h	Thu Mar 10 15:26:50 2016 +0000
+++ b/COM_MNG_TMTC.h	Sat Apr 02 13:54:24 2016 +0000
@@ -14,7 +14,6 @@
 #include "cdms_rtc.h"
 Timer t_pl;
 //defined in definations and globals, need to mapped with the final ones.
-//DigitalIn tm_status_4m_slv(PIN39); //I2C interrupt to CDMS from BAE
 //DigitalIn tm_status_4m_pl(PIN61); //I2C interrupt to CDMS from PL 
 
 uint8_t received = 0;
@@ -407,26 +406,33 @@
     {
         case 1: //apid=01 implies it corresponds to bae
         {
-            //printf("Telecommand is for BAE\r\n");
+            printf("Telecommand is for BAE\r\n");
             //printf("Sending TC to BAE...\r\n"); //interrupt to be sent to the bae
-            //FCTN_I2C_WRITE((char*)tc_ptr->TC_string);
-//            while(1)
-//            {
-//                wait(1); //TimeOut instead of wait
-//                if(tm_status_4m_slv == 1)
-//                {
-//                    //printf("receiving...\r\n");
-//                    FCTN_I2C_READ((char*)tm_pointer->TM_string,134);
-//                    //printf("%s", tm_pointer->TM_string);
-//                    received+=1;
-//                    tm_pointer = tm_pointer->next_TM;
-//                    break; //only for testing purpose
-//                }
-//                else
-//                {
-//                    break;
-//                }
-//            }
+
+            if(GETshort_or_long_tc(tc_ptr) == LONG_TC_CODE)
+                FCTN_I2C_WRITE((char*)tc_ptr->TC_string,TC_LONG_SIZE);
+            else 
+            {
+                FCTN_I2C_WRITE((char*)tc_ptr->TC_string,TC_SHORT_SIZE);
+            }
+            
+            while(1)
+            {
+                wait(1); //TimeOut instead of wait
+                if(BAE_I2C_GPIO == 1)
+                {
+                    //printf("receiving...\r\n");
+                    FCTN_I2C_READ((char*)tm_pointer->TM_string,TM_LONG_SIZE);
+                    //printf("%s", tm_pointer->TM_string);
+                    received+=1;
+                    tm_pointer = tm_pointer->next_TM;
+                    break; //only for testing purpose
+                }
+                else
+                {
+                    break;
+                }
+            }
 //            if(received >= 1 )
 //            {
 //                //printf("Telemetry is received from BAE\r\n");
@@ -455,7 +461,7 @@
 //                crc16 = crc16_gen(tm_ptr->TM_string,11);
 //                tm_pointer->TM_string[11] = (uint8_t)((crc16&0xFF00)>>8);
 //                tm_pointer->TM_string[12] = (uint8_t)(crc16&0x00FF);
-                tm_pointer->next_TM = NULL;                 return tm_ptr;
+                //tm_pointer->next_TM = NULL;                 return tm_ptr;
 //            }
             break;
         }
@@ -501,7 +507,7 @@
                                     //Data[0] = FCTN_CDMS_RD_FLASH(0);
                                     //Data[1] = FCTN_CDMS_RD_FLASH(1);                                                                                             
                                     //tm_pointer = new Long_tm;
-                                    tm_pointer->TM_string[0] = 0xB0;
+                                    tm_pointer->TM_string[0] = 0x30;
                                     tm_pointer->TM_string[1] = GETpacket_seq_count(tc_ptr);
                                     tm_pointer->TM_string[2] = ACKCODE;
                                     
--- a/DefinitionsAndGlobals.h	Thu Mar 10 15:26:50 2016 +0000
+++ b/DefinitionsAndGlobals.h	Sat Apr 02 13:54:24 2016 +0000
@@ -29,6 +29,10 @@
 I2C master(D7,D6);
 InterruptIn PYLD_I2C_Int(PTA13);
 
+//I2C - CDMS to BAE
+DigitalIn BAE_I2C_GPIO(PIN39);
+DigitalOut CDMS_I2C_GPIO(PIN67);
+
 // TC LIST
     #define TCL_STATE_INCOMPLETE 0x00
     #define TCL_STATE_ABORTED 0x03
--- a/i2c.h	Thu Mar 10 15:26:50 2016 +0000
+++ b/i2c.h	Sat Apr 02 13:54:24 2016 +0000
@@ -2,10 +2,7 @@
 #define tc_len 135
 #define tc_test_len 135
 
-InterruptIn irpt_4m_slv(D3);                                      //I2c interrupt from CDMS
-DigitalOut irpt_2_slv(D4);                                        //I2C interrupt to CDMS
-//I2C master(PTC9,PTC8);
-const int addr = 0x20;                                            //slave address 
+const int addr_bae = 0x20;                                            //slave address 
 const int addr_pl = 0x20<<1;                                            //PL slave address
 
 bool write_ack = true;
@@ -27,35 +24,14 @@
         
         }
 }
-void FCTN_I2C_READ_PL(char *data,int length)
+
+
+void FCTN_I2C_READ(char *data,int length)
 {   
+    master.frequency(100000);
+    CDMS_I2C_GPIO = 1;
     //t_read.start();
-    read_ack = master.read(addr_pl|1,data,length);
-    //t_read.stop();
-    uint8_t len = 0;
-  
-  printf("\n\r i2c data : \n\n\r\r");
-  while(len != length) printf("%c",data[len]);
-  printf(" \n\n\r\r"); 
-    if(read_ack == 0)
-      printf("\n\rData received from PL %s \n",data);
- if (read_ack == 1)
-    {
-//        gLEDR = 1;
-        printf("\n \r data not received from PL\n");
-//        gLEDR = 0;
-    }
-//if(read_ack == 1)
-//pc.printf("\n \r data not received \n");
-    //printf("\n\r %d \n",t.read_us());
-    //t.reset();
-}
-
-void FCTN_I2C_READ(char *data,int length, int addr)
-{   
-    irpt_2_slv = 1;
-    //t_read.start();
-    read_ack = master.read(addr|1,data,length);
+    read_ack = master.read(addr_bae|1,data,length);
     //t_read.stop();
   
     //if(read_ack == 0)
@@ -67,29 +43,32 @@
 //if(read_ack == 1)
 //pc.printf("\n \r data not received \n");
 
-    irpt_2_slv = 0;
+    CDMS_I2C_GPIO = 0;
     //printf("\n\r %d \n",t.read_us());
     //t.reset();
+    master.frequency(400000);
 }
 
-void FCTN_I2C_WRITE(char *data)
+void FCTN_I2C_WRITE(char *data,uint8_t tc_len2)
 {
-    irpt_2_slv = 1;
+    master.frequency(100000);
+    CDMS_I2C_GPIO = 1;
     //t.start();
-    write_ack = master.write(addr|0x00,data,tc_len);
+    write_ack = master.write(addr_bae|0x00,data,tc_len2);
     //t.stop();
     //if(write_ack == 0)
         //gPC.printf("\n\r data not sent \n");
        
-if (write_ack == 0)
+if (write_ack == 1)
     {
 //        led2 = 1;
-        //gPC.printf("\n\r data not sent \n");
+        gPC.printf("\n\r data not sent \n");
 //        led2 = 0;    
     }
-    irpt_2_slv = 0;
+    CDMS_I2C_GPIO = 0;
     //gPC.printf("\n\r %d \n",t.read_us());
     //t.reset();
+    master.frequency(400000);
 }