diff options
author | Nikolay Minaylov <nm29719@gmail.com> | 2022-02-10 16:01:49 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-10 16:01:49 +0300 |
commit | 2a52d2d6201e46cceaa9f610792be20bbec9bb09 (patch) | |
tree | c06bf012a1046cbe5808218da95e61a6702200d2 /firmware | |
parent | df2d1ad13f505332661b0bcc7605744a6a55b7cb (diff) |
[FL-2216, FL-2233] Archive fixes (#987)
* archive: badusb, u2f and various fixes
* archive: delete confirmation
* badusb: removed empty string check
* string pointer check
* FuriHal: insomnia overflow assert, fix double insomnia exit in ble. BadUsb: fix uncommitted model.
* view update fixes in gpio, badusb, u2f
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
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(); } |