From 6e2bcd9d003b69b88d0bdac496f46204734524b6 Mon Sep 17 00:00:00 2001 From: SkorP Date: Thu, 17 Aug 2023 13:41:15 +0400 Subject: [PATCH 1/8] {FL-3520] SubGhz: Handle RX buffer overflow with external cc1101 --- applications/drivers/subghz/cc1101_ext/cc1101_ext.c | 3 +-- firmware/targets/f7/furi_hal/furi_hal_subghz.c | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c index db7dcb3ff..0c5346749 100644 --- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c +++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c @@ -357,8 +357,7 @@ bool subghz_device_cc1101_ext_rx_pipe_not_empty() { (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(subghz_device_cc1101_ext->spi_bus_handle); - // TODO: you can add a buffer overflow flag if needed - if(status->NUM_RXBYTES > 0) { + if((status->NUM_RXBYTES > 0) && (status->RXFIFO_OVERFLOW == 0)) { return true; } else { return false; diff --git a/firmware/targets/f7/furi_hal/furi_hal_subghz.c b/firmware/targets/f7/furi_hal/furi_hal_subghz.c index f5e244916..be0e8cdd8 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_subghz.c +++ b/firmware/targets/f7/furi_hal/furi_hal_subghz.c @@ -234,7 +234,7 @@ bool furi_hal_subghz_rx_pipe_not_empty() { cc1101_read_reg( &furi_hal_spi_bus_handle_subghz, (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); - if(status->NUM_RXBYTES > 0 && (status->RXFIFO_OVERFLOW == 0)) { + if((status->NUM_RXBYTES > 0) && (status->RXFIFO_OVERFLOW == 0)) { return true; } else { return false; From 3507c89dbbedacd8be20aa803ace8824dbd08b0c Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Thu, 17 Aug 2023 16:02:32 +0300 Subject: [PATCH 2/8] fix faac add manually cnt --- .../main/subghz/helpers/subghz_txrx_create_protocol_key.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c index 4854bc882..0a9d12909 100644 --- a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c +++ b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.c @@ -199,7 +199,7 @@ bool subghz_txrx_gen_faac_slh_protocol( uint32_t frequency, uint32_t serial, uint8_t btn, - uint16_t cnt, + uint32_t cnt, uint32_t seed, const char* manufacture_name) { SubGhzTxRx* txrx = context; From e1c83692c3e9b78777ce28d062770022e9403ae4 Mon Sep 17 00:00:00 2001 From: SkorP Date: Thu, 17 Aug 2023 16:48:37 +0400 Subject: [PATCH 3/8] [FL-3552] Sub-GHz: Check saved file --- applications/main/subghz/subghz_i.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/applications/main/subghz/subghz_i.c b/applications/main/subghz/subghz_i.c index a6cfe9025..0dbeaa10d 100644 --- a/applications/main/subghz/subghz_i.c +++ b/applications/main/subghz/subghz_i.c @@ -309,10 +309,14 @@ bool subghz_save_protocol_to_file( if(!storage_simply_remove(storage, dev_file_name)) { break; } - //ToDo check Write + stream_seek(flipper_format_stream, 0, StreamOffsetFromStart); stream_save_to_file(flipper_format_stream, storage, dev_file_name, FSOM_CREATE_ALWAYS); + if(storage_common_stat(storage, dev_file_name, NULL) != FSE_OK) { + break; + } + saved = true; } while(0); furi_string_free(file_dir); From 3584e0da461fa01788c4eaf3bbcc775915f1ff97 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Thu, 17 Aug 2023 17:33:21 +0300 Subject: [PATCH 4/8] Fix FAAC counter fix seed being not removed from RAM --- .../main/subghz/helpers/subghz_txrx_create_protocol_key.h | 2 +- applications/main/subghz/scenes/subghz_scene_set_seed.c | 5 +++++ lib/subghz/protocols/faac_slh.c | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.h b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.h index dc7dfbe7e..e0ebec685 100644 --- a/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.h +++ b/applications/main/subghz/helpers/subghz_txrx_create_protocol_key.h @@ -88,7 +88,7 @@ bool subghz_txrx_gen_faac_slh_protocol( uint32_t frequency, uint32_t serial, uint8_t btn, - uint16_t cnt, + uint32_t cnt, uint32_t seed, const char* manufacture_name); diff --git a/applications/main/subghz/scenes/subghz_scene_set_seed.c b/applications/main/subghz/scenes/subghz_scene_set_seed.c index e6850d1e3..ee0298b07 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_seed.c +++ b/applications/main/subghz/scenes/subghz_scene_set_seed.c @@ -110,6 +110,11 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) { if(generated_protocol) { subghz_file_name_clear(subghz); + // Reset Seed, Fix, Cnt in secure data on generated_protocol true + memset(subghz->secure_data->seed, 0, sizeof(subghz->secure_data->seed)); + memset(subghz->secure_data->cnt, 0, sizeof(subghz->secure_data->cnt)); + memset(subghz->secure_data->fix, 0, sizeof(subghz->secure_data->fix)); + scene_manager_set_scene_state( subghz->scene_manager, SubGhzSceneSetType, SubGhzCustomEventManagerSet); scene_manager_next_scene(subghz->scene_manager, SubGhzSceneSaveName); diff --git a/lib/subghz/protocols/faac_slh.c b/lib/subghz/protocols/faac_slh.c index 62e8c37d2..3ae6c8e23 100644 --- a/lib/subghz/protocols/faac_slh.c +++ b/lib/subghz/protocols/faac_slh.c @@ -112,6 +112,9 @@ void subghz_protocol_encoder_faac_slh_free(void* context) { static bool subghz_protocol_faac_slh_gen_data(SubGhzProtocolEncoderFaacSLH* instance) { if(instance->generic.seed != 0x0) { instance->generic.cnt += furi_hal_subghz_get_rolling_counter_mult(); + } else { + // Do not generate new data, send data from buffer + return true; } uint32_t fix = instance->generic.serial << 4 | instance->generic.btn; uint32_t hop = 0; @@ -434,6 +437,9 @@ SubGhzProtocolStatus subghz_protocol_decoder_faac_slh_serialize( furi_assert(context); SubGhzProtocolDecoderFaacSLH* instance = context; + // Reset seed leftover from previous decoded signal + instance->generic.seed = 0x0; + SubGhzProtocolStatus res = subghz_block_generic_serialize(&instance->generic, flipper_format, preset); From 7a80aaa5c8c004c081b7eddba4aa2b0c14de23fc Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Thu, 17 Aug 2023 19:04:09 +0300 Subject: [PATCH 5/8] readme fixes part 1 thanks @gid9798 --- ReadMe.md | 114 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 65 insertions(+), 49 deletions(-) diff --git a/ReadMe.md b/ReadMe.md index 07ef5632b..060adc9fc 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -32,43 +32,57 @@ Our Discord Community: - https://t.me/unleashed_fw # What's changed -* Sub-GHz regional TX restrictions removed -* Sub-GHz frequency range can be extended in settings file (Warning: It can damage Flipper's hardware) -* Many rolling code protocols now have the ability to save & send captured signals -* FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation -* Sub-GHz static code brute-force plugin -* LFRFID Fuzzer plugin -* Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release -* Extra Sub-GHz frequencies + extra Mifare Classic keys -* Picopass/iClass plugin included in releases -* Recompiled IR TV Universal Remote for ALL buttons -* Universal remote for Projectors, Fans, A/Cs and Audio(soundbars, etc.) -* Customizable Flipper name **Update! Now can be changed in Settings->Desktop** (by @xMasterX and @Willy-JL) -* Text Input UI element -> Cursor feature (by @Willy-JL) -- **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb) - (See in Applications->Tools) - (aka BadUSB via Bluetooth) -- BadUSB -> Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout) -- Sub-GHz -> External CC1101 module support - [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307) -- Sub-GHz -> `Add manually` menu extended with new protocols -- Sub-GHz -> New frequency analyzer - [(by ClusterM)](https://github.com/DarkFlippers/unleashed-firmware/pull/43) -- Sub-GHz -> Save last used frequency [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77) -- Sub-GHz -> Press OK in frequency analyzer to use detected frequency in Read modes [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77) -- Sub-GHz -> Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/79) -- Lock device with pin(or regular lock if pin not set) by holding UP button on main screen [(by an4tur0r)](https://github.com/DarkFlippers/unleashed-firmware/pull/107) -* Sub-GHz -> Short press OK in frequency analyzer to save detected frequency for usage in Read modes -* Sub-GHz -> Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu and automatically use selected frequency -* SubGHz -> New option to use timestamps + protocol name when you saving file, instead of random name - Enable in `Radio Settings -> Time in names = ON` -* SubGHz Bruteforcer plugin -> Time delay (between signals) setting (hold Up in main screen(says Up to Save)) + configure repeats in protocols list by pressing right button on selected protocol -* SubGHz -> Read mode UI improvements (scrolling text, + shows time when signal was received) (by @wosk) -* Sub-GHz -> External CC1101 module support (Hardware SPI used) -* SubGHz -> **Hold right in received signal list to delete selected signal** -* SubGHz -> **Custom buttons for Keeloq / Alutech AT4N / Nice Flor S / Somfy Telis / Security+ 2.0 / CAME Atomo** - now you can use arrow buttons to send signal with different button code -* SubGHz -> BFT Mitto / Somfy Telis / Nice Flor S / CAME Atomo, etc.. manual creation with programming new remote into receiver (use button 0xF for BFT Mitto, 0x8 (Prog) on Somfy Telis) -* SubGHz -> Debug mode counter increase settings (+1 -> +5, +10, default: +1) -* SubGHz -> Debug PIN output settings for protocol development -* Infrared -> `RCA` Protocol -* Infrared -> Debug TX PIN output settings -* Other small fixes and changes throughout -* See other changes in readme below +- **Sub-GHz** *lib & hal* + - regional TX restrictions removed + - Extra Sub-GHz frequencies + - frequency range can be extended in settings file (Warning: It can damage Flipper's hardware) + - Many rolling code [protocols](https://github.com/DarkFlippers/unleashed-firmware#current-modified-and-new-sub-ghz-protocols-list) now have the ability to save & send captured signals + - FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation + - External CC1101 module support [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307) +- **Sub-GHz** *Main App* + - Save last used frequency [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77) + - New frequency analyzer [(by ClusterM)](https://github.com/DarkFlippers/unleashed-firmware/pull/43) + - Press OK in frequency analyzer to use detected frequency in Read modes [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77) + - Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/79) + - New option to use timestamps + protocol name when you saving file, instead of random name - Enable in `Radio Settings -> Time in names = ON` + - Read mode UI improvements (scrolling text, + shows time when signal was received) (by @wosk) + - External CC1101 module support (Hardware SPI used) + - **Hold right in received signal list to delete selected signal** + - **Custom buttons for Keeloq / Alutech AT4N / Nice Flor S / Somfy Telis / Security+ 2.0 / CAME Atomo** - now you can use arrow buttons to send signal with different button code + - `Add manually` menu extended with new protocols + - BFT Mitto / Somfy Telis / Nice Flor S / CAME Atomo, etc.. manual creation with programming new remote into receiver (use button 0xF for BFT Mitto, 0x8 (Prog) on Somfy Telis) + - Debug mode counter increase settings (+1 -> +5, +10, default: +1) + - Debug PIN output settings for protocol development + +- **Sub-GHz apps** *by unleashed team* + - Sub-GHz Bruteforce - static code brute-force plugin | + - Time delay (between signals) setting (hold Up in main screen(says Up to Save)) + configure repeats in protocols list by pressing right button on selected protocol + - Load your own file and select bytes you want to bruteforce or use preconfigured options in protocols list + - Sub-GHz Remote - remote control for 5 sub-ghz files | bind one file for each button + - use the built-in constructor or make config file by following this [instruction](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemotePlugin.md) +- **Infrared** + - Recompiled IR TV Universal Remote for ALL buttons + - Universal remotes for Projectors, Fans, A/Cs and Audio(soundbars, etc.) -> Also always updated and verified by our team + - Infrared -> `RCA` Protocol + - Infrared -> Debug TX PIN output settings +- **NFC/RFID/iButton** + * LFRFID/iButton Fuzzer plugins + * Extra Mifare Classic keys + * `Add manually` -> Mifare Classic with custom UID + * Picopass/iClass plugin (now with emulation support!) included in releases +- **Quality of life & other features** + - Customizable Flipper name **Update! Now can be changed in Settings->Desktop** (by @xMasterX and @Willy-JL) + - Text Input UI element -> Cursor feature (by @Willy-JL) + - Byte Input Mini editor -> **Press UP** multiple times until the nibble editor appears + - Clock on Desktop -> `Settings -> Desktop -> Show Clock` + - Battery percentage display with different styles `Settings -> Desktop -> Battery View` + - More games in Dummy Mode -> click or hold any of arrow buttons + - Lock device with pin(or regular lock if pin not set) by holding UP button on main screen [(by an4tur0r)](https://github.com/DarkFlippers/unleashed-firmware/pull/107) + - **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/tree/dev/applications/main/bad_kb) - (See in Applications->Tools) - (aka BadUSB via Bluetooth) + - BadUSB -> Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout) + - Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release + - Other small fixes and changes throughout + - See other changes in readme below Also check the changelog in releases for latest updates! @@ -124,17 +138,19 @@ Our team is small and the guys are working on this project as much as they can s The amount of work done on this project is huge and we need your support, no matter how large or small. Even if you just say, "Thank you Unleashed firmware developers!" somewhere. Doing so will help us continue our work and will help drive us to make the firmware better every time. Also, regarding our releases, every build has and always will be free and open-source. There will be no paywall releases or closed-source apps within the firmware. As long as I am working on this project it will never happen. You can support us by using links or addresses below: -* **Boosty** (patreon alternative): https://boosty.to/mmxdev -* cloudtips (only RU payments accepted): https://pay.cloudtips.ru/p/7b3e9d65 -* YooMoney (only RU payments accepted): https://yoomoney.ru/fundraise/XA49mgQLPA0.221209 -* USDT(TRC20): `TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs` -* BCH: `qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3` -* ETH/BSC/ERC20-Tokens: `darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`) -* BTC: `bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9` -* DOGE: `D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv` -* LTC: `ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9` -* XMR (Monero): `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn` -* TON: `EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf` +|Service|Remark|Link/Wallet| +|-|-|-| +|**Boosty**|patreon alternative|https://boosty.to/mmxdev| +|cloudtips|only RU payments accepted|https://pay.cloudtips.ru/p/7b3e9d65| +|YooMoney|only RU payments accepted|https://yoomoney.ru/fundraise/XA49mgQLPA0.221209| +|USDT|(TRC20)|`TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`| +|BCH||`qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`| +|ETH|(BSC/ERC20-Tokens)|`darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`)| +|BTC||`bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`| +|DOGE||`D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`| +|LTC||`ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`| +|XMR|(Monero)| `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`| +|TON||`EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf`| ### Community apps included: @@ -224,7 +240,7 @@ You can support us by using links or addresses below: * CLion IDE - How to setup workspace for flipper firmware development: [https://krasovs.ky/2022/11/01/flipper-zero-clion.html](https://krasovs.ky/2022/11/01/flipper-zero-clion.html) * Docs by atmanos / How to write your own app (outdated API): [https://flipper.atmanos.com/docs/overview/intro](https://flipper.atmanos.com/docs/overview/intro) -* Official Docs: [http://docs.flipperzero.one](http://docs.flipperzero.one) +* Official Docs: [docs.flipper.net](https://docs.flipper.net/) * Official Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) # Project structure From 03d3482357f4b89956a5b8c9760d72b5d9d8fb19 Mon Sep 17 00:00:00 2001 From: SkorP Date: Fri, 18 Aug 2023 13:00:42 +0400 Subject: [PATCH 6/8] SubGhz: fix RXFIFO_OVERFLOW --- applications/drivers/subghz/cc1101_ext/cc1101_ext.c | 2 +- firmware/targets/f7/furi_hal/furi_hal_subghz.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c index 0c5346749..a29c8e3de 100644 --- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c +++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c @@ -357,7 +357,7 @@ bool subghz_device_cc1101_ext_rx_pipe_not_empty() { (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(subghz_device_cc1101_ext->spi_bus_handle); - if((status->NUM_RXBYTES > 0) && (status->RXFIFO_OVERFLOW == 0)) { + if((status->NUM_RXBYTES > 0) || (status->RXFIFO_OVERFLOW == 0)) { return true; } else { return false; diff --git a/firmware/targets/f7/furi_hal/furi_hal_subghz.c b/firmware/targets/f7/furi_hal/furi_hal_subghz.c index be0e8cdd8..94965694e 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_subghz.c +++ b/firmware/targets/f7/furi_hal/furi_hal_subghz.c @@ -234,7 +234,7 @@ bool furi_hal_subghz_rx_pipe_not_empty() { cc1101_read_reg( &furi_hal_spi_bus_handle_subghz, (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); - if((status->NUM_RXBYTES > 0) && (status->RXFIFO_OVERFLOW == 0)) { + if((status->NUM_RXBYTES > 0) || (status->RXFIFO_OVERFLOW == 0)) { return true; } else { return false; From 5924c3dd2cef8d481632c19f138f86ccd6575db4 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 18 Aug 2023 21:04:59 +0300 Subject: [PATCH 7/8] disable 0 seed in add manually --- .../subghz/scenes/subghz_scene_set_seed.c | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/applications/main/subghz/scenes/subghz_scene_set_seed.c b/applications/main/subghz/scenes/subghz_scene_set_seed.c index ee0298b07..e5778b84f 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_seed.c +++ b/applications/main/subghz/scenes/subghz_scene_set_seed.c @@ -45,6 +45,13 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) { seed = subghz->secure_data->seed[0] << 24 | subghz->secure_data->seed[1] << 16 | subghz->secure_data->seed[2] << 8 | subghz->secure_data->seed[3]; + if(seed == 0) { + furi_string_set(subghz->error_str, "Seed value\ncan not be 0."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + consumed = true; + break; + } + generated_protocol = subghz_txrx_gen_keeloq_bft_protocol( subghz->txrx, "AM650", @@ -73,6 +80,12 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) { seed = subghz->secure_data->seed[0] << 24 | subghz->secure_data->seed[1] << 16 | subghz->secure_data->seed[2] << 8 | subghz->secure_data->seed[3]; + if(seed == 0) { + furi_string_set(subghz->error_str, "Seed value\ncan not be 0."); + scene_manager_next_scene(subghz->scene_manager, SubGhzSceneShowError); + consumed = true; + break; + } if(state == SubmenuIndexFaacSLH_433) { generated_protocol = subghz_txrx_gen_faac_slh_protocol( subghz->txrx, @@ -108,12 +121,13 @@ bool subghz_scene_set_seed_on_event(void* context, SceneManagerEvent event) { } } + // Reset Seed, Fix, Cnt in secure data after successful or unsuccessful generation + memset(subghz->secure_data->seed, 0, sizeof(subghz->secure_data->seed)); + memset(subghz->secure_data->cnt, 0, sizeof(subghz->secure_data->cnt)); + memset(subghz->secure_data->fix, 0, sizeof(subghz->secure_data->fix)); + if(generated_protocol) { subghz_file_name_clear(subghz); - // Reset Seed, Fix, Cnt in secure data on generated_protocol true - memset(subghz->secure_data->seed, 0, sizeof(subghz->secure_data->seed)); - memset(subghz->secure_data->cnt, 0, sizeof(subghz->secure_data->cnt)); - memset(subghz->secure_data->fix, 0, sizeof(subghz->secure_data->fix)); scene_manager_set_scene_state( subghz->scene_manager, SubGhzSceneSetType, SubGhzCustomEventManagerSet); From 26e5ae7476845b7027041ce7e74d9c1fd48f5fbc Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 18 Aug 2023 23:50:38 +0300 Subject: [PATCH 8/8] RXFIFO_OVERFLOW still breaks esubghz_chat --- applications/drivers/subghz/cc1101_ext/cc1101_ext.c | 3 ++- firmware/targets/f7/furi_hal/furi_hal_subghz.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c index a29c8e3de..e055e1e51 100644 --- a/applications/drivers/subghz/cc1101_ext/cc1101_ext.c +++ b/applications/drivers/subghz/cc1101_ext/cc1101_ext.c @@ -357,7 +357,8 @@ bool subghz_device_cc1101_ext_rx_pipe_not_empty() { (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(subghz_device_cc1101_ext->spi_bus_handle); - if((status->NUM_RXBYTES > 0) || (status->RXFIFO_OVERFLOW == 0)) { + // TODO: Find reason why RXFIFO_OVERFLOW doesnt work correctly + if(status->NUM_RXBYTES > 0) { return true; } else { return false; diff --git a/firmware/targets/f7/furi_hal/furi_hal_subghz.c b/firmware/targets/f7/furi_hal/furi_hal_subghz.c index 94965694e..1ea5334ee 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_subghz.c +++ b/firmware/targets/f7/furi_hal/furi_hal_subghz.c @@ -234,7 +234,8 @@ bool furi_hal_subghz_rx_pipe_not_empty() { cc1101_read_reg( &furi_hal_spi_bus_handle_subghz, (CC1101_STATUS_RXBYTES) | CC1101_BURST, (uint8_t*)status); furi_hal_spi_release(&furi_hal_spi_bus_handle_subghz); - if((status->NUM_RXBYTES > 0) || (status->RXFIFO_OVERFLOW == 0)) { + // TODO: Find reason why RXFIFO_OVERFLOW doesnt work correctly + if(status->NUM_RXBYTES > 0) { return true; } else { return false;