From 0979194da27a72e02ed273728b2b5365d889b96b Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Thu, 23 Dec 2021 07:22:06 +0100 Subject: [PATCH] dfu: force USB reset when download end in DFUIdle state --- src/dfu.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/dfu.cpp b/src/dfu.cpp index ccc28f0..61fe90a 100644 --- a/src/dfu.cpp +++ b/src/dfu.cpp @@ -442,11 +442,13 @@ int DFU::set_state(char newState) * an handle others states */ if (newState == STATE_appIDLE) { // reset + ret = libusb_reset_device(dev_handle); // reenum } else { // download or upload // are handled by download() and upload() return -2; } + return ret; break; case STATE_dfuDNLOAD_IDLE: if (newState == STATE_dfuMANIFEST_SYNC) { @@ -770,6 +772,9 @@ int DFU::download() } } while (must_continue); + if (status.bState == STATE_dfuIDLE) + set_state(STATE_appIDLE); + return ret_val; }