/** @brief Function to determine if a flash access in in progress. If it is the case, we can not * start advertising until it is finished. attempted restart * in @ref ble_advertising_on_sys_evt * * @return true if a flash access is in progress, false if not. */ static bool flash_access_in_progress() { uint32_t err_code; uint32_t count = 0; err_code = pstorage_access_status_get(&count); if ((err_code != NRF_ERROR_INVALID_STATE) && (err_code != NRF_SUCCESS)) { ADV_LOG("[ADV]: pstorage_access_status_get returned %d.\r\n", err_code); return true; } if (err_code == NRF_ERROR_INVALID_STATE) { err_code = fs_queued_op_count_get(&count); if (err_code != FS_SUCCESS) { return false; } ADV_LOG_PRINTF("[ADV]: fs_queued_op_count_get gives count %d.\r\n", count); } if(count != 0) { return true; } else { return false; } }
/**@brief Function for initiating advertising and scanning. */ static void adv_scan_start(void) { ret_code_t err_code; uint32_t count; //check if there are no flash operations in progress err_code = fs_queued_op_count_get(&count); APP_ERROR_CHECK(err_code); if(count == 0) { // Start scanning for peripherals and initiate connection to devices which // advertise Heart Rate or Running speed and cadence UUIDs. scan_start(); // Turn on the LED to signal scanning. LEDS_ON(CENTRAL_SCANNING_LED); // Start advertising. err_code = ble_advertising_start(BLE_ADV_MODE_FAST); APP_ERROR_CHECK(err_code); } }