From a708164dac2870eb81848faa5f09f3fbf526bbba Mon Sep 17 00:00:00 2001 From: jbohack Date: Sat, 11 Feb 2023 01:02:37 -0500 Subject: [PATCH 1/9] added pager to subghz frequency analyzer in subghz settings subghz frequency changes are hardcoded in the firmware for app loading times so this is needed --- applications/main/subghz/views/subghz_frequency_analyzer.c | 4 ++-- lib/subghz/subghz_setting.c | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/applications/main/subghz/views/subghz_frequency_analyzer.c b/applications/main/subghz/views/subghz_frequency_analyzer.c index 9fa304e90..24f24c39d 100644 --- a/applications/main/subghz/views/subghz_frequency_analyzer.c +++ b/applications/main/subghz/views/subghz_frequency_analyzer.c @@ -25,7 +25,7 @@ static const uint32_t subghz_frequency_list[] = { 310000000, 312000000, 312100000, 313000000, 313850000, 314000000, 314350000, 314980000, 315000000, 318000000, 330000000, 345000000, 348000000, 350000000, 387000000, 390000000, 418000000, 433075000, 433220000, 433420000, 433657070, 433889000, 433920000, 434075000, - 434176948, 434390000, 434420000, 434775000, 438900000, 440175000, 464000000, 779000000, + 434176948, 434390000, 434420000, 434775000, 438900000, 440175000, 464000000, 467750000, 779000000, 868350000, 868400000, 868800000, 868950000, 906400000, 915000000, 925000000, 928000000}; typedef enum { @@ -645,4 +645,4 @@ SubGHzFrequencyAnalyzerFeedbackLevel subghz_frequency_analyzer_feedback_level( float subghz_frequency_analyzer_get_trigger_level(SubGhzFrequencyAnalyzer* instance) { furi_assert(instance); return subghz_frequency_analyzer_worker_get_trigger_level(instance->worker); -} \ No newline at end of file +} diff --git a/lib/subghz/subghz_setting.c b/lib/subghz/subghz_setting.c index 35ba54a8a..05b6a74ad 100644 --- a/lib/subghz/subghz_setting.c +++ b/lib/subghz/subghz_setting.c @@ -61,6 +61,7 @@ static const uint32_t subghz_frequency_list[] = { 438900000, 440175000, 464000000, + 467750000, /* 779 - 928 */ 779000000, From 2455cc0c7526b1a3db7f7b2aacffeba3c125dcdf Mon Sep 17 00:00:00 2001 From: jbohack Date: Sat, 11 Feb 2023 14:56:50 -0500 Subject: [PATCH 2/9] added pager modulation back modulation made by jimi --- applications/main/subghz/subghz.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/applications/main/subghz/subghz.c b/applications/main/subghz/subghz.c index 39e89e9e9..78295f08c 100644 --- a/applications/main/subghz/subghz.c +++ b/applications/main/subghz/subghz.c @@ -208,27 +208,38 @@ SubGhz* subghz_alloc(bool alloc_for_tx_only) { flipper_format_free(temp_fm_preset2); - // # HND - FM presets + // Pagers FlipperFormat* temp_fm_preset3 = flipper_format_string_alloc(); flipper_format_write_string_cstr( temp_fm_preset3, (const char*)"Custom_preset_data", - (const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 04 11 36 10 69 15 32 18 18 19 16 1D 91 1C 00 1B 07 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00"); + (const char*)"02 0D 07 04 08 32 0B 06 10 64 11 93 12 0C 13 02 14 00 15 15 18 18 19 16 1B 07 1C 00 1D 91 20 FB 21 56 22 10 00 00 C0 00 00 00 00 00 00 00"); flipper_format_rewind(temp_fm_preset3); - subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_1", temp_fm_preset3); + subghz_setting_load_custom_preset(subghz->setting, (const char*)"Pagers", temp_fm_preset3); flipper_format_free(temp_fm_preset3); + // # HND - FM presets FlipperFormat* temp_fm_preset4 = flipper_format_string_alloc(); flipper_format_write_string_cstr( temp_fm_preset4, (const char*)"Custom_preset_data", - (const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 07 11 36 10 E9 15 32 18 18 19 16 1D 92 1C 40 1B 03 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00"); + (const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 04 11 36 10 69 15 32 18 18 19 16 1D 91 1C 00 1B 07 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00"); flipper_format_rewind(temp_fm_preset4); - subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_2", temp_fm_preset4); + subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_1", temp_fm_preset4); flipper_format_free(temp_fm_preset4); + FlipperFormat* temp_fm_preset5 = flipper_format_string_alloc(); + flipper_format_write_string_cstr( + temp_fm_preset5, + (const char*)"Custom_preset_data", + (const char*)"02 0D 0B 06 08 32 07 04 14 00 13 02 12 07 11 36 10 E9 15 32 18 18 19 16 1D 92 1C 40 1B 03 20 FB 22 10 21 56 00 00 C0 00 00 00 00 00 00 00"); + flipper_format_rewind(temp_fm_preset5); + subghz_setting_load_custom_preset(subghz->setting, (const char*)"HND_2", temp_fm_preset5); + + flipper_format_free(temp_fm_preset5); + // custom presets loading - end // Load last used values for Read, Read RAW, etc. or default From becc3982688ecff6986397d2ec15527d8755ddb2 Mon Sep 17 00:00:00 2001 From: jbohack Date: Sat, 11 Feb 2023 14:59:33 -0500 Subject: [PATCH 3/9] removed pager bruteforce playlist until we can support the custom modulation for the playlist --- assets/resources/subghz/playlist/Pager_bruteforce_playlist.txt | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 assets/resources/subghz/playlist/Pager_bruteforce_playlist.txt diff --git a/assets/resources/subghz/playlist/Pager_bruteforce_playlist.txt b/assets/resources/subghz/playlist/Pager_bruteforce_playlist.txt deleted file mode 100644 index 5ea4e2df5..000000000 --- a/assets/resources/subghz/playlist/Pager_bruteforce_playlist.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Pager Bruteforce Playlist -sub: /ext/subghz/Misc/Pager_Bruteforce.sub From 9ed14fe7732d632c5d8e386c9bc91ceeed60327f Mon Sep 17 00:00:00 2001 From: Willy-JL Date: Sat, 11 Feb 2023 20:07:53 +0000 Subject: [PATCH 4/9] Remove unused imports and old code --- applications/main/archive/helpers/archive_files.h | 1 - applications/services/gui/modules/file_browser.c | 1 - applications/services/gui/modules/file_browser_worker.c | 6 +----- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/applications/main/archive/helpers/archive_files.h b/applications/main/archive/helpers/archive_files.h index 6eb3dda50..d84f7088a 100644 --- a/applications/main/archive/helpers/archive_files.h +++ b/applications/main/archive/helpers/archive_files.h @@ -3,7 +3,6 @@ #include #include #include -#include #include #include "toolbox/path.h" #include "xtreme/settings.h" diff --git a/applications/services/gui/modules/file_browser.c b/applications/services/gui/modules/file_browser.c index 0a08db7c3..175bab88d 100644 --- a/applications/services/gui/modules/file_browser.c +++ b/applications/services/gui/modules/file_browser.c @@ -11,7 +11,6 @@ #include #include #include -#include "m-string.h" #include "m-algo.h" #include #include "xtreme/settings.h" diff --git a/applications/services/gui/modules/file_browser_worker.c b/applications/services/gui/modules/file_browser_worker.c index 4453b6d9f..4b7be70a1 100644 --- a/applications/services/gui/modules/file_browser_worker.c +++ b/applications/services/gui/modules/file_browser_worker.c @@ -15,8 +15,6 @@ #define TAG "BrowserWorker" #define ASSETS_DIR "assets" -#define BADUSB_LAYOUTS_DIR "layouts" -#define SUBGHZ_TEMP_DIR "tmp_history" #define BROWSER_ROOT STORAGE_ANY_PATH_PREFIX #define FILE_NAME_LEN_MAX 256 #define LONG_LOAD_THRESHOLD 100 @@ -92,9 +90,7 @@ static bool browser_filter_by_name(BrowserWorker* browser, FuriString* name, boo if(is_folder) { // Skip assets folders (if enabled) if(browser->skip_assets) { - return ((furi_string_cmp_str(name, ASSETS_DIR) == 0) ? (false) : (true)) && - ((furi_string_cmp_str(name, BADUSB_LAYOUTS_DIR) == 0) ? (false) : (true)) && - ((furi_string_cmp_str(name, SUBGHZ_TEMP_DIR) == 0) ? (false) : (true)); + return ((furi_string_cmp_str(name, ASSETS_DIR) == 0) ? (false) : (true)); } else { return true; } From 409a79ddee69acdc4dca47f75df575a3f69a4133 Mon Sep 17 00:00:00 2001 From: VerstreuteSeele Date: Sat, 11 Feb 2023 23:27:21 +0100 Subject: [PATCH 5/9] Fix chat & subghz settings --- applications/main/subghz/subghz_cli.c | 8 ++- .../targets/f7/furi_hal/furi_hal_subghz.c | 64 ++++++++++++++++--- .../f7/furi_hal/furi_hal_subghz_configs.h | 10 +++ 3 files changed, 70 insertions(+), 12 deletions(-) diff --git a/applications/main/subghz/subghz_cli.c b/applications/main/subghz/subghz_cli.c index c047a32b3..be7143643 100644 --- a/applications/main/subghz/subghz_cli.c +++ b/applications/main/subghz/subghz_cli.c @@ -602,7 +602,8 @@ static void subghz_cli_command_encrypt_raw(Cli* cli, FuriString* args) { furi_string_free(source); } -static void subghz_cli_command_chat(Cli* cli, FuriString* args) { +static void subghz_cli_command_chat(Cli* cli, FuriString* args, void* context) { + UNUSED(context); uint32_t frequency = 433920000; if(furi_string_size(args)) { @@ -795,7 +796,7 @@ static void subghz_cli_command(Cli* cli, FuriString* args, void* context) { } if(furi_string_cmp_str(cmd, "chat") == 0) { - subghz_cli_command_chat(cli, args); + subghz_cli_command_chat(cli, args, NULL); break; } @@ -853,6 +854,9 @@ void subghz_on_system_start() { cli_add_command(cli, "subghz", CliCommandFlagDefault, subghz_cli_command, NULL); + // psst RM... i know you dont care much about errors, but if you ever see this... incompatible pointer type :3 + cli_add_command(cli, "chat", CliCommandFlagDefault, subghz_cli_command_chat, NULL); + furi_record_close(RECORD_CLI); #else UNUSED(subghz_cli_command); diff --git a/firmware/targets/f7/furi_hal/furi_hal_subghz.c b/firmware/targets/f7/furi_hal/furi_hal_subghz.c index c2c238a13..0fe5d1878 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_subghz.c +++ b/firmware/targets/f7/furi_hal/furi_hal_subghz.c @@ -1,6 +1,6 @@ #include #include - +#include #include #include #include @@ -390,7 +390,8 @@ uint8_t furi_hal_subghz_get_lqi() { /* Modified by @tkerby & MX to the full YARD Stick One extended range of 281-361 MHz, 378-481 MHz, and 749-962 MHz. - These changes are at your own risk. The PLL may not lock and FZ devs have warned of possible damage! + These changes are at your own risk. The PLL may not lock and FZ devs have warned of possible damage + Set flag use_ext_range_at_own_risk in extend_range.txt to use */ bool furi_hal_subghz_is_frequency_valid(uint32_t value) { @@ -420,29 +421,69 @@ uint32_t furi_hal_subghz_set_frequency_and_path(uint32_t value) { bool furi_hal_subghz_is_tx_allowed(uint32_t value) { bool is_extended = false; + bool is_allowed = false; // TODO: !!! Move file check to another place Storage* storage = furi_record_open(RECORD_STORAGE); FlipperFormat* fff_data_file = flipper_format_file_alloc(storage); - if(flipper_format_file_open_existing(fff_data_file, "/ext/subghz/assets/dangerous_settings")) { - flipper_format_read_bool( - fff_data_file, "yes_i_want_to_destroy_my_flipper", &is_extended, 1); + if(flipper_format_file_open_existing(fff_data_file, "/ext/subghz/assets/extend_range.txt")) { + flipper_format_read_bool(fff_data_file, "use_ext_range_at_own_risk", &is_extended, 1); + flipper_format_read_bool(fff_data_file, "ignore_default_tx_region", &is_allowed, 1); } flipper_format_free(fff_data_file); furi_record_close(RECORD_STORAGE); - if(!(value >= 299999755 && value <= 350000335) && + switch(furi_hal_version_get_hw_region()) { + case FuriHalVersionRegionEuRu: + //433,05..434,79; 868,15..868,55 + if(!(value >= 433050000 && value <= 434790000) && + !(value >= 868150000 && value <= 868550000)) { + } else { + is_allowed = true; + } + break; + case FuriHalVersionRegionUsCaAu: + //304,10..321,95; 433,05..434,79; 915,00..928,00 + if(!(value >= 304100000 && value <= 321950000) && + !(value >= 433050000 && value <= 434790000) && + !(value >= 915000000 && value <= 928000000)) { + } else { + if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug)) { + if(value <= 321950000 && + ((furi_hal_subghz.preset == FuriHalSubGhzPresetOok270Async) || + (furi_hal_subghz.preset == FuriHalSubGhzPresetOok650Async))) { + furi_hal_subghz_load_patable(furi_hal_subghz_preset_ook_async_patable_au); + } + } + is_allowed = true; + } + break; + case FuriHalVersionRegionJp: + //312,00..315,25; 920,50..923,50 + if(!(value >= 312000000 && value <= 315250000) && + !(value >= 920500000 && value <= 923500000)) { + } else { + is_allowed = true; + } + break; + + default: + is_allowed = true; + break; + } + // No flag - test original range, flag set, test extended range + if(!(value >= 299999755 && value <= 348000335) && !(value >= 386999938 && value <= 464000000) && !(value >= 778999847 && value <= 928000000) && !(is_extended)) { - FURI_LOG_I(TAG, "Frequency blocked - outside default range"); + FURI_LOG_I(TAG, "Frequency blocked - outside regional range"); return false; } else if( !(value >= 281000000 && value <= 361000000) && !(value >= 378000000 && value <= 481000000) && !(value >= 749000000 && value <= 962000000) && is_extended) { - FURI_LOG_I(TAG, "Frequency blocked - outside dangerous range"); + FURI_LOG_I(TAG, "Frequency blocked - outside extended range"); return false; } @@ -450,8 +491,11 @@ bool furi_hal_subghz_is_tx_allowed(uint32_t value) { } uint32_t furi_hal_subghz_set_frequency(uint32_t value) { - furi_hal_subghz.regulation = SubGhzRegulationTxRx; - + if(furi_hal_region_is_frequency_allowed(value)) { + furi_hal_subghz.regulation = SubGhzRegulationTxRx; + } else { + furi_hal_subghz.regulation = SubGhzRegulationTxRx; + } furi_hal_spi_acquire(furi_hal_subghz.spi_bus_handle); uint32_t real_frequency = cc1101_set_frequency(furi_hal_subghz.spi_bus_handle, value); cc1101_calibrate(furi_hal_subghz.spi_bus_handle); diff --git a/firmware/targets/f7/furi_hal/furi_hal_subghz_configs.h b/firmware/targets/f7/furi_hal/furi_hal_subghz_configs.h index b2b5760fd..5ea17b6dd 100644 --- a/firmware/targets/f7/furi_hal/furi_hal_subghz_configs.h +++ b/firmware/targets/f7/furi_hal/furi_hal_subghz_configs.h @@ -273,6 +273,16 @@ static const uint8_t furi_hal_subghz_preset_ook_async_patable[8] = { 0x00, 0x00}; +static const uint8_t furi_hal_subghz_preset_ook_async_patable_au[8] = { + 0x00, + 0x37, // 12dBm 0xC0, 10dBm 0xC5, 7dBm 0xCD, 5dBm 0x86, 0dBm 0x50, -6dBm 0x37, -10dBm 0x26, -15dBm 0x1D, -20dBm 0x17, -30dBm 0x03 + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00}; + static const uint8_t furi_hal_subghz_preset_2fsk_async_patable[8] = { 0xC0, // 10dBm 0xC0, 7dBm 0xC8, 5dBm 0x84, 0dBm 0x60, -10dBm 0x34, -15dBm 0x1D, -20dBm 0x0E, -30dBm 0x12 0x00, From f385a9b5314fb0099265d23fcebf7087d6d13b9e Mon Sep 17 00:00:00 2001 From: VerstreuteSeele Date: Sat, 11 Feb 2023 23:31:55 +0100 Subject: [PATCH 6/9] wording --- applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c index b645c0d64..8263d387c 100644 --- a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c +++ b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c @@ -228,7 +228,7 @@ void xtreme_app_scene_main_on_enter(void* context) { item = variable_item_list_add( var_item_list, - "Sort Dirs Before", + "Force Dirs first", 2, xtreme_app_scene_main_sort_folders_before_changed, app); From 28db43faba610efe84e54dbaeecf1ac927fa7493 Mon Sep 17 00:00:00 2001 From: VerstreuteSeele Date: Sat, 11 Feb 2023 23:34:53 +0100 Subject: [PATCH 7/9] fix dithering on u2f / usb --- .../custom/NSFW/Icons/U2F/Auth_62x31.png | Bin 1864 -> 1702 bytes .../NSFW/Icons/U2F/Connect_me_62x31.png | Bin 1895 -> 1690 bytes .../custom/NSFW/Icons/U2F/Connected_62x31.png | Bin 1874 -> 1701 bytes .../custom/NSFW/Icons/U2F/Error_62x31.png | Bin 1863 -> 1763 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/dolphin/custom/NSFW/Icons/U2F/Auth_62x31.png b/assets/dolphin/custom/NSFW/Icons/U2F/Auth_62x31.png index dd220bb65104666cb19752a96fe716cc44dffb68..255e391a47de398bedd198c7bbca1fa42f3cc832 100644 GIT binary patch delta 1664 zcmV-`27md;4yFx|Ie%D5L_t(|+P#=tNL5=DhId=dGB25Fq2?`7^PZOIG0Vg|6o|Ko zHU??>pea%aULr;5(Lf<6Uwp{7e9|72UL?*T!j}|L!B8u2TPv@rX`N38t`_Ps5A5Y+ zv-ezc%{A9Q#{9=W#@zbC!omv|F5J9%)55~S%gf8r(UHrOCx1`sbh<-ZP2HEK-)!o; zd|O*vo12@{F*7sE&CUI#anrwl|Ng{@6FogWKYsl9^y$;LZ{LQ8hrfLJB50JxRCWL7 zW@8S01^wdUqL{S4zTV&8uhY2cCnqQS`uYY32f0{XUB!TznHe!l4cgMuQh?IOwYIjl z_V)Jl*(>!-R(}vnMn*<7hYr@IrKOdX6*U1A4k(@A;9!W9l9ECvCMM?M#fv2+B>@2e zm;`!dCW}b_=dk-N|Wzt}th4Xo&rpo0~g)_*bpO%)EnwnZ&U5$}K{jXoYio%eXwS~?rVKCbb%fX5l^YZeVo12}T zodJPW5CBhO3CWAgr%#_k^vcT0=g*(#IA@DY(cZhBSAqy2?+_faJbAMBqOcB)HzCSheXmCZ zflj1S^dS))9Ub-c^`LKWZtd)1p)t;lH6n2Hpfd@*mQHn4pGaN2r1hzIycvvBN5+Qa0}A zHEnHeN+Q$N>%`yp@84ksoPpMqQ1}>oq~PWo-2V#-(B%|z5H$=~F)Bh)uiah)LnH` z6X;;&XL@=X9}}kNBjlzoP)PFf&2r$hb?3!P=Xj2!XFf!3N|}C8=>5`G*Tm{I5`a}|B#u`>v?~V{Q759r+m2F z?sXh2lmI;-5JwJgK%qlY#G@os_z%S{Fb(X)qYn1(uMH^90ZdVqw>rGiP)M*!~41;s?*ecO*jq0000< KMNUMnLSTZet28zM delta 1828 zcmV+<2iy3j4ag3VIe+>|L_t(|+P#=*OjK7C$A^(!zzvtkB8U|P5m2#EHX$rxV~wFM zq1uvwzz0xLYiR(98VG5>V5^Zt+YdIuCT*l?BmH3OhtkHSYT5#w04an;WK%(0P!#BI zIQn=#1fCBihBP}g$U3sq`mU}ngTc_y(7?^$;2;Lvx^-)0 zw5dVc*w_eA`hU3A$;oNXoH_K_EA>oP5KCHGTFed|tPdVMc=YIzng9w1l+LPEs~}Qh zVj`W0h=}0e;GCQsKR-WA0=+VmMWo->)|TIwXI|(%Jw1+&j^iI_2y^Gooh3__czb($ zd3nv8In&?!u5=O-F=7kPxMHU32c#aV}J3Hg!X9NHZBT$Q{9UUEz zhe5V0Iy#yTTY;xxKgKYDX_&-DnHM@(K_Gq-tc>742A3~izHs3}HH8R?&dyH!8Xq6e z$ga-!bAR=paErFgnl+06NJ&Y-Y+GAf#Oif~>Fn9Fd6{^fm=iPDjRgx9Jbd_2Ariji z5zN`KV~59gp2`xjv9U-Yh~W~ya&>jZU}TEEd7-1h0ODo14N8FZ$&)8I7+>DIcaOfz z!z5;+`gFp=!cM!Cf7G=vr+sh6zv&?%AEF zzqhwn6o$mC#!c8Omr2m;c_j>HyJ0z4Gcq!E_obg&`Ss$(ivfXE5CBhO3CWAwva&LW zUVl(faPs8I54uw})FgUUEcV*#27S5YD53$eA&W3($U|R2Pg(v1x z7>PwXa1@5%tqQL*1TMJ~9us_w$Hc_s<$vY*`1s&*7=j3nUn?mo34XHzg5&P)t~glj z^6Apu;$!1AA@rfqhF_sIw+RUeMMXthw{8V%WMm{%Arh!1vj(#F@86%9nF+_D{#ZYL zt$gc(FTKBt{WFd|#AeM?4Pp(2{*Tv%;^2cVXf}Do-`_tjE)E;QFGeJ{zXxGp0)OQS zvlFT}#Qhb2#O3qJ7ln0byau<1>(gp4^t~Pt1UivQ(T7BwJ9nI+%f|e!QHS6;WBf|R`uquc)_%| zdZ=hT^93_fzP^ z-@w2CtbjAnni2{hV~?@m&d=u)+-fK<16@ub8ig?}?x!^jSmhi7^jHEf=u_}1q>g~nxda@7_jnn^X5%_OqimNkej+dA<3DL3Ic$l;F#S}!`uI;e+*pZ;x_nO zV-de%#ft9k?#YzSVj7yL>1b0DU$7icgC0wu5IG2vFd~x}d8d9eG)PTNJPo7z}cXlhdH`57{KDGF@rEkfpoW zI(BiZ^*Rm~N`M{^h$DwLpwJ;H;!zT+a=4au#Htjfhf%nkNBmI!^y}&AF>TV(gsB!f z-jyEjhAPd?&FBmYgTQenqSgfvmh7tDIaXj*Rf+6yo&Y*QEFJ7}b92+Z#`YhSD+?h^ S+HHjZ0000)w diff --git a/assets/dolphin/custom/NSFW/Icons/U2F/Connect_me_62x31.png b/assets/dolphin/custom/NSFW/Icons/U2F/Connect_me_62x31.png index 495e8ab55c1e2dabb547151c2319f321f4af13bb..a8cfe1efbe26f5b48a039df8c6ed3280402ddc69 100644 GIT binary patch delta 1653 zcmV-*28#LT4w?;+IDZCANklIVQ3QuDF?>`|5YiVP^i7}C2cwtpMZ}ksP(iunlyjCtYW97t z*=L`9{%h_3`meRGac*wzjT<)}KYo1X%o$HlPdht1Zf$LCjem@c{@H8lzBJ?ArhdxR z%*^cc>C<#hojR47nfb4toAHMaA1+?JI5;@Cy}dm-Ir;VLSB*xqw6r8>l*Uwb|JQC~ z4t)jv+S;0!w6n7_JUncq=Vm-RJNxnD$I;PIZnn0zFko?UQOr_z!3qNLlVD{8|1s#}<8$fKCAB9Ai7#Ki;Me&0ct$cZGD=EH zxJ6qmEq^TufTvHNV)nUn=MXC$`Jk5FL&Ma{%8HMPeZ-uY!EV^w+yD6SL-7H=2$SpHq5!^+~W#+N%{rmTLLHAU8d<_E`_!9WY ze@F*nf*O(?p$aRZBGaXMQ76;`bE+}%x3RGSE8q;Yri8-B z*dqluS8)F?C_tA}h#`&|V3l(aC4V7_P>v3SFC%0q4-XG)lVjA;@h%-!qxkt-_-srM z|03GL4~00O>C+)tiAz*Mwh0Nx@ubp&gI_Vzqo!lbg=TXu&{uS2~+eD za#I&5Bx!GN2Np#^Lqh|nSoO=lRE=8^L|d-jZk-`CeSK0dCs5NUsCXz1$It5jXAW(cl_goMZ;2*;C^WCw^{g#${x z|KPy`Ds`feBWY!2Wqo~pZ*Q+mxOeX!nn-XL6ck_s9Ya8u0u`!&m@9}yC8 zsxXH}qRr0EmV||!h!PQu{SZvYW6?>?DroX>m`Ex>=x3@RW7Oul6 z5`q-y~Nj{IzcS#a&d7nB=r9P(clEqit3A_00000NkvXXu0mjfbuk+p delta 1860 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 U&pJX2P5=M^07*qoM6N<$f_%VAIRF3v delta 1827 zcmV+;2i*AM4aW|UIe+;{L_t(|+P#=djdb8Du#+%hpdv3v1@Q$%iGGJm zo*p@z)(#x*v4{J)pZj_4|8?E}>wjJMQ8F?zHg4RQn3!l|V}IlB?(XE|#O=3;WaG-*0Pc z+tJanbm`KF`bcMIXFoqbf|6Sa0IpcVh&bN5&|$5}fxSm_3G72mMqayh>+;&>cX!v zF)@tn?SFbZTltV%v}NABc?3XGQW9p{+1VjhQxT@~=g(&`@j5XlX0RKJ7cYMN__0bP ze90r2vwQb$*Kgd^PeesUA%!4@OT4vw`Em?Krs!K2IvNZh7Q<~&0<6!TJ;TBH^1*`# z^kp60Xuf=*t&IV zK|ujV3iW$?dqrVL%ocmp9D41z!jdqU?S|!GO-oDL*Oz)`&6mrTEdvBrK>$3BB_uCy z%YVwsAbMV2-s#h)-|0!((irD)e${(J2MY@ek(BK0Y>b3mxF9$<*aFaGcys905t(BQ zN_;8N$$B_=%^6=FtY5z#4j>fw@84%3Vt&+q_pn|5!i5VF`^?Nt=*I@8 z^zIu85}l@oupIpu-2Xxs0fD111aF=9IDbdrk~`rs!N+)HWMocGj+d7gE{7qApy`tF z@$vARFCaKBE-s_GqV~dK45)u-?8Wt7?Rfq&?$&7)_ zLx&Efr>DcQajUCb+q};`zli!Rnmxqk2?~g*@3pu^$Bh&RA8bLh$s=pmu8oe4#(##* zzlJ7uyai!k0_6&`V;iN zl$Vzm7Z*crnE{L7ZbrZ!c zbHldg?JpGH_4V~?zvYc<+DCki;%5?hVh+86w(yTa9MJUX5Ud0oDj@|K5{~0ZrP{Bs zOVVkLZ=p#1>ovXHQqqKnhfl7ym>XBX%D>yUZ{uUa6n%u;)CDR@&IO$(04NGh+L!8I z{Zj^|#HYER^B`e)SNPBm{D0b5#Cv;t_w@8k1hhHaVnpp+RzT^5OoxOJNtuR_eE;08VL2zH;S?kB<*k7hls^zbP9wY>-0`jwdV04iLL= zT|M}Tc{|&8QK=J!97&HHIZ|r(=`X=Q%Y-*C#n;r-5Zng_vnXBYOn(J*DNvybh`EAT zRFY~0l8m7T$nx{^sT8WKtM~8UPqF1+?zj275E2>ksz&G8fUmUTXf5axi(rM^Q~?|~ zsK!Vxa>{(AGF;N6`T~hIH8oWd7Iq>^L@@S4Fl!%+#yOh`n<2V@zziIZL?ShHb#>~G z6Vg_F`%>t|u-4XA`hPGAsgVMmyrxaJQvqE(3Ut^)Rsto6aUuLc(Wzi})$c?o$GoQ3 z>*W+Dr$O}>vMGg*gM|{H2L$5C;SDHsNQ!urgsL8{rJb-TLFr)>F6R+1%8z~qgJDXc z<6Y^oHdJYAYeQ#H7zBL}Z8a1ked$VI0?r6)UC^`afjU_Y&OT RXkY*U002ovPDHLkV1nRlfHMF9 From 0e50bf97075d7627438e763bd3e8cb2fc2699a77 Mon Sep 17 00:00:00 2001 From: Willy-JL Date: Sat, 11 Feb 2023 22:58:35 +0000 Subject: [PATCH 8/9] Sort order wording (again) --- applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c index 8263d387c..4b7d14ff2 100644 --- a/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c +++ b/applications/settings/xtreme_app/scenes/xtreme_app_scene_main.c @@ -228,7 +228,7 @@ void xtreme_app_scene_main_on_enter(void* context) { item = variable_item_list_add( var_item_list, - "Force Dirs first", + "Sort Dirs First", 2, xtreme_app_scene_main_sort_folders_before_changed, app); From 7d2fdc5c6d20701a88dfd09112cd0c416a144be3 Mon Sep 17 00:00:00 2001 From: Willy-JL Date: Sat, 11 Feb 2023 23:44:19 +0000 Subject: [PATCH 9/9] Hide files in browser while still loading --- applications/services/gui/modules/file_browser.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/applications/services/gui/modules/file_browser.c b/applications/services/gui/modules/file_browser.c index 175bab88d..ac494c7c8 100644 --- a/applications/services/gui/modules/file_browser.c +++ b/applications/services/gui/modules/file_browser.c @@ -518,19 +518,25 @@ static void browser_draw_list(Canvas* canvas, FileBrowserModel* model) { for(uint32_t i = 0; i < MIN(model->item_cnt, LIST_ITEMS); i++) { int32_t idx = CLAMP((uint32_t)(i + model->list_offset), model->item_cnt, 0u); - BrowserItemType item_type = BrowserItemTypeLoading; + BrowserItemType item_type; uint8_t* custom_icon_data = NULL; if(browser_is_item_in_array(model, idx)) { BrowserItem_t* item = items_array_get( model->items, CLAMP(idx - model->array_offset, (int32_t)(array_size - 1), 0)); item_type = item->type; - furi_string_set(filename, item->display_name); - if(item_type == BrowserItemTypeFile) { - custom_icon_data = item->custom_icon_data; + if(model->list_loading && item_type != BrowserItemTypeBack) { + furi_string_set(filename, "---"); + item_type = BrowserItemTypeLoading; + } else { + furi_string_set(filename, item->display_name); + if(item_type == BrowserItemTypeFile) { + custom_icon_data = item->custom_icon_data; + } } } else { furi_string_set(filename, "---"); + item_type = BrowserItemTypeLoading; } if(item_type == BrowserItemTypeBack) {