boot/boot_serial: Add boot_reset_request_hook to bs_reset
When hooks are enabled then boot_reset_request_hook will be
called to check whether it is allowed to reset a device.
Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
diff --git a/boot/boot_serial/src/boot_serial.c b/boot/boot_serial/src/boot_serial.c
index 14de8c1..1e453d8 100644
--- a/boot/boot_serial/src/boot_serial.c
+++ b/boot/boot_serial/src/boot_serial.c
@@ -657,22 +657,34 @@
static void
bs_reset(char *buf, int len)
{
- bs_rc_rsp(0);
+ int rc = BOOT_HOOK_CALL(boot_reset_request_hook, 0, false);
+ if (rc == BOOT_RESET_REQUEST_HOOK_BUSY) {
+ rc = MGMT_ERR_EBUSY;
+ } else {
+ /* Currently whatever else is returned it is just converted
+ * to 0/no error. Boot serial starts accepting "force" parameter
+ * in command this needs to change.
+ */
+ rc = 0;
+ }
+ bs_rc_rsp(rc);
+ if (rc == 0) {
#ifdef __ZEPHYR__
#ifdef CONFIG_MULTITHREADING
- k_sleep(K_MSEC(250));
+ k_sleep(K_MSEC(250));
#else
- k_busy_wait(250000);
+ k_busy_wait(250000);
#endif
- sys_reboot(SYS_REBOOT_COLD);
+ sys_reboot(SYS_REBOOT_COLD);
#elif __ESPRESSIF__
- esp_rom_delay_us(250000);
- bootloader_reset();
+ esp_rom_delay_us(250000);
+ bootloader_reset();
#else
- os_cputime_delay_usecs(250000);
- hal_system_reset();
+ os_cputime_delay_usecs(250000);
+ hal_system_reset();
#endif
+ }
}
/*