aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/ble/DfuService.cpp
diff options
context:
space:
mode:
authormark9064 <30447455+mark9064@users.noreply.github.com>2024-08-22 21:24:04 +0100
committerNeroBurner <pyro4hell@gmail.com>2024-09-21 21:08:07 +0200
commitc3d05901a05a274f30c15b8c0640b6ecdd973ac3 (patch)
treed63aaacce475f495670787f79019df8af6e2af7d /src/components/ble/DfuService.cpp
parentb3756e45fa50ce81255dc3bb21cbce4af3254f2f (diff)
Refactor SystemTask state handling for resilience
State transitions now happen immediately where possible This simplifies state management in general, and prevents bugs such as the chime issue from occurring in the first place
Diffstat (limited to 'src/components/ble/DfuService.cpp')
-rw-r--r--src/components/ble/DfuService.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/components/ble/DfuService.cpp b/src/components/ble/DfuService.cpp
index b3f2ff10..2427513d 100644
--- a/src/components/ble/DfuService.cpp
+++ b/src/components/ble/DfuService.cpp
@@ -124,9 +124,11 @@ int DfuService::WritePacketHandler(uint16_t connectionHandle, os_mbuf* om) {
bootloaderSize,
applicationSize);
- // wait until SystemTask has finished waking up all devices
- while (systemTask.IsSleeping()) {
- vTaskDelay(50); // 50ms
+ // Wait until SystemTask has disabled sleeping
+ // This isn't quite correct, as we don't actually know
+ // if BleFirmwareUpdateStarted has been received yet
+ while (!systemTask.IsSleepDisabled()) {
+ vTaskDelay(pdMS_TO_TICKS(5));
}
dfuImage.Erase();