diff --git a/project/ble_peripheral/ble_app_bladder_patch/fstorage.c b/project/ble_peripheral/ble_app_bladder_patch/fstorage.c index 322d0a6..258e08f 100644 --- a/project/ble_peripheral/ble_app_bladder_patch/fstorage.c +++ b/project/ble_peripheral/ble_app_bladder_patch/fstorage.c @@ -244,6 +244,7 @@ void config_load( void ) fds_record_desc_t desc = { 0 }; fds_find_token_t tok = { 0 }; uint8_t cfg_retry = 0; + uint32_t fds_wait_cnt = 0; // FDS write 대기 카운터 cfg_load_start: memset((char *)&desc, 0, sizeof(desc)); @@ -330,11 +331,21 @@ void config_load( void ) fds_flag_write = false; } - while( fds_flag_write ) + fds_wait_cnt = 0; // + + while(fds_flag_write && fds_wait_cnt < 3000) // FDS write 최대 3초 타임아웃 { nrf_pwr_mgmt_run(); + nrf_delay_ms(1); + fds_wait_cnt++; } + if(fds_flag_write) // FDS write 타임아웃 시 플래그 강제 해제 + { + DBG_PRINTF("[FDS] write TIMEOUT! forcing flag clear\r\n"); + fds_flag_write = false; + } + if( (rc != NRF_SUCCESS) && (rc == FDS_ERR_NO_SPACE_IN_FLASH) ) { rc = fds_gc();