From 40cbba1da1107d8adc320a130b661c28c8087f62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Mon, 16 Oct 2017 23:21:34 +0200 Subject: [PATCH] Make Wormhole.timeoutMs uint32_t instead of uint16_t. Respect Wormhole.timeoutMs and timeout accordingly. Force the minimum timeout to 1000 ms. --- src/bootloader/src/bl_main.c | 9 +++++++++ src/bootloader/wormhole.h | 2 +- targets/MK22F51212/src/bootloader_config.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/bootloader/src/bl_main.c b/src/bootloader/src/bl_main.c index d4b5c49..8034074 100644 --- a/src/bootloader/src/bl_main.c +++ b/src/bootloader/src/bl_main.c @@ -339,6 +339,15 @@ static peripheral_descriptor_t const *get_active_peripheral(void) { milliseconds = BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT; } + + if (IS_WORMHOLE_OPEN) { + milliseconds = Wormhole.timeoutMs; + } + + if (milliseconds < BL_MIN_PERIPHERAL_DETECT_TIMEOUT) { + milliseconds = BL_MIN_PERIPHERAL_DETECT_TIMEOUT; + } + timeoutTicks = milliseconds * ticksPerMillisecond; // save how many ticks we're currently at before the detection loop starts diff --git a/src/bootloader/wormhole.h b/src/bootloader/wormhole.h index c7e33aa..e50200c 100644 --- a/src/bootloader/wormhole.h +++ b/src/bootloader/wormhole.h @@ -22,7 +22,7 @@ typedef struct { uint64_t magicNumber; uint8_t enumerationMode; - uint16_t timeoutMs; + uint32_t timeoutMs; } wormhole_t; // Variables: diff --git a/targets/MK22F51212/src/bootloader_config.h b/targets/MK22F51212/src/bootloader_config.h index ec95200..f5363e7 100644 --- a/targets/MK22F51212/src/bootloader_config.h +++ b/targets/MK22F51212/src/bootloader_config.h @@ -84,6 +84,7 @@ #define BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT 0 #else #define BL_DEFAULT_PERIPHERAL_DETECT_TIMEOUT 5000 +#define BL_MIN_PERIPHERAL_DETECT_TIMEOUT 1000 #endif // DEBUG #define BL_FEATURE_POWERDOWN (0)