
Repository for CDMS code
Dependencies: SimpleDMA mbed-rtos mbed eeprom
Fork of COM_MNG_TMTC_SIMPLE by
Revision 147:7fd1ca3a35a1, committed 2016-04-02
- 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
--- 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); }