
Repository for CDMS code
Dependencies: SimpleDMA mbed-rtos mbed eeprom
Fork of COM_MNG_TMTC_SIMPLE by
Revision 199:9f03d6ca94c9, committed 2016-06-30
- 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
--- 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********************