uint32_t dfu_init(void) { uint32_t err_code = NRF_SUCCESS; m_storage_module_param.cb = pstorage_callback_handler; err_code = pstorage_raw_register(&m_storage_module_param, &m_storage_handle_app); if (err_code != NRF_SUCCESS) { m_dfu_state = DFU_STATE_INIT_ERROR; return err_code; } m_storage_handle_app.block_id = CODE_REGION_1_START; m_storage_handle_swap = m_storage_handle_app; m_storage_handle_swap.block_id += DFU_IMAGE_MAX_SIZE_BANKED; // Create the timer to monitor the activity by the peer doing the firmware update. err_code = app_timer_create(&m_dfu_timer_id, APP_TIMER_MODE_SINGLE_SHOT, dfu_timeout_handler); if (err_code == NRF_SUCCESS) { // Start the DFU timer. err_code = app_timer_start(m_dfu_timer_id, DFU_TIMEOUT_INTERVAL, NULL); } m_data_received = 0; m_dfu_state = DFU_STATE_IDLE; return err_code; }
uint32_t dfu_init(void) { uint32_t err_code; bootloader_settings_t bootloader_settings; dfu_update_status_t update_status; m_storage_module_param.cb = pstorage_callback_handler; // Clear swap area. uint32_t * p_bank_start_address = (uint32_t *)DFU_BANK_1_REGION_START; m_init_packet_length = 0; m_image_crc = 0; err_code = pstorage_raw_register(&m_storage_module_param, &m_storage_handle_app); if (err_code != NRF_SUCCESS) { m_dfu_state = DFU_STATE_INIT_ERROR; return err_code; } m_storage_handle_app.block_id = CODE_REGION_1_START; m_storage_handle_swap = m_storage_handle_app; m_storage_handle_swap.block_id += DFU_IMAGE_MAX_SIZE_BANKED; bootloader_settings_get(&bootloader_settings); if ((bootloader_settings.bank_1 != BANK_ERASED) || (*p_bank_start_address != EMPTY_FLASH_MASK)) { err_code = pstorage_raw_clear(&m_storage_handle_swap, DFU_IMAGE_MAX_SIZE_BANKED); if (err_code != NRF_SUCCESS) { m_dfu_state = DFU_STATE_INIT_ERROR; return err_code; } update_status.status_code = DFU_BANK_1_ERASED; bootloader_dfu_update_process(update_status); } // Create the timer to monitor the activity by the peer doing the firmware update. err_code = app_timer_create(&m_dfu_timer_id, APP_TIMER_MODE_SINGLE_SHOT, dfu_timeout_handler); APP_ERROR_CHECK(err_code); // Start the DFU timer. err_code = app_timer_start(m_dfu_timer_id, DFU_TIMEOUT_INTERVAL, NULL); APP_ERROR_CHECK(err_code); // Size which indicates how large application DFU are able to handle. // The area is not erased but has been locked by the running application, and is considered // to be application data save space. m_new_app_max_size = DFU_IMAGE_MAX_SIZE_BANKED; m_app_data_received = 0; m_dfu_state = DFU_STATE_IDLE; return NRF_SUCCESS; }
uint32_t dfu_init(void) { uint32_t err_code = NRF_SUCCESS; m_dfu_state = DFU_STATE_IDLE; m_init_packet_length = 0; m_image_crc = 0; m_storage_module_param.cb = pstorage_callback_handler; err_code = pstorage_raw_register(&m_storage_module_param, &m_storage_handle_app); if (err_code != NRF_SUCCESS) { m_dfu_state = DFU_STATE_INIT_ERROR; return err_code; } m_storage_handle_app.block_id = CODE_REGION_1_START; return NRF_SUCCESS; }