From ac4f66e5d17aad493430e88486d5474d481ed508 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 3 Mar 2017 01:13:34 +0100 Subject: [PATCH] DFU: Set 10ms bwPollTimeout (lowest possible as per spec) --- firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c | 3 ++- firmware/atmel_softpack_libraries/usb/device/dfu/dfu_runtime.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c index 16e07d3a..f9e2d8eb 100644 --- a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c +++ b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_driver.c @@ -64,6 +64,7 @@ static __dfufunc void handle_getstatus(void) { /* has to be static as USBD_Write is async ? */ static struct dfu_status dstat; + static const uint8_t poll_timeout_10ms[] = { 10, 0, 0 }; dfu_drv_updstatus(); @@ -71,7 +72,7 @@ static __dfufunc void handle_getstatus(void) dstat.bStatus = g_dfu->status; dstat.bState = g_dfu->state; dstat.iString = 0; - /* FIXME: set dstat.bwPollTimeout */ + memcpy(&dstat.bwPollTimeout, poll_timeout_10ms, sizeof(dstat.bwPollTimeout)); TRACE_DEBUG("handle_getstatus(%u, %u)\n\r", dstat.bStatus, dstat.bState); diff --git a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_runtime.c b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_runtime.c index baae3c44..537605c8 100644 --- a/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_runtime.c +++ b/firmware/atmel_softpack_libraries/usb/device/dfu/dfu_runtime.c @@ -45,12 +45,13 @@ static __dfufunc void handle_getstatus(void) { /* has to be static as USBD_Write is async ? */ static struct dfu_status dstat; + static const uint8_t poll_timeout_10ms[] = { 10, 0, 0 }; /* send status response */ dstat.bStatus = g_dfu->status; dstat.bState = g_dfu->state; dstat.iString = 0; - /* FIXME: set dstat.bwPollTimeout */ + memcpy(&dstat.bwPollTimeout, poll_timeout_10ms, sizeof(dstat.bwPollTimeout)); TRACE_DEBUG("handle_getstatus(%u, %u)\n\r", dstat.bStatus, dstat.bState);