diff --git a/applications/plugins/application.fam b/applications/plugins/application.fam index 3331888f2..5d5824e29 100644 --- a/applications/plugins/application.fam +++ b/applications/plugins/application.fam @@ -6,6 +6,5 @@ App( "music_player", "music_beeper", "snake_game", - "bt_hid", ], ) diff --git a/applications/plugins/blackjack/application.fam b/applications/plugins/blackjack/application.fam index 489ce2aeb..6ca8add37 100644 --- a/applications/plugins/blackjack/application.fam +++ b/applications/plugins/blackjack/application.fam @@ -1,5 +1,5 @@ App( - appid="BlackJack", + appid="Blackjack", name="BlackJack", apptype=FlipperAppType.EXTERNAL, entry_point="blackjack_app", diff --git a/applications/plugins/blackjack/blackjack.c b/applications/plugins/blackjack/blackjack.c index df9972d67..8b81829c3 100644 --- a/applications/plugins/blackjack/blackjack.c +++ b/applications/plugins/blackjack/blackjack.c @@ -13,7 +13,7 @@ #include "util.h" #include "ui.h" -#include "BlackJack_icons.h" +#include "Blackjack_icons.h" #define DEALER_MAX 17 diff --git a/applications/plugins/dap_link/application.fam b/applications/plugins/dap_link/application.fam index 5489c3b19..4dd2e531e 100644 --- a/applications/plugins/dap_link/application.fam +++ b/applications/plugins/dap_link/application.fam @@ -1,7 +1,7 @@ App( - appid="DAP_Link", - name="DAP Link", - apptype=FlipperAppType.EXTERNAL, + appid="dap_link", + name="[GPIO] DAP Link", + apptype=FlipperAppType.PLUGIN, entry_point="dap_link_app", requires=[ "gui", @@ -10,7 +10,7 @@ App( stack_size=4 * 1024, order=20, fap_icon="dap_link.png", - fap_category="Tools", + fap_category="GPIO", fap_private_libs=[ Lib( name="free-dap", diff --git a/applications/plugins/dap_link/dap_link.c b/applications/plugins/dap_link/dap_link.c index dd684810a..eafb435e7 100644 --- a/applications/plugins/dap_link/dap_link.c +++ b/applications/plugins/dap_link/dap_link.c @@ -14,7 +14,7 @@ #include "gui/dap_gui.h" #include "usb/dap_v2_usb.h" #include -#include "DAP_Link_icons.h" +#include "dap_link_icons.h" /***************************************************************************/ /****************************** DAP COMMON *********************************/ @@ -524,4 +524,4 @@ int32_t dap_link_app(void* p) { dap_app_free(app); return 0; -} +} \ No newline at end of file diff --git a/applications/plugins/dap_link/gui/views/dap_main_view.c b/applications/plugins/dap_link/gui/views/dap_main_view.c index 58bfcf316..c5c8f9dff 100644 --- a/applications/plugins/dap_link/gui/views/dap_main_view.c +++ b/applications/plugins/dap_link/gui/views/dap_main_view.c @@ -1,5 +1,5 @@ #include "dap_main_view.h" -#include "DAP_Link_icons.h" +#include "dap_link_icons.h" #include // extern const Icon I_ArrowDownEmpty_12x18; diff --git a/applications/plugins/dtmf_dolphin/README.md b/applications/plugins/dtmf_dolphin/README.md index 5c9561f4b..9a65a382a 100644 --- a/applications/plugins/dtmf_dolphin/README.md +++ b/applications/plugins/dtmf_dolphin/README.md @@ -1,4 +1,6 @@ -![Image](assets/dialer.jpg) +![Image](pics/dialer.jpg) + +[Original Link](https://github.com/litui/dtmf_dolphin) ## DTMF Dolphin diff --git a/applications/plugins/dtmf_dolphin/application.fam b/applications/plugins/dtmf_dolphin/application.fam index 98fbe7363..0727f5f52 100644 --- a/applications/plugins/dtmf_dolphin/application.fam +++ b/applications/plugins/dtmf_dolphin/application.fam @@ -1,5 +1,5 @@ App( - appid="DTMF_Dolphin", + appid="dtmf_dolphin", name="DTMF Dolphin", apptype=FlipperAppType.EXTERNAL, entry_point="dtmf_dolphin_app", diff --git a/applications/plugins/dtmf_dolphin/assets/dialer.jpg b/applications/plugins/dtmf_dolphin/pics/dialer.jpg similarity index 100% rename from applications/plugins/dtmf_dolphin/assets/dialer.jpg rename to applications/plugins/dtmf_dolphin/pics/dialer.jpg diff --git a/applications/plugins/wifi_deauther_v1/FlipperZeroWiFiDeauthModuleDefines.h b/applications/plugins/esp8266_deauth/FlipperZeroWiFiDeauthModuleDefines.h similarity index 100% rename from applications/plugins/wifi_deauther_v1/FlipperZeroWiFiDeauthModuleDefines.h rename to applications/plugins/esp8266_deauth/FlipperZeroWiFiDeauthModuleDefines.h diff --git a/applications/plugins/wifi_deauther_v1/application.fam b/applications/plugins/esp8266_deauth/application.fam similarity index 100% rename from applications/plugins/wifi_deauther_v1/application.fam rename to applications/plugins/esp8266_deauth/application.fam diff --git a/applications/plugins/wifi_deauther_v1/esp8266_deauth.c b/applications/plugins/esp8266_deauth/esp8266_deauth.c similarity index 100% rename from applications/plugins/wifi_deauther_v1/esp8266_deauth.c rename to applications/plugins/esp8266_deauth/esp8266_deauth.c diff --git a/applications/plugins/wifi_deauther_v1/wifi_10px.png b/applications/plugins/esp8266_deauth/wifi_10px.png similarity index 100% rename from applications/plugins/wifi_deauther_v1/wifi_10px.png rename to applications/plugins/esp8266_deauth/wifi_10px.png diff --git a/applications/plugins/flipfrid/scene/flipfrid_scene_load_custom_uids.c b/applications/plugins/flipfrid/scene/flipfrid_scene_load_custom_uids.c index e2e8b76a2..32157556b 100644 --- a/applications/plugins/flipfrid/scene/flipfrid_scene_load_custom_uids.c +++ b/applications/plugins/flipfrid/scene/flipfrid_scene_load_custom_uids.c @@ -1,7 +1,6 @@ #include "flipfrid_scene_load_custom_uids.h" #include "flipfrid_scene_run_attack.h" #include "flipfrid_scene_entrypoint.h" -#include "RFID_Fuzzer_icons.h" #define LFRFID_UIDS_EXTENSION ".txt" #define RFIDFUZZER_APP_PATH_FOLDER "/ext/rfidfuzzer" diff --git a/applications/plugins/flipfrid/scene/flipfrid_scene_load_file.c b/applications/plugins/flipfrid/scene/flipfrid_scene_load_file.c index ce6a40b11..5f3f1a31b 100644 --- a/applications/plugins/flipfrid/scene/flipfrid_scene_load_file.c +++ b/applications/plugins/flipfrid/scene/flipfrid_scene_load_file.c @@ -1,6 +1,5 @@ #include "flipfrid_scene_load_file.h" #include "flipfrid_scene_entrypoint.h" -#include "RFID_Fuzzer_icons.h" #define LFRFID_APP_EXTENSION ".rfid" #define LFRFID_APP_PATH_FOLDER "/ext/lfrfid" diff --git a/applications/plugins/flipper_i2ctools/.gitignore b/applications/plugins/flipper_i2ctools/.gitignore deleted file mode 100644 index e69de29bb..000000000 diff --git a/applications/plugins/flipper_i2ctools/README.md b/applications/plugins/flipper_i2ctools/README.md index 8ecf47c8c..5ee1f881e 100644 --- a/applications/plugins/flipper_i2ctools/README.md +++ b/applications/plugins/flipper_i2ctools/README.md @@ -1,5 +1,6 @@ # flipperzero-i2ctools +[Original link](https://github.com/NaejEL/flipperzero-i2ctools) Set of i2c tools for Flipper Zero ![Preview](i2ctools.gif) diff --git a/applications/plugins/flipper_i2ctools/application.fam b/applications/plugins/flipper_i2ctools/application.fam index f6522a86e..6fafeef58 100644 --- a/applications/plugins/flipper_i2ctools/application.fam +++ b/applications/plugins/flipper_i2ctools/application.fam @@ -1,5 +1,5 @@ App( - appid="I2C_Tools", + appid="i2cTools", name="[GPIO] i2c Tools", apptype=FlipperAppType.EXTERNAL, entry_point="i2ctools_app", @@ -10,4 +10,4 @@ App( fap_icon="i2ctools.png", fap_category="GPIO", fap_icon_assets="images", -) +) \ No newline at end of file diff --git a/applications/plugins/flipper_i2ctools/views/main_view.h b/applications/plugins/flipper_i2ctools/views/main_view.h index dc9379190..050e41130 100644 --- a/applications/plugins/flipper_i2ctools/views/main_view.h +++ b/applications/plugins/flipper_i2ctools/views/main_view.h @@ -1,7 +1,7 @@ #include #include #include -#include +#include #define APP_NAME "I2C Tools" #define SCAN_MENU_TEXT "Scan" diff --git a/applications/plugins/flipper_i2ctools/views/scanner_view.h b/applications/plugins/flipper_i2ctools/views/scanner_view.h index bd591a740..02bc8fb1c 100644 --- a/applications/plugins/flipper_i2ctools/views/scanner_view.h +++ b/applications/plugins/flipper_i2ctools/views/scanner_view.h @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include "../i2cscanner.h" #define SCAN_TEXT "SCAN" diff --git a/applications/plugins/flipper_i2ctools/views/sender_view.h b/applications/plugins/flipper_i2ctools/views/sender_view.h index 8a21912dc..5f48081dd 100644 --- a/applications/plugins/flipper_i2ctools/views/sender_view.h +++ b/applications/plugins/flipper_i2ctools/views/sender_view.h @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include "../i2csender.h" #define SEND_TEXT "SEND" diff --git a/applications/plugins/flipper_i2ctools/views/sniffer_view.h b/applications/plugins/flipper_i2ctools/views/sniffer_view.h index d5cc373d1..80c92f7fc 100644 --- a/applications/plugins/flipper_i2ctools/views/sniffer_view.h +++ b/applications/plugins/flipper_i2ctools/views/sniffer_view.h @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include "../i2csniffer.h" #define SNIFF_TEXT "SNIFF" diff --git a/applications/plugins/game15/application.fam b/applications/plugins/game15/application.fam index dc3a0da0b..ab00316c1 100644 --- a/applications/plugins/game15/application.fam +++ b/applications/plugins/game15/application.fam @@ -1,5 +1,5 @@ App( - appid="Game15", + appid="game15", name="Game 15", apptype=FlipperAppType.EXTERNAL, entry_point="game15_app", diff --git a/applications/plugins/game_2048/application.fam b/applications/plugins/game_2048/application.fam index f2456668e..0440d0864 100644 --- a/applications/plugins/game_2048/application.fam +++ b/applications/plugins/game_2048/application.fam @@ -1,6 +1,6 @@ # PLUGIN BY eugene-kirzhanov App( - appid="2048_improved", + appid="game_2048", name="2048", apptype=FlipperAppType.EXTERNAL, entry_point="game_2048_app", diff --git a/applications/plugins/gps_nmea_uart/README.md b/applications/plugins/gps_nmea_uart/README.md index 3f7a5ef3d..7af0fa3b3 100644 --- a/applications/plugins/gps_nmea_uart/README.md +++ b/applications/plugins/gps_nmea_uart/README.md @@ -1,12 +1,9 @@ # GPS for Flipper Zero -A simple Flipper Zero application for NMEA 0183 serial GPS modules, such as the - [Original link](https://github.com/ezod/flipperzero-gps) + [Adafruit Ultimate GPS Breakout]. -[Original link](https://github.com/ezod/flipperzero-gps) - ![ui](ui.png) Heavy lifting (NMEA parsing) provided by [minmea], which is included in this @@ -35,4 +32,3 @@ baud rate, may be useful for other GPS modules. [Adafruit Ultimate GPS Breakout]: https://www.adafruit.com/product/746 [minmea]: https://github.com/kosma/minmea [flipperzero-firmware]: https://github.com/flipperdevices/flipperzero-firmware -[qFlipper]: https://flipperzero.one/update diff --git a/applications/plugins/gps_nmea_uart/application.fam b/applications/plugins/gps_nmea_uart/application.fam index 138fb3f29..a5fdb4360 100644 --- a/applications/plugins/gps_nmea_uart/application.fam +++ b/applications/plugins/gps_nmea_uart/application.fam @@ -1,5 +1,5 @@ App( - appid="NMEA_GPS", + appid="gps_nmea", name="[NMEA] GPS", apptype=FlipperAppType.EXTERNAL, entry_point="gps_app", diff --git a/applications/plugins/hc_sr04/application.fam b/applications/plugins/hc_sr04/application.fam index bfbb2daa8..ad451a102 100644 --- a/applications/plugins/hc_sr04/application.fam +++ b/applications/plugins/hc_sr04/application.fam @@ -1,5 +1,5 @@ App( - appid="HC_SR04_Dist_Sensor", + appid="hc_sr04", name="[HC-SR] Dist. Sensor", apptype=FlipperAppType.EXTERNAL, entry_point="hc_sr04_app", @@ -11,4 +11,4 @@ App( order=20, fap_icon="dist_sensor10px.png", fap_category="GPIO", -) +) \ No newline at end of file diff --git a/applications/plugins/heap_defence_game/application.fam b/applications/plugins/heap_defence_game/application.fam index bedd27dbc..b132531d1 100644 --- a/applications/plugins/heap_defence_game/application.fam +++ b/applications/plugins/heap_defence_game/application.fam @@ -1,5 +1,5 @@ App( - appid="Heap_Defence", + appid="heap_defence", name="Heap Defence", apptype=FlipperAppType.EXTERNAL, entry_point="heap_defence_app", diff --git a/applications/plugins/heap_defence_game/heap_defence.c b/applications/plugins/heap_defence_game/heap_defence.c index bbcedb759..f7d6e4ef7 100644 --- a/applications/plugins/heap_defence_game/heap_defence.c +++ b/applications/plugins/heap_defence_game/heap_defence.c @@ -7,7 +7,7 @@ #include #include "hede_assets.h" -#include "Heap_Defence_icons.h" +#include "heap_defence_icons.h" #include #include diff --git a/applications/plugins/hid_app/application.fam b/applications/plugins/hid_app/application.fam index 7e04f0780..b8c13e353 100644 --- a/applications/plugins/hid_app/application.fam +++ b/applications/plugins/hid_app/application.fam @@ -1,5 +1,5 @@ App( - appid="USB_Remote", + appid="hid_usb", name="USB Remote", apptype=FlipperAppType.PLUGIN, entry_point="hid_usb_app", @@ -12,7 +12,7 @@ App( App( - appid="Bluetooth_Remote", + appid="hid_ble", name="Bluetooth Remote", apptype=FlipperAppType.PLUGIN, entry_point="hid_ble_app", diff --git a/applications/plugins/ibtn_fuzzer/README.md b/applications/plugins/ibtn_fuzzer/README.md deleted file mode 100644 index 6b93488c8..000000000 --- a/applications/plugins/ibtn_fuzzer/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# iButton Fuzzer -Plugin for Flipper Zero - -Made for [Unleashed](https://github.com/DarkFlippers/unleashed-firmware) firmware, but will work on original firmware too - -Supported protocols: -- DS1990 -- Metakom -- Cyfral \ No newline at end of file diff --git a/applications/plugins/ibtn_fuzzer/application.fam b/applications/plugins/ibtn_fuzzer/application.fam index 93a9bad23..b27f47ba9 100644 --- a/applications/plugins/ibtn_fuzzer/application.fam +++ b/applications/plugins/ibtn_fuzzer/application.fam @@ -1,5 +1,5 @@ App( - appid="IBtn_Fuzzer", + appid="iBtn_Fuzzer", name="iButton Fuzzer", apptype=FlipperAppType.EXTERNAL, entry_point="ibtnfuzzer_start", diff --git a/applications/plugins/ibtn_fuzzer/ibtnfuzzer.h b/applications/plugins/ibtn_fuzzer/ibtnfuzzer.h index f0e9bef16..91a9c6b0c 100644 --- a/applications/plugins/ibtn_fuzzer/ibtnfuzzer.h +++ b/applications/plugins/ibtn_fuzzer/ibtnfuzzer.h @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include diff --git a/applications/plugins/lightmeter/application.fam b/applications/plugins/lightmeter/application.fam index b1ae6c6b2..8cd90ee26 100644 --- a/applications/plugins/lightmeter/application.fam +++ b/applications/plugins/lightmeter/application.fam @@ -1,5 +1,5 @@ App( - appid="BH1750_Lightmeter", + appid="lightmeter", name="[BH1750] Lightmeter", apptype=FlipperAppType.EXTERNAL, entry_point="lightmeter_app", diff --git a/applications/plugins/lightmeter/gui/views/main_view.h b/applications/plugins/lightmeter/gui/views/main_view.h index 42d2d1877..038cd3065 100644 --- a/applications/plugins/lightmeter/gui/views/main_view.h +++ b/applications/plugins/lightmeter/gui/views/main_view.h @@ -1,7 +1,7 @@ #pragma once #include -#include "BH1750_Lightmeter_icons.h" +#include "lightmeter_icons.h" #include "../../lightmeter_config.h" typedef struct MainView MainView; diff --git a/applications/plugins/minesweeper/README.md b/applications/plugins/minesweeper/README.md index eb1ebcad2..28176bd5e 100644 --- a/applications/plugins/minesweeper/README.md +++ b/applications/plugins/minesweeper/README.md @@ -1,5 +1,7 @@ # Minesweeper +[Original Link](https://github.com/panki27/minesweeper) + This is a Minesweeper implementation for the Flipper Zero device. ![screenshot](img/screenshot.png) diff --git a/applications/plugins/minesweeper/minesweeper.c b/applications/plugins/minesweeper/minesweeper.c index 8a973a247..43e8f027e 100644 --- a/applications/plugins/minesweeper/minesweeper.c +++ b/applications/plugins/minesweeper/minesweeper.c @@ -218,6 +218,10 @@ static bool game_lost(Minesweeper* minesweeper_state) { dialog_message_set_icon(message, NULL, 0, 10); + // Set cursor to initial position + minesweeper_state->cursor_x = 0; + minesweeper_state->cursor_y = 0; + NotificationApp* notifications = furi_record_open(RECORD_NOTIFICATION); notification_message(notifications, &sequence_set_vibro_on); furi_record_close(RECORD_NOTIFICATION); @@ -474,7 +478,7 @@ int32_t minesweeper_app(void* p) { // Exit the plugin processing = false; break; - case InputKeyMAX: + default: break; } } else if(event.input.type == InputTypeLong) { @@ -493,7 +497,7 @@ int32_t minesweeper_app(void* p) { case InputKeyBack: processing = false; break; - case InputKeyMAX: + default: break; } } diff --git a/applications/plugins/morse_code/application.fam b/applications/plugins/morse_code/application.fam index 5801544a6..d5a2e6c9a 100644 --- a/applications/plugins/morse_code/application.fam +++ b/applications/plugins/morse_code/application.fam @@ -1,5 +1,5 @@ App( - appid="Morse_Code", + appid="morse_code", name="Morse Code", apptype=FlipperAppType.EXTERNAL, entry_point="morse_code_app", diff --git a/applications/plugins/mousejacker/images/badkb_10px.png b/applications/plugins/mousejacker/images/badusb_10px.png similarity index 100% rename from applications/plugins/mousejacker/images/badkb_10px.png rename to applications/plugins/mousejacker/images/badusb_10px.png diff --git a/applications/plugins/mousejacker/mousejacker.c b/applications/plugins/mousejacker/mousejacker.c index 96819feba..9ef23983f 100644 --- a/applications/plugins/mousejacker/mousejacker.c +++ b/applications/plugins/mousejacker/mousejacker.c @@ -10,8 +10,7 @@ #include #include #include "mousejacker_ducky.h" -#include -#include "NRF24_Mouse_Jacker_icons.h" +#include #define TAG "mousejacker" #define LOGITECH_MAX_CHANNEL 85 @@ -112,7 +111,7 @@ static bool open_ducky_script(Stream* stream, PluginState* plugin_state) { DialogsFileBrowserOptions browser_options; dialog_file_browser_set_basic_options( - &browser_options, MOUSEJACKER_APP_PATH_EXTENSION, &I_badkb_10px); + &browser_options, MOUSEJACKER_APP_PATH_EXTENSION, &I_badusb_10px); browser_options.hide_ext = false; bool ret = dialog_file_browser_show(dialogs, path, path, &browser_options); @@ -184,7 +183,6 @@ static bool process_ducky_file( mj_process_ducky_script( nrf24_HANDLE, addr, addr_size, rate, (char*)file_buf, plugin_state); FURI_LOG_D(TAG, "finished execution"); - // DOLPHIN_DEED(getRandomDeed()); loaded = true; } else { FURI_LOG_D(TAG, "load failed. file size: %d", file_size); diff --git a/applications/plugins/music_player/application.fam b/applications/plugins/music_player/application.fam index 1072f1524..07f489072 100644 --- a/applications/plugins/music_player/application.fam +++ b/applications/plugins/music_player/application.fam @@ -1,7 +1,7 @@ App( appid="Music_Player", name="Music Player", - apptype=FlipperAppType.EXTERNAL, + apptype=FlipperAppType.PLUGIN, entry_point="music_player_app", cdefines=["APP_MUSIC_PLAYER"], requires=[ diff --git a/applications/plugins/music_player/music_player.c b/applications/plugins/music_player/music_player.c index 919a7bfab..71840ff92 100644 --- a/applications/plugins/music_player/music_player.c +++ b/applications/plugins/music_player/music_player.c @@ -258,7 +258,7 @@ MusicPlayer* music_player_alloc() { MusicPlayer* instance = malloc(sizeof(MusicPlayer)); instance->model = malloc(sizeof(MusicPlayerModel)); - instance->model->volume = 4; + instance->model->volume = 3; instance->model_mutex = furi_mutex_alloc(FuriMutexTypeNormal); diff --git a/applications/plugins/nfc_magic/application.fam b/applications/plugins/nfc_magic/application.fam index 427524051..db0af81d4 100644 --- a/applications/plugins/nfc_magic/application.fam +++ b/applications/plugins/nfc_magic/application.fam @@ -1,5 +1,5 @@ App( - appid="NFC_Magic", + appid="nfc_magic", name="NFC Magic", apptype=FlipperAppType.EXTERNAL, targets=["f7"], diff --git a/applications/plugins/nfc_magic/nfc_magic.c b/applications/plugins/nfc_magic/nfc_magic.c index e4e0ffde0..1805f35ed 100644 --- a/applications/plugins/nfc_magic/nfc_magic.c +++ b/applications/plugins/nfc_magic/nfc_magic.c @@ -136,9 +136,9 @@ void nfc_magic_free(NfcMagic* nfc_magic) { free(nfc_magic); } -static const NotificationSequence nfc_magic_sequence_blink_start_blue = { +static const NotificationSequence nfc_magic_sequence_blink_start_cyan = { &message_blink_start_10, - &message_blink_set_color_blue, + &message_blink_set_color_cyan, &message_do_not_reset, NULL, }; @@ -149,7 +149,7 @@ static const NotificationSequence nfc_magic_sequence_blink_stop = { }; void nfc_magic_blink_start(NfcMagic* nfc_magic) { - notification_message(nfc_magic->notifications, &nfc_magic_sequence_blink_start_blue); + notification_message(nfc_magic->notifications, &nfc_magic_sequence_blink_start_cyan); } void nfc_magic_blink_stop(NfcMagic* nfc_magic) { diff --git a/applications/plugins/nfc_magic/nfc_magic_i.h b/applications/plugins/nfc_magic/nfc_magic_i.h index a6f9352b4..378912e5b 100644 --- a/applications/plugins/nfc_magic/nfc_magic_i.h +++ b/applications/plugins/nfc_magic/nfc_magic_i.h @@ -25,7 +25,7 @@ #include #include -#include "NFC_Magic_icons.h" +#include "nfc_magic_icons.h" #define NFC_APP_FOLDER ANY_PATH("nfc") diff --git a/applications/plugins/nfc_magic/scenes/nfc_magic_scene_start.c b/applications/plugins/nfc_magic/scenes/nfc_magic_scene_start.c index f2984443f..a70eb8acc 100644 --- a/applications/plugins/nfc_magic/scenes/nfc_magic_scene_start.c +++ b/applications/plugins/nfc_magic/scenes/nfc_magic_scene_start.c @@ -40,16 +40,24 @@ bool nfc_magic_scene_start_on_event(void* context, SceneManagerEvent event) { if(event.type == SceneManagerEventTypeCustom) { if(event.event == SubmenuIndexCheck) { + scene_manager_set_scene_state( + nfc_magic->scene_manager, NfcMagicSceneStart, SubmenuIndexCheck); scene_manager_next_scene(nfc_magic->scene_manager, NfcMagicSceneCheck); consumed = true; } else if(event.event == SubmenuIndexWriteGen1A) { + // Explicitly save state in each branch so that the + // correct option is reselected if the user cancels + // loading a file. + scene_manager_set_scene_state( + nfc_magic->scene_manager, NfcMagicSceneStart, SubmenuIndexWriteGen1A); scene_manager_next_scene(nfc_magic->scene_manager, NfcMagicSceneFileSelect); consumed = true; } else if(event.event == SubmenuIndexWipe) { + scene_manager_set_scene_state( + nfc_magic->scene_manager, NfcMagicSceneStart, SubmenuIndexWipe); scene_manager_next_scene(nfc_magic->scene_manager, NfcMagicSceneWipe); consumed = true; } - scene_manager_set_scene_state(nfc_magic->scene_manager, NfcMagicSceneStart, event.event); } return consumed; diff --git a/applications/plugins/nrfsniff/README.md b/applications/plugins/nrfsniff/README.md deleted file mode 100644 index 89cc401c3..000000000 --- a/applications/plugins/nrfsniff/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# flipperzero-nrf24 - -An [NRF24](https://www.sparkfun.com/datasheets/Components/SMD/nRF24L01Pluss_Preliminary_Product_Specification_v1_0.pdf) driver for the [Flipper Zero](https://flipperzero.one/) device. The NRF24 is a popular line of 2.4GHz radio transceivers from Nordic Semiconductors. This library is not currently complete, but functional. - -## Warning -This repo contains two Flipper Zero apps that utilize the NRF24 driver to sniff for NRF24 addresses and perform mousejack attacks. These apps are for **educational purposes** only. Please use this code responsibly and only use these apps on your own equipment. - -## Acknowledgments -The NRF24 sniffing technique was discovered and shared by Travis Goodspeed in [his blog](http://travisgoodspeed.blogspot.com/2011/02/promiscuity-is-nrf24l01s-duty.html). - -The mousejack vulnerabilities were discovered and reported by Marc Newlin, see [the blog](https://www.bastille.net/research/vulnerabilities/mousejack/technical-details) for technical details. - -Much of the driver code was inspired by [RadioHead's Arduino library](https://www.airspayce.com/mikem/arduino/RadioHead/classRH__NRF24.html). -Much of the mousejack code was inspired by the [Jackit project](https://github.com/insecurityofthings/jackit). -# -## PinOut from from NoComp/Frog - - -# Mousejack / NRF24 pinout by UberGuidoZ -2/A7 on FZ goes to MOSI/6 on nrf24l01
-3/A6 on FZ goes to MISO/7 on nrf24l01
-4/A4 on FZ goes to CSN/4 on nrf24l01
-5/B3 on FZ goes to SCK/5 on nrf24l01
-6/B2 on FZ goes to CE/3 on nrf24l01
-8/GND on FZ goes to GND/1 on nrf24l01
-9/3V3 on FZ goes to VCC/2 on nrf24l01
-IRQ/8 is left disconnected on nrf24l01 -![NRF_Pins](https://user-images.githubusercontent.com/57457139/178093717-39effd5c-ebe2-4253-b13c-70517d7902f9.png) -If the nRF module is acting a bit flakey, try adding a capacitor to the vcc/gnd lines! I've not tried the Plus model so it may have a bigger need for a cap. Otherwise, I haven't had any major issues. Anything from a 3.3 uF to 10 uF should do. (Watch your positive/negative placement! Negative to ground.) I learned if you wanna get fancy, include a 0.1 uF cap in parallel. The 3.3 uF to 10 uF will respond to slow freq changes while the 0.1 uF will respond to the high freq switching spikes that the larger one cannot. That said, a single 10 uF will likely suffice for the Mousejack attack. ¯\\\_(ツ)_/¯ -![NRF_Capacitor](https://user-images.githubusercontent.com/57457139/178169959-d030f9a6-d2ac-46af-af8b-470ff092c8a7.jpg) - diff --git a/applications/plugins/nrfsniff/nrfsniff.c b/applications/plugins/nrfsniff/nrfsniff.c index a14c38b4d..56bc33d05 100644 --- a/applications/plugins/nrfsniff/nrfsniff.c +++ b/applications/plugins/nrfsniff/nrfsniff.c @@ -4,7 +4,7 @@ #include #include #include -#include + #include #include @@ -290,7 +290,6 @@ static void wrap_up(Storage* storage, NotificationApp* notification) { hexlify(addr, 5, top_address); found_count++; save_addr_to_file(storage, addr, 5, notification); - // DOLPHIN_DEED(getRandomDeed()); if(confirmed_idx < MAX_CONFIRMED) memcpy(confirmed[confirmed_idx++], addr, 5); break; } @@ -404,9 +403,6 @@ int32_t nrfsniff_app(void* p) { } } } - } else { - // FURI_LOG_D(TAG, "osMessageQueue: event timeout"); - // event timeout } if(sniffing_state) { diff --git a/applications/plugins/subghz_playlist/application.fam b/applications/plugins/playlist/application.fam similarity index 91% rename from applications/plugins/subghz_playlist/application.fam rename to applications/plugins/playlist/application.fam index b15da2217..06357e24b 100644 --- a/applications/plugins/subghz_playlist/application.fam +++ b/applications/plugins/playlist/application.fam @@ -1,5 +1,5 @@ App( - appid="subghz_playlist", + appid="SubGHz_Playlist", name="Sub-GHz Playlist", apptype=FlipperAppType.EXTERNAL, entry_point="playlist_app", diff --git a/applications/plugins/subghz_playlist/canvas_helper.c b/applications/plugins/playlist/canvas_helper.c similarity index 100% rename from applications/plugins/subghz_playlist/canvas_helper.c rename to applications/plugins/playlist/canvas_helper.c diff --git a/applications/plugins/subghz_playlist/canvas_helper.h b/applications/plugins/playlist/canvas_helper.h similarity index 100% rename from applications/plugins/subghz_playlist/canvas_helper.h rename to applications/plugins/playlist/canvas_helper.h diff --git a/applications/plugins/subghz_playlist/images/ButtonRight_4x7.png b/applications/plugins/playlist/images/ButtonRight_4x7.png similarity index 100% rename from applications/plugins/subghz_playlist/images/ButtonRight_4x7.png rename to applications/plugins/playlist/images/ButtonRight_4x7.png diff --git a/applications/plugins/subghz_playlist/images/sub1_10px.png b/applications/plugins/playlist/images/sub1_10px.png similarity index 100% rename from applications/plugins/subghz_playlist/images/sub1_10px.png rename to applications/plugins/playlist/images/sub1_10px.png diff --git a/applications/plugins/subghz_playlist/playlist.c b/applications/plugins/playlist/playlist.c similarity index 100% rename from applications/plugins/subghz_playlist/playlist.c rename to applications/plugins/playlist/playlist.c diff --git a/applications/plugins/subghz_playlist/playlist_10px.png b/applications/plugins/playlist/playlist_10px.png similarity index 100% rename from applications/plugins/subghz_playlist/playlist_10px.png rename to applications/plugins/playlist/playlist_10px.png diff --git a/applications/plugins/subghz_playlist/playlist_file.c b/applications/plugins/playlist/playlist_file.c similarity index 100% rename from applications/plugins/subghz_playlist/playlist_file.c rename to applications/plugins/playlist/playlist_file.c diff --git a/applications/plugins/subghz_playlist/playlist_file.h b/applications/plugins/playlist/playlist_file.h similarity index 100% rename from applications/plugins/subghz_playlist/playlist_file.h rename to applications/plugins/playlist/playlist_file.h diff --git a/applications/plugins/pocsag_pager/application.fam b/applications/plugins/pocsag_pager/application.fam index 3b1fa313e..86f8d528b 100644 --- a/applications/plugins/pocsag_pager/application.fam +++ b/applications/plugins/pocsag_pager/application.fam @@ -1,5 +1,5 @@ App( - appid="POCSAG_Pager", + appid="pocsag_pager", name="POCSAG Pager", apptype=FlipperAppType.PLUGIN, entry_point="pocsag_pager_app", diff --git a/applications/plugins/pocsag_pager/views/pocsag_pager_receiver.c b/applications/plugins/pocsag_pager/views/pocsag_pager_receiver.c index 3ab5898a0..62a2b2968 100644 --- a/applications/plugins/pocsag_pager/views/pocsag_pager_receiver.c +++ b/applications/plugins/pocsag_pager/views/pocsag_pager_receiver.c @@ -1,6 +1,6 @@ #include "pocsag_pager_receiver.h" #include "../pocsag_pager_app_i.h" -#include +#include #include #include diff --git a/applications/plugins/pocsag_pager/views/pocsag_pager_receiver_info.c b/applications/plugins/pocsag_pager/views/pocsag_pager_receiver_info.c index 99bb1002a..4811f3902 100644 --- a/applications/plugins/pocsag_pager/views/pocsag_pager_receiver_info.c +++ b/applications/plugins/pocsag_pager/views/pocsag_pager_receiver_info.c @@ -1,6 +1,6 @@ #include "pocsag_pager_receiver.h" #include "../pocsag_pager_app_i.h" -#include "POCSAG_Pager_icons.h" +#include "pocsag_pager_icons.h" #include "../protocols/pcsg_generic.h" #include #include diff --git a/applications/plugins/sentry_safe/README.md b/applications/plugins/sentry_safe/README.md deleted file mode 100644 index c4b00fefe..000000000 --- a/applications/plugins/sentry_safe/README.md +++ /dev/null @@ -1,26 +0,0 @@ -# flipperzero-sentry-safe-plugin - -Flipper zero exploiting vulnerability to open any Sentry Safe and Master Lock electronic safe without any pin code. - -[Vulnerability described here](https://github.com/H4ckd4ddy/bypass-sentry-safe) - -### Installation - -- Download [last release fap file](https://github.com/H4ckd4ddy/flipperzero-sentry-safe-plugin/releases/latest) -- Copy fap file to the apps folder of your flipper SD card - -### Usage - -- Start "Sentry Safe" plugin -- Place wires as described on the plugin screen -- Press enter -- Open safe - -### Build - -- Recursively clone your base firmware (official or not) -- Clone this repository in `applications_user` -- Build with `./fbt fap_dist APPSRC=applications_user/flipperzero-sentry-safe-plugin` -- Retreive builed fap in dist subfolders - -(More info about build tool [here](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/documentation/fbt.md)) diff --git a/applications/plugins/signal_generator/application.fam b/applications/plugins/signal_generator/application.fam index 133319cf4..8edc9221b 100644 --- a/applications/plugins/signal_generator/application.fam +++ b/applications/plugins/signal_generator/application.fam @@ -1,7 +1,7 @@ App( appid="Signal_Generator", name="[GPIO] Signal Generator", - apptype=FlipperAppType.EXTERNAL, + apptype=FlipperAppType.PLUGIN, entry_point="signal_gen_app", cdefines=["APP_SIGNAL_GEN"], requires=["gui"], diff --git a/applications/plugins/snake_game/application.fam b/applications/plugins/snake_game/application.fam index 6b2dee927..4e88e1941 100644 --- a/applications/plugins/snake_game/application.fam +++ b/applications/plugins/snake_game/application.fam @@ -1,15 +1,11 @@ App( appid="Snake", name="Snake Game", - apptype=FlipperAppType.EXTERNAL, + apptype=FlipperAppType.PLUGIN, entry_point="snake_game_app", cdefines=["APP_SNAKE_GAME"], - requires=[ - "gui", - "notification", - "storage", - ], - stack_size=2 * 1024, + requires=["gui"], + stack_size=1 * 1024, order=210, fap_icon="snake_10px.png", fap_category="Games", diff --git a/applications/plugins/snake_game/helpers/snake_file_handler.c b/applications/plugins/snake_game/helpers/snake_file_handler.c deleted file mode 100644 index 569bd8738..000000000 --- a/applications/plugins/snake_game/helpers/snake_file_handler.c +++ /dev/null @@ -1,181 +0,0 @@ -#include "snake_file_handler.h" - -#include -#include - -static void snake_game_close_file(FlipperFormat* file) { - if(file == NULL) { - furi_record_close(RECORD_STORAGE); - return; - } - flipper_format_file_close(file); - flipper_format_free(file); - furi_record_close(RECORD_STORAGE); -} - -static FlipperFormat* snake_game_open_file() { - Storage* storage = furi_record_open(RECORD_STORAGE); - FlipperFormat* file = flipper_format_file_alloc(storage); - - if(storage_common_stat(storage, SNAKE_GAME_FILE_PATH, NULL) == FSE_OK) { - if(!flipper_format_file_open_existing(file, SNAKE_GAME_FILE_PATH)) { - snake_game_close_file(file); - return NULL; - } - } else { - if(storage_common_stat(storage, APPS_DATA, NULL) == FSE_NOT_EXIST) { - if(!storage_simply_mkdir(storage, APPS_DATA)) { - return NULL; - } - } - if(storage_common_stat(storage, SNAKE_GAME_FILE_DIR_PATH, NULL) == FSE_NOT_EXIST) { - if(!storage_simply_mkdir(storage, SNAKE_GAME_FILE_DIR_PATH)) { - return NULL; - } - } - - if(!flipper_format_file_open_new(file, SNAKE_GAME_FILE_PATH)) { - snake_game_close_file(file); - return NULL; - } - - flipper_format_write_header_cstr( - file, SNAKE_GAME_FILE_HEADER, SNAKE_GAME_FILE_ACTUAL_VERSION); - flipper_format_rewind(file); - } - return file; -} - -void snake_game_save_score_to_file(int16_t highscore) { - FlipperFormat* file = snake_game_open_file(); - if(file != NULL) { - uint32_t temp = highscore; - if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_HIGHSCORE, &temp, 1)) { - snake_game_close_file(file); - return; - } - snake_game_close_file(file); - } -} - -void snake_game_save_game_to_file(SnakeState* const snake_state) { - FlipperFormat* file = snake_game_open_file(); - - if(file != NULL) { - uint32_t temp = snake_state->len; - if(!flipper_format_insert_or_update_uint32(file, SNAKE_GAME_CONFIG_KEY_LEN, &temp, 1)) { - snake_game_close_file(file); - return; - } - - uint16_t array_size = snake_state->len * 2; - uint32_t temp_array[array_size]; - for(int16_t i = 0, a = 0; a < array_size && i < snake_state->len; i++) { - temp_array[a++] = snake_state->points[i].x; - temp_array[a++] = snake_state->points[i].y; - } - if(!flipper_format_insert_or_update_uint32( - file, SNAKE_GAME_CONFIG_KEY_POINTS, temp_array, array_size)) { - snake_game_close_file(file); - return; - } - - temp = snake_state->currentMovement; - if(!flipper_format_insert_or_update_uint32( - file, SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT, &temp, 1)) { - snake_game_close_file(file); - return; - } - - temp = snake_state->nextMovement; - if(!flipper_format_insert_or_update_uint32( - file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT, &temp, 1)) { - snake_game_close_file(file); - return; - } - - array_size = 2; - uint32_t temp_point_array[array_size]; - temp_point_array[0] = snake_state->fruit.x; - temp_point_array[1] = snake_state->fruit.y; - if(!flipper_format_insert_or_update_uint32( - file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)) { - snake_game_close_file(file); - return; - } - - snake_game_close_file(file); - } -} - -bool snake_game_init_game_from_file(SnakeState* const snake_state) { - FlipperFormat* file = snake_game_open_file(); - - if(file != NULL) { - FuriString* file_type = furi_string_alloc(); - uint32_t version = 1; - if(!flipper_format_read_header(file, file_type, &version)) { - furi_string_free(file_type); - snake_game_close_file(file); - return false; - } - furi_string_free(file_type); - - uint32_t temp; - snake_state->highscore = - (flipper_format_read_uint32(file, SNAKE_GAME_CONFIG_HIGHSCORE, &temp, 1)) ? temp : 0; - flipper_format_rewind(file); - - if(!flipper_format_read_uint32(file, SNAKE_GAME_CONFIG_KEY_LEN, &temp, 1)) { - snake_game_close_file(file); - return false; - } - snake_state->len = temp; - flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_LEN); - - uint16_t array_size = snake_state->len * 2; - uint32_t temp_array[array_size]; - if(!flipper_format_read_uint32( - file, SNAKE_GAME_CONFIG_KEY_POINTS, temp_array, array_size)) { - snake_game_close_file(file); - return false; - } - - for(int16_t i = 0, a = 0; a < array_size && i < snake_state->len; i++) { - snake_state->points[i].x = temp_array[a++]; - snake_state->points[i].y = temp_array[a++]; - } - flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_POINTS); - - if(!flipper_format_read_uint32(file, SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT, &temp, 1)) { - snake_game_close_file(file); - return false; - } - snake_state->currentMovement = temp; - flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT); - - if(!flipper_format_read_uint32(file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT, &temp, 1)) { - snake_game_close_file(file); - return false; - } - snake_state->nextMovement = temp; - flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT); - - array_size = 2; - uint32_t temp_point_array[array_size]; - if(!flipper_format_read_uint32( - file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS, temp_point_array, array_size)) { - snake_game_close_file(file); - return false; - } - snake_state->fruit.x = temp_point_array[0]; - snake_state->fruit.y = temp_point_array[1]; - flipper_format_delete_key(file, SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS); - - snake_game_close_file(file); - - return true; - } - - return false; -} diff --git a/applications/plugins/snake_game/helpers/snake_file_handler.h b/applications/plugins/snake_game/helpers/snake_file_handler.h deleted file mode 100644 index 178d5d8e0..000000000 --- a/applications/plugins/snake_game/helpers/snake_file_handler.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "snake_types.h" -#include -#include - -#define APPS_DATA EXT_PATH("apps_data") -#define SNAKE_GAME_FILE_DIR_PATH APPS_DATA "/snake_game" -#define SNAKE_GAME_FILE_PATH SNAKE_GAME_FILE_DIR_PATH "/.snake" - -#define SNAKE_GAME_FILE_HEADER "Flipper Snake plugin run file" -#define SNAKE_GAME_FILE_ACTUAL_VERSION 1 - -#define SNAKE_GAME_CONFIG_KEY_POINTS "SnakePoints" -#define SNAKE_GAME_CONFIG_KEY_LEN "SnakeLen" -#define SNAKE_GAME_CONFIG_KEY_CURRENT_MOVEMENT "CurrentMovement" -#define SNAKE_GAME_CONFIG_KEY_NEXT_MOVEMENT "NextMovement" -#define SNAKE_GAME_CONFIG_KEY_FRUIT_POINTS "FruitPoints" -#define SNAKE_GAME_CONFIG_HIGHSCORE "Highscore" - -void snake_game_save_score_to_file(int16_t highscore); - -void snake_game_save_game_to_file(SnakeState* const snake_state); - -bool snake_game_init_game_from_file(SnakeState* const snake_state); diff --git a/applications/plugins/snake_game/helpers/snake_types.h b/applications/plugins/snake_game/helpers/snake_types.h deleted file mode 100644 index 08682f585..000000000 --- a/applications/plugins/snake_game/helpers/snake_types.h +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include - -typedef struct { - // +-----x - // | - // | - // y - uint8_t x; - uint8_t y; -} Point; - -typedef enum { - GameStateLife, - - // https://melmagazine.com/en-us/story/snake-nokia-6110-oral-history-taneli-armanto - // Armanto: While testing the early versions of the game, I noticed it was hard - // to control the snake upon getting close to and edge but not crashing — especially - // in the highest speed levels. I wanted the highest level to be as fast as I could - // possibly make the device "run," but on the other hand, I wanted to be friendly - // and help the player manage that level. Otherwise it might not be fun to play. So - // I implemented a little delay. A few milliseconds of extra time right before - // the player crashes, during which she can still change the directions. And if - // she does, the game continues. - GameStateLastChance, - - GameStateGameOver, -} GameState; - -// Note: do not change without purpose. Current values are used in smart -// orthogonality calculation in `snake_game_get_turn_snake`. -typedef enum { - DirectionUp, - DirectionRight, - DirectionDown, - DirectionLeft, -} Direction; - -#define MAX_SNAKE_LEN 253 - -typedef struct { - Point points[MAX_SNAKE_LEN]; - uint16_t len; - bool isNewHighscore; - int16_t highscore; - Direction currentMovement; - Direction nextMovement; // if backward of currentMovement, ignore - Point fruit; - GameState state; -} SnakeState; diff --git a/applications/plugins/snake_game/snake_game.c b/applications/plugins/snake_game/snake_game.c index 7c27d4bfe..1a0480355 100644 --- a/applications/plugins/snake_game/snake_game.c +++ b/applications/plugins/snake_game/snake_game.c @@ -40,7 +40,7 @@ typedef enum { DirectionLeft, } Direction; -#define MAX_SNAKE_LEN 253 +#define MAX_SNAKE_LEN 128 * 64 / 4 typedef struct { Point points[MAX_SNAKE_LEN]; @@ -266,10 +266,7 @@ static void return; } - bool can_turn = (snake_state->points[0].x % 2 == 0) && (snake_state->points[0].y % 2 == 0); - if(can_turn) { - snake_state->currentMovement = snake_game_get_turn_snake(snake_state); - } + snake_state->currentMovement = snake_game_get_turn_snake(snake_state); Point next_step = snake_game_get_next_step(snake_state); @@ -326,6 +323,7 @@ int32_t snake_game_app(void* p) { if(!snake_state->mutex) { FURI_LOG_E("SnakeGame", "cannot create mutex\r\n"); + furi_message_queue_free(event_queue); free(snake_state); return 255; } @@ -406,26 +404,3 @@ int32_t snake_game_app(void* p) { return 0; } - -// Screen is 128x64 px -// (4 + 4) * 16 - 4 + 2 + 2border == 128 -// (4 + 4) * 8 - 4 + 2 + 2border == 64 -// Game field from point{x: 0, y: 0} to point{x: 30, y: 14}. -// The snake turns only in even cells - intersections. -// ┌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┐ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// ╎ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ╎ -// └╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┘ diff --git a/applications/plugins/spi_mem_manager/lib/spi/spi_mem_tools.c b/applications/plugins/spi_mem_manager/lib/spi/spi_mem_tools.c index 7a788241b..3518ca25c 100644 --- a/applications/plugins/spi_mem_manager/lib/spi/spi_mem_tools.c +++ b/applications/plugins/spi_mem_manager/lib/spi/spi_mem_tools.c @@ -74,8 +74,8 @@ bool spi_mem_tools_read_chip_info(SPIMemChip* chip) { bool spi_mem_tools_check_chip_info(SPIMemChip* chip) { SPIMemChip new_chip_info; + spi_mem_tools_read_chip_info(&new_chip_info); do { - if(!spi_mem_tools_read_chip_info(&new_chip_info)) break; if(chip->vendor_id != new_chip_info.vendor_id) break; if(chip->type_id != new_chip_info.type_id) break; if(chip->capacity_id != new_chip_info.capacity_id) break; diff --git a/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_about.c b/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_about.c index 9e0f6f0c6..dc0cc4fe4 100644 --- a/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_about.c +++ b/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_about.c @@ -4,9 +4,8 @@ #define SPI_MEM_VERSION_APP "0.1.0" #define SPI_MEM_DEVELOPER "DrunkBatya" #define SPI_MEM_GITHUB "https://github.com/flipperdevices/flipperzero-firmware" -#define SPI_MEM_NAME "\e#\e! SPI Mem Manager \e!\n" // NOSONAR -#define SPI_MEM_BLANK_INV \ - "\e#\e! \e!\n" // NOSONAR +#define SPI_MEM_NAME "\e#\e! SPI Mem Manager \e!\n" +#define SPI_MEM_BLANK_INV "\e#\e! \e!\n" void spi_mem_scene_about_on_enter(void* context) { SPIMemApp* app = context; @@ -16,11 +15,11 @@ void spi_mem_scene_about_on_enter(void* context) { app->widget, 0, 0, 128, 14, AlignCenter, AlignBottom, SPI_MEM_BLANK_INV, false); widget_add_text_box_element( app->widget, 0, 2, 128, 14, AlignCenter, AlignBottom, SPI_MEM_NAME, false); - furi_string_printf(tmp_string, "\e#%s\n", "Information"); // NOSONAR + furi_string_printf(tmp_string, "\e#%s\n", "Information"); furi_string_cat_printf(tmp_string, "Version: %s\n", SPI_MEM_VERSION_APP); furi_string_cat_printf(tmp_string, "Developed by: %s\n", SPI_MEM_DEVELOPER); furi_string_cat_printf(tmp_string, "Github: %s\n\n", SPI_MEM_GITHUB); - furi_string_cat_printf(tmp_string, "\e#%s\n", "Description"); // NOSONAR + furi_string_cat_printf(tmp_string, "\e#%s\n", "Description"); furi_string_cat_printf( tmp_string, "SPI memory dumper\n" diff --git a/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_delete_confirm.c b/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_delete_confirm.c index 5d0c0b8d8..bb5142452 100644 --- a/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_delete_confirm.c +++ b/applications/plugins/spi_mem_manager/scenes/spi_mem_scene_delete_confirm.c @@ -16,7 +16,7 @@ void spi_mem_scene_delete_confirm_on_enter(void* context) { FuriString* file_name = furi_string_alloc(); FuriString* message = furi_string_alloc(); path_extract_filename(app->file_path, file_name, true); - furi_string_printf(message, "\e#Delete %s?\e#", furi_string_get_cstr(file_name)); // NOSONAR + furi_string_printf(message, "\e#Delete %s?\e#", furi_string_get_cstr(file_name)); widget_add_text_box_element( app->widget, 0, 0, 128, 27, AlignCenter, AlignCenter, furi_string_get_cstr(message), true); widget_add_button_element( diff --git a/applications/plugins/spi_mem_manager/tools/chiplist_convert.py b/applications/plugins/spi_mem_manager/tools/chiplist_convert.py old mode 100755 new mode 100644 diff --git a/applications/plugins/totp/.clang-format b/applications/plugins/totp/.clang-format deleted file mode 100644 index 4b76f7fa4..000000000 --- a/applications/plugins/totp/.clang-format +++ /dev/null @@ -1,191 +0,0 @@ ---- -Language: Cpp -AccessModifierOffset: -4 -AlignAfterOpenBracket: AlwaysBreak -AlignArrayOfStructures: None -AlignConsecutiveMacros: None -AlignConsecutiveAssignments: None -AlignConsecutiveBitFields: None -AlignConsecutiveDeclarations: None -AlignEscapedNewlines: Left -AlignOperands: Align -AlignTrailingComments: false -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: false -AllowShortEnumsOnASingleLine: true -AllowShortBlocksOnASingleLine: Never -AllowShortCaseLabelsOnASingleLine: false -AllowShortFunctionsOnASingleLine: None -AllowShortLambdasOnASingleLine: All -AllowShortIfStatementsOnASingleLine: WithoutElse -AllowShortLoopsOnASingleLine: true -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: Yes -AttributeMacros: - - __capability -BinPackArguments: false -BinPackParameters: false -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterFunction: false - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakBeforeBinaryOperators: None -BreakBeforeConceptDeclarations: true -BreakBeforeBraces: Attach -BreakBeforeInheritanceComma: false -BreakInheritanceList: BeforeColon -BreakBeforeTernaryOperators: false -BreakConstructorInitializersBeforeComma: false -BreakConstructorInitializers: BeforeComma -BreakAfterJavaFieldAnnotations: false -BreakStringLiterals: false -ColumnLimit: 99 -CommentPragmas: '^ IWYU pragma:' -QualifierAlignment: Leave -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: true -DeriveLineEnding: true -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -PackConstructorInitializers: BinPack -BasedOnStyle: '' -ConstructorInitializerAllOnOneLineOrOnePerLine: false -AllowAllConstructorInitializersOnNextLine: true -FixNamespaceComments: false -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - CaseSensitive: false - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false -IndentCaseLabels: false -IndentCaseBlocks: false -IndentGotoLabels: true -IndentPPDirectives: None -IndentExternBlock: AfterExternBlock -IndentRequires: false -IndentWidth: 4 -IndentWrappedFunctionNames: true -InsertTrailingCommas: None -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: false -LambdaBodyIndentation: Signature -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 4 -ObjCBreakBeforeNestedBlockParam: true -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true -PenaltyBreakAssignment: 10 -PenaltyBreakBeforeFirstCallParameter: 30 -PenaltyBreakComment: 10 -PenaltyBreakFirstLessLess: 0 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakString: 10 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 100 -PenaltyReturnTypeOnItsOwnLine: 60 -PenaltyIndentedWhitespace: 0 -PointerAlignment: Left -PPIndentWidth: -1 -ReferenceAlignment: Pointer -ReflowComments: false -RemoveBracesLLVM: false -SeparateDefinitionBlocks: Leave -ShortNamespaceLines: 1 -SortIncludes: Never -SortJavaStaticImport: Before -SortUsingDeclarations: false -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: false -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: Never -SpaceBeforeParensOptions: - AfterControlStatements: false - AfterForeachMacros: false - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: false - AfterOverloadedOperator: false - BeforeNonEmptyParentheses: false -SpaceAroundPointerQualifiers: Default -SpaceBeforeRangeBasedForLoopColon: true -SpaceInEmptyBlock: false -SpaceInEmptyParentheses: false -SpacesBeforeTrailingComments: 1 -SpacesInAngles: Never -SpacesInConditionalStatement: false -SpacesInContainerLiterals: false -SpacesInCStyleCastParentheses: false -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParentheses: false -SpacesInSquareBrackets: false -SpaceBeforeSquareBrackets: false -BitFieldColonSpacing: Both -Standard: c++03 -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 4 -UseCRLF: false -UseTab: Never -WhitespaceSensitiveMacros: - - STRINGIZE - - PP_STRINGIZE - - BOOST_PP_STRINGIZE - - NS_SWIFT_NAME - - CF_SWIFT_NAME -... - diff --git a/applications/plugins/sentry_safe/LICENSE b/applications/plugins/totp/LICENSE similarity index 96% rename from applications/plugins/sentry_safe/LICENSE rename to applications/plugins/totp/LICENSE index c0cd6b598..65504e7b1 100644 --- a/applications/plugins/sentry_safe/LICENSE +++ b/applications/plugins/totp/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Etienne Sellan +Copyright (c) 2022 Alexander Kopachov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/applications/plugins/totp/application.fam b/applications/plugins/totp/application.fam index 81b0e22c3..f6a61f119 100644 --- a/applications/plugins/totp/application.fam +++ b/applications/plugins/totp/application.fam @@ -1,5 +1,5 @@ App( - appid="Authenticator", + appid="totp", name="Authenticator", apptype=FlipperAppType.EXTERNAL, entry_point="totp_app", diff --git a/applications/plugins/totp/services/config/config.c b/applications/plugins/totp/services/config/config.c index a11f3b116..76c72707c 100644 --- a/applications/plugins/totp/services/config/config.c +++ b/applications/plugins/totp/services/config/config.c @@ -132,7 +132,7 @@ static TotpConfigFileOpenResult totp_open_config_file(Storage* storage, FlipperF flipper_format_write_comment_cstr(fff_data_file, " "); flipper_format_write_comment_cstr( fff_data_file, - "How to notify user when new token is generated or badkb mode is activated (possible values: 0 - do not notify, 1 - sound, 2 - vibro, 3 sound and vibro)"); + "How to notify user when new token is generated or badusb mode is activated (possible values: 0 - do not notify, 1 - sound, 2 - vibro, 3 sound and vibro)"); flipper_format_write_uint32( fff_data_file, TOTP_CONFIG_KEY_NOTIFICATION_METHOD, &tmp_uint32, 1); diff --git a/applications/plugins/totp/ui/scenes/app_settings/totp_app_settings.c b/applications/plugins/totp/ui/scenes/app_settings/totp_app_settings.c index fa4ba5411..b8936f395 100644 --- a/applications/plugins/totp/ui/scenes/app_settings/totp_app_settings.c +++ b/applications/plugins/totp/ui/scenes/app_settings/totp_app_settings.c @@ -1,6 +1,6 @@ #include "totp_app_settings.h" #include -#include +#include #include "../../ui_controls.h" #include "../../common_dialogs.h" #include "../../scene_director.h" @@ -247,4 +247,4 @@ void totp_scene_app_settings_deactivate(PluginState* plugin_state) { void totp_scene_app_settings_free(const PluginState* plugin_state) { UNUSED(plugin_state); -} +} \ No newline at end of file diff --git a/applications/plugins/totp/ui/scenes/authenticate/totp_scene_authenticate.c b/applications/plugins/totp/ui/scenes/authenticate/totp_scene_authenticate.c index d4977050f..c595b5bd0 100644 --- a/applications/plugins/totp/ui/scenes/authenticate/totp_scene_authenticate.c +++ b/applications/plugins/totp/ui/scenes/authenticate/totp_scene_authenticate.c @@ -1,6 +1,6 @@ #include "totp_scene_authenticate.h" #include -#include +#include #include "../../../types/common.h" #include "../../constants.h" #include "../../../services/config/config.h" diff --git a/applications/plugins/totp/ui/scenes/generate_token/totp_scene_generate_token.c b/applications/plugins/totp/ui/scenes/generate_token/totp_scene_generate_token.c index 18d1791f4..51c2e7702 100644 --- a/applications/plugins/totp/ui/scenes/generate_token/totp_scene_generate_token.c +++ b/applications/plugins/totp/ui/scenes/generate_token/totp_scene_generate_token.c @@ -1,7 +1,7 @@ #include #include #include -#include +#include #include "totp_scene_generate_token.h" #include "../../../types/token_info.h" #include "../../../types/common.h" @@ -24,7 +24,7 @@ typedef struct { uint32_t last_token_gen_time; TotpTypeCodeWorkerContext* type_code_worker_context; NotificationMessage const** notification_sequence_new_token; - NotificationMessage const** notification_sequence_badkb; + NotificationMessage const** notification_sequence_badusb; } SceneState; static const NotificationSequence* @@ -69,8 +69,8 @@ static const NotificationSequence* } static const NotificationSequence* - get_notification_sequence_badkb(const PluginState* plugin_state, SceneState* scene_state) { - if(scene_state->notification_sequence_badkb == NULL) { + get_notification_sequence_badusb(const PluginState* plugin_state, SceneState* scene_state) { + if(scene_state->notification_sequence_badusb == NULL) { uint8_t i = 0; uint8_t length = 3; if(plugin_state->notification_method & NotificationMethodVibro) { @@ -81,36 +81,36 @@ static const NotificationSequence* length += 6; } - scene_state->notification_sequence_badkb = malloc(sizeof(void*) * length); - furi_check(scene_state->notification_sequence_badkb != NULL); + scene_state->notification_sequence_badusb = malloc(sizeof(void*) * length); + furi_check(scene_state->notification_sequence_badusb != NULL); - scene_state->notification_sequence_badkb[i++] = &message_blue_255; + scene_state->notification_sequence_badusb[i++] = &message_blue_255; if(plugin_state->notification_method & NotificationMethodVibro) { - scene_state->notification_sequence_badkb[i++] = &message_vibro_on; + scene_state->notification_sequence_badusb[i++] = &message_vibro_on; } if(plugin_state->notification_method & NotificationMethodSound) { - scene_state->notification_sequence_badkb[i++] = &message_note_d5; //-V525 - scene_state->notification_sequence_badkb[i++] = &message_delay_50; - scene_state->notification_sequence_badkb[i++] = &message_note_e4; - scene_state->notification_sequence_badkb[i++] = &message_delay_50; - scene_state->notification_sequence_badkb[i++] = &message_note_f3; + scene_state->notification_sequence_badusb[i++] = &message_note_d5; //-V525 + scene_state->notification_sequence_badusb[i++] = &message_delay_50; + scene_state->notification_sequence_badusb[i++] = &message_note_e4; + scene_state->notification_sequence_badusb[i++] = &message_delay_50; + scene_state->notification_sequence_badusb[i++] = &message_note_f3; } - scene_state->notification_sequence_badkb[i++] = &message_delay_50; + scene_state->notification_sequence_badusb[i++] = &message_delay_50; if(plugin_state->notification_method & NotificationMethodVibro) { - scene_state->notification_sequence_badkb[i++] = &message_vibro_off; + scene_state->notification_sequence_badusb[i++] = &message_vibro_off; } if(plugin_state->notification_method & NotificationMethodSound) { - scene_state->notification_sequence_badkb[i++] = &message_sound_off; + scene_state->notification_sequence_badusb[i++] = &message_sound_off; } - scene_state->notification_sequence_badkb[i++] = NULL; + scene_state->notification_sequence_badusb[i++] = NULL; } - return (NotificationSequence*)scene_state->notification_sequence_badkb; + return (NotificationSequence*)scene_state->notification_sequence_badusb; } static void int_token_to_str(uint32_t i_token_code, char* str, TokenDigitsCount len) { @@ -340,7 +340,7 @@ bool totp_scene_generate_token_handle_event( scene_state->type_code_worker_context, TotpTypeCodeWorkerEventType); notification_message( plugin_state->notification_app, - get_notification_sequence_badkb(plugin_state, scene_state)); + get_notification_sequence_badusb(plugin_state, scene_state)); return true; } @@ -399,8 +399,8 @@ void totp_scene_generate_token_deactivate(PluginState* plugin_state) { free(scene_state->notification_sequence_new_token); } - if(scene_state->notification_sequence_badkb != NULL) { - free(scene_state->notification_sequence_badkb); + if(scene_state->notification_sequence_badusb != NULL) { + free(scene_state->notification_sequence_badusb); } free(scene_state); diff --git a/applications/plugins/totp/ui/ui_controls.c b/applications/plugins/totp/ui/ui_controls.c index 7fc7f0111..af029dd9f 100644 --- a/applications/plugins/totp/ui/ui_controls.c +++ b/applications/plugins/totp/ui/ui_controls.c @@ -1,5 +1,5 @@ #include "ui_controls.h" -#include +#include #include "constants.h" #define TEXT_BOX_HEIGHT 13 diff --git a/applications/plugins/weather_station/application.fam b/applications/plugins/weather_station/application.fam index 21f6dc7bf..935f92573 100644 --- a/applications/plugins/weather_station/application.fam +++ b/applications/plugins/weather_station/application.fam @@ -1,5 +1,5 @@ App( - appid="Weather_Station", + appid="weather_station", name="Weather Station", apptype=FlipperAppType.PLUGIN, targets=["f7"], diff --git a/applications/plugins/weather_station/views/weather_station_receiver.c b/applications/plugins/weather_station/views/weather_station_receiver.c index ecfeba09c..f8e2e3288 100644 --- a/applications/plugins/weather_station/views/weather_station_receiver.c +++ b/applications/plugins/weather_station/views/weather_station_receiver.c @@ -1,6 +1,6 @@ #include "weather_station_receiver.h" #include "../weather_station_app_i.h" -#include +#include #include #include diff --git a/applications/plugins/weather_station/views/weather_station_receiver_info.c b/applications/plugins/weather_station/views/weather_station_receiver_info.c index d8df737e5..b3b3f2193 100644 --- a/applications/plugins/weather_station/views/weather_station_receiver_info.c +++ b/applications/plugins/weather_station/views/weather_station_receiver_info.c @@ -1,6 +1,6 @@ #include "weather_station_receiver.h" #include "../weather_station_app_i.h" -#include "Weather_Station_icons.h" +#include "weather_station_icons.h" #include "../protocols/ws_generic.h" #include #include diff --git a/applications/plugins/wifi_marauder_companion/wifi_marauder_app.c b/applications/plugins/wifi_marauder_companion/wifi_marauder_app.c index 79d35a808..1deb4e6f2 100644 --- a/applications/plugins/wifi_marauder_companion/wifi_marauder_app.c +++ b/applications/plugins/wifi_marauder_companion/wifi_marauder_app.c @@ -92,6 +92,9 @@ void wifi_marauder_app_free(WifiMarauderApp* app) { int32_t wifi_marauder_app(void* p) { UNUSED(p); + furi_hal_power_enable_otg(); + furi_delay_ms(300); + WifiMarauderApp* wifi_marauder_app = wifi_marauder_app_alloc(); wifi_marauder_app->uart = wifi_marauder_uart_init(wifi_marauder_app); @@ -100,5 +103,7 @@ int32_t wifi_marauder_app(void* p) { wifi_marauder_app_free(wifi_marauder_app); + furi_hal_power_disable_otg(); + return 0; }