working version
Dependencies: mbed mbed-rtos SimpleDMA FreescaleIAP eeprom
Fork of CDMS_CODE_FM_28JAN2017 by
Revision 357:f3d48d62e00e, committed 2022-04-03
- Comitter:
- samp1234
- Date:
- Sun Apr 03 15:35:53 2022 +0000
- Parent:
- 356:197c93dc2012
- Commit message:
- First commit test
Changed in this revision
diff -r 197c93dc2012 -r f3d48d62e00e .hgignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Sun Apr 03 15:35:53 2022 +0000 @@ -0,0 +1,10 @@ +^BUILD$ +^compile_commands.json$ +^.mbed$ +^.clangd$ +^.cache$ +^mbed-rtos$ +^eeprom$ +^SimpleDMA$ +^FreescaleIAP$ +^mbed$
diff -r 197c93dc2012 -r f3d48d62e00e CDMS_HK.h --- a/CDMS_HK.h Sat Feb 10 09:06:26 2018 +0000 +++ b/CDMS_HK.h Sun Apr 03 15:35:53 2022 +0000 @@ -12,6 +12,7 @@ void COLLECT_CDMS_RAM(); void IS_BAE_IN_DISTRESS(); uint8_t SAVE_BAE(uint8_t); +void FCTN_CDMS_P_MGMT(uint8_t); extern uint8_t beacon_array[134]; //extern RSSI_MAX; @@ -45,7 +46,8 @@ uint8_t BAE_HEALTH_FINAL[512] = {0}; unsigned char BAE_HK_FRAME[134] = {0}; - +//Software Timer +void int_acq1() { expired=1; } void FCTN_CDMS_HK_MAIN(void const *args) { @@ -73,7 +75,10 @@ //gPC.printf("\n\r%d\n",CDMS_WR_SD_FAULT_COUNTER); if(EN_CDMS_HK == 0x00) + { + gMutex.unlock(); continue; + } CDMS_HK_MAIN_STATUS = 0x01; CDMS_HK_MAIN_COUNTER++; CDMS_I2C_ERR_BAE_CURRENT = CDMS_I2C_ERR_BAE_COUNTER; @@ -82,6 +87,7 @@ if(!COM_RSSI_SET) { RSSI_VOLTAGE = COMRX_RSSI_VOLTAGE.read() * 3.3;//to be checked + gPC.printf("RSSI= %f",RSSI_VOLTAGE); gPC.printf("RSSI_MAX = %f",RSSI_MAX); } else { @@ -105,7 +111,7 @@ CDMS_quant[i+4]= (uint8_t)quant_data.temp_quant[i]; } minMaxHkData(); - + gPC.printf("\n\r %d",CDMS_quant[0]); CDMS_HEALTH_DATA[1] = GPIO_STATUS; //Reading GPIO Pins CDMS_HEALTH_DATA[0] = GPIO_STATUS >> 8; COLLECT_CDMS_RAM(); @@ -246,20 +252,23 @@ } // gPC.printf("Completed BAE HK\n"); - + POWER_MODE = BAE_HK[40]; // Extract Power Mode from BAE_HK + gPC.printf("POWER MODE is %d\n", POWER_MODE); + /*----------------------------------Power Management------------------------------------*/ + FCTN_CDMS_P_MGMT(POWER_MODE); /*----------------------------------Beacon message--------------------------------------*/ // Add HK bits beacon_array[0] = 0x00; - beacon_array[1] = time >> 32; + beacon_array[1] = TC_count; beacon_array[2] = time >> 24; beacon_array[3] = time >> 16; beacon_array[4] = time >> 8; beacon_array[5] = time; beacon_array[6] = SD_FAULTCOUNT >> 8; beacon_array[7] = SD_FAULTCOUNT; - beacon_array[8] = RTC_FAULTCOUNT >> 8; + beacon_array[8] = CDMS_RESET_COUNTER; beacon_array[9] = RTC_FAULTCOUNT; if(!COM_OC_SET) beacon_array[10] = (((SD_STATUS == DEVICE_DISABLED || SD_STATUS == DEVICE_OC_FAULT)?1:0)<<7)|(RTC_STATUS <<6)|(COM_RX_STATUS<<3)|(0<<2)|(COMRX_OC_FAULT<<1)|(COM_TX_OC_FAULT); @@ -268,7 +277,7 @@ beacon_array[10] = (((SD_STATUS == DEVICE_DISABLED || SD_STATUS == DEVICE_OC_FAULT)?1:0)<<7)|(RTC_STATUS <<6)|(COM_RX_STATUS<<3)|(0<<2)|(COMRX_OC_FAULT<<1)|(com_oc_sw_status); COM_OC_SET = 0; } - beacon_array[11] = (COM_RX_CNTRL <<7)|(COM_TX_CNTRL<<6); + beacon_array[11] = (COM_RX_CNTRL <<7)|(COM_TX_CNTRL<<6)|(COM_PA_IC_TMP >> 2); beacon_array[12] = CDMS_HK_MAIN_COUNTER >>8; beacon_array[13] = CDMS_HK_MAIN_COUNTER; beacon_array[14] = PL_MAIN_COUNTER >>8; @@ -289,14 +298,14 @@ y = FCTN_I2C_WRITE((char *)beacon_array,135); //134 if(y == 0) { TIME_LATEST_I2C_BAE = FCTN_CDMS_RD_RTC() >> 7; - //gPC.printf("long Bcn sent\n\r"); + gPC.printf("long Bcn sent\n\r"); } else gPC.printf("long Bcn not sent\r\n"); //gPC.printf("\rCompleted Beacon\n"); if (GIVE_UP_ON_BAE == 0) IS_BAE_IN_DISTRESS(); - gPC.printf("\rreleasing mutex for HK_MAIN \n\r"); + gPC.printf("\n\rreleasing mutex for HK_MAIN \n\r"); SCI_LED1 =0; gMutex.unlock(); } @@ -440,10 +449,23 @@ //COMRX_OC_FAULT //$ GPIO_STATUS=(COMRX_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<11)):(GPIO_STATUS)&(~((uint16_t)(0x1<<11))); + // COMTX_OC_FAULT //$ GPIO_STATUS=(COM_TX_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<10)):(GPIO_STATUS)&(~((uint16_t)(0x1<<10))); // CDMS_SD_OC_FAULT GPIO_STATUS=(SD_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<9)):(GPIO_STATUS)&(~((uint16_t)(0x1<<9))); + if(SD_OC_FAULT == 0) { + gPC.printf("SD CARD DOWN"); + } + if(COMRX_OC_FAULT == 0) { + gPC.printf("COM RX DOWN"); + } + if(COM_TX_OC_FAULT == 0) { + gPC.printf("COM TX DOWN"); + } + if(BAE_OC_FAULT == 0) { + gPC.printf("BAE DOWN"); + } //BAE_OC_FAULT //$ GPIO_STATUS=(BAE_OC_FAULT)?(GPIO_STATUS)|((uint16_t)(0x1<<8)):(GPIO_STATUS)&(~((uint16_t)(0x1<<8))); @@ -531,13 +553,16 @@ SD_FAULTCOUNT++; SD_STATUS = (SD_FAULTCOUNT == 3) ? DEVICE_DISABLED :DEVICE_OC_FAULT; if(SD_FAULTCOUNT == 3) { - FCTN_CDMS_WR_FLASH(2,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(2,DEVICE_DISABLED); + WRITE_TO_EEPROM(2,DEVICE_DISABLED); gPC.printf("Declaring SD card permanantly Disabled"); } } else { SD_STATUS = DEVICE_POWERED; - if(SD_STATUS != DEVICE_POWERED) - FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); + //if(SD_STATUS != DEVICE_POWERED) + //FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); + WRITE_TO_EEPROM(2,DEVICE_POWERED); + wait_us(1); SD_FAULTCOUNT = 0; } } @@ -558,13 +583,15 @@ BAE_FAULTCOUNT++; BAE_STATUS = (BAE_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; if(BAE_FAULTCOUNT == 3) { - FCTN_CDMS_WR_FLASH(1,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_DISABLED); + WRITE_TO_EEPROM(1,DEVICE_DISABLED); gPC.printf("Declaring BAE permanantly Disabled"); } } else { BAE_STATUS = DEVICE_POWERED; - if(SD_STATUS != DEVICE_POWERED); - FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); + wait_us(1); BAE_FAULTCOUNT = 0; } } @@ -595,13 +622,14 @@ PL_FAULTCOUNT++; PL_BEE_SW_STATUS = (PL_FAULTCOUNT == 3)?DEVICE_DISABLED:DEVICE_OC_FAULT; if(PL_FAULTCOUNT == 3) { - FCTN_CDMS_WR_FLASH(4,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(4,DEVICE_DISABLED); + WRITE_TO_EEPROM(4,DEVICE_DISABLED); gPC.printf("Declaring PL_BEE permanantly Disabled"); } } else { PL_BEE_SW_STATUS = DEVICE_POWERED; - if(SD_STATUS != DEVICE_POWERED) - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + WRITE_TO_EEPROM(4,DEVICE_POWERED); PL_FAULTCOUNT = 0; } } @@ -686,18 +714,18 @@ { CDMS_I2C_ERR_HK_LATEST = CDMS_HK_MAIN_COUNTER; KILL_BAE_COUNTER++; - gPC.printf("\n Takin aim, Boss"); + gPC.printf("\r Takin aim, Boss\n\r"); } else { CDMS_I2C_ERR_HK_LATEST = CDMS_HK_MAIN_COUNTER; KILL_BAE_COUNTER = 1; - gPC.printf("\n Target lost"); + gPC.printf("\r Target lost\n\r"); } if (KILL_BAE_COUNTER >= 3) { GIVE_UP_ON_BAE = SAVE_BAE(KILL_BAE_COUNTER); - gPC.printf("\n Kill Confirmed"); + gPC.printf("\r Kill Confirmed\n\r"); } } } @@ -709,8 +737,121 @@ BAE_SW_EN_DS = 1; BAE_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); if (counter == 6) return 1; return 0; -} \ No newline at end of file +} + +void FCTN_CDMS_P_MGMT(uint8_t power_mode) +{ + if(EN_P_MGMT == 0x00) //ENABLE POWER MANAGEMENT + return; + switch(power_mode) + { + case 3: + { + if(EN_PL == 0) //Enabling PMS thread if disabled + EN_PL = 1; + break; + } + + case 2: + { + EN_PL = 0; + if(PL_STATE == 0x01) + { + gPC.printf("\r Already in Standby\n"); + break; + } + gPC.printf("\n\rCommanding PL_BEE to go to Standby State"); + if(PL_BEE_SW_STATUS == 0x03) + { + gPC.printf("\n\r Switched Off chilling out"); + break; + } + else + { + pl_next_index = -1; + Base_tm *tm_ptr_standby; + SET_PL_BEE_STANDBY(tm_ptr_standby); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_STANDBY; + PL_STATUS = 0x01; + PL_STATE = 0x01; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); + } + break; + } + } + + case 1: + { + EN_PL = 0; + if(PL_BEE_SW_STATUS != 0x03) + { + gPC.printf("\n\rCommanding PL_BEE to go to Standby State"); + pl_next_index = -1; + Base_tm *tm_ptr_standby; + SET_PL_BEE_STANDBY(tm_ptr_standby); //No ack needed now + gPC.printf("\n\rPowering OFF PL_BEE"); + SET_PL_BEE_OFF; + PL_BEE_SW_STATUS = 0x03; + WRITE_TO_EEPROM(4,DEVICE_DISABLED); + PL_STATUS = 0; + } + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_OFF; + PL_STATUS = 0x00; + PL_STATE = 0x00; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); + break; + } + + default: + { + gPC.printf("Non-existant Power Mode (%d) BAE's lost it\n\r", power_mode); + } + } +} +/* +void SYS_RESET(uint_8 ack_pin){ + if(ack_pin == 1) + { + //ACKNOWLEDGE SYS RST + ack_pin = 0; + + //DISABLE THE THREADS + EN_PL = 0; + EN_CDMS_HK = 0; + + //SWITCH OFF BAE + SW_OFF_BAE(); + + //PAYLOAD IN STANDBY MODE + Base_tm *tm_ptr_standby; + SET_PL_BEE_STANDBY(tm_ptr_standby); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_STANDBY; + PL_STATUS = 0x01; + } + pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); + + //SWITCH OFF SD CARD + CDMS_SD_SW_OFF(); + + //TURN ON + WRITE_TO_EEPROM(2,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); + + } + + + +} +*/ \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e CDMS_PL.h --- a/CDMS_PL.h Sat Feb 10 09:06:26 2018 +0000 +++ b/CDMS_PL.h Sun Apr 03 15:35:53 2022 +0000 @@ -1,7 +1,6 @@ int pl_next_index=-1; uint8_t pl_main_flag=0x04; uint8_t PL_PREV_STATE=0x00; -uint8_t POWER_LEVEL = 3; //Would be present in HK data extracted uint32_t pl_block[192]={0}; uint32_t pl_time; uint32_t TIME_LATEST_PL=0; @@ -200,8 +199,13 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_SUCCESS_I2C; PL_STATUS = 0x04; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= EXECUTED; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= EXECUTED; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } else { @@ -210,8 +214,13 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_ERR_I2C; PL_STATUS = 0x05; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= RETRY; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= RETRY; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } } else @@ -220,8 +229,13 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_ERR_I2C; PL_STATUS = 0x05; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= RETRY; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= RETRY; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } } else if(GETshort_or_long_tm(tm_ptr)==0) //LONG TM @@ -245,8 +259,13 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_SUCCESS_I2C; PL_STATUS = 0x04; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= EXECUTED; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= EXECUTED; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } else { @@ -254,8 +273,13 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_ERR_I2C; PL_STATUS = 0x05; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= RETRY; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= RETRY; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } } else @@ -263,9 +287,14 @@ gPC.printf("\n\rLong_TM CRC failed"); pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_ERR_I2C; - PL_STATUS = 0x05; - pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= RETRY; + PL_STATUS = 0x05; + if(pl_next_index >= 1) + { + pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status + pl_block[pl_next_index-1] |= RETRY; + } + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM } } } @@ -303,6 +332,83 @@ schedule1[0] = {0,0,0,0,0,0,0,0}; } }*/ +void SYS_RESET(){ + + gPC.printf("\n\r Going into system reset\n"); + //DISABLE THE THREADS + EN_PL = 0; + EN_CDMS_HK = 0; + EN_RCV_SC = 0; + + //SWITCH OFF BAE + BAE_SW_EN_DS = 0; + BAE_STATUS = DEVICE_DISABLED; + WRITE_TO_EEPROM(1,DEVICE_DISABLED); + gPC.printf("sw off bae\n"); + + //PAYLOAD IN STANDBY MODE + Base_tm *tm_ptr_standby; + SET_PL_BEE_STANDBY(tm_ptr_standby); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_STANDBY; + PL_STATUS = 0x01; + PL_STATE = 0x01; + } + pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); + + //SWITCH OFF SD CARD + SD_SW_EN_DS = 0; + SD_STATUS = DEVICE_DISABLED; + WRITE_TO_EEPROM(2,DEVICE_DISABLED); + gPC.printf("sw off sd\n"); + + //TURN ON + WRITE_TO_EEPROM(2,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); + + //UPDATE SYS_RESET TIME + TIME_LATEST_CDMS_EPS_RST_BACKUP = TIME_LATEST_CDMS_EPS_RST; + WRITE_TO_EEPROM(21,(uint32_t)TIME_LATEST_CDMS_EPS_RST_BACKUP); + WRITE_TO_EEPROM(20,TIME_LATEST_CDMS_EPS_RST_BACKUP>>32); + + TIME_LATEST_CDMS_EPS_RST = FCTN_CDMS_RD_RTC(); + //Latest EPS_RST time stored in EEPROM + WRITE_TO_EEPROM(19,(uint32_t)TIME_LATEST_CDMS_EPS_RST); + WRITE_TO_EEPROM(18,TIME_LATEST_CDMS_EPS_RST>>32); + + +} + +void BACK_NORMAL() +{ + //ENABLE THE THREADS + EN_PL = 1; + EN_CDMS_HK = 1; + EN_RCV_SC = 1; + + //SWITCH ON BAE + BAE_SW_EN_DS = 1; + BAE_STATUS = DEVICE_POWERED; + WRITE_TO_EEPROM(1,DEVICE_POWERED); + gPC.printf("sw on bae\n"); + + //SWITCH ON SD CARD + SD_SW_EN_DS = 1; + SD_STATUS = DEVICE_POWERED; + WRITE_TO_EEPROM(2,DEVICE_POWERED); + gPC.printf("sw on sd\n"); + + //UPDATE SYS_RESET TIME + TIME_LATEST_CDMS_EPS_RST = TIME_LATEST_CDMS_EPS_RST_BACKUP ; + //Latest EPS_RST time stored in EEPROM + WRITE_TO_EEPROM(19,(uint32_t)TIME_LATEST_CDMS_EPS_RST); + WRITE_TO_EEPROM(18,TIME_LATEST_CDMS_EPS_RST>>32); + +} + + void FCTN_CDMS_PL_MAIN(void const *args) { if(EN_PL == 0x00) @@ -337,6 +443,7 @@ uint64_t temp_time; temp_time=FCTN_CDMS_RD_RTC(); pl_time = (uint32_t)((temp_time>>7) & 0x000000000FFFFFFF); + gPC.printf("\n\r %u", pl_time); //call test3() here //test3(1); @@ -349,6 +456,7 @@ gPC.printf("\n\rHours :%d",((pl_time & 0x0001F000)>>12)); gPC.printf("\tMin :%d",((pl_time & 0x00000FC0)>>6)); gPC.printf("\t\tSec :%d",(pl_time & 0x0000003F));*/ + pl_next_index = -1; if(pl_time!=0) //RTC read successful { // run the loop until end of schedule is reached or month and day are both zeros or future block is found @@ -371,7 +479,19 @@ { pl_main_flag = pl_main_flag & (~STATE_SCIENCE); pl_main_flag |= STATE_HIBERNATE; - PL_STATE = 0x02; + gPC.printf("\n\rCommanding PL_BEE to go to Hibernate State"); + Base_tm *tm_ptr_hibernate; + SET_PL_BEE_HIBERNATE(tm_ptr_hibernate); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_HIBERNATE; + PL_STATUS = 0x02; + PL_STATE = 0x02; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); + } + pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS + PL_MAIN_status = 0; } else { @@ -405,25 +525,21 @@ { pl_main_flag = pl_main_flag & (~STATE_SCIENCE); pl_main_flag |= STATE_OFF; - PL_STATE = 0x00; } if((pl_block[pl_next_index-1] & 0x0000000C)==4) { pl_main_flag = pl_main_flag & (~STATE_SCIENCE); pl_main_flag |= STATE_STANDBY; - PL_STATE = 0x01; } if((pl_block[pl_next_index-1] & 0x0000000C)==8) { pl_main_flag = pl_main_flag & (~STATE_SCIENCE); pl_main_flag |= STATE_HIBERNATE; - PL_STATE = 0x02; } if((pl_block[pl_next_index-1] & 0x0000000C)==12) { - pl_main_flag = pl_main_flag & (~STATE_SCIENCE); - pl_main_flag |= STATE_SCIENCE; - PL_STATE = 0x03; + pl_main_flag = pl_main_flag & (~STATE_SCIENCE); + pl_main_flag |= STATE_SCIENCE; } } else if((pl_block[pl_next_index-1] & UNEXECUTED)==1) @@ -455,14 +571,18 @@ gPC.printf("\n\rPowering OFF PL_BEE"); SET_PL_BEE_OFF; PL_BEE_SW_STATUS = 0x03; - FCTN_CDMS_WR_FLASH(4,DEVICE_DISABLED); - PL_STATUS=0; + WRITE_TO_EEPROM(4,DEVICE_DISABLED); + PL_STATUS = 0; } pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_OFF; PL_STATUS = 0x00; + PL_STATE = 0x00; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status - pl_block[pl_next_index-1] |= EXECUTED; + pl_block[pl_next_index-1] |= EXECUTED; + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS PL_MAIN_status = 0; print_processed_block(pl_next_index-1); @@ -477,7 +597,8 @@ gPC.printf("\n\rPowering on PL_BEE"); SET_PL_BEE_ON; PL_BEE_SW_STATUS = 0x01; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + WRITE_TO_EEPROM(4,DEVICE_POWERED); + // PL_STATE = 0x01 //uncomment - Joel after finding out default startup state of PYLD } gPC.printf("\n\rCommanding PL_BEE to go to Standby State"); Base_tm *tm_ptr_standby; @@ -487,6 +608,8 @@ pl_main_flag = pl_main_flag & (~PL_DISABLED); pl_main_flag |= PL_STANDBY; PL_STATUS = 0x01; + PL_STATE = 0x01; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); } pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS PL_MAIN_status = 0; @@ -497,146 +620,60 @@ } case STATE_HIBERNATE: { - gPC.printf("\n\rEntered PL_HIBERNATE case"); - if(POWER_LEVEL==2 || POWER_LEVEL==3 || POWER_LEVEL==0) - { - if(PL_BEE_SW_STATUS == 0x03) - { - gPC.printf("Powering on PL_BEE\r\n"); - SET_PL_BEE_ON; - PL_BEE_SW_STATUS = 0x01; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); - } - gPC.printf("\n\rCommanding PL_BEE to go to Hibernate State"); - Base_tm *tm_ptr_hibernate; - SET_PL_BEE_HIBERNATE(tm_ptr_hibernate); - if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) - { - pl_main_flag = pl_main_flag & (~PL_DISABLED); - pl_main_flag |= PL_HIBERNATE; - PL_STATUS = 0x02; - } - } - else + gPC.printf("\n\rEntered PL_HIBERNATE case"); + if(PL_BEE_SW_STATUS == 0x03) { - pl_main_flag |= PL_LOW_POWER; - PL_LOW_power = 1; - if(PL_BEE_SW_STATUS == 0x03) - { - gPC.printf("\n\rPowering on PL_BEE"); - SET_PL_BEE_ON; - PL_BEE_SW_STATUS = 1; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); - } - gPC.printf("\n\rCommanding PL_BEE to go to Standby State"); - Base_tm *tm_ptr_standby; - SET_PL_BEE_STANDBY(tm_ptr_standby); - if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) - { - pl_main_flag = pl_main_flag & (~PL_DISABLED); - pl_main_flag |= PL_STANDBY; - PL_STATUS = 0x01; - } - pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS - PL_MAIN_status = 0; - print_processed_block(pl_next_index-1); - print_exit(temp); - return; - //////DELETE THE TM AND TC LATER - } + gPC.printf("Powering on PL_BEE\r\n"); + SET_PL_BEE_ON; + PL_BEE_SW_STATUS = 0x01; + WRITE_TO_EEPROM(4,DEVICE_POWERED); + // PL_STATE = 0x01 //uncomment - Joel after finding out default startup state of PYLD + } + gPC.printf("\n\rCommanding PL_BEE to go to Hibernate State"); + Base_tm *tm_ptr_hibernate; + SET_PL_BEE_HIBERNATE(tm_ptr_hibernate); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_HIBERNATE; + PL_STATUS = 0x02; + PL_STATE = 0x02; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); + } pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS PL_MAIN_status = 0; print_processed_block(pl_next_index-1); print_exit(temp); return; - //////DELETE THE TM LATER } case STATE_SCIENCE: { gPC.printf("\n\rEntered PL_SCIENCE case"); - if(POWER_LEVEL==3 || POWER_LEVEL==0) //POWER_LEVEL = 0 = NA + if(PL_BEE_SW_STATUS == 0x03) { - gPC.printf("\n\rPOWER_LEVEL = 3 or NA"); - if(PL_BEE_SW_STATUS == 0x03) - { - gPC.printf("\n\rPowering on PL_BEE"); - SET_PL_BEE_ON; - PL_BEE_SW_STATUS = 1; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); - } - gPC.printf("\n\rCommanding PL_BEE to go to Science State"); - Base_tm *tm_ptr_science; - SET_PL_BEE_SCIENCE(tm_ptr_science); - if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) - { - pl_main_flag = pl_main_flag & (~PL_DISABLED); - pl_main_flag |= PL_SCIENCE; - PL_STATUS = 0x03; - } - pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS - PL_MAIN_status = 0; - print_processed_block(pl_next_index-1); - print_exit(temp); - return; + gPC.printf("\n\rPowering on PL_BEE"); + SET_PL_BEE_ON; + PL_BEE_SW_STATUS = 1; + //FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + WRITE_TO_EEPROM(4,DEVICE_POWERED); + // PL_STATE = 0x01 //uncomment - Joel after finding out default startup state of PYLD } - else - { - gPC.printf("\n\rPower level = 2,3 or NA"); - pl_main_flag |= PL_LOW_POWER; - PL_LOW_power = 1; - if(POWER_LEVEL==2 || POWER_LEVEL==3 || POWER_LEVEL==0) - { - if(PL_BEE_SW_STATUS == 0x03) - { - gPC.printf("\n\rPowering on PL_BEE"); - SET_PL_BEE_ON; - PL_BEE_SW_STATUS = 1; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); - } - gPC.printf("\n\rCommanding PL_BEE to go to Hibernate State"); - Base_tm *tm_ptr_hibernate; - SET_PL_BEE_HIBERNATE(tm_ptr_hibernate); - if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) - { - pl_main_flag = pl_main_flag & (~PL_DISABLED); - pl_main_flag |= PL_HIBERNATE; - PL_STATUS = 0x02; - } - } - else - { - pl_main_flag |= PL_LOW_POWER; - PL_LOW_power = 1; - if(PL_BEE_SW_STATUS == 0x03) - { - gPC.printf("\n\rPowering on PL_BEE"); - SET_PL_BEE_ON; - PL_BEE_SW_STATUS = 1; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); - } - gPC.printf("\n\rCommanding PL_BEE to go to Standby State"); - Base_tm *tm_ptr_standby; - SET_PL_BEE_STANDBY(tm_ptr_standby); - if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) - { - pl_main_flag = pl_main_flag & (~PL_DISABLED); - pl_main_flag |= PL_STANDBY; - PL_STATUS = 0x01; - } - pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS - PL_MAIN_status = 0; - print_processed_block(pl_next_index-1); - print_exit(temp); - return; - //////DELETE THE TM AND TC LATER - } - pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS - PL_MAIN_status = 0; - print_processed_block(pl_next_index-1); - print_exit(temp); - return; - //////DELETE THE TM LATER + gPC.printf("\n\rCommanding PL_BEE to go to Science State"); + Base_tm *tm_ptr_science; + SET_PL_BEE_SCIENCE(tm_ptr_science); + if((pl_main_flag & PL_DISABLED)==PL_SUCCESS_I2C) + { + pl_main_flag = pl_main_flag & (~PL_DISABLED); + pl_main_flag |= PL_SCIENCE; + PL_STATUS = 0x03; + PL_STATE = 0x03; + WRITE_TO_EEPROM(16,(uint32_t)PL_STATE); } + pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS + PL_MAIN_status = 0; + print_processed_block(pl_next_index-1); + print_exit(temp); + return; } default: { @@ -646,6 +683,8 @@ PL_STATUS = 0x06; pl_block[pl_next_index-1] &= (~UNEXECUTED); //changing exec_status pl_block[pl_next_index-1] |= EXECUTED; + if(pl_next_index >=2) + UPDATE_PMS_ENTRY((pl_next_index-2), pl_block[pl_next_index-2]); //1to2 , updating the previous status to EEPROM pl_main_flag = pl_main_flag & (~PL_MAIN_STATUS); //Clearing PL_MAIN_STATUS PL_MAIN_status = 0; print_processed_block(pl_next_index-1); @@ -653,5 +692,35 @@ return; } } - } + } + RESET_WATCHDOG(); + //CHECK FOR SYS POWER RESET + sys_pwr_rst.input(); + int sys_val = sys_pwr_rst.read(); + gPC.printf("\rsys_reset_val = %d\n",sys_val); + if(sys_val == 1) + { + //ACKNOWLEDGE SYS RST + sys_pwr_rst.output(); + sys_pwr_rst = 0; + gPC.printf("\rsys_reset_val = %d\n",sys_pwr_rst.read()); + + SYS_RESET(); + while(1){ + wait_ms(10000); + //RESET_WATCHDOG(); //uncomment in the FM SBC with watchdog enabled + uint64_t cur_rtc = FCTN_CDMS_RD_RTC(); + uint32_t T_check1 = ((((cur_rtc - TIME_LATEST_CDMS_EPS_RST) >> 7)& 0x00000FC0)>>6); + //gPC.printf("\r%d\n",T_check1 ); + //gPC.printf("\r%d\n",TIME_LATEST_CDMS_EPS_RST); + //gPC.printf("\r%d\n",cur_rtc); + if(T_check1 >= 5*T_OFF_RST) + { + break; + } + } + BACK_NORMAL(); + } + gPC.printf("\rTIME_LATEST_CDMS_EPS_RST = %d\n",TIME_LATEST_CDMS_EPS_RST); + } \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e COM_MNG_TMTC.h --- a/COM_MNG_TMTC.h Sat Feb 10 09:06:26 2018 +0000 +++ b/COM_MNG_TMTC.h Sun Apr 03 15:35:53 2022 +0000 @@ -104,7 +104,26 @@ }\ } +void mcpy(uint32_t *a2,uint8_t *a1,int n){ + + *a2=0; + for (int i=0;i<n;i++){ + *(a2) += *(a1+i); + if(i<n-1){ + *(a2)=(*(a2))<<8; + //printf("%d\n",*(a2)); + } + } + +} +/*void rmcpy(uint8_t *a1,uint32_t *a2,int n){ + + for (int i=0;i<n;i++){ + *(a1+i) = (*(a2))>>((n*8)-(8*(i+1))); + } + +}*/ void after_cooling_pa(){ gCOM_MNG_TMTC_THREAD->signal_set(COM_MNG_TMTC_SIGNAL_UART_INT); @@ -432,7 +451,7 @@ { //gPC.printf("sub_service:Read LONG_RAM_Memory\r\n"); mid=((uint16_t)(tc_ptr->TC_string[3]<<4))+((uint16_t)(tc_ptr->TC_string[4])); - if(mid!=0x0000 && mid!=0x0001) + if(mid < 0x0000 && mid > 0x000A) { Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); @@ -448,6 +467,24 @@ FCTN_CDMS_RD_L_RAM(tm_ptr); if(mid == 0x0001) FCTN_CDMS_MAX_MIN(tm_ptr); + if(mid == 0x0002) + FCTN_CDMS_SCP_M0a(tm_ptr); + if(mid == 0x0003) + FCTN_CDMS_SCP_M0b(tm_ptr); + if(mid == 0x0004) + FCTN_CDMS_SCP_M1a(tm_ptr); + if(mid == 0x0005) + FCTN_CDMS_SCP_M1b(tm_ptr); + if(mid == 0x0006) + FCTN_CDMS_SCP_SFP_SUM(tm_ptr); + if(mid == 0x0007) + FCTN_CDMS_SFP_M0a(tm_ptr); + if(mid == 0x0008) + FCTN_CDMS_SFP_M0b(tm_ptr); + if(mid == 0x0009) + FCTN_CDMS_SFP_M1a(tm_ptr); + if(mid == 0x000A) + FCTN_CDMS_SFP_M1b(tm_ptr); crc16 = crc16_gen(tm_ptr->TM_string,132); tm_ptr->TM_string[132] = (uint8_t)((crc16&0xFF00)>>8); @@ -457,18 +494,18 @@ } case 0x5: // change the cases appropriately { - //gPC.printf("WRITE ON SHORT_FLASH_MEMORY\r\n"); + gPC.printf("WRITE ON SHORT_EEPROM_MEMORY\r\n"); mid=(uint16_t)(tc_ptr->TC_string[3]<<4)+(uint16_t)(tc_ptr->TC_string[4]); //32 bits at a time Base_tm *tm_ptr_short = new Short_tm; - if(mid == 0x0101 || mid==0x0102 || mid == 0x0103 || mid == 0x0100) //allowable MID values? + if(mid == 0x0101 || mid==0x0102 || mid == 0x0103 || mid == 0x0100 || mid == 0x0104) //allowable MID values? { ACK_L234(tm_ptr_short,0x02,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; } - //FCTN_CDMS_WR_S_FLASH(mid,(uint32_t)(tc_ptr->TC_string[5]<<24)+(uint32_t)(tc_ptr->TC_string[6]<<16)+(uint32_t)(tc_ptr->TC_string[7]<<8)+(uint32_t)(tc_ptr->TC_string[8])); + FCTN_CDMS_WR_S_EEPROM(mid,(uint32_t)(tc_ptr->TC_string[5]<<24)+(uint32_t)(tc_ptr->TC_string[6]<<16)+(uint32_t)(tc_ptr->TC_string[7]<<8)+(uint32_t)(tc_ptr->TC_string[8])); ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -480,18 +517,16 @@ if(mid == 0x0002) { for(uint8_t z=0;z<24;z++) - scp_threshold_m0[z] = tc_ptr->TC_string[z+5]; - for(uint8_t z=24;z<32;z++) - scp_threshold_m0[z+8] = tc_ptr->TC_string[z+5]; + mcpy(scp_threshold_m0+z,tc_ptr->TC_string+4*z+5,4); + for(uint8_t z=24;z<32;z++) + mcpy(scp_threshold_m0+z+8,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<24;z++) flasharray_thres[z] = scp_threshold_m0[z]; for(uint8_t z=24;z<32;z++) flasharray_thres[z] = scp_threshold_m0[z+8]; + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,1); - // FCTN_CDMS_WR_S_FLASH(mid,flasharray_thres); - erase_sector(strt_add_thres); - program_flash(strt_add_thres, (char*)flasharray_thres,32); - Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; @@ -499,13 +534,11 @@ else if(mid == 0x0003) { for(uint8_t z=0;z<12;z++) - scp_threshold_m0[z+40] = tc_ptr->TC_string[z+5]; + mcpy(scp_threshold_m0+z+40,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<12;z++) flasharray_thres[z] = scp_threshold_m0[z+40]; - - // FCTN_CDMS_WR_S_FLASH(mid,flasharray_thres); - erase_sector(strt_add_thres+SECTOR_SIZE); - program_flash(strt_add_thres+SECTOR_SIZE, (char*)flasharray_thres,32); + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,2); Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -514,13 +547,11 @@ else if(mid == 0x0004) { for(uint8_t z=0;z<32;z++) - scp_threshold_m1[z] = tc_ptr->TC_string[z+5]; + mcpy(scp_threshold_m1+z,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<32;z++) flasharray_thres[z] = scp_threshold_m1[z]; - - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - erase_sector(strt_add_thres+(2*SECTOR_SIZE)); - program_flash(strt_add_thres+(2*SECTOR_SIZE), (char*)flasharray_thres,32); + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,1); Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -529,13 +560,11 @@ else if(mid == 0x0005) { for(uint8_t z=0;z<20;z++) - scp_threshold_m1[z+32] = tc_ptr->TC_string[z+5]; + mcpy(scp_threshold_m1+z+32,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<20;z++) flasharray_thres[z] = scp_threshold_m1[z+32]; - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - erase_sector(strt_add_thres+(3*SECTOR_SIZE)); - program_flash(strt_add_thres+(3*SECTOR_SIZE), (char*)flasharray_thres,32); + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,3); Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -543,15 +572,16 @@ } else if(mid == 0x0006) { - scp_threshold_m0_1[7] = tc_ptr->TC_string[5]; - scp_threshold_m0_1[5] = tc_ptr->TC_string[6]; - scp_threshold_m0_1[8] = tc_ptr->TC_string[7]; - scp_threshold_m0_1[6] = tc_ptr->TC_string[8]; + mcpy(scp_threshold_m0_1+7,tc_ptr->TC_string+4*0+5,4); + mcpy(scp_threshold_m0_1+5,tc_ptr->TC_string+4*1+5,4); + mcpy(scp_threshold_m0_1+8,tc_ptr->TC_string+4*2+5,4); + mcpy(scp_threshold_m0_1+6,tc_ptr->TC_string+4*3+5,4); for(uint8_t z=0;z<5;z++) - scp_threshold_m0_1[z] = tc_ptr->TC_string[z+9]; - scp_sfp_threshold_m0_2[0] = tc_ptr->TC_string[14]; - scp_sfp_threshold_m0_2[1] = tc_ptr->TC_string[15]; - scp_sfp_threshold_m0_2[2] = tc_ptr->TC_string[16]; + mcpy(scp_threshold_m0_1+z,tc_ptr->TC_string+4*(z+4)+5,4); + mcpy(scp_sfp_threshold_m0_2+0,tc_ptr->TC_string+4*9+5,4); + mcpy(scp_sfp_threshold_m0_2+1,tc_ptr->TC_string+4*10+5,4); + mcpy(scp_sfp_threshold_m0_2+2,tc_ptr->TC_string+4*11+5,4); + flasharray_thres[0] = scp_threshold_m0_1[7]; flasharray_thres[1] = scp_threshold_m0_1[5]; flasharray_thres[2] = scp_threshold_m0_1[8]; @@ -561,11 +591,8 @@ flasharray_thres[9] = scp_sfp_threshold_m0_2[0]; flasharray_thres[10] = scp_sfp_threshold_m0_2[1]; flasharray_thres[11] = scp_sfp_threshold_m0_2[2]; - - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - - erase_sector(strt_add_thres+(4*SECTOR_SIZE)); - program_flash(strt_add_thres+(4*SECTOR_SIZE), (char*)flasharray_thres,32); + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,2); Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -574,17 +601,15 @@ else if(mid == 0x0007) { for(uint8_t z=0;z<24;z++) - sfp_threshold_m0[z] = tc_ptr->TC_string[z+5]; + mcpy(sfp_threshold_m0+z,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=24;z<32;z++) - sfp_threshold_m0[z+8] = tc_ptr->TC_string[z+5]; + mcpy(sfp_threshold_m0+z+8,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<24;z++) flasharray_thres[z] = sfp_threshold_m0[z]; for(uint8_t z=24;z<32;z++) flasharray_thres[z] = sfp_threshold_m0[z+8]; - - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - erase_sector(strt_add_thres+(5*SECTOR_SIZE)); - program_flash(strt_add_thres+(5*SECTOR_SIZE), (char*)flasharray_thres,32); + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,1); Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -593,13 +618,12 @@ else if(mid == 0x0008) { for(uint8_t z=0;z<12;z++) - sfp_threshold_m0[z+40] = tc_ptr->TC_string[z+5]; + mcpy(sfp_threshold_m0+z+40,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<12;z++) flasharray_thres[z] = sfp_threshold_m0[z+40]; - - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - erase_sector(strt_add_thres+(6*SECTOR_SIZE)); - program_flash(strt_add_thres+(6*SECTOR_SIZE), (char*)flasharray_thres,32); + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,2); + Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; @@ -607,15 +631,12 @@ else if(mid == 0x0009) { for(uint8_t z=0;z<32;z++) - sfp_threshold_m1[z] = tc_ptr->TC_string[z+5]; + mcpy(sfp_threshold_m1+z,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<32;z++) flasharray_thres[z] = sfp_threshold_m1[z]; - - // THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - - erase_sector(strt_add_thres+(7*SECTOR_SIZE)); - program_flash(strt_add_thres+(7*SECTOR_SIZE), (char*)flasharray_thres,32); - + + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,1); + Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; @@ -623,14 +644,12 @@ else if(mid == 0x000A) { for(uint8_t z=0;z<20;z++) - sfp_threshold_m1[z+32] = tc_ptr->TC_string[z+5]; + mcpy(sfp_threshold_m1+z+32,tc_ptr->TC_string+4*z+5,4); for(uint8_t z=0;z<20;z++) flasharray_thres[z] = sfp_threshold_m1[z+32]; -// THRES_WRITE_TO_EEPROM(mid,flasharray_thres); - erase_sector(strt_add_thres+(8*SECTOR_SIZE)); - program_flash(strt_add_thres+(8*SECTOR_SIZE), (char*)flasharray_thres,32); - + THRES_WRITE_TO_EEPROM(mid,flasharray_thres,3); + Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; @@ -913,6 +932,35 @@ ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); return tm_ptr_short; } + else if(GETpid(tc_ptr)==0x3A) + { + //REQUEST FOR SYS_RESET + sys_pwr_rst.output(); + sys_pwr_rst = 1; + + //PREPARE FOR SYS_RESET + SYS_RESET(); + + while(1){ + wait_ms(10000); + RESET_WATCHDOG(); //uncomment in the FM SBC with watchdog enabled + uint64_t cur_rtc_tc = FCTN_CDMS_RD_RTC(); + uint32_t T_check1_tc = ((((cur_rtc_tc - TIME_LATEST_CDMS_EPS_RST) >> 7)& 0x00000FC0)>>6); + gPC.printf("\r%d\n",T_check1_tc ); + //gPC.printf("\r%d\n",TIME_LATEST_CDMS_EPS_RST); + gPC.printf("\r%d\n",cur_rtc_tc); + if(T_check1_tc >= 5*T_OFF_RST) + { + break; + } + } + BACK_NORMAL(); + + Base_tm *tm_ptr_short = new Short_tm; + ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); + return tm_ptr_short; + + } else if(GETpid(tc_ptr)==0x3b) { //gPC.printf("TC_RST_BAE\r\n"); // call PWR_SWCH_ON function @@ -926,13 +974,14 @@ else if(GETpid(tc_ptr)==0x40) { //gPC.printf("RESET_HK_COUNTER\r\n"); // call PWR_SWCH_ON function - if(tc_ptr->TC_string[4] == 0x00 || tc_ptr->TC_string[4] == 0x01) EN_PL = tc_ptr->TC_string[4]; if(tc_ptr->TC_string[5] == 0x00 || tc_ptr->TC_string[5] == 0x01) //was else if changed to if to match the flowcharts - J EN_CDMS_HK = tc_ptr->TC_string[5]; if(tc_ptr->TC_string[6] == 0x00 || tc_ptr->TC_string[6] == 0x01) EN_RCV_SC = tc_ptr->TC_string[6]; + if(tc_ptr->TC_string[7] == 0x00 || tc_ptr->TC_string[7] == 0x01) + EN_P_MGMT = tc_ptr->TC_string[7]; Base_tm *tm_ptr_short = new Short_tm; ACK_L234(tm_ptr_short,0xA0,GETpacket_seq_count(tc_ptr)); @@ -1044,7 +1093,8 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); j+=4; - } + } + //WRITE_PMS_TO_EEPROM(0x0001, pl_block); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0x2) @@ -1060,6 +1110,7 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); } + //WRITE_PMS_TO_EEPROM(0x0002, pl_block + (32)); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0x3) @@ -1075,6 +1126,7 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); } + //WRITE_PMS_TO_EEPROM(0x0003, pl_block + (64)); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0x4) @@ -1090,6 +1142,7 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); } + //WRITE_PMS_TO_EEPROM(0x0004, pl_block + (96)); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0x5) @@ -1105,6 +1158,7 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); } + //WRITE_PMS_TO_EEPROM(0x0005, pl_block + (128)); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0x6) @@ -1120,6 +1174,7 @@ pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[5+j]))<<8); pl_block[i] |= (((uint32_t)(tc_ptr->TC_string[6+j]))); } + //WRITE_PMS_TO_EEPROM(0x0006, pl_block + (160)); //Uncomment and test after ensuring PMS TCs work without the EEPROM part in it return tm_ptr; } else if(GETservice_subtype(tc_ptr)==0xF)
diff -r 197c93dc2012 -r f3d48d62e00e COM_RCV_TC.h --- a/COM_RCV_TC.h Sat Feb 10 09:06:26 2018 +0000 +++ b/COM_RCV_TC.h Sun Apr 03 15:35:53 2022 +0000 @@ -7,7 +7,7 @@ tc_type = LONG_TC_CODE;\ }\ else{\ - gPC.puts("incorrect size\r\n");\ + /*gPC.puts("incorrect size\r\n");*/\ /*gPC.printf("%u, %u\r\n", bytes, outState);*/\ ++gTOTAL_INCORRECT_SIZE_TC;\ }\
diff -r 197c93dc2012 -r f3d48d62e00e Compression.h --- a/Compression.h Sat Feb 10 09:06:26 2018 +0000 +++ b/Compression.h Sun Apr 03 15:35:53 2022 +0000 @@ -119,14 +119,8 @@ //--------------------------------------------------------beacon //variable declarations -uint8_t srp_mode , at , pzf , ezf ,sfp[71] ,scp[56],beacon_at; //tells which mode is calibrated or plot 0 for calibrated and 1 for scatterered, below threshold , proton zero flux, electron zero flux. +uint8_t srp_mode , at , pzf , ezf ,sfp[71] ,scp[56],beacon_at; //tells which mode is calibrated or plot 0 for calibrated and 1 for scatter plot, below threshold or above threshold, proton zero flux, electron zero flux, science_fine_packet, science_coarse_packet uint32_t sfp_bin[52] , scp_bin[52]; //storing the bin values. -uint32_t sfp_threshold_m0[52] = {124,124,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,4032,252,252,252,252,252,4032,8128,8128,8128,8128,8128,8128,8128,8128,960,960,960,960,960,960,960,960,960,960,960,960,4032,4032,4032,4032,8128,8128,8128,8128}; -uint32_t scp_threshold_m0[52] = {4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,114688,8128,4032,4032,4032,4032,114688,245760,245760,245760,245760,245760,245760,245760,245760,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,114688,114688,114688,114688,245760,245760,245760,245760}; -uint32_t scp_threshold_m0_1[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472} ; //for callibrated mode with data conservation -uint32_t scp_sfp_threshold_m0_2[3] = {245760,65472,65472}; -uint32_t sfp_threshold_m1[52] = {1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,8128,8128,8128}; -uint32_t scp_threshold_m1[52] = {114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,245760,245760,245760,245760}; uint8_t frames[3][134] = {0}; uint8_t position_tm_frame[3] = {8,11,5} , position_tm_starting[3] = {8,11,5}; //{sc,sf-bt,sf-at} uint8_t id; //sf = 0,sc-at = 1,sc-bt = 2;
diff -r 197c93dc2012 -r f3d48d62e00e DefinitionsAndGlobals.h --- a/DefinitionsAndGlobals.h Sat Feb 10 09:06:26 2018 +0000 +++ b/DefinitionsAndGlobals.h Sun Apr 03 15:35:53 2022 +0000 @@ -17,8 +17,8 @@ #define SPI_CLK PTE2 #define SPI_CS_ADF PTA15 #define SPI_CS_SDC PIN20 - // #define SPI_CS_RTC PIN26 // actual - #define SPI_CS_RTC PIN60 // sbc with jumper v1.0 + #define SPI_CS_RTC PIN26 // actual changed Mar 7 2018 + // #define SPI_CS_RTC PIN60 // sbc with jumper v1.0 // COM_TX #define COM_TX_CONFIG_LIMIT 3 @@ -39,15 +39,15 @@ #define SBC 1 // #if SBC - DigitalOut CDMS_I2C_GPIO(PIN67,1); - DigitalIn BAE_I2C_GPIO(PIN1); + // DigitalOut CDMS_I2C_GPIO(PIN67,1); + // DigitalIn BAE_I2C_GPIO(PIN1); uint32_t pdir_ss1; uint8_t i2c_count_cdms_bae; // #endif // #if !SBC - // DigitalIn BAE_I2C_GPIO(PIN67); - // DigitalOut CDMS_I2C_GPIO(PIN39,0); + DigitalIn BAE_I2C_GPIO(PIN67); + DigitalOut CDMS_I2C_GPIO(PIN39,0); // #endif // TC LIST @@ -138,7 +138,7 @@ #define OBOSC_SUB_RESET 0x07 // PAYLOAD or SCIENCE - #define PAYLOAD_BUFFER_LENGTH 6723 // 6723 + #define PAYLOAD_BUFFER_LENGTH 3363 // 6723 #define PAY_SPI_MOSI PTE18 #define PAY_SPI_MISO PTE19 #define PAY_SPI_CLK PTE17 @@ -157,10 +157,10 @@ #define BAE_RESET_PID 0x33 //RF RELAY - // #define RF_RELAY_CNTRL_TX PTA12 - // #define RF_RELAY_CNTRL_BCN PTA7 - #define RF_RELAY_CNTRL_TX PTB7 - #define RF_RELAY_CNTRL_BCN PTB17 + #define RF_RELAY_CNTRL_TX PTA12 //chenged Mar 07 2018 + #define RF_RELAY_CNTRL_BCN PTA7 + //#define RF_RELAY_CNTRL_TX PTB7 + //#define RF_RELAY_CNTRL_BCN PTB17 //CDMS HK #define HK_SIGNAL 0x05 @@ -171,6 +171,15 @@ #define DEVICE_OC_FAULT 0x02 #define DEVICE_DISABLED 0x03 +//CDMS HK SYS_RESET +#define T_WAIT_RST 0x00 +#define T_OFF_RST 0x0A +#define T_RST 0x02 +#define T_RETRY_RST 0x1E + +//CDMS TIME_INIT +#define T_INI 0x02 + // ****************GLOBAL VARIABLES****************** @@ -245,6 +254,7 @@ // PAYLOAD OR SCIENCE_THREAD Thread* gSCIENCE_THREAD = NULL; uint8_t gPAYLOAD_BUFFER[PAYLOAD_BUFFER_LENGTH] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44,1,44,1,44,1,44,1,44,1,44,1,188,2,188,2,188,2,188,2,88,2,88,2,88,2,88,2,100,0,100,0,200,0,200,0,244,1,244,1,88,2,88,2,208,2,208,2,246,0,246,0,10,0,250,0,250,0,250,0,120,0,0,0,172,13,0,0,184,11,0,0,160,15,0,0}; +//uint8_t gPAYLOAD_BUFFER[PAYLOAD_BUFFER_LENGTH] = {0}; RtosTimer *PL_wo_dma; // CALL SIGN TM @@ -253,7 +263,11 @@ //HK Thread Thread* gHK_THREAD = NULL; RtosTimer *HK_counter; - +/* +Startup_timer +Thread* gST_UP = NULL; +RtosTimer *St_upTimer +*/ // CDMS HK uint8_t CDMS_STANDBY; uint8_t CDMS_HEALTH_DATA[128]; @@ -310,7 +324,7 @@ //DigitalOut TRXY_EN (PIN84);//TRXY EN //DigitalOut TRZ_EN (PIN88);//TRZ EN DigitalOut V_A_EN (PIN99,1);//TRZ FLT (no INTR capability) -DigitalIn sys_pwr_rst (PIN46);//PTD3 +DigitalInOut sys_pwr_rst (PIN46, PIN_INPUT, PullNone, 0);//PTA16 DigitalOut PYLD_DFF (PIN73);//PYLD_SW_PWR_EN_DIS DigitalOut PYLD_DFF_CLK (PIN65);//PL_3V3_EN_CLK @@ -344,6 +358,8 @@ uint32_t TIME_LATEST_SD_WR; uint32_t TIME_LATEST_SD_RD; uint32_t TIME_LATEST_SPI_SPEED; +uint64_t TIME_LATEST_CDMS_EPS_RST; +uint64_t TIME_LATEST_CDMS_EPS_RST_BACKUP; //Counter's uint16_t CDMS_I2C_ERR_SPEED_COUNTER = 0; @@ -374,13 +390,14 @@ uint8_t EN_CDMS_HK = 1; uint8_t EN_PL = 1; uint8_t EN_RCV_SC = 1; +uint8_t EN_P_MGMT = 0; uint8_t CDMS_INIT_STATUS; uint8_t CDMS_HK_STATUS; uint8_t COM_RX_STATUS; uint8_t CDMS_RTC_BL; -//CDMS FLASH parameters +//CDMS EEPROM parameters uint8_t EPS_V_A_EN_STATUS; //uint8_t BAE_SW_STATUS; @@ -399,9 +416,18 @@ uint8_t COM_PA_RECOVERY_TIMEOUT; uint8_t COM_SESSION_TIMEOUT = 240; //confirm with Anirudh uint8_t COM_RSSI_MIN; +uint8_t TC_count; //uint16_t SD_LIB_BLK_CURRENT_1; //uint16_t SD_LIB_BLK_CURRENT_2; +//COM threshold uint32_t SD_LIB_BLK_CURRENT; +uint32_t sfp_threshold_m0[52] = {124,124,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,4032,252,252,252,252,252,4032,8128,8128,8128,8128,8128,8128,8128,8128,960,960,960,960,960,960,960,960,960,960,960,960,4032,4032,4032,4032,8128,8128,8128,8128}; +uint32_t scp_threshold_m0[52] = {4032,4032,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,114688,8128,4032,4032,4032,4032,114688,245760,245760,245760,245760,245760,245760,245760,245760,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,49152,114688,114688,114688,114688,245760,245760,245760,245760}; +uint32_t scp_threshold_m0_1[9] = {114688,245760,245760,245760,245760,114688,114688,65472,65472} ; //for callibrated mode with data conservation +uint32_t scp_sfp_threshold_m0_2[3] = {245760,65472,65472}; +uint32_t sfp_threshold_m1[52] = {1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,1984,8128,8128,8128,8128}; +uint32_t scp_threshold_m1[52] = {114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,114688,245760,245760,245760,245760}; + // Ambigouties uint8_t EN_RTC = 0x01; @@ -411,3 +437,9 @@ uint8_t COM_OC_SET = 0; uint8_t COM_RSSI_SET = 0; uint8_t resume_pl_dma = 0; + +//For power mode MGMT +uint8_t POWER_MODE; + +//For sleep +bool expired; \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e EEPROM.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EEPROM.h Sun Apr 03 15:35:53 2022 +0000 @@ -0,0 +1,292 @@ +#ifndef EEPROM_H +#define EEPROM_H + +//#include "pinconfig.h" +//#include "eeprom.h" +//#include "DefinitionsAndGlobals.h" +#define ee_scl PIN86 +#define ee_sda PIN87 +#define check 10 + +//EEPROM e2prom(ee_sda, ee_scl, 0, EEPROM::T24C512); // T24C1024 for 1Mbit EEPROM +EEPROM e2prom(ee_sda, ee_scl, 0x0, EEPROM::T24C512); + +int32_t INITIAL_EEPROM[29] = {1,1,1,80000,1,0,0,0,0,1,1,20,85,20,30,3,24,1,0,0,0,0,0,0,0,0,0,0,0}; +//int32_t INITIAL_EEPROM[32] = {1,0,1,0,1,0,1,0,1,35001,0xff,300,85,20,20,3,0x80000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + +uint32_t flasharray_thres[32]; +uint32_t flasharray_thres_1[32]; + +void I2C_EEPROM_busreset() +{ + gPC.printf("\n\rChecking"); + PORTC->PCR[10] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines + PORTC->PCR[11] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines + I2C1->C1 &= 0x7f; //Disabling I2C module + SIM->SCGC4 &= 0xffffff7f; //Disabling clock to I2C module + SIM->SCGC4 |= 0x00000080; //Enabling clock to I2C module + I2C1->C1 |= 0x80; //Enabling I2C module + PORTC->PCR[10] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines + PORTC->PCR[11] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines + Thread::wait(1); //Wait for all I2C registers to be updates to their their values +} + +void mcpy(uint32_t *a2,int8_t *a1,int n){ + + *a2=0; + for (int i=0;i<n;i++){ + *(a2) += *(a1+i); + if(i<n-1){ + *(a2)=(*(a2))<<8; + //printf("%d\n",*(a2)); + } + } + +} + +void rmcpy(uint8_t *a1,uint32_t *a2,int n){ + + for (int i=0;i<n;i++){ + *(a1+i) = (*(a2))>>((n*8)-(8*(i+1))); + } + +} + +void WRITE_TO_EEPROM(uint32_t address, int32_t data_block) +{ + e2prom.write(address*4+10,data_block); + wait_us(1); +} + +void THRES_WRITE_TO_EEPROM(uint16_t mid, uint32_t* thres_data,int val) +{ + int8_t data[128] = {0}; + //memcpy(data,thres_data,128); + if(val == 1 ) + memcpy(data,thres_data,128); + if(val == 2) + memcpy(data,thres_data,48); + if(val == 3) + memcpy(data,thres_data,80); + if(mid <11 & mid >1) + { + e2prom.write((uint32_t)(mid-1)*128,data,128); + } +} + +void WRITE_PMS_TO_EEPROM(uint16_t pmid, uint32_t* thres_data) +{ + int8_t data[128]; + memcpy(data,thres_data,128); + + if(pmid <7 & pmid >0) + { + e2prom.write((uint32_t)(1280 + (pmid-1)*128),data,128); + } +} + +void UPDATE_PMS_ENTRY(uint32_t address, uint32_t data_block) +{ + e2prom.write((1280 + (address*4)),data_block); + wait_us(1); +} + +uint32_t READ_FROM_EERPOM(uint32_t address) +{ + int32_t data; + e2prom.read(address*4+10, data); + wait_ms(10); + return (uint32_t)data; +} + +void THRES_READ_FROM_EEPROM(uint16_t mid, uint32_t* data32,int val) +{ + int8_t data[128]; + if(mid<11 & mid >1) + { + e2prom.read((uint32_t)(mid-1)*128,data,128); + } + if(val == 1 ) + memcpy(data32,data,128); + if(val == 2) + memcpy(data32,data,48); + if(val == 3) + memcpy(data32,data,80); + /*for(int i=0;i<32;i++){ + mcpy(data32+i,data+4*i,4); + }*/ + wait_ms(10); +} + +void READ_PMS_FROM_EEPROM(uint16_t pmid, uint32_t* data32) +{ + int8_t data[128]; + if(pmid<7 & pmid > 0) + { + e2prom.read((uint32_t)(1280 + (pmid-1)*128),data,128); + } + memcpy(data32,data,128); + /*for(int i=0;i<32;i++){ + mcpy(data32+i,data+4*i,4); + }*/ + wait_ms(10); +} + +void INIT_EEPROM() +{ + // To be commented starts + int32_t test_buffer; + test_buffer = READ_FROM_EERPOM(17); + // test_buffer = 0; + // e2prom.ready(); + // e2prom.read(2,test_buffer); + + if(test_buffer != 1) + { + if(test_buffer == 0) + { + for(int i=0;i<29;i++) + WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]); + WRITE_TO_EEPROM(17,0x01); + gPC.printf("Initializing EEPROM - Day 0\n\r"); + } + if(test_buffer == 2) + { + for(int i=0;i<29;i++) + WRITE_TO_EEPROM( i, INITIAL_EEPROM[i]); + WRITE_TO_EEPROM( 5, 1); + WRITE_TO_EEPROM(17,0x01); + gPC.printf("Initializing EEPROM - Reset EEPROM Paramters only\n\r"); + } + } + + // To be commented ends*/ + gPC.printf("Reading intial parametrs from EEPROM\n"); + + EPS_V_A_EN_STATUS = READ_FROM_EERPOM(0); + BAE_STATUS = READ_FROM_EERPOM(1); + SD_STATUS = READ_FROM_EERPOM(2); + //PL_STATUS = read[3]; + SD_LIB_BLK_CURRENT = READ_FROM_EERPOM(3); + PL_BEE_SW_STATUS = READ_FROM_EERPOM(4); + //PL_EPS_LATCH_SW_EN = read[4]; + RTC_INIT_STATUS = READ_FROM_EERPOM(5); + CDMS_RTC_DISABLE = READ_FROM_EERPOM(6); + CDMS_RESET_COUNTER = READ_FROM_EERPOM(7); + TIME_LATEST_CDSMS_RESET = READ_FROM_EERPOM(8); + COM_TC_BYTES_LIMIT = READ_FROM_EERPOM(9); + COM_RX_CURRENT_MAX = READ_FROM_EERPOM(10); + COM_RX_DISABLE_TIMEOUT = READ_FROM_EERPOM(11); + COM_PA_TMP_HIGH = 85;//read[12]; + COM_PA_RECOVERY_TIMEOUT = READ_FROM_EERPOM(13); + COM_SESSION_TIMEOUT = READ_FROM_EERPOM(14); + COM_RSSI_MIN = READ_FROM_EERPOM(15); + PL_STATE = READ_FROM_EERPOM(16); + + THRES_READ_FROM_EEPROM(0x0002,flasharray_thres,1); + for(uint8_t z=0;z<24;z++) + scp_threshold_m0[z] = flasharray_thres[z] ; + for(uint8_t z=24;z<32;z++) + scp_threshold_m0[z+8] = flasharray_thres[z] ; + + THRES_READ_FROM_EEPROM(0x0003,scp_threshold_m0+(40),2); + + THRES_READ_FROM_EEPROM(0x0004,scp_threshold_m1,1); + + THRES_READ_FROM_EEPROM(0x0005,scp_threshold_m1+(32),3); + + THRES_READ_FROM_EEPROM(0x0006,flasharray_thres,2); + scp_threshold_m0_1[7] = flasharray_thres[0]; + scp_threshold_m0_1[5] = flasharray_thres[1] ; + scp_threshold_m0_1[8] = flasharray_thres[2] ; + scp_threshold_m0_1[6] = flasharray_thres[3] ; + for(uint8_t z=0;z<5;z++) + scp_threshold_m0_1[z] = flasharray_thres[z+4] ; + scp_sfp_threshold_m0_2[0] = flasharray_thres[9] ; + scp_sfp_threshold_m0_2[1] = flasharray_thres[10] ; + scp_sfp_threshold_m0_2[2] = flasharray_thres[11] ; + + THRES_READ_FROM_EEPROM(0x0007,flasharray_thres,1); + for(uint8_t z=0;z<24;z++) + sfp_threshold_m0[z] = flasharray_thres[z] ; + for(uint8_t z=24;z<32;z++) + sfp_threshold_m0[z+8] = flasharray_thres[z] ; + + THRES_READ_FROM_EEPROM(0x0008,sfp_threshold_m0+(40),2); + + THRES_READ_FROM_EEPROM(0x0009,sfp_threshold_m1,1); + + THRES_READ_FROM_EEPROM(0x000A,sfp_threshold_m1+(32),3); + + /*READ_PMS_FROM_EEPROM(0x0001, pl_block); + + READ_PMS_FROM_EEPROM(0x0002, pl_block + (32)); + + READ_PMS_FROM_EEPROM(0x0003, pl_block + (64)); //Uncomment and test this after all other PMS functionality has been verified + + READ_PMS_FROM_EEPROM(0x0004, pl_block + (96)); + + READ_PMS_FROM_EEPROM(0x0005, pl_block + (128)); + + READ_PMS_FROM_EEPROM(0x0006, pl_block + (160));*/ + + + gPC.printf("0 = \r%d\n\r", READ_FROM_EERPOM(0)); + gPC.printf("1 = %d\n\r", READ_FROM_EERPOM(1)); + gPC.printf("2 = %d\n\r", READ_FROM_EERPOM(2)); + gPC.printf("3 = %d\n\r", READ_FROM_EERPOM(3)); + gPC.printf("4 = %d\n\r", READ_FROM_EERPOM(4)); + gPC.printf("5 = %d\n\r", READ_FROM_EERPOM(5)); + gPC.printf("6= %d\n\r", READ_FROM_EERPOM(6)); + gPC.printf("7= %d\n\r", READ_FROM_EERPOM(7)); + gPC.printf("8= %d\n\r", READ_FROM_EERPOM(8)); + gPC.printf("9= %d\n\r", READ_FROM_EERPOM(9)); + gPC.printf("10= %d\n\r", READ_FROM_EERPOM(10)); + gPC.printf("11= %d\n\r", READ_FROM_EERPOM(11)); + gPC.printf("12= %d\n\r", READ_FROM_EERPOM(12)); + gPC.printf("13= %d\n\r", READ_FROM_EERPOM(13)); + gPC.printf("14= %d\n\r", READ_FROM_EERPOM(14)); + gPC.printf("15= %d\n\r", READ_FROM_EERPOM(15)); + gPC.printf("16 = %u\n\r", READ_FROM_EERPOM(16)); + gPC.printf("test buffer 17 = %u\n\r", READ_FROM_EERPOM(17)); + + + // SD_LIB_BLK_CURRENT = READ_FROM_EERPOM(16); + // added by samp + + +} + +/*===================================================MMS Functions=================================================*/ + +void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock); + +void FCTN_CDMS_WR_S_EEPROM(uint16_t mid,uint32_t datablock) +{ + if(mid == 0x0100) + { + WRITE_TO_EEPROM(11,(datablock>>16) & 0x000000FF); + WRITE_TO_EEPROM(13,(datablock>>8) & 0x000000FF); + WRITE_TO_EEPROM(14,datablock & 0x000000FF); + } + else if(mid == 0x0101) + { + WRITE_TO_EEPROM(12,(datablock>>16) & 0x000000FF); + WRITE_TO_EEPROM(10,(datablock>>8) & 0x000000FF); + WRITE_TO_EEPROM(15,datablock & 0x000000FF); + } + else if(mid == 0x0102) + { + WRITE_TO_EEPROM(9,datablock & 0x0000FFFF); + } + else if(mid == 0x0103) + { + WRITE_TO_EEPROM(6,datablock & 0x00000001); + } + else if(mid == 0x0104) + { + WRITE_TO_EEPROM(17,datablock & 0x00000001); + } +} + +#endif \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e FMS_all.h --- a/FMS_all.h Sat Feb 10 09:06:26 2018 +0000 +++ b/FMS_all.h Sun Apr 03 15:35:53 2022 +0000 @@ -35,8 +35,6 @@ void RST_BAE(); void RST_PL_BEE(); void CDMS_RESET(); -void SYS_PWR_RESET(); // Have to be decided with EPS team. -void sys_pwr_reset(void const *args); void EPS_V_A_EN(); void EPS_V_C_EN(); @@ -45,10 +43,6 @@ void CDMS_CALIB_RTC(uint8_t *); void TOTAL_RESET_WITH_CDMS(); -void sys_pwr_reset(void const *args){ - SYS_PWR_RESET(); -} - void P_PL_INIT() { @@ -81,11 +75,13 @@ void CDMS_SD_SW_ON() { + wait_ms(100); // SD_CARD_fromuC_ENA3 = 1; // SD_CARD_fromISO_ENA4 = 1; SD_SW_EN_DS = 1; SD_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); + WRITE_TO_EEPROM(2,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); gPC.printf("sw on sd\n"); } @@ -96,12 +92,16 @@ SD_SW_EN_DS = 0; SD_STATUS = DEVICE_DISABLED; // SD_STATUS = 0; - FCTN_CDMS_WR_FLASH(2,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(2,DEVICE_DISABLED); + WRITE_TO_EEPROM(2,DEVICE_DISABLED); + wait_ms(100); gPC.printf("sw off sd\n"); } void CDMS_RTC_ON() { + WRITE_TO_EEPROM(6,DEVICE_POWERED); + wait_ms(100); //FCTN_CDMS_INIT_RTC(); SPI_mutex.lock(); gCS_RTC=1; @@ -121,7 +121,7 @@ //EN_RTC = 0x01; CDMS_RTC_DISABLE =1; - FCTN_CDMS_WR_FLASH(6,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(6,DEVICE_POWERED); // gPC.printf("0x%08X \n", READ_FROM_EERPOM(6)); SPI_mutex.unlock(); gPC.printf("sw on rtc\n"); @@ -147,7 +147,9 @@ //EN_RTC = 0x00; CDMS_RTC_DISABLE = 0; - FCTN_CDMS_WR_FLASH(6,0x00); + //FCTN_CDMS_WR_FLASH(6,0x00); + WRITE_TO_EEPROM(6,0x00); + wait_ms(100); SPI_mutex.unlock(); gPC.printf("sw off rtc\n"); } @@ -156,7 +158,9 @@ { BAE_SW_EN_DS = 1; BAE_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); + wait_ms(100); gPC.printf("sw on bae\n"); } @@ -165,7 +169,9 @@ BAE_SW_EN_DS = 0; BAE_STATUS = DEVICE_DISABLED; // BAE_STATUS = 0; - FCTN_CDMS_WR_FLASH(1,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_DISABLED); + WRITE_TO_EEPROM(1,DEVICE_DISABLED); + wait_ms(100); gPC.printf("sw off bae\n"); } @@ -179,7 +185,10 @@ PYLD_DFF_CLK = 0; wait_us(1); PL_BEE_SW_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + //PL_STATE = 0x01; //uncomment - JOel after figuring out PYLD startup state + //WRITE_TO_EEPROM(16,(int32_t)PL_STATE); + //FCTN_CDMS_WR_FLASH(4,DEVICE_POWERED); + WRITE_TO_EEPROM(4,DEVICE_POWERED); } void SW_OFF_PL_BEE() @@ -192,7 +201,10 @@ PYLD_DFF_CLK = 0; wait_us(1); PL_BEE_SW_STATUS = DEVICE_DISABLED; - FCTN_CDMS_WR_FLASH(4,DEVICE_DISABLED); + //FCTN_CDMS_WR_FLASH(4,DEVICE_DISABLED); + PL_STATE = 0x00; + WRITE_TO_EEPROM(16,(int32_t)PL_STATE); + WRITE_TO_EEPROM(4,DEVICE_DISABLED); } void SW_ON_PL_EPS() @@ -227,14 +239,16 @@ { V_A_EN = 1; EPS_V_A_EN_STATUS = 1; - FCTN_CDMS_WR_FLASH(0,1); + //FCTN_CDMS_WR_FLASH(0,1); + WRITE_TO_EEPROM(0,1); } void SW_OFF_V_A_EN() { V_A_EN = 0; EPS_V_A_EN_STATUS = 0; - FCTN_CDMS_WR_FLASH(0,0); + //FCTN_CDMS_WR_FLASH(0,0); + WRITE_TO_EEPROM(0,0); } void RST_SD() @@ -247,18 +261,22 @@ SD_CARD_fromISO_ENA4 = 1; SD_SW_EN_DS = 1; SD_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(2,DEVICE_POWERED); + WRITE_TO_EEPROM(2,DEVICE_POWERED); + wait_ms(100); gPC.printf("rst sd\n"); } void SW_RST_BAE() { - BAE_SW_EN_DS = 0; - wait(5); - BAE_SW_EN_DS = 1; + BAE_SW_EN_DS = 0; + wait(5); + BAE_SW_EN_DS = 1; BAE_STATUS = DEVICE_POWERED; - FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + //FCTN_CDMS_WR_FLASH(1,DEVICE_POWERED); + WRITE_TO_EEPROM(1,DEVICE_POWERED); + wait_ms(100); gPC.printf("rst bae\n"); } @@ -276,6 +294,9 @@ RESET_TO_BAE = 0; wait_ms(10); RESET_TO_BAE = 1; + BAE_STATUS = DEVICE_POWERED; + + WRITE_TO_EEPROM(1,DEVICE_POWERED); } void RST_PL_BEE() @@ -290,11 +311,6 @@ NVIC_SystemReset(); } -void SYS_PWR_RESET() // Have to be decided with EPS team. -{ - //sys_pwr_rst = 1; -} - void EPS_V_A_EN() // This is a reset function { V_A_EN = 0; @@ -443,4 +459,82 @@ tm_pointer->TM_string[44+i] = TIME_LATEST_RTC >> (3-i)*8; } +void FCTN_CDMS_SCP_M0a(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<24; i++) + rmcpy(tm_pointer->TM_string+4*i+4, scp_threshold_m0+i, 4); + for(uint8_t i=24; i<32; i++) + rmcpy(tm_pointer->TM_string+4*i+4, scp_threshold_m0+i+8, 4); + + for(uint8_t i=0; i<128; i++) + gPC.printf("\r %d\n",tm_pointer->TM_string[i]); + + +} + +void FCTN_CDMS_SCP_M0b(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<12; i++) + rmcpy(tm_pointer->TM_string+4*i+4, scp_threshold_m0+i+40, 4); + +} + +void FCTN_CDMS_SCP_M1a(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<32; i++) + rmcpy(tm_pointer->TM_string+4*i+4, scp_threshold_m1+i, 4); + +} + +void FCTN_CDMS_SCP_M1b(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<20; i++) + rmcpy(tm_pointer->TM_string+4*i+4, scp_threshold_m1+i+32, 4); + +} + +void FCTN_CDMS_SCP_SFP_SUM(Base_tm *tm_pointer) +{ + rmcpy(tm_pointer->TM_string+4*0+4, scp_threshold_m0_1+7, 4); + rmcpy(tm_pointer->TM_string+4*1+4, scp_threshold_m0_1+5, 4); + rmcpy(tm_pointer->TM_string+4*2+4, scp_threshold_m0_1+8, 4); + rmcpy(tm_pointer->TM_string+4*3+4, scp_threshold_m0_1+6, 4); + for(uint8_t i=0; i<5; i++) + rmcpy(tm_pointer->TM_string+4*(i+4)+4, scp_threshold_m0_1+i, 4); + rmcpy(tm_pointer->TM_string+4*9+4, scp_sfp_threshold_m0_2+0, 4); + rmcpy(tm_pointer->TM_string+4*10+4, scp_sfp_threshold_m0_2+1, 4); + rmcpy(tm_pointer->TM_string+4*11+4, scp_sfp_threshold_m0_2+2, 4); + +} + +void FCTN_CDMS_SFP_M0a(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<24; i++) + rmcpy(tm_pointer->TM_string+4*i+4, sfp_threshold_m0+i, 4); + for(uint8_t i=24; i<32; i++) + rmcpy(tm_pointer->TM_string+4*i+4, sfp_threshold_m0+i+8, 4); + +} + +void FCTN_CDMS_SFP_M0b(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<12; i++) + rmcpy(tm_pointer->TM_string+4*i+4, sfp_threshold_m0+i+40, 4); + +} + +void FCTN_CDMS_SFP_M1a(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<32; i++) + rmcpy(tm_pointer->TM_string+4*i+4, sfp_threshold_m1+i, 4); + +} + +void FCTN_CDMS_SFP_M1b(Base_tm *tm_pointer) +{ + for(uint8_t i=0; i<20; i++) + rmcpy(tm_pointer->TM_string+4*i+4, sfp_threshold_m1+i+32, 4); + +} + #endif \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e Flash.h --- a/Flash.h Sat Feb 10 09:06:26 2018 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -#include "FreescaleIAP.h" - -int strt_add_thres = flash_size() - (11*SECTOR_SIZE); -uint32_t flasharray_thres[32] = {0}; - -void FCTN_CDMS_WR_FLASH(uint16_t , uint32_t); -int strt_add = flash_size() - (2*SECTOR_SIZE); -uint32_t flasharray[32]; //256+(3*1024) -uint32_t INITIAL_FLASH[32]; - -/*corrected*/ -int *nativeflash = (int*)strt_add; - -void FLASH_INI() -{ - INITIAL_FLASH[3] = 80000; - INITIAL_FLASH[6] = 1; - INITIAL_FLASH[5] = 0; - INITIAL_FLASH[2] = 1; - INITIAL_FLASH[7] = 0; - INITIAL_FLASH[14] = 90; - uint32_t read[32]; - for(int i=0;i<32;i++) - { - read[i] = nativeflash[i]; - } - - if(read[0] == -1) - { - gPC.printf("I happen only once right ???"); - for(int j=0;j<32;j++) - { - FCTN_CDMS_WR_FLASH(j,INITIAL_FLASH[j]); - } - for(int j=0;j<32;j++) - { - read[j] = nativeflash[j]; - } - } - else - { - for(int j=0;j<32;j++) - { - read[j] = nativeflash[j]; - } - } - EPS_V_A_EN_STATUS = read[0]; - BAE_STATUS = read[1]; - SD_STATUS = read[2]; - //PL_STATUS = read[3]; - SD_LIB_BLK_CURRENT = read[3]; - PL_BEE_SW_STATUS = read[4]; - //PL_EPS_LATCH_SW_EN = read[4]; - RTC_INIT_STATUS = read[5]; - CDMS_RTC_DISABLE = read[6]; - CDMS_RESET_COUNTER = read[7]; - TIME_LATEST_CDSMS_RESET = read[8]; - COM_TC_BYTES_LIMIT = read[9]; - COM_RX_CURRENT_MAX = read[10]; - COM_RX_DISABLE_TIMEOUT = read[11]; - COM_PA_TMP_HIGH = 85;//read[12]; - COM_PA_RECOVERY_TIMEOUT = read[13]; - COM_SESSION_TIMEOUT = read[14]; - COM_RSSI_MIN = read[15]; - PL_STATUS = read[16]; - //SD_LIB_BLK_CURRENT = read[16]; - //CDMS_RESET_COUNTER = read[17]; -} - -/*Writing to the Flash*/ -void FCTN_CDMS_WR_FLASH(uint16_t j,uint32_t datablock) //j-position to write address ; fdata - flash data to be written -{ - for(int i=0;i<17;i++) - { - flasharray[i]=nativeflash[i]; - } - flasharray[j]=datablock; - erase_sector(strt_add); - program_flash(strt_add, (char*)flasharray,32); -} -/*End*/ - -/*===================================================MMS Functions=================================================*/ - -void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock); - -void FCTN_CDMS_WR_S_FLASH(uint16_t mid,uint32_t datablock) -{ - if(mid == 0x0100) - { - FCTN_CDMS_WR_FLASH(11,(datablock>>16) & 0x000000FF); - FCTN_CDMS_WR_FLASH(13,(datablock>>8) & 0x000000FF); - FCTN_CDMS_WR_FLASH(14,datablock & 0x000000FF); - } - else if(mid == 0x0101) - { - FCTN_CDMS_WR_FLASH(12,(datablock>>16) & 0x000000FF); - FCTN_CDMS_WR_FLASH(10,(datablock>>8) & 0x000000FF); - FCTN_CDMS_WR_FLASH(15,datablock & 0x000000FF); - } - else if(mid == 0x0102) - { - FCTN_CDMS_WR_FLASH(9,datablock & 0x0000FFFF); - } - else if(mid == 0x0103) - { - FCTN_CDMS_WR_FLASH(6,datablock & 0x00000001); - } -} - -int verify_flash_sector(int mid,uint32_t* flasharray_thres) -{ - int add = strt_add_thres + ((mid-1)*SECTOR_SIZE); - int result = 0; - int* testflash = (int*)add; - for(int i=0;i<32;i++) - { - if(testflash[i] == flasharray_thres[i]) - continue; - else - { - return 1; - } - } - return 0; -} \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e OBSRS.h --- a/OBSRS.h Sat Feb 10 09:06:26 2018 +0000 +++ b/OBSRS.h Sun Apr 03 15:35:53 2022 +0000 @@ -1,5 +1,5 @@ // problem in check pa and valid sid not sending anything in one for loop - + #ifndef OBSRS_H // To make sure you don't declare the function more than once by including the header multiple times. #define OBSRS_H @@ -130,7 +130,7 @@ else{\ pa_temp1 = (3365.4/log(7.60573*resistance))-273;\ }\ - gPC.printf("\n%f\n",pa_temp1);\ + /*gPC.printf("\n%f\n",pa_temp1);*/\ if (pa_temp1 > COM_PA_TMP_HIGH){\ PA_HOT = 1;\ gPC.puts("PA is measured HOT\r\n");\
diff -r 197c93dc2012 -r f3d48d62e00e RESET_functions.h --- a/RESET_functions.h Sat Feb 10 09:06:26 2018 +0000 +++ b/RESET_functions.h Sun Apr 03 15:35:53 2022 +0000 @@ -1,6 +1,7 @@ void RESET_COMRX(); void RESET_RTC(); +void RESET_WATCHDOG(); void RESET_COMRX() { @@ -35,4 +36,15 @@ gCS_RTC=0; spi.write(0x8F); spi.write(0x00); +} + +void RESET_WATCHDOG(){ + gPC.printf("\r WD\n"); + int i=0; + WDTrigger = 1; + while(i<5){ + i++; + } + WDTrigger = 0; + } \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e ThreadsAndFunctions.h --- a/ThreadsAndFunctions.h Sat Feb 10 09:06:26 2018 +0000 +++ b/ThreadsAndFunctions.h Sun Apr 03 15:35:53 2022 +0000 @@ -22,34 +22,38 @@ // gPAY_SPI->frequency(1000000); //1000000 gPAY_SPI->format(8,0); gPC.printf("\n\rTest..........................."); - gPAY_SPI->bulkRead_init(gPAYLOAD_BUFFER, PAYLOAD_BUFFER_LENGTH, &payload_isr_fun); - gPAY_SPI->bulkRead_start(); + gPAY_SPI->bulkRead_init(gPAYLOAD_BUFFER, PAYLOAD_BUFFER_LENGTH, &payload_isr_fun); //commented 2day + gPAY_SPI->bulkRead_start(); //commented 2day //AY_SPI->bulkRead_pause(); //AY_SPI->bulkRead_resume(&payload_isr_fun); while(true){ gPC.printf("waiting for Sci sig\n\r"); gSCIENCE_THREAD->signal_wait(SCIENCE_SIGNAL); - + gPC.printf("got signal\n\r"); + if(EN_RCV_SC == 0x00) + continue; gPC.printf("checking mutex in Sci\n\r"); gMutex.lock(); + gPC.printf("locked mutex,entered in Sci thread\n\r"); - gPC.printf("locked mutex,entered in Sci thread\n\r"); - + WRITE_TO_EEPROM(1,DEVICE_POWERED); DMA_LED1 = 1; PL_RCV_SC_DATA_STATUS = 1; + //gPC.puts("sig_set\r\n"); //for(int i =0; i<PAYLOAD_BUFFER_LENGTH; i++) //if (gPAYLOAD_BUFFER[i] != 0x01) gPC.printf("%d = 0x%02X\n\r",i,gPAYLOAD_BUFFER[i]); //gPAY_SPI->bulkRead_start(); - // srp(gPAYLOAD_BUFFER);//skip one apcket when cdms resets + //srp(gPAYLOAD_BUFFER);//skip one apcket when cdms resets //gPC.puts("exit_srp\r\n"); //wait(2);/*timeout to be decided*/ if(dma) //something wrong here { // TIME_LATEST_I2C_SPEED = FCTN_CDMS_RD_RTC() >> 7; PL_RCV_SC_DATA_COUNTER++; - gPAY_SPI->bulkRead_start();//something wrong here + gPC.printf("dma activatedi\n\r"); + gPAY_SPI->bulkRead_start();//something wrong here //commented 2day // DMA_LED1 = !DMA_LED1; // added by samp //gPAY_SPI->bulkRead_pause(); //gPAY_SPI->bulkRead_resume(&payload_isr_fun); @@ -57,8 +61,8 @@ // DMA_LED1 = !DMA_LED1; // added by samp //__disable_irq(); srp(gPAYLOAD_BUFFER);//skip one apcket when cdms resets - - uint8_t sd_stat1 = 0; + + uint8_t sd_stat1 = 0; if(BAE_HK_SD_DATA_READY==1) { for(int i=0; i<288; i++) @@ -206,7 +210,7 @@ gPAY_SPI->bulkRead_pause(); PL_GPIO_3_STATUS=1;//problem with this gFLAGS = gFLAGS | COM_SESSION_FLAG; - gSESSION_TIMEOUT.attach(&after_session, 7*COM_SESSION_TIMEOUT); + gSESSION_TIMEOUT.attach(&after_session, 14*COM_SESSION_TIMEOUT); gFLAGS = gFLAGS | COM_RX_FLAG; gTOTAL_RAW_BYTES = 0; PUT_RAW_BYTE; @@ -245,6 +249,7 @@ RX1M.attach(NULL); gPC.printf("RSSI = %f",RSSI_MAX); /*Thread::wait(2000);*/ + gFLAGS = gFLAGS & (~COM_RX_FLAG);//CHanged but not tested gFLAGS = gFLAGS | COM_MNG_TMTC_RUNNING_FLAG; @@ -258,13 +263,14 @@ } gRX_COUNT = 0; raw_data_to_tc(); - gFLAGS = gFLAGS & (~COM_RX_FLAG); + //gFLAGS = gFLAGS & (~COM_RX_FLAG); //Mutex gMutex.lock(); if( gTOTAL_VALID_TC > 1 ){ gPC.printf("valid TC rx: %u\r\n", gTOTAL_VALID_TC); + TC_count += gTOTAL_VALID_TC; //gTOTAL_VALID_TC = 1; if( gTOTAL_VALID_TC < COM_MAX_TC_LIMIT ){ // CHECK WEATHER TC LIST HAS MISSING TC OR WEATHER LAST FRAME BIT IS HIGH IN THE LAST PSC-TC @@ -440,4 +446,9 @@ gMutex.unlock(); } -} \ No newline at end of file +} +/* +void st_up_isr(void const *args){ + gST_UP->signal_set(ST_UP_SIGNAL);\ +} +*/ \ No newline at end of file
diff -r 197c93dc2012 -r f3d48d62e00e adf.h --- a/adf.h Sat Feb 10 09:06:26 2018 +0000 +++ b/adf.h Sun Apr 03 15:35:53 2022 +0000 @@ -11,7 +11,9 @@ bool buffer_state; bool finish_write_data; uint8_t signal = 0x00; -unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xFB,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x08/*GMSK_modulation*/,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; +//unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xFB,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x08/*GMSK_modulation*/,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; +unsigned char bbram_buffer[66]={0x19,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x00,0xF5,0xC2,0x10,0xC0,0x00,0x30,0x31,0x07,0x00,0x01,0x00,/*PA Level Byte*/0x57/*PA Parameters*/,0x08/*GMSK_modulation*/,0x0B,0x37,0x00,0x00,0x40,0x0C,0x00,0x05,0x00,0x00,0x18,0x12,0x34,0x56,0x20,0x10,0xC4,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0xE0,0x00,0x10,0x04,0x00,0x00,0x00,0x00,0x00}; + bool data_irq_err=0; bool data_err= false; unsigned char temp_byte=0x00; @@ -254,12 +256,6 @@ gCS_ADF=0; spi.write(0x3B); - spi.write(0x27); - spi.write(0xFF); - secondbyte = spi.write(0xFF); - gCS_ADF=1; - gCS_ADF=0; - spi.write(0x3B); spi.write(0x28); spi.write(0xFF); firstbyte = spi.write(0xFF); @@ -271,8 +267,10 @@ secondbyte = spi.write(0xFF); gCS_ADF=1; - COM_ADF_TMP = firstbyte & 0x03; - COM_ADF_TMP |= secondbyte & 0xfc; + COM_ADF_TMP = (firstbyte & 0xC0) >> 6; + //COM_ADF_TMP |= secondbyte & 0xfc; + secondbyte = (secondbyte & 0x3F) << 2; + COM_ADF_TMP = secondbyte | firstbyte; COM_ADF_TMP = 0.9474*(COM_ADF_TMP - 28) +28.2; gPC.printf("\n\rCOM_ADF_TMP : %d \n",COM_ADF_TMP); @@ -685,13 +683,13 @@ configure_adf; send_data; /*PA MCR level*/; - gCS_ADF=0; - spi.write(0x1B); - spi.write(0x07); + gCS_ADF=0; + spi.write(0x1B); + spi.write(0x07); // spi.write(0x35); // spi.write(0x36); - spi.write(0x38); //PA Output = 30.8 - gCS_ADF=1; + spi.write(0x34); //PA Output = 30.8 + gCS_ADF=1; CMD(CMD_PHY_TX); wait_us(2000); T.start();
diff -r 197c93dc2012 -r f3d48d62e00e cdms_rtc.h --- a/cdms_rtc.h Sat Feb 10 09:06:26 2018 +0000 +++ b/cdms_rtc.h Sun Apr 03 15:35:53 2022 +0000 @@ -80,7 +80,8 @@ gCS_RTC=1; gPC.puts("\n\r rtc initalised \n"); RTC_INIT_STATUS = 1; - FCTN_CDMS_WR_FLASH(5,1); + //FCTN_CDMS_WR_FLASH(5,1); + WRITE_TO_EEPROM(5,1); SPI_mutex.unlock(); }
diff -r 197c93dc2012 -r f3d48d62e00e cdms_sd.h --- a/cdms_sd.h Sat Feb 10 09:06:26 2018 +0000 +++ b/cdms_sd.h Sun Apr 03 15:35:53 2022 +0000 @@ -133,7 +133,8 @@ if(SD_MNG_SECT != SD_LIB_BLK_CURRENT) { SD_LIB_BLK_CURRENT = SD_MNG_SECT; - FCTN_CDMS_WR_FLASH(3,SD_LIB_BLK_CURRENT); + //FCTN_CDMS_WR_FLASH(3,SD_LIB_BLK_CURRENT); + WRITE_TO_EEPROM(3,SD_LIB_BLK_CURRENT); } SD_LIB_WRITES = SD_LIB_WRITES%(int)0xFFFF; disk_write(buffer,SD_MNG_SECT);
diff -r 197c93dc2012 -r f3d48d62e00e i2c.h --- a/i2c.h Sat Feb 10 09:06:26 2018 +0000 +++ b/i2c.h Sun Apr 03 15:35:53 2022 +0000 @@ -18,18 +18,19 @@ void I2C_busreset() { - PORTE->PCR[1] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines - PORTE->PCR[0] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines + PORTE->PCR[24] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines + PORTE->PCR[25] &= 0xfffffffb; //Enabling high slew rates for SDA and SCL lines I2C0->C1 &= 0x7f; //Disabling I2C module SIM->SCGC4 &= 0xffffffbf; //Disabling clock to I2C module SIM->SCGC4 |= 0x00000040; //Enabling clock to I2C module I2C0->C1 |= 0x80; //Enabling I2C module - PORTE->PCR[1] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines - PORTE->PCR[0] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines + PORTE->PCR[24] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines + PORTE->PCR[25] |= 0x00000004; //Disabling high slew rates for SDA and SCL lines Thread::wait(1); //Wait for all I2C registers to be updates to their their values } bool FCTN_I2C_READ_PL(char *data,int length) // Returns 0 for success { + master.frequency(400000); PL_I2C_GPIO = 1; read_ack = master.read(addr_pl|1,data,length); Thread::wait(1); //as per tests Thread::wait not required on master side. But its safe to give 1ms @@ -67,7 +68,8 @@ } bool FCTN_I2C_WRITE_PL(char *data2,uint8_t tc_len2) // Returns 0 for success { - write_ack = master.write(addr_pl|0x00,data2,tc_len2+1);//address to be defined in payload + master.frequency(400000); + write_ack = master.write(addr_pl|0x00,data2,tc_len2);//address to be defined in payload Thread::wait(1); //As per the tests Thread::wait is not required on master side but its safe to give 1ms pdirw1=PTE->PDIR; uint8_t i2c_count = 0; @@ -100,8 +102,9 @@ bool FCTN_I2C_READ(char *data,int length) // Returns 0 for success { // gPC.printf("i2C_rd\r\n"); + master.frequency(400000); CDMS_I2C_GPIO = 1; - read_ack = master.read(addr_bae|1,data,length); + read_ack = master.read(addr_bae|1,data,length); Thread::wait(1); //as per tests Thread::wait not required on master side. But its safe to give 1ms pdirr1=PTE->PDIR; uint8_t i2c_count = 0; @@ -123,11 +126,10 @@ read_ack = 1; } } - else if (read_ack == 1) + if (read_ack == 1) { I2C_busreset(); - CDMS_I2C_ERR_BAE_COUNTER++; - + CDMS_I2C_ERR_BAE_COUNTER++; } // gPC.printf("end_12c_RD_\r\n"); CDMS_I2C_GPIO = 0; @@ -138,8 +140,9 @@ bool FCTN_I2C_WRITE(char *data,int tc_len2) // Returns 0 for success { // gPC.printf("i2C_wr\r\n"); + master.frequency(400000); CDMS_I2C_GPIO = 1; - write_ack = master.write(addr_bae|0x00,data,tc_len2); + write_ack = master.write(addr_bae|0x00,data,tc_len2); Thread::wait(1); //As per the tests Thread::wait is not required on master side but its safe to give 1ms pdirw1=PTE->PDIR; uint8_t i2c_count = 0;
diff -r 197c93dc2012 -r f3d48d62e00e main.cpp --- a/main.cpp Sat Feb 10 09:06:26 2018 +0000 +++ b/main.cpp Sun Apr 03 15:35:53 2022 +0000 @@ -1,7 +1,7 @@ // TESTING PUSH PULL IN MAIN CPP #include "mbed.h" -//#include "eeprom.h" +#include "eeprom.h" #define DEBUG 1 @@ -15,8 +15,8 @@ #include "DefinitionsAndGlobals.h" #include "crc.h" #include "i2c.h" -//#include "EEPROM.h" -#include "Flash.h" +#include "EEPROM.h" +//#include "Flash.h" #include "COM_SND_TM_functions.h" #include "cdms_rtc.h" #include "COM_SND_TM.h" @@ -61,7 +61,7 @@ gRX_COUNT = 0; RX1M.attach(&rx_read, Serial::RxIrq); - gPC.baud(1200);//changed for bypassing COM + gPC.baud(1200);//changed for bypassing COM //Base_tm *tm_ptr = NULL; @@ -71,10 +71,13 @@ // COMMON SPI spi.format(8,0); spi.frequency(500000); - FLASH_INI(); + + //FLASH_INI(); + INIT_EEPROM(); //changed Mar 2018 + RESET_WATCHDOG(); if ((BAE_STATUS & 0x03) == 0x03) {SW_OFF_BAE();} - uint8_t sd_stat_temp = SD_STATUS & 0x03; //Joel + uint8_t sd_stat_temp = SD_STATUS & 0x03; SD_CARD_fromuC_ENA3 = 0; SD_CARD_fromISO_ENA4 = 0; SD_SW_EN_DS = 0; @@ -89,16 +92,45 @@ gCS_RTC = 1; gCS_ADF = 1; - //CDMS_RTC_DISABLE = 1; + FCTN_CDMS_SD_INIT();/* sd card initialization*/ + + CDMS_RTC_DISABLE = 1; + //RTC_INIT_STATUS = test_buffer if((CDMS_RTC_DISABLE & 0x01) == 1) { CDMS_RTC_ON(); } if((RTC_INIT_STATUS & 0x01) != 1) //Joel - { + { FCTN_CDMS_INIT_RTC();/* rtc initialization*/ - } - FCTN_CDMS_SD_INIT();/* sd card initialization*/ + + //INIT_40mins + + /*BAE_SW_EN_DS = 0; //DISABLE BAE + SD_SW_EN_DS = 0; //DISABLE SD + uint64_t ini_time = FCTN_CDMS_RD_RTC(); + uint32_t T_check_ini = (((ini_time >> 7)& 0x00000FC0)>>6); + uint32_t T_diff = T_check_ini; + + expired=0; + Ticker Sftw_Timer; + gPC.printf("\rGoing to start Ticker\n"); + Sftw_Timer.attach(&int_acq1, 2500.0); + + while (T_check_ini - T_diff < T_INI) + { + RESET_WATCHDOG(); + wait_ms(10000); + ini_time = FCTN_CDMS_RD_RTC(); + T_check_ini = (((ini_time >> 7)& 0x00000FC0)>>6); + gPC.printf("ini_time %d",T_check_ini); + if (expired == 1) + break; + } + BAE_SW_EN_DS = 1; //ENABLE BAE + SD_SW_EN_DS = 1; //ENABLE SD*/ + } + if(sd_stat_temp == DEVICE_DISABLED) { SD_STATUS = sd_stat_temp; @@ -109,19 +141,27 @@ { SD_STATUS = sd_stat_temp; } - // INIT_EEPROM(); // added by samp + CDMS_RESET_COUNTER+=1; - FCTN_CDMS_WR_FLASH(7,CDMS_RESET_COUNTER); + WRITE_TO_EEPROM(7,CDMS_RESET_COUNTER); gPC.printf("\n\r%d\n",CDMS_RESET_COUNTER); TIME_LATEST_CDSMS_RESET = FCTN_CDMS_RD_RTC() >> 7; - FCTN_CDMS_WR_FLASH(8,TIME_LATEST_CDSMS_RESET); + //FCTN_CDMS_WR_FLASH(8,TIME_LATEST_CDSMS_RESET); + WRITE_TO_EEPROM(8,TIME_LATEST_CDSMS_RESET); // gPC.printf("%d \n", READ_FROM_EERPOM(8)); - //uint8_t test[512]; + uint8_t test[512]; - //for(int i =0; i<512; i++) - // test[i] = 0; - //disk_write(test,80000); + for(int i =0; i<512; i++) + test[i] = 0; + test[2] = 0xF; + test[3] = 0xA0; + test[10] = 0xF; + test[11] = 0xA0; + test[18] = 0xF; + test[19] = 0xA0; + + disk_write(test,80000); SD_MNG_SECT = SD_LIB_BLK_CURRENT; @@ -145,8 +185,8 @@ gCOM_MNG_TMTC_THREAD->set_priority(osPriorityRealtime); gHK_THREAD = new Thread(FCTN_CDMS_HK_MAIN); - // gHK_THREAD->set_priority(osPriorityHigh); - gHK_THREAD->set_priority(osPriorityNormal); + //gHK_THREAD->set_priority(osPriorityHigh); + gHK_THREAD->set_priority(osPriorityNormal); gSCIENCE_THREAD = new Thread(SCIENCE_FUN); gSCIENCE_THREAD->set_priority(osPriorityHigh); @@ -158,18 +198,17 @@ master.frequency(400000); HK_counter = new RtosTimer(hk_isr, osTimerPeriodic,(void * )NULL); - gHK_THREAD->signal_set(HK_SIGNAL); - HK_counter->stop(); - wait_ms(0.1); - HK_counter->start(10000); - // HK_counter->start(10000); - - sys_reset_cdms_timer = new RtosTimer(sys_pwr_reset, osTimerPeriodic, (void * )NULL); - sys_reset_cdms_timer->start(cdms_reset_timeout); - + //gHK_THREAD->signal_set(HK_SIGNAL); + HK_counter->stop(); + wait_ms(0.1); + HK_counter->start(10000); +// HK_counter->start(10000); +// //PL_wo_dma = new RtosTimer(payload_isr_fun_dma, osTimerPeriodic,(void * )NULL); + //gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL); + //PL_wo_dma->stop(); + //wait_ms(0.1); //PL_wo_dma->start(6000); - //gSCIENCE_THREAD->signal_set(SCIENCE_SIGNAL); /*Timeout flipper; flipper.attach(BAE_TC,31);*/