gitextract_izuyb6zx/ ├── .clang-format ├── .clangd ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── 01_bug_report.yml │ │ ├── 02_enhancements.yml │ │ ├── 03_feature_request.yml │ │ └── config.yml │ ├── actions/ │ │ └── submit_sdk/ │ │ └── action.yml │ ├── pull_request_template.md │ └── workflows/ │ ├── build.yml │ ├── build_compact.yml │ ├── docs.yml │ ├── lint_and_submodule_check.yml │ ├── merge_report.yml │ ├── pvs_studio.yml │ ├── reindex.yml │ ├── unit_tests.yml │ └── updater_test.yml ├── .gitignore ├── .gitmodules ├── .pvsconfig ├── .pvsoptions ├── .sublime-project ├── .vscode/ │ └── ReadMe.md ├── CODE_OF_CONDUCT.md ├── CODING_STYLE.md ├── CONTRIBUTING.md ├── LICENSE ├── ReadMe.md ├── SConstruct ├── applications/ │ ├── ReadMe.md │ ├── debug/ │ │ ├── accessor/ │ │ │ ├── accessor.cpp │ │ │ ├── accessor_app.cpp │ │ │ ├── accessor_app.h │ │ │ ├── accessor_event.h │ │ │ ├── accessor_view_manager.cpp │ │ │ ├── accessor_view_manager.h │ │ │ ├── application.fam │ │ │ ├── callback_connector.h │ │ │ ├── helpers/ │ │ │ │ ├── wiegand.cpp │ │ │ │ └── wiegand.h │ │ │ └── scene/ │ │ │ ├── accessor_scene_generic.h │ │ │ ├── accessor_scene_start.cpp │ │ │ └── accessor_scene_start.h │ │ ├── application.fam │ │ ├── battery_test_app/ │ │ │ ├── application.fam │ │ │ ├── battery_test_app.c │ │ │ ├── battery_test_app.h │ │ │ └── views/ │ │ │ ├── battery_info.c │ │ │ └── battery_info.h │ │ ├── blink_test/ │ │ │ ├── application.fam │ │ │ └── blink_test.c │ │ ├── bt_debug_app/ │ │ │ ├── application.fam │ │ │ ├── bt_debug_app.c │ │ │ ├── bt_debug_app.h │ │ │ └── views/ │ │ │ ├── bt_carrier_test.c │ │ │ ├── bt_carrier_test.h │ │ │ ├── bt_packet_test.c │ │ │ ├── bt_packet_test.h │ │ │ ├── bt_test.c │ │ │ ├── bt_test.h │ │ │ └── bt_test_types.h │ │ ├── ccid_test/ │ │ │ ├── application.fam │ │ │ ├── ccid_test_app.c │ │ │ ├── ccid_test_app_commands.c │ │ │ ├── ccid_test_app_commands.h │ │ │ ├── client/ │ │ │ │ ├── ccid_client.py │ │ │ │ └── requirements.txt │ │ │ └── iso7816/ │ │ │ ├── iso7816_atr.h │ │ │ ├── iso7816_handler.c │ │ │ ├── iso7816_handler.h │ │ │ ├── iso7816_response.c │ │ │ ├── iso7816_response.h │ │ │ ├── iso7816_t0_apdu.c │ │ │ └── iso7816_t0_apdu.h │ │ ├── crash_test/ │ │ │ ├── application.fam │ │ │ └── crash_test.c │ │ ├── direct_draw/ │ │ │ ├── application.fam │ │ │ └── direct_draw.c │ │ ├── display_test/ │ │ │ ├── application.fam │ │ │ ├── display_test.c │ │ │ ├── view_display_test.c │ │ │ └── view_display_test.h │ │ ├── event_loop_blink_test/ │ │ │ ├── application.fam │ │ │ └── event_loop_blink_test.c │ │ ├── expansion_test/ │ │ │ ├── application.fam │ │ │ ├── assets/ │ │ │ │ └── test.txt │ │ │ └── expansion_test.c │ │ ├── file_browser_test/ │ │ │ ├── application.fam │ │ │ ├── file_browser_app.c │ │ │ ├── file_browser_app_i.h │ │ │ └── scenes/ │ │ │ ├── file_browser_scene.c │ │ │ ├── file_browser_scene.h │ │ │ ├── file_browser_scene_browser.c │ │ │ ├── file_browser_scene_config.h │ │ │ ├── file_browser_scene_result.c │ │ │ └── file_browser_scene_start.c │ │ ├── infrared_test/ │ │ │ ├── application.fam │ │ │ └── infrared_test.c │ │ ├── keypad_test/ │ │ │ ├── application.fam │ │ │ └── keypad_test.c │ │ ├── lfrfid_debug/ │ │ │ ├── application.fam │ │ │ ├── lfrfid_debug.c │ │ │ ├── lfrfid_debug_i.h │ │ │ ├── scenes/ │ │ │ │ ├── lfrfid_debug_app_scene_start.c │ │ │ │ ├── lfrfid_debug_app_scene_tune.c │ │ │ │ ├── lfrfid_debug_scene.c │ │ │ │ ├── lfrfid_debug_scene.h │ │ │ │ └── lfrfid_debug_scene_config.h │ │ │ └── views/ │ │ │ ├── lfrfid_debug_view_tune.c │ │ │ └── lfrfid_debug_view_tune.h │ │ ├── loader_chaining_a/ │ │ │ ├── application.fam │ │ │ └── loader_chaining_a.c │ │ ├── loader_chaining_b/ │ │ │ ├── application.fam │ │ │ └── loader_chaining_b.c │ │ ├── locale_test/ │ │ │ ├── application.fam │ │ │ └── locale_test.c │ │ ├── rpc_debug_app/ │ │ │ ├── application.fam │ │ │ ├── rpc_debug_app.c │ │ │ ├── rpc_debug_app.h │ │ │ └── scenes/ │ │ │ ├── rpc_debug_app_scene.c │ │ │ ├── rpc_debug_app_scene.h │ │ │ ├── rpc_debug_app_scene_config.h │ │ │ ├── rpc_debug_app_scene_input_data_exchange.c │ │ │ ├── rpc_debug_app_scene_input_error_code.c │ │ │ ├── rpc_debug_app_scene_input_error_text.c │ │ │ ├── rpc_debug_app_scene_receive_data_exchange.c │ │ │ ├── rpc_debug_app_scene_start.c │ │ │ ├── rpc_debug_app_scene_start_dummy.c │ │ │ ├── rpc_debug_app_scene_test_app_error.c │ │ │ └── rpc_debug_app_scene_test_data_exchange.c │ │ ├── speaker_debug/ │ │ │ ├── application.fam │ │ │ └── speaker_debug.c │ │ ├── subghz_test/ │ │ │ ├── application.fam │ │ │ ├── helpers/ │ │ │ │ ├── subghz_test_event.h │ │ │ │ ├── subghz_test_frequency.c │ │ │ │ ├── subghz_test_frequency.h │ │ │ │ └── subghz_test_types.h │ │ │ ├── protocol/ │ │ │ │ ├── math.c │ │ │ │ ├── math.h │ │ │ │ ├── princeton_for_testing.c │ │ │ │ └── princeton_for_testing.h │ │ │ ├── scenes/ │ │ │ │ ├── subghz_test_scene.c │ │ │ │ ├── subghz_test_scene.h │ │ │ │ ├── subghz_test_scene_about.c │ │ │ │ ├── subghz_test_scene_carrier.c │ │ │ │ ├── subghz_test_scene_config.h │ │ │ │ ├── subghz_test_scene_packet.c │ │ │ │ ├── subghz_test_scene_show_only_rx.c │ │ │ │ ├── subghz_test_scene_start.c │ │ │ │ └── subghz_test_scene_static.c │ │ │ ├── subghz_test_app.c │ │ │ ├── subghz_test_app_i.c │ │ │ ├── subghz_test_app_i.h │ │ │ └── views/ │ │ │ ├── subghz_test_carrier.c │ │ │ ├── subghz_test_carrier.h │ │ │ ├── subghz_test_packet.c │ │ │ ├── subghz_test_packet.h │ │ │ ├── subghz_test_static.c │ │ │ └── subghz_test_static.h │ │ ├── text_box_element_test/ │ │ │ ├── application.fam │ │ │ └── text_box_element_test.c │ │ ├── text_box_view_test/ │ │ │ ├── application.fam │ │ │ └── text_box_view_test.c │ │ ├── uart_echo/ │ │ │ ├── application.fam │ │ │ └── uart_echo.c │ │ ├── unit_tests/ │ │ │ ├── application.fam │ │ │ ├── resources/ │ │ │ │ └── unit_tests/ │ │ │ │ ├── Manifest_test │ │ │ │ ├── compress/ │ │ │ │ │ └── test.ths │ │ │ │ ├── infrared/ │ │ │ │ │ ├── test_kaseikyo.irtest │ │ │ │ │ ├── test_nec.irtest │ │ │ │ │ ├── test_nec42.irtest │ │ │ │ │ ├── test_nec42ext.irtest │ │ │ │ │ ├── test_necext.irtest │ │ │ │ │ ├── test_pioneer.irtest │ │ │ │ │ ├── test_rc5.irtest │ │ │ │ │ ├── test_rc5x.irtest │ │ │ │ │ ├── test_rc6.irtest │ │ │ │ │ ├── test_rca.irtest │ │ │ │ │ ├── test_samsung32.irtest │ │ │ │ │ └── test_sirc.irtest │ │ │ │ ├── js/ │ │ │ │ │ ├── basic.js │ │ │ │ │ ├── event_loop.js │ │ │ │ │ ├── math.js │ │ │ │ │ └── storage.js │ │ │ │ ├── nfc/ │ │ │ │ │ ├── Felica.nfc │ │ │ │ │ ├── Ntag213_locked.nfc │ │ │ │ │ ├── Ntag215.nfc │ │ │ │ │ ├── Ntag216.nfc │ │ │ │ │ ├── Slix_cap_accept_all_pass.nfc │ │ │ │ │ ├── Slix_cap_default.nfc │ │ │ │ │ ├── Slix_cap_missed.nfc │ │ │ │ │ ├── Ultralight_11.nfc │ │ │ │ │ ├── Ultralight_21.nfc │ │ │ │ │ ├── Ultralight_C.nfc │ │ │ │ │ ├── nfc_nfca_signal_long.nfc │ │ │ │ │ └── nfc_nfca_signal_short.nfc │ │ │ │ ├── storage/ │ │ │ │ │ └── md5.txt │ │ │ │ └── subghz/ │ │ │ │ ├── alutech_at_4n_raw.sub │ │ │ │ ├── ansonic.sub │ │ │ │ ├── ansonic_raw.sub │ │ │ │ ├── bett.sub │ │ │ │ ├── bett_raw.sub │ │ │ │ ├── came.sub │ │ │ │ ├── came_atomo_raw.sub │ │ │ │ ├── came_raw.sub │ │ │ │ ├── came_twee.sub │ │ │ │ ├── came_twee_raw.sub │ │ │ │ ├── cenmax_raw.sub │ │ │ │ ├── clemsa.sub │ │ │ │ ├── clemsa_raw.sub │ │ │ │ ├── dickert_mahs.sub │ │ │ │ ├── dickert_raw.sub │ │ │ │ ├── doitrand.sub │ │ │ │ ├── doitrand_raw.sub │ │ │ │ ├── doorhan.sub │ │ │ │ ├── doorhan_raw.sub │ │ │ │ ├── dooya.sub │ │ │ │ ├── dooya_raw.sub │ │ │ │ ├── faac_slh_raw.sub │ │ │ │ ├── feron.sub │ │ │ │ ├── feron_raw.sub │ │ │ │ ├── gangqi.sub │ │ │ │ ├── gangqi_raw.sub │ │ │ │ ├── gate_tx.sub │ │ │ │ ├── gate_tx_raw.sub │ │ │ │ ├── hay21_raw.sub │ │ │ │ ├── hollarm.sub │ │ │ │ ├── hollarm_raw.sub │ │ │ │ ├── holtek.sub │ │ │ │ ├── holtek_ht12x.sub │ │ │ │ ├── holtek_ht12x_raw.sub │ │ │ │ ├── holtek_raw.sub │ │ │ │ ├── honeywell_wdb.sub │ │ │ │ ├── honeywell_wdb_raw.sub │ │ │ │ ├── hormann_hsm_raw.sub │ │ │ │ ├── ido_117_111_raw.sub │ │ │ │ ├── intertechno_v3.sub │ │ │ │ ├── intertechno_v3_raw.sub │ │ │ │ ├── kia_seed_raw.sub │ │ │ │ ├── kinggates_stylo4k_raw.sub │ │ │ │ ├── legrand.sub │ │ │ │ ├── legrand_raw.sub │ │ │ │ ├── linear.sub │ │ │ │ ├── linear_delta3.sub │ │ │ │ ├── linear_delta3_raw.sub │ │ │ │ ├── linear_raw.sub │ │ │ │ ├── magellan.sub │ │ │ │ ├── magellan_raw.sub │ │ │ │ ├── marantec.sub │ │ │ │ ├── marantec24.sub │ │ │ │ ├── marantec24_raw.sub │ │ │ │ ├── marantec_raw.sub │ │ │ │ ├── mastercode.sub │ │ │ │ ├── mastercode_raw.sub │ │ │ │ ├── megacode.sub │ │ │ │ ├── megacode_raw.sub │ │ │ │ ├── nero_radio_raw.sub │ │ │ │ ├── nero_sketch_raw.sub │ │ │ │ ├── nice_flo.sub │ │ │ │ ├── nice_flo_raw.sub │ │ │ │ ├── nice_flor_s_raw.sub │ │ │ │ ├── nice_one_raw.sub │ │ │ │ ├── phoenix_v2.sub │ │ │ │ ├── phoenix_v2_raw.sub │ │ │ │ ├── power_smart.sub │ │ │ │ ├── power_smart_raw.sub │ │ │ │ ├── princeton.sub │ │ │ │ ├── princeton_raw.sub │ │ │ │ ├── revers_rb2.sub │ │ │ │ ├── revers_rb2_raw.sub │ │ │ │ ├── roger.sub │ │ │ │ ├── roger_raw.sub │ │ │ │ ├── scher_khan_magic_code.sub │ │ │ │ ├── security_pls_1_0.sub │ │ │ │ ├── security_pls_1_0_raw.sub │ │ │ │ ├── security_pls_2_0.sub │ │ │ │ ├── security_pls_2_0_raw.sub │ │ │ │ ├── smc5326.sub │ │ │ │ ├── smc5326_raw.sub │ │ │ │ ├── somfy_keytis_raw.sub │ │ │ │ ├── somfy_telis_raw.sub │ │ │ │ └── test_random_raw.sub │ │ │ ├── test_runner.c │ │ │ ├── test_runner.h │ │ │ ├── tests/ │ │ │ │ ├── args/ │ │ │ │ │ └── args_test.c │ │ │ │ ├── bit_lib/ │ │ │ │ │ └── bit_lib_test.c │ │ │ │ ├── bt/ │ │ │ │ │ └── bt_test.c │ │ │ │ ├── common/ │ │ │ │ │ └── common.c │ │ │ │ ├── compress/ │ │ │ │ │ └── compress_test.c │ │ │ │ ├── datetime/ │ │ │ │ │ └── datetimelib_test.c │ │ │ │ ├── dialogs_file_browser_options/ │ │ │ │ │ └── dialogs_file_browser_options.c │ │ │ │ ├── dirwalk/ │ │ │ │ │ └── dirwalk_test.c │ │ │ │ ├── expansion/ │ │ │ │ │ └── expansion_test.c │ │ │ │ ├── flipper_format/ │ │ │ │ │ └── flipper_format_test.c │ │ │ │ ├── flipper_format_string/ │ │ │ │ │ └── flipper_format_string_test.c │ │ │ │ ├── float_tools/ │ │ │ │ │ └── float_tools_test.c │ │ │ │ ├── furi/ │ │ │ │ │ ├── furi_errno_test.c │ │ │ │ │ ├── furi_event_loop_test.c │ │ │ │ │ ├── furi_memmgr_test.c │ │ │ │ │ ├── furi_primitives_test.c │ │ │ │ │ ├── furi_pubsub_test.c │ │ │ │ │ ├── furi_record_test.c │ │ │ │ │ ├── furi_stdio_test.c │ │ │ │ │ └── furi_test.c │ │ │ │ ├── furi_hal/ │ │ │ │ │ └── furi_hal_tests.c │ │ │ │ ├── furi_hal_crypto/ │ │ │ │ │ └── furi_hal_crypto_tests.c │ │ │ │ ├── furi_string/ │ │ │ │ │ └── furi_string_test.c │ │ │ │ ├── infrared/ │ │ │ │ │ └── infrared_test.c │ │ │ │ ├── js/ │ │ │ │ │ └── js_test.c │ │ │ │ ├── lfrfid/ │ │ │ │ │ └── lfrfid_protocols.c │ │ │ │ ├── manifest/ │ │ │ │ │ └── manifest.c │ │ │ │ ├── minunit.h │ │ │ │ ├── minunit_vars.h │ │ │ │ ├── minunit_vars_ex.h │ │ │ │ ├── nfc/ │ │ │ │ │ └── nfc_test.c │ │ │ │ ├── notification/ │ │ │ │ │ └── notes_test.c │ │ │ │ ├── pipe/ │ │ │ │ │ └── pipe_test.c │ │ │ │ ├── power/ │ │ │ │ │ └── power_test.c │ │ │ │ ├── protocol_dict/ │ │ │ │ │ └── protocol_dict_test.c │ │ │ │ ├── rpc/ │ │ │ │ │ └── rpc_test.c │ │ │ │ ├── storage/ │ │ │ │ │ └── storage_test.c │ │ │ │ ├── stream/ │ │ │ │ │ └── stream_test.c │ │ │ │ ├── strint/ │ │ │ │ │ └── strint_test.c │ │ │ │ ├── subghz/ │ │ │ │ │ └── subghz_test.c │ │ │ │ ├── test.h │ │ │ │ ├── test_api.h │ │ │ │ └── varint/ │ │ │ │ └── varint_test.c │ │ │ ├── unit_test_api_table.cpp │ │ │ ├── unit_test_api_table_i.h │ │ │ └── unit_tests.c │ │ ├── usb_mouse/ │ │ │ ├── application.fam │ │ │ └── usb_mouse.c │ │ ├── usb_test/ │ │ │ ├── application.fam │ │ │ └── usb_test.c │ │ └── vibro_test/ │ │ ├── application.fam │ │ └── vibro_test.c │ ├── drivers/ │ │ ├── application.fam │ │ └── subghz/ │ │ ├── application.fam │ │ └── cc1101_ext/ │ │ ├── cc1101_ext.c │ │ ├── cc1101_ext.h │ │ ├── cc1101_ext_interconnect.c │ │ └── cc1101_ext_interconnect.h │ ├── examples/ │ │ ├── application.fam │ │ ├── example_adc/ │ │ │ ├── application.fam │ │ │ └── example_adc.c │ │ ├── example_apps_assets/ │ │ │ ├── README.md │ │ │ ├── application.fam │ │ │ ├── example_apps_assets.c │ │ │ └── files/ │ │ │ ├── poems/ │ │ │ │ ├── a jelly-fish.txt │ │ │ │ ├── my shadow.txt │ │ │ │ └── theme in yellow.txt │ │ │ └── test_asset.txt │ │ ├── example_apps_data/ │ │ │ ├── README.md │ │ │ ├── application.fam │ │ │ └── example_apps_data.c │ │ ├── example_ble_beacon/ │ │ │ ├── application.fam │ │ │ ├── ble_beacon_app.c │ │ │ ├── ble_beacon_app.h │ │ │ └── scenes/ │ │ │ ├── scene_config.h │ │ │ ├── scene_input_beacon_data.c │ │ │ ├── scene_input_mac_addr.c │ │ │ ├── scene_menu.c │ │ │ ├── scene_run_beacon.c │ │ │ ├── scenes.c │ │ │ └── scenes.h │ │ ├── example_custom_font/ │ │ │ ├── application.fam │ │ │ └── example_custom_font.c │ │ ├── example_event_loop/ │ │ │ ├── application.fam │ │ │ ├── example_event_loop_event_flags.c │ │ │ ├── example_event_loop_multi.c │ │ │ ├── example_event_loop_mutex.c │ │ │ ├── example_event_loop_stream_buffer.c │ │ │ └── example_event_loop_timer.c │ │ ├── example_images/ │ │ │ ├── ReadMe.md │ │ │ ├── application.fam │ │ │ └── example_images.c │ │ ├── example_number_input/ │ │ │ ├── ReadMe.md │ │ │ ├── application.fam │ │ │ ├── example_number_input.c │ │ │ ├── example_number_input.h │ │ │ └── scenes/ │ │ │ ├── example_number_input_scene.c │ │ │ ├── example_number_input_scene.h │ │ │ ├── example_number_input_scene_config.h │ │ │ ├── example_number_input_scene_input_max.c │ │ │ ├── example_number_input_scene_input_min.c │ │ │ ├── example_number_input_scene_input_number.c │ │ │ └── example_number_input_scene_show_number.c │ │ ├── example_plugins/ │ │ │ ├── application.fam │ │ │ ├── example_plugins.c │ │ │ ├── example_plugins_multi.c │ │ │ ├── plugin1.c │ │ │ ├── plugin2.c │ │ │ └── plugin_interface.h │ │ ├── example_plugins_advanced/ │ │ │ ├── app_api.c │ │ │ ├── app_api.h │ │ │ ├── app_api_interface.h │ │ │ ├── app_api_table.cpp │ │ │ ├── app_api_table_i.h │ │ │ ├── application.fam │ │ │ ├── example_advanced_plugins.c │ │ │ ├── plugin1.c │ │ │ ├── plugin2.c │ │ │ └── plugin_interface.h │ │ ├── example_thermo/ │ │ │ ├── README.md │ │ │ ├── application.fam │ │ │ └── example_thermo.c │ │ ├── example_view_dispatcher/ │ │ │ ├── application.fam │ │ │ └── example_view_dispatcher.c │ │ └── example_view_holder/ │ │ ├── application.fam │ │ └── example_view_holder.c │ ├── main/ │ │ ├── application.fam │ │ ├── archive/ │ │ │ ├── application.fam │ │ │ ├── archive.c │ │ │ ├── archive.h │ │ │ ├── archive_i.h │ │ │ ├── helpers/ │ │ │ │ ├── archive_apps.c │ │ │ │ ├── archive_apps.h │ │ │ │ ├── archive_browser.c │ │ │ │ ├── archive_browser.h │ │ │ │ ├── archive_favorites.c │ │ │ │ ├── archive_favorites.h │ │ │ │ ├── archive_files.c │ │ │ │ └── archive_files.h │ │ │ ├── scenes/ │ │ │ │ ├── archive_scene.c │ │ │ │ ├── archive_scene.h │ │ │ │ ├── archive_scene_browser.c │ │ │ │ ├── archive_scene_config.h │ │ │ │ ├── archive_scene_delete.c │ │ │ │ └── archive_scene_rename.c │ │ │ └── views/ │ │ │ ├── archive_browser_view.c │ │ │ └── archive_browser_view.h │ │ ├── bad_usb/ │ │ │ ├── application.fam │ │ │ ├── bad_usb_app.c │ │ │ ├── bad_usb_app.h │ │ │ ├── bad_usb_app_i.h │ │ │ ├── helpers/ │ │ │ │ ├── bad_usb_hid.c │ │ │ │ ├── bad_usb_hid.h │ │ │ │ ├── ducky_script.c │ │ │ │ ├── ducky_script.h │ │ │ │ ├── ducky_script_commands.c │ │ │ │ ├── ducky_script_i.h │ │ │ │ └── ducky_script_keycodes.c │ │ │ ├── resources/ │ │ │ │ └── badusb/ │ │ │ │ ├── Install_qFlipper_gnome.txt │ │ │ │ ├── Install_qFlipper_macOS.txt │ │ │ │ ├── Install_qFlipper_windows.txt │ │ │ │ ├── assets/ │ │ │ │ │ └── layouts/ │ │ │ │ │ ├── ba-BA.kl │ │ │ │ │ ├── cz_CS.kl │ │ │ │ │ ├── da-DA.kl │ │ │ │ │ ├── de-CH.kl │ │ │ │ │ ├── de-DE.kl │ │ │ │ │ ├── dvorak.kl │ │ │ │ │ ├── en-UK.kl │ │ │ │ │ ├── en-US.kl │ │ │ │ │ ├── es-ES.kl │ │ │ │ │ ├── es-LA.kl │ │ │ │ │ ├── fr-BE.kl │ │ │ │ │ ├── fr-CA.kl │ │ │ │ │ ├── fr-CH.kl │ │ │ │ │ ├── fr-FR-mac.kl │ │ │ │ │ ├── fr-FR.kl │ │ │ │ │ ├── hr-HR.kl │ │ │ │ │ ├── hu-HU.kl │ │ │ │ │ ├── it-IT-mac.kl │ │ │ │ │ ├── it-IT.kl │ │ │ │ │ ├── nb-NO.kl │ │ │ │ │ ├── nl-NL.kl │ │ │ │ │ ├── pt-BR.kl │ │ │ │ │ ├── pt-PT.kl │ │ │ │ │ ├── si-SI.kl │ │ │ │ │ ├── sk-SK.kl │ │ │ │ │ ├── sv-SE.kl │ │ │ │ │ └── tr-TR.kl │ │ │ │ ├── demo_chromeos.txt │ │ │ │ ├── demo_gnome.txt │ │ │ │ ├── demo_macos.txt │ │ │ │ ├── demo_windows.txt │ │ │ │ └── test_mouse.txt │ │ │ ├── scenes/ │ │ │ │ ├── bad_usb_scene.c │ │ │ │ ├── bad_usb_scene.h │ │ │ │ ├── bad_usb_scene_config.c │ │ │ │ ├── bad_usb_scene_config.h │ │ │ │ ├── bad_usb_scene_config_layout.c │ │ │ │ ├── bad_usb_scene_confirm_unpair.c │ │ │ │ ├── bad_usb_scene_error.c │ │ │ │ ├── bad_usb_scene_file_select.c │ │ │ │ ├── bad_usb_scene_unpair_done.c │ │ │ │ └── bad_usb_scene_work.c │ │ │ └── views/ │ │ │ ├── bad_usb_view.c │ │ │ └── bad_usb_view.h │ │ ├── gpio/ │ │ │ ├── application.fam │ │ │ ├── gpio_app.c │ │ │ ├── gpio_app.h │ │ │ ├── gpio_app_i.h │ │ │ ├── gpio_custom_event.h │ │ │ ├── gpio_items.c │ │ │ ├── gpio_items.h │ │ │ ├── scenes/ │ │ │ │ ├── gpio_scene.c │ │ │ │ ├── gpio_scene.h │ │ │ │ ├── gpio_scene_config.h │ │ │ │ ├── gpio_scene_start.c │ │ │ │ ├── gpio_scene_test.c │ │ │ │ ├── gpio_scene_usb_uart.c │ │ │ │ ├── gpio_scene_usb_uart_close_rpc.c │ │ │ │ └── gpio_scene_usb_uart_config.c │ │ │ ├── usb_uart_bridge.c │ │ │ ├── usb_uart_bridge.h │ │ │ └── views/ │ │ │ ├── gpio_test.c │ │ │ ├── gpio_test.h │ │ │ ├── gpio_usb_uart.c │ │ │ └── gpio_usb_uart.h │ │ ├── ibutton/ │ │ │ ├── application.fam │ │ │ ├── ibutton.c │ │ │ ├── ibutton.h │ │ │ ├── ibutton_cli.c │ │ │ ├── ibutton_custom_event.h │ │ │ ├── ibutton_i.h │ │ │ └── scenes/ │ │ │ ├── ibutton_scene.c │ │ │ ├── ibutton_scene.h │ │ │ ├── ibutton_scene_add_type.c │ │ │ ├── ibutton_scene_add_value.c │ │ │ ├── ibutton_scene_config.h │ │ │ ├── ibutton_scene_delete_confirm.c │ │ │ ├── ibutton_scene_delete_success.c │ │ │ ├── ibutton_scene_emulate.c │ │ │ ├── ibutton_scene_exit_confirm.c │ │ │ ├── ibutton_scene_info.c │ │ │ ├── ibutton_scene_read.c │ │ │ ├── ibutton_scene_read_error.c │ │ │ ├── ibutton_scene_read_key_menu.c │ │ │ ├── ibutton_scene_read_success.c │ │ │ ├── ibutton_scene_retry_confirm.c │ │ │ ├── ibutton_scene_rpc.c │ │ │ ├── ibutton_scene_save_name.c │ │ │ ├── ibutton_scene_save_success.c │ │ │ ├── ibutton_scene_saved_key_menu.c │ │ │ ├── ibutton_scene_select_key.c │ │ │ ├── ibutton_scene_start.c │ │ │ ├── ibutton_scene_view_data.c │ │ │ ├── ibutton_scene_write.c │ │ │ └── ibutton_scene_write_success.c │ │ ├── infrared/ │ │ │ ├── application.fam │ │ │ ├── infrared_app.c │ │ │ ├── infrared_app.h │ │ │ ├── infrared_app_i.h │ │ │ ├── infrared_cli.c │ │ │ ├── infrared_custom_event.h │ │ │ ├── infrared_remote.c │ │ │ ├── infrared_remote.h │ │ │ ├── resources/ │ │ │ │ └── infrared/ │ │ │ │ └── assets/ │ │ │ │ ├── ac.ir │ │ │ │ ├── audio.ir │ │ │ │ ├── projector.ir │ │ │ │ └── tv.ir │ │ │ ├── scenes/ │ │ │ │ ├── common/ │ │ │ │ │ ├── infrared_scene_universal_common.c │ │ │ │ │ └── infrared_scene_universal_common.h │ │ │ │ ├── infrared_scene.c │ │ │ │ ├── infrared_scene.h │ │ │ │ ├── infrared_scene_ask_back.c │ │ │ │ ├── infrared_scene_ask_retry.c │ │ │ │ ├── infrared_scene_config.h │ │ │ │ ├── infrared_scene_debug.c │ │ │ │ ├── infrared_scene_edit.c │ │ │ │ ├── infrared_scene_edit_button_select.c │ │ │ │ ├── infrared_scene_edit_delete.c │ │ │ │ ├── infrared_scene_edit_delete_done.c │ │ │ │ ├── infrared_scene_edit_move.c │ │ │ │ ├── infrared_scene_edit_rename.c │ │ │ │ ├── infrared_scene_edit_rename_done.c │ │ │ │ ├── infrared_scene_error_databases.c │ │ │ │ ├── infrared_scene_gpio_settings.c │ │ │ │ ├── infrared_scene_learn.c │ │ │ │ ├── infrared_scene_learn_done.c │ │ │ │ ├── infrared_scene_learn_enter_name.c │ │ │ │ ├── infrared_scene_learn_success.c │ │ │ │ ├── infrared_scene_remote.c │ │ │ │ ├── infrared_scene_remote_list.c │ │ │ │ ├── infrared_scene_rpc.c │ │ │ │ ├── infrared_scene_start.c │ │ │ │ ├── infrared_scene_universal.c │ │ │ │ ├── infrared_scene_universal_ac.c │ │ │ │ ├── infrared_scene_universal_audio.c │ │ │ │ ├── infrared_scene_universal_projector.c │ │ │ │ └── infrared_scene_universal_tv.c │ │ │ └── views/ │ │ │ ├── infrared_debug_view.c │ │ │ ├── infrared_debug_view.h │ │ │ ├── infrared_move_view.c │ │ │ ├── infrared_move_view.h │ │ │ ├── infrared_progress_view.c │ │ │ └── infrared_progress_view.h │ │ ├── lfrfid/ │ │ │ ├── application.fam │ │ │ ├── lfrfid.c │ │ │ ├── lfrfid_cli.c │ │ │ ├── lfrfid_i.h │ │ │ ├── resources/ │ │ │ │ └── lfrfid/ │ │ │ │ └── assets/ │ │ │ │ └── iso3166.lfrfid │ │ │ ├── scenes/ │ │ │ │ ├── lfrfid_scene.c │ │ │ │ ├── lfrfid_scene.h │ │ │ │ ├── lfrfid_scene_config.h │ │ │ │ ├── lfrfid_scene_delete_confirm.c │ │ │ │ ├── lfrfid_scene_delete_success.c │ │ │ │ ├── lfrfid_scene_emulate.c │ │ │ │ ├── lfrfid_scene_exit_confirm.c │ │ │ │ ├── lfrfid_scene_extra_actions.c │ │ │ │ ├── lfrfid_scene_raw_info.c │ │ │ │ ├── lfrfid_scene_raw_name.c │ │ │ │ ├── lfrfid_scene_raw_read.c │ │ │ │ ├── lfrfid_scene_raw_success.c │ │ │ │ ├── lfrfid_scene_read.c │ │ │ │ ├── lfrfid_scene_read_key_menu.c │ │ │ │ ├── lfrfid_scene_read_success.c │ │ │ │ ├── lfrfid_scene_retry_confirm.c │ │ │ │ ├── lfrfid_scene_rpc.c │ │ │ │ ├── lfrfid_scene_save_data.c │ │ │ │ ├── lfrfid_scene_save_name.c │ │ │ │ ├── lfrfid_scene_save_success.c │ │ │ │ ├── lfrfid_scene_save_type.c │ │ │ │ ├── lfrfid_scene_saved_info.c │ │ │ │ ├── lfrfid_scene_saved_key_menu.c │ │ │ │ ├── lfrfid_scene_select_key.c │ │ │ │ ├── lfrfid_scene_start.c │ │ │ │ ├── lfrfid_scene_write.c │ │ │ │ └── lfrfid_scene_write_success.c │ │ │ └── views/ │ │ │ ├── lfrfid_view_read.c │ │ │ └── lfrfid_view_read.h │ │ ├── nfc/ │ │ │ ├── api/ │ │ │ │ ├── gallagher/ │ │ │ │ │ ├── gallagher_util.c │ │ │ │ │ └── gallagher_util.h │ │ │ │ ├── mosgortrans/ │ │ │ │ │ ├── mosgortrans_util.c │ │ │ │ │ └── mosgortrans_util.h │ │ │ │ ├── nfc_app_api_interface.h │ │ │ │ ├── nfc_app_api_table.cpp │ │ │ │ └── nfc_app_api_table_i.h │ │ │ ├── application.fam │ │ │ ├── cli/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── apdu/ │ │ │ │ │ │ ├── nfc_cli_command_apdu.c │ │ │ │ │ │ ├── nfc_cli_command_apdu.h │ │ │ │ │ │ └── protocol_handlers/ │ │ │ │ │ │ ├── iso14443_4a/ │ │ │ │ │ │ │ ├── nfc_cli_apdu_iso14443_4a.c │ │ │ │ │ │ │ └── nfc_cli_apdu_iso14443_4a.h │ │ │ │ │ │ ├── iso14443_4b/ │ │ │ │ │ │ │ ├── nfc_cli_apdu_iso14443_4b.c │ │ │ │ │ │ │ └── nfc_cli_apdu_iso14443_4b.h │ │ │ │ │ │ ├── iso15693_3/ │ │ │ │ │ │ │ ├── nfc_cli_apdu_iso15693_3.c │ │ │ │ │ │ │ └── nfc_cli_apdu_iso15693_3.h │ │ │ │ │ │ └── nfc_cli_apdu_common_types.h │ │ │ │ │ ├── dump/ │ │ │ │ │ │ ├── nfc_cli_command_dump.c │ │ │ │ │ │ ├── nfc_cli_command_dump.h │ │ │ │ │ │ └── protocols/ │ │ │ │ │ │ ├── felica/ │ │ │ │ │ │ │ ├── nfc_cli_dump_felica.c │ │ │ │ │ │ │ └── nfc_cli_dump_felica.h │ │ │ │ │ │ ├── iso14443_3a/ │ │ │ │ │ │ │ ├── nfc_cli_dump_iso14443_3a.c │ │ │ │ │ │ │ └── nfc_cli_dump_iso14443_3a.h │ │ │ │ │ │ ├── iso14443_3b/ │ │ │ │ │ │ │ ├── nfc_cli_dump_iso14443_3b.c │ │ │ │ │ │ │ └── nfc_cli_dump_iso14443_3b.h │ │ │ │ │ │ ├── iso14443_4a/ │ │ │ │ │ │ │ ├── nfc_cli_dump_iso14443_4a.c │ │ │ │ │ │ │ └── nfc_cli_dump_iso14443_4a.h │ │ │ │ │ │ ├── iso14443_4b/ │ │ │ │ │ │ │ ├── nfc_cli_dump_iso14443_4b.c │ │ │ │ │ │ │ └── nfc_cli_dump_iso14443_4b.h │ │ │ │ │ │ ├── iso15693_3/ │ │ │ │ │ │ │ ├── nfc_cli_dump_iso15693_3.c │ │ │ │ │ │ │ └── nfc_cli_dump_iso15693_3.h │ │ │ │ │ │ ├── mf_classic/ │ │ │ │ │ │ │ ├── nfc_cli_dump_mf_classic.c │ │ │ │ │ │ │ └── nfc_cli_dump_mf_classic.h │ │ │ │ │ │ ├── mf_desfire/ │ │ │ │ │ │ │ ├── nfc_cli_dump_mf_desfire.c │ │ │ │ │ │ │ └── nfc_cli_dump_mf_desfire.h │ │ │ │ │ │ ├── mf_plus/ │ │ │ │ │ │ │ ├── nfc_cli_dump_mf_plus.c │ │ │ │ │ │ │ └── nfc_cli_dump_mf_plus.h │ │ │ │ │ │ ├── mf_ultralight/ │ │ │ │ │ │ │ ├── nfc_cli_dump_mf_ultralight.c │ │ │ │ │ │ │ └── nfc_cli_dump_mf_ultralight.h │ │ │ │ │ │ ├── nfc_cli_dump_common_types.h │ │ │ │ │ │ ├── slix/ │ │ │ │ │ │ │ ├── nfc_cli_dump_slix.c │ │ │ │ │ │ │ └── nfc_cli_dump_slix.h │ │ │ │ │ │ └── st25tb/ │ │ │ │ │ │ ├── nfc_cli_dump_st25tb.c │ │ │ │ │ │ └── nfc_cli_dump_st25tb.h │ │ │ │ │ ├── helpers/ │ │ │ │ │ │ ├── nfc_cli_format.c │ │ │ │ │ │ ├── nfc_cli_format.h │ │ │ │ │ │ ├── nfc_cli_protocol_parser.c │ │ │ │ │ │ ├── nfc_cli_protocol_parser.h │ │ │ │ │ │ ├── nfc_cli_scanner.c │ │ │ │ │ │ └── nfc_cli_scanner.h │ │ │ │ │ ├── mfu/ │ │ │ │ │ │ ├── nfc_cli_action_info.c │ │ │ │ │ │ ├── nfc_cli_action_info.h │ │ │ │ │ │ ├── nfc_cli_action_rdbl.c │ │ │ │ │ │ ├── nfc_cli_action_rdbl.h │ │ │ │ │ │ ├── nfc_cli_action_wrbl.c │ │ │ │ │ │ ├── nfc_cli_action_wrbl.h │ │ │ │ │ │ ├── nfc_cli_command_mfu.c │ │ │ │ │ │ └── nfc_cli_command_mfu.h │ │ │ │ │ ├── nfc_cli_command_emulate.c │ │ │ │ │ ├── nfc_cli_command_emulate.h │ │ │ │ │ ├── nfc_cli_command_field.c │ │ │ │ │ ├── nfc_cli_command_field.h │ │ │ │ │ ├── nfc_cli_command_scanner.c │ │ │ │ │ ├── nfc_cli_command_scanner.h │ │ │ │ │ └── raw/ │ │ │ │ │ ├── nfc_cli_command_raw.c │ │ │ │ │ ├── nfc_cli_command_raw.h │ │ │ │ │ └── protocol_handlers/ │ │ │ │ │ ├── felica/ │ │ │ │ │ │ ├── nfc_cli_raw_felica.c │ │ │ │ │ │ └── nfc_cli_raw_felica.h │ │ │ │ │ ├── iso14443_3a/ │ │ │ │ │ │ ├── nfc_cli_raw_iso14443_3a.c │ │ │ │ │ │ └── nfc_cli_raw_iso14443_3a.h │ │ │ │ │ ├── iso14443_3b/ │ │ │ │ │ │ ├── nfc_cli_raw_iso14443_3b.c │ │ │ │ │ │ └── nfc_cli_raw_iso14443_3b.h │ │ │ │ │ ├── iso15693_3/ │ │ │ │ │ │ ├── nfc_cli_raw_iso15693_3.c │ │ │ │ │ │ └── nfc_cli_raw_iso15693_3.h │ │ │ │ │ └── nfc_cli_raw_common_types.h │ │ │ │ ├── nfc_cli.c │ │ │ │ ├── nfc_cli_command_base.h │ │ │ │ ├── nfc_cli_command_base_i.h │ │ │ │ ├── nfc_cli_command_processor.c │ │ │ │ ├── nfc_cli_command_processor.h │ │ │ │ ├── nfc_cli_commands.c │ │ │ │ └── nfc_cli_commands.h │ │ │ ├── helpers/ │ │ │ │ ├── felica_auth.c │ │ │ │ ├── felica_auth.h │ │ │ │ ├── mf_classic_key_cache.c │ │ │ │ ├── mf_classic_key_cache.h │ │ │ │ ├── mf_ultralight_auth.c │ │ │ │ ├── mf_ultralight_auth.h │ │ │ │ ├── mf_user_dict.c │ │ │ │ ├── mf_user_dict.h │ │ │ │ ├── mfkey32_logger.c │ │ │ │ ├── mfkey32_logger.h │ │ │ │ ├── nfc_custom_event.h │ │ │ │ ├── nfc_detected_protocols.c │ │ │ │ ├── nfc_detected_protocols.h │ │ │ │ ├── nfc_emv_parser.c │ │ │ │ ├── nfc_emv_parser.h │ │ │ │ ├── nfc_supported_cards.c │ │ │ │ ├── nfc_supported_cards.h │ │ │ │ ├── protocol_support/ │ │ │ │ │ ├── felica/ │ │ │ │ │ │ ├── felica.c │ │ │ │ │ │ ├── felica.h │ │ │ │ │ │ ├── felica_render.c │ │ │ │ │ │ └── felica_render.h │ │ │ │ │ ├── iso14443_3a/ │ │ │ │ │ │ ├── iso14443_3a.c │ │ │ │ │ │ ├── iso14443_3a.h │ │ │ │ │ │ ├── iso14443_3a_render.c │ │ │ │ │ │ └── iso14443_3a_render.h │ │ │ │ │ ├── iso14443_3b/ │ │ │ │ │ │ ├── iso14443_3b.c │ │ │ │ │ │ ├── iso14443_3b.h │ │ │ │ │ │ ├── iso14443_3b_i.h │ │ │ │ │ │ ├── iso14443_3b_render.c │ │ │ │ │ │ └── iso14443_3b_render.h │ │ │ │ │ ├── iso14443_4a/ │ │ │ │ │ │ ├── iso14443_4a.c │ │ │ │ │ │ ├── iso14443_4a.h │ │ │ │ │ │ ├── iso14443_4a_i.h │ │ │ │ │ │ ├── iso14443_4a_render.c │ │ │ │ │ │ └── iso14443_4a_render.h │ │ │ │ │ ├── iso14443_4b/ │ │ │ │ │ │ ├── iso14443_4b.c │ │ │ │ │ │ ├── iso14443_4b.h │ │ │ │ │ │ ├── iso14443_4b_render.c │ │ │ │ │ │ └── iso14443_4b_render.h │ │ │ │ │ ├── iso15693_3/ │ │ │ │ │ │ ├── iso15693_3.c │ │ │ │ │ │ ├── iso15693_3.h │ │ │ │ │ │ ├── iso15693_3_render.c │ │ │ │ │ │ └── iso15693_3_render.h │ │ │ │ │ ├── mf_classic/ │ │ │ │ │ │ ├── mf_classic.c │ │ │ │ │ │ ├── mf_classic.h │ │ │ │ │ │ ├── mf_classic_render.c │ │ │ │ │ │ └── mf_classic_render.h │ │ │ │ │ ├── mf_desfire/ │ │ │ │ │ │ ├── mf_desfire.c │ │ │ │ │ │ ├── mf_desfire.h │ │ │ │ │ │ ├── mf_desfire_render.c │ │ │ │ │ │ └── mf_desfire_render.h │ │ │ │ │ ├── mf_plus/ │ │ │ │ │ │ ├── mf_plus.c │ │ │ │ │ │ ├── mf_plus.h │ │ │ │ │ │ ├── mf_plus_render.c │ │ │ │ │ │ └── mf_plus_render.h │ │ │ │ │ ├── mf_ultralight/ │ │ │ │ │ │ ├── mf_ultralight.c │ │ │ │ │ │ ├── mf_ultralight.h │ │ │ │ │ │ ├── mf_ultralight_render.c │ │ │ │ │ │ └── mf_ultralight_render.h │ │ │ │ │ ├── nfc_protocol_support.c │ │ │ │ │ ├── nfc_protocol_support.h │ │ │ │ │ ├── nfc_protocol_support_base.h │ │ │ │ │ ├── nfc_protocol_support_common.h │ │ │ │ │ ├── nfc_protocol_support_defs.c │ │ │ │ │ ├── nfc_protocol_support_defs.h │ │ │ │ │ ├── nfc_protocol_support_gui_common.c │ │ │ │ │ ├── nfc_protocol_support_gui_common.h │ │ │ │ │ ├── nfc_protocol_support_render_common.h │ │ │ │ │ ├── nfc_protocol_support_unlock_helper.c │ │ │ │ │ ├── nfc_protocol_support_unlock_helper.h │ │ │ │ │ ├── slix/ │ │ │ │ │ │ ├── slix.c │ │ │ │ │ │ ├── slix.h │ │ │ │ │ │ ├── slix_render.c │ │ │ │ │ │ └── slix_render.h │ │ │ │ │ └── st25tb/ │ │ │ │ │ ├── st25tb.c │ │ │ │ │ ├── st25tb.h │ │ │ │ │ ├── st25tb_render.c │ │ │ │ │ └── st25tb_render.h │ │ │ │ ├── slix_unlock.c │ │ │ │ └── slix_unlock.h │ │ │ ├── nfc_app.c │ │ │ ├── nfc_app.h │ │ │ ├── nfc_app_i.h │ │ │ ├── plugins/ │ │ │ │ └── supported_cards/ │ │ │ │ ├── aic.c │ │ │ │ ├── aime.c │ │ │ │ ├── all_in_one.c │ │ │ │ ├── banapass.c │ │ │ │ ├── bip.c │ │ │ │ ├── clipper.c │ │ │ │ ├── disney_infinity.c │ │ │ │ ├── gallagher.c │ │ │ │ ├── hi.c │ │ │ │ ├── hid.c │ │ │ │ ├── hworld.c │ │ │ │ ├── itso.c │ │ │ │ ├── microel.c │ │ │ │ ├── mizip.c │ │ │ │ ├── mykey.c │ │ │ │ ├── myki.c │ │ │ │ ├── ndef.c │ │ │ │ ├── nfc_supported_card_plugin.h │ │ │ │ ├── opal.c │ │ │ │ ├── plantain.c │ │ │ │ ├── skylanders.c │ │ │ │ ├── social_moscow.c │ │ │ │ ├── troika.c │ │ │ │ ├── trt.c │ │ │ │ ├── two_cities.c │ │ │ │ ├── umarsh.c │ │ │ │ └── washcity.c │ │ │ ├── resources/ │ │ │ │ └── nfc/ │ │ │ │ └── assets/ │ │ │ │ ├── aid.nfc │ │ │ │ ├── country_code.nfc │ │ │ │ ├── currency_code.nfc │ │ │ │ ├── mf_classic_dict.nfc │ │ │ │ ├── mf_ultralight_c_dict.nfc │ │ │ │ ├── skylanders.nfc │ │ │ │ └── vendors.nfc │ │ │ ├── scenes/ │ │ │ │ ├── nfc_scene.c │ │ │ │ ├── nfc_scene.h │ │ │ │ ├── nfc_scene_config.h │ │ │ │ ├── nfc_scene_debug.c │ │ │ │ ├── nfc_scene_delete.c │ │ │ │ ├── nfc_scene_delete_success.c │ │ │ │ ├── nfc_scene_des_auth_key_input.c │ │ │ │ ├── nfc_scene_des_auth_unlock_warn.c │ │ │ │ ├── nfc_scene_detect.c │ │ │ │ ├── nfc_scene_emulate.c │ │ │ │ ├── nfc_scene_exit_confirm.c │ │ │ │ ├── nfc_scene_extra_actions.c │ │ │ │ ├── nfc_scene_felica_more_info.c │ │ │ │ ├── nfc_scene_felica_system.c │ │ │ │ ├── nfc_scene_field.c │ │ │ │ ├── nfc_scene_file_select.c │ │ │ │ ├── nfc_scene_generate_info.c │ │ │ │ ├── nfc_scene_info.c │ │ │ │ ├── nfc_scene_mf_classic_detect_reader.c │ │ │ │ ├── nfc_scene_mf_classic_dict_attack.c │ │ │ │ ├── nfc_scene_mf_classic_keys.c │ │ │ │ ├── nfc_scene_mf_classic_keys_add.c │ │ │ │ ├── nfc_scene_mf_classic_keys_delete.c │ │ │ │ ├── nfc_scene_mf_classic_keys_list.c │ │ │ │ ├── nfc_scene_mf_classic_keys_warn_duplicate.c │ │ │ │ ├── nfc_scene_mf_classic_mfkey_complete.c │ │ │ │ ├── nfc_scene_mf_classic_mfkey_nonces_info.c │ │ │ │ ├── nfc_scene_mf_classic_update_initial.c │ │ │ │ ├── nfc_scene_mf_classic_update_initial_success.c │ │ │ │ ├── nfc_scene_mf_classic_update_initial_wrong_card.c │ │ │ │ ├── nfc_scene_mf_classic_write_initial.c │ │ │ │ ├── nfc_scene_mf_classic_write_initial_fail.c │ │ │ │ ├── nfc_scene_mf_classic_write_initial_success.c │ │ │ │ ├── nfc_scene_mf_classic_write_initial_wrong_card.c │ │ │ │ ├── nfc_scene_mf_desfire_app.c │ │ │ │ ├── nfc_scene_mf_desfire_more_info.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_dict_attack.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_keys.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_keys_add.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_keys_delete.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_keys_list.c │ │ │ │ ├── nfc_scene_mf_ultralight_c_keys_warn_duplicate.c │ │ │ │ ├── nfc_scene_mf_ultralight_capture_pass.c │ │ │ │ ├── nfc_scene_mf_ultralight_key_input.c │ │ │ │ ├── nfc_scene_mf_ultralight_unlock_menu.c │ │ │ │ ├── nfc_scene_mf_ultralight_unlock_warn.c │ │ │ │ ├── nfc_scene_mf_ultralight_write.c │ │ │ │ ├── nfc_scene_mf_ultralight_write_fail.c │ │ │ │ ├── nfc_scene_mf_ultralight_write_success.c │ │ │ │ ├── nfc_scene_mf_ultralight_wrong_card.c │ │ │ │ ├── nfc_scene_more_info.c │ │ │ │ ├── nfc_scene_read.c │ │ │ │ ├── nfc_scene_read_menu.c │ │ │ │ ├── nfc_scene_read_success.c │ │ │ │ ├── nfc_scene_restore_original.c │ │ │ │ ├── nfc_scene_restore_original_confirm.c │ │ │ │ ├── nfc_scene_retry_confirm.c │ │ │ │ ├── nfc_scene_rpc.c │ │ │ │ ├── nfc_scene_save_confirm.c │ │ │ │ ├── nfc_scene_save_name.c │ │ │ │ ├── nfc_scene_save_success.c │ │ │ │ ├── nfc_scene_saved_menu.c │ │ │ │ ├── nfc_scene_select_protocol.c │ │ │ │ ├── nfc_scene_set_atqa.c │ │ │ │ ├── nfc_scene_set_sak.c │ │ │ │ ├── nfc_scene_set_type.c │ │ │ │ ├── nfc_scene_set_uid.c │ │ │ │ ├── nfc_scene_slix_key_input.c │ │ │ │ ├── nfc_scene_slix_unlock.c │ │ │ │ ├── nfc_scene_slix_unlock_menu.c │ │ │ │ ├── nfc_scene_slix_unlock_success.c │ │ │ │ ├── nfc_scene_start.c │ │ │ │ └── nfc_scene_supported_card.c │ │ │ └── views/ │ │ │ ├── detect_reader.c │ │ │ ├── detect_reader.h │ │ │ ├── dict_attack.c │ │ │ └── dict_attack.h │ │ ├── onewire/ │ │ │ ├── application.fam │ │ │ └── onewire_cli.c │ │ ├── subghz/ │ │ │ ├── application.fam │ │ │ ├── helpers/ │ │ │ │ ├── subghz_chat.c │ │ │ │ ├── subghz_chat.h │ │ │ │ ├── subghz_custom_event.h │ │ │ │ ├── subghz_frequency_analyzer_log_item_array.c │ │ │ │ ├── subghz_frequency_analyzer_log_item_array.h │ │ │ │ ├── subghz_frequency_analyzer_worker.c │ │ │ │ ├── subghz_frequency_analyzer_worker.h │ │ │ │ ├── subghz_threshold_rssi.c │ │ │ │ ├── subghz_threshold_rssi.h │ │ │ │ ├── subghz_txrx.c │ │ │ │ ├── subghz_txrx.h │ │ │ │ ├── subghz_txrx_create_protocol_key.c │ │ │ │ ├── subghz_txrx_create_protocol_key.h │ │ │ │ ├── subghz_txrx_i.h │ │ │ │ └── subghz_types.h │ │ │ ├── resources/ │ │ │ │ └── subghz/ │ │ │ │ └── assets/ │ │ │ │ ├── alutech_at_4n │ │ │ │ ├── came_atomo │ │ │ │ ├── keeloq_mfcodes │ │ │ │ ├── keeloq_mfcodes_user.example │ │ │ │ ├── nice_flor_s │ │ │ │ └── setting_user.example │ │ │ ├── scenes/ │ │ │ │ ├── subghz_scene.c │ │ │ │ ├── subghz_scene.h │ │ │ │ ├── subghz_scene_config.h │ │ │ │ ├── subghz_scene_delete.c │ │ │ │ ├── subghz_scene_delete_raw.c │ │ │ │ ├── subghz_scene_delete_success.c │ │ │ │ ├── subghz_scene_frequency_analyzer.c │ │ │ │ ├── subghz_scene_more_raw.c │ │ │ │ ├── subghz_scene_need_saving.c │ │ │ │ ├── subghz_scene_radio_setting.c │ │ │ │ ├── subghz_scene_read_raw.c │ │ │ │ ├── subghz_scene_receiver.c │ │ │ │ ├── subghz_scene_receiver_config.c │ │ │ │ ├── subghz_scene_receiver_info.c │ │ │ │ ├── subghz_scene_region_info.c │ │ │ │ ├── subghz_scene_rpc.c │ │ │ │ ├── subghz_scene_save_name.c │ │ │ │ ├── subghz_scene_save_success.c │ │ │ │ ├── subghz_scene_saved.c │ │ │ │ ├── subghz_scene_saved_menu.c │ │ │ │ ├── subghz_scene_set_type.c │ │ │ │ ├── subghz_scene_show_error.c │ │ │ │ ├── subghz_scene_show_error_sub.c │ │ │ │ ├── subghz_scene_start.c │ │ │ │ └── subghz_scene_transmitter.c │ │ │ ├── subghz.c │ │ │ ├── subghz.h │ │ │ ├── subghz_cli.c │ │ │ ├── subghz_cli.h │ │ │ ├── subghz_history.c │ │ │ ├── subghz_history.h │ │ │ ├── subghz_i.c │ │ │ ├── subghz_i.h │ │ │ └── views/ │ │ │ ├── receiver.c │ │ │ ├── receiver.h │ │ │ ├── subghz_frequency_analyzer.c │ │ │ ├── subghz_frequency_analyzer.h │ │ │ ├── subghz_read_raw.c │ │ │ ├── subghz_read_raw.h │ │ │ ├── transmitter.c │ │ │ └── transmitter.h │ │ └── u2f/ │ │ ├── application.fam │ │ ├── resources/ │ │ │ └── u2f/ │ │ │ └── assets/ │ │ │ ├── cert.der │ │ │ └── cert_key.u2f │ │ ├── scenes/ │ │ │ ├── u2f_scene.c │ │ │ ├── u2f_scene.h │ │ │ ├── u2f_scene_config.h │ │ │ ├── u2f_scene_error.c │ │ │ └── u2f_scene_main.c │ │ ├── u2f.c │ │ ├── u2f.h │ │ ├── u2f_app.c │ │ ├── u2f_app.h │ │ ├── u2f_app_i.h │ │ ├── u2f_data.c │ │ ├── u2f_data.h │ │ ├── u2f_hid.c │ │ ├── u2f_hid.h │ │ └── views/ │ │ ├── u2f_view.c │ │ └── u2f_view.h │ ├── services/ │ │ ├── application.fam │ │ ├── applications.h │ │ ├── bt/ │ │ │ ├── application.fam │ │ │ ├── bt_cli.c │ │ │ ├── bt_service/ │ │ │ │ ├── bt.c │ │ │ │ ├── bt.h │ │ │ │ ├── bt_api.c │ │ │ │ ├── bt_i.h │ │ │ │ ├── bt_keys_filename.h │ │ │ │ ├── bt_keys_storage.c │ │ │ │ ├── bt_keys_storage.h │ │ │ │ └── bt_settings_api_i.h │ │ │ ├── bt_settings.c │ │ │ ├── bt_settings.h │ │ │ └── bt_settings_filename.h │ │ ├── cli/ │ │ │ ├── application.fam │ │ │ ├── cli.h │ │ │ ├── cli_command_gpio.c │ │ │ ├── cli_command_gpio.h │ │ │ ├── cli_main_commands.c │ │ │ ├── cli_main_commands.h │ │ │ ├── cli_main_shell.c │ │ │ ├── cli_main_shell.h │ │ │ ├── cli_vcp.c │ │ │ ├── cli_vcp.h │ │ │ └── commands/ │ │ │ ├── buzzer.c │ │ │ ├── hello_world.c │ │ │ ├── neofetch.c │ │ │ └── subshell_demo.c │ │ ├── crypto/ │ │ │ ├── application.fam │ │ │ └── crypto_cli.c │ │ ├── desktop/ │ │ │ ├── animations/ │ │ │ │ ├── animation_manager.c │ │ │ │ ├── animation_manager.h │ │ │ │ ├── animation_storage.c │ │ │ │ ├── animation_storage.h │ │ │ │ ├── animation_storage_i.h │ │ │ │ └── views/ │ │ │ │ ├── bubble_animation_view.c │ │ │ │ ├── bubble_animation_view.h │ │ │ │ ├── one_shot_animation_view.c │ │ │ │ └── one_shot_animation_view.h │ │ │ ├── application.fam │ │ │ ├── desktop.c │ │ │ ├── desktop.h │ │ │ ├── desktop_i.h │ │ │ ├── desktop_settings.c │ │ │ ├── desktop_settings.h │ │ │ ├── desktop_settings_filename.h │ │ │ ├── helpers/ │ │ │ │ ├── pin_code.c │ │ │ │ ├── pin_code.h │ │ │ │ ├── slideshow.c │ │ │ │ ├── slideshow.h │ │ │ │ └── slideshow_filename.h │ │ │ ├── scenes/ │ │ │ │ ├── desktop_scene.c │ │ │ │ ├── desktop_scene.h │ │ │ │ ├── desktop_scene_config.h │ │ │ │ ├── desktop_scene_debug.c │ │ │ │ ├── desktop_scene_fault.c │ │ │ │ ├── desktop_scene_hw_mismatch.c │ │ │ │ ├── desktop_scene_lock_menu.c │ │ │ │ ├── desktop_scene_locked.c │ │ │ │ ├── desktop_scene_locked.h │ │ │ │ ├── desktop_scene_main.c │ │ │ │ ├── desktop_scene_pin_input.c │ │ │ │ ├── desktop_scene_pin_timeout.c │ │ │ │ ├── desktop_scene_secure_enclave.c │ │ │ │ └── desktop_scene_slideshow.c │ │ │ └── views/ │ │ │ ├── desktop_events.h │ │ │ ├── desktop_view_debug.c │ │ │ ├── desktop_view_debug.h │ │ │ ├── desktop_view_lock_menu.c │ │ │ ├── desktop_view_lock_menu.h │ │ │ ├── desktop_view_locked.c │ │ │ ├── desktop_view_locked.h │ │ │ ├── desktop_view_main.c │ │ │ ├── desktop_view_main.h │ │ │ ├── desktop_view_pin_input.c │ │ │ ├── desktop_view_pin_input.h │ │ │ ├── desktop_view_pin_timeout.c │ │ │ ├── desktop_view_pin_timeout.h │ │ │ ├── desktop_view_slideshow.c │ │ │ └── desktop_view_slideshow.h │ │ ├── dialogs/ │ │ │ ├── application.fam │ │ │ ├── dialogs.c │ │ │ ├── dialogs.h │ │ │ ├── dialogs_api.c │ │ │ ├── dialogs_i.h │ │ │ ├── dialogs_message.h │ │ │ ├── dialogs_module_file_browser.c │ │ │ ├── dialogs_module_file_browser.h │ │ │ ├── dialogs_module_message.c │ │ │ └── dialogs_module_message.h │ │ ├── dolphin/ │ │ │ ├── application.fam │ │ │ ├── dolphin.c │ │ │ ├── dolphin.h │ │ │ ├── dolphin_i.h │ │ │ └── helpers/ │ │ │ ├── dolphin_deed.c │ │ │ ├── dolphin_deed.h │ │ │ ├── dolphin_state.c │ │ │ ├── dolphin_state.h │ │ │ └── dolphin_state_filename.h │ │ ├── expansion/ │ │ │ ├── application.fam │ │ │ ├── expansion.c │ │ │ ├── expansion.h │ │ │ ├── expansion_protocol.h │ │ │ ├── expansion_settings.c │ │ │ ├── expansion_settings.h │ │ │ ├── expansion_settings_filename.h │ │ │ ├── expansion_worker.c │ │ │ └── expansion_worker.h │ │ ├── gui/ │ │ │ ├── application.fam │ │ │ ├── canvas.c │ │ │ ├── canvas.h │ │ │ ├── canvas_i.h │ │ │ ├── elements.c │ │ │ ├── elements.h │ │ │ ├── gui.c │ │ │ ├── gui.h │ │ │ ├── gui_i.h │ │ │ ├── icon.c │ │ │ ├── icon.h │ │ │ ├── icon_animation.c │ │ │ ├── icon_animation.h │ │ │ ├── icon_animation_i.h │ │ │ ├── icon_i.h │ │ │ ├── modules/ │ │ │ │ ├── button_menu.c │ │ │ │ ├── button_menu.h │ │ │ │ ├── button_panel.c │ │ │ │ ├── button_panel.h │ │ │ │ ├── byte_input.c │ │ │ │ ├── byte_input.h │ │ │ │ ├── dialog_ex.c │ │ │ │ ├── dialog_ex.h │ │ │ │ ├── empty_screen.c │ │ │ │ ├── empty_screen.h │ │ │ │ ├── file_browser.c │ │ │ │ ├── file_browser.h │ │ │ │ ├── file_browser_worker.c │ │ │ │ ├── file_browser_worker.h │ │ │ │ ├── loading.c │ │ │ │ ├── loading.h │ │ │ │ ├── menu.c │ │ │ │ ├── menu.h │ │ │ │ ├── number_input.c │ │ │ │ ├── number_input.h │ │ │ │ ├── popup.c │ │ │ │ ├── popup.h │ │ │ │ ├── submenu.c │ │ │ │ ├── submenu.h │ │ │ │ ├── text_box.c │ │ │ │ ├── text_box.h │ │ │ │ ├── text_input.c │ │ │ │ ├── text_input.h │ │ │ │ ├── validators.c │ │ │ │ ├── validators.h │ │ │ │ ├── variable_item_list.c │ │ │ │ ├── variable_item_list.h │ │ │ │ ├── widget.c │ │ │ │ ├── widget.h │ │ │ │ └── widget_elements/ │ │ │ │ ├── widget_element.h │ │ │ │ ├── widget_element_button.c │ │ │ │ ├── widget_element_circle.c │ │ │ │ ├── widget_element_i.h │ │ │ │ ├── widget_element_icon.c │ │ │ │ ├── widget_element_line.c │ │ │ │ ├── widget_element_rect.c │ │ │ │ ├── widget_element_string.c │ │ │ │ ├── widget_element_string_multiline.c │ │ │ │ ├── widget_element_text_box.c │ │ │ │ └── widget_element_text_scroll.c │ │ │ ├── scene_manager.c │ │ │ ├── scene_manager.h │ │ │ ├── scene_manager_i.h │ │ │ ├── view.c │ │ │ ├── view.h │ │ │ ├── view_dispatcher.c │ │ │ ├── view_dispatcher.h │ │ │ ├── view_dispatcher_i.h │ │ │ ├── view_holder.c │ │ │ ├── view_holder.h │ │ │ ├── view_i.h │ │ │ ├── view_port.c │ │ │ ├── view_port.h │ │ │ ├── view_port_i.h │ │ │ ├── view_stack.c │ │ │ └── view_stack.h │ │ ├── input/ │ │ │ ├── application.fam │ │ │ ├── input.c │ │ │ ├── input.h │ │ │ └── input_cli.c │ │ ├── loader/ │ │ │ ├── application.fam │ │ │ ├── firmware_api/ │ │ │ │ ├── firmware_api.cpp │ │ │ │ └── firmware_api.h │ │ │ ├── loader.c │ │ │ ├── loader.h │ │ │ ├── loader_applications.c │ │ │ ├── loader_applications.h │ │ │ ├── loader_cli.c │ │ │ ├── loader_i.h │ │ │ ├── loader_menu.c │ │ │ ├── loader_menu.h │ │ │ ├── loader_queue.c │ │ │ └── loader_queue.h │ │ ├── locale/ │ │ │ ├── application.fam │ │ │ ├── locale.c │ │ │ └── locale.h │ │ ├── notification/ │ │ │ ├── application.fam │ │ │ ├── notification.h │ │ │ ├── notification_app.c │ │ │ ├── notification_app.h │ │ │ ├── notification_app_api.c │ │ │ ├── notification_messages.c │ │ │ ├── notification_messages.h │ │ │ ├── notification_messages_notes.c │ │ │ ├── notification_messages_notes.h │ │ │ └── notification_settings_filename.h │ │ ├── power/ │ │ │ ├── application.fam │ │ │ ├── power_cli.c │ │ │ ├── power_cli.h │ │ │ └── power_service/ │ │ │ ├── power.c │ │ │ ├── power.h │ │ │ ├── power_api.c │ │ │ ├── power_i.h │ │ │ └── views/ │ │ │ ├── power_off.c │ │ │ ├── power_off.h │ │ │ ├── power_unplug_usb.c │ │ │ └── power_unplug_usb.h │ │ ├── region/ │ │ │ ├── application.fam │ │ │ └── region.c │ │ ├── rpc/ │ │ │ ├── application.fam │ │ │ ├── rpc.c │ │ │ ├── rpc.h │ │ │ ├── rpc_app.c │ │ │ ├── rpc_app.h │ │ │ ├── rpc_app_error_codes.h │ │ │ ├── rpc_cli.c │ │ │ ├── rpc_debug.c │ │ │ ├── rpc_desktop.c │ │ │ ├── rpc_gpio.c │ │ │ ├── rpc_gui.c │ │ │ ├── rpc_i.h │ │ │ ├── rpc_property.c │ │ │ ├── rpc_storage.c │ │ │ └── rpc_system.c │ │ └── storage/ │ │ ├── application.fam │ │ ├── filesystem_api.c │ │ ├── filesystem_api_defines.h │ │ ├── filesystem_api_internal.h │ │ ├── storage.c │ │ ├── storage.h │ │ ├── storage_cli.c │ │ ├── storage_external_api.c │ │ ├── storage_glue.c │ │ ├── storage_glue.h │ │ ├── storage_i.h │ │ ├── storage_internal_api.c │ │ ├── storage_internal_dirname_i.h │ │ ├── storage_message.h │ │ ├── storage_processing.c │ │ ├── storage_processing.h │ │ ├── storage_sd_api.c │ │ ├── storage_sd_api.h │ │ └── storages/ │ │ ├── sd_notify.c │ │ ├── sd_notify.h │ │ ├── storage_ext.c │ │ └── storage_ext.h │ ├── settings/ │ │ ├── about/ │ │ │ ├── about.c │ │ │ └── application.fam │ │ ├── application.fam │ │ ├── bt_settings_app/ │ │ │ ├── application.fam │ │ │ ├── bt_settings_app.c │ │ │ ├── bt_settings_app.h │ │ │ └── scenes/ │ │ │ ├── bt_settings_scene.c │ │ │ ├── bt_settings_scene.h │ │ │ ├── bt_settings_scene_config.h │ │ │ ├── bt_settings_scene_forget_dev_confirm.c │ │ │ ├── bt_settings_scene_forget_dev_success.c │ │ │ └── bt_settings_scene_start.c │ │ ├── clock_settings/ │ │ │ ├── application.fam │ │ │ ├── clock_settings.c │ │ │ ├── clock_settings.h │ │ │ ├── clock_settings_alarm.c │ │ │ ├── scenes/ │ │ │ │ ├── clock_settings_scene.c │ │ │ │ ├── clock_settings_scene.h │ │ │ │ ├── clock_settings_scene_config.h │ │ │ │ └── clock_settings_scene_start.c │ │ │ └── views/ │ │ │ ├── clock_settings_module.c │ │ │ └── clock_settings_module.h │ │ ├── desktop_settings/ │ │ │ ├── application.fam │ │ │ ├── desktop_settings_app.c │ │ │ ├── desktop_settings_app.h │ │ │ ├── desktop_settings_custom_event.h │ │ │ ├── scenes/ │ │ │ │ ├── desktop_settings_scene.c │ │ │ │ ├── desktop_settings_scene.h │ │ │ │ ├── desktop_settings_scene_config.h │ │ │ │ ├── desktop_settings_scene_favorite.c │ │ │ │ ├── desktop_settings_scene_happy_mode.c │ │ │ │ ├── desktop_settings_scene_i.h │ │ │ │ ├── desktop_settings_scene_pin_auth.c │ │ │ │ ├── desktop_settings_scene_pin_disable.c │ │ │ │ ├── desktop_settings_scene_pin_error.c │ │ │ │ ├── desktop_settings_scene_pin_menu.c │ │ │ │ ├── desktop_settings_scene_pin_setup.c │ │ │ │ ├── desktop_settings_scene_pin_setup_done.c │ │ │ │ ├── desktop_settings_scene_pin_setup_howto.c │ │ │ │ ├── desktop_settings_scene_pin_setup_howto2.c │ │ │ │ ├── desktop_settings_scene_quick_apps_direction_menu.c │ │ │ │ ├── desktop_settings_scene_quick_apps_menu.c │ │ │ │ └── desktop_settings_scene_start.c │ │ │ └── views/ │ │ │ ├── desktop_settings_view_pin_setup_howto.c │ │ │ ├── desktop_settings_view_pin_setup_howto.h │ │ │ ├── desktop_settings_view_pin_setup_howto2.c │ │ │ └── desktop_settings_view_pin_setup_howto2.h │ │ ├── dolphin_passport/ │ │ │ ├── application.fam │ │ │ └── passport.c │ │ ├── expansion_settings_app/ │ │ │ ├── application.fam │ │ │ ├── expansion_settings_app.c │ │ │ └── expansion_settings_app.h │ │ ├── notification_settings/ │ │ │ ├── application.fam │ │ │ └── notification_settings_app.c │ │ ├── power_settings_app/ │ │ │ ├── application.fam │ │ │ ├── power_settings_app.c │ │ │ ├── power_settings_app.h │ │ │ ├── scenes/ │ │ │ │ ├── power_settings_scene.c │ │ │ │ ├── power_settings_scene.h │ │ │ │ ├── power_settings_scene_battery_info.c │ │ │ │ ├── power_settings_scene_config.h │ │ │ │ ├── power_settings_scene_power_off.c │ │ │ │ ├── power_settings_scene_reboot.c │ │ │ │ ├── power_settings_scene_reboot_confirm.c │ │ │ │ └── power_settings_scene_start.c │ │ │ └── views/ │ │ │ ├── battery_info.c │ │ │ └── battery_info.h │ │ ├── storage_settings/ │ │ │ ├── application.fam │ │ │ ├── scenes/ │ │ │ │ ├── storage_settings_scene.c │ │ │ │ ├── storage_settings_scene.h │ │ │ │ ├── storage_settings_scene_benchmark.c │ │ │ │ ├── storage_settings_scene_benchmark_confirm.c │ │ │ │ ├── storage_settings_scene_config.h │ │ │ │ ├── storage_settings_scene_factory_reset.c │ │ │ │ ├── storage_settings_scene_format_confirm.c │ │ │ │ ├── storage_settings_scene_formatting.c │ │ │ │ ├── storage_settings_scene_internal_info.c │ │ │ │ ├── storage_settings_scene_sd_info.c │ │ │ │ ├── storage_settings_scene_start.c │ │ │ │ ├── storage_settings_scene_unmount_confirm.c │ │ │ │ └── storage_settings_scene_unmounted.c │ │ │ ├── storage_settings.c │ │ │ └── storage_settings.h │ │ └── system/ │ │ ├── application.fam │ │ ├── system_settings.c │ │ └── system_settings.h │ └── system/ │ ├── application.fam │ ├── hid_app/ │ │ ├── application.fam │ │ ├── hid.c │ │ ├── hid.h │ │ ├── scenes/ │ │ │ ├── hid_scene.c │ │ │ ├── hid_scene.h │ │ │ ├── hid_scene_config.h │ │ │ ├── hid_scene_main.c │ │ │ ├── hid_scene_start.c │ │ │ └── hid_scene_unpair.c │ │ ├── transport_ble.c │ │ ├── transport_usb.c │ │ ├── views/ │ │ │ ├── hid_keyboard.c │ │ │ ├── hid_keyboard.h │ │ │ ├── hid_keynote.c │ │ │ ├── hid_keynote.h │ │ │ ├── hid_media.c │ │ │ ├── hid_media.h │ │ │ ├── hid_mouse.c │ │ │ ├── hid_mouse.h │ │ │ ├── hid_mouse_clicker.c │ │ │ ├── hid_mouse_clicker.h │ │ │ ├── hid_mouse_jiggler.c │ │ │ ├── hid_mouse_jiggler.h │ │ │ ├── hid_tiktok.c │ │ │ └── hid_tiktok.h │ │ └── views.h │ ├── js_app/ │ │ ├── application.fam │ │ ├── examples/ │ │ │ └── apps/ │ │ │ └── Scripts/ │ │ │ ├── array_buf_test.js │ │ │ ├── bad_uart.js │ │ │ ├── badusb_demo.js │ │ │ ├── console.js │ │ │ ├── delay.js │ │ │ ├── event_loop.js │ │ │ ├── gpio.js │ │ │ ├── gui.js │ │ │ ├── interactive.js │ │ │ ├── load.js │ │ │ ├── load_api.js │ │ │ ├── math.js │ │ │ ├── notify.js │ │ │ ├── path.js │ │ │ ├── storage.js │ │ │ ├── stringutils.js │ │ │ ├── uart_echo.js │ │ │ └── uart_echo_8e1.js │ │ ├── js_app.c │ │ ├── js_app_i.h │ │ ├── js_modules.c │ │ ├── js_modules.h │ │ ├── js_thread.c │ │ ├── js_thread.h │ │ ├── js_thread_i.h │ │ ├── js_value.c │ │ ├── js_value.h │ │ ├── modules/ │ │ │ ├── js_badusb.c │ │ │ ├── js_event_loop/ │ │ │ │ ├── js_event_loop.c │ │ │ │ ├── js_event_loop.h │ │ │ │ ├── js_event_loop_api_table.cpp │ │ │ │ └── js_event_loop_api_table_i.h │ │ │ ├── js_flipper.c │ │ │ ├── js_flipper.h │ │ │ ├── js_gpio.c │ │ │ ├── js_gui/ │ │ │ │ ├── button_menu.c │ │ │ │ ├── button_panel.c │ │ │ │ ├── byte_input.c │ │ │ │ ├── dialog.c │ │ │ │ ├── empty_screen.c │ │ │ │ ├── file_picker.c │ │ │ │ ├── icon.c │ │ │ │ ├── js_gui.c │ │ │ │ ├── js_gui.h │ │ │ │ ├── js_gui_api_table.cpp │ │ │ │ ├── js_gui_api_table_i.h │ │ │ │ ├── loading.c │ │ │ │ ├── menu.c │ │ │ │ ├── number_input.c │ │ │ │ ├── popup.c │ │ │ │ ├── submenu.c │ │ │ │ ├── text_box.c │ │ │ │ ├── text_input.c │ │ │ │ ├── vi_list.c │ │ │ │ └── widget.c │ │ │ ├── js_math.c │ │ │ ├── js_notification.c │ │ │ ├── js_serial.c │ │ │ ├── js_storage.c │ │ │ ├── js_tests.c │ │ │ └── js_tests.h │ │ ├── packages/ │ │ │ ├── create-fz-app/ │ │ │ │ ├── README.md │ │ │ │ ├── index.js │ │ │ │ ├── package.json │ │ │ │ └── template/ │ │ │ │ ├── .gitignore │ │ │ │ ├── fz-sdk.config.json5 │ │ │ │ ├── index.ts │ │ │ │ ├── package.json │ │ │ │ └── tsconfig.json │ │ │ └── fz-sdk/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── badusb/ │ │ │ │ └── index.d.ts │ │ │ ├── docs_readme.md │ │ │ ├── event_loop/ │ │ │ │ └── index.d.ts │ │ │ ├── flipper/ │ │ │ │ └── index.d.ts │ │ │ ├── global.d.ts │ │ │ ├── gpio/ │ │ │ │ └── index.d.ts │ │ │ ├── gui/ │ │ │ │ ├── button_menu.d.ts │ │ │ │ ├── button_panel.d.ts │ │ │ │ ├── byte_input.d.ts │ │ │ │ ├── dialog.d.ts │ │ │ │ ├── empty_screen.d.ts │ │ │ │ ├── file_picker.d.ts │ │ │ │ ├── icon.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── loading.d.ts │ │ │ │ ├── menu.d.ts │ │ │ │ ├── number_input.d.ts │ │ │ │ ├── popup.d.ts │ │ │ │ ├── submenu.d.ts │ │ │ │ ├── text_box.d.ts │ │ │ │ ├── text_input.d.ts │ │ │ │ ├── vi_list.d.ts │ │ │ │ └── widget.d.ts │ │ │ ├── math/ │ │ │ │ └── index.d.ts │ │ │ ├── notification/ │ │ │ │ └── index.d.ts │ │ │ ├── package.json │ │ │ ├── sdk.js │ │ │ ├── serial/ │ │ │ │ └── index.d.ts │ │ │ ├── storage/ │ │ │ │ └── index.d.ts │ │ │ ├── tests/ │ │ │ │ └── index.d.ts │ │ │ ├── tsconfig.json │ │ │ └── typedoc.json │ │ ├── plugin_api/ │ │ │ ├── app_api_interface.h │ │ │ ├── app_api_table.cpp │ │ │ └── app_api_table_i.h │ │ └── views/ │ │ ├── console_font.h │ │ ├── console_view.c │ │ └── console_view.h │ ├── snake_game/ │ │ ├── application.fam │ │ └── snake_game.c │ └── updater/ │ ├── application.fam │ ├── cli/ │ │ └── updater_cli.c │ ├── scenes/ │ │ ├── updater_scene.c │ │ ├── updater_scene.h │ │ ├── updater_scene_config.h │ │ ├── updater_scene_error.c │ │ ├── updater_scene_loadcfg.c │ │ └── updater_scene_main.c │ ├── updater.c │ ├── updater_i.h │ ├── util/ │ │ ├── update_task.c │ │ ├── update_task.h │ │ ├── update_task_i.h │ │ ├── update_task_worker_backup.c │ │ └── update_task_worker_flasher.c │ └── views/ │ ├── updater_main.c │ └── updater_main.h ├── assets/ │ ├── .gitignore │ ├── ReadMe.md │ ├── SConscript │ ├── dolphin/ │ │ ├── ReadMe.md │ │ ├── blocking/ │ │ │ ├── L0_NewMail_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L0_NoDb_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L0_SdBad_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L0_SdOk_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L0_Url_128x51/ │ │ │ │ └── meta.txt │ │ │ └── manifest.txt │ │ ├── external/ │ │ │ ├── L1_Akira_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Boxing_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Cry_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Doom_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Furippa1_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Kaiju_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Laptop_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Leaving_sad_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Mad_fist_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Mods_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_My_dude_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Painting_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Procrastinating_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Read_books_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Recording_128x51/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Sad_song_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Senpai_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Showtime_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Sleep_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L1_Waves_128x50/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Coding_in_the_shell_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Dj_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Furippa2_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Hacking_pc_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Secret_door_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Soldering_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L2_Wake_up_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L3_Freedom_2_dolphins_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L3_Furippa3_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L3_Hijack_radio_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L3_Intruder_alert_128x64/ │ │ │ │ └── meta.txt │ │ │ ├── L3_Lab_research_128x54/ │ │ │ │ └── meta.txt │ │ │ └── manifest.txt │ │ └── internal/ │ │ ├── L1_BadBattery_128x47/ │ │ │ └── meta.txt │ │ ├── L1_NoSd_128x49/ │ │ │ └── meta.txt │ │ ├── L1_Tv_128x47/ │ │ │ └── meta.txt │ │ └── manifest.txt │ └── icons/ │ ├── Animations/ │ │ ├── Levelup1_128x64/ │ │ │ └── frame_rate │ │ └── Levelup2_128x64/ │ │ └── frame_rate │ ├── Common/ │ │ ├── Loading_24/ │ │ │ └── frame_rate │ │ └── Round_loader_8x8/ │ │ └── frame_rate │ ├── MainMenu/ │ │ ├── 125khz_14/ │ │ │ └── frame_rate │ │ ├── BadUsb_14/ │ │ │ └── frame_rate │ │ ├── Debug_14/ │ │ │ └── frame_rate │ │ ├── FileManager_14/ │ │ │ └── frame_rate │ │ ├── GPIO_14/ │ │ │ └── frame_rate │ │ ├── Infrared_14/ │ │ │ └── frame_rate │ │ ├── NFC_14/ │ │ │ └── frame_rate │ │ ├── Plugins_14/ │ │ │ └── frame_rate │ │ ├── Settings_14/ │ │ │ └── frame_rate │ │ ├── Sub1ghz_14/ │ │ │ └── frame_rate │ │ ├── U2F_14/ │ │ │ └── frame_rate │ │ └── iButton_14/ │ │ └── frame_rate │ ├── Settings/ │ │ └── Alarm_47x39/ │ │ └── frame_rate │ └── SubGhz/ │ ├── SubGhz_External_ant/ │ │ └── frame_rate │ └── SubGhz_Internal_ant/ │ └── frame_rate ├── documentation/ │ ├── .gitignore │ ├── AppManifests.md │ ├── AppsOnSDCard.md │ ├── ExpansionModules.md │ ├── FuriCheck.md │ ├── FuriHalBus.md │ ├── FuriHalDebugging.md │ ├── HardwareTargets.md │ ├── KeyCombo.md │ ├── LFRFIDRaw.md │ ├── OTA.md │ ├── UnitTests.md │ ├── UniversalRemotes.md │ ├── devboard/ │ │ ├── Debugging via the Devboard.md │ │ ├── Devboard debug modes.md │ │ ├── Firmware update on Developer Board.md │ │ ├── Get started with the Dev Board.md │ │ ├── Reading logs via the Dev Board.md │ │ ├── USB connection to the Devboard.md │ │ └── Wi-Fi connection to the Devboard.md │ ├── doxygen/ │ │ ├── Doxyfile-awesome.cfg │ │ ├── Doxyfile.cfg │ │ ├── app_publishing.dox │ │ ├── applications.dox │ │ ├── dev_board.dox │ │ ├── dev_tools.dox │ │ ├── examples.dox │ │ ├── expansion_modules.dox │ │ ├── file_formats.dox │ │ ├── header.html │ │ ├── index.dox │ │ ├── js.dox │ │ ├── misc.dox │ │ └── system.dox │ ├── fbt.md │ ├── file_formats/ │ │ ├── BadUsbScriptFormat.md │ │ ├── InfraredFileFormats.md │ │ ├── LfRfidFileFormat.md │ │ ├── NfcFileFormats.md │ │ ├── SubGhzFileFormats.md │ │ ├── TarHeatshrinkFormat.md │ │ └── iButtonFileFormat.md │ └── js/ │ ├── js_about.md │ ├── js_badusb.md │ ├── js_builtin.md │ ├── js_data_types.md │ ├── js_developing_apps_using_js_sdk.md │ ├── js_event_loop.md │ ├── js_flipper.md │ ├── js_gpio.md │ ├── js_gui.md │ ├── js_gui__byte_input.md │ ├── js_gui__dialog.md │ ├── js_gui__empty_screen.md │ ├── js_gui__file_picker.md │ ├── js_gui__icon.md │ ├── js_gui__loading.md │ ├── js_gui__submenu.md │ ├── js_gui__text_box.md │ ├── js_gui__text_input.md │ ├── js_gui__widget.md │ ├── js_math.md │ ├── js_notification.md │ ├── js_serial.md │ ├── js_storage.md │ ├── js_using_js_modules.md │ └── js_your_first_js_app.md ├── fbt ├── fbt.cmd ├── fbt_options.py ├── firmware.scons ├── furi/ │ ├── SConscript │ ├── core/ │ │ ├── base.h │ │ ├── check.c │ │ ├── check.h │ │ ├── common_defines.h │ │ ├── core_defines.h │ │ ├── critical.c │ │ ├── dangerous_defines.h │ │ ├── event_flag.c │ │ ├── event_flag.h │ │ ├── event_loop.c │ │ ├── event_loop.h │ │ ├── event_loop_i.h │ │ ├── event_loop_link_i.h │ │ ├── event_loop_thread_flag_interface.h │ │ ├── event_loop_tick.c │ │ ├── event_loop_tick_i.h │ │ ├── event_loop_timer.c │ │ ├── event_loop_timer.h │ │ ├── event_loop_timer_i.h │ │ ├── kernel.c │ │ ├── kernel.h │ │ ├── log.c │ │ ├── log.h │ │ ├── memmgr.c │ │ ├── memmgr.h │ │ ├── memmgr_heap.c │ │ ├── memmgr_heap.h │ │ ├── message_queue.c │ │ ├── message_queue.h │ │ ├── mutex.c │ │ ├── mutex.h │ │ ├── pubsub.c │ │ ├── pubsub.h │ │ ├── record.c │ │ ├── record.h │ │ ├── semaphore.c │ │ ├── semaphore.h │ │ ├── stream_buffer.c │ │ ├── stream_buffer.h │ │ ├── string.c │ │ ├── string.h │ │ ├── thread.c │ │ ├── thread.h │ │ ├── thread_i.h │ │ ├── thread_list.c │ │ ├── thread_list.h │ │ ├── thread_list_i.h │ │ ├── timer.c │ │ └── timer.h │ ├── flipper.c │ ├── flipper.h │ ├── furi.c │ └── furi.h ├── lib/ │ ├── FreeRTOS-glue/ │ │ └── task_control_block.h │ ├── ReadMe.md │ ├── SConscript │ ├── bit_lib/ │ │ ├── SConscript │ │ ├── bit_lib.c │ │ └── bit_lib.h │ ├── ble_profile/ │ │ ├── SConscript │ │ ├── extra_profiles/ │ │ │ ├── hid_profile.c │ │ │ └── hid_profile.h │ │ └── extra_services/ │ │ ├── hid_service.c │ │ └── hid_service.h │ ├── cmsis_core/ │ │ ├── cmsis_armcc.h │ │ ├── cmsis_armclang.h │ │ ├── cmsis_armclang_ltm.h │ │ ├── cmsis_compiler.h │ │ ├── cmsis_gcc.h │ │ ├── cmsis_iccarm.h │ │ ├── cmsis_tiarmclang.h │ │ ├── cmsis_version.h │ │ ├── core_cm4.h │ │ └── mpu_armv7.h │ ├── datetime/ │ │ ├── SConscript │ │ ├── datetime.c │ │ └── datetime.h │ ├── digital_signal/ │ │ ├── SConscript │ │ ├── digital_sequence.c │ │ ├── digital_sequence.h │ │ ├── digital_signal.c │ │ ├── digital_signal.h │ │ ├── digital_signal_i.h │ │ └── presets/ │ │ └── nfc/ │ │ ├── iso14443_3a_signal.c │ │ ├── iso14443_3a_signal.h │ │ ├── iso15693_signal.c │ │ └── iso15693_signal.h │ ├── drivers/ │ │ ├── SConscript │ │ ├── bq25896.c │ │ ├── bq25896.h │ │ ├── bq25896_reg.h │ │ ├── bq27220.c │ │ ├── bq27220.h │ │ ├── bq27220_data_memory.h │ │ ├── bq27220_reg.h │ │ ├── cc1101.c │ │ ├── cc1101.h │ │ ├── cc1101_regs.h │ │ ├── lp5562.c │ │ ├── lp5562.h │ │ ├── lp5562_reg.h │ │ ├── st25r3916.c │ │ ├── st25r3916.h │ │ ├── st25r3916_reg.c │ │ └── st25r3916_reg.h │ ├── err.h │ ├── fatfs/ │ │ ├── SConscript │ │ ├── diskio.c │ │ ├── diskio.h │ │ ├── ff.c │ │ ├── ff.h │ │ ├── ff_gen_drv.c │ │ ├── ff_gen_drv.h │ │ ├── ffconf_template.h │ │ ├── integer.h │ │ └── option/ │ │ ├── cc932.c │ │ ├── cc936.c │ │ ├── cc949.c │ │ ├── cc950.c │ │ ├── ccsbcs.c │ │ └── unicode.c │ ├── flipper_application/ │ │ ├── SConscript │ │ ├── api_hashtable/ │ │ │ ├── api_hashtable.cpp │ │ │ ├── api_hashtable.h │ │ │ └── compilesort.hpp │ │ ├── application_assets.c │ │ ├── application_assets.h │ │ ├── application_manifest.c │ │ ├── application_manifest.h │ │ ├── elf/ │ │ │ ├── elf.h │ │ │ ├── elf_api_interface.h │ │ │ ├── elf_file.c │ │ │ ├── elf_file.h │ │ │ └── elf_file_i.h │ │ ├── flipper_application.c │ │ ├── flipper_application.h │ │ └── plugins/ │ │ ├── composite_resolver.c │ │ ├── composite_resolver.h │ │ ├── plugin_manager.c │ │ └── plugin_manager.h │ ├── flipper_format/ │ │ ├── SConscript │ │ ├── flipper_format.c │ │ ├── flipper_format.h │ │ ├── flipper_format_i.h │ │ ├── flipper_format_stream.c │ │ ├── flipper_format_stream.h │ │ └── flipper_format_stream_i.h │ ├── freertos.scons │ ├── heatshrink.scons │ ├── ibutton/ │ │ ├── SConscript │ │ ├── ibutton_key.c │ │ ├── ibutton_key.h │ │ ├── ibutton_key_i.h │ │ ├── ibutton_protocols.c │ │ ├── ibutton_protocols.h │ │ ├── ibutton_worker.c │ │ ├── ibutton_worker.h │ │ ├── ibutton_worker_i.h │ │ ├── ibutton_worker_modes.c │ │ └── protocols/ │ │ ├── blanks/ │ │ │ ├── rw1990.c │ │ │ ├── rw1990.h │ │ │ ├── tm01x.c │ │ │ ├── tm01x.h │ │ │ ├── tm2004.c │ │ │ └── tm2004.h │ │ ├── dallas/ │ │ │ ├── dallas_common.c │ │ │ ├── dallas_common.h │ │ │ ├── protocol_dallas_base.h │ │ │ ├── protocol_ds1971.c │ │ │ ├── protocol_ds1971.h │ │ │ ├── protocol_ds1990.c │ │ │ ├── protocol_ds1990.h │ │ │ ├── protocol_ds1992.c │ │ │ ├── protocol_ds1992.h │ │ │ ├── protocol_ds1996.c │ │ │ ├── protocol_ds1996.h │ │ │ ├── protocol_ds_generic.c │ │ │ ├── protocol_ds_generic.h │ │ │ ├── protocol_group_dallas.c │ │ │ ├── protocol_group_dallas.h │ │ │ ├── protocol_group_dallas_defs.c │ │ │ └── protocol_group_dallas_defs.h │ │ ├── misc/ │ │ │ ├── protocol_cyfral.c │ │ │ ├── protocol_cyfral.h │ │ │ ├── protocol_group_misc.c │ │ │ ├── protocol_group_misc.h │ │ │ ├── protocol_group_misc_defs.c │ │ │ ├── protocol_group_misc_defs.h │ │ │ ├── protocol_metakom.c │ │ │ └── protocol_metakom.h │ │ ├── protocol_common.h │ │ ├── protocol_common_i.h │ │ ├── protocol_group_base.h │ │ ├── protocol_group_defs.c │ │ └── protocol_group_defs.h │ ├── ieee754_parse_wrap/ │ │ ├── SConscript │ │ ├── wrappers.c │ │ └── wrappers.h │ ├── infrared/ │ │ ├── SConscript │ │ ├── encoder_decoder/ │ │ │ ├── common/ │ │ │ │ ├── infrared_common_decoder.c │ │ │ │ ├── infrared_common_encoder.c │ │ │ │ └── infrared_common_i.h │ │ │ ├── infrared.c │ │ │ ├── infrared.h │ │ │ ├── infrared_i.h │ │ │ ├── kaseikyo/ │ │ │ │ ├── infrared_decoder_kaseikyo.c │ │ │ │ ├── infrared_encoder_kaseikyo.c │ │ │ │ ├── infrared_protocol_kaseikyo.c │ │ │ │ ├── infrared_protocol_kaseikyo.h │ │ │ │ └── infrared_protocol_kaseikyo_i.h │ │ │ ├── nec/ │ │ │ │ ├── infrared_decoder_nec.c │ │ │ │ ├── infrared_encoder_nec.c │ │ │ │ ├── infrared_protocol_nec.c │ │ │ │ ├── infrared_protocol_nec.h │ │ │ │ └── infrared_protocol_nec_i.h │ │ │ ├── pioneer/ │ │ │ │ ├── infrared_decoder_pioneer.c │ │ │ │ ├── infrared_encoder_pioneer.c │ │ │ │ ├── infrared_protocol_pioneer.c │ │ │ │ ├── infrared_protocol_pioneer.h │ │ │ │ └── infrared_protocol_pioneer_i.h │ │ │ ├── rc5/ │ │ │ │ ├── infrared_decoder_rc5.c │ │ │ │ ├── infrared_encoder_rc5.c │ │ │ │ ├── infrared_protocol_rc5.c │ │ │ │ ├── infrared_protocol_rc5.h │ │ │ │ └── infrared_protocol_rc5_i.h │ │ │ ├── rc6/ │ │ │ │ ├── infrared_decoder_rc6.c │ │ │ │ ├── infrared_encoder_rc6.c │ │ │ │ ├── infrared_protocol_rc6.c │ │ │ │ ├── infrared_protocol_rc6.h │ │ │ │ └── infrared_protocol_rc6_i.h │ │ │ ├── rca/ │ │ │ │ ├── infrared_decoder_rca.c │ │ │ │ ├── infrared_encoder_rca.c │ │ │ │ ├── infrared_protocol_rca.c │ │ │ │ ├── infrared_protocol_rca.h │ │ │ │ └── infrared_protocol_rca_i.h │ │ │ ├── samsung/ │ │ │ │ ├── infrared_decoder_samsung.c │ │ │ │ ├── infrared_encoder_samsung.c │ │ │ │ ├── infrared_protocol_samsung.c │ │ │ │ ├── infrared_protocol_samsung.h │ │ │ │ └── infrared_protocol_samsung_i.h │ │ │ └── sirc/ │ │ │ ├── infrared_decoder_sirc.c │ │ │ ├── infrared_encoder_sirc.c │ │ │ ├── infrared_protocol_sirc.c │ │ │ ├── infrared_protocol_sirc.h │ │ │ └── infrared_protocol_sirc_i.h │ │ ├── signal/ │ │ │ ├── infrared_brute_force.c │ │ │ ├── infrared_brute_force.h │ │ │ ├── infrared_error_code.h │ │ │ ├── infrared_signal.c │ │ │ └── infrared_signal.h │ │ └── worker/ │ │ ├── infrared_transmit.c │ │ ├── infrared_transmit.h │ │ ├── infrared_worker.c │ │ └── infrared_worker.h │ ├── lfrfid/ │ │ ├── SConscript │ │ ├── lfrfid_dict_file.c │ │ ├── lfrfid_dict_file.h │ │ ├── lfrfid_raw_file.c │ │ ├── lfrfid_raw_file.h │ │ ├── lfrfid_raw_worker.c │ │ ├── lfrfid_raw_worker.h │ │ ├── lfrfid_worker.c │ │ ├── lfrfid_worker.h │ │ ├── lfrfid_worker_i.h │ │ ├── lfrfid_worker_modes.c │ │ ├── protocols/ │ │ │ ├── lfrfid_protocols.c │ │ │ ├── lfrfid_protocols.h │ │ │ ├── protocol_awid.c │ │ │ ├── protocol_awid.h │ │ │ ├── protocol_electra.c │ │ │ ├── protocol_electra.h │ │ │ ├── protocol_em4100.c │ │ │ ├── protocol_em4100.h │ │ │ ├── protocol_fdx_a.c │ │ │ ├── protocol_fdx_a.h │ │ │ ├── protocol_fdx_b.c │ │ │ ├── protocol_fdx_b.h │ │ │ ├── protocol_gallagher.c │ │ │ ├── protocol_gallagher.h │ │ │ ├── protocol_gproxii.c │ │ │ ├── protocol_gproxii.h │ │ │ ├── protocol_h10301.c │ │ │ ├── protocol_h10301.h │ │ │ ├── protocol_hid_ex_generic.c │ │ │ ├── protocol_hid_ex_generic.h │ │ │ ├── protocol_hid_generic.c │ │ │ ├── protocol_hid_generic.h │ │ │ ├── protocol_idteck.c │ │ │ ├── protocol_idteck.h │ │ │ ├── protocol_indala26.c │ │ │ ├── protocol_indala26.h │ │ │ ├── protocol_io_prox_xsf.c │ │ │ ├── protocol_io_prox_xsf.h │ │ │ ├── protocol_jablotron.c │ │ │ ├── protocol_jablotron.h │ │ │ ├── protocol_keri.c │ │ │ ├── protocol_keri.h │ │ │ ├── protocol_nexwatch.c │ │ │ ├── protocol_nexwatch.h │ │ │ ├── protocol_noralsy.c │ │ │ ├── protocol_noralsy.h │ │ │ ├── protocol_pac_stanley.c │ │ │ ├── protocol_pac_stanley.h │ │ │ ├── protocol_paradox.c │ │ │ ├── protocol_paradox.h │ │ │ ├── protocol_pyramid.c │ │ │ ├── protocol_pyramid.h │ │ │ ├── protocol_securakey.c │ │ │ ├── protocol_securakey.h │ │ │ ├── protocol_viking.c │ │ │ └── protocol_viking.h │ │ └── tools/ │ │ ├── em4305.c │ │ ├── em4305.h │ │ ├── fsk_demod.c │ │ ├── fsk_demod.h │ │ ├── fsk_ocs.c │ │ ├── fsk_osc.h │ │ ├── iso_3166.c │ │ ├── iso_3166.h │ │ ├── t5577.c │ │ ├── t5577.h │ │ ├── varint_pair.c │ │ └── varint_pair.h │ ├── libusb_stm32.scons │ ├── mbedtls.scons │ ├── mbedtls_cfg.h │ ├── microtar.scons │ ├── mjs/ │ │ ├── SConscript │ │ ├── common/ │ │ │ ├── cs_dbg.c │ │ │ ├── cs_dbg.h │ │ │ ├── cs_dirent.c │ │ │ ├── cs_dirent.h │ │ │ ├── cs_file.c │ │ │ ├── cs_file.h │ │ │ ├── cs_time.c │ │ │ ├── cs_time.h │ │ │ ├── cs_varint.c │ │ │ ├── cs_varint.h │ │ │ ├── frozen/ │ │ │ │ ├── frozen.c │ │ │ │ └── frozen.h │ │ │ ├── mbuf.c │ │ │ ├── mbuf.h │ │ │ ├── mg_mem.h │ │ │ ├── mg_str.c │ │ │ ├── mg_str.h │ │ │ ├── platform.h │ │ │ ├── platforms/ │ │ │ │ ├── platform_flipper.c │ │ │ │ └── platform_flipper.h │ │ │ ├── str_util.c │ │ │ └── str_util.h │ │ ├── ffi/ │ │ │ ├── ffi.c │ │ │ └── ffi.h │ │ ├── mjs_array.c │ │ ├── mjs_array.h │ │ ├── mjs_array_buf.c │ │ ├── mjs_array_buf.h │ │ ├── mjs_array_buf_public.h │ │ ├── mjs_array_public.h │ │ ├── mjs_bcode.c │ │ ├── mjs_bcode.h │ │ ├── mjs_builtin.c │ │ ├── mjs_builtin.h │ │ ├── mjs_core.c │ │ ├── mjs_core.h │ │ ├── mjs_core_public.h │ │ ├── mjs_dataview.c │ │ ├── mjs_dataview.h │ │ ├── mjs_exec.c │ │ ├── mjs_exec.h │ │ ├── mjs_exec_public.h │ │ ├── mjs_features.h │ │ ├── mjs_ffi.c │ │ ├── mjs_ffi.h │ │ ├── mjs_ffi_public.h │ │ ├── mjs_gc.c │ │ ├── mjs_gc.h │ │ ├── mjs_gc_public.h │ │ ├── mjs_internal.h │ │ ├── mjs_json.c │ │ ├── mjs_json.h │ │ ├── mjs_license.h │ │ ├── mjs_mm.h │ │ ├── mjs_object.c │ │ ├── mjs_object.h │ │ ├── mjs_object_public.h │ │ ├── mjs_parser.c │ │ ├── mjs_parser.h │ │ ├── mjs_primitive.c │ │ ├── mjs_primitive.h │ │ ├── mjs_primitive_public.h │ │ ├── mjs_string.c │ │ ├── mjs_string.h │ │ ├── mjs_string_public.h │ │ ├── mjs_tok.c │ │ ├── mjs_tok.h │ │ ├── mjs_util.c │ │ ├── mjs_util.h │ │ └── mjs_util_public.h │ ├── mlib.scons │ ├── music_worker/ │ │ ├── SConscript │ │ ├── music_worker.c │ │ └── music_worker.h │ ├── nanopb.scons │ ├── nfc/ │ │ ├── SConscript │ │ ├── helpers/ │ │ │ ├── crypto1.c │ │ │ ├── crypto1.h │ │ │ ├── felica_crc.c │ │ │ ├── felica_crc.h │ │ │ ├── iso13239_crc.c │ │ │ ├── iso13239_crc.h │ │ │ ├── iso14443_4_layer.c │ │ │ ├── iso14443_4_layer.h │ │ │ ├── iso14443_crc.c │ │ │ ├── iso14443_crc.h │ │ │ ├── nfc_data_generator.c │ │ │ ├── nfc_data_generator.h │ │ │ ├── nfc_util.c │ │ │ └── nfc_util.h │ │ ├── nfc.c │ │ ├── nfc.h │ │ ├── nfc_common.h │ │ ├── nfc_device.c │ │ ├── nfc_device.h │ │ ├── nfc_device_i.c │ │ ├── nfc_device_i.h │ │ ├── nfc_listener.c │ │ ├── nfc_listener.h │ │ ├── nfc_mock.c │ │ ├── nfc_poller.c │ │ ├── nfc_poller.h │ │ ├── nfc_scanner.c │ │ ├── nfc_scanner.h │ │ └── protocols/ │ │ ├── felica/ │ │ │ ├── felica.c │ │ │ ├── felica.h │ │ │ ├── felica_i.c │ │ │ ├── felica_i.h │ │ │ ├── felica_listener.c │ │ │ ├── felica_listener.h │ │ │ ├── felica_listener_defs.h │ │ │ ├── felica_listener_i.c │ │ │ ├── felica_listener_i.h │ │ │ ├── felica_poller.c │ │ │ ├── felica_poller.h │ │ │ ├── felica_poller_defs.h │ │ │ ├── felica_poller_i.c │ │ │ ├── felica_poller_i.h │ │ │ ├── felica_poller_sync.c │ │ │ └── felica_poller_sync.h │ │ ├── iso14443_3a/ │ │ │ ├── iso14443_3a.c │ │ │ ├── iso14443_3a.h │ │ │ ├── iso14443_3a_device_defs.h │ │ │ ├── iso14443_3a_listener.c │ │ │ ├── iso14443_3a_listener.h │ │ │ ├── iso14443_3a_listener_defs.h │ │ │ ├── iso14443_3a_listener_i.c │ │ │ ├── iso14443_3a_listener_i.h │ │ │ ├── iso14443_3a_poller.c │ │ │ ├── iso14443_3a_poller.h │ │ │ ├── iso14443_3a_poller_defs.h │ │ │ ├── iso14443_3a_poller_i.c │ │ │ ├── iso14443_3a_poller_i.h │ │ │ ├── iso14443_3a_poller_sync.c │ │ │ └── iso14443_3a_poller_sync.h │ │ ├── iso14443_3b/ │ │ │ ├── iso14443_3b.c │ │ │ ├── iso14443_3b.h │ │ │ ├── iso14443_3b_device_defs.h │ │ │ ├── iso14443_3b_i.h │ │ │ ├── iso14443_3b_poller.c │ │ │ ├── iso14443_3b_poller.h │ │ │ ├── iso14443_3b_poller_defs.h │ │ │ ├── iso14443_3b_poller_i.c │ │ │ └── iso14443_3b_poller_i.h │ │ ├── iso14443_4a/ │ │ │ ├── iso14443_4a.c │ │ │ ├── iso14443_4a.h │ │ │ ├── iso14443_4a_device_defs.h │ │ │ ├── iso14443_4a_i.c │ │ │ ├── iso14443_4a_i.h │ │ │ ├── iso14443_4a_listener.c │ │ │ ├── iso14443_4a_listener.h │ │ │ ├── iso14443_4a_listener_defs.h │ │ │ ├── iso14443_4a_listener_i.c │ │ │ ├── iso14443_4a_listener_i.h │ │ │ ├── iso14443_4a_poller.c │ │ │ ├── iso14443_4a_poller.h │ │ │ ├── iso14443_4a_poller_defs.h │ │ │ ├── iso14443_4a_poller_i.c │ │ │ └── iso14443_4a_poller_i.h │ │ ├── iso14443_4b/ │ │ │ ├── iso14443_4b.c │ │ │ ├── iso14443_4b.h │ │ │ ├── iso14443_4b_device_defs.h │ │ │ ├── iso14443_4b_i.c │ │ │ ├── iso14443_4b_i.h │ │ │ ├── iso14443_4b_poller.c │ │ │ ├── iso14443_4b_poller.h │ │ │ ├── iso14443_4b_poller_defs.h │ │ │ ├── iso14443_4b_poller_i.c │ │ │ └── iso14443_4b_poller_i.h │ │ ├── iso15693_3/ │ │ │ ├── iso15693_3.c │ │ │ ├── iso15693_3.h │ │ │ ├── iso15693_3_device_defs.h │ │ │ ├── iso15693_3_i.c │ │ │ ├── iso15693_3_i.h │ │ │ ├── iso15693_3_listener.c │ │ │ ├── iso15693_3_listener.h │ │ │ ├── iso15693_3_listener_defs.h │ │ │ ├── iso15693_3_listener_i.c │ │ │ ├── iso15693_3_listener_i.h │ │ │ ├── iso15693_3_poller.c │ │ │ ├── iso15693_3_poller.h │ │ │ ├── iso15693_3_poller_defs.h │ │ │ ├── iso15693_3_poller_i.c │ │ │ └── iso15693_3_poller_i.h │ │ ├── mf_classic/ │ │ │ ├── mf_classic.c │ │ │ ├── mf_classic.h │ │ │ ├── mf_classic_listener.c │ │ │ ├── mf_classic_listener.h │ │ │ ├── mf_classic_listener_defs.h │ │ │ ├── mf_classic_listener_i.h │ │ │ ├── mf_classic_poller.c │ │ │ ├── mf_classic_poller.h │ │ │ ├── mf_classic_poller_defs.h │ │ │ ├── mf_classic_poller_i.c │ │ │ ├── mf_classic_poller_i.h │ │ │ ├── mf_classic_poller_sync.c │ │ │ └── mf_classic_poller_sync.h │ │ ├── mf_desfire/ │ │ │ ├── mf_desfire.c │ │ │ ├── mf_desfire.h │ │ │ ├── mf_desfire_i.c │ │ │ ├── mf_desfire_i.h │ │ │ ├── mf_desfire_poller.c │ │ │ ├── mf_desfire_poller.h │ │ │ ├── mf_desfire_poller_defs.h │ │ │ ├── mf_desfire_poller_i.c │ │ │ └── mf_desfire_poller_i.h │ │ ├── mf_plus/ │ │ │ ├── mf_plus.c │ │ │ ├── mf_plus.h │ │ │ ├── mf_plus_i.c │ │ │ ├── mf_plus_i.h │ │ │ ├── mf_plus_poller.c │ │ │ ├── mf_plus_poller.h │ │ │ ├── mf_plus_poller_defs.h │ │ │ ├── mf_plus_poller_i.c │ │ │ └── mf_plus_poller_i.h │ │ ├── mf_ultralight/ │ │ │ ├── mf_ultralight.c │ │ │ ├── mf_ultralight.h │ │ │ ├── mf_ultralight_listener.c │ │ │ ├── mf_ultralight_listener.h │ │ │ ├── mf_ultralight_listener_defs.h │ │ │ ├── mf_ultralight_listener_i.c │ │ │ ├── mf_ultralight_listener_i.h │ │ │ ├── mf_ultralight_poller.c │ │ │ ├── mf_ultralight_poller.h │ │ │ ├── mf_ultralight_poller_defs.h │ │ │ ├── mf_ultralight_poller_i.c │ │ │ ├── mf_ultralight_poller_i.h │ │ │ ├── mf_ultralight_poller_sync.c │ │ │ └── mf_ultralight_poller_sync.h │ │ ├── nfc_device_base.h │ │ ├── nfc_device_base_i.h │ │ ├── nfc_device_defs.c │ │ ├── nfc_device_defs.h │ │ ├── nfc_generic_event.h │ │ ├── nfc_listener_base.h │ │ ├── nfc_listener_defs.c │ │ ├── nfc_listener_defs.h │ │ ├── nfc_poller_base.h │ │ ├── nfc_poller_defs.c │ │ ├── nfc_poller_defs.h │ │ ├── nfc_protocol.c │ │ ├── nfc_protocol.h │ │ ├── slix/ │ │ │ ├── slix.c │ │ │ ├── slix.h │ │ │ ├── slix_device_defs.h │ │ │ ├── slix_i.c │ │ │ ├── slix_i.h │ │ │ ├── slix_listener.c │ │ │ ├── slix_listener.h │ │ │ ├── slix_listener_defs.h │ │ │ ├── slix_listener_i.c │ │ │ ├── slix_listener_i.h │ │ │ ├── slix_poller.c │ │ │ ├── slix_poller.h │ │ │ ├── slix_poller_defs.h │ │ │ ├── slix_poller_i.c │ │ │ └── slix_poller_i.h │ │ └── st25tb/ │ │ ├── st25tb.c │ │ ├── st25tb.h │ │ ├── st25tb_poller.c │ │ ├── st25tb_poller.h │ │ ├── st25tb_poller_defs.h │ │ ├── st25tb_poller_i.c │ │ ├── st25tb_poller_i.h │ │ ├── st25tb_poller_sync.c │ │ └── st25tb_poller_sync.h │ ├── one_wire/ │ │ ├── SConscript │ │ ├── maxim_crc.c │ │ ├── maxim_crc.h │ │ ├── one_wire_host.c │ │ ├── one_wire_host.h │ │ ├── one_wire_slave.c │ │ └── one_wire_slave.h │ ├── print/ │ │ ├── SConscript │ │ ├── printf_tiny.c │ │ ├── printf_tiny.h │ │ ├── wrappers.c │ │ └── wrappers.h │ ├── pulse_reader/ │ │ ├── SConscript │ │ ├── pulse_reader.c │ │ └── pulse_reader.h │ ├── signal_reader/ │ │ ├── SConscript │ │ ├── parsers/ │ │ │ └── iso15693/ │ │ │ ├── iso15693_parser.c │ │ │ └── iso15693_parser.h │ │ ├── signal_reader.c │ │ └── signal_reader.h │ ├── stm32wb.scons │ ├── subghz/ │ │ ├── SConscript │ │ ├── blocks/ │ │ │ ├── const.h │ │ │ ├── decoder.c │ │ │ ├── decoder.h │ │ │ ├── encoder.c │ │ │ ├── encoder.h │ │ │ ├── generic.c │ │ │ ├── generic.h │ │ │ ├── math.c │ │ │ └── math.h │ │ ├── devices/ │ │ │ ├── cc1101_configs.c │ │ │ ├── cc1101_configs.h │ │ │ ├── cc1101_int/ │ │ │ │ ├── cc1101_int_interconnect.c │ │ │ │ └── cc1101_int_interconnect.h │ │ │ ├── device_registry.h │ │ │ ├── devices.c │ │ │ ├── devices.h │ │ │ ├── preset.h │ │ │ ├── registry.c │ │ │ ├── registry.h │ │ │ └── types.h │ │ ├── environment.c │ │ ├── environment.h │ │ ├── protocols/ │ │ │ ├── alutech_at_4n.c │ │ │ ├── alutech_at_4n.h │ │ │ ├── ansonic.c │ │ │ ├── ansonic.h │ │ │ ├── base.c │ │ │ ├── base.h │ │ │ ├── bett.c │ │ │ ├── bett.h │ │ │ ├── bin_raw.c │ │ │ ├── bin_raw.h │ │ │ ├── came.c │ │ │ ├── came.h │ │ │ ├── came_atomo.c │ │ │ ├── came_atomo.h │ │ │ ├── came_twee.c │ │ │ ├── came_twee.h │ │ │ ├── chamberlain_code.c │ │ │ ├── chamberlain_code.h │ │ │ ├── clemsa.c │ │ │ ├── clemsa.h │ │ │ ├── dickert_mahs.c │ │ │ ├── dickert_mahs.h │ │ │ ├── doitrand.c │ │ │ ├── doitrand.h │ │ │ ├── dooya.c │ │ │ ├── dooya.h │ │ │ ├── faac_slh.c │ │ │ ├── faac_slh.h │ │ │ ├── feron.c │ │ │ ├── feron.h │ │ │ ├── gangqi.c │ │ │ ├── gangqi.h │ │ │ ├── gate_tx.c │ │ │ ├── gate_tx.h │ │ │ ├── hay21.c │ │ │ ├── hay21.h │ │ │ ├── hollarm.c │ │ │ ├── hollarm.h │ │ │ ├── holtek.c │ │ │ ├── holtek.h │ │ │ ├── holtek_ht12x.c │ │ │ ├── holtek_ht12x.h │ │ │ ├── honeywell_wdb.c │ │ │ ├── honeywell_wdb.h │ │ │ ├── hormann.c │ │ │ ├── hormann.h │ │ │ ├── ido.c │ │ │ ├── ido.h │ │ │ ├── intertechno_v3.c │ │ │ ├── intertechno_v3.h │ │ │ ├── keeloq.c │ │ │ ├── keeloq.h │ │ │ ├── keeloq_common.c │ │ │ ├── keeloq_common.h │ │ │ ├── kia.c │ │ │ ├── kia.h │ │ │ ├── kinggates_stylo_4k.c │ │ │ ├── kinggates_stylo_4k.h │ │ │ ├── legrand.c │ │ │ ├── legrand.h │ │ │ ├── linear.c │ │ │ ├── linear.h │ │ │ ├── linear_delta3.c │ │ │ ├── linear_delta3.h │ │ │ ├── magellan.c │ │ │ ├── magellan.h │ │ │ ├── marantec.c │ │ │ ├── marantec.h │ │ │ ├── marantec24.c │ │ │ ├── marantec24.h │ │ │ ├── mastercode.c │ │ │ ├── mastercode.h │ │ │ ├── megacode.c │ │ │ ├── megacode.h │ │ │ ├── nero_radio.c │ │ │ ├── nero_radio.h │ │ │ ├── nero_sketch.c │ │ │ ├── nero_sketch.h │ │ │ ├── nice_flo.c │ │ │ ├── nice_flo.h │ │ │ ├── nice_flor_s.c │ │ │ ├── nice_flor_s.h │ │ │ ├── phoenix_v2.c │ │ │ ├── phoenix_v2.h │ │ │ ├── power_smart.c │ │ │ ├── power_smart.h │ │ │ ├── princeton.c │ │ │ ├── princeton.h │ │ │ ├── protocol_items.c │ │ │ ├── protocol_items.h │ │ │ ├── public_api.h │ │ │ ├── raw.c │ │ │ ├── raw.h │ │ │ ├── revers_rb2.c │ │ │ ├── revers_rb2.h │ │ │ ├── roger.c │ │ │ ├── roger.h │ │ │ ├── scher_khan.c │ │ │ ├── scher_khan.h │ │ │ ├── secplus_v1.c │ │ │ ├── secplus_v1.h │ │ │ ├── secplus_v2.c │ │ │ ├── secplus_v2.h │ │ │ ├── smc5326.c │ │ │ ├── smc5326.h │ │ │ ├── somfy_keytis.c │ │ │ ├── somfy_keytis.h │ │ │ ├── somfy_telis.c │ │ │ ├── somfy_telis.h │ │ │ ├── star_line.c │ │ │ └── star_line.h │ │ ├── receiver.c │ │ ├── receiver.h │ │ ├── registry.c │ │ ├── registry.h │ │ ├── subghz_file_encoder_worker.c │ │ ├── subghz_file_encoder_worker.h │ │ ├── subghz_keystore.c │ │ ├── subghz_keystore.h │ │ ├── subghz_protocol_registry.h │ │ ├── subghz_setting.c │ │ ├── subghz_setting.h │ │ ├── subghz_tx_rx_worker.c │ │ ├── subghz_tx_rx_worker.h │ │ ├── subghz_worker.c │ │ ├── subghz_worker.h │ │ ├── transmitter.c │ │ ├── transmitter.h │ │ └── types.h │ ├── toolbox/ │ │ ├── .gitignore │ │ ├── SConscript │ │ ├── api_lock.h │ │ ├── args.c │ │ ├── args.h │ │ ├── bit_buffer.c │ │ ├── bit_buffer.h │ │ ├── buffer_stream.c │ │ ├── buffer_stream.h │ │ ├── cli/ │ │ │ ├── cli_ansi.c │ │ │ ├── cli_ansi.h │ │ │ ├── cli_command.c │ │ │ ├── cli_command.h │ │ │ ├── cli_registry.c │ │ │ ├── cli_registry.h │ │ │ ├── cli_registry_i.h │ │ │ └── shell/ │ │ │ ├── cli_shell.c │ │ │ ├── cli_shell.h │ │ │ ├── cli_shell_completions.c │ │ │ ├── cli_shell_completions.h │ │ │ ├── cli_shell_i.h │ │ │ ├── cli_shell_line.c │ │ │ └── cli_shell_line.h │ │ ├── compress.c │ │ ├── compress.h │ │ ├── crc32_calc.c │ │ ├── crc32_calc.h │ │ ├── dir_walk.c │ │ ├── dir_walk.h │ │ ├── float_tools.c │ │ ├── float_tools.h │ │ ├── hex.c │ │ ├── hex.h │ │ ├── keys_dict.c │ │ ├── keys_dict.h │ │ ├── level_duration.h │ │ ├── m_cstr_dup.h │ │ ├── manchester_decoder.c │ │ ├── manchester_decoder.h │ │ ├── manchester_encoder.c │ │ ├── manchester_encoder.h │ │ ├── md5_calc.c │ │ ├── md5_calc.h │ │ ├── name_generator.c │ │ ├── name_generator.h │ │ ├── path.c │ │ ├── path.h │ │ ├── pipe.c │ │ ├── pipe.h │ │ ├── pretty_format.c │ │ ├── pretty_format.h │ │ ├── profiler.c │ │ ├── profiler.h │ │ ├── property.c │ │ ├── property.h │ │ ├── protocols/ │ │ │ ├── protocol.h │ │ │ ├── protocol_dict.c │ │ │ └── protocol_dict.h │ │ ├── pulse_joiner.c │ │ ├── pulse_joiner.h │ │ ├── pulse_protocols/ │ │ │ ├── pulse_glue.c │ │ │ └── pulse_glue.h │ │ ├── saved_struct.c │ │ ├── saved_struct.h │ │ ├── settings_helpers/ │ │ │ ├── submenu_based.c │ │ │ └── submenu_based.h │ │ ├── simple_array.c │ │ ├── simple_array.h │ │ ├── str_buffer.c │ │ ├── str_buffer.h │ │ ├── stream/ │ │ │ ├── buffered_file_stream.c │ │ │ ├── buffered_file_stream.h │ │ │ ├── file_stream.c │ │ │ ├── file_stream.h │ │ │ ├── stream.c │ │ │ ├── stream.h │ │ │ ├── stream_cache.c │ │ │ ├── stream_cache.h │ │ │ ├── stream_i.h │ │ │ ├── string_stream.c │ │ │ └── string_stream.h │ │ ├── strint.c │ │ ├── strint.h │ │ ├── tar/ │ │ │ ├── tar_archive.c │ │ │ └── tar_archive.h │ │ ├── value_index.c │ │ ├── value_index.h │ │ ├── varint.c │ │ ├── varint.h │ │ ├── version.c │ │ └── version.h │ ├── u8g2/ │ │ ├── SConscript │ │ ├── u8g2.h │ │ ├── u8g2_bitmap.c │ │ ├── u8g2_box.c │ │ ├── u8g2_buffer.c │ │ ├── u8g2_circle.c │ │ ├── u8g2_d_memory.c │ │ ├── u8g2_font.c │ │ ├── u8g2_fonts.c │ │ ├── u8g2_glue.c │ │ ├── u8g2_glue.h │ │ ├── u8g2_hvline.c │ │ ├── u8g2_intersection.c │ │ ├── u8g2_line.c │ │ ├── u8g2_ll_hvline.c │ │ ├── u8g2_setup.c │ │ ├── u8x8.h │ │ ├── u8x8_8x8.c │ │ ├── u8x8_byte.c │ │ ├── u8x8_cad.c │ │ ├── u8x8_display.c │ │ ├── u8x8_gpio.c │ │ └── u8x8_setup.c │ └── update_util/ │ ├── SConscript │ ├── dfu_file.c │ ├── dfu_file.h │ ├── dfu_headers.h │ ├── int_backup.c │ ├── int_backup.h │ ├── resources/ │ │ ├── manifest.c │ │ └── manifest.h │ ├── update_manifest.c │ ├── update_manifest.h │ ├── update_operation.c │ └── update_operation.h ├── scripts/ │ ├── ReadMe.md │ ├── assets.py │ ├── bin2dfu.py │ ├── debug/ │ │ ├── 41-flipper.rules │ │ ├── FreeRTOS/ │ │ │ ├── FreeRTOS.py │ │ │ ├── FreeRTOSgdb/ │ │ │ │ ├── EventGroup.py │ │ │ │ ├── GDBCommands.py │ │ │ │ ├── HandleRegistry.py │ │ │ │ ├── List.py │ │ │ │ ├── QueueTools.py │ │ │ │ ├── Task.py │ │ │ │ ├── Types.py │ │ │ │ └── __init__.py │ │ │ ├── LICENSE │ │ │ └── README.md │ │ ├── PyCortexMDebug/ │ │ │ ├── LICENSE │ │ │ ├── PyCortexMDebug.py │ │ │ ├── README.md │ │ │ └── cmdebug/ │ │ │ ├── __init__.py │ │ │ ├── svd.py │ │ │ └── svd_gdb.py │ │ ├── README.md │ │ ├── STM32WB55_CM4.svd │ │ ├── flipperapps.py │ │ ├── flipperversion.py │ │ ├── fw.jflash │ │ ├── gdbinit │ │ └── stm32wbx.cfg │ ├── fastfap.py │ ├── fbt/ │ │ ├── __init__.py │ │ ├── appmanifest.py │ │ ├── elfmanifest.py │ │ ├── fapassets.py │ │ ├── sdk/ │ │ │ ├── __init__.py │ │ │ ├── cache.py │ │ │ ├── collector.py │ │ │ └── hashes.py │ │ ├── util.py │ │ └── version.py │ ├── fbt_tools/ │ │ ├── blackmagic.py │ │ ├── ccache.py │ │ ├── compilation_db.py │ │ ├── crosscc.py │ │ ├── doxygen.py │ │ ├── fbt_apps.py │ │ ├── fbt_assets.py │ │ ├── fbt_debugopts.py │ │ ├── fbt_dist.py │ │ ├── fbt_envhooks.py │ │ ├── fbt_extapps.py │ │ ├── fbt_help.py │ │ ├── fbt_hwtarget.py │ │ ├── fbt_resources.py │ │ ├── fbt_sdk.py │ │ ├── fbt_tweaks.py │ │ ├── fbt_version.py │ │ ├── fwbin.py │ │ ├── gdb.py │ │ ├── jflash.py │ │ ├── objdump.py │ │ ├── openocd.py │ │ ├── pvsstudio.py │ │ ├── python3.py │ │ ├── sconsmodular.py │ │ ├── sconsrecursiveglob.py │ │ └── strip.py │ ├── flash.py │ ├── flipper/ │ │ ├── __init__.py │ │ ├── app.py │ │ ├── assets/ │ │ │ ├── __init__.py │ │ │ ├── copro.py │ │ │ ├── coprobin.py │ │ │ ├── dolphin.py │ │ │ ├── heatshrink_stream.py │ │ │ ├── icon.py │ │ │ ├── manifest.py │ │ │ ├── obdata.py │ │ │ ├── tarball.py │ │ │ └── templates/ │ │ │ ├── dolphin.c.tmpl │ │ │ └── dolphin.h.tmpl │ │ ├── cube.py │ │ ├── storage.py │ │ └── utils/ │ │ ├── __init__.py │ │ ├── cdc.py │ │ ├── fff.py │ │ ├── fstree.py │ │ ├── openocd.py │ │ ├── programmer.py │ │ ├── programmer_openocd.py │ │ ├── register.py │ │ ├── stm32wb55.py │ │ └── templite.py │ ├── fwflash.py │ ├── fwsize.py │ ├── get_env.py │ ├── guruguru.py │ ├── hs.py │ ├── imglint.py │ ├── infrared.py │ ├── lint.py │ ├── map_analyse_upload.py │ ├── merge_report_qa.py │ ├── ob.data │ ├── ob.py │ ├── ob_custradio.data │ ├── otp.py │ ├── power.py │ ├── runfap.py │ ├── sconsdist.py │ ├── selfupdate.py │ ├── send_firebase_notification.py │ ├── serial_cli.py │ ├── serial_cli_perf.py │ ├── slideshow.py │ ├── storage.py │ ├── testops.py │ ├── toolchain/ │ │ ├── fbtenv.cmd │ │ ├── fbtenv.sh │ │ └── windows-toolchain-download.ps1 │ ├── ufbt/ │ │ ├── SConstruct │ │ ├── commandline.scons │ │ ├── project_template/ │ │ │ ├── .gitignore │ │ │ └── app_template/ │ │ │ ├── ${FBT_APPID}.c │ │ │ ├── .github/ │ │ │ │ └── workflows/ │ │ │ │ └── build.yml │ │ │ └── application.fam │ │ ├── site_init.py │ │ └── site_tools/ │ │ ├── ufbt_help.py │ │ └── ufbt_state.py │ ├── update.py │ ├── version.py │ └── wifi_board.py ├── site_scons/ │ ├── cc.scons │ ├── commandline.scons │ ├── environ.scons │ ├── extapps.scons │ ├── fbt_extra/ │ │ └── util.py │ ├── firmwareopts.scons │ └── site_init.py ├── targets/ │ ├── ReadMe.md │ ├── SConscript │ ├── f18/ │ │ ├── api_symbols.csv │ │ ├── furi_hal/ │ │ │ ├── furi_hal.c │ │ │ ├── furi_hal_power_config.c │ │ │ ├── furi_hal_resources.c │ │ │ ├── furi_hal_resources.h │ │ │ ├── furi_hal_spi_config.c │ │ │ ├── furi_hal_spi_config.h │ │ │ ├── furi_hal_target_hw.h │ │ │ └── furi_hal_version_device.c │ │ └── target.json │ ├── f7/ │ │ ├── api_symbols.csv │ │ ├── application_ext.ld │ │ ├── ble_glue/ │ │ │ ├── app_common.h │ │ │ ├── app_conf.h │ │ │ ├── app_debug.c │ │ │ ├── app_debug.h │ │ │ ├── ble_app.c │ │ │ ├── ble_app.h │ │ │ ├── ble_conf.h │ │ │ ├── ble_const.h │ │ │ ├── ble_dbg_conf.h │ │ │ ├── ble_event_thread.c │ │ │ ├── ble_event_thread.h │ │ │ ├── ble_glue.c │ │ │ ├── ble_glue.h │ │ │ ├── ble_tl_hooks.c │ │ │ ├── compiler.h │ │ │ ├── extra_beacon.c │ │ │ ├── extra_beacon.h │ │ │ ├── furi_ble/ │ │ │ │ ├── event_dispatcher.c │ │ │ │ ├── event_dispatcher.h │ │ │ │ ├── gatt.c │ │ │ │ ├── gatt.h │ │ │ │ └── profile_interface.h │ │ │ ├── gap.c │ │ │ ├── gap.h │ │ │ ├── hsem_map.h │ │ │ ├── hw_ipcc.c │ │ │ ├── osal.h │ │ │ ├── profiles/ │ │ │ │ ├── serial_profile.c │ │ │ │ └── serial_profile.h │ │ │ ├── services/ │ │ │ │ ├── battery_service.c │ │ │ │ ├── battery_service.h │ │ │ │ ├── dev_info_service.c │ │ │ │ ├── dev_info_service.h │ │ │ │ ├── dev_info_service_uuid.inc │ │ │ │ ├── serial_service.c │ │ │ │ ├── serial_service.h │ │ │ │ └── serial_service_uuid.inc │ │ │ └── tl_dbg_conf.h │ │ ├── fatfs/ │ │ │ ├── fatfs.c │ │ │ ├── fatfs.h │ │ │ ├── ffconf.h │ │ │ ├── sector_cache.c │ │ │ ├── sector_cache.h │ │ │ ├── user_diskio.c │ │ │ └── user_diskio.h │ │ ├── furi_hal/ │ │ │ ├── furi_hal.c │ │ │ ├── furi_hal_adc.c │ │ │ ├── furi_hal_bt.c │ │ │ ├── furi_hal_bus.c │ │ │ ├── furi_hal_bus.h │ │ │ ├── furi_hal_clock.c │ │ │ ├── furi_hal_clock.h │ │ │ ├── furi_hal_cortex.c │ │ │ ├── furi_hal_crypto.c │ │ │ ├── furi_hal_debug.c │ │ │ ├── furi_hal_dma.c │ │ │ ├── furi_hal_dma.h │ │ │ ├── furi_hal_flash.c │ │ │ ├── furi_hal_flash.h │ │ │ ├── furi_hal_gpio.c │ │ │ ├── furi_hal_gpio.h │ │ │ ├── furi_hal_i2c.c │ │ │ ├── furi_hal_i2c_config.c │ │ │ ├── furi_hal_i2c_config.h │ │ │ ├── furi_hal_i2c_types.h │ │ │ ├── furi_hal_ibutton.c │ │ │ ├── furi_hal_ibutton.h │ │ │ ├── furi_hal_idle_timer.h │ │ │ ├── furi_hal_info.c │ │ │ ├── furi_hal_infrared.c │ │ │ ├── furi_hal_interrupt.c │ │ │ ├── furi_hal_interrupt.h │ │ │ ├── furi_hal_light.c │ │ │ ├── furi_hal_memory.c │ │ │ ├── furi_hal_mpu.c │ │ │ ├── furi_hal_nfc.c │ │ │ ├── furi_hal_nfc_event.c │ │ │ ├── furi_hal_nfc_felica.c │ │ │ ├── furi_hal_nfc_i.h │ │ │ ├── furi_hal_nfc_irq.c │ │ │ ├── furi_hal_nfc_iso14443a.c │ │ │ ├── furi_hal_nfc_iso14443b.c │ │ │ ├── furi_hal_nfc_iso15693.c │ │ │ ├── furi_hal_nfc_tech_i.h │ │ │ ├── furi_hal_nfc_timer.c │ │ │ ├── furi_hal_os.c │ │ │ ├── furi_hal_os.h │ │ │ ├── furi_hal_power.c │ │ │ ├── furi_hal_power_config.c │ │ │ ├── furi_hal_pwm.c │ │ │ ├── furi_hal_pwm.h │ │ │ ├── furi_hal_random.c │ │ │ ├── furi_hal_region.c │ │ │ ├── furi_hal_resources.c │ │ │ ├── furi_hal_resources.h │ │ │ ├── furi_hal_rfid.c │ │ │ ├── furi_hal_rfid.h │ │ │ ├── furi_hal_rtc.c │ │ │ ├── furi_hal_rtc.h │ │ │ ├── furi_hal_sd.c │ │ │ ├── furi_hal_serial.c │ │ │ ├── furi_hal_serial.h │ │ │ ├── furi_hal_serial_control.c │ │ │ ├── furi_hal_serial_control.h │ │ │ ├── furi_hal_serial_types.h │ │ │ ├── furi_hal_serial_types_i.h │ │ │ ├── furi_hal_speaker.c │ │ │ ├── furi_hal_spi.c │ │ │ ├── furi_hal_spi_config.c │ │ │ ├── furi_hal_spi_config.h │ │ │ ├── furi_hal_spi_types.h │ │ │ ├── furi_hal_subghz.c │ │ │ ├── furi_hal_subghz.h │ │ │ ├── furi_hal_target_hw.h │ │ │ ├── furi_hal_usb.c │ │ │ ├── furi_hal_usb_ccid.c │ │ │ ├── furi_hal_usb_cdc.c │ │ │ ├── furi_hal_usb_cdc.h │ │ │ ├── furi_hal_usb_hid.c │ │ │ ├── furi_hal_usb_i.h │ │ │ ├── furi_hal_usb_u2f.c │ │ │ ├── furi_hal_version.c │ │ │ ├── furi_hal_version_device.c │ │ │ └── furi_hal_vibro.c │ │ ├── inc/ │ │ │ ├── FreeRTOSConfig.h │ │ │ ├── alt_boot.h │ │ │ ├── furi_config.h │ │ │ ├── stm32.h │ │ │ ├── stm32_assert.h │ │ │ ├── stm32wb55_linker.h │ │ │ └── stm32wb55_startup.h │ │ ├── platform_specific/ │ │ │ ├── cxx_virtual_stub.c │ │ │ ├── cxx_virtual_stub.h │ │ │ ├── intrinsic_export.h │ │ │ └── math_wrapper.h │ │ ├── src/ │ │ │ ├── dfu.c │ │ │ ├── main.c │ │ │ ├── recovery.c │ │ │ ├── stm32wb55_startup.c │ │ │ └── update.c │ │ ├── stm32wb55xx_flash.ld │ │ ├── stm32wb55xx_ram_fw.ld │ │ └── target.json │ └── furi_hal_include/ │ ├── furi_hal.h │ ├── furi_hal_adc.h │ ├── furi_hal_bt.h │ ├── furi_hal_cortex.h │ ├── furi_hal_crypto.h │ ├── furi_hal_debug.h │ ├── furi_hal_i2c.h │ ├── furi_hal_info.h │ ├── furi_hal_infrared.h │ ├── furi_hal_light.h │ ├── furi_hal_memory.h │ ├── furi_hal_mpu.h │ ├── furi_hal_nfc.h │ ├── furi_hal_power.h │ ├── furi_hal_random.h │ ├── furi_hal_region.h │ ├── furi_hal_sd.h │ ├── furi_hal_speaker.h │ ├── furi_hal_spi.h │ ├── furi_hal_usb.h │ ├── furi_hal_usb_ccid.h │ ├── furi_hal_usb_hid.h │ ├── furi_hal_usb_hid_u2f.h │ ├── furi_hal_version.h │ └── furi_hal_vibro.h └── tsconfig.json