From e8a1718b8eb9de0c4ee7243f3ad0b977c77d6321 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 2 May 2023 17:53:54 +0100 Subject: [PATCH 1/4] Update apps --- .../external/asteroids/application.fam | 2 +- .../external/bpmtapper/img/screenshot.png | Bin 1987 -> 0 bytes .../brainfuck/icons/DolphinCommon_56x48.png | Bin 1416 -> 0 bytes .../external/brainfuck/icons/Text_10x10.png | Bin 158 -> 0 bytes .../external/cli_bridge/internal_defs.h | 4 +- .../external/doom/assets/screenshot1.png | Bin 1487 -> 0 bytes .../external/doom/assets/screenshot2.png | Bin 1705 -> 0 bytes .../external/doom/assets/screenshot3.png | Bin 1629 -> 0 bytes applications/external/geiger/flipper_geiger.c | 59 +++++++++----- .../GPIO_reader.c | 0 .../GPIO_reader_item.c | 0 .../GPIO_reader_item.h | 0 .../application.fam | 0 .../{gpio_reader_a => gpioreader_a}/icon.png | Bin .../{gpio_reader_b => gpioreader_b}/LICENSE | 0 .../application.fam | 0 .../gpio_app.c | 0 .../gpio_app.h | 0 .../gpio_app_i.h | 0 .../gpio_custom_event.h | 0 .../gpio_item.c | 0 .../gpio_item.h | 0 .../{gpio_reader_b => gpioreader_b}/icon.png | Bin .../scenes/gpio_scene.c | 0 .../scenes/gpio_scene.h | 0 .../scenes/gpio_scene_config.h | 0 .../scenes/gpio_scene_reader.c | 0 .../scenes/gpio_scene_start.c | 0 .../scenes/gpio_scene_test.c | 0 .../scenes/gpio_scene_usb_uart.c | 0 .../scenes/gpio_scene_usb_uart_close_rpc.c | 0 .../scenes/gpio_scene_usb_uart_config.c | 0 .../usb_uart_bridge.c | 0 .../usb_uart_bridge.h | 0 .../views/gpio_reader.c | 0 .../views/gpio_reader.h | 0 .../views/gpio_test.c | 0 .../views/gpio_test.h | 0 .../views/gpio_usb_uart.c | 2 +- .../views/gpio_usb_uart.h | 0 .../external/metronome/img/screenshot.png | Bin 1978 -> 0 bytes .../external/minesweeper/img/screenshot.png | Bin 1842 -> 0 bytes .../application.fam | 1 + .../tracker_engine/speaker_hal.c | 11 +-- .../tracker_engine/speaker_hal.h | 0 .../tracker_engine/tracker.c | 0 .../tracker_engine/tracker.h | 0 .../tracker_engine/tracker_notes.h | 0 .../tracker_engine/tracker_song.h | 0 .../view/tracker_view.c | 0 .../view/tracker_view.h | 0 .../zero_tracker.c | 0 .../zero_tracker.h | 0 .../zero_tracker.png | Bin .../application.fam | 0 .../clock.png | Bin .../clock_app.c | 0 .../clock_app.h | 0 .../external/pomodoro/flipp_pomodoro_app.c | 1 + .../pomodoro/modules/flipp_pomodoro.c | 5 ++ applications/external/pong/flipper_pong.c | 30 +++---- applications/external/rc2014_coleco/coleco.c | 22 +++--- .../rubiks_cube_scrambler.c | 35 ++++----- .../rubiks_cube_scrambler/scrambler.c | 74 ++++-------------- .../rubiks_cube_scrambler/scrambler.h | 1 - .../timelapse/icons/ButtonDownHollow_7x4.png | Bin 0 -> 173 bytes .../timelapse/icons/ButtonLeftHollow_4x7.png | Bin 0 -> 149 bytes .../timelapse/icons/ButtonRightHollow_4x7.png | Bin 0 -> 147 bytes .../timelapse/icons/ButtonUpHollow_7x4.png | Bin 0 -> 143 bytes applications/external/timelapse/zeitraffer.c | 32 +++++--- .../external/{wii_ec_anal => wiiec}/LICENSE | 0 .../external/{wii_ec_anal => wiiec}/WiiEC.png | Bin .../_image_tool/LICENSE | 0 .../{wii_ec_anal => wiiec}/_image_tool/README | 0 .../_image_tool/_convert.c | 0 .../_image_tool/_convert.sh | 0 .../_image_tool/_convert_images.c | 0 .../_image_tool/_convert_images.h | 0 .../_image_tool/_convert_test.c | 0 .../{wii_ec_anal => wiiec}/application.fam | 0 .../{wii_ec_anal => wiiec}/bc_logging.h | 0 .../external/{wii_ec_anal => wiiec}/err.h | 0 .../{wii_ec_anal => wiiec}/gfx/images.c | 0 .../{wii_ec_anal => wiiec}/gfx/images.h | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_0.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_1.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_2.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_3.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_4.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_5.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_6.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_7.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_8.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_9.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_3x5_v.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_0.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_1.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_2.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_3.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_4.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_5.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_6.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_7.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_8.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_9.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_A.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_B.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_C.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_D.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_E.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_5x7_F.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_0.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_1.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_2.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_3.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_4.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_5.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_6.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_7.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_8.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_9.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_A.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_B.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_C.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_D.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_E.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_F.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_G.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_X.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_Y.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_Z.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_d_.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_n_.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_6x8_v_.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_RIP.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_cc_Cable.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_cc_Joy.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_cc_Main.c | 0 .../gfx/img_cc_btn_A1.c | 0 .../gfx/img_cc_btn_B1.c | 0 .../gfx/img_cc_btn_X1.c | 0 .../gfx/img_cc_btn_Y1.c | 0 .../gfx/img_cc_pad_LR1.c | 0 .../gfx/img_cc_pad_UD1.c | 0 .../gfx/img_cc_trg_L1.c | 0 .../gfx/img_cc_trg_L2.c | 0 .../gfx/img_cc_trg_L3.c | 0 .../gfx/img_cc_trg_L4.c | 0 .../gfx/img_cc_trg_R1.c | 0 .../gfx/img_cc_trg_R2.c | 0 .../gfx/img_cc_trg_R3.c | 0 .../gfx/img_cc_trg_R4.c | 0 .../gfx/img_csLogo_FULL.c | 0 .../gfx/img_csLogo_Small.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_ecp_SCL.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_ecp_SDA.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_ecp_port.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_Back.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_D.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_L.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_OK.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_OKi.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_R.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_U.c | 0 .../{wii_ec_anal => wiiec}/gfx/img_key_Ui.c | 0 .../{wii_ec_anal => wiiec}/i2c_workaround.h | 0 .../external/{wii_ec_anal => wiiec}/info.sh | 0 .../{wii_ec_anal => wiiec}/wii_anal.c | 25 ++++-- .../{wii_ec_anal => wiiec}/wii_anal.h | 3 +- .../{wii_ec_anal => wiiec}/wii_anal_ec.c | 0 .../{wii_ec_anal => wiiec}/wii_anal_ec.h | 0 .../{wii_ec_anal => wiiec}/wii_anal_keys.c | 0 .../{wii_ec_anal => wiiec}/wii_anal_keys.h | 0 .../{wii_ec_anal => wiiec}/wii_anal_lcd.c | 0 .../{wii_ec_anal => wiiec}/wii_anal_lcd.h | 0 .../{wii_ec_anal => wiiec}/wii_anal_ver.h | 1 + .../external/{wii_ec_anal => wiiec}/wii_ec.c | 0 .../external/{wii_ec_anal => wiiec}/wii_ec.h | 0 .../{wii_ec_anal => wiiec}/wii_ec_classic.c | 0 .../{wii_ec_anal => wiiec}/wii_ec_classic.h | 0 .../{wii_ec_anal => wiiec}/wii_ec_macros.h | 0 .../{wii_ec_anal => wiiec}/wii_ec_nunchuck.c | 0 .../{wii_ec_anal => wiiec}/wii_ec_nunchuck.h | 0 .../{wii_ec_anal => wiiec}/wii_ec_udraw.c | 0 .../{wii_ec_anal => wiiec}/wii_ec_udraw.h | 0 .../external/{wii_ec_anal => wiiec}/wii_i2c.c | 0 .../external/{wii_ec_anal => wiiec}/wii_i2c.h | 0 187 files changed, 149 insertions(+), 159 deletions(-) delete mode 100644 applications/external/bpmtapper/img/screenshot.png delete mode 100644 applications/external/brainfuck/icons/DolphinCommon_56x48.png delete mode 100644 applications/external/brainfuck/icons/Text_10x10.png delete mode 100644 applications/external/doom/assets/screenshot1.png delete mode 100644 applications/external/doom/assets/screenshot2.png delete mode 100644 applications/external/doom/assets/screenshot3.png rename applications/external/{gpio_reader_a => gpioreader_a}/GPIO_reader.c (100%) rename applications/external/{gpio_reader_a => gpioreader_a}/GPIO_reader_item.c (100%) rename applications/external/{gpio_reader_a => gpioreader_a}/GPIO_reader_item.h (100%) rename applications/external/{gpio_reader_a => gpioreader_a}/application.fam (100%) rename applications/external/{gpio_reader_a => gpioreader_a}/icon.png (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/LICENSE (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/application.fam (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_app.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_app.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_app_i.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_custom_event.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_item.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/gpio_item.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/icon.png (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_config.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_reader.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_start.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_test.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_usb_uart.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_usb_uart_close_rpc.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/scenes/gpio_scene_usb_uart_config.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/usb_uart_bridge.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/usb_uart_bridge.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_reader.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_reader.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_test.c (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_test.h (100%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_usb_uart.c (98%) rename applications/external/{gpio_reader_b => gpioreader_b}/views/gpio_usb_uart.h (100%) delete mode 100644 applications/external/metronome/img/screenshot.png delete mode 100644 applications/external/minesweeper/img/screenshot.png rename applications/external/{musictracker => music_tracker}/application.fam (90%) rename applications/external/{musictracker => music_tracker}/tracker_engine/speaker_hal.c (91%) rename applications/external/{musictracker => music_tracker}/tracker_engine/speaker_hal.h (100%) rename applications/external/{musictracker => music_tracker}/tracker_engine/tracker.c (100%) rename applications/external/{musictracker => music_tracker}/tracker_engine/tracker.h (100%) rename applications/external/{musictracker => music_tracker}/tracker_engine/tracker_notes.h (100%) rename applications/external/{musictracker => music_tracker}/tracker_engine/tracker_song.h (100%) rename applications/external/{musictracker => music_tracker}/view/tracker_view.c (100%) rename applications/external/{musictracker => music_tracker}/view/tracker_view.h (100%) rename applications/external/{musictracker => music_tracker}/zero_tracker.c (100%) rename applications/external/{musictracker => music_tracker}/zero_tracker.h (100%) rename applications/external/{musictracker => music_tracker}/zero_tracker.png (100%) rename applications/external/{nightstand_clock => nightstand}/application.fam (100%) rename applications/external/{nightstand_clock => nightstand}/clock.png (100%) rename applications/external/{nightstand_clock => nightstand}/clock_app.c (100%) rename applications/external/{nightstand_clock => nightstand}/clock_app.h (100%) create mode 100644 applications/external/timelapse/icons/ButtonDownHollow_7x4.png create mode 100644 applications/external/timelapse/icons/ButtonLeftHollow_4x7.png create mode 100644 applications/external/timelapse/icons/ButtonRightHollow_4x7.png create mode 100644 applications/external/timelapse/icons/ButtonUpHollow_7x4.png rename applications/external/{wii_ec_anal => wiiec}/LICENSE (100%) rename applications/external/{wii_ec_anal => wiiec}/WiiEC.png (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/LICENSE (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/README (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/_convert.c (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/_convert.sh (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/_convert_images.c (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/_convert_images.h (100%) rename applications/external/{wii_ec_anal => wiiec}/_image_tool/_convert_test.c (100%) rename applications/external/{wii_ec_anal => wiiec}/application.fam (100%) rename applications/external/{wii_ec_anal => wiiec}/bc_logging.h (100%) rename applications/external/{wii_ec_anal => wiiec}/err.h (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/images.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/images.h (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_0.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_2.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_3.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_4.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_5.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_6.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_7.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_8.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_9.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_3x5_v.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_0.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_2.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_3.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_4.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_5.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_6.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_7.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_8.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_9.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_A.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_B.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_C.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_D.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_E.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_5x7_F.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_0.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_2.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_3.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_4.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_5.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_6.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_7.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_8.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_9.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_A.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_B.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_C.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_D.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_E.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_F.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_G.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_X.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_Y.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_Z.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_d_.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_n_.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_6x8_v_.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_RIP.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_Cable.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_Joy.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_Main.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_btn_A1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_btn_B1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_btn_X1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_btn_Y1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_pad_LR1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_pad_UD1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_L1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_L2.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_L3.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_L4.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_R1.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_R2.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_R3.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_cc_trg_R4.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_csLogo_FULL.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_csLogo_Small.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_ecp_SCL.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_ecp_SDA.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_ecp_port.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_Back.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_D.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_L.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_OK.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_OKi.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_R.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_U.c (100%) rename applications/external/{wii_ec_anal => wiiec}/gfx/img_key_Ui.c (100%) rename applications/external/{wii_ec_anal => wiiec}/i2c_workaround.h (100%) rename applications/external/{wii_ec_anal => wiiec}/info.sh (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal.c (96%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal.h (98%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_ec.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_ec.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_keys.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_keys.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_lcd.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_lcd.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_anal_ver.h (85%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_classic.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_classic.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_macros.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_nunchuck.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_nunchuck.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_udraw.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_ec_udraw.h (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_i2c.c (100%) rename applications/external/{wii_ec_anal => wiiec}/wii_i2c.h (100%) diff --git a/applications/external/asteroids/application.fam b/applications/external/asteroids/application.fam index 5f70a0e1c..5eb43a6e5 100644 --- a/applications/external/asteroids/application.fam +++ b/applications/external/asteroids/application.fam @@ -8,8 +8,8 @@ App( stack_size=8 * 1024, order=50, fap_icon="appicon.png", - fap_icon_assets="assets", # Image assets to compile for this application fap_category="Games", + fap_icon_assets="assets", # Image assets to compile for this application fap_description="An implementation of the classic arcade game Asteroids", fap_author="antirez, SimplyMinimal", fap_weburl="https://github.com/SimplyMinimal/FlipperZero-Asteroids", diff --git a/applications/external/bpmtapper/img/screenshot.png b/applications/external/bpmtapper/img/screenshot.png deleted file mode 100644 index fbba2aad9026c40fd85788ed73ff4279b825cff0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1987 zcmd6odrVVT9LG;VMd}pe#uOzmmpGkOqBfum3r-n`Tfq8&ImJqd)U+y$4q94hL543L zH3sIa(7JU3N*}O_6``$*NEa+tx?t0AB7_6j(SH_E-*WatGgx-G?XuENPv4P!*UZs{ruH zii`gI0IhOtD7maE=7XZn?;bsvoZh~Wt$x{HxpeNxr>hI9(H9*;=tT0a$u8|@HP@%7 zol}lrV9g!I0bpJYz|Zr*j&cCbF9QJY1wPsXKy+Tj6fcT3vvSMA@sD#mxKoO()9ND; z8nObbInVGHRiWRe`GWjfb^uNw9PaOO9LMxgPRCZUG?QdeOH9eZ=Ir$#e;o=eUE|&& zUgooDpjJN^3yr63r?PIRPq#*<{?=)1&Pw1mrL)UYY|a)fZF;T0N6MoP)JbTElu5C| z5{8)3CfOqEhVN+S@@yum5l;BU>mSXerto~66ULMpd>@JACjB7&kifc(|a@y3Q8c^6|1 zLR&CZIEf=g@P~bA?OO}ff#UI-N7LIlVX?CzX}N{e#!1!PbFo#tiklvHIa_?{z4A_R zPmDlkXi*4j1oP)D>V)-s5JPUaGDajeu5p&*FX{|R68TZmwok+#@H8mLFaLEK%jd2e?SdNg^r3ZKH622T}j7VeDxy93?4e6yRY8%^9_KL2{`66C;wm*hfi+tQA>3*2K(*Yn^c#BY zkT|XKTo1j=y;QN@*>o9!no@-dO!mtw3O#tIt)58W_i_|ZYbkPVw#eGLdFlva$4Ki^ z6bE6K8`Qr^{5S0XyUDy}2ACO}Qi@qlSQn*87;>GARYs92`Hu(otK_UQGhC~MzA5lH zvyK8bq_oYn8pEI~%1qgC;X6~yn~VW7II}@&4qwY3UQMI3a*7;Eh>nC%g{rT_;&htX z=AF8h`w%?@LDVY{@@q{3J;~21f(CIqnXVo7Q{V8A&>jdL24II-34p0y3~!;L_7*a|J9u1OY(0B z2VvdH!zn>8L~zuKFFpTjd3gS%8moZU2kYz|Bz^W-yz)fIbNV~WX51p;ZlyP8>UcR; z=Qu*VVHY8b+ibta5WO}v2sfSGDB&Gu*(sCM4)3Y}Zvr1tCIjHHy%aHYimZ&dHkE@z zSTyVn&hPW6ojdXVYtEoCGpeOf9jtJ{TNNxOfkdE|zEOqoXeLJ6#659;>VU+_cVx{* zUGczC%ihT&pA`nZ;4;mflt>bxt~94RJ2AqBE3;isS~1WLKP9Cy(TGAXz@W?q*=Ahr z+-LjkY$A8F&QhMLOYL?nO~7w!tJ&`{q2fpHKKf($wXr}jp|V^JJry$s_w+Ud%X|{$ zW~{*G^3m*lCz}?^7-C}>*BN%LM02sJPRg+Mu|?k4m#Y>OG409lA3?-dUb+f|{K3Hc zT&Av*Ir2WEksmn56FpgUw4Y>jDeADgt<1Fu0+vw#QSOuRs>y;+H1?Enmgi{FZ*z8O z#WU2~UdZ~w^D!OMZTD*%O}x9GFyHhgxsE=p&`WatkXMKyA-7b%xiWJA<-V0c+!yiD JqMgUi{0T658(RPX diff --git a/applications/external/brainfuck/icons/DolphinCommon_56x48.png b/applications/external/brainfuck/icons/DolphinCommon_56x48.png deleted file mode 100644 index 089aaed83507431993a76ca25d32fdd9664c1c84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1416 zcmaJ>eNYr-7(dh;KXS5&nWVIBjS_NizYg|x=Pr^vz*7zxJO|P-dw2IeZq?gec9-rD zoPZchQ_6}yP{Slc4I!!28K==nodOJ_nsCY-(wOq2uZbLx!rlYU{KIi)_Wj!D_j`WN z^FGgREXdEDF)ewT&1Re7Tj(uBvlG44lnH3;I%IzsO|z`*Vr!`uv?9QOwgs{#Ld+Ki zC9n_zxxBOkx@@+IwMwAaD)#3Ik`}gun2kLe))Crfb7e+#AgzHGCc+X$b>qJuIf`S7 z?8b}I{ghw#z>uiaLknQh@LJUrqHcVYS3v97F^OZN zCe|7^J|?QzUx0Zu17e(=CM1fYFpjtLk|a4~$g}e?hGH0!VoBOT&<=s(1ct%J9~?O} z$)jW_dkX9yTX~%W*i_IM%0{ z7EmP^_pKn`<5>E(SixgJU};7`)7Hidp&+DLnizsebUk}_-GfgbN^il9b`v)f+ z{o5Zry)d<7`fHQ^uw_;+x>mcPw0&8iW69x{k92O{Q}`yFdH=5d$pbf49w1&NS)G+vhr6y}5TMsofQirRDUmKilk5=(KGouJ{H9hW=$X zgi;)vI!jl!_4H3jD(?Jz=8By|i47I&tKA1y9{nfp;_|FxKBDNWp{hN9hJ1nU?z%J6 z?>UxyzWvO}Pgc~rCZ#5%Eq+_hNS~bBdiGlT&f%%e`hHjSySR2=JuK2^+%;$R3#Wz~ z=e_mfqW23bPa0fhe)HdE5+GelU&!jS3ckUZOQ)CC5?mo zo=tzG_4|RuvPUO|mhCwA>y)1c%SWC%a4?a-x|J*?ch~+n=R7o@>p6J2dE=$stKZmK z-xoTRwET2^Wu)&1U7!Ebw!!D?x`xwQX3pMnrRwCT?`4GHt4&?|cIiI{_^XYp-np>6 xE^lPSXzOYCC4X`6tl@OB1M5_S7jml-Y~(TPp{aTIejNKZ`m*!Atyxdk{0EAy49frj diff --git a/applications/external/brainfuck/icons/Text_10x10.png b/applications/external/brainfuck/icons/Text_10x10.png deleted file mode 100644 index 8e8a6183dd50535729dc9c9b4f220a12dd4c600f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2VGmzZ%#=aj&u?6^qxB}__|Nk$&IsYz@rRC}3 z7*a7OIiZ2U&CSi=;0cBn1vTatM&Z;3u7g(^G9`qQn09G2aWeNXaKC0S=Q~tg57Z@F z;u=vBoS#-wo>-L1;E+?AmspUPnOCA;ke9BToS%}K{MA`f4ycg9)78&qol`;+00Iau A9smFU diff --git a/applications/external/cli_bridge/internal_defs.h b/applications/external/cli_bridge/internal_defs.h index 9840d008b..09fe6169c 100644 --- a/applications/external/cli_bridge/internal_defs.h +++ b/applications/external/cli_bridge/internal_defs.h @@ -79,8 +79,8 @@ typedef struct { void* view_dispatcher; void* primary_menu; - void* plugins_menu; - void* debug_menu; + // void* plugins_menu; + // void* debug_menu; void* settings_menu; volatile uint8_t lock_count; diff --git a/applications/external/doom/assets/screenshot1.png b/applications/external/doom/assets/screenshot1.png deleted file mode 100644 index 1ecb073a69f3692705a6b5a76947d7ceb6dfab3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmeAS@N?(olHy`uVBq!ia0y~yU;;8388|?c*QZDWAjMhW5n0T@z;^_M8K-LVNi#68 zHhQ`^hE&XXdpEZ4vK2!^pjDFPnts;}cGsHUNv|pqJ$dkF@&4j@XufgnYUZ5(uw}k>|NTEd%o!%JFerF2Ff1~=&hTLF*2b+r>I@HYK!kuYr=%Ey&zRmn z{V}~wkilUJ1A_}EkTPZPOU(Nf(Wjnnz(ht!Zjxu1erwnIzxR%Z2mY>#>_##fY5|mb z&G19ReQx=Cn_8|OpcA1kC7yc2e!%_aF8BX8`ww^FG$4lkz|ySecdze@yOzYlAfU>? z5XeLdm1@u6_i*30<3%=>%}72mWmq<2_P*(l&+{PSK_i=iXXRPb`oDkvet#^w|C{K2 z^f0gYIp5S&EI>K^{-jhoIo;n z-hrAa6MueRTm1k04fY#V4E|{d8=hJ*OfxUCpRa3toqf*7njMpn3?=mO6 z-~W1_!y4oSRmz}~`QG-I`c|}@-=njfUINCNluyfcg6EL4^Lj#zL0|OZYpoX@tf8A{+~Jj;ojfI{#nPj%N-Dw zK*UZYGed_FA|_D_msz)jD_+mjU8l=XVTbV3ij}4f+Hd#P|2p%_B{BE$y6SiGUuX3c z|C#^z)c@mc_s%P>XF5;>P3vvf7`~kozi;~7!f3zQ=IgIt{oZlzO}({o`OlTdKcAHO zUmE*!FH%B^dS=DYw{@%E=JLJl7T2a`o4FwpwR1Lua&eIIdG>@mH?LIpi1*e%!5?luH~HN2J?DHr z=X-9+r_mf|+I|`UI7dZ>odmG6zEZ$(8;-8V`B}j!Co)b5;PUJCL%HVb@(O@`d{o#+ zpNXoLrg>RY5niFAK?`}!%J<&T4HcbZd-?2n>2TnD8DFF>OiLIz@h;PoQ4_fNd`+iK zg7r-iMuk~q54?U9p!WX~?YO!Cae*xUUT}L8;DjBx8L%1NCP0UW@AYEoXJa)P~Q7phEag={jZfCBb`0W+=8F1uTS0ken2%i&!e9Gs`Y0Yt7OB4!#Zeuwn& zF0~8elq;?IeCg6N!HUMBh_z|*;_sMpC<4PVmM25y9-;Q1Tw}I$+crGWm&oFjvh@WT zZnFB!jU~3jf3;#=K#KUrj%?*%J~Z;hth!dE_VXQcw>{>=Tf$q;{w>{{Et+`iJKwF0 z(?k(-d@%k&VUx5!9zbp4sOb@E`O{NRD`nh70N<;guLst{h_CljNUY7aBN zCv)zv2R`WijCKtw=`?v}Fno@P@ zyjOwIVnasN304<#Q_4`ad2E=v9AN6oz%})@2Sjl+^&zGW?h}Uzmdu-EzI38EC7h$_ z#N|TqqWQpm!F8dbJtpQ$qUE_DxE|1=cjGY16rq z89qAv|Dg-@N@}r(~GK;}F|lEj6~VwKR_T{r4j+V+hiB=7pi;XwHa-#kc^T>@e&^j z_9G$qLrJaQlxV!dERY^o4oDp}x{>06uaN3fN*WBkxO43${i$Bl@1x_@`f6Np5G&$I zE$a{Q?6O53+hBI$wyg;Uh<4H{bPzZ`R>eQ7p;qZeDk=z}9?89XtC8DCjcYH;P4YcM zlx+B5jj0!F%F#YaEo&-p6*+)cUes&pa#8f->~(Xot~*GH2UB7zcXwgW$&o8eC*JwT Q)_)H~g-3_UKTbaPH)Y0Q@&Et; diff --git a/applications/external/doom/assets/screenshot3.png b/applications/external/doom/assets/screenshot3.png deleted file mode 100644 index b5aec03fdccb77f978d836ea80ecb1ee898154a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1629 zcmc&#drVVj6hDR04n$z0ggRHr%z_#6kY>CD#x`a}7la8+6bc!5%Vw1d_@cIedqf6V z!{!vSLZf>`2cw`t9gnskI>4?SnXz;XI!C37rMFN@OK%^$uFHD;Z~ytn&AB;W&iS45 zJHPXN^;wyW)qd;!0AO{-j`Vi{yzpNVJpaV(T+ENbjW1_MekDM_@RN`9RYbsx0OY`o z^fz)&2K#iSkW)pGW7UP^=bavvck}+Pru)+Ft(X;L+c_Mu0$hk3AP2y zF&_=p%uYT)!CL?qpM$WS&(zGB=O`fiiOF}`EYcdO)L}74(ELFa47Hm{a3dZ zd^e*eGQyqE9atchxFAp{wyGJo#9 z<4Gl~Qkv`t;%g)xwx?uS*$3lh_&$bVzyD-9mY??Rp{YHw6`D~hW<`9Hzx3qGd7o^Q zSAJ}$M#fw915x`iJzX@T<@;ayo7{xgui9N4V z*d^FH%`S!N8k5^OlVFJ`xZ^3}!%-?EkB$5>!gTe@LnVl(-yW@hG1{ijwNN@L1Ve={ zsl^&>Jw3c^AMYGNZsw9}DVJa1D!r1paU3lsw%V2Yk$1|p`}9+q_`qWF*EMwUi5Mu@ z?baR+Cu6YsrOqEP-#lr^dx^2wf^g4MsQGEe@p}VdEKP8inI~K|{OZ#U=~GsfAGOhyCe?+LaJAc`_OVu&O;@@ta?#e|So>S^skYHfqskCwDM-yKkR# z>b6d5wi0T(K$T59{%T*|z*ts|iEdSEP2~c8VQ+|1w^F2{i(5U4yc>&?(xpl~d@%Fs z@#&jFdsN5c7L|gaq%v~MmGIXVQPC(f+QzXN5!iVhN!9VRDUbHERE=F5ZR%;A oeZ;b47yXP5B_qyl1Pz$ulXAWbLp3j}@%I8U-p)+#e6#rU-{AE`xBvhE diff --git a/applications/external/geiger/flipper_geiger.c b/applications/external/geiger/flipper_geiger.c index a5503eb90..9c3d0d3fc 100644 --- a/applications/external/geiger/flipper_geiger.c +++ b/applications/external/geiger/flipper_geiger.c @@ -39,33 +39,53 @@ typedef struct { static void draw_callback(Canvas* canvas, void* ctx) { furi_assert(ctx); - mutexStruct displayStruct; - mutexStruct* geigerMutex = ctx; - furi_mutex_acquire(geigerMutex->mutex, FuriWaitForever); - memcpy(&displayStruct, geigerMutex, sizeof(mutexStruct)); - furi_mutex_release(geigerMutex->mutex); + mutexStruct* mutexVal = ctx; + mutexStruct mutexDraw; + furi_mutex_acquire(mutexVal->mutex, FuriWaitForever); + memcpy(&mutexDraw, mutexVal, sizeof(mutexStruct)); + furi_mutex_release(mutexVal->mutex); char buffer[32]; - if(displayStruct.data == 0) - snprintf( - buffer, sizeof(buffer), "%ld cps - %ld cpm", displayStruct.cps, displayStruct.cpm); - else if(displayStruct.data == 1) + if(mutexDraw.data == 0) + snprintf(buffer, sizeof(buffer), "%ld cps - %ld cpm", mutexDraw.cps, mutexDraw.cpm); + else if(mutexDraw.data == 1) snprintf( buffer, sizeof(buffer), "%ld cps - %.2f uSv/h", - displayStruct.cps, - ((double)displayStruct.cpm * (double)CONVERSION_FACTOR)); - else + mutexDraw.cps, + ((double)mutexDraw.cpm * (double)CONVERSION_FACTOR)); + else if(mutexDraw.data == 2) snprintf( buffer, sizeof(buffer), "%ld cps - %.2f mSv/y", - displayStruct.cps, - (((double)displayStruct.cpm * (double)CONVERSION_FACTOR)) * (double)8.76); + mutexDraw.cps, + (((double)mutexDraw.cpm * (double)CONVERSION_FACTOR)) * (double)8.76); + else if(mutexDraw.data == 3) + snprintf( + buffer, + sizeof(buffer), + "%ld cps - %.4f Rad/h", + mutexDraw.cps, + ((double)mutexDraw.cpm * (double)CONVERSION_FACTOR) / (double)10000); + else if(mutexDraw.data == 4) + snprintf( + buffer, + sizeof(buffer), + "%ld cps - %.2f mR/h", + mutexDraw.cps, + ((double)mutexDraw.cpm * (double)CONVERSION_FACTOR) / (double)10); + else + snprintf( + buffer, + sizeof(buffer), + "%ld cps - %.2f uR/h", + mutexDraw.cps, + ((double)mutexDraw.cpm * (double)CONVERSION_FACTOR) * (double)100); for(int i = 0; i < SCREEN_SIZE_X; i += 2) { - float Y = SCREEN_SIZE_Y - (displayStruct.line[i / 2] * displayStruct.coef); + float Y = SCREEN_SIZE_Y - (mutexDraw.line[i / 2] * mutexDraw.coef); canvas_draw_line(canvas, i, Y, i, SCREEN_SIZE_Y); canvas_draw_line(canvas, i + 1, Y, i + 1, SCREEN_SIZE_Y); @@ -103,8 +123,7 @@ static void gpiocallback(void* ctx) { furi_message_queue_put(queue, &event, 0); } -int32_t flipper_geiger_app(void* p) { - UNUSED(p); +int32_t flipper_geiger_app() { EventApp event; FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(EventApp)); @@ -127,7 +146,7 @@ int32_t flipper_geiger_app(void* p) { } ViewPort* view_port = view_port_alloc(); - view_port_draw_callback_set(view_port, draw_callback, &mutexVal); + view_port_draw_callback_set(view_port, draw_callback, &mutexVal.mutex); view_port_input_callback_set(view_port, input_callback, event_queue); furi_hal_gpio_add_int_callback(&gpio_ext_pa7, gpiocallback, event_queue); @@ -167,7 +186,7 @@ int32_t flipper_geiger_app(void* p) { if(mutexVal.data != 0) mutexVal.data--; else - mutexVal.data = 2; + mutexVal.data = 5; screenRefresh = 1; furi_mutex_release(mutexVal.mutex); @@ -175,7 +194,7 @@ int32_t flipper_geiger_app(void* p) { event.input.type == InputTypeShort)) { furi_mutex_acquire(mutexVal.mutex, FuriWaitForever); - if(mutexVal.data != 2) + if(mutexVal.data != 5) mutexVal.data++; else mutexVal.data = 0; diff --git a/applications/external/gpio_reader_a/GPIO_reader.c b/applications/external/gpioreader_a/GPIO_reader.c similarity index 100% rename from applications/external/gpio_reader_a/GPIO_reader.c rename to applications/external/gpioreader_a/GPIO_reader.c diff --git a/applications/external/gpio_reader_a/GPIO_reader_item.c b/applications/external/gpioreader_a/GPIO_reader_item.c similarity index 100% rename from applications/external/gpio_reader_a/GPIO_reader_item.c rename to applications/external/gpioreader_a/GPIO_reader_item.c diff --git a/applications/external/gpio_reader_a/GPIO_reader_item.h b/applications/external/gpioreader_a/GPIO_reader_item.h similarity index 100% rename from applications/external/gpio_reader_a/GPIO_reader_item.h rename to applications/external/gpioreader_a/GPIO_reader_item.h diff --git a/applications/external/gpio_reader_a/application.fam b/applications/external/gpioreader_a/application.fam similarity index 100% rename from applications/external/gpio_reader_a/application.fam rename to applications/external/gpioreader_a/application.fam diff --git a/applications/external/gpio_reader_a/icon.png b/applications/external/gpioreader_a/icon.png similarity index 100% rename from applications/external/gpio_reader_a/icon.png rename to applications/external/gpioreader_a/icon.png diff --git a/applications/external/gpio_reader_b/LICENSE b/applications/external/gpioreader_b/LICENSE similarity index 100% rename from applications/external/gpio_reader_b/LICENSE rename to applications/external/gpioreader_b/LICENSE diff --git a/applications/external/gpio_reader_b/application.fam b/applications/external/gpioreader_b/application.fam similarity index 100% rename from applications/external/gpio_reader_b/application.fam rename to applications/external/gpioreader_b/application.fam diff --git a/applications/external/gpio_reader_b/gpio_app.c b/applications/external/gpioreader_b/gpio_app.c similarity index 100% rename from applications/external/gpio_reader_b/gpio_app.c rename to applications/external/gpioreader_b/gpio_app.c diff --git a/applications/external/gpio_reader_b/gpio_app.h b/applications/external/gpioreader_b/gpio_app.h similarity index 100% rename from applications/external/gpio_reader_b/gpio_app.h rename to applications/external/gpioreader_b/gpio_app.h diff --git a/applications/external/gpio_reader_b/gpio_app_i.h b/applications/external/gpioreader_b/gpio_app_i.h similarity index 100% rename from applications/external/gpio_reader_b/gpio_app_i.h rename to applications/external/gpioreader_b/gpio_app_i.h diff --git a/applications/external/gpio_reader_b/gpio_custom_event.h b/applications/external/gpioreader_b/gpio_custom_event.h similarity index 100% rename from applications/external/gpio_reader_b/gpio_custom_event.h rename to applications/external/gpioreader_b/gpio_custom_event.h diff --git a/applications/external/gpio_reader_b/gpio_item.c b/applications/external/gpioreader_b/gpio_item.c similarity index 100% rename from applications/external/gpio_reader_b/gpio_item.c rename to applications/external/gpioreader_b/gpio_item.c diff --git a/applications/external/gpio_reader_b/gpio_item.h b/applications/external/gpioreader_b/gpio_item.h similarity index 100% rename from applications/external/gpio_reader_b/gpio_item.h rename to applications/external/gpioreader_b/gpio_item.h diff --git a/applications/external/gpio_reader_b/icon.png b/applications/external/gpioreader_b/icon.png similarity index 100% rename from applications/external/gpio_reader_b/icon.png rename to applications/external/gpioreader_b/icon.png diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene.c b/applications/external/gpioreader_b/scenes/gpio_scene.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene.c rename to applications/external/gpioreader_b/scenes/gpio_scene.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene.h b/applications/external/gpioreader_b/scenes/gpio_scene.h similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene.h rename to applications/external/gpioreader_b/scenes/gpio_scene.h diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_config.h b/applications/external/gpioreader_b/scenes/gpio_scene_config.h similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_config.h rename to applications/external/gpioreader_b/scenes/gpio_scene_config.h diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_reader.c b/applications/external/gpioreader_b/scenes/gpio_scene_reader.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_reader.c rename to applications/external/gpioreader_b/scenes/gpio_scene_reader.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_start.c b/applications/external/gpioreader_b/scenes/gpio_scene_start.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_start.c rename to applications/external/gpioreader_b/scenes/gpio_scene_start.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_test.c b/applications/external/gpioreader_b/scenes/gpio_scene_test.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_test.c rename to applications/external/gpioreader_b/scenes/gpio_scene_test.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart.c b/applications/external/gpioreader_b/scenes/gpio_scene_usb_uart.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart.c rename to applications/external/gpioreader_b/scenes/gpio_scene_usb_uart.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart_close_rpc.c b/applications/external/gpioreader_b/scenes/gpio_scene_usb_uart_close_rpc.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart_close_rpc.c rename to applications/external/gpioreader_b/scenes/gpio_scene_usb_uart_close_rpc.c diff --git a/applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart_config.c b/applications/external/gpioreader_b/scenes/gpio_scene_usb_uart_config.c similarity index 100% rename from applications/external/gpio_reader_b/scenes/gpio_scene_usb_uart_config.c rename to applications/external/gpioreader_b/scenes/gpio_scene_usb_uart_config.c diff --git a/applications/external/gpio_reader_b/usb_uart_bridge.c b/applications/external/gpioreader_b/usb_uart_bridge.c similarity index 100% rename from applications/external/gpio_reader_b/usb_uart_bridge.c rename to applications/external/gpioreader_b/usb_uart_bridge.c diff --git a/applications/external/gpio_reader_b/usb_uart_bridge.h b/applications/external/gpioreader_b/usb_uart_bridge.h similarity index 100% rename from applications/external/gpio_reader_b/usb_uart_bridge.h rename to applications/external/gpioreader_b/usb_uart_bridge.h diff --git a/applications/external/gpio_reader_b/views/gpio_reader.c b/applications/external/gpioreader_b/views/gpio_reader.c similarity index 100% rename from applications/external/gpio_reader_b/views/gpio_reader.c rename to applications/external/gpioreader_b/views/gpio_reader.c diff --git a/applications/external/gpio_reader_b/views/gpio_reader.h b/applications/external/gpioreader_b/views/gpio_reader.h similarity index 100% rename from applications/external/gpio_reader_b/views/gpio_reader.h rename to applications/external/gpioreader_b/views/gpio_reader.h diff --git a/applications/external/gpio_reader_b/views/gpio_test.c b/applications/external/gpioreader_b/views/gpio_test.c similarity index 100% rename from applications/external/gpio_reader_b/views/gpio_test.c rename to applications/external/gpioreader_b/views/gpio_test.c diff --git a/applications/external/gpio_reader_b/views/gpio_test.h b/applications/external/gpioreader_b/views/gpio_test.h similarity index 100% rename from applications/external/gpio_reader_b/views/gpio_test.h rename to applications/external/gpioreader_b/views/gpio_test.h diff --git a/applications/external/gpio_reader_b/views/gpio_usb_uart.c b/applications/external/gpioreader_b/views/gpio_usb_uart.c similarity index 98% rename from applications/external/gpio_reader_b/views/gpio_usb_uart.c rename to applications/external/gpioreader_b/views/gpio_usb_uart.c index f71dcccab..14f8c12fe 100644 --- a/applications/external/gpio_reader_b/views/gpio_usb_uart.c +++ b/applications/external/gpioreader_b/views/gpio_usb_uart.c @@ -82,7 +82,7 @@ static void gpio_usb_uart_draw_callback(Canvas* canvas, void* _model) { if(model->rx_active) canvas_draw_icon_ex(canvas, 48, 34, &I_ArrowUpFilled_14x15, IconRotation180); else - canvas_draw_icon_ex(canvas, 48, 34, &I_ArrowUpFilled_14x15, IconRotation180); + canvas_draw_icon_ex(canvas, 48, 34, &I_ArrowUpEmpty_14x15, IconRotation180); } static bool gpio_usb_uart_input_callback(InputEvent* event, void* context) { diff --git a/applications/external/gpio_reader_b/views/gpio_usb_uart.h b/applications/external/gpioreader_b/views/gpio_usb_uart.h similarity index 100% rename from applications/external/gpio_reader_b/views/gpio_usb_uart.h rename to applications/external/gpioreader_b/views/gpio_usb_uart.h diff --git a/applications/external/metronome/img/screenshot.png b/applications/external/metronome/img/screenshot.png deleted file mode 100644 index 7b6916e81ac8e1984370d33397ac6664f57b5f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1978 zcmbVNeNfV89Dfj<<<4w%mCJ-~)oST!>0D|8uCo_4JJST;>CPr6x~!O@5@4OHZKbU% z(tOEW(<~G%MDYdjT9bJSxP_UR=*`UWB1{o}28xqO+ppU{tv`PE{GR9g{(QdQ&+~2M zk%P`o8=U|E&Y_1wq5!a4`bB^h)+KBvZr9SX^3mGKT`MRo!`@6Z~^7qY?jg_o`{I%fhMoE?uum{0A5MZ^6Vg#Mh@q@`#mYhv`r}1;{EQ`BguAMzJ z={1VP15jmCBr8!}zt#nA?n;V7fPyv4g4!?hfFEb}y|9)5G7mGzG8T}HL`p=U`j2Ud zZ%#~rX{KWG6@z2Mdpra7q|%aZa_;b02$HJi+BX#!mr5IB78_D4>u2W_jdozgHURdm z1o@FMn0#&^p*Viv$M{^aVeIlAwVY`R?Sy`SsCDa>^A7`{V5b&w{i$4gEIejQadZozvGR4?%v8jj$ zi!2>N-YzVNr|6)778N2fK%1m2och@bY`zYb)AOTk-!)!6P@HhOf`PkrmAAoTDPOx~ z`2;p!TpK5pb!>00ar}OsA>U|1q(6jtC*}ciF@TH{BkR_R5M3cQyVqsE%hnJ;1Gv*? z?@q8FS4hFQG47v!-BMIvlt7+n^_NfRZ)RC8zi9uR21m3E6`Uq`2pPGvu9MoV!<=v| za~7$9!#g>RW)IX$R4mfCMzG*XP&H#Xh)P3%#>bn4cVo(5QM#d?-qYo8cr}9@LUclq zMdJkp_dg}`(z>~@+ItNkk=>g#Wtm?Xq3tKp8@QyoSp~xZ?xGb1ba}G%1ohXNWFji< zM8r_X^D-FVzagLXu^7Q(>_PeT%^AY1tA2w=o`VUyL6(F5MWOV#o@HK|h=&iF`LC*I8kmjY|aTOy_>U2s1= z2Yuz>qCEY|D3vG8evyMOYZ&N$Ql=}U61B`y|5f1Qf5uIV+(Bp1byFneZV5}x!d#xG z6Rg_4QA&SWrqB*n15Zo`Kt@4ZIc77<*0$EEdbjpccZr}VyRBsgY&I;2Uz6i)txHPZ z{ZI71B3<`Y3JF$T8w6wvh)!yq`HIFd_Fpcr^3Ln2w6V)uZ)>$Wdn|2m8}QyTikzR| z|5Rk(74@3Sa_2?;@@ovxH9lPejlhS$ZPf8p>Iw1t`BWH;Zyof1C#+hU#(5!=$q=I+ zZLrZUelJtv-|+Iy_H-+Wk;YUCE)JLw5_T5sj%t_qGNs}{Q#ZBxKyI_NbX;3Y#k35N zVtwy&i+D4wGIB;cbdB6Cd{o|Sx|LyQhuca^(VTlC)>AH?Bc1U%bEE>dRhq)q55f3r z9R#vFismx<{Gjzs@>D8Gn4;vp65!Y#l&_47)i_%AbNul3a>5o~n~O5TtkB1D(JKVj6sxDd;hFZ`10iAvCa02&=^aJR{jJL+3* z%y@1f`!jvSr6Ly1SBnH=Yi#nJjP;RhMi-gq%c!YAwaLv#t7J|KK!*gkOKj~MBUsC? zLHC>Ef(b^V>1+w!EMzMvf$CU4(H9YZdj6wP8du-ilMJ2}*(@+5mwX?AT9QV;^y%Kt oCuNK}+uQP=Dfs)r1Y-v*$QL~Uk1Kkr_|}uq{YOGL`;MRg3sjKxR{#J2 diff --git a/applications/external/minesweeper/img/screenshot.png b/applications/external/minesweeper/img/screenshot.png deleted file mode 100644 index 65b307c550cdfc13c388135b4e286d1be56957d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1842 zcmbtVc~BEq7=IyRgcgu0lNROZV5T#7|k6~v9}^R?EPJl zBCckac0tDKDHDB)&E87M8+q{t=h*b7A$KRhV%w@b}PgcgWS4FPo7UFZGEXhdN81u1de_LK+PP$ zsQ-lrLXhnzD}BG1!on)ucSr&5&)qBH2AsQ8O9t~kdlSfcO9bQd0KiyA0`oTkaCD$* zYv;&Vc~b;u-O9C;8JSC^LE_FVG}yv)al|S=f}-Piv@|@)jMR1z+6vs<-w#_hljONO z0y(-b+wpdTA<@2EE3JbPcZMdMt1(zwv-tGq7Slq=_!UaQ;gPGcAapi5eE&Xruf!V! zpK)f><@h6VOJ|yyOzwdL9)IaB*Nj!2ZH*It5;K!Y7hY#C0)y;nUF72lEu|g~9eoWH zVk*m6&SN@cT)ZnLOyjszN@qLv+_4|VOE8tgDia9!kbn7(XrV9b-ZVR3(}T*;MfLXO zM{uqFcnD-V^x8 z-7(UvLMBPwi*?*-KLlypY%534XE{Fi*P(OwbB?`QAzkNpVq&I@1M2Lr}c&4dcO`0E>xN~O!>eF(XAfJP?lz7M+ z{8TLMyVVV$L-+Yq|4AbyOTu^99Qx=h1GwsOVWT|;D|x3ebem5#-gc%84>74@kwJE* zBMPy+g8Q=UA^D+}-GJN)Kw9+<`NU{lIMfx+uP+q%o}cseKD+O~n}cOMa6+bTt`=jr zaLA+XKn6K^Fq!8!dVJMOh)wbic<}$%y3dM$w7%+c270qNN5ILOmVXTuKM5rV zZ4LU!2&y7VaFM__WMhuxyNFVavqwiE-MxVfj3-(!!srt~tfN5MLIkp5Tb;A^0M@y&|tLV8cCM1-cd+b59W z;+(jX&}2Fjk;9}>73wszruDURZgYMk@L4mlH?JaSv{b+_V;rQ^E#u;U`kns)=Ov_G z85b1lcsCl*l=K`vreg`zY7U9?mh0Yf*Bk14kL`@TnP=zI>$Y&a6)#NaYnFC62x6qc znb;9!nsMo2(!ak7Cs(@|<}H=J-*(36lkctWE&l1cC7M!Smn30bQoLeK?vZ~0WMt2h diff --git a/applications/external/musictracker/application.fam b/applications/external/music_tracker/application.fam similarity index 90% rename from applications/external/musictracker/application.fam rename to applications/external/music_tracker/application.fam index fe4355e86..f3bac02c2 100644 --- a/applications/external/musictracker/application.fam +++ b/applications/external/music_tracker/application.fam @@ -10,4 +10,5 @@ App( order=20, fap_icon="zero_tracker.png", fap_category="Music", + fap_icon_assets="icons", ) diff --git a/applications/external/musictracker/tracker_engine/speaker_hal.c b/applications/external/music_tracker/tracker_engine/speaker_hal.c similarity index 91% rename from applications/external/musictracker/tracker_engine/speaker_hal.c rename to applications/external/music_tracker/tracker_engine/speaker_hal.c index 94489f1b6..208fee04c 100644 --- a/applications/external/musictracker/tracker_engine/speaker_hal.c +++ b/applications/external/music_tracker/tracker_engine/speaker_hal.c @@ -40,17 +40,12 @@ void tracker_speaker_stop() { } void tracker_speaker_init() { - if(furi_hal_speaker_is_mine() || furi_hal_speaker_acquire(1000)) { - furi_hal_speaker_start(200.0f, 0.01f); - tracker_speaker_stop(); - } + furi_hal_speaker_start(200.0f, 0.01f); + tracker_speaker_stop(); } void tracker_speaker_deinit() { - if(furi_hal_speaker_is_mine()) { - furi_hal_speaker_stop(); - furi_hal_speaker_release(); - } + furi_hal_speaker_stop(); } static FuriHalInterruptISR tracker_isr; diff --git a/applications/external/musictracker/tracker_engine/speaker_hal.h b/applications/external/music_tracker/tracker_engine/speaker_hal.h similarity index 100% rename from applications/external/musictracker/tracker_engine/speaker_hal.h rename to applications/external/music_tracker/tracker_engine/speaker_hal.h diff --git a/applications/external/musictracker/tracker_engine/tracker.c b/applications/external/music_tracker/tracker_engine/tracker.c similarity index 100% rename from applications/external/musictracker/tracker_engine/tracker.c rename to applications/external/music_tracker/tracker_engine/tracker.c diff --git a/applications/external/musictracker/tracker_engine/tracker.h b/applications/external/music_tracker/tracker_engine/tracker.h similarity index 100% rename from applications/external/musictracker/tracker_engine/tracker.h rename to applications/external/music_tracker/tracker_engine/tracker.h diff --git a/applications/external/musictracker/tracker_engine/tracker_notes.h b/applications/external/music_tracker/tracker_engine/tracker_notes.h similarity index 100% rename from applications/external/musictracker/tracker_engine/tracker_notes.h rename to applications/external/music_tracker/tracker_engine/tracker_notes.h diff --git a/applications/external/musictracker/tracker_engine/tracker_song.h b/applications/external/music_tracker/tracker_engine/tracker_song.h similarity index 100% rename from applications/external/musictracker/tracker_engine/tracker_song.h rename to applications/external/music_tracker/tracker_engine/tracker_song.h diff --git a/applications/external/musictracker/view/tracker_view.c b/applications/external/music_tracker/view/tracker_view.c similarity index 100% rename from applications/external/musictracker/view/tracker_view.c rename to applications/external/music_tracker/view/tracker_view.c diff --git a/applications/external/musictracker/view/tracker_view.h b/applications/external/music_tracker/view/tracker_view.h similarity index 100% rename from applications/external/musictracker/view/tracker_view.h rename to applications/external/music_tracker/view/tracker_view.h diff --git a/applications/external/musictracker/zero_tracker.c b/applications/external/music_tracker/zero_tracker.c similarity index 100% rename from applications/external/musictracker/zero_tracker.c rename to applications/external/music_tracker/zero_tracker.c diff --git a/applications/external/musictracker/zero_tracker.h b/applications/external/music_tracker/zero_tracker.h similarity index 100% rename from applications/external/musictracker/zero_tracker.h rename to applications/external/music_tracker/zero_tracker.h diff --git a/applications/external/musictracker/zero_tracker.png b/applications/external/music_tracker/zero_tracker.png similarity index 100% rename from applications/external/musictracker/zero_tracker.png rename to applications/external/music_tracker/zero_tracker.png diff --git a/applications/external/nightstand_clock/application.fam b/applications/external/nightstand/application.fam similarity index 100% rename from applications/external/nightstand_clock/application.fam rename to applications/external/nightstand/application.fam diff --git a/applications/external/nightstand_clock/clock.png b/applications/external/nightstand/clock.png similarity index 100% rename from applications/external/nightstand_clock/clock.png rename to applications/external/nightstand/clock.png diff --git a/applications/external/nightstand_clock/clock_app.c b/applications/external/nightstand/clock_app.c similarity index 100% rename from applications/external/nightstand_clock/clock_app.c rename to applications/external/nightstand/clock_app.c diff --git a/applications/external/nightstand_clock/clock_app.h b/applications/external/nightstand/clock_app.h similarity index 100% rename from applications/external/nightstand_clock/clock_app.h rename to applications/external/nightstand/clock_app.h diff --git a/applications/external/pomodoro/flipp_pomodoro_app.c b/applications/external/pomodoro/flipp_pomodoro_app.c index 5adca1edb..2ddf8cf68 100644 --- a/applications/external/pomodoro/flipp_pomodoro_app.c +++ b/applications/external/pomodoro/flipp_pomodoro_app.c @@ -78,6 +78,7 @@ void flipp_pomodoro_app_free(FlippPomodoroApp* app) { view_dispatcher_free(app->view_dispatcher); scene_manager_free(app->scene_manager); flipp_pomodoro_view_timer_free(app->timer_view); + flipp_pomodoro__destroy(app->state); free(app); furi_record_close(RECORD_GUI); furi_record_close(RECORD_NOTIFICATION); diff --git a/applications/external/pomodoro/modules/flipp_pomodoro.c b/applications/external/pomodoro/modules/flipp_pomodoro.c index 161e862f8..9915025fb 100644 --- a/applications/external/pomodoro/modules/flipp_pomodoro.c +++ b/applications/external/pomodoro/modules/flipp_pomodoro.c @@ -55,6 +55,11 @@ char* flipp_pomodoro__next_stage_label(FlippPomodoroState* state) { return next_stage_label[flipp_pomodoro__stage_by_index(state->current_stage_index + 1)]; }; +void flipp_pomodoro__destroy(FlippPomodoroState* state) { + furi_assert(state); + free(state); +}; + uint32_t flipp_pomodoro__current_stage_total_duration(FlippPomodoroState* state) { const int32_t stage_duration_seconds_map[] = { [FlippPomodoroStageFocus] = 25 * TIME_SECONDS_IN_MINUTE, diff --git a/applications/external/pong/flipper_pong.c b/applications/external/pong/flipper_pong.c index 55b371ad5..53c6a7e27 100644 --- a/applications/external/pong/flipper_pong.c +++ b/applications/external/pong/flipper_pong.c @@ -15,8 +15,7 @@ #define PAD_SIZE_X 3 #define PAD_SIZE_Y 8 -#define PLAYER1_PAD_SPEED 4 - +#define PLAYER1_PAD_SPEED 2 #define PLAYER2_PAD_SPEED 2 #define BALL_SIZE 4 @@ -39,29 +38,22 @@ typedef struct Players { static void draw_callback(Canvas* canvas, void* ctx) { furi_assert(ctx); - Players* playersMutex = ctx; - furi_mutex_acquire(playersMutex->mutex, FuriWaitForever); + Players* players = ctx; + furi_mutex_acquire(players->mutex, FuriWaitForever); canvas_draw_frame(canvas, 0, 0, 128, 64); - canvas_draw_box( - canvas, playersMutex->player1_X, playersMutex->player1_Y, PAD_SIZE_X, PAD_SIZE_Y); - canvas_draw_box( - canvas, playersMutex->player2_X, playersMutex->player2_Y, PAD_SIZE_X, PAD_SIZE_Y); - canvas_draw_box(canvas, playersMutex->ball_X, playersMutex->ball_Y, BALL_SIZE, BALL_SIZE); + canvas_draw_box(canvas, players->player1_X, players->player1_Y, PAD_SIZE_X, PAD_SIZE_Y); + canvas_draw_box(canvas, players->player2_X, players->player2_Y, PAD_SIZE_X, PAD_SIZE_Y); + canvas_draw_box(canvas, players->ball_X, players->ball_Y, BALL_SIZE, BALL_SIZE); canvas_set_font(canvas, FontPrimary); canvas_set_font_direction(canvas, CanvasDirectionBottomToTop); char buffer[16]; - snprintf( - buffer, - sizeof(buffer), - "%u - %u", - playersMutex->player1_score, - playersMutex->player2_score); + snprintf(buffer, sizeof(buffer), "%u - %u", players->player1_score, players->player2_score); canvas_draw_str_aligned( canvas, SCREEN_SIZE_X / 2 + 15, SCREEN_SIZE_Y / 2 + 2, AlignCenter, AlignTop, buffer); - furi_mutex_release(playersMutex->mutex); + furi_mutex_release(players->mutex); } static void input_callback(InputEvent* input_event, void* ctx) { @@ -101,8 +93,7 @@ uint8_t changeDirection() { return randomuint8[0]; } -int32_t flipper_pong_app(void* p) { - UNUSED(p); +int32_t flipper_pong_app() { EventApp event; FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(EventApp)); @@ -129,7 +120,7 @@ int32_t flipper_pong_app(void* p) { } ViewPort* view_port = view_port_alloc(); - view_port_draw_callback_set(view_port, draw_callback, &players); + view_port_draw_callback_set(view_port, draw_callback, &players.mutex); view_port_input_callback_set(view_port, input_callback, event_queue); Gui* gui = furi_record_open(RECORD_GUI); @@ -152,7 +143,6 @@ int32_t flipper_pong_app(void* p) { if(event.type == EventTypeInput) { if(event.input.key == InputKeyBack) { furi_mutex_release(players.mutex); - notification_message(notification, &sequence_set_only_green_255); break; } else if(event.input.key == InputKeyUp) { if(players.player1_Y >= 1 + PLAYER1_PAD_SPEED) diff --git a/applications/external/rc2014_coleco/coleco.c b/applications/external/rc2014_coleco/coleco.c index 311b0ceac..f0a4c6188 100644 --- a/applications/external/rc2014_coleco/coleco.c +++ b/applications/external/rc2014_coleco/coleco.c @@ -40,15 +40,14 @@ typedef struct { } PluginEvent; typedef struct { - FuriMutex* mutex; bool dpad; int row; int column; + FuriMutex* mutex; } Coleco; static void render_callback(Canvas* const canvas, void* context) { - furi_assert(context); - Coleco* coleco = context; + Coleco* coleco = (Coleco*)context; furi_mutex_acquire(coleco->mutex, FuriWaitForever); if(coleco->dpad) { @@ -175,12 +174,20 @@ static Coleco* coleco_alloc() { coleco->row = 0; coleco->column = 1; + coleco->mutex = furi_mutex_alloc(FuriMutexTypeNormal); + if(!coleco->mutex) { + FURI_LOG_E("Coleco", "cannot create mutex\r\n"); + free(coleco); + return NULL; + } + return coleco; } static void coleco_free(Coleco* coleco) { furi_assert(coleco); + furi_mutex_free(coleco->mutex); free(coleco); } @@ -190,11 +197,7 @@ int32_t coleco_app(void* p) { FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent)); Coleco* coleco = coleco_alloc(); - - coleco->mutex = furi_mutex_alloc(FuriMutexTypeNormal); - if(!coleco->mutex) { - FURI_LOG_E("Coleco", "cannot create mutex\r\n"); - coleco_free(coleco); + if(coleco == NULL) { return 255; } @@ -346,6 +349,8 @@ int32_t coleco_app(void* p) { view_port_update(view_port); } + } else { + FURI_LOG_D("Coleco", "FuriMessageQueue: event timeout"); } furi_mutex_release(coleco->mutex); @@ -358,7 +363,6 @@ int32_t coleco_app(void* p) { furi_record_close("gui"); view_port_free(view_port); furi_message_queue_free(event_queue); - furi_mutex_free(coleco->mutex); coleco_free(coleco); return 0; } diff --git a/applications/external/rubiks_cube_scrambler/rubiks_cube_scrambler.c b/applications/external/rubiks_cube_scrambler/rubiks_cube_scrambler.c index 4c845b883..17e48473a 100644 --- a/applications/external/rubiks_cube_scrambler/rubiks_cube_scrambler.c +++ b/applications/external/rubiks_cube_scrambler/rubiks_cube_scrambler.c @@ -8,11 +8,11 @@ #include "scrambler.h" #include "furi_hal_random.h" -int scrambleStarted = 0; +bool scrambleStarted = false; char scramble_str[100] = {0}; char scramble_start[100] = {0}; char scramble_end[100] = {0}; -int notifications_enabled = 0; +bool notifications_enabled = false; static void success_vibration() { furi_hal_vibro_on(false); @@ -22,12 +22,12 @@ static void success_vibration() { return; } void split_array(char original[], int size, char first[], char second[]) { - int mid = size / 2; + int32_t mid = size / 2; if(size % 2 != 0) { mid++; } - int first_index = 0, second_index = 0; - for(int i = 0; i < size; i++) { + int32_t first_index = 0, second_index = 0; + for(int32_t i = 0; i < size; i++) { if(i < mid) { first[first_index++] = original[i]; } else { @@ -40,23 +40,17 @@ void split_array(char original[], int size, char first[], char second[]) { first[first_index] = '\0'; second[second_index] = '\0'; } +void genScramble() { + scrambleReplace(); + strcpy(scramble_str, printData()); + split_array(scramble_str, strlen(scramble_str), scramble_start, scramble_end); +} static void draw_callback(Canvas* canvas, void* ctx) { UNUSED(ctx); canvas_clear(canvas); canvas_set_font(canvas, FontPrimary); canvas_draw_str(canvas, 4, 13, "Rubik's Cube Scrambler"); - - if(scrambleStarted) { - genScramble(); - scrambleReplace(); - strcpy(scramble_str, printData()); - if(notifications_enabled) { - success_vibration(); - } - split_array(scramble_str, strlen(scramble_str), scramble_start, scramble_end); - scrambleStarted = 0; - } canvas_set_font(canvas, FontSecondary); canvas_draw_str_aligned(canvas, 64, 28, AlignCenter, AlignCenter, scramble_start); canvas_draw_str_aligned(canvas, 64, 38, AlignCenter, AlignCenter, scramble_end); @@ -90,13 +84,16 @@ int32_t rubiks_cube_scrambler_main(void* p) { furi_check(furi_message_queue_get(event_queue, &event, FuriWaitForever) == FuriStatusOk); if(event.key == InputKeyOk && event.type == InputTypeShort) { - scrambleStarted = 1; + genScramble(); + if(notifications_enabled) { + success_vibration(); + } } if(event.key == InputKeyLeft && event.type == InputTypeShort) { if(notifications_enabled) { - notifications_enabled = 0; + notifications_enabled = false; } else { - notifications_enabled = 1; + notifications_enabled = true; success_vibration(); } } diff --git a/applications/external/rubiks_cube_scrambler/scrambler.c b/applications/external/rubiks_cube_scrambler/scrambler.c index ea5291940..b97a67400 100644 --- a/applications/external/rubiks_cube_scrambler/scrambler.c +++ b/applications/external/rubiks_cube_scrambler/scrambler.c @@ -12,66 +12,37 @@ Authors: Tanish Bhongade and RaZe // 6 moves along with direction char moves[6] = {'R', 'U', 'F', 'B', 'L', 'D'}; -char dir[4] = {' ', '\'', '2'}; -const int SLEN = 20; +char dir[4] = {'\'', '2'}; +const int32_t SLEN = 20; #define RESULT_SIZE 100 -// Structure which holds main scramble + struct GetScramble { char mainScramble[25][3]; }; -struct GetScramble a; // Its object - -// Function prototypes to avoid bugs -void scrambleReplace(); -void genScramble(); -void valid(); -int getRand(int upr, int lwr); -char* printData(); -void writeToFile(); - -// Main function -/* int main(){ - genScramble ();//Calling genScramble - scrambleReplace();//Calling scrambleReplace - valid();//Calling valid to validate the scramble - printData ();//Printing the final scramble - //writeToFile();//If you want to write to a file, please uncomment this - - return 0; -} */ - -void genScramble() { - // Stage 1 - for(int i = 0; i < SLEN; i++) { - strcpy(a.mainScramble[i], "00"); - } - // This makes array like this 00 00 00....... -} +struct GetScramble a; void scrambleReplace() { - // Stage 2 - // Actual process begins here - // Initialize the mainScramble array with all the possible moves - for(int i = 0; i < SLEN; i++) { + for(int32_t i = 0; i < SLEN; i++) { a.mainScramble[i][0] = moves[furi_hal_random_get() % 6]; a.mainScramble[i][1] = dir[furi_hal_random_get() % 3]; } - // Perform the Fisher-Yates shuffle - for(int i = 6 - 1; i > 0; i--) { - int j = rand() % (i + 1); + /* // Perform the Fisher-Yates shuffle + for (int32_t i = 6 - 1; i > 0; i--) + { + int32_t j = rand() % (i + 1); char temp[3]; strcpy(temp, a.mainScramble[i]); strcpy(a.mainScramble[i], a.mainScramble[j]); strcpy(a.mainScramble[j], temp); - } + } */ - // Select the first 10 elements as the scramble, using only the first three elements of the dir array - for(int i = 0; i < SLEN; i++) { + // Select the first 10 elements as the scramble, using only the first two elements of the dir array + for(int32_t i = 0; i < SLEN; i++) { a.mainScramble[i][1] = dir[furi_hal_random_get() % 3]; } - for(int i = 1; i < SLEN; i++) { + for(int32_t i = 1; i < SLEN; i++) { while(a.mainScramble[i][0] == a.mainScramble[i - 2][0] || a.mainScramble[i][0] == a.mainScramble[i - 1][0]) { a.mainScramble[i][0] = moves[furi_hal_random_get() % 5]; @@ -79,24 +50,11 @@ void scrambleReplace() { } } -// Let this function be here for now till I find out what is causing the extra space bug in the scrambles -void remove_double_spaces(char* str) { - int i, j; - int len = strlen(str); - for(i = 0, j = 0; i < len; i++, j++) { - if(str[i] == ' ' && str[i + 1] == ' ') { - i++; - } - str[j] = str[i]; - } - str[j] = '\0'; -} char* printData() { static char result[RESULT_SIZE]; - int offset = 0; - for(int loop = 0; loop < SLEN; loop++) { + int32_t offset = 0; + for(int32_t loop = 0; loop < SLEN; loop++) { offset += snprintf(result + offset, RESULT_SIZE - offset, "%s ", a.mainScramble[loop]); } - remove_double_spaces(result); return result; -} +} \ No newline at end of file diff --git a/applications/external/rubiks_cube_scrambler/scrambler.h b/applications/external/rubiks_cube_scrambler/scrambler.h index 4b56c565d..557ef20ae 100644 --- a/applications/external/rubiks_cube_scrambler/scrambler.h +++ b/applications/external/rubiks_cube_scrambler/scrambler.h @@ -1,3 +1,2 @@ void scrambleReplace(); -void genScramble(); char* printData(); diff --git a/applications/external/timelapse/icons/ButtonDownHollow_7x4.png b/applications/external/timelapse/icons/ButtonDownHollow_7x4.png new file mode 100644 index 0000000000000000000000000000000000000000..2b87c43647d56c78a2c5ff5ecee6b3c9641c57fa GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!2~4FF4?37q!^2X+?^QKos)S9l1X>;b!1@J z*w6hZkrl}2EbxddW?{W77j*6W#z~B_y7O*=kMVYCpZ{Ri)wIhc380j PXc~j3tDnm{r-UW|ZJjr; literal 0 HcmV?d00001 diff --git a/applications/external/timelapse/icons/ButtonLeftHollow_4x7.png b/applications/external/timelapse/icons/ButtonLeftHollow_4x7.png new file mode 100644 index 0000000000000000000000000000000000000000..374dc7d1ac7aa9c4725681c145ef2f61b7869b77 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c8!2~21uvfPODaPU;cPEB*=VV@jWYZme9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK`l=g#}J9|v pae)j+>jQ^K9-aVZhZ;6Eh9@nu@2ZLtD}cHfJYD@<);T3K0RWG@CDZ@_ literal 0 HcmV?d00001 diff --git a/applications/external/timelapse/icons/ButtonRightHollow_4x7.png b/applications/external/timelapse/icons/ButtonRightHollow_4x7.png new file mode 100644 index 0000000000000000000000000000000000000000..acbb0859267d431885e1998146e04f2cdfdb46b9 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^EI`c8!2~21uvfPODaPU;cPEB*=VV@jWYZme9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK@CqA#}J9|gTe~DWM4fbu1?j literal 0 HcmV?d00001 diff --git a/applications/external/timelapse/icons/ButtonUpHollow_7x4.png b/applications/external/timelapse/icons/ButtonUpHollow_7x4.png new file mode 100644 index 0000000000000000000000000000000000000000..e88ee332230e98938ba769e8813a671040140987 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)I!2~4FF4?37q!^2X+?^QKos)S9l1X>;b!1@J z*w6hZkrl}2EbxddW?mutex, FuriWaitForever); + + // Try to acquire the mutex for the plugin state variables, timeout = 25mS + if(furi_mutex_acquire(state->mutex, 25) != FuriStatusOk) return; switch(state->scene) { //--------------------------------------------------------------------- @@ -344,8 +347,7 @@ int32_t wii_ec_anal(void) { goto bail; } // 5. Create a mutex for (reading/writing) the plugin state variables - state->mutex = furi_mutex_alloc(FuriMutexTypeNormal); - if(!state->mutex) { + if(!(state->mutex = furi_mutex_alloc(FuriMutexTypeNormal))) { ERROR(wii_errs[(error = ERR_NO_MUTEX)]); goto bail; } @@ -434,7 +436,10 @@ int32_t wii_ec_anal(void) { // Read successful // *** Try to lock the plugin state variables *** - furi_mutex_acquire(state->mutex, FuriWaitForever); + if(furi_mutex_acquire(state->mutex, FuriWaitForever) != FuriStatusOk) { + ERROR(wii_errs[(error = ERR_MUTEX_BLOCK)]); + goto bail; + } // *** Handle events *** switch(msg.id) { @@ -472,7 +477,10 @@ int32_t wii_ec_anal(void) { if(redraw) view_port_update(vpp); // *** Try to release the plugin state variables *** - furi_mutex_release(state->mutex); + if(furi_mutex_release(state->mutex) != FuriStatusOk) { + ERROR(wii_errs[(error = ERR_MUTEX_RELEASE)]); + goto bail; + } } while(state->run); // ===== Game Over ===== @@ -507,7 +515,10 @@ bail: } // 5. Free the mutex - furi_mutex_free(state->mutex); + if(state->mutex) { + furi_mutex_free(state->mutex); + state->mutex = NULL; + } // 4. Free up state pointer(s) // none diff --git a/applications/external/wii_ec_anal/wii_anal.h b/applications/external/wiiec/wii_anal.h similarity index 98% rename from applications/external/wii_ec_anal/wii_anal.h rename to applications/external/wiiec/wii_anal.h index d8997b030..3be398a54 100644 --- a/applications/external/wii_ec_anal/wii_anal.h +++ b/applications/external/wiiec/wii_anal.h @@ -56,7 +56,8 @@ typedef struct eventMsg { // Access to this memory is controlled by mutex // typedef struct state { - FuriMutex* mutex; + FuriMutex* mutex; // mutex for using this struct + bool run; // true : plugin is running bool timerEn; // controller scanning enabled diff --git a/applications/external/wii_ec_anal/wii_anal_ec.c b/applications/external/wiiec/wii_anal_ec.c similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_ec.c rename to applications/external/wiiec/wii_anal_ec.c diff --git a/applications/external/wii_ec_anal/wii_anal_ec.h b/applications/external/wiiec/wii_anal_ec.h similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_ec.h rename to applications/external/wiiec/wii_anal_ec.h diff --git a/applications/external/wii_ec_anal/wii_anal_keys.c b/applications/external/wiiec/wii_anal_keys.c similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_keys.c rename to applications/external/wiiec/wii_anal_keys.c diff --git a/applications/external/wii_ec_anal/wii_anal_keys.h b/applications/external/wiiec/wii_anal_keys.h similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_keys.h rename to applications/external/wiiec/wii_anal_keys.h diff --git a/applications/external/wii_ec_anal/wii_anal_lcd.c b/applications/external/wiiec/wii_anal_lcd.c similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_lcd.c rename to applications/external/wiiec/wii_anal_lcd.c diff --git a/applications/external/wii_ec_anal/wii_anal_lcd.h b/applications/external/wiiec/wii_anal_lcd.h similarity index 100% rename from applications/external/wii_ec_anal/wii_anal_lcd.h rename to applications/external/wiiec/wii_anal_lcd.h diff --git a/applications/external/wii_ec_anal/wii_anal_ver.h b/applications/external/wiiec/wii_anal_ver.h similarity index 85% rename from applications/external/wii_ec_anal/wii_anal_ver.h rename to applications/external/wiiec/wii_anal_ver.h index 3f2c8c0e6..df2659d57 100644 --- a/applications/external/wii_ec_anal/wii_anal_ver.h +++ b/applications/external/wiiec/wii_anal_ver.h @@ -5,5 +5,6 @@ #define VER_MAJ &img_3x5_1 #define VER_MIN &img_3x5_0 +#define VER_SUB &img_3x5_1 #endif //WII_ANAL_VER_H_ diff --git a/applications/external/wii_ec_anal/wii_ec.c b/applications/external/wiiec/wii_ec.c similarity index 100% rename from applications/external/wii_ec_anal/wii_ec.c rename to applications/external/wiiec/wii_ec.c diff --git a/applications/external/wii_ec_anal/wii_ec.h b/applications/external/wiiec/wii_ec.h similarity index 100% rename from applications/external/wii_ec_anal/wii_ec.h rename to applications/external/wiiec/wii_ec.h diff --git a/applications/external/wii_ec_anal/wii_ec_classic.c b/applications/external/wiiec/wii_ec_classic.c similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_classic.c rename to applications/external/wiiec/wii_ec_classic.c diff --git a/applications/external/wii_ec_anal/wii_ec_classic.h b/applications/external/wiiec/wii_ec_classic.h similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_classic.h rename to applications/external/wiiec/wii_ec_classic.h diff --git a/applications/external/wii_ec_anal/wii_ec_macros.h b/applications/external/wiiec/wii_ec_macros.h similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_macros.h rename to applications/external/wiiec/wii_ec_macros.h diff --git a/applications/external/wii_ec_anal/wii_ec_nunchuck.c b/applications/external/wiiec/wii_ec_nunchuck.c similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_nunchuck.c rename to applications/external/wiiec/wii_ec_nunchuck.c diff --git a/applications/external/wii_ec_anal/wii_ec_nunchuck.h b/applications/external/wiiec/wii_ec_nunchuck.h similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_nunchuck.h rename to applications/external/wiiec/wii_ec_nunchuck.h diff --git a/applications/external/wii_ec_anal/wii_ec_udraw.c b/applications/external/wiiec/wii_ec_udraw.c similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_udraw.c rename to applications/external/wiiec/wii_ec_udraw.c diff --git a/applications/external/wii_ec_anal/wii_ec_udraw.h b/applications/external/wiiec/wii_ec_udraw.h similarity index 100% rename from applications/external/wii_ec_anal/wii_ec_udraw.h rename to applications/external/wiiec/wii_ec_udraw.h diff --git a/applications/external/wii_ec_anal/wii_i2c.c b/applications/external/wiiec/wii_i2c.c similarity index 100% rename from applications/external/wii_ec_anal/wii_i2c.c rename to applications/external/wiiec/wii_i2c.c diff --git a/applications/external/wii_ec_anal/wii_i2c.h b/applications/external/wiiec/wii_i2c.h similarity index 100% rename from applications/external/wii_ec_anal/wii_i2c.h rename to applications/external/wiiec/wii_i2c.h From ffa7b74e18d114c0143d03a67b3ad3df71ce8f6a Mon Sep 17 00:00:00 2001 From: WillyJL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 2 May 2023 18:03:55 +0100 Subject: [PATCH 2/4] Fix build --- applications/external/music_tracker/application.fam | 1 - 1 file changed, 1 deletion(-) diff --git a/applications/external/music_tracker/application.fam b/applications/external/music_tracker/application.fam index f3bac02c2..fe4355e86 100644 --- a/applications/external/music_tracker/application.fam +++ b/applications/external/music_tracker/application.fam @@ -10,5 +10,4 @@ App( order=20, fap_icon="zero_tracker.png", fap_category="Music", - fap_icon_assets="icons", ) From 8a5cef00795d02eaa5a892b708432f95164a1e22 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 2 May 2023 19:56:06 +0100 Subject: [PATCH 3/4] Fix zero tracker app (revert "update") --- .../music_tracker/tracker_engine/speaker_hal.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/applications/external/music_tracker/tracker_engine/speaker_hal.c b/applications/external/music_tracker/tracker_engine/speaker_hal.c index 208fee04c..0a506a424 100644 --- a/applications/external/music_tracker/tracker_engine/speaker_hal.c +++ b/applications/external/music_tracker/tracker_engine/speaker_hal.c @@ -40,12 +40,17 @@ void tracker_speaker_stop() { } void tracker_speaker_init() { - furi_hal_speaker_start(200.0f, 0.01f); - tracker_speaker_stop(); + if(furi_hal_speaker_is_mine() || furi_hal_speaker_acquire(1000)) { + furi_hal_speaker_start(200.0f, 0.01f); + tracker_speaker_stop(); + } } void tracker_speaker_deinit() { - furi_hal_speaker_stop(); + if(furi_hal_speaker_is_mine()) { + furi_hal_speaker_stop(); + furi_hal_speaker_release(); + } } static FuriHalInterruptISR tracker_isr; @@ -99,4 +104,4 @@ void tracker_debug_set(bool value) { void tracker_debug_deinit() { furi_hal_gpio_init(&gpio_ext_pc3, GpioModeAnalog, GpioPullNo, GpioSpeedLow); -} \ No newline at end of file +} From ae321fb5f4c616d3965546926b1b4b446eef8d86 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 2 May 2023 20:40:23 +0100 Subject: [PATCH 4/4] Mfw NULL pointer dereference (fix IFTTT) --- .../external/ifttt/ifttt_virtual_button.c | 32 +++++++------------ 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/applications/external/ifttt/ifttt_virtual_button.c b/applications/external/ifttt/ifttt_virtual_button.c index e23b8715d..d518a1109 100644 --- a/applications/external/ifttt/ifttt_virtual_button.c +++ b/applications/external/ifttt/ifttt_virtual_button.c @@ -38,6 +38,11 @@ void save_settings_file(FlipperFormat* file, Settings* settings) { Settings* load_settings() { Settings* settings = malloc(sizeof(Settings)); + settings->save_ssid = ""; + settings->save_password = ""; + settings->save_key = ""; + settings->save_event = ""; + Storage* storage = furi_record_open(RECORD_STORAGE); FlipperFormat* file = flipper_format_file_alloc(storage); @@ -53,29 +58,14 @@ Settings* load_settings() { text_event_value = furi_string_alloc(); if(storage_common_stat(storage, CONFIG_FILE_PATH, NULL) != FSE_OK) { - if(!flipper_format_file_open_new(file, CONFIG_FILE_PATH)) { - flipper_format_file_close(file); - } else { - settings->save_ssid = malloc(1); - settings->save_password = malloc(1); - settings->save_key = malloc(1); - settings->save_event = malloc(1); - - settings->save_ssid[0] = '\0'; - settings->save_password[0] = '\0'; - settings->save_key[0] = '\0'; - settings->save_event[0] = '\0'; - + if(flipper_format_file_open_new(file, CONFIG_FILE_PATH)) { save_settings_file(file, settings); - flipper_format_file_close(file); } + flipper_format_file_close(file); } else { - if(!flipper_format_file_open_existing(file, CONFIG_FILE_PATH)) { - flipper_format_file_close(file); - } else { + if(flipper_format_file_open_existing(file, CONFIG_FILE_PATH)) { uint32_t value; - if(!flipper_format_read_header(file, string_value, &value)) { - } else { + if(flipper_format_read_header(file, string_value, &value)) { if(flipper_format_read_string(file, CONF_SSID, text_ssid_value)) { settings->save_ssid = malloc(furi_string_size(text_ssid_value) + 1); strcpy(settings->save_ssid, furi_string_get_cstr(text_ssid_value)); @@ -93,8 +83,8 @@ Settings* load_settings() { strcpy(settings->save_event, furi_string_get_cstr(text_event_value)); } } - flipper_format_file_close(file); } + flipper_format_file_close(file); } furi_string_free(text_ssid_value); @@ -248,4 +238,4 @@ int32_t ifttt_virtual_button_app(void* p) { view_dispatcher_run(app->view_dispatcher); ifttt_virtual_button_app_free(app); return 0; -} \ No newline at end of file +}