diff options
Diffstat (limited to 'fw')
| -rw-r--r-- | fw/app/src/update.c | 18 | 
1 files changed, 17 insertions, 1 deletions
diff --git a/fw/app/src/update.c b/fw/app/src/update.c index ff4ce6a..5e119eb 100644 --- a/fw/app/src/update.c +++ b/fw/app/src/update.c @@ -8,11 +8,14 @@  #include <stdint.h>  #include <zephyr/dfu/flash_img.h> +#include <zephyr/dfu/mcuboot.h>  #include <zephyr/logging/log.h> +#include <zephyr/logging/log_ctrl.h>  #include <zephyr/net/http/server.h>  #include <zephyr/net/http/service.h>  #include <zephyr/net/http/status.h>  #include <zephyr/storage/flash_map.h> +#include <zephyr/sys/reboot.h>  LOG_MODULE_REGISTER(update); @@ -74,8 +77,21 @@ static int update_handler(  			LOG_ERR("Processed %zd octets but wrote %zd", processed, written);  			return ret;  		} -		LOG_INF("Handled update request receiving %zd octets.", processed); +		LOG_DBG("Received %zd octets.", processed);  		processed = 0; + +		const bool permanent = true; +		ret = boot_request_upgrade((int)permanent); +		if (ret < 0) { +			LOG_ERR("Failed to mark uploaded image for update (%d)", ret); +			return ret; +		} + +		LOG_INF("New application firmware uploaded and marked for update"); + +		LOG_INF("Rebooting to complete remote update"); +		log_flush(); +		sys_reboot(SYS_REBOOT_COLD);  	}  	return 0;  | 
