diff options
| author | mark9064 <30447455+mark9064@users.noreply.github.com> | 2024-08-22 21:24:04 +0100 |
|---|---|---|
| committer | NeroBurner <pyro4hell@gmail.com> | 2024-09-21 21:08:07 +0200 |
| commit | c3d05901a05a274f30c15b8c0640b6ecdd973ac3 (patch) | |
| tree | d63aaacce475f495670787f79019df8af6e2af7d /src/components/ble/DfuService.cpp | |
| parent | b3756e45fa50ce81255dc3bb21cbce4af3254f2f (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.cpp | 8 |
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(); |
