Commit Graph
117 Commits
Author SHA1 Message Date
MX d097aa54af add multiple asset fixes and macos filter 2026-10-06 00:56:25 +03:00
MX 20b9cf3610 trying to fix stale .fals include 2026-10-05 18:01:17 +03:00
MX 663eb937b7 Merge remote-tracking branch 'OFW/dev' into dev 2026-10-01 20:54:50 +03:00
MMX 2bbf7a54ba CI/CD FW Flash size report + sconsdist build command order fix (#4457) 2026-10-01 20:35:06 +03:00
Mykhailo ShevchukandClaude Opus 5 83fbee38f1 fbt: fix built-in app source exclusions, and move the SubGHz feature plugins under the app (#1135)
* fbt: make a built-in app's source exclusions actually exclude

GatherSources() splits the list it is given into includes and "!exclusions" and
applies the second to the first, so an exclusion only ever filters the patterns
handed over in the same call. External apps pass their whole source list at once
(fbt_extapps.py) and get what they asked for. The built-in path did not:
get_builtin_app_folders() flattened each app to one (folder, pattern) pair per
source entry, and firmware.scons called GatherSources() once per pair - so
"*.c*" was gathered with no exclusions in sight and "!plugins" arrived alone
with nothing to filter.

Merging per app is not enough either. Sources are gathered per folder and a
folder can hold more than one built-in app: applications/main/subghz has an APP
beside a STARTUP hook, and the hook's default "*.c*" would re-glob whatever the
app excluded. So collect one list per folder, merged across the built-in apps
that live there, and pass it in a single call.

That merge is also why GatherSources() now de-duplicates with dict.fromkeys()
instead of a set(). Its result is the link order, and a folder that merges to
more than one include pattern - applications/services/cli and
applications/system/find_my_flipper both do - would otherwise have that order
decided by PYTHONHASHSEED. Two builds of one tree could differ in ~10 KB of
firmware.bin. External apps were already exposed to this; they no longer are.

No built-in app in the tree declares an exclusion today, so this changes no
output: with the version blob pinned (WORKFLOW_BRANCH_OR_TAG, DIST_SUFFIX,
FORCE_NO_DIRTY, SOURCE_DATE_EPOCH) the firmware differs from dev only in the
8-byte embedded git hash and 2 bytes that track it, and two builds at different
PYTHONHASHSEED values are byte-identical. What it unblocks is a built-in app
keeping plugin sources in a subfolder the way NFC does.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* SubGHz: move the feature plugins into the app they belong to

subghz_add_manually and subghz_frequency_analyzer sat in applications/main as
siblings of nfc, lfrfid and the rest - directories that read as main apps, are
not in the main_apps metapackage, and are not apps at all. They were there
because a built-in app could not exclude sources: everything under
applications/main/subghz is compiled into the firmware, and the six scene
thunks the app keeps in scenes/ carry the same symbol names as the bodies that
moved into the plugin, so the image would not have linked at all. The previous
commit is a hard prerequisite, not an optimisation.

They now live in applications/main/subghz/plugins/, declared in the app's own
manifest with sources= pointing at their folders, which is how NFC keeps its
plugins - 45 card parsers under plugins/supported_cards and 16 protocol-support
plugins under helpers/protocol_support. The app excludes plugins/ from its own
sources.

Nothing about the output changes: same appids, so the same .fal files still
deploy to apps_data/subghz/plugins, and with the version blob pinned the
firmware differs from the previous commit only in the embedded git hash. The
.fal files keep their size; their bytes differ only in the .gnu_debuglink CRC,
which follows the debug ELF's DWARF now carrying the new source paths.

The plugin sources keep including <subghz/...>, which still resolves -
applications/main is on the global include path either way.

One developer-facing wrinkle, shared with every other co-located plugin in the
tree: fbt launch APPSRC=<path to the plugin folder> no longer resolves, because
the path lookup matches the parent directory name and finds the built-in app.
APPSRC=subghz_add_manually, by appid, still works.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* Changelog

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 22:24:21 +03:00
Mykhailo ShevchukandClaude Opus 5 944219d0ba Plugin loader: skip what it cannot load, and let a scan filter by file name (#1133)
* FlipperApplication: skip a plugin that fails to load instead of ending the scan

plugin_manager_load_all() broke out of the directory loop on the first file it
could not load, so a single stray or stale .fal silently cost every plugin
listed after it. It then returned PluginManagerErrorNone unconditionally, which
made every caller's error check dead code - including the one in the Sub-GHz
radio device registry, whose "Failed to load all libs" could never fire.

Skip the file and carry on, and return the first error the scan hit, so a
caller can tell a complete load from a partial one.

An app id mismatch is deliberately not one of those errors. A scan selects, and
a plugin belonging to another app is a normal thing to meet in a shared
directory - reporting it would hand the caller an error for a folder that is
working exactly as intended. That verdict belongs with the check itself rather
than at the call site, so the body of plugin_manager_load_single() moves into a
static helper that knows whether it is scanning: naming one file and getting a
mismatch is still an error, meeting one mid-scan is logged at debug.

Both examples checked the result and gave up, which was unreachable until now
and would have thrown away the plugins that did load - the opposite of the
point. They are the template a third-party plugin host gets copied from, so
they log and carry on instead, and the do/while(0) whose only break this was
goes with it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* FlipperApplication: tell a failed directory read from the end of the directory

storage_dir_read() returns false both when it has handed back the last entry
and when the read itself failed - storage_ext_dir_read() sets FSE_NOT_EXIST for
the former and leaves FSE_NOT_READY, FSE_INTERNAL and friends for the latter,
so the only way to tell them apart is storage_file_get_error().

The scan loop treated the two the same, so a card pulled or a controller
hiccup partway through left a half-populated manager reporting complete
success. Check the error before the directory is closed, and report a read that
ended the scan early.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* FlipperApplication: let a plugin directory scan filter by file name prefix

A plugin's app id only becomes readable once its whole image has been mapped
and relocated, its init arrays run and its entry point called - see
flipper_application_plugin_get_descriptor(). So a scan of a directory shared
with plugins of another kind pays for a foreign image in full, and runs its
constructors against an API interface it was not built for, before it can tell
the plugin is not the one it wanted. And apps_data/<parent appid>/plugins is
fbt's default location for every plugin of an app, so sharing is the norm.

Add plugin_manager_load_all_prefixed(), which takes an optional file name
prefix and passes over anything that does not start with it. Same idea as
CliCommandExternalConfig::fal_prefix in the CLI registry, which has its own
loader for exactly this reason.

plugin_manager_load_all() keeps its signature and becomes the NULL-prefix case,
so nothing already built has to change. API 88.6 -> 88.7. Exporting the new
entry point rather than keeping it firmware-internal costs 8 bytes of API
table, and is what lets a plugin-hosting FAP fix the same hazard in its own
directory.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* SubGhz: pick the radio device plugins out of their folder by file name

subghz_device_registry_init() scans apps_data/subghz/plugins on every
subghz_devices_init(), which runs on every Sub-GHz app start and from the CLI
and JS module. Anything else that ends up in that folder - the natural place
for a Sub-GHz plugin, by fbt's own convention - was mapped, relocated and run
in full before the app id said it was not a radio driver. For the Frequency
Analyzer plugin that is 5,103 bytes of heap and ~7 KB of SD reads, every time.

Radio device plugins are all named radio_device_*.fal already, so require that
prefix and let the registry pass over the rest for the cost of a string
compare. Its "Failed to load all libs" check now means something, and says
which error it means.

The cost of keying on the file name is that a driver named anything else stops
being picked up, and a skip is only logged at debug level, which release builds
compile out. Since a missing driver otherwise shows up as nothing more than the
external module no longer being offered, warn when the scan ends with no driver
at all, and add the assertion to the Sub-GHz unit test suite - which already
inits the registry - that the one driver we ship is still found. The warning
cannot see one of several drivers going missing; the test is what covers that
if a second one is ever added.

A third-party radio driver under some other name is the one compatibility cost
here; radio_device_cc1101_ext.fal is the only driver in the tree and the only
naming an out-of-tree one could have copied.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* SubGhz: put the Frequency Analyzer plugin back in the default plugin directory

PR #1131 deployed it to apps_data/subghz/plugins/features/ so the radio device
registry's non-recursive scan would never see it, and added an fal_path field
to the app manifest to allow that. With the registry filtering by file name and
the loader skipping what it cannot load, the folder is safe to share, so the
plugin goes back to apps_data/subghz/plugins/ and fal_path goes away with it.

Nothing else used fal_path, and it has not shipped in a release, so no SDK
consumer can be relying on it; every other plugin already deploys to the
default apps_data/<parent appid>/plugins. It was also a divergence in
scripts/fbt from OFW, which is rebase surface we do not need to carry.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* CHANGELOG: plugin loader scan fix, API 88.7

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-08 13:19:37 +03:00
Mykhailo Shevchuk 7f76ec441f SubGHz: extract the Frequency Analyzer into a loadable plugin (#1131)
Sub-GHz is the only main app still built into the firmware image, so everything
in it costs internal flash permanently. The Frequency Analyzer is its only
feature owning a view, a worker thread and a scene outright, so it moves to
applications/main/subghz_frequency_analyzer/ and builds into
subghz_frequency_analyzer.fal, mapped when its scene is entered and unmapped
when it is left. The app keeps a thunk scene, a loader, and a private API table
exporting the three app-internal functions the plugin calls.

Release build: 181,684 -> 185,004 bytes of free flash (+3,320). The .fal costs
5,103 bytes of heap while the screen is open and nothing when it is closed.

The sources had to leave applications/main/subghz/ entirely, because source
exclusions in a manifest are silently ignored for built-in apps. The plugin also
deploys to apps_data/subghz/plugins/features/ rather than the default
apps_data/subghz/plugins/, which the radio device registry scans on every
Sub-GHz start; a new optional fal_path in the app manifest allows that. The
underlying loader behaviour is filed as #1130.

Two ordering constraints are load-bearing and commented where they apply: the
OK-long scene transition stays in the app, since leaving the scene unmaps the
image the plugin would return into; and the plugin parks the dispatcher on an
app-owned view before removing its own, since removing the current view latches
an event loop stop and would otherwise quit Sub-GHz whenever the analyzer closed.

Also drops the analyzer model's write-only is_ext_radio, and stops the analyzer
view closing a notification record it never opened.

Hardware validated: entering the analyzer maps the plugin (free heap -8,984 B,
worker thread running at ~24% CPU), leaving it keeps Sub-GHz running and joins
the worker, and seven enter/leave cycles show no heap drift.
2026-09-07 22:56:16 +03:00
MMX 7f0b6e1c14 Disable license expiration check in PVS options & update PR template (#4445)
* Enable license expiration check option in PVS options

* Small fixes in PR template
2026-09-04 17:26:44 +03:00
MX a8164fc4e2 download more ram 2026-08-16 04:18:50 +03:00
MX 2db115783c moving non critical settings to sd
based on WillyJL's work

TODO: fix loader_menu
2026-01-11 09:30:28 +03:00
MX 00dde53304 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-07 18:02:16 +03:00
Anna Antonenkoandhedger 3d02063bce fbt: Deterministic STARTUP order & additional checks (#4179)
* unit_tests: clear startup order

* fam: ensure unique STARTUP order

* fbt: warn on same .order values within a group leading to non-determinitic builds

* fbt: better formatting for app order warning

---------

Co-authored-by: hedger <hedger@nanode.su>
2025-04-07 16:45:09 +04:00
MX 306e34c64b Merge remote-tracking branch 'OFW/dev' into dev 2024-10-07 04:47:24 +03:00
あくandhedger 0469ef0e55 FuriHal, drivers: rework gauge initialization routine (#3912)
* FuriHal, drivers: rework gauge initialization, ensure that we can recover from any kind of internal/external issue
* Make PVS happy
* Format sources
* bq27220: add gaps injection into write operations
* Drivers: bq27220 cleanup and various fixes
* Drivers: bq27220 verbose logging and full access routine fix
* Drivers: better cfg mode exit handling in bq27220 driver
* Drivers: rewrite bq27220 based on bqstudio+ev2400, experiments and guessing. Fixes all known issues.
* PVS: hello license check
* Drivers: minimize reset count in bq27220 init sequence
* Drivers: bq27220 hide debug logging, reorganize routine to ensure predictable result and minimum amount of interaction with gauge, add documentation and notes.
* Drivers: more reliable bq27220_full_access routine
* Drivers: replace some warning with error in bq27220
* Drivers: move static asserts to headers in bq27220
* Fix PVS warnings
* Drivers: simplify logic in bq27220

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-10-06 22:36:05 +04:00
MX 56530ee61c Merge remote-tracking branch 'OFW/dev' into dev 2024-09-05 22:10:41 +03:00
Georgii Surkovandあく fa2d611652 [FL-3889] 5V on GPIO control for ext. modules (#3830)
* Make file extensions case-insensitive
* Bump protobuf version
* Add support for 5V control via RPC
* Add support for 5V control via Expansion protocol
* Update running instructions
* Update expansion module documentation
* Prettify condition
* Test RPC OTG control as well
* Assets: bump protobuf version
* Disable PVS license expiration check, fix PVS warnings

Co-authored-by: あく <alleteam@gmail.com>
2024-09-05 15:40:14 +01:00
MX a7ca56cf4e Merge remote-tracking branch 'OFW/dev' into dev 2024-07-07 02:22:08 +03:00
hedger 7879876ba1 [FL-3863] toolchain: v37 (#3746)
* toolchain: v36
* toolchain: fixed cert path; lib: nanopb: updated to 0.4.8
* fbtenv: rolled back cert path for 3.11
* clang-format: updated config for v18
* linter fixes
* clang-format: properly regenerated config (`clang-format -style=file:.clang-format -dump-config > .clang-format-new; mv .clang-format-new .clang-format`)
* clang-format: AllowShortLoopsOnASingleLine: false
* toolchain: v37
* fbt: compilation_db.py: fixes for Windows
2024-07-05 18:27:21 +01:00
MX 181c59b30f Merge remote-tracking branch 'OFW/dev' into dev 2024-06-10 22:55:02 +03:00
あくandSG 0bc400a3ae Code Cleanup: unused includes, useless checks, unused variables, etc... (#3696)
* Remove unnecessary checks
* Sublime: never insert missing headers
* Cleanup furi defines use
* Cleanup startup. Cleanup linker scripts. Explicitly define all interrupts hadlers, including uninmplemented one.
* Startup routine in C
* Drop assembler startup
* Move linker defines to stm32wb55_linker.h, cleanup naming, unify usage. Mpu: protect last 32b of main stack. Document various obscure things.
* Move furi_hal_switch documentation to appropriate place, use 0x0 for updater jump.
* UnitTests: move all temporary test files into tmp folder

---------

Co-authored-by: SG <who.just.the.doctor@gmail.com>
2024-06-11 03:04:29 +10:00
MX 4b5e7d90d6 Merge remote-tracking branch 'OFW/dev' into dev 2024-06-01 16:55:04 +03:00
hedgerandあく c93d164785 fbt, vscode: tweaks for cdb generation for clangd (#3680)
* fbt, vscode: tweaks for cdb generation for clangd
* .clangd: updated config
* vscode: disabled auto header insertion for clangd
* .clangd: updated config, ignoring format warnings
* Add sublime text project
* vscode: enabled clang-tidy for clangd
* clangd: strict include checks for sources only

Co-authored-by: あく <alleteam@gmail.com>
2024-06-01 13:20:51 +01:00
MX 6a91588f52 Merge remote-tracking branch 'OFW/dev' into dev 2024-05-21 01:34:05 +03:00
hedgerandあく 9e42e00ead Icons: compression fixes & larger dimension support (#3564)
* toolbox, gui: fixes for compressed icon handling
* ufbt: fixes for generated vscode project
* scripts: increased max dimensions for image converter
* icon type changes
* linter fixes; api sync
* gui: docs fix
* toolbox: fixed potential decoder buffer overflow
* minor cleanup
* fbt: sdk: suppressed deprecation warnings in API table
* toolbox: compress: added unit tests
   vscode: now installs resources for unit_tests
   unit_tests: now loads subghz region data
* toolbox: compress: review fixes, pt 1
* compress: now passes decoder buffer size as constructor argument; auto-resize decoder buffer; crash on failed icon decompression
* PVS fixes
* pvs fixes, pt2
* doxygen fixes
* investigating unit test failures
* investigating unit test failures
* investigating unit test failures
* investigating unit test failures
* investigating unit test failures
* UnitTests: move all tests into plugins, brakes testing
* UnitTests: add plugin API and update plugin entrypoints
* UniTests: Test runner that works with plugins
* fbt: extra filtering for extapps to include in build
* UnitTests: filter tests by name
* loader: restored API table for unit_test build config
* Add various missing symbols to API table
* UnitTest: fail on plugin load error
* UnitTests: cleanup plugin api and reporting
* unit_tests: composite resolver
* UnitTests: remove unused declaration
* unit_tests, nfc: moved mock nfc implementation to libnfc
* unit_tests: api: removed redundant #define
* toolbox: compress: removed size_hint for icons; triggering furi_check on oversized icons
* gui: icon, icon_animation: removed size hit APIs
* Format Sources. Cleanup code.
* loader: refuse to start .fal as app
* toolbox: compress: fixed memory corruption in operations with small destination buffer; added unit tests for that case
* unit_tests: proper test skipping; better selective test interface
* unit_tests: moved 'loading' logging to proper location

Co-authored-by: あく <alleteam@gmail.com>
2024-05-20 18:23:47 +01:00
MX 3ccb2956f3 Merge remote-tracking branch 'OFW/dev' into dev 2024-04-02 17:02:56 +03:00
hedgerandあく 096a26b07d fbt: added -Wstrict-prototypes for main firmware (#3557)
* fbt: added -Wstrict-prototypes for main firmware (excludes extapps)
* unit_tests: fixed declarations using strict prototypes
* furi_hal: ble: changed gap stop log level to debug

Co-authored-by: あく <alleteam@gmail.com>
2024-04-02 02:02:45 +09:00
f426c44811 [FL-3801] Mifare Ultralight naming fix (#3551)
* Fixed some UI mismatches in plugin and nfc app
* Fixed nameing mismatches in mosgortrans_util
* Fix ultralight naming display
* Fix naming for Ultralight on read screen
* fbt: fixed regression with pvs-reports autoopen
* Revert st25tb_render.c

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
2024-04-02 00:02:11 +09:00
MX 7c0939ad52 Merge remote-tracking branch 'OFW/dev' into dev 2024-03-25 14:23:44 +03:00
MX 6d9a2cc699 fbt/ufbt: Ensure POSIX paths are passed to GDB on all platforms
https://github.com/flipperdevices/flipperzero-firmware/pull/3360/files
2024-03-22 11:27:48 +03:00
4039ccbcca fbt/ufbt: Ensure POSIX paths are passed to GDB on all platforms (#3360)
* fbt/ufbt: Ensure POSIX paths are passed to GDB on all platforms
  GDB heavily dislikes forward slashes from Windows paths and strips
  them internally instead of normalizing them. Account for this by
  passing POSIX paths explicitly.
* fbt: different approach for posix path handling
* fbt, ufbt: further fixes for path handling
* fbt: explicit path stringification
* linter fixes

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: あく <alleteam@gmail.com>
2024-03-21 07:36:38 +09:00
hedgerandあく ee36c66572 fbt: doxygen target (#3510)
* fbt: doxygen target
* github: adjustments for doxygen
* github: always generate docs, only upload for dev
* doxygen: fixed exclusion path for awesome-css
* github: stricter check for push ref
* github: bumped action version to fix node.js deprecation
* github: added PVS report url to workflow summary
* github: pvs: reworked report URL handling
* github: added size report to summary
* docs: added `doxygen` target
* fbt: common naming scheme for COMSTR
* Documentation: fix warnings and errors
* Doxygen: stricter warning checks
* fbt: "doxy" target, opens generated doxygen documentation in browser
* github: doxygen: now using edge (1.10) version

Co-authored-by: あく <alleteam@gmail.com>
2024-03-21 01:32:53 +09:00
MX 88b354b57e Merge branch 'ofw_dev' into dev 2024-03-02 07:24:47 +03:00
4b7ca736d6 WiFi board: fixed update script on Windows (unfortunately also Mac and Linux) (#3485)
* WiFi board update: windows fix

* Scripts: add python\Scripts to the path

* Windows: another way to call esptool

* Aaaaaand once more!

* logz

* wifi board scripts: udev rule, dev channel

* fbt: added ARGS variable for passing extra options to certain scripts; removed `devboard_flash_dev` in favor of `devboard_flash ARGS="-c dev"`

* fbt: fully removed `devboard_flash_dev

* scripts: wifi_board.py: cleanup

* ufbt: ported ARGS for supported targets to ufbt

* docs: updated for ARGS=...

---------

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-03-01 15:58:15 +04:00
MX 9fcf3795ee Merge branch 'ofw_dev' into blerefactr 2024-02-19 00:46:40 +03:00
60a9d7e6cf ble: profile rework (#3272)
* ble: profile rework, initial
* apps: hid: fix for pairing cleanup
* app: hid: select transport based on #define
* fixing PVS warnings
* ble: serial service: fixed uid naming
* bt service: on-demand dialog init; ble profiles: docs; battery svc: proper update
* Added shci_cmd_resp_wait/shci_cmd_resp_release impl with semaphore
* app: hid: separated transport code
* ble: fixed service init order for serial svc; moved hardfault check to ble_glue
* cli: ps: added thread prio to output, fixed heap display
* ble_glue: naming changes; separate thread for event processing;
* furi: added runtime stats; cli: added cpu% to `ps`
* cli: fixed thread time calculation
* furi: added getter for thread priority
* fixing pvs warnings
* hid profile: fixed naming
* more naming fixes
* hal: ble init small cleanup
* cleanup & draft beacon api
* f18: api sync
* apps: moved example_custom_font from debug to examples
* BLE extra beacon demo app
* naming fix
* UI fixes for demo app (wip)
* desktop, ble svc: added statusbar icon for beacon
* minor cleanup
* Minor cleanup & naming fixes
* api sync
* Removed stale header
* hal: added FURI_BLE_EXTRA_LOG for extra logging; comments & code cleanup
* naming & macro fixes
* quick fixes from review
* Eliminated stock svc_ctl
* cli: ps: removed runtime stats
* minor include fixes
* (void)
* naming fixes
* More naming fixes
* fbt: always build all libs
* fbt: explicitly globbing libs; dist: logging SDK path
* scripts: fixed lib path precedence
* hal: bt: profiles: naming changes, support for passing params to a profile; include cleanup
* ble: hid: added parameter processing for profile template
* api sync
* BLE HID: long name trim
* Removed unused check
* desktop: updated beacon status icon; ble: hid: cleaner device name management
* desktop: updated status icon

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: nminaylov <nm29719@gmail.com>
2024-02-16 14:20:45 +07:00
MX 1faeca6e1b Merge branch 'ofw_dev' into dev 2024-02-12 17:11:47 +03:00
hedgerandDrunkBatya 14dabf523a New toolchain with gcc 12 (#3254)
* changes for xPack 12.3
* support for gcc 13.2
* Update tools name
* Add new linux toolchain
* Fixed copro submodule
* Fix gdb-py
* Fixes for c++ apps
* Fix gdb-py3, add udev rules
* Fixed udev rules location
* Add MacOS arm, fix fbt toolchain download
* Fixed downloading error file
* fbt: fixed linker warnings; removed gcc 10 from list of supported toolchains
* ufbt: fixed supported toolchain versions
* nfc: replaced local malloc with calloc
* restored code with Warray-bounds to older state
* Update fbtenv.cmd
* Suppressing warnings
* Bump to 25
* Bump to 26
* lint: reformatted macros for new clang-format
* Bump to 27
* Fix m type word
* Bump to 28
* furi: added FURI_DEPRECATED macro
* scripts: toolchain download on Windows: fixing partially extracted cases

Co-authored-by: DrunkBatya <drunkbatya.js@gmail.com>
2024-02-12 09:04:12 +07:00
MX 00ceb2cd5d Merge branch 'ofw_dev' into dev 2023-12-01 20:29:16 +03:00
hedgerandAleksandr Kutuzov 890c9e87ce [FL-3690] Libraries cleanup; u2f crypto rework to use mbedtls (#3234)
* examples: plugins: utilize fal_embedded
* libs: removed fnv1a_hash
* furi: added FURI_PACKED; apps, libs: changed to use FURI_PACKED
* lib: mbedtls: using custom config
* lib: toolbox: removed md5, switched to mbedtls
* targets: f18: link fix
* lib: added mbedtls_cfg.h
* apps: nfc: explicit dependency on libmbedtls
* u2f: reworking to mbedtls
* u2f: replaced sha256 & hmac with mbedtls
* u2f: functional rework using mbedtls
* libs: dropped micro-ecc
* u2f: dropped old implementation
* toolbox: removed sha256 impl
* mcheck() for mbedtls
* libs: removed libmisc; split into smaller libs
* apps: debug: fixed display_test
* apps: include cleanups
* fbt: fixed VERSIONCOMSTR
* furi: added FURI_CHECK_RETURN
* lib: removed qrcode
* cleanup
* fbt: lint_py+format_py: fixed excessive command length
* api: Removed bzero from f7
* api: Removed bzero from f18
* Bump API Symbols

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-12-01 18:16:48 +09:00
MX a64c9534e2 Merge branch 'ofw_dev' into dev 2023-11-17 02:20:27 +03:00
hedgerandあく 98d5718ec9 fbt: improvements (#3217)
* fbt: changed cdefines & lib handling for external apps; added extra checks for app manifest fields; moved around AppsC generator
* fbt: commandline fixes for spaces in paths
* fbt: fixed stringification for FAP_VERSION
* fbt: Removed excessive quoting for gdb
* docs: update for cdefines; fbt: typo fix
* fbt: enforcing at least 2 components in app version=

Co-authored-by: あく <alleteam@gmail.com>
2023-11-16 01:27:35 +09:00
MX b958bfd5c9 Merge branch 'ofw_dev' into nfcrefactoring 2023-11-11 20:18:55 +04:00
49dcf81743 [FL-3618] Infrared remote button index support (#3180)
* Do not load all signals at once (Draft)
* Minor cleanup
* Refactor remote renaming
* Improve function signatures
* Rename infrared_remote functions
* Optimise signal loading
* Implement adding signals to remote
* Add read_name() method
* Deprecate a function
* Partially implement deleting signals (draft)
* Use m-array instead of m-list for signal name directory
* Use plain C strings instead of furi_string
* Implement deleting signals
* Implement deleting signals via generalised callback
* Implement renaming signals
* Rename some types
* Some more renaming
* Remove unused type
* Implement inserting signals (internal use)
* Improve InfraredMoveView
* Send an event to move a signal
* Remove unused type
* Implement moving signals
* Implement creating new remotes with one signal
* Un-deprecate and rename a function
* Add InfraredRemote API docs
* Add InfraredSignal API docs
* Better error messages
* Show progress pop-up when moving buttons in a remote
* Copy labels to the InfraredMoveView to avoid pointer invalidation
* Improve file selection scene
* Show progress pop-up when renaming buttons in a remote
* Refactor a scene
* Show progress when deleting a button from remote
* Use a random name for temp files
* Add docs to infrared_brute_force.h
* Rename Infrared type to InfraredApp
* Add docs to infrared_app_i.h
* Deliver event data via a callback
* Bundle event data together with event type
* Change DataExchange behaviour
* Adapt RPC debug app to new API
* Remove rogue output
* Add Doxygen comments to rpc_app.h
* Simplify rpc_app.c code
* Remove superflous parameter
* Do not allocate protobuf messages on the stack
* Fix GetError response
* Support for button indices
* Comment out shallow submodules
* Fix F18 api
* Fix logical error and add more debug output
* fbt: testing unshallow for protobuf
* github: lint&checks: unshallow prior to checks
* Fix a TODO
* github: do not unshallow the unshallowed
* fbt: assets: only attempt to unshallow if cannot describe
* Do not use the name when loading a signal by index (duh)
* Simplify loading infrared signals by name
* Sync with protobuf release
* Infrared: use compact furi_crash macros

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-11-10 16:22:34 +09:00
MX 32e2cbe60a Merge branch 'ofw_dev' into nfcrefactoring 2023-11-08 15:14:30 +04:00
hedgerandあく 0d94abf856 fbt: dist improvements (#3186)
* fbt: MENUEXTERNAL apps now respect build configuration; fixed `fap_deploy`
* fbt, ufbt: better message for missing app manifests (shows real paths)

Co-authored-by: あく <alleteam@gmail.com>
2023-11-02 22:28:39 +09:00
MX bee48f483c Merge branch 'ofw_dev' into nfcrefactoring 2023-11-01 21:07:33 +03:00
hedger 7bd3bd7ea4 fbt: source collection improvements (#3181)
* fbt: reduced amount of redundant compilation units
* fbt: added GatherSources() method which can reject source paths starting with "!" in sources list; optimized apps' source lists
* docs: updated on path exclusion for `sources`
* apps: examples: fixed example_advanced_plugins source list
* docs: more details on `sources`; apps: narrower sources lists
2023-11-01 13:21:31 +09:00
hedger bbe68d6ffc [FL-3629] fbt: SD card resource handling speedup (#3178)
* fbt: reduced size of resources dependency graphs, resulting in faster build task evaluation
* lib: flipper_app: fixed error message & error handling for plugins
2023-10-31 15:27:58 +04:00
hedgerandあく 917410a0a8 [FL-3629] fbt: reworked assets & resources handling (#3160)
* fbt: reworking targets & assets handling WIP
* fbt: dist fixes
* fbt: moved SD card resources to owning apps
* unit_tests: moved resources to app folder
* github: updated unit_tests paths
* github: packaging fixes
* unit_tests: fixes
* fbt: assets: internal cleanup
* fbt: reworked assets handling
* github: unit_tests: reintroducing fixes
* minor cleanup
* fbt: naming changes to reflect private nature of scons tools
* fbt: resources: fixed dist archive paths
* docs: updated paths
* docs: updated more paths
* docs: included "resources" parameter in app manifest docs; updated assets readme
* updated gitignore for assets
* github: updated action versions
* unit_tests: restored timeout; scripts: assets: logging changes
* gh: don't upload desktop animations for unit test run

Co-authored-by: あく <alleteam@gmail.com>
2023-10-31 00:17:30 +09:00
MX 2958e5cef3 Merge branch 'ofw_dev' into dev 2023-10-23 21:40:52 +03:00