From 1a885c76b85d7d40955bc8e88a522a3dd0eb3183 Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Thu, 23 Apr 2026 19:46:28 +0800 Subject: fix(class/dfu): only reset device when dfu-util with -e or leave cmd Signed-off-by: sakumisu <1203593632@qq.com> --- class/dfu/usbd_dfu.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/class/dfu/usbd_dfu.c b/class/dfu/usbd_dfu.c index 6d21d0d2..4c3e432c 100644 --- a/class/dfu/usbd_dfu.c +++ b/class/dfu/usbd_dfu.c @@ -259,7 +259,30 @@ static int dfu_class_interface_request_handler(uint8_t busid, struct usb_setup_p (*data)[5] = 0; /* iString */ *len = 6; + break; + case DFU_REQUEST_GETSTATE: + (*data)[0] = g_usbd_dfu.dfu_state; + *len = 1; + break; + + default: + return -1; + } + break; + case DFU_STATE_DFU_MANIFEST_WAIT_RESET: + switch (setup->bRequest) { + case DFU_REQUEST_GETSTATUS: + + (*data)[0] = DFU_STATUS_OK; /* bStatus */ + (*data)[1] = 0; + (*data)[2] = 0; + (*data)[3] = 0; + (*data)[4] = g_usbd_dfu.dfu_state; + (*data)[5] = 0; /* iString */ + *len = 6; + usbd_dfu_reset(); + break; case DFU_REQUEST_GETSTATE: (*data)[0] = g_usbd_dfu.dfu_state; -- cgit v1.3.1