diff --git a/src/command/handlers/cmd_device.c b/src/command/handlers/cmd_device.c index 646d680..731959f 100644 --- a/src/command/handlers/cmd_device.c +++ b/src/command/handlers/cmd_device.c @@ -4,6 +4,7 @@ ******************************************************************************/ #include #include +#include #if IS_ENABLED(CONFIG_BT_SMP) #include #include @@ -65,38 +66,15 @@ int cmd_msr(const uint8_t *data, uint8_t data_len) ARG_UNUSED(data); ARG_UNUSED(data_len); -#if IS_ENABLED(CONFIG_BT_SMP) - int err = bt_unpair(BT_ID_DEFAULT, NULL); - if (err) + int nvs_err = app_nvs_save_production_done(1U); + if (nvs_err) { - status = (uint16_t)(-err); - DBG_ERR("[CMD] msr bt_unpair failed err=%d\r\n", err); + status = (uint16_t)(-nvs_err); + DBG_ERR("[CMD] msr production_done save failed err=%d\r\n", nvs_err); } else { - led_set_state(LED_STATE_BOND_DELETE); - bond_data_delete = true; - ble_pairing_window_mark_reset_open(); - DBG_PRINTF("[CMD] msr bond data deleted\r\n"); - } -#else - bond_data_delete = true; - ble_pairing_window_mark_reset_open(); - DBG_PRINTF("[CMD] msr bond delete skipped (BT_SMP disabled)\r\n"); -#endif - - if (status == 0x0000) - { - int nvs_err = app_nvs_save_production_done(1U); - if (nvs_err) - { - status = (uint16_t)(-nvs_err); - DBG_ERR("[CMD] msr production_done save failed err=%d\r\n", nvs_err); - } - else - { - m_production_done = 1U; - } + m_production_done = 1U; } int tx_err = cmd_send_response_u16("rsr:", status); @@ -108,7 +86,29 @@ int cmd_msr(const uint8_t *data, uint8_t data_len) if (status == 0x0000) { + led_set_state(LED_STATE_BOND_DELETE); + k_msleep(2000); + + bond_data_delete = true; + ble_pairing_window_mark_reset_open(); + ble_advertising_restart_suspend(true); + +#if IS_ENABLED(CONFIG_BT_SMP) + int err = bt_unpair(BT_ID_DEFAULT, NULL); + if (err) + { + DBG_ERR("[CMD] msr bt_unpair failed err=%d\r\n", err); + } + else + { + DBG_PRINTF("[CMD] msr bond data deleted\r\n"); + } +#else + DBG_PRINTF("[CMD] msr bond delete skipped (BT_SMP disabled)\r\n"); +#endif + DBG_PRINTF("[CMD] msr complete -> production done, reboot\r\n"); + sys_reboot(SYS_REBOOT_COLD); } cmd_reboot_after_response();