int Spark_Finish_Firmware_Update(FileTransfer::Descriptor& file, uint32_t flags, void* reserved) { SPARK_FLASH_UPDATE = 0; TimingFlashUpdateTimeout = 0; //serial_dump("update finished flags=%d store=%d", flags, file.store); if (flags & 1) { // update successful if (file.store==FileTransfer::Store::FIRMWARE) { hal_update_complete_t result = HAL_FLASH_End(NULL); system_notify_event(firmware_update, result!=HAL_UPDATE_ERROR ? firmware_update_complete : firmware_update_failed, &file); // todo - talk with application and see if now is a good time to reset // if update not applied, do we need to reset? HAL_Core_System_Reset(); } } else { system_notify_event(firmware_update, firmware_update_failed, &file); } RGB.control(false); return 0; }
int Spark_Finish_Firmware_Update(FileTransfer::Descriptor& file, uint32_t flags, void* reserved) { SPARK_FLASH_UPDATE = 0; TimingFlashUpdateTimeout = 0; //DEBUG("update finished flags=%d store=%d", flags, file.store); if (flags & 1) { // update successful if (file.store==FileTransfer::Store::FIRMWARE) { hal_update_complete_t result = HAL_FLASH_End(NULL); system_notify_event(firmware_update, result!=HAL_UPDATE_ERROR ? firmware_update_complete : firmware_update_failed, &file); // always restart for now if (true || result==HAL_UPDATE_APPLIED_PENDING_RESTART) { system_pending_shutdown(); } } } else { system_notify_event(firmware_update, firmware_update_failed, &file); } RGB.control(false); return 0; }