Commit Graph
511 Commits
Author SHA1 Message Date
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
MX a8164fc4e2 download more ram 2026-08-16 04:18:50 +03:00
MX 6c8dcb3f9a Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2026-07-02 16:18:17 +03:00
Evgeny E 05792f1a91 Storage: add retry on file copy to Flipper (#4402)
* Updater test: fail fast on hung copy + reboot-retry on bench

storage.py waits for timeout during a file copy
updater_test.yml splitted and added retry loop in a build-once / try -> hard-reset -> retry.

* Updater test: restore 5-minute step timeouts
2026-07-02 16:16:19 +03:00
MX 0d123bdfa5 Merge remote-tracking branch 'OFW/dev' into dev 2026-07-01 01:50:39 +03:00
WillyJL f7090e5895 Clangd: Add clangd parameters in IDE agnostic config file (#4319)
* Clangd: Add clangd parameters in IDE agnostic config file

* Fix for uFBT too
2026-06-30 22:03:00 +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 9a57b19bfb Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-04-12 19:08:58 +03:00
WillyJLandhedger 1eb57ba462 FBT: Fix for Python 3.13 (#4187)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-12 15:35:19 +04:00
Anna Antonenko 096c088bf1 vcp, cli: Handle Tx/Rx events before Connect/Disconnect + extra fixes (#4181)
* cli_vcp: handle tx/rx before connext/disconnect

* cli_vcp: disable trace

* cli_perf: advanced error reporting

* cli_vcp: reset tx flag directly in event handler

* fix formatting

* cli_vcp: make tx flag volatile

* storage_settings: fix scene ids

* cli_shell: add safety check to set_prompt

* cli_registry: move from bptree to dict, fix memory leak

* cli_vcp: go back to message queue for event signaling

* loader: move BeforeLoad event even earlier

* fix formatting
2025-04-11 14:53:10 +04:00
MX d1f9921f83 Merge remote-tracking branch 'OFW/porta/cli-event-ordering' into dev 2025-04-08 17:50:48 +03:00
Anna Antonenko c8cf76f75e fix formatting 2025-04-07 23:56:09 +04:00
Anna Antonenko b39912af11 cli_perf: advanced error reporting 2025-04-07 23:30:39 +04: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 c8fc2fa7b3 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-06 01:54:22 +03:00
5dcf6b55ef [FL-3928, FL-3929] CLI commands in fals and threads (#4116)
* feat: FuriThread stdin

* ci: fix f18

* feat: stdio callback context

* feat: FuriPipe

* POTENTIALLY EXPLOSIVE pipe welding

* fix: non-explosive welding

* Revert welding

* docs: furi_pipe

* feat: pipe event loop integration

* update f18 sdk

* f18

* docs: make doxygen happy

* fix: event loop not triggering when pipe attached to stdio

* fix: partial stdout in pipe

* allow simultaneous in and out subscription in event loop

* feat: vcp i/o

* feat: cli ansi stuffs and history

* feat: more line editing

* working but slow cli rewrite

* restore previous speed after 4 days of debugging 🥲

* fix: cli_app_should_stop

* fix: cli and event_loop memory leaks

* style: remove commented out code

* ci: fix pvs warnings

* fix: unit tests, event_loop crash

* ci: fix build

* ci: silence pvs warning

* feat: cli gpio

* ci: fix formatting

* Fix memory leak during event loop unsubscription

* Event better memory leak fix

* feat: cli completions

* Merge remote-tracking branch 'origin/dev' into portasynthinca3/3928-cli-threads

* merge fixups

* temporarily exclude speaker_debug app

* pvs and unit tests fixups

* feat: commands in fals

* move commands out of flash, code cleanup

* ci: fix errors

* fix: run commands in buffer when stopping session

* speedup cli file transfer

* fix f18

* separate cli_shell into modules

* fix pvs warning

* fix qflipper refusing to connect

* remove temp debug logs

* remove erroneous conclusion

* Fix memory leak during event loop unsubscription

* Event better memory leak fix

* unit test for the fix

* improve thread stdio callback signatures

* pipe stdout timeout

* update api symbols

* fix f18, formatting

* fix pvs warnings

* increase stack size, hope to fix unit tests

* cli completions

* more key combos

* commands in fals

* move commands out of flash

* ci: fix errors

* speedup cli file transfer

* merge fixups

* fix f18

* cli: revert flag changes

* cli: fix formatting

* cli, fbt: loopback perf benchmark

* thread, event_loop: subscribing to thread flags

* cli: signal internal events using thread flags, improve performance

* fix f18, formatting

* event_loop: fix crash

* storage_cli: increase write_chunk buffer size again

* cli: explanation for order=0

* thread, event_loop: thread flags callback refactor

* cli: increase stack size

* cli: rename cli_app_should_stop -> cli_is_pipe_broken_or_is_etx_next_char

* cli: use plain array instead of mlib for history

* cli: prepend file name to static fns

* cli: fix formatting

* cli_shell: increase stack size

* cli_shell: give up pipe to command thread

* fix formatting

* fix: format

* fix merge

* fix. merge.

* cli_shell: fix detach ordering

* desktop: record_cli -> record_cli_vcp

* cli: fix spelling, reload/remove ext cmds on card mount/unmount

* cli: fix race conditions and formatting

* scripts: wait for CTS to go high before starting flipper

* scripts: better race condition fix

* REVERT THIS: test script race condition fix

* Revert "REVERT THIS: test script race condition fix"

This reverts commit 3b028d29b07212755872c5706c8c6a58be551636.

* REVERT THIS: test script fix

* scripts: sleep?

* cli: updated oplist for CliCommandTree

* Revert "REVERT THIS: test script fix"

This reverts commit e9846318549ce092ef422ff97522ba51916163be.

* cli: mention memory leak in FL ticket

---------

Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-04-03 21:39:53 +04:00
13333edd30 [FL-3954, FL-3955] New CLI architecture (#4111)
* feat: FuriThread stdin

* ci: fix f18

* feat: stdio callback context

* feat: FuriPipe

* POTENTIALLY EXPLOSIVE pipe welding

* fix: non-explosive welding

* Revert welding

* docs: furi_pipe

* feat: pipe event loop integration

* update f18 sdk

* f18

* docs: make doxygen happy

* fix: event loop not triggering when pipe attached to stdio

* fix: partial stdout in pipe

* allow simultaneous in and out subscription in event loop

* feat: vcp i/o

* feat: cli ansi stuffs and history

* feat: more line editing

* working but slow cli rewrite

* restore previous speed after 4 days of debugging 🥲

* fix: cli_app_should_stop

* fix: cli and event_loop memory leaks

* style: remove commented out code

* ci: fix pvs warnings

* fix: unit tests, event_loop crash

* ci: fix build

* ci: silence pvs warning

* feat: cli gpio

* ci: fix formatting

* Fix memory leak during event loop unsubscription

* Event better memory leak fix

* feat: cli completions

* Merge remote-tracking branch 'origin/dev' into portasynthinca3/3928-cli-threads

* merge fixups

* temporarily exclude speaker_debug app

* pvs and unit tests fixups

* feat: commands in fals

* move commands out of flash, code cleanup

* ci: fix errors

* fix: run commands in buffer when stopping session

* speedup cli file transfer

* fix f18

* separate cli_shell into modules

* fix pvs warning

* fix qflipper refusing to connect

* remove temp debug logs

* remove erroneous conclusion

* Fix memory leak during event loop unsubscription

* Event better memory leak fix

* unit test for the fix

* improve thread stdio callback signatures

* pipe stdout timeout

* update api symbols

* fix f18, formatting

* fix pvs warnings

* increase stack size, hope to fix unit tests

* cli: revert flag changes

* cli: fix formatting

* cli, fbt: loopback perf benchmark

* thread, event_loop: subscribing to thread flags

* cli: signal internal events using thread flags, improve performance

* fix f18, formatting

* event_loop: fix crash

* storage_cli: increase write_chunk buffer size again

* cli: explanation for order=0

* thread, event_loop: thread flags callback refactor

* cli: increase stack size

* cli: rename cli_app_should_stop -> cli_is_pipe_broken_or_is_etx_next_char

* cli: use plain array instead of mlib for history

* cli: prepend file name to static fns

* cli: fix formatting

* cli_shell: increase stack size

* cli: fix rpc lockup

* cli: better lockup fix

* cli: fix f18

* fix merge

---------

Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: あく <alleteam@gmail.com>
2025-04-02 22:10:10 +04:00
MX 48ef579ee6 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-31 22:04:08 +03:00
hedger 5fcaef25b0 Stricter constness for const data (#4126)
* libs: stricter constness for saving RAM with .rodata section; fbt: sdk: fixed signature generation for nested const params

* hal: additional fixes for constness in USB subsystem

* debug apps: additional usb-related fixes

* mjs: more consts for token parser

* fatfs: const driver struct

* hal: more consts for ble & nfc vars

* hal: made FuriHalSpiBusHandle static

* hal: made FuriHalI2cBusHandle static

* usb: restored previous api

* linter fixes

* API fixes
2025-03-31 19:23:32 +04:00
Evgeny E bcbf78a45d github: support bound and symlinked devices (#4163)
* Fix unaccessible flipper for binded access points

workaround to work with symlinked devices

* Fix return None if Flipper not started

* exception handling

* decreased timeouts

* Check environment variables for flipper path
2025-03-31 17:20:25 +04:00
MX ed1f4000e6 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-15 03:11:19 +03:00
Evgeny E 9a8dcc340f fix: flipper detected before it was rebooted (#4146) 2025-03-12 13:25:37 +00:00
MX b38d239eb8 Merge remote-tracking branch 'OFW/hedger/more-constness' into dev [ci skip] 2025-02-24 21:18:11 +03:00
hedger b0835220ac libs: stricter constness for saving RAM with .rodata section; fbt: sdk: fixed signature generation for nested const params 2025-02-22 16:05:56 +00:00
MX aef8a97ab4 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-20 18:40:54 +03:00
AstraandAleksandr Kutuzov 2817666eb9 [FL-3774] Fix 5V on GPIO (#4103)
* Move OTG controls to the power service
* Accessor: add missing power service import
* Power: add is_otg_enabled to info and properly handle OTG enable with VBUS voltage present
* Power: method naming
* Power: add backward compatibility with old-style use of furi_hal_power
* Scripts: lower MIN_GAP_PAGES to 1
* SubGhz: fix incorrect logging tag
* SubGhz: delegate OTG management to power service
* Power: fix condition race, various improvements

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-20 12:37:52 +09:00
MX 486dc48a7a Merge remote-tracking branch 'OFW/dev' into dev 2025-02-20 03:08:53 +03:00
hedgerandあく 93b0277938 vscode: disabled auto-update for clangd since correct version is in the toolchain (#4122)
Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 08:32:20 +09:00
MX 0849aec661 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-18 00:50:48 +03:00
あく 3a42bf812d Furi, USB, BLE, Debug: various bug fixes and improvements (#4114)
* Furi, USB, BLE: extra stack space for some threads, small code cleanup.

* Furi: thread watermark check on exit, explicitly crash if built with LIB_DEBUG=1

* Debug: color logging in apps/furi gdb helper, check and show crash message in gdb console.
2025-02-17 22:16:14 +04:00
MX a3ffdac763 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-10 21:55:03 +03:00
hedgerandあく 490e66b21f ufbt: bumped action version in example github workflow for project template (#4097)
Co-authored-by: あく <alleteam@gmail.com>
2025-02-10 19:44:44 +09:00
MX 9c5341edb1 Merge remote-tracking branch 'OFW/dev' into dev 2024-12-23 15:56:12 +03:00
Sanghee Parkandあく 519b89665f Fix invalid path errors while deploying SDK by enforcing toolchain to use UTF-8 on initial SDK Extraction (#4036)
* Fix invalid path errors for non-Latin characters by enforcing UTF-8 (#4024)
  Due to cryillic alphabet on `/openocd/scripts/target/1986ве1т.cfg`, If the system codepage is handling `WideChar` for cryillic properly, It would cause jumbled characters and fail to decompress via System.IO.Compression.ZipFile without Encoding enforcement. (See https://github.com/flipperdevices/flipperzero-firmware/issues/4024#issuecomment-2545385580)
* Scripts: fix line endings

Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 11:55:58 +09:00
ru-asdxandあく dc73096966 using GITHUB_TOKEN to make API requests in scripts/get_env.py (#4033)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 11:05:19 +09:00
WillyJLandあく 33f1a16094 FBT: Don't lint JS packages (#4030)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 09:52:37 +09:00
MX bd348cf72d Merge remote-tracking branch 'OFW/dev' into dev 2024-12-21 17:37:08 +03:00
Evgeny Eandあく 8dd5e64c03 Move updater and unit tests to dockerized runner (#4028)
* extended unit_tests and changed to dockerized runner
* added branch to run units
* fixing unit-tests-output
* online output
* command not found fix
* added stm logging
* cleaned output
* Updated updater test to work on dockerized runner
* Test run for changed actions
* small refactor of run_unit_tests
* Final test of jobs
* Checked
* On-failure actions runs only on fail
* Set action trigger to pull request
* Bumped timeout a little
* Removed extra steps
* Removed stm monitor, as it's now part of docker-runner
* fix: testops without stm_monitoring
* fix: timeout extended


Co-authored-by: あく <alleteam@gmail.com>
2024-12-20 02:52:37 +09: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 d91e390690 Merge remote-tracking branch 'OFW/dev' into dev 2024-10-02 23:18:30 +03:00
jay candelandあく 3c93761d1d [IR] universal remote additions (#3922)
* multiple new additions
  Hisense K321UW, Soniq E55V13A, Soniq E32W13B and 2 others
* updated with proper names
  Viano STV65UHD4K
  Hisense K321UW
  Hisense EN2B27
  Soniq E55V13A
  Soniq E32W13B
* format tv.ir
* Update tv.ir
* new universal ac additions
  Maytag M6X06F2A
  Panasonic CS-E9HKR
* new universal audio additions
  Sony MHC_GSX75
  Elac EA101EQ-G
  Philips FW750C
  Pioneer VSX-D1-S
* remove final # audio.ir
* Scripts: update deprecated methods use in python scripts
* Scripts: add comment reading support to fff, preserve comments in infrared cleanup script
* Scripts: improved infrared files cleanup script
* Scripts: add missing new line at the end of file in infrared file cleanup script
* Infrared: cleanup universal remotes

Co-authored-by: あく <alleteam@gmail.com>
2024-10-02 17:28:24 +01:00
MX e407c623e0 Revert "Merge remote-tracking branch 'OFW/portasynthinca3/3332-autolock-fixes' into dev"
This reverts commit ba4c4e528a, reversing
changes made to 16e4b9219a.
2024-09-26 21:58:50 +03:00
MX ba4c4e528a Merge remote-tracking branch 'OFW/portasynthinca3/3332-autolock-fixes' into dev 2024-09-21 03:54:08 +03:00
Anna Antonenko 4a8202514d style: fix linter errors 2024-09-16 19:29:55 +03:00
Anna Antonenko 15b271bd92 fix: cli autolock inhibit 2024-09-16 16:27:24 +03:00
MX 56530ee61c Merge remote-tracking branch 'OFW/dev' into dev 2024-09-05 22:10:41 +03:00