Latest FM Code with EEPROM
Dependencies: FreescaleIAP SimpleDMA eeprom mbed-rtos mbed
Fork of CDMS_QM_03MAR2017_Flash_with_obsrs by
Diff: ThreadsAndFunctions.h
- Revision:
- 356:4484bf39526f
- Parent:
- 354:eb6c863756a8
diff -r a5e72222ff26 -r 4484bf39526f ThreadsAndFunctions.h --- a/ThreadsAndFunctions.h Tue Mar 28 08:50:07 2017 +0000 +++ b/ThreadsAndFunctions.h Sat Feb 24 10:28:56 2018 +0000 @@ -1,18 +1,16 @@ //Science Thread //SPI ISR - +#include "FMS_all.h"//this is to include the 'dmaSPISlave' and payload_isr_fun #include "COM_MNG_TMTC.h" #include "adf.h" #include "dmaSPIslave.h" - +//dmaSPISlave *gPAY_SPI; +//void payload_isr_fun(){ +// gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL); +// +//} -dmaSPISlave *gPAY_SPI; - -void payload_isr_fun(){ - gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL); - -} void payload_isr_fun_dma(void const *args ){ gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL); @@ -30,10 +28,14 @@ while(true){ gPC.printf("waiting for Sci sig\n\r"); gSCIENCE_THREAD->signal_wait(SCIENCE_SIGNAL); - gPC.printf("checking mutex in Sci\n\r"); gMutex.lock(); + if (EN_RCV_SC == 0) + { + gMutex.unlock(); + continue; + } gPC.printf("locked mutex,entered in Sci thread\n\r"); DMA_LED1 = 1; @@ -45,11 +47,11 @@ // srp(gPAYLOAD_BUFFER);//skip one apcket when cdms resets //gPC.puts("exit_srp\r\n"); //wait(2);/*timeout to be decided*/ - if(dma) + if(dma) //something wrong here { // TIME_LATEST_I2C_SPEED = FCTN_CDMS_RD_RTC() >> 7; PL_RCV_SC_DATA_COUNTER++; - gPAY_SPI->bulkRead_start(); + gPAY_SPI->bulkRead_start();//something wrong here // DMA_LED1 = !DMA_LED1; // added by samp //gPAY_SPI->bulkRead_pause(); //gPAY_SPI->bulkRead_resume(&payload_isr_fun); @@ -88,7 +90,11 @@ gPC.printf("\r\nreleasing mutex for Sci\n\r"); DMA_LED1 =0; //__enable_irq(); - gMutex.unlock(); + if(PL_SC_TEST){ + PL_SC_TEST = false; + gCOM_MNG_TMTC_THREAD->signal_set(RCVED_SCI_DATA_SIGNAL);//used for P_PL_RCV_SC_DATA + } + gMutex.unlock(); } } @@ -106,12 +112,14 @@ void rx_read(){ gRX_CURRENT_DATA_NODE->values[gRX_COUNT] = RX1M.getc(); //Checking RSSI + //gPC.printf("\nfck ths sht\n"); if(!COM_RSSI_SET) RSSI_VOLTAGE = COMRX_RSSI_VOLTAGE.read() * 3.3;//to be checked RSSI_MAX = RSSI_VOLTAGE; COM_RSSI_SET = 1; gFLAGS = gFLAGS | UART_INT_FLAG; + gCOM_MNG_TMTC_THREAD->signal_set(COM_MNG_TMTC_SIGNAL_UART_INT); } @@ -195,11 +203,15 @@ Thread::signal_wait( COM_MNG_TMTC_SIGNAL_UART_INT ); if( gFLAGS & UART_INT_FLAG ){ gFLAGS = gFLAGS & (~UART_INT_FLAG); + //gPC.puts("in uart"); if( !(gFLAGS & COM_SESSION_FLAG) ){ // DISABLE THREADS + // gPC.puts("1\r\n"); HK_counter->stop(); - gPAY_SPI->bulkRead_pause(); - PL_GPIO_3_STATUS=1; + resume_pl_dma = 0; + PL_GPIO_2_STATUS = 1;//STOP SCIENCE TRANSFER & CONTROL pin NOT STATUS + //gPAY_SPI->bulkRead_pause(); + //PL_GPIO_3_STATUS=1;//problem with this gFLAGS = gFLAGS | COM_SESSION_FLAG; gSESSION_TIMEOUT.attach(&after_session, COM_SESSION_TIMEOUT); gFLAGS = gFLAGS | COM_RX_FLAG; @@ -214,42 +226,50 @@ else if( gFLAGS & COM_RX_FLAG ){ //gLEDR = 0; //gLEDG = 1; + //gPC.puts("2\r\n"); + PUT_RAW_BYTE; } else{ //gLEDR = 1; //gLEDG = 0; + // gPC.puts("3\r\n"); + gFLAGS = gFLAGS | COM_RX_FLAG; PUT_RAW_BYTE; } if(gTOTAL_RAW_BYTES > BYTE_OVERFLOW_CONSTANT){ + //gPC.puts("4\r\n"); + RX1M.attach(NULL); gCOM_RX_DISABLE.attach(&after_com_disable, COM_RX_DISABLE_TIMEOUT); after_receive(); } } else if( gFLAGS & NEW_TC_RECEIVED ){ - gPC.puts("\n\n\n\r\rNEW TC RECEIVED\r\n"); + gFLAGS = gFLAGS & (~NEW_TC_RECEIVED); /*Thread::wait(2000);*/ - gFLAGS = gFLAGS & (~NEW_TC_RECEIVED); gFLAGS = gFLAGS | COM_MNG_TMTC_RUNNING_FLAG; // DISABLE THE RX1M INTERRUPT RX1M.attach(NULL); - + //gPC.printf("\n flags = %u \n", gFLAGS); + gPC.puts("\n\n\n\r\rNEW TC RECEIVED\r\n"); + //gPC.printf("\n %u \n", gFLAGS); // VERIFY CRC, REPEATED PSC AND UPDATE TOTAL_VALID_TC, INCORRECT SIZE TC, CRC FAIL TC while(gRX_COUNT < (RX_BUFFER_LENGTH)){ gRX_CURRENT_DATA_NODE->values[gRX_COUNT] = 0x00; ++gRX_COUNT; } gRX_COUNT = 0; + COM_RST.reset();//com thread saviour + COM_RST.start(); raw_data_to_tc(); + COM_RST.stop(); gFLAGS = gFLAGS & (~COM_RX_FLAG); - //Mutex gMutex.lock(); - - if( gTOTAL_VALID_TC > 0 ){ + if( gTOTAL_VALID_TC > 1 ){ gPC.printf("valid TC rx: %u\r\n", gTOTAL_VALID_TC); //gTOTAL_VALID_TC = 1; if( gTOTAL_VALID_TC < COM_MAX_TC_LIMIT ){ @@ -414,11 +434,11 @@ if(resume_pl_dma) { - - resume_pl_dma = 0; + PL_GPIO_2_STATUS=0; + // resume_pl_dma = 0; } //gPC.puts("dma started"); - gPAY_SPI->bulkRead_resume(&payload_isr_fun); + //gPAY_SPI->bulkRead_resume(&payload_isr_fun); gMutex.unlock(); }