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>
This commit is contained in:
Dominik Ermel 2022-12-09 17:10:20 +00:00 committed by David Brown
parent ad35e2b227
commit b26fc487ee
2 changed files with 21 additions and 8 deletions

View File

@ -657,22 +657,34 @@ out:
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
}
}
/*

View File

@ -41,6 +41,7 @@ extern "C" {
#define MGMT_ERR_ENOMEM 2
#define MGMT_ERR_EINVAL 3
#define MGMT_ERR_ENOTSUP 8
#define MGMT_ERR_EBUSY 10
#define NMGR_OP_READ 0
#define NMGR_OP_WRITE 2