diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/targets/f6/ble_glue/ble_glue.c | 4 | ||||
-rw-r--r-- | firmware/targets/f6/furi_hal/furi_hal_power.c | 2 | ||||
-rw-r--r-- | firmware/targets/f7/ble_glue/ble_glue.c | 4 | ||||
-rw-r--r-- | firmware/targets/f7/furi_hal/furi_hal_power.c | 2 |
4 files changed, 10 insertions, 2 deletions
diff --git a/firmware/targets/f6/ble_glue/ble_glue.c b/firmware/targets/f6/ble_glue/ble_glue.c index c38c0731..6e55b368 100644 --- a/firmware/targets/f6/ble_glue/ble_glue.c +++ b/firmware/targets/f6/ble_glue/ble_glue.c @@ -116,6 +116,7 @@ void ble_glue_init() { bool ble_glue_wait_for_fus_start(WirelessFwInfo_t* info) { bool ret = false; + size_t countdown = 1000; while(countdown > 0) { if(ble_glue->status == BleGlueStatusFusStarted) { @@ -125,13 +126,14 @@ bool ble_glue_wait_for_fus_start(WirelessFwInfo_t* info) { countdown--; osDelay(1); } + if(ble_glue->status == BleGlueStatusFusStarted) { SHCI_GetWirelessFwInfo(info); } else { FURI_LOG_E(TAG, "Failed to start FUS"); ble_glue->status = BleGlueStatusBroken; } - furi_hal_power_insomnia_exit(); + return ret; } diff --git a/firmware/targets/f6/furi_hal/furi_hal_power.c b/firmware/targets/f6/furi_hal/furi_hal_power.c index 1dbdb3dd..a211b8c5 100644 --- a/firmware/targets/f6/furi_hal/furi_hal_power.c +++ b/firmware/targets/f6/furi_hal/furi_hal_power.c @@ -90,12 +90,14 @@ uint16_t furi_hal_power_insomnia_level() { void furi_hal_power_insomnia_enter() { vTaskSuspendAll(); + furi_assert(furi_hal_power.insomnia < UINT8_MAX); furi_hal_power.insomnia++; xTaskResumeAll(); } void furi_hal_power_insomnia_exit() { vTaskSuspendAll(); + furi_assert(furi_hal_power.insomnia > 0); furi_hal_power.insomnia--; xTaskResumeAll(); } diff --git a/firmware/targets/f7/ble_glue/ble_glue.c b/firmware/targets/f7/ble_glue/ble_glue.c index c38c0731..6e55b368 100644 --- a/firmware/targets/f7/ble_glue/ble_glue.c +++ b/firmware/targets/f7/ble_glue/ble_glue.c @@ -116,6 +116,7 @@ void ble_glue_init() { bool ble_glue_wait_for_fus_start(WirelessFwInfo_t* info) { bool ret = false; + size_t countdown = 1000; while(countdown > 0) { if(ble_glue->status == BleGlueStatusFusStarted) { @@ -125,13 +126,14 @@ bool ble_glue_wait_for_fus_start(WirelessFwInfo_t* info) { countdown--; osDelay(1); } + if(ble_glue->status == BleGlueStatusFusStarted) { SHCI_GetWirelessFwInfo(info); } else { FURI_LOG_E(TAG, "Failed to start FUS"); ble_glue->status = BleGlueStatusBroken; } - furi_hal_power_insomnia_exit(); + return ret; } diff --git a/firmware/targets/f7/furi_hal/furi_hal_power.c b/firmware/targets/f7/furi_hal/furi_hal_power.c index 1dbdb3dd..a211b8c5 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_power.c +++ b/firmware/targets/f7/furi_hal/furi_hal_power.c @@ -90,12 +90,14 @@ uint16_t furi_hal_power_insomnia_level() { void furi_hal_power_insomnia_enter() { vTaskSuspendAll(); + furi_assert(furi_hal_power.insomnia < UINT8_MAX); furi_hal_power.insomnia++; xTaskResumeAll(); } void furi_hal_power_insomnia_exit() { vTaskSuspendAll(); + furi_assert(furi_hal_power.insomnia > 0); furi_hal_power.insomnia--; xTaskResumeAll(); } |