1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 04:34:43 +04:00

Compare commits

...

695 Commits

Author SHA1 Message Date
MX
5c539d2346 upd changelog 2025-12-11 00:40:37 +03:00
MX
3bfeea9962 fmt [ci skip] 2025-12-11 00:36:11 +03:00
MX
0a7eb30a15 nfc mf classic upgrades
by noproto
2025-12-11 00:24:50 +03:00
MX
caad1ef268 finish subghz fixes 2025-12-10 23:56:22 +03:00
MX
d10a601109 grand finale? 2025-12-10 03:05:16 +03:00
MX
32a182c439 fix some oops
thx WillyJL
2025-12-10 01:09:34 +03:00
MX
1f676cffea text fixes 2025-12-08 20:16:08 +03:00
MX
a28b2477f9 simplify counter logic and apply more fixes
by @Dmitry422
2025-12-08 12:25:00 +03:00
MX
c08cb33a76 move ofex out of range and fix counter editor
scene fixes by @Dmitry422
2025-12-06 22:59:48 +03:00
MX
59ac0f211c upd changelog 2025-12-03 22:53:01 +03:00
MX
c8e756a3c5 enable winter anims 2025-12-03 22:52:09 +03:00
MX
13b79f0246 upd changelog 2025-12-03 22:50:43 +03:00
MX
05925868d2 upd subremote 2025-12-03 19:59:03 +03:00
MX
e2e839fb2c fmt 2025-12-01 07:04:38 +03:00
MX
0b7c9e2eab update changelog [ci skip] 2025-12-01 06:46:13 +03:00
MMX
6f69f39fa1 Merge pull request #933 from Dmitry422/dev
Subghz signal Counter edit option
2025-12-01 06:43:03 +03:00
MMX
ab593a7a8f Merge pull request #931 from koterba/patch-1
Fix typo in README warning about scammers
2025-12-01 06:42:52 +03:00
MX
7409b51da5 upd changelog [ci skip] 2025-12-01 06:41:00 +03:00
Dmitry422
0f3eb9ae12 Subghz counter edit finished 2025-12-01 10:08:23 +07:00
MX
6abd2b0e9f Add date/time input module
ofw pr 4261 by aaronjamt
2025-12-01 06:06:30 +03:00
MX
a7561bee98 Add Saflok MFUL Parser Support
by aaronjamt
2025-12-01 05:40:27 +03:00
MX
3821c9049e Add MFUL counters to Info page
by aaronjamt
2025-12-01 05:36:10 +03:00
MX
5bd0f642dd ir cli fix
by WillyJL
2025-12-01 05:31:26 +03:00
Dmitry422
b8bec12974 from home to work. one step from the end 2025-11-30 21:57:10 +07:00
Dmitry422
a493612444 From work to home 2025-11-28 20:13:56 +07:00
MX
259efadaea upd changelog 2025-11-25 19:09:11 +03:00
MX
ecbeb658e1 Merge remote-tracking branch 'OFW/dev' into dev 2025-11-25 19:08:15 +03:00
RebornedBrain
cd79d4f689 Fix Felica standard loading from nfc file (#4311) 2025-11-25 17:58:10 +04:00
Dmitry422
7fd30911fe Start working on subghz counter editor 2025-11-21 16:58:38 +07:00
koterba
52b76e2e2e Fix typo in README warning about scammers 2025-11-11 18:33:32 +00:00
MX
b0c1931caf upd changelog 2025-11-11 15:46:15 +03:00
MMX
1c07f94cdd Merge pull request #930 from Dmitry422/dev
FZ interface for SubGHz Counter Experimental Mode
2025-11-11 15:43:44 +03:00
Dmitry422
0351818b75 Rework by review finished 2025-11-11 11:52:42 +07:00
Dmitry422
b391cfc71d Rework by review 2025-11-11 08:46:32 +07:00
Dmitry422
da3a2834d4 Recover accidentally deleted 2025-11-11 08:15:02 +07:00
Dmitry422
d320c4a46b Recover accidentally deleted 2025-11-11 08:14:08 +07:00
Dmitry422
d1f8ddc033 i dont know WTF 2025-11-10 23:23:34 +07:00
Dmitry422
d13b43f193 Merge branch 'DarkFlippers:dev' into dev 2025-11-10 23:15:51 +07:00
Dmitry422
01cc4cc3da finita la comedia 2025-11-10 23:13:28 +07:00
Dmitry422
7ee266752e Subghz signal settings counter edit in progress..... 2025-11-09 22:01:36 +07:00
Dmitry422
48b9dd2cc8 Hide additional settings under gebug mode (commented, not active) 2025-11-09 21:01:19 +07:00
MX
0530eda8d1 Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-11-08 17:51:07 +03:00
Dmitry422
9d1cee6d4c Subghz special signail_settings interface end of development 2025-11-08 04:52:36 +07:00
Dmitry422
b7d2ab7a0c Subghz special signail_settings interface 2025-11-08 04:51:23 +07:00
Dmitry422
a1c48c82f8 subghz signal settings gui (read from file and parse) 2025-11-08 01:30:07 +07:00
Mykhailo Shevchuk
7518dc73c2 Returning fix for reading PWD locked MFUL (#4295)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 23:54:50 +04:00
Nathan N
f4c92dcd76 Fix MIFARE Plus SL1 sector overrun issue in state machine (#4288)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 23:34:21 +04:00
Nathan N
c873eb5e36 Fix Ultralight EV1 regression (#4287)
* Fix EV1 regression introduced in e7634d7

* ./fbt format

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-11-06 23:05:16 +04:00
Zinong Li
a42e30f394 NFC FeliCa Minor Fix: FelicaPollerEventType should only be Incomplete if the tag is FeliCa Lite (#4279)
* poller read is only incomp if in Lite workflow

* another small fix for the "255/28 pages read" bug

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 22:45:52 +04:00
Zinong Li
6d93a90a0a NFC lib: Expose nfc_common.h (#4283)
* expose nfc_common.h

* Update api_symbols.csv

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 22:37:33 +04:00
Zinong Li
6c83a67173 NFC FeliCa Improvement: Dump All Systems (#4293)
* polling system code done

* select service done

* select system fixes. works fine now

* clean up select sys by idx

* reading, saving, loading done. render wrong

* render first layer works

* render fixed

* fix Lite Render triage

* regression Lite rendering

* sync API with 1.40 release

* clean up and lint

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 22:30:02 +04:00
MX
22ee3bdae2 Merge remote-tracking branch 'OFW/dev' into dev 2025-11-06 20:29:16 +03:00
hedger
b54d63037b lib: infrared: fixed doxygen declarations to match implementation (#4305) 2025-11-06 20:40:18 +04:00
MMX
6a5ae6cc0d Infrared Universal remote DBs unit test & move infrared_signal / infrared_brute_force into lib (#4284)
* make infrared db unit tests

* fix the tests, no assets are in asset folder oh no

* fix formate

* ship ir app along with unit_test pkg

* libify ir signal and bruteforce parts

* small cleanup

* api: removed infrared methods (you can link with the lib if needed), unit_tests, infrared: adjusted to link with ir lib; api: added `__aeabi_f2d`

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-11-06 20:23:59 +04:00
an5t
67b906e6ba github: fail submit_sdk on catalog api error (#4294)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 19:31:17 +04:00
Alexey Zakharov
772c944163 Devboard docs update (#4301)
Wi-Fi devboard pinout added, updated devboard hardware image, fixed the schematics link, and corrected typos.

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-11-06 17:21:44 +04:00
Dmitry422
7f7d1e1d32 Signal settings gui 2025-11-06 17:42:55 +07:00
Dmitry422
4f5ab0b15b Start working with SubGhz_signal_settings menu 2025-11-05 23:15:08 +07:00
MX
f177c0491d subghz counter freeze mode 2025-11-04 19:28:30 +03:00
MX
c87205fe9a upd changelog and readme 2025-11-04 16:12:19 +03:00
MX
79fc832356 subghz implement countermodes 2025-11-04 15:36:34 +03:00
MX
944c5ffb98 anmotors at4 C button 2025-11-02 22:13:16 +03:00
MX
ed2c40de4b to bool 2025-10-31 12:28:08 +03:00
MX
e392bff808 fmt and upd changelog 2025-10-31 12:12:07 +03:00
MMX
c37c5574ba Merge pull request #928 from Dmitry422/dev
Remove display_back_light bug from "DisplayBacklightEnforceOn"
2025-10-31 12:05:11 +03:00
Dmitry422
5db6a03811 Remove display_back_light bug from "DisplayBacklightEnforceOn" 2025-10-30 16:52:25 +07:00
MX
a553bc2f57 add extra check 2025-10-21 04:22:09 +03:00
MX
3e96806962 honeywell read old files with 62-63bits
change them on the fly to new format during reading, files are not replaced, they will contain old format, you can fix them manually by replacing header to FF FE and bits to 64
2025-10-21 04:12:22 +03:00
MX
cf5761860f upd changelog 2025-10-21 01:48:02 +03:00
MX
01c168e351 subghz il100 smart add manually support 2025-10-21 01:44:30 +03:00
MX
a1c8dfb61b subghz overflow experimental mode 2025-10-21 01:32:02 +03:00
MX
bd02e2f53c honeywell fix uint8 array using uint16 values, fix header, fix bits 2025-10-17 19:19:49 +03:00
MX
94076e6c5c honeywell show whole key and loop states instead 2025-10-17 14:05:25 +03:00
MX
d673fd5573 return honeywellsec with some fixes 2025-10-16 10:15:26 +03:00
MX
9506ccde2e upd changelog 2025-10-13 22:56:32 +03:00
MX
dbc5895b30 upd anims 2025-10-13 22:26:31 +03:00
MX
b03316d89d add support for top44rbn remotes 2025-10-13 01:32:43 +03:00
MX
d465877919 upd changelog 2025-10-12 23:36:50 +03:00
MMX
7bbe85c7cd Merge pull request #923 from DarkFlippers/feature/ul-c-keys-to-dictionary
Added UL-C keys to the dictionary
2025-10-12 23:34:12 +03:00
MMX
806143bf29 Merge pull request #922 from DarkFlippers/bug/fix-ul-read-again
Returning fix for reading PWD locked MFUL
2025-10-12 23:34:01 +03:00
Mykhailo Shevchuk
b3a5e2c282 Added UL-C keys to the dictionary 2025-10-12 23:09:14 +03:00
Mykhailo Shevchuk
5a933f13ad Returning fix for reading PWD locked MFUL 2025-10-12 22:53:25 +03:00
MX
c6f26c696c upd changelog 2025-10-12 21:55:06 +03:00
MX
90f446880a Add MIFARE Classic "Show Keys" UI
by aaronjamt
2025-10-12 21:54:34 +03:00
MX
b604c93eb0 fix merge artifact 2025-10-12 21:51:25 +03:00
MX
2efcc8f6cc fmt 2025-10-12 03:58:30 +03:00
MX
eb2bdf7ac2 upd changelog 2025-10-12 03:57:40 +03:00
MMX
3eac28ed05 Merge pull request #921 from hryamzik/ptt-zoom-custom
HID PTT: adding global zoom and google meet shortcuts for MacOS
2025-10-12 03:56:34 +03:00
MX
d8924c02ad upd changelog 2025-10-12 03:54:01 +03:00
MX
eed1d3367a ofw pr 4293 NFC FeliCa Improvement: Dump All Systems
by zinongli
2025-10-12 03:39:38 +03:00
MX
fc34205f97 ofw pr 4285 ViewStack: Store View by value to save memory
by CookiePLMonster
2025-10-12 03:34:40 +03:00
MX
de35de4e58 ofw pr 4290 Storage: Dont send mount event if SD mounted at boot
by WillyJL
2025-10-12 03:30:31 +03:00
MX
b9feece2c2 ofw pr 4283 NFC lib: Expose nfc_common.h
by zinongli
2025-10-12 03:28:58 +03:00
Roman Belyakovsky
df035ad51c HID PTT: adding global meet shortcuts for macos 2025-10-11 15:50:05 +03:00
Roman Belyakovsky
4d2a08cc11 HID PTT: adding global zoom shortcuts for macos 2025-10-11 11:27:31 +03:00
MX
57dff2aced Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-10-09 21:00:03 +03:00
RebornedBrain
468cc45f90 Fix wrbl command tooltip (#4291)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-10-08 17:26:48 +04:00
WillyJL
8ae710edec VSCode: Reduce file watcher resource usage (#4292) 2025-10-08 15:13:36 +04:00
MX
fe31d0cc12 upd changelog
add fix by noproto
2025-10-06 20:31:39 +03:00
MX
d79539c75c upd changelog 2025-10-01 19:48:57 +03:00
MX
40f7c007d9 Merge remote-tracking branch 'OFW/dev' into dev 2025-10-01 19:37:50 +03:00
Zinong Li
85b6b2b896 NFC FeliCa: Service Directory Traverse + Dump All Unencrypted-Readable Services' Blocks (#4254)
* SimpleArray attached to FelicaData

* tx rx done. response parsing done (in log)

* dynamic vector as buffer. rendering begin

* On screen render for directory tree

* flags in render to indicate is_public_readable

* beautify render flags

* format

* offload dynamic vector into individual files

* saving. exposed dir tree writing for double use

* save: additional formatting

* save: clean up and some additional notes

* load done

* delete unnecessary debug log

* Load: safer way to handle backward compatibility

`parsed` being true is only contingent on whether the header (device type, UID, etc) are correctly read. The detailed data can be absent if saved from previous versions.

Side effects:
1. The data format version number must not increment.
2. Newer sections of dumps must be appended in the end of the file.

* format

* handle block reading according to IC type

Old version was aimed for FeliCa Lite dumping, which doesn't apply to FeliCa standard. Thus they need to be diverged in the poller run workflow.

* read block content works. rendering begin

* Render Refactor: dir & dump view from submenu

* Render: show IC type name

* IC parsing function cleanup

* Revert "IC parsing function cleanup"

This reverts commit ee3f7bf125b54b10d238b0aeb657ba15f27f93ba.

* Load: Standard dump. Fully backward compatible

* format

* sync API version

* format saved file

* delete unused variable

* clean ups

* IC type addition

* correction

* beautify attribute parsing

* correction

* Lite save: delete extra line

* correction: FeliCa link in Lite-S mode

* format

* Save: simplify printing

* update IC type parsing

* conform to api standard: const resp ptr to ptr

also slightly faster and more readable block dump loop

* disambiguate workflow type vs ic type

It was too confusing to have the ic name string telling you one thing and ic_type enum saying the other. Might as well use better naming to indicate the use case for the two things

* beautify on device render

* reject dynamic_vector, embrace m-array

* lint

* use full variable name

* partial fix: poller context's data proper init

* edit unit test dump IC code

and a small bug fix for the Lite auth workflow

* unit test felica dump PMm correction

* Fixes for static analysis warnings

---------

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-10-01 18:54:08 +04:00
MX
05c64d2b1f Merge remote-tracking branch 'OFW/dev' into dev 2025-10-01 17:20:46 +03:00
MMX
fad487df0e SubGHz: Added 9 new protocols, fixes to existing protocols (#4255)
* Fix Typos

* Tune decoders

* Better parsing, show more data in existing protocols

* Add new protocols

* Update keeloqs

* Add unit tests & raws

* Add honeywell unittest

* Comment until better solution is found

Adding GAPs to be sent first to make signal better suitable for decoder (decoding from only one signal sample) does nothing, needs something else
TODO: Fix encoders?

* suppressed missing issue warning

* subghz: re-enabled failing encoder tests

* Fix two?

3 left

* properly do gangqi and marantec for unit test and real use

* fix unit tests now

* fix possible memory leak

* reset decoder step too

* subghz: extra encoder safety; report random signal test results on failure

* unit_tests: subghz: renamed test file for consistency

* subghz: more explicit buffer position resets

* Fix gangqi samples

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-10-01 18:05:50 +04:00
MX
7db92ed1f8 decoders reset step at reset func 2025-10-01 03:00:43 +03:00
MX
a5dedec00a ensure correct byte shifts 2025-10-01 02:34:46 +03:00
MX
1f92d793b9 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-30 19:08:21 +03:00
Null
df4bf69818 IR: Add Onn Roku TV control to universal remote (#4201)
* added ONN brand roku TV to ir lib

* pvs: fixed warning

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-30 15:39:58 +04:00
MX
b604514a2b upd readme 2025-09-30 03:30:45 +03:00
MX
fdf532066f upd changelog 2025-09-30 03:03:16 +03:00
MX
5a8a0dff5e if got no luck with seed set it back to zero 2025-09-30 02:54:11 +03:00
MX
a4f5f1e862 add elplast subghz protocol 2025-09-30 02:49:51 +03:00
MX
999afe3f5b post merge fix 2025-09-30 02:16:07 +03:00
MX
3e45fce96d Try to decode BFT 2 buttons remotes on the fly 2025-09-30 02:07:29 +03:00
MX
f4529dc8c1 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-29 23:11:36 +03:00
Ivan Barsukov
1e0f3a606f cli: Buzzer command (#4006)
* Add args_read_float_and_trim function

* Add args_read_duration function

* Add notes_frequency_from_name function

* Add cli_sleep function and sleep CLI command

* Update CLI top command to use cli_sleep

* Add buzzer CLI command

* toolbox: make args_read_duration less convoluted

* notification: make notification_messages_notes_frequency_from_name less convoluted

* unit_tests: better float checking

* fix formatting and f18

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-29 21:53:10 +04:00
Leptopt1los
f78a8328d1 tm01x dallas write support (#4230)
Co-authored-by: hedger <hedger@nanode.su>
2025-09-29 21:13:33 +04:00
Nathan N
e7634d7563 NFC: Ultralight C App Key Management, Dictionary Attack (#4271)
* Upstream Ultralight C dictionary attack (squashed)

* linter: formatting

* unit_tests: nfc: split nfc data to named var

* Fix mf_ultralight_poller_sync_read_card

* linter: suppressed warnings on TODOs

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-29 21:05:06 +04:00
MX
958cc79596 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-29 16:33:57 +03:00
RebornedBrain
eea53491de [FL-3569] NFC CLI commands (#4158)
* 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

* Now cli_shell can be customized with another motd and another command set

* Added custom motd callback definition

* Now user can alloc and free his own cli command set

* cli_vcp can now restart shell with another command set

* Help command modified to show available commands from different command sets

* Api adjustement

* Reworked nfc_cli to start new shell with another command set

* Revert custom shell changes from vcp

* Custom motd callback moved to cli_shell

* Cli Shell now can be started from ongoing cli command

* Help command moved to a separate function so it can be used for custom shell

* Now nfc command spawns separate shell for further nfc commands

* cli_shell: give up pipe to command thread

* fix formatting

* cli_shell: separate into toolbox

* speaker_debug: fix

* fix: format

* Merge branch 'portasynthinca3/3928-3929-cli-fals-threads' into portasynthinca3/3965-cli_shell-toolbox

* fix merge

* fix. merge.

* fix formatting

* fix: cmd flags

* fix: formatting

* Added basic command descriptor structs and macros

* Basic nfc commands definitions added

* Nfc cli commands collection and functions added

* Raw skeleton of nfc cli processor added

* cli: increase default stack depth

* New callbacks for ctx alloc / free added

* nfc_cli moved to cli folder

* Some more logic for command processor

* Scanner command no works via command_processor

* plugin manifest adj

* Argument descriptors were removed, now only keys left

* Some helper command function implemented

* Command processor logic now mostly works

* Added all parsers and dummy implementation of raw cmd

* Now processor checks duplicated keys and treat them as errors

* Some renamings

* Arguments processing moved to separate function

* Now command processor can reuse context of previuos command for the next one if it's allowed

* can_reuse callback added for checking if context can be reused

* command processor is now freed on nfc cli exit

* Some cleanups

* First working version of raw command

* Now input data are placed directly to bit buffer

* Added tag

* Introduced request/response structs

* Moved raw command to a separate folder

* Moved some common types to header

* Added protocol specific handlers for iso14a and felica

* Opened felica crc header for referencing

* Added handler for iso14443_3b

* Opened iso15693_3_poller for referencing

* Added iso15693_3 handler for raw command

* NfcCliRawError enum introduced for response result

* Refactored handlers implementation

* Formatting functions now added as helpers

* New printing result logic

* Not present error value added to enum

* Timeout added to raw command

* Command processor now supports multivalue keys

* Apdu command implementation added

* NfcScanner moved to helpers and command now uses it

* Helper now can format protocol names

* Dump command added

* Added some more functions to scanner helper

* Dump main logic simplified

* Dump handlers moved to protocols folder

* Protocol parser added to simplify searching protocol by name

* Protocol and key arguments added to dump command

* Cleanups

* Apdu now parses protocol using helper parser

* Raw now parses protocol using helper parser

* Wrong naming fix

* Emulate command added to cli

* Description added to action descriptor and command macros

* Description field added to all commands

* Removed unnecessary enum for commands

* Added functions for formatting command and action info

* Proper error messages and help added

* Fix for unsupported single action command

* Function renamed to more appropriate

* Field command moved to all other commands

* Cleanups

* Nfc commands modified with new cli shell

* Removed previous nfc_cli.c after merge

* Removed nfc_cli.h header

* Some renamings and cleanups

* Some comments and instructions added

* Some comments and instructions added

* TODOs removed

* Fix for missing parse callback

* Added not implemented dummy for mfu actions, for now

* Fix name mismatch

* Remove unneeded header

* Mfu command moved to separate folder, also raw info action logic added

* Dictionary with id/vendors added to assets. It is used by nfc_cli_mfu_info_get_vendor function

* One more unneeded header removed

* Moved mfu info action to a separate file

* Info action now uses sync mfu poller

* mfu rdbl action added

* wrbl action added for mfu command

* Some formatting for rdbl command

* Function for formatting mfu errors added

* All mfu actions now show errors in the same way

* Fix error with sync poller. Previously when read failed function returned ErrorNone, now it processes iso14a error to get proper value

* Make PVS happy

* Nfc cli now doesn't start if desktop app is running

* Make action description look more common

* Scanner now has -t key and can show detected protocol hierarchies

* Apdu now checks max input payload data

* Proper format

* Proper error handling added to dump command

* Timeout key added dump command

* Fix merge issue

* formatting

* Pragma pack replaced with FURI_PACKED

* Fix felica memory leak

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-29 14:34:49 +04:00
MX
a357dfd1ad upd changelog 2025-09-28 04:50:50 +03:00
MX
1e431422e7 smol fixes [ci skip] 2025-09-28 02:11:06 +03:00
MX
2dd6b5cdce format [ci skip] 2025-09-28 01:57:13 +03:00
MX
372681553a remove honeywellsec for now [ci skip]
TODO: make proper decoder, current works very unstable, same goes for encoder, current doesnt act as original signal, having no "gap" between packets
2025-09-28 01:55:45 +03:00
MX
46c335ad25 upd nfc OFW PR 4271 [ci skip] 2025-09-28 01:53:21 +03:00
MX
0c1c54c949 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-25 23:42:49 +03:00
Axum
2ef556d456 Update demo_windows.txt (#4211)
Fix for newer version of ai enabled Windows Notepad not able to keep up with default fast input text.

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-25 22:05:29 +04:00
Zinong Li
8c0c7f1bb9 LFRFID: Show ISO-3166 Country Names For Pet Chips (#4091)
* Country list header and printf

* off load country list to asset

* lint

* Field specific getters

* check string length before cutting

* lfrfid: minor iso3166 cleanup

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-25 21:22:56 +04:00
MX
2988897a4b Merge remote-tracking branch 'OFW/dev' into dev 2025-09-25 20:18:30 +03:00
WillyJL
013c5ffa52 BadUSB: Fix case sensitive key combos, fix modifiers in HOLD/RELEASE (#4216)
* BadUSB: Fix key combos main keys being case sensitive

* BadUSB: Fix modifier keys with HOLD/RELEASE commands

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-25 18:34:06 +04:00
Aerosnail
d17fd8ed7f SubGhz: fix TIM17 config not applied immediately (#4205)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-25 16:15:43 +04:00
MX
93b4ad4595 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-24 22:32:16 +03:00
Anna Antonenko
d0360625d6 [FL-3925] JS views finished (#4155)
* js: value destructuring and tests

* js: temporary fix to see size impact

* js_val: reduce code size 1

* i may be stupid.

* test: js_value args

* Revert "js: temporary fix to see size impact"

This reverts commit f51d726dbafc4300d3552020de1c3b8f9ecd3ac1.

* pvs: silence warnings

* style: formatting

* pvs: silence warnings?

* pvs: silence warnings??

* js_value: redesign declaration types for less code

* js: temporary fix to see size impact

* style: formatting

* pvs: fix helpful warnings

* js_value: reduce .rodata size

* pvs: fix helpful warning

* js_value: reduce code size 1

* fix build error

* style: format

* Revert "js: temporary fix to see size impact"

This reverts commit d6a46f01794132e882e03fd273dec24386a4f8ba.

* style: format

* js: move to new arg parser

* style: format

* feat: all js views done

* js, toolbox: generalize string owning

* toolbox: silence pvs warning

---------

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 23:24:28 +04:00
hedger
0d5beedb01 BLE: improved pairing security (#4240)
* ble: use unique root security keys for new pairings after pairing reset; added migrations for existing pairing data; unit_tests: added migration tests

* bt: lower logging level

* hal: bt: updated doxygen strings

* hal: ble: Added checks for root_keys ptr

* service: ble: bt_keys_storage minor cleanup
2025-09-24 22:36:45 +04:00
MMX
30077dd512 Fix PVS warnings (#4277)
* Fixing PVS warns

* pvs: additional fixes

---------

Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 21:00:39 +04:00
MX
2ae03e7d51 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-24 18:55:40 +03:00
Alexander Bays
5c54be4d9c Infrared: Add text scroll to remote buttons (#4210)
* Infrared: Add text scroll to universal remote buttons

Replaces center aligned text in the infrared universal remote with scrollable text if wider than the button and is cut off. Allows long descriptive button functions to be seen in some remotes.

* linter fixes

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 19:45:40 +04:00
minchogaydarov
973fb26f57 Add Daikin FTXN25LV1B9 and Toyotomi KTN22-12R32 (#4232)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 19:23:01 +04:00
Zinong Li
f0d4210d19 NFC: Amusement IC Card Parser (FeliCa Lite & Lite-S) (#4259)
* type/brand parse

* debug

* decryptions

* corrections

* comments

* AIC access code decryption and CRC check

* easier than we thought! only acc_code[0] == 5 needs parsing

* finishing touches

* can't support serial number decode

* Revert "can't support serial number decode"

This reverts commit 7761b31bcf7effb97e608578ab1e090625078784.

* serial number CAN be decrypted

* format

* print fix

* fix CRC check

* delete unnecessary line

* linter fixes

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 19:14:43 +04:00
MX
905b5726ad Merge remote-tracking branch 'OFW/dev' into dev 2025-09-24 17:58:32 +03:00
LordMZTE
7483069d10 hid_app mouse clicker: make mouse button selectable (#4270)
* hid_app mouse clicker: make mouse button selectable

* hid_app: fixed uninit var warning

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 18:52:06 +04:00
MMX
7554b32538 SubGHz: Linear and Dickert MAHS protocols fixes & improvements (#4267)
* Linear and dickert mahs fixes

* fix dip pattern

* proper fix

by WillyJL

* Fix unit tests

Linear Decoder now decodes more linear signals

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 14:45:03 +04:00
Anna Antonenko
6a49131ae9 js_gpio: stop pwm on exit (#4206)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 14:34:28 +04:00
WillyJL
7f0e8f39d3 FuriHalSerial: Fix RXFNE interrupt hang (#4246)
* Expansion: Wake thread on UART error flag

* Expansion: Stop UART async rx early

* FuriHalSerial: Fix RXFNE interrupt hang

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 14:24:09 +04:00
dogtopus
dfd753703a FeliCa Emulation: Handle certain Polling commands in firmware (#4204)
* FeliCa: Handle non-hardware Polling commands

NFC TagInfo and possibly other readers rely on Polling commands with Request Code of 1 (default System Code request) or non-FFFF System Code to detect card type. Since the NFC controller doesn't seem to handle them in hardware and simply bubbles them up, and then the Flipper firmware will just ignore them and refuse to respond afterwards, this causes the reading operation to fail.

This commit adds a simple handler for such Polling commands so that readers behaving like NFC TagInfo could read the emulated card without failing.

* Only handle cases when System Code is not FFFF

The NFC controller should handle Polling commands with the System Code set to FFFF, so it's not necessary for the firmware to handle it.

* Remove system code logging

* More cleanups

* Remove the claim that we need a poller change

We already have enough information to determine whether or not the card supports NDEF since SYS_OP register value is included in all current Lite-S card dumps.

* Respond to 12FC polling command when needed

* Handle Polling with NDEF and Lite-S Service Code

This allows the reader to specifically select the service by naming the Service Code.

* Introduce API for manual handling of Polling commands

Introduce nfc_felica_listener_timer_anticol_start() and nfc_felica_listener_timer_anticol_stop(). These are for now just wrappers around the block_tx timer that can be used to delay the response until the desired Time Slot. Thanks to the loose timing constraints of FeliCa collision resolution protocol, no compensation seems to be necessary. Also enabled the block_tx timer for FeliCa listener, but with both compensation and fdt set to 0 to keep the original behavior of not using the timer during normal data exchange.

This API is now being used for handling Polling commands that are not handled by the NFC controller on the hardware side.

* Document target_time_slot

* Implement changes suggested by @RebornedBrain

* api: f18 version sync

* nfc: added stubs for `nfc_felica_listener_timer_anticol` for unit tests

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 14:08:40 +04:00
WillyJL
ad94694fbd CLI: Fix long delay with quick connect/disconnect (#4251)
* CLI: Fix long delay with quick connect/disconnect

noticeable with qflipper, for some reason it sets DTR on/off/on again
so flipper starts CLI, stops it, then starts again
but cli shell is trying to print motd, and pipe is already broken
so each character of motd times out for 100ms
changing pipe timeout to 10ms works too, but is just a workaround

it didnt always happen, i think that variable time of loading ext cmds
made it so on ofw it usually manages to print motd before pipe is broken
on cfw with more ext commands it always hung, on ofw only sometimes

important part is bailing early in cli shell
in cli vcp i made it cleanup cli shell on disconnect so it doesnt stay
around after disconnecting usb, might free a little ram maybe

* cli_shell: possibly more robust fix?

* Fix use after free crash

* cli_shell: waste even less time

Co-Authored-By: WillyJL <me@willyjl.dev>

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 13:19:18 +04:00
MX
bea8d41c8b Merge remote-tracking branch 'OFW/dev' into dev 2025-09-24 01:38:43 +03:00
WillyJL
8bd66c9920 JS: Expose button event type in gui/widget button callback (#4252)
* JS: Expose button event type in gui/widget button callback --nobuild

* js_sdk: bump major version

* unit_tests: fix js test

* js: fix gui widget demo

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-24 02:16:47 +04:00
MX
a0c85ed737 upd changelog 2025-09-24 00:46:35 +03:00
MX
dc8fc9fbe0 Merge remote-tracking branch 'OFW/dev' into dev 2025-09-24 00:45:00 +03:00
MX
d791711b09 Fix FaacSLH 868 add manually crash 2025-09-24 00:44:19 +03:00
Zinong Li
f4138e5999 NFC: MFC 1k Banapass Parser (#4260)
* seems to be working

* faster reading

* clone detection

* linter: fixes

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-24 00:47:22 +04:00
WillyJL
7380eacf0e NFC: Fix read crash with unexpectedly large MFC AUTH(0) response (#4265)
This was noticeable with Chameleon Ultra NTAG emulation

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-23 14:43:45 +01:00
Zinong Li
d19ad60c1a GUI Bug Fix: Number Input Save Icon (#4273)
* Update KeySaveBlockedSelected_24x11.png

* assets: formatted images

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-09-23 14:02:45 +01:00
Amy Grace
5932dbe70a Add an old JVC model to universal remotes (#4274)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-09-22 22:27:59 +04:00
WillyJL
470f6a679d CLI: Fix crash with unexpected plugin files (#4243) 2025-09-22 22:08:29 +04:00
MX
d45048fc5d upd changelog 2025-09-21 16:46:14 +03:00
MX
2c2228a4b9 merge ofw pr 4271
also thanks WillyJL
link to PR
https://github.com/flipperdevices/flipperzero-firmware/pull/4271/files
2025-09-21 16:45:31 +03:00
MX
3efa40b079 upd changelog 2025-09-10 00:10:55 +03:00
MMX
bbb33c1d75 Merge pull request #920 from WillyJL/fix/linear-again-again
Sub-GHz: Actually fix Linear display for real now
2025-09-10 00:09:50 +03:00
MX
55d2348171 fix mfkey [ci skip] 2025-09-09 22:07:40 +03:00
MX
efc608cf32 upd changelog [ci skip] 2025-09-09 18:59:02 +03:00
MX
19bb5cb0d9 upd subghz remote 2025-09-09 17:22:35 +03:00
MX
b07cb9401f subghz raw protocol fixes
by WillyJL
2025-09-09 16:48:08 +03:00
MX
40c6c8b59c format 2025-09-09 15:34:19 +03:00
MX
ffb8eb7cff upd mfkey 2025-09-09 15:31:43 +03:00
WillyJL
d06d3684e5 Sub-GHz: Actually fix Linear display for real now 2025-09-06 04:41:15 +02:00
MX
c091a58486 fix linear again 2025-08-27 03:42:01 +03:00
MX
8e650f0688 upd changelog 2025-08-27 03:11:01 +03:00
MX
5f7aaf2a04 NFC: Fix read crash with unexpectedly large MFC AUTH(0) response
by WillyJL
https://github.com/flipperdevices/flipperzero-firmware/pull/4265/files
2025-08-27 03:09:52 +03:00
MX
db4a613f6c upd changelog 2025-08-27 02:59:00 +03:00
MMX
c2296902e2 Merge pull request #919 from WillyJL/fix/linear-kostyli
Sub-GHz: Only fix Linear inverted bits in user interface, keep old remotes compatible
2025-08-27 02:57:57 +03:00
WillyJL
828a73bbd1 Sub-GHz: Only fix Linear inverted bits in user interface, keep old remotes compatible 2025-08-26 02:11:36 +02:00
MX
efcaf96d07 upd changelog 2025-08-15 00:55:58 +03:00
MX
f2bfed6bbc Avoid false positives for dickert mahs 2025-08-15 00:40:01 +03:00
MX
eb9b84e0c0 Linear 10bit EZCode remotes support 2025-08-15 00:28:49 +03:00
MX
c610caea9b upd changelog 2025-08-11 21:31:09 +03:00
MX
40e56bc862 subghz add zkteco support, fbt format 2025-08-11 21:30:22 +03:00
MX
46e7912d94 Fix branch&manifest 2025-08-11 21:16:16 +03:00
MX
e8ce86917a upd changelog 2025-08-11 15:45:18 +03:00
MX
801d6ae71c upd subghz remote 2025-08-11 15:44:28 +03:00
MX
27a572d45c upd changelog 2025-08-01 17:26:48 +03:00
MMX
2124edf914 Merge pull request #914 from MrLego8-9/fix/counter-datasize-geninfo-struct
[SubGHz] [Fix] Use the correct size of the counter values in the GenInfo struct
2025-08-01 17:26:16 +03:00
MX
0acb014719 oops fix merge artifact [ci skip] 2025-08-01 17:25:58 +03:00
Louis D
71eafcdd6c fix: use the datasize of the generation functions in the protocols geninfo struct 2025-08-01 14:47:40 +02:00
MX
7c3e874716 upd changelog 2025-08-01 01:08:40 +03:00
MMX
fbb7a879f7 Merge pull request #911 from MrLego8-9/fix/add-manually-advanced-byte-swap
[SubGHz] [Fix] Restore the original byte order of values in the GenData struct
2025-08-01 01:08:03 +03:00
Louis D
4ecfd63759 fix: restore the original byte order in the GenData struct 2025-07-31 22:39:53 +02:00
MX
2c0b7caf55 Better add manually advanced 2025-07-31 00:26:31 +03:00
MX
9ab4fcb256 fmt 2025-07-30 06:03:25 +03:00
MX
979e428ad8 upd changelog 2025-07-30 06:01:45 +03:00
MMX
e69e8fcdf3 Merge pull request #909 from MrLego8-9/feature/subghz-nice-custom-buttons
[SubGHz] Add variant of 'Add Manually' menu with manual editing for each value
2025-07-30 06:01:15 +03:00
MX
7646902fdc JS: Expose button event type in gui/widget button callback
by WillyJL
2025-07-30 05:04:02 +03:00
MX
610fd68b75 RFID: Add additional procotols supported by EM4305 chipset
by jamisonderek
2025-07-30 04:59:05 +03:00
MX
3aa75341d6 NFC: Fix incorrect Saflok year formula
by Eltrick
2025-07-30 04:39:04 +03:00
MX
c189283329 simplify Bad USB BLE profile
by aaronjamt & WillyJL
2025-07-30 04:37:49 +03:00
MX
59a823cbcd BT Remote: Add Rename Option
by aaronjamt & WillyJL
2025-07-30 04:32:54 +03:00
MX
3b7d837e48 fmt 2025-07-30 04:30:01 +03:00
MX
fb41c6c20c Input Settings: Add Vibro Trigger option
by 956MB & WillyJL
2025-07-30 04:28:22 +03:00
MX
6a2f062234 OFW PR. 4251 CLI: Fix long delay with quick connect/disconnect
by WillyJL
2025-07-30 03:43:36 +03:00
Louis D
115734373b feat: add variation of 'Add Manually' menu with manual value selection for all entries 2025-07-24 14:56:00 +02:00
Louis D
e6cc2852fd WIP: add sub-menu for all manual additions 2025-07-22 19:19:40 +02:00
Louis D
8887cbff88 feat: add option for custom button when creating a new Nice Flor-S or Nice One remote 2025-07-17 00:27:23 +02:00
MX
ac6621cdcb upd changelog 2025-07-16 02:38:19 +03:00
MX
3b29bd6508 Roger decoder allow bigger gap and extend buttons functionality 2025-07-12 03:57:14 +03:00
MX
269cbd66e1 A little better naming for display in v2phox 2025-07-09 08:14:31 +03:00
MX
bddebff134 upd changelog 2025-07-09 08:03:03 +03:00
MX
3c3d06bae0 Roger that 2025-07-09 08:02:05 +03:00
MX
1bed4d29cb Nero Radio static - better parsing 2025-07-09 08:01:36 +03:00
MX
30621b2fd7 Update keeloq keys, motorline add manually support, readme spoiler alert
Add keeloq keys:
by @xMasterX & @RocketGod-git
2025-07-09 05:47:38 +03:00
MX
06b29ddc1b upd changelog 2025-07-09 04:59:01 +03:00
MX
8ef9a07608 Subghz V2 Phoenix fully supported now
With big thanks to all contributors
 2022.08 - @Skorpionm
 2025.07 - @xMasterX & @RocketGod-git
2025-07-09 04:54:34 +03:00
MX
74f6ee1e7c badusb fix modifier keys with HOLD/RELEASE commands
by WillyJL
2025-07-07 17:55:14 +03:00
MX
a547c946ab reduce less popular freqs in default hopper preset, make it faster
also add 303 mhz freq to default list
2025-07-07 04:16:58 +03:00
MX
e025c57425 Update marantec24 protocol info 2025-07-06 18:47:12 +03:00
MX
43b35019ed subghz marantec protocol implement crc verification and add manually
fix crc function, add valid/invalid display (does not affect TX) and use new crc sum in add manually menu
2025-07-06 18:43:34 +03:00
MX
6ae1ce6861 upd api symbols 2025-07-06 01:36:26 +03:00
MX
9517104626 Update doorhan programming instructions
by @li0ard
2025-07-05 19:14:48 +03:00
MX
e003a19edc add 868 46 mhz to default freq list 2025-07-05 17:59:27 +03:00
MX
aad07ed943 expansion and serial fixes and new api
by HaxSam & WillyJL
2025-07-05 17:57:30 +03:00
MX
8f203f47d9 comunello add manually support 2025-07-05 17:48:30 +03:00
MX
1448a70393 upd changelog 2025-06-30 21:00:50 +03:00
MX
03676e90b9 Merge branch 'mergingnfctyp4' into dev [ci skip] 2025-06-30 20:49:32 +03:00
MX
c81c136121 merge all nfc app changes
by WillyJL
2025-06-30 20:39:27 +03:00
MX
fa6839d283 nfc lib 2025-06-30 19:53:45 +03:00
MX
1382a6af46 submenu merge all changes
by WillyJL
2025-06-30 19:48:34 +03:00
MX
91a235b395 upd changelog 2025-06-27 21:22:52 +03:00
MX
5ee3f7c68d fix lfrfid write very strange issue with lcd backlight 2025-06-27 21:17:13 +03:00
MX
9cfa400ff4 upd changelog 2025-06-25 02:57:45 +03:00
MX
1b754c1482 Fix possible frequency analyzer deadlock when holding Ok
by WillyJL
2025-06-25 02:57:05 +03:00
MX
0b53be5cbd Add DEZ10
by realcatgirly

https://github.com/Next-Flip/Momentum-Firmware/pull/418/files
2025-06-25 02:50:18 +03:00
MX
98a4477999 upd changelog 2025-06-11 18:10:38 +03:00
MMX
ab5b155d96 Merge pull request #905 from WillyJL/fix/loader-events
Loader: Fix misplaced ApplicationBeforeLoad events
2025-06-11 18:08:49 +03:00
WillyJL
d0e5dbe63e Power: Arm auto-poweroff when app chaining finished 2025-06-11 04:03:17 +01:00
WillyJL
407e482566 Loader: Fix misplaced ApplicationBeforeLoad events 2025-06-11 04:02:42 +01:00
MX
f1f1a89204 fix links [ci skip] 2025-06-02 00:54:30 +03:00
MX
54c3c67728 upd changelog 2025-05-24 19:58:10 +03:00
MX
3aa3098d47 subghz better ignore lists 2025-05-24 19:49:31 +03:00
MX
4c00313157 upd changelog 2025-05-24 00:03:20 +03:00
MMX
09514ae179 Merge pull request #903 from luu176/dev
Fix clipper date timestamp
2025-05-24 00:01:38 +03:00
MX
5365cfcb04 fix links 2025-05-23 22:57:45 +03:00
Luu
ff8c3540eb Fix clipper date timestamp 2025-05-22 19:12:22 +02:00
MX
92ca0cf1a8 upd changelog 2025-05-22 01:14:40 +03:00
MX
350dea6535 show cnt value in phox 2025-05-22 01:09:33 +03:00
MX
5392c6e3f8 Merge remote-tracking branch 'OFW/dev' into dev 2025-05-21 17:34:44 +03:00
MX
b352342434 rename and extend ignore alarms option in subghz 2025-05-21 17:34:37 +03:00
GameLord2011
d1c3b0bc68 Fixed inverted logic condition in subghz chat cli (#4212) 2025-05-21 01:50:47 +04:00
MX
82c7231c57 upd changelog 2025-05-20 03:04:57 +03:00
MMX
fbed9994fb Merge pull request #900 from Dmitry422/dev
display backlight option "always on" and rgb bug removed
2025-05-20 03:03:45 +03:00
Dmitry422
08205f9ff9 RGB backlight bug removed. 2025-05-19 23:43:40 +07:00
Dmitry422
d399d3d7e5 Merge branch 'dev' of https://github.com/Dmitry422/unleashed-firmware into dev 2025-05-19 00:40:04 +07:00
Dmitry422
ee3e7bc3bf RGB vibro control tune + Display backlight always ON option. 2025-05-19 00:37:28 +07:00
MX
04d66f7162 upd changelog 2025-05-16 17:50:24 +03:00
MX
5471b211d2 Infrared: Add text scroll to remote buttons OFW PR 4210
by 956MB

https://github.com/flipperdevices/flipperzero-firmware/pull/4210/files
2025-05-16 17:48:35 +03:00
MX
fdab87795f upd changelog 2025-05-14 18:37:22 +03:00
MMX
0f713bc6e4 Merge pull request #899 from Leptopt1los/tm01x-dallas-write-support
TM01x Dallas write support
2025-05-14 18:36:02 +03:00
Methodius
e538bd7c8e tm01x dallas write support 2025-05-14 16:32:17 +03:00
MX
069d0435b1 upd changelog 2025-05-14 01:55:55 +03:00
MX
e108405fe4 add 462750000 to default subghz freqs 2025-05-14 01:55:18 +03:00
MX
02bc2f0ce7 upd changelog 2025-05-12 01:06:44 +03:00
MX
78e2adbf5c fix desktop anim switch override by favourites 2025-05-12 01:06:13 +03:00
MX
604141cac3 update changelog 2025-05-11 19:44:29 +03:00
MX
c5d077fc7a various fixes
by WillyJL
2025-05-11 19:38:34 +03:00
MX
d5c6933b35 upd readme [ci skip] 2025-05-09 15:29:10 +03:00
MX
341246038a upd changelog 2025-05-09 15:25:11 +03:00
MX
32d104c591 add il100 smart copy cloner support 2025-05-09 15:24:07 +03:00
MX
ee80ea115d upd changelog 2025-05-06 13:14:15 +03:00
MX
6c798a5d4b fix subghz rename scene bug (or hidden feature) 2025-05-06 13:13:16 +03:00
MX
b16bca1b60 upd changelog 2025-05-06 04:13:09 +03:00
MX
fb02568fab tune holtek to decode holtek only and not conflict with came 12bit 2025-05-06 04:11:46 +03:00
MX
760079ee2c better came decoder 2025-05-06 04:11:01 +03:00
MX
5ca63ff1a4 update came atomo docs 2025-05-06 03:38:34 +03:00
MX
e46c5cb650 upd changelog 2025-05-04 21:11:40 +03:00
MX
70a4731874 Remove stupid "!" that broke subghz chat cli ofw pr4212
by GameLord2011
2025-05-04 21:10:49 +03:00
MX
f87102362b upd changelog 2025-05-03 00:30:02 +03:00
MX
1a4d197e38 log level none after update 2025-05-01 00:17:12 +03:00
MX
c1dbfd351e upd changelog 2025-04-29 18:40:27 +03:00
MMX
0321a56ee7 Merge pull request #898 from mishamyte/feature/ul-c-try-auth-with-default-pass
[NFC]: Ultralight C. Attempt of authentication with default key
2025-04-29 18:37:06 +03:00
MX
79450ff3cb upd changelog 2025-04-29 15:51:35 +03:00
MX
5a0c4e6678 ofw pr 4205 fix sample durations when using external CC1101
https://github.com/flipperdevices/flipperzero-firmware/pull/4205/files

by Aerosnail
2025-04-29 15:49:43 +03:00
Mykhailo Shevchuk
c0e169a229 Attempt to auth with default 3DES key 2025-04-29 02:31:41 +03:00
Mykhailo Shevchuk
ef3d17ea4e Extracted TDES auth to separate method 2025-04-29 00:07:54 +03:00
MX
5bba71e2cb upd changelog 2025-04-28 18:41:52 +03:00
MX
ae2b305701 Merge remote-tracking branch 'OFW/porta/3990-js-pwm-stop' into dev 2025-04-28 18:04:23 +03:00
Anna Antonenko
0c7500399e js_gpio: stop pwm on exit 2025-04-28 14:14:20 +04:00
MX
8cbf9a40a7 upd docs [ci skip] 2025-04-27 11:51:05 +03:00
MX
05e21c7158 upd docs [ci skip] 2025-04-24 21:50:03 +03:00
MX
384cd47b1b upd changelog 2025-04-23 03:16:53 +03:00
MMX
f800a94dd5 Merge pull request #896 from Dmitry422/dev
Code cleanup
2025-04-22 10:43:20 +03:00
Dmitry422
925b95007a Code cleanup 2025-04-22 10:23:05 +07:00
MX
9f2b202b7d fix nightshift settings lock bug 2025-04-22 01:22:02 +03:00
MX
e4e8f18a94 upd changelog 2025-04-21 20:03:02 +03:00
MX
c5d8bdf500 add feron protocol [ci skip] 2025-04-21 19:23:51 +03:00
MX
1935165591 move to the last position 2025-04-19 17:31:16 +03:00
MX
a92400b9b6 upd changelog 2025-04-18 20:45:48 +03:00
MX
2e4a838202 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-18 20:45:06 +03:00
Anna Antonenko
5b911f5405 RC fixes (#4192)
* cli_shell: fix FL-3983

* fix formatting and submodules

* loader: fix FL-3986

* fix submodules

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-18 16:41:13 +04:00
WillyJL
c420cbb1a5 Desktop: Fix freeze on boot if PIN set (#4193) 2025-04-18 05:52:15 +01:00
MX
3fd059a45f upd changelog and docs 2025-04-18 01:06:10 +03:00
MX
1d4db1ee2c unhide rgb from debug 2025-04-18 00:59:24 +03:00
MX
eee082f103 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-17 00:57:05 +03:00
Anna Antonenko
34a3222ec4 [FL-3979] USB-UART bridge fix (#4189)
* cli_vcp: make enable/disable requests synchronous

* usb_uart_bridge: open and close vcp record once
2025-04-16 04:20:31 +01:00
MX
008c5a8828 upd changelog 2025-04-15 04:38:01 +03:00
MX
5f3d510f34 Merge remote-tracking branch 'OFW/porta/3979-usb-uart-vcp-fix' into dev 2025-04-15 03:05:16 +03:00
Anna Antonenko
086a9185fc usb_uart_bridge: open and close vcp record once 2025-04-15 03:45:37 +04:00
Anna Antonenko
63cfa2d684 cli_vcp: make enable/disable requests synchronous 2025-04-15 03:45:16 +04:00
MX
e8e87c66e3 upd changelog 2025-04-14 00:29:39 +03:00
MMX
04c2b17f47 Merge pull request #893 from Dmitry422/dev
LCD Inversion refactoring
2025-04-14 00:24:40 +03:00
MX
8a5129449d fix 2025-04-14 00:24:17 +03:00
Dmitry422
8a0fb5df36 LCD Inversion refactoring 2025-04-13 23:43:43 +07:00
MX
535afc41f3 fix subghz cli 2025-04-13 00:37:20 +03:00
MX
ab26469a05 upd changelog 2025-04-12 20:15:54 +03:00
MMX
1e1f6b079e Merge pull request #891 from mishamyte/feature/pre-populate-default-ul-keys-to-input
Use default UL/UL-C pwd/key as default value for key input
2025-04-12 19:46:31 +03:00
Mykhailo Shevchuk
d542d7d75f Use default UL/UL-C pwd/key as default value for key input 2025-04-12 19:25:45 +03:00
MX
9a57b19bfb Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-04-12 19:08:58 +03:00
WillyJL
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
hedger
ddf77f58e3 sdk: bump API to force re-upload for the catalog (#4186) 2025-04-12 15:27:58 +04:00
WillyJL
868eb10381 SDK: Fix missing RECORD_CLI define (#4185)
* SDK: Fix missing RECORD_CLI define

* sdk: added compatibility `cli.h` header

* cli: updated porting comments

---------

Co-authored-by: hedger <hedger@nanode.su>
2025-04-12 07:21:39 +04:00
MX
a72c5238fa oops 2025-04-12 03:19:57 +03:00
MX
d5935dc814 fmt 2025-04-12 03:11:35 +03:00
MX
75f5d6fec7 force only default mods 2025-04-12 03:11:03 +03:00
MX
455bb8ab1f upd changelog 2025-04-12 03:07:04 +03:00
MX
ad23d77f0e Merge remote-tracking branch 'OFW/dev' into dev 2025-04-12 03:04:17 +03:00
MX
d67734674e ci fix ? 2025-04-12 03:04:04 +03:00
MX
66a7050221 free up some ram for now, use settings user 2025-04-12 03:03:50 +03:00
Anna Antonenko
e1bccf66b3 Fix NULL dereference in CLI completions (#4184)
* cli_completions: fix null dereference

* cli: mark free_blocks as parallel safe

* codeowners: add me to co-owners of cli
2025-04-11 23:38:28 +01:00
MX
638182a5ff Merge remote-tracking branch 'OFW/porta/cli-deref-fix' into dev 2025-04-12 00:59:58 +03:00
Anna Antonenko
936096d2fc cli_completions: fix null dereference 2025-04-12 01:58:28 +04:00
MX
fe5ed640af Merge remote-tracking branch 'OFW/dev' into dev 2025-04-11 14:34:48 +03: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
837abd7d51 upd changelog 2025-04-11 03:00:03 +03:00
MX
025fd03a5a Merge remote-tracking branch 'OFW/porta/cli-event-ordering' into dev 2025-04-11 02:59:00 +03:00
Anna Antonenko
1b5a2496f5 fix formatting 2025-04-11 03:23:38 +04:00
Anna Antonenko
3c25c29dec loader: move BeforeLoad event even earlier 2025-04-11 03:21:53 +04:00
MX
98728fe93c fix api to ofw 2025-04-10 21:03:59 +03:00
MX
b4450946a4 upd changelog 2025-04-10 20:01:08 +03:00
MMX
37eae30f06 Merge pull request #890 from Dmitry422/dev
Moving RGB backlight back to Notification service
2025-04-10 19:59:43 +03:00
MX
1135cce5c5 Merge remote-tracking branch 'OFW/porta/cli-event-ordering' into dev 2025-04-10 19:56:39 +03:00
Dmitry422
3c18097025 Moving RGB backlight back to Notification service finished. 2025-04-10 23:44:57 +07:00
Anna Antonenko
c88eaffa66 cli_vcp: go back to message queue for event signaling 2025-04-10 17:52:19 +04:00
Dmitry422
5eacafa16d Start moving RGB backlight back to Notification service 2025-04-10 18:01:47 +07:00
MX
1b8e87ad53 upd changelog 2025-04-10 03:26:01 +03:00
MX
5e7a8cf94f bump desktop setting ver [ci skip] 2025-04-10 03:08:36 +03:00
MMX
e6d1d19a19 Merge pull request #887 from Dmitry422/dev
LCD Color Inversion
2025-04-10 03:07:04 +03:00
MMX
0e723cfa69 Merge pull request #886 from DrEverr/fav-app-ok-long
add support for Favorite App - Ok Long
2025-04-10 03:06:53 +03:00
Dmitry422
75c8cb9715 Cosmetic code changes 2025-04-10 00:55:02 +07:00
Dmitry422
224d4e060b LCD Inversion finished by MMX 2025-04-09 23:37:30 +07:00
Dmitry422
4ec8f21e09 still under construction 2025-04-09 22:23:55 +07:00
Dmitry422
d467798b43 Merge branch 'DarkFlippers:dev' into dev 2025-04-09 21:17:12 +07:00
MX
7286560c23 upd changelog 2025-04-08 17:52:27 +03:00
MX
d1f9921f83 Merge remote-tracking branch 'OFW/porta/cli-event-ordering' into dev 2025-04-08 17:50:48 +03:00
MX
bdf2c4ce24 more order changes 2025-04-08 17:50:30 +03:00
Anna Antonenko
4140952605 cli_registry: move from bptree to dict, fix memory leak 2025-04-08 18:05:08 +04:00
MX
c77c2d2bb0 fix order 2025-04-08 16:49:08 +03:00
Anna Antonenko
9a6aa17bee cli_shell: add safety check to set_prompt 2025-04-08 16:02:33 +04:00
Dmitry422
7507058870 Start working with LCD color inversion 2025-04-08 18:00:10 +07:00
Anna Antonenko
6b7a7c5709 storage_settings: fix scene ids 2025-04-08 00:25:31 +04:00
Anna Antonenko
e712375edc cli_vcp: make tx flag volatile 2025-04-07 23:59:10 +04:00
Anna Antonenko
c8cf76f75e fix formatting 2025-04-07 23:56:09 +04:00
Anna Antonenko
29b865ed21 cli_vcp: reset tx flag directly in event handler 2025-04-07 23:54:13 +04:00
MX
33fa903f7a fix swapped settings 2025-04-07 22:33:56 +03:00
Anna Antonenko
b39912af11 cli_perf: advanced error reporting 2025-04-07 23:30:39 +04:00
Anna Antonenko
7f45050c87 cli_vcp: disable trace 2025-04-07 20:40:34 +04:00
Anna Antonenko
16e48c8994 cli_vcp: handle tx/rx before connext/disconnect 2025-04-07 20:39:58 +04:00
MX
c4c5148992 upd changelog 2025-04-07 19:34:32 +03:00
MX
b2fadccd3c Merge remote-tracking branch 'OFW/dev' into dev 2025-04-07 19:33:46 +03:00
Pablo Mazzini
5f66425671 SubGhz: added support for 42-bit Prastel variation (#4178)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-07 20:13:45 +04:00
MX
b90e7ab43c fmt [ci skip] 2025-04-07 18:54:09 +03:00
MX
efcad3a118 ofw pr 4178 [ci skip]
add prastel 42 by pmazzini
2025-04-07 18:53:52 +03:00
MX
cca87e3c0a Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-04-07 18:24:49 +03:00
MX
fa0962efeb integrate mfkey to system apps 2025-04-07 18:24:33 +03:00
Eric Betts
4dd123fd8a BLE: Slightly increase mfg_data size (#4177)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-07 19:16:42 +04:00
MX
00dde53304 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-07 18:02:16 +03:00
MX
edb327e50a Merge remote-tracking branch 'OFW/dev' into dev 2025-04-07 18:01:37 +03:00
Anna Antonenko
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
Anna Antonenko
eb0f5ef8c0 [FL-3947] Pinning of settings options (#4077)
* feat: pinning settings in favorites

* include archive in unit tests fw

* change settings icon

* update text with suggestions from the ui team

* Small touch of constness

---------

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-04-07 03:17:58 +04:00
MX
ada8473932 upd changelog 2025-04-07 01:06:14 +03:00
MX
7c44bd1cbe Merge remote-tracking branch 'OFW/dev' into dev 2025-04-07 01:04:52 +03:00
RebornedBrain
f07048d1b0 [FL-3902] NFC app now can launch MFKey32 (#4117)
* feat: app chaining

* add `launch_current_app_after_deferred`, remove `get_referring_application`

* fix naming

* new api

* fix f18

* Added new function which enqueues external app from nfc app

* Added path to MFKey32 app

* Button "Crack nonces in MFKey32" added to ReadMenu scene

* SaveConfirm scene adjusted to move to different scenes depending on state

* SaveSuccess scene now moves to different scenes depending on SaveConfirm scene state

* MfKeyComplete scene shows different text when MFKey.fap present on the device

* Now MfKeyClassic scene can run external app

* fix deferred launches after errors

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-04-07 01:49:22 +04:00
MX
831e46c052 upd changelog 2025-04-06 06:18:30 +03:00
MX
3745ae2241 merge ofw pr 4136 [ci skip]
BadUSB: Full USB/BLE parameter customization, UI improvements, and more
by Willy-JL
2025-04-06 04:57:58 +03:00
MX
324b8ddb95 oops 2025-04-06 04:44:09 +03:00
MX
1385ea0ea0 some code cleanup
by Willy-JL
2025-04-06 03:00:37 +03:00
MX
a57f9e22b5 fix nfc 2025-04-06 01:57:23 +03:00
MX
c8fc2fa7b3 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-06 01:54:22 +03:00
MX
4f5cba4cd1 Revert "Merge remote-tracking branch 'OFW/gsurkov/vcp_break_support' into dev [ci skip]"
This reverts commit fc25c9fba0, reversing
changes made to 41ae5d8981.
2025-04-05 23:41:23 +03:00
MX
380402a55c revert cli changes before apply of new ones 2025-04-05 23:40:13 +03:00
Anna Antonenko
6b5d006690 [FL-3953] Application chaining (#4105)
* feat: app chaining

* add `launch_current_app_after_deferred`, remove `get_referring_application`

* fix naming

* new api

* fix f18

* fix deferred launches after errors

* fix: memory leak

* Updater: MIN_GAP_PAGES = 0

* loader: loader_get_application_launch_path doc

* loader: fix freeze

* loader: reject mlib, reduce code size

* loader: generic synchronous call, reduce size

* loader: reject furi_string, reduce size

* apps: debug: removed order field from manifests since it is no longer meaningful

---------

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-04-05 20:22:05 +04:00
Anna Antonenko
dac1457f0a [FL-3963] Move JS modules to new arg parser (#4139)
* js: value destructuring and tests

* js: temporary fix to see size impact

* js_val: reduce code size 1

* i may be stupid.

* test: js_value args

* Revert "js: temporary fix to see size impact"

This reverts commit f51d726dbafc4300d3552020de1c3b8f9ecd3ac1.

* pvs: silence warnings

* style: formatting

* pvs: silence warnings?

* pvs: silence warnings??

* js_value: redesign declaration types for less code

* js: temporary fix to see size impact

* style: formatting

* pvs: fix helpful warnings

* js_value: reduce .rodata size

* pvs: fix helpful warning

* js_value: reduce code size 1

* fix build error

* style: format

* Revert "js: temporary fix to see size impact"

This reverts commit d6a46f01794132e882e03fd273dec24386a4f8ba.

* style: format

* js: move to new arg parser

* style: format

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-05 03:17:30 +04:00
Anna Antonenko
7192c9e68b [FL-3965] Separate cli_shell into toolbox (#4175)
* cli_shell: separate into toolbox

* fix: cmd flags

* fix formatting

* cli: increase default stack depth

* cli_shell: fix loader lock logic

* cli: fix command flags

* fix f18

* speaker_debug: fix

* cli_registry: fix docs

* ufbt: rename cli target back

* cli: rename app and record

* cli: fix and simplify help command

* cli_master_shell: fix ext commands

* fix formatting

* cli: rename master to main

* fix formatting

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-05 02:58:58 +04:00
Anna Antonenko
6f852e646c docs: badusb arbitrary modkey chains (#4176) 2025-04-03 23:48:09 +01:00
hedger
09c61ecbde cli: fixed free_blocks command (#4174)
* cli: fixed free_blocks command - regression after new heap implementation

* github: updated codeowners
2025-04-03 20:42:40 +01:00
Anna Antonenko
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
Francesco Pompò
fa09a18483 Added Vivax and Sansui under Elitelux section (#4173)
Apparently both the mentioned Elitelux and Vivax models are the same, so they share the same codes. Sansui is a brand that is also associated with them as one of the available Sansui codes is the same as this one. This code might also work for the non-smart version of the Vivax TV, the TV-32LE114T2S2, but it has not been tested.

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-03 17:14:47 +04:00
Anna Antonenko
24fbfd1663 [FL-3956] CLI autocomplete and other sugar (#4115)
* 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

* 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

* fix merge

* fix merge

* cli_shell: fix autocomplete up/down logic

* cli_shell: don't add empty line to history

* cli_shell: fix history recall

* cli_shell: find manually typed command in history

* cli_shell: different up/down completions navigation

* fix formatting

* cli_shell: fix memory leak

* cli_shell: silence pvs warning

* test_pipe: fix race condition

* storage_cli: terminate on pipe broken

---------

Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: あく <alleteam@gmail.com>
2025-04-03 17:07:47 +04:00
Anna Antonenko
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
c9201a3bde Merge remote-tracking branch 'OFW/dev' into dev 2025-04-01 22:55:16 +03:00
Eric Betts
5786066512 BLE advertising improvements (#4151)
* Support longer advertised BLE UUID

* BLE: support manufacturer data

* Don't pair when GapPairingNone

* Add PR feedback

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 22:37:40 +04:00
DrEverr
d08d38f3b2 fix 2025-04-01 18:48:14 +02:00
DrEverr
f783e0b3ab add support for Favorite App Ok Long 2025-04-01 18:39:42 +02:00
WillyJL
bd1e395b08 Docs: Fix doxygen references from PR 4168 (#4169)
* Docs: Fix doxygen references from PR 4168

* Update JS GUI adapter table

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 20:16:14 +04:00
Anna Antonenko
0103b8c7c5 [FL-3961] New JS value destructuring (#4135)
* js: value destructuring and tests

* js: temporary fix to see size impact

* js_val: reduce code size 1

* i may be stupid.

* test: js_value args

* Revert "js: temporary fix to see size impact"

This reverts commit f51d726dbafc4300d3552020de1c3b8f9ecd3ac1.

* pvs: silence warnings

* style: formatting

* pvs: silence warnings?

* pvs: silence warnings??

* js_value: redesign declaration types for less code

* js: temporary fix to see size impact

* style: formatting

* pvs: fix helpful warnings

* js_value: reduce .rodata size

* pvs: fix helpful warning

* js_value: reduce code size 1

* fix build error

* style: format

* Revert "js: temporary fix to see size impact"

This reverts commit d6a46f01794132e882e03fd273dec24386a4f8ba.

* style: format

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 18:50:08 +04:00
MX
74e10f5854 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-01 16:16:07 +03:00
WillyJL
d34ff3310d JS: Update and fix docs, fix Number.toString() with decimals (#4168)
* Update and fix JS docs

This could really use some automation, atleast for API reference
There are TypeScript definitions and typedocs, we don't need to be monkeys copying and reformatting this to API reference by hand

* Fix bugged character

* JS: Fix Number.toString() with decimals

* Fix

* Forgot this one

* docs: mention per-view child format

* Added @portasynthinca3 to docs' codeowners

* Updated CODEOWNERS

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 15:02:12 +04:00
Anna Antonenko
933134ed94 [FL-3962] BadUSB arbitrary key combinations (#4156)
* badusb: arbitrary modifier key combinations

* badusb: format code

* badusb: add const

* Revert "badusb: add const"

This reverts commit 6ae909fd5d3a5b614712fc92fadda98a6ced2893.

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 14:35:11 +04:00
MX
d6f9d7e994 upd changelog 2025-04-01 00:18:09 +03:00
MX
518878ce43 Merge remote-tracking branch 'OFW/dev' into dev 2025-04-01 00:15:59 +03:00
WillyJL
0eb3fc33dd NFC: Fix NDEF parser for MIFARE Classic (#4153)
* Add div() to API

* Revert "Add div() to API"

This reverts commit e03b5c42449365735ce3d2fc73a4e801c4d5f91f.

* Use / and %

* NFC: More MFC NDEF fixes

* Simplify duplicated code in MFC data generator

* NFC: Print NDEF hex data with pretty format

* NFC: Consider NDEF strings with last \0 byte as text

* Pretty Format: Add padding to last line to keep table width

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-04-01 00:34:54 +04:00
MX
48ef579ee6 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-31 22:04:08 +03:00
Yukai Li
f6916fe616 Fix DWARF dead code elimination and linking (#4144)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 22:32:58 +04:00
Konstantin Volkov
a0645bc6f4 HID Ble: increased stack and improvements (#4149)
* increased hid remote stack, increased swipe speed, added enterprise sleep

* decreased extra stack by 256b

* app: remote: bumped version and increased stack sizes

---------

Co-authored-by: doomwastaken <k.volkov@flipperdevices.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: hedger <hedger@nanode.su>
2025-03-31 21:33:17 +04:00
WillyJL
8871df863b NFC: Support DESFire Transaction MAC file type (#4159)
* NFC: Support DESFire Transaction MAC file type

* Fix typo

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 21:22:16 +04:00
WillyJL
17759a9e4b NFC: Fix crash on ISO15693-3 save when memory is empty or cannot be read (#4165)
* NFC: Possibly fix ISO15693-3 save crash with no data

* Also prevent malloc(0) if block size or count is 0

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 20:59:12 +04:00
WillyJL
6962e9ce34 Infrared: Fix universals sending (#4132)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 20:52:15 +04: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
WillyJL
3bd6ee03ef GUI: Fix widget text scroll with 256+ lines (#4160)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 19:11:05 +04:00
Konstantin Volkov
cf63b38ce0 [FL-3972]: Added Doom animation (#4164)
* added new doom animation, updated manifests, re-enabled some animations

* added doom animation to manifest

* reverted manifest to original, new animation added

* fixed metadata and images

* removed old holiday animation

---------

Co-authored-by: doomwastaken <k.volkov@flipperdevices.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 18:36:17 +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
9384dedb88 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-31 15:03:59 +03:00
Anna Antonenko
79bb24406e Reduced ieee754 parser size (#4154)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2025-03-31 08:24:27 +04:00
MX
7f135dae03 little checks for timers 2025-03-28 14:47:33 +03:00
MX
d267665310 upd changelog 2025-03-28 14:39:58 +03:00
MX
dd009e38df Merge remote-tracking branch 'OFW/doom/3972-add-doom-animation' into dev 2025-03-28 14:39:47 +03:00
doomwastaken
0563697eab fixed metadata and images 2025-03-28 14:32:47 +03:00
MX
2828ffb0f4 add nfc apdu cli command back [ci skip]
by leommxj in OFW PR 4133
2025-03-28 14:18:34 +03:00
doomwastaken
1c080ecc63 reverted manifest to original, new animation added 2025-03-28 14:15:36 +03:00
MX
dd3a3a02c9 NFC: Support DESFire Transaction MAC file type [ci skip]
by Willy-JL in OFW PR 4159
2025-03-28 14:13:31 +03:00
doomwastaken
bfe9f20650 added doom animation to manifest 2025-03-28 14:11:22 +03:00
MX
6cc4976568 NFC: Fix NDEF parser for MIFARE Classic [ci skip]
by Willy-JL in OFW PR 4153
2025-03-28 14:10:16 +03:00
doomwastaken
0c5cab9f1a added new doom animation, updated manifests, re-enabled some animations 2025-03-28 14:09:32 +03:00
MX
65b1b943d1 GUI: Fix widget text scroll with 256+ lines [ci skip]
by Willy-JL in OFW PR 4160
2025-03-28 14:05:47 +03:00
MX
17db4dcdac upd changelog 2025-03-28 14:03:10 +03:00
MX
82489cf8eb fmt 2025-03-28 14:02:12 +03:00
MX
3e9bb38cd7 just in case 2025-03-28 14:01:54 +03:00
MX
02aa4041a6 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-28 13:58:59 +03:00
MMX
a9aac8a1a9 Merge pull request #885 from Dmitry422/dev
Night Shift Feature (dimming backlight in selected time interval)
2025-03-28 13:58:07 +03:00
Dmitry422
31b7c4a34f Night shift done. 2025-03-28 13:48:32 +07:00
Dmitry422
cd28f7d232 current working, need find and remove 1 bug 2025-03-28 01:14:57 +07:00
knrn64
54adc38b3a Documentation: new doc on Storage module and JS cleanup (#4161)
- Add new doc on Storage module
- Improve formatting in the JS section for better readability
2025-03-26 18:29:26 +04:00
Dmitry422
77865586e1 Start working with "Night Shift" option 2025-03-26 18:51:36 +07:00
Dmitry422
c86b6e4b56 Bump settings for new auto recreation after update 2025-03-26 10:43:45 +07:00
Dmitry422
a9288da9ba RGB backlight bags and code cleanup 2025-03-26 08:11:52 +07:00
Dmitry422
8df48988f5 Revert "Small rgb_backlight settings menu changes"
This reverts commit ca2765a3fb.
2025-03-25 22:34:03 +07:00
Dmitry422
ca2765a3fb Small rgb_backlight settings menu changes 2025-03-25 18:23:18 +07:00
Dmitry422
23d2bed66a Remove Rainbow timer bug (after last code cleanup) 2025-03-25 15:52:38 +07:00
MX
b792e094fb bump version 2025-03-24 05:08:29 +03:00
MX
e196999b4a upd changelog 2025-03-24 03:36:26 +03:00
MX
4d19ffb31c Merge remote-tracking branch 'OFW/dev' into dev 2025-03-24 03:34:09 +03:00
MMX
472f7e76f3 Merge pull request #881 from Dmitry422/dev
RGB BACKLIGHT refactoring.
2025-03-24 03:32:56 +03:00
Dmitry422
f52c9855d6 Cosmetic code changes and removing unused parts. 2025-03-23 19:36:38 +07:00
Dmitry422
dc7e96d185 Code cleanup 2025-03-21 06:33:27 +07:00
Dmitry422
f751b28532 Reboot screen color cosmetic changes. 2025-03-19 19:18:19 +07:00
Dmitry422
5eb38b786b RGB BACKLIGHT refactoring finished.
- rgb_backlight by @Quen0n
- rgb_backlight_settings and effects (like rainbow) idea by @Willy-JL

For access to rgb backlight settings enable Debug mode and go to Settings-LCD and Notification-RGB backlight
2025-03-19 18:53:02 +07:00
Dmitry422
a629118aaa Rainbow mode in progress 2025-03-19 00:46:00 +07:00
Ruslan Nadyrshin
02dedd60f3 Add guides on Getting Started with JS (#4150)
- Get started section added to the JS docs
- Small fixes in the JS modules docs
2025-03-19 02:08:23 +10:00
Dmitry422
a4d0c467f9 End of static colors settings, next rainbow 2025-03-18 18:41:50 +07:00
Dmitry422
c66b332a7d refactor rgb_backlight 2025-03-17 23:56:39 +07:00
Dmitry422
05423d5cb3 Start rgb backlight settings refactoring and adding new options; 2025-03-16 22:42:22 +07:00
MX
b48e00928a remove overkill service 2025-03-16 05:24:20 +03:00
MX
edd75a9b01 init rgb only once on boot if mod is not present
testing required!!!
2025-03-16 04:21:02 +03:00
MX
94b369657d upd changelog and add fix 2025-03-15 09:32:19 +03:00
MX
c04ce78fcd fix messages [ci skip] 2025-03-15 09:02:21 +03:00
MX
16b8ec5a9c upd changelog 2025-03-15 08:37:37 +03:00
MX
21e2e9c148 fmt and return settings to original value [ci skip] 2025-03-15 08:14:00 +03:00
MX
7f1c8684c6 remove build [ci skip] 2025-03-15 08:10:25 +03:00
MMX
b5fd8953f9 Merge pull request #877 from Dmitry422/dev
Сombining rgb_backlight (by @quen0n) and original_backlight in one firmware
2025-03-15 07:59:51 +03:00
MX
9da510389a small fixes 2025-03-15 07:58:51 +03:00
MX
8ca3581fb0 subghz bugfixes and experimental options 2025-03-15 07:23:23 +03:00
MX
ab8ea27200 Merge remote-tracking branch 'OFW/doom/hid_fap_fixes' into dev 2025-03-15 03:12:34 +03:00
MX
ed1f4000e6 Merge remote-tracking branch 'OFW/dev' into dev 2025-03-15 03:11:19 +03:00
doomwastaken
61a54a1b06 decreased extra stack by 256b 2025-03-14 20:25:38 +03:00
doomwastaken
b2185594f2 increased hid remote stack, increased swipe speed, added enterprise sleep 2025-03-14 20:19:24 +03:00
Dmitry422
cf63e9c036 Restore Input_vibro_touch compability with rgb_backlight.
rgb_backlight driver litle bit improvements
2025-03-14 18:40:19 +07:00
Dmitry422
9b3d737693 Moving RGB Backlight setings and effect to rgb service finished. 2025-03-14 02:18:14 +07:00
Dmitry422
c9313c6f52 still fucking )) 2025-03-13 18:06:39 +07:00
Dmitry422
e589cf7246 Still working 2025-03-13 00:42:03 +07:00
Evgeny E
9a8dcc340f fix: flipper detected before it was rebooted (#4146) 2025-03-12 13:25:37 +00:00
Dmitry422
7a19c9e549 Still in progress 2025-03-12 18:15:38 +07:00
Dmitry422
4045628ac6 Working on moving RGB routines from Notification to RGB service 2025-03-12 02:19:17 +07:00
Dmitry422
9e6593c09e Start moving RGB MOD from Notification to RGB MOD service. 2025-03-11 18:54:12 +07:00
Dmitry422
687a6fd630 User Interface bug removed. 2025-03-11 15:11:01 +07:00
Dmitry422
b5bfe7085d Merge branch 'DarkFlippers:dev' into dev 2025-03-11 10:12:30 +07:00
Dmitry422
82d3f452cd Code cosmetic changes. 2025-03-10 21:02:37 +07:00
Dmitry422
5e6c238389 RGB mod rainbow effect done. 2025-03-10 20:51:09 +07:00
MX
8fd5a26e3e Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-03-06 22:13:35 +03:00
Dmitry422
bf50f0cd20 Cosmetic changes. 2025-03-05 22:47:28 +07:00
WillyJL
cef20b3a5e JS: Fix gui.js stopwatch example borders (#4131) 2025-03-05 18:11:51 +04:00
Dmitry422
82fd6b2130 RGB Rainbow still in development. 2025-03-04 23:34:11 +07:00
Dmitry422
7ac1452618 Start working on RGB mod Rainbow effect (inspired by Willy-JL idea). 2025-03-04 22:13:59 +07:00
Dmitry422
08304ccff5 Small usability changes 2025-03-01 23:58:07 +07:00
Dmitry422
bb170140e2 Сombining rgb_backlight and original_backlight finished.
- RGB Colors settings available only when Settings-Notification-RGB_MOD_Installed swithed ON
- RGB_MOD_Installed switch (ON|OFF) available in Notification only with Debug mode swithed ON.
2025-03-01 22:55:25 +07:00
Dmitry422
3c7d9e63fb Start working on combining rgb_backlight and original_backlight. 2025-02-28 23:14:18 +07:00
MX
be4b049417 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-27 00:59:17 +03:00
Tyler Crumpton
0d99e54a17 Fix PWM-supported logic on pwmStop() (#4129) 2025-02-26 19:34:54 +04:00
MX
edd42d34c6 upd changelog 2025-02-25 02:58:14 +03:00
MX
248666be2b fix 2025-02-25 02:13:44 +03:00
MX
ec593e660c Merge remote-tracking branch 'OFW/astra/3934-alarm-improvements' into dev 2025-02-25 02:06:05 +03:00
Evgeny E
0d53cb2c48 test: fix timeout for flashing step (#4127) 2025-02-24 22:00:51 +00:00
Aleksandr Kutuzov
00e64e8679 Merge remote-tracking branch 'origin/dev' into astra/3934-alarm-improvements 2025-02-25 06:18:42 +09:00
MX
0a924974c0 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-25 00:08:57 +03:00
Zinong Li
145184f0f2 NFC: FeliCa Protocol Expose Read Block API and Allow Specifying Service (#4074)
* add one parameter to the rdbl and expose
* Bump api version and format sources

Co-authored-by: あく <alleteam@gmail.com>
2025-02-25 06:07:45 +09:00
MX
d783204d20 upd changelog 2025-02-25 00:02:23 +03:00
MX
fec1ecedc7 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-24 23:48:34 +03:00
Zinong Li
9f5e93bed8 LFRFID: Fix Detection Conflict Between Securakey and Noralsy Format (#4125)
* Securakey added parity check
* Format Sources

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-25 04:59:05 +09:00
MX
8505aab0c3 upd changelog 2025-02-24 21:41:04 +03:00
MX
5b2582930f classic poller fix early key reuse in dictionary attack state machine
by noproto
2025-02-24 21:40:21 +03:00
MX
fc96bf2a2e upd changelog 2025-02-24 21:21:19 +03:00
MX
b38d239eb8 Merge remote-tracking branch 'OFW/hedger/more-constness' into dev [ci skip] 2025-02-24 21:18:11 +03:00
MX
248341ac0a merge ofw pr 4125
by zinongli
2025-02-24 20:57:43 +03:00
MX
9fe149960e upd changelog 2025-02-24 11:14:43 +03:00
MX
6579b4195e add manually 2025-02-24 11:12:45 +03:00
MX
326eff734d fmt 2025-02-24 10:59:03 +03:00
MX
dd2388e40d discard wrong hollarms if bytesum is invalid 2025-02-24 10:57:27 +03:00
MX
0e8a0228be add revers rb2 subghz protocol 2025-02-24 10:56:57 +03:00
MX
c71ea3aee4 upd changelog 2025-02-23 19:14:13 +03:00
MX
9f4b1aead7 Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-02-23 18:35:22 +03:00
hedger
acc90d0ac3 linter fixes 2025-02-22 20:43:11 +00:00
hedger
15a5e652e0 usb: restored previous api 2025-02-22 20:40:52 +00:00
hedger
6c17b785ec hal: made FuriHalI2cBusHandle static 2025-02-22 19:23:30 +00:00
hedger
251565e9d3 hal: made FuriHalSpiBusHandle static 2025-02-22 19:12:12 +00:00
hedger
d7221f1b0d hal: more consts for ble & nfc vars 2025-02-22 18:39:52 +00:00
hedger
bf84daf0d9 fatfs: const driver struct 2025-02-22 18:28:37 +00:00
hedger
7d000abfc4 mjs: more consts for token parser 2025-02-22 18:15:37 +00:00
hedger
5d7b63b162 debug apps: additional usb-related fixes 2025-02-22 16:35:22 +00:00
hedger
b99f65dd9a hal: additional fixes for constness in USB subsystem 2025-02-22 16:32:24 +00: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
Anna Antonenko
ef024e8086 [FL-3958] Stdio API improvements (#4110)
* improve thread stdio callback signatures
* pipe stdout timeout
* update api symbols

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-22 08:11:27 +09:00
MX
4c47b9baed upd changelog 2025-02-21 20:57:55 +03:00
MMX
91bcff606b Merge pull request #872 from m-xim/dev
Update README: fix
2025-02-21 20:56:48 +03:00
m-xim
d8b32d74ab docs: delete duplicate Keeloq manufacturers 2025-02-21 16:07:16 +03:00
m-xim
92818a07a2 docs: remove link underline from badges 2025-02-21 13:06:21 +03:00
MX
1292742538 upd missing parts [ci skip] 2025-02-21 06:41:25 +03:00
MMX
e70ee30f6e Merge pull request #871 from m-xim/dev
README Update: Enhanced Visuals & Navigation
2025-02-21 06:24:58 +03:00
MMX
c4c2fe7e1e Merge pull request #865 from mi-lrn/patch-1
Update FAQ.md
2025-02-21 06:24:46 +03:00
m-xim
8b8d9c9d94 Merge branch 'DarkFlippers:dev' into dev 2025-02-21 05:53:01 +03:00
m-xim
cf73481310 docs: sort manufacturers list alphabetically and distribute in table columns 2025-02-21 05:52:17 +03:00
MX
476e8f22d0 upd changelog 2025-02-21 05:25:44 +03:00
m-xim
5ac9ff3256 Merge branch 'DarkFlippers:dev' into dev 2025-02-21 05:24:05 +03:00
m-xim
0214e176c2 docs: rearrange badges layout and remove link underline from badges 2025-02-21 05:22:25 +03:00
MX
b887d6af21 Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-02-21 05:18:29 +03:00
WillyJL
404764b660 GUI: Widget view extra options for JS (#4120)
* Fill option for widget frame
* Add widget circle element
* Add widget line element
* Fix missing include for InputType
* Fix missing comment
* Update api symbols
* Load .fxbm from file
* Fix copy pasta
* Add fill param to example
* Fix some comments
* Bump JS SDK 0.3
* Fix free
* Rename widget frame to rect
* Gui: add widget_add_frame_element backward compatibility macros

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-21 10:47:56 +09:00
m-xim
f94800b220 docs: add icons 2025-02-21 04:39:30 +03:00
MX
13dd10182e Merge remote-tracking branch 'OFW/dev' into dev 2025-02-21 04:11:41 +03:00
Anna Antonenko
16d18a79a9 [FL-3900] Update heap implementation (#4123)
* furi: update heap4 to latest
* debug: heap under/overflow testing app
* fix formatting
* silence pvs warnings
* Linker: symbols without type
* Infrared: fix crash in universal remotes on long back press
* Infrared: properly fix incorrect input handling behavior and crash in universal remote. Fix same issue in hid_app.
* FreeRTOSConfig: explicit cast to uint in configTOTAL_HEAP_SIZE
* Format sources
* C and C++ compatible version of stm32wb55_linker.h

Co-authored-by: あく <alleteam@gmail.com>
2025-02-21 10:04:02 +09:00
MX
f242eef26f Merge remote-tracking branch 'OFW/dev' into dev 2025-02-21 03:08:00 +03:00
Akiva-Cohen
4e9aa3883b Updated Button Panel (#4119)
* updated button panel
* fixed mismateched .c and .h files
* Gui: extra events for ok button handling in button_panel
* Gui: extra events for other buttons handling in button_panel

Co-authored-by: あく <alleteam@gmail.com>
2025-02-21 06:57:28 +09:00
Anna Antonenko
7c5c5d4749 [FL-3734] UART framing mode selection (#4121)
* HAL: feat: uart framing
* JS: feat: uart framing
* fix formatting
* fix pvs warning
* HAL: flash impact reduction attempt 1
* HAL: flash impact reduction attempt 2
* fix compile error
* HAL: finalize flash impact reduction
* HAL: remove user-facing magic numbers

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-21 04:54:38 +09:00
Nathan Perry
290a6dc1eb gpio: clear irq status before calling user handler (#4118)
* gpio: clear irq status before calling user handler
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2025-02-21 03:42:31 +09:00
MX
aef8a97ab4 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-20 18:40:54 +03:00
m-xim
f0b20efbc9 docs: remove redundant <br/> tags 2025-02-20 18:02:49 +03:00
m-xim
56853161e2 docs: update README with modernized design and enhanced navigation
- Updated header image
- Added emojis to headings for visual variety
- Introduced collapsible sections (details) for a more compact layout
- Included links to community channels (Telegram)
- Restructured document for improved readability
2025-02-20 17:46:32 +03:00
Astra
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
d7df3f38b7 upd changelog 2025-02-20 06:04:35 +03:00
MX
536ebe3efc came atomo button hold simulation half cycle 2025-02-20 06:03:30 +03:00
MX
f37044de18 upd changelog 2025-02-20 05:33:44 +03:00
MX
9378a6f5c4 fix text pos 2025-02-20 05:29:38 +03:00
MX
9ff141acbb fix infrared 2025-02-20 05:28:44 +03:00
MX
fa2af5a826 fix naming 2025-02-20 04:41:02 +03:00
MX
cd94db3b91 FIX GANG QI 2025-02-20 04:39:28 +03:00
MX
1e3100e26e Merge remote-tracking branch 'OFW/dev' into dev 2025-02-20 04:22:42 +03:00
Justin Nesselrotte
3698fc8d02 Fixed repeat in subghz tx_from_file command (#4099)
* Fixed repeat in subghz tx_from_file command
* Fix PVS warnings

Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 10:10:41 +09:00
Zinong Li
04fa7a9a7f LFRFID: Noralsy Format/Brand (#4090)
* beta version
* Working. No parsing yet. No checksum yet.
* T5 config caveat
* parsings

Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 09:36:39 +09:00
Eric Betts
77445fd2f5 Faster di card reading (#4087)
Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 09:22:01 +09:00
MX
486dc48a7a Merge remote-tracking branch 'OFW/dev' into dev 2025-02-20 03:08:53 +03:00
Anna Antonenko
0f240c4dbc [FL-3949] Universal IR signal selection (#4085)
* feat: universal ir signal selection
* fix: f18, format specifiers
* update labels with suggestions from the ui team

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2025-02-20 08:58:55 +09:00
hedger
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
Ryan Peel
1541c36b14 BadUSB: Mouse control (#4004)
* add usb hid mouse functions, add mouse functions to BadUsbHidApi
* add ble mouse functionality
* add hid_usb_mouse_release_all
* ducky mouse command skeleton
* implement mouse click functions
* corrected missing semicolon
* added mouse functionality
* corrected mouse scroll functionality
* mouse key functionality, removed mouse commands, supporting get_mouse_keycode function, added mouse buttons as Keys for HOLD function
* add mouse commands
* removed mouse middle click
* Format sources and fix bunch of mistakes in nfc and subghz
* added HID_MOUSE_NONE: added to help with better readability
* added script for mouse movement test
* Fix: hold and release, imrpove readability
* simplified the mouse demo/test
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2025-02-20 08:24:34 +09:00
MX
ca527a0183 upd changelog 2025-02-18 00:51:19 +03: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
17417a487a upd changelog 2025-02-17 20:16:26 +03:00
MX
2ff9e34082 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-17 20:15:26 +03:00
Anna Antonenko
4895ae5d0d [FL-3957] EventLoop unsubscribe fix (#4109)
* Fix memory leak during event loop unsubscription
* Event better memory leak fix
* unit test for the fix

Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
2025-02-17 06:57:23 +09:00
MX
9f1eca2260 upd readme [ci skip]
badge counters are broken
2025-02-16 20:49:54 +03:00
MX
96dc1af1e8 upd changelog 2025-02-13 20:27:31 +03:00
MX
7e1dae67a3 remove from api [ci skip] 2025-02-13 20:24:24 +03:00
MX
dea16b7055 add missing api [ci skip] 2025-02-13 20:20:25 +03:00
MX
d4830270a4 fix 2025-02-13 20:14:59 +03:00
MX
95483fb56f add findmy to system apps [ci skip]
autoload by Willy-JL
2025-02-13 20:12:23 +03:00
MX
85cba9fd8d Merge remote-tracking branch 'OFW/dev' into dev 2025-02-13 19:58:15 +03:00
Demae
429c0dd387 Added naming for DESFire cards + fix MF3ICD40 cards unable to be read (#4058)
* Fixed MF3ICD40 DESFire cards soft-locking NFC application due to read free memory being an unsupported function, added naming for DESFire cards
* NFC: slightly more granular desfire card type resolution

Co-authored-by: あく <alleteam@gmail.com>
2025-02-13 19:49:53 +09:00
Yukai Li
59fe896ce8 nfc: Enable MFUL sync poller to be provided with passwords (#4050)
* nfc: Enable MFUL sync poller to be provided with passwords
* Sync targret api versions

Co-authored-by: あく <alleteam@gmail.com>
2025-02-13 19:31:56 +09:00
RebornedBrain
de85cc7a8e ST25TB poller mode check (#4084)
Co-authored-by: あく <alleteam@gmail.com>
2025-02-13 19:07:03 +09:00
Anna Antonenko
e27f82f041 [FL-3925, FL-3942, FL-3944] JS features & bugfixes (SDK 0.2) (#4075)
* feat: JS GPIO PWM, JS GUI Widget view; fix: JS EvtLoop stop on request, JS EvtLoop stop on error
* fix: f18 build
* docs: widget
* fix: js unit test
* change feature naming

Co-authored-by: あく <alleteam@gmail.com>
2025-02-13 17:50:38 +09:00
MX
45529e76e9 fix 2025-02-13 04:13:00 +03:00
MX
9042294837 upd changelog 2025-02-13 04:06:39 +03:00
MX
36327877ba move seasonal anims to temp folder
todo: make automatic selection???
2025-02-13 04:04:36 +03:00
MX
f5c59e0f91 upd changelog 2025-02-13 03:59:41 +03:00
MMX
9d9a46f49f Merge pull request #867 from Dmitry422/dev
Additional options for Input and Power service
2025-02-13 03:58:03 +03:00
MX
d57e2c9ef7 fmt 2025-02-13 03:56:22 +03:00
MX
e22669da96 fixes and corrections 2025-02-13 03:56:04 +03:00
MX
00f332eaf1 Merge branch 'dev' into dmitry_dev 2025-02-13 03:44:00 +03:00
MX
18e2d8d2f4 upd changelog 2025-02-13 03:33:49 +03:00
MX
2919105bdb Merge remote-tracking branch 'OFW/dev' into dev [ci skip] 2025-02-13 01:01:02 +03:00
あく
ac1b723436 Infrared: increase max carrier limit (#4070)
Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
2025-02-13 03:53:14 +09:00
Astra
00f287e297 [FL-2754, FL-3945] EM4305 support (#4069)
* Initial EM4305 write support
* Support for writing EM4100 data to EM4305 blank tags
* F18 API version bump
* Satisfy pvs
* Lib: cleanup em4305 code
* Mask size fix
* Electra
* Fix leftovers from a previous implementation
* Viking
* Gallagher
* LFRFID: cleanup em4305

Co-authored-by: あく <alleteam@gmail.com>
2025-02-13 03:04:24 +09:00
MX
f25224d79d Merge remote-tracking branch 'OFW/dev' into dev 2025-02-11 22:36:46 +03:00
David Coles
8059959624 Ensure that furi_record_create is passed a non-NULL data pointer (#4078)
* Ensure that `furi_record_create` is passed a non-NULL data pointer
  It's currently possible to use `furi_record_create` to create and initialize a `FuriRecordData` pointing to NULL.
  This means its potentially possible for `furi_record_open` to return a NULL pointer which besides not being particularly useful means the Rust wrapper for `Record` can't assume that the returned record is always a non-NULL value.
  If by chance this is the intended behaviour, then we can just have the Rust wrapper do a `furi_check` itself, but it seems like it would be better to eliminate this potential corner-case at the source.
* Furi: update furi_record_create documentation

Co-authored-by: あく <alleteam@gmail.com>
2025-02-12 01:01:12 +09:00
jay candel
a2b81e4e37 Infrared: Update TV universal (#4080)
* Update tv.ir
* Infrared: cleanup tv.ir merge artifacts

Co-authored-by: あく <alleteam@gmail.com>
2025-02-11 23:54:11 +09:00
A0i
f05302813a Add new AC for Fujitsu ASTG12LVCC (#4095)
* Add new AC for Fujitsu ASTG12LVCC
* Updated timeout settings in GitHub Actions workflow
* Revert CI changes

Co-authored-by: Banana Blue <bananablue@Banana-no-Air.local>
Co-authored-by: あく <alleteam@gmail.com>
2025-02-11 19:58:19 +09:00
MX
a3ffdac763 Merge remote-tracking branch 'OFW/dev' into dev 2025-02-10 21:55:03 +03:00
Anna Antonenko
7a92fd359c [FL-3950] Update mbedtls & expose AES (#4092)
* update mbedtls
* expose mbedtls/aes.h
* update f18

Co-authored-by: あく <alleteam@gmail.com>
2025-02-10 20:57:16 +09:00
hedger
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
Astra
5bd35f435b [FL-3951] Add the Showtime animation (#4100)
* Add the Showtime animation
* Format images
2025-02-10 18:35:39 +09:00
Dmitry422
92b58bc99f Litle bit cahnges in RGB led driver for compatibility with VibroTouch.
Shell files for buil firmware.
2025-02-05 16:31:26 +07:00
Dmitry422
3029f0d6d6 Litle bit mistakes cleanup. 2025-02-04 00:53:28 +07:00
Dmitry422
724c4ca445 SafeCharging (charging supress) finished. 2025-02-04 00:42:52 +07:00
Dmitry422
cce8a7c413 Begin work with SafeCharging (charging supress) 2025-02-03 19:18:53 +07:00
Dmitry422
8c31d8a682 Source code cosmetic changes 2025-02-02 21:41:30 +07:00
Dmitry422
a5c241139d Source code C\C++ formating 2025-02-02 15:13:55 +07:00
Dmitry422
eef2441af9 InputSettings complete. Added VibroTouchLevel 2025-02-02 14:57:41 +07:00
mi-lrn
d0a33b22f4 Update FAQ.md
Hi! Great project. Made some minor grammar and clarity changes to FAQ.md to make it easier to read.
2025-01-31 18:46:31 -07:00
Dmitry422
a5f62f756a Begin work with Input_service settings (edit,save) for vibro_touch option 2025-01-31 19:25:52 +07:00
MX
1acc814b2a upd changelog 2025-01-17 14:59:10 +03:00
MX
0112a733c4 Merge remote-tracking branch 'OFW/aku/g4067_infrared_carrier' into dev 2025-01-17 14:57:59 +03:00
MMX
fbcf39a990 Merge pull request #860 from Dmitry422/dev
Auto_power_off and Auto_lock improvements
2025-01-17 14:57:38 +03:00
Dmitry422
e809e3ddbb Cosmetic menu changes 2025-01-17 13:12:20 +07:00
Dmitry422
fbc29f519f Disable autopoweroff if charger connected. 2025-01-17 13:01:38 +07:00
Dmitry422
0a2b47c7e1 Autolock disarm by active USB connection instead of USB charging connection. 2025-01-17 12:12:27 +07:00
Aleksandr Kutuzov
5096b9c88b Infrared: increase max carrier limit 2025-01-16 23:51:10 +09:00
MX
633f5d7c57 fbt format and naming fix 2025-01-15 17:23:38 +03:00
MMX
8872b13d54 Merge pull request #858 from Dmitry422/dev
fix errors
2025-01-15 17:22:01 +03:00
Dmitry422
818a47085e fix errors 2025-01-15 18:37:35 +07:00
MX
d09bbd18fa upd changelog 2025-01-15 00:53:47 +03:00
MX
1666c4d04f upd settings to see release version only and current 2025-01-15 00:42:43 +03:00
MMX
b4c7cde261 Merge pull request #857 from Dmitry422/dev
Auto_poweroff_timer moved to power service. Power service have own config file.
2025-01-15 00:34:46 +03:00
Dmitry422
cf50875c5c *POWER*
- serice:
    renamed function and variable
- settings:
    add test value 5 sec for auto_power_off timer

*DESKTOP*
- settings|service
    add USB_inhibit for desktop_auto_lock
    (dont autolock desktop with different condition)
    PS. RPC condition now working now.
2025-01-15 01:33:49 +07:00
Dmitry422
ec75de0320 Auto_poweroff_delay correction (removed test delay value) 2025-01-14 02:08:35 +07:00
Dmitry422
c73495767c Auto_poweroff option moved from desktop to power.
Add settings for power service (load|save).
2025-01-14 02:01:54 +07:00
MX
f054d05269 Merge remote-tracking branch 'OFW/dev' into dev 2025-01-13 15:12:51 +03:00
あく
5c56d9ab27 Merge branch 'dev' into astra/3934-alarm-improvements 2025-01-13 04:13:10 +09:00
NotLukas
7291e6bd46 Rename FuriHalDebuging.md to FuriHalDebugging.md (#4047)
Fixed Typo

Co-authored-by: あく <alleteam@gmail.com>
2025-01-13 04:12:59 +09:00
Yukai Li
a0d1d3fa0f nfc: Fix MIFARE Plus detection (#4049)
* nfc: Fix MIFARE Plus detection
  MIFARE Plus original doesn't have GetVersion support, so detection for SL2 has been moved. Also, SL2 only exists in MIFARE Plus X, so despite it not being specified in the type identification procedure chart, it's safe to call it for what it is.
* Fix spelling
* TODO: mark as non flipper one

Co-authored-by: あく <alleteam@gmail.com>
2025-01-13 03:15:52 +09:00
MX
535dd8357b Merge remote-tracking branch 'OFW/dev' into dev 2025-01-11 02:04:14 +03:00
あく
35c1bfc057 Github: update doxygen workflow to use exact version (#4065)
* Github: update doxygen workflow to use exact version
* Github: inject DOXY_CONFIG_DIR into doxygen execution env
* Github: use fbt to build doxygen docs
2025-01-10 20:03:47 +09:00
Yukai Li
5efdab863b u2f: Fix leaking message digest contexts (#4052)
* u2f: Fix leaking message digest contexts
* Github: fix doxygen version to 1.12

Co-authored-by: あく <alleteam@gmail.com>
2025-01-10 17:39:39 +09:00
Yukai Li
668500e985 nfc: Fix MFUL PWD_AUTH command creation (#4051) 2025-01-10 17:20:34 +09:00
MX
f2c84e0510 docker image source 2025-01-05 17:14:41 +03:00
Astra
c1c2bca850 F18 API 2024-12-25 18:41:50 +09:00
Astra
701969e334 Fix comments 2024-12-25 18:39:57 +09:00
Astra
31365cb170 Don't use semaphores for lock state tracking 2024-12-25 18:38:32 +09:00
MX
1a95757a75 upd changelog 2024-12-24 14:23:07 +03:00
MX
7fc34db57b use event system 2024-12-24 14:04:34 +03:00
MX
189c87cb08 Merge remote-tracking branch 'OFW/dev' into dev 2024-12-24 14:04:07 +03:00
Astra
93d2120e55 Fix snooze and next day alarm behavior 2024-12-24 19:26:31 +09:00
あく
f68f125071 Merge branch 'dev' into astra/3934-alarm-improvements 2024-12-24 11:24:41 +09:00
dependabot[bot]
5fb9558dbb Bump cross-spawn in /applications/system/js_app/packages/create-fz-app (#4043)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-12-24 11:24:01 +09:00
Anna Antonenko
5fd423951b [FL-3933] Pipe (#3996)
* 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
* refactor: move pipe out of furi and decouple from event loop
* chore: api versioning
* Bump api versions
* refactor: rename pipe_set_pipe_broken_callback
* Toolbox: add missing pragma once

Co-authored-by: あく <alleteam@gmail.com>
2024-12-24 10:58:27 +09:00
MX
1739f57c7a enable anim 2024-12-24 01:02:05 +03:00
MX
4694492ed4 upd changelog 2024-12-23 21:03:53 +03:00
MX
38326877ea add input events sub check [ci skip] 2024-12-23 19:19:12 +03:00
MX
9c5341edb1 Merge remote-tracking branch 'OFW/dev' into dev 2024-12-23 15:56:12 +03:00
Astra
a0c087c557 Merge branch 'dev' into astra/3934-alarm-improvements 2024-12-23 14:27:45 +09:00
Sanghee Park
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
Jan Wiesemann
e11a62694e Added flipper_format_write_empty_line(...) (#4029)
* Added flipper_format_write_empty_line(...)
* Format sources

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-12-23 11:32:53 +09:00
ru-asdx
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
Eric Betts
626d7ef509 Fix skylander ID reading (#4038)
* Read skylanders faster
* Correct parsing ID from skylanders

Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 10:56:19 +09:00
Anna Antonenko
631d7a40dd [FL-3940] Work around incorrect serial port handling by the OS (#4040)
* fix: js sdk flipper detection
* chore: bump ver

Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 10:34:05 +09:00
Astra
6d20bc7e50 [FL-3938] Add winter animations (#4032)
* Add winter animations
* Format images

Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 10:09:40 +09:00
WillyJL
33f1a16094 FBT: Don't lint JS packages (#4030)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-23 09:52:37 +09:00
Astra
a02781b936 [FL-3920] Fix lost BadBLE keystrokes (#3993)
* WIP: fix lost BadBLE keystrokes
* Switch to semaphores for synchronization
* Move checking to the gap level
* Remove leftovers from hid_service
* Remove more leftovers from hid_service
* De-allocate the semaphore after use
* Change the timeout to account for unforeseen situation
* Update F18 API
* Fix naming and unbump api version
* Move away from semaphores
* Remove the left over include
* Ble: cleanup error handling in ble_gatt_characteristic_update
* Fix PVS warning

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-12-23 09:18:14 +09:00
MX
bd348cf72d Merge remote-tracking branch 'OFW/dev' into dev 2024-12-21 17:37:08 +03:00
Evgeny E
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
WillyJL
a7b3a13581 Loader: Fix BusFault in handling of OOM (#3992)
* Loader: Fix BusFault in handling of OOM
* Furi: fix crash in aligned_alloc, cleanup aligned_alloc use

Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 06:33:59 +09:00
RebornedBrain
9c96bbfc54 [NFC] Fix ISO15693 stucking in wrong mode. (#3988)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 06:01:20 +09:00
Emmanuel Ferdman
8c4922a322 Update infrared_test.c reference (#3983)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 05:55:21 +09:00
Anna Antonenko
8d078e4b8c [FL-3927] FuriThread stdin (#3979)
* feat: FuriThread stdin
* ci: fix f18
* feat: stdio callback context

Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 05:38:43 +09:00
Astra
9917579619 Increase system stack's reserved memory size (#4025)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 04:23:29 +09:00
MX
d60c034c92 Merge remote-tracking branch 'OFW/dev' into dev 2024-12-18 10:48:30 +03:00
Astra
256c1a1140 [FL-3917] Add the ability to send a signal once via RPC (#4000)
* Add the ability to send a signal once

* Update protobuf

* Fix sending infrared signals

* Review changes

* Update protobuf

* Separate sending an IR signal once into a function

* Update protobuf module

---------

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
2024-12-17 13:12:55 +00:00
MX
306b728587 fix wrong order 2024-12-08 13:39:34 +03:00
MX
53fa3f85b3 upd changelog 2024-12-06 12:51:06 +03:00
MX
d566f650bd fix order [ci skip] 2024-12-06 12:20:41 +03:00
MX
c9bc05199e add auto power off timer setting [ci skip]
by @Dmitry422 with little fixes by @xMasterX
2024-12-06 12:18:51 +03:00
MX
dd6e0a9b72 keeloq jolly motors add full support with add manually
thanks @pkooiman !
2024-12-06 11:53:09 +03:00
MX
0d61de4584 Merge remote-tracking branch 'OFW/astra/3936-usb-uart-crash' into dev 2024-12-03 11:33:05 +03:00
MX
599bb5f6f5 Merge remote-tracking branch 'OFW/dev' into dev 2024-12-03 11:32:28 +03:00
あく
bc54364352 Merge branch 'dev' into astra/3936-usb-uart-crash 2024-12-03 15:31:32 +09:00
Ondřej Nový
7d5358b9d3 Replace mf_classic_dict.nfc with Proxmark3 version (#4013)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-03 15:30:25 +09:00
Astra
0fd26ee148 Increase system stack's reserved memory size 2024-12-02 19:24:20 +09:00
ted-logan
3d6fd9b00d nfc/clipper: (#3991)
* nfs/clipper: BART station ids for San Lorenzo, Bay Fair

Update the BART station ids for the San Lorenzo and Bay Fair stations in
the East Bay of the San Francisco Bay Area.

* nfc/clipper: Update MUNI station ids

Add MUNI station ids for the T line "Central Subway" project, which
opened three new underground stations in 2022.

---------

Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 18:51:57 +09:00
mxcdoam
8629c61dc9 NFC: Plantain parser Last payment amount fix (#3998)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 17:08:17 +09:00
WillyJL
2f30817dc9 Settings: More granularity for LCD and Notification (#4010)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 16:54:50 +09:00
Luu
c3dc9e1ec2 Fix typo for mf_classic_key_cahce_get_next_key() function (#4015)
* Update mf_classic_key_cache.c
* Update mf_classic_key_cache.h
* Update mf_classic.c
* Update nfc_scene_mf_classic_update_initial.c

Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 16:27:16 +09:00
Nicolas Marie-Magdelaine PhD
399bcdcc13 Add IR command for NAD DR2 D7050 D3020 (#4020)
Co-authored-by: あく <alleteam@gmail.com>
2024-12-02 16:15:29 +09:00
Ruslan Nadyrshin
0ef9f7d308 JS packages folder included to the doxygen's exclude list (#4021) 2024-12-02 15:58:13 +09:00
Astra
905f9498aa F18 api 2024-11-26 19:31:37 +09:00
Astra
a47443ed1c Snooze, timeouts, and dismissing from the locked state 2024-11-26 19:26:58 +09:00
MX
7e0f292615 upd changelog 2024-11-26 05:46:32 +03:00
MX
fc25c9fba0 Merge remote-tracking branch 'OFW/gsurkov/vcp_break_support' into dev [ci skip] 2024-11-26 05:19:11 +03:00
Georgii Surkov
07426b6df2 Add SendBreak event to waiting mask 2024-11-18 11:29:54 +00:00
Georgii Surkov
e3c3edcc7e Add send break support 2024-11-17 21:01:15 +00:00
Anna Antonenko
51aafd1b5e fix: bump fz-sdk to 0.1.2 (#3989) 2024-11-05 20:58:19 +09:00
WillyJL
b86b9b87b8 JS: Add die() typedoc (#3985)
* JS: Add die() to typedocs

* JS: Never type for die()

---------

Co-authored-by: Anna Antonenko <portasynthinca3@gmail.com>
2024-11-05 14:41:03 +03:00
Anna Antonenko
c741727b96 I am own the JS (#3982)
* fix: js app template
* i am own the js
* farewell
2024-11-05 19:53:24 +09:00
1224 changed files with 48139 additions and 11123 deletions

View File

@@ -6,11 +6,10 @@
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
### Install FW via Web Updater:
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&channel=dev-cfw&version=(buildnum)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&channel=dev-cfw&version=(buildnum)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&channel=dev-cfw&version=(buildnum)c) > `c`
[RGB patch - only for hardware mod!](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)r.tgz&channel=dev-cfw&version=(buildnum)r) > `r`
What ` `, `e`, `c`, `r` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-n-r-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&target=f7&channel=dev-cfw&version=(buildnum)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&target=f7&channel=dev-cfw&version=(buildnum)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&target=f7&channel=dev-cfw&version=(buildnum)c) > `c`
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
### Direct tgz download links:
[Default](https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz) > `c` - [RGB patch - only for hardware mod!](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)r.tgz) > `r`
[Default](https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz) > `c`

View File

@@ -7,16 +7,14 @@
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
**Install FW via Web Updater:**
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&channel=dev-cfw&version=(buildnum)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&channel=dev-cfw&version=(buildnum)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&channel=dev-cfw&version=(buildnum)c) > `c`
[RGB patch - only for hardware mod!](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)r.tgz&channel=dev-cfw&version=(buildnum)r) > `r`
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz&target=f7&channel=dev-cfw&version=(buildnum)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz&target=f7&channel=dev-cfw&version=(buildnum)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz&target=f7&channel=dev-cfw&version=(buildnum)c) > `c`
What ` `, `e`, `c`, `r` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-n-r-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
**Direct tgz download links:**
[Default](https://unleashedflip.com/fw/dev/flipper-z-f7-update-(buildnum).tgz) > ` `
[Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)e.tgz) > `e`
[No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)c.tgz) > `c`
[RGB patch - only for hardware mod!](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(buildnum)r.tgz) > `r`

View File

@@ -0,0 +1,13 @@
FROM ubuntu:hirsute
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
ca-certificates \
git \
wget \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]

View File

@@ -0,0 +1,10 @@
#!/bin/bash
if [ -z "$1" ]; then
bash
else
echo "Running $1"
set -ex
bash -c "$1"
fi

View File

@@ -6,11 +6,10 @@
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
### Install FW via Web Updater:
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&channel=release-cfw&version=(releasever)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&channel=release-cfw&version=(releasever)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&channel=release-cfw&version=(releasever)c) > `c`
[RGB patch - only for hardware mod!](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)r.tgz&channel=release-cfw&version=(releasever)r) > `r`
What ` `, `e`, `c`, `r` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-n-r-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&target=f7&channel=release-cfw&version=(releasever)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&target=f7&channel=release-cfw&version=(releasever)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&target=f7&channel=release-cfw&version=(releasever)c) > `c`
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
### Direct tgz download links:
[Default](https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz) > `c` - [RGB patch - only for hardware mod!](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)r.tgz) > `r`
[Default](https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz) > ` ` - [Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz) > `e` - [No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz) > `c`

View File

@@ -7,16 +7,14 @@
How to [install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)?
**Install FW via Web Updater:**
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&channel=release-cfw&version=(releasever)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&channel=release-cfw&version=(releasever)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&channel=release-cfw&version=(releasever)c) > `c`
[RGB patch - only for hardware mod!](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)r.tgz&channel=release-cfw&version=(releasever)r) > `r`
[Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz&target=f7&channel=release-cfw&version=(releasever)) > ` `
[Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz&target=f7&channel=release-cfw&version=(releasever)e) > `e`
[No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz&target=f7&channel=release-cfw&version=(releasever)c) > `c`
What ` `, `e`, `c`, `r` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-n-r-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
What ` `, `e`, `c` means? -> [versions info](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/CHANGELOG.md#what-e---c-means-what-i-need-to-download-if-i-dont-want-to-use-web-updater)
**Direct tgz download links:**
[Default](https://unleashedflip.com/fw/(releasever)/flipper-z-f7-update-(releasever).tgz) > ` `
[Extra apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)e.tgz) > `e`
[No apps](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)c.tgz) > `c`
[RGB patch - only for hardware mod!](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-(releasever)r.tgz) > `r`

View File

@@ -1,675 +0,0 @@
diff --git a/applications/services/notification/notification_app.c b/applications/services/notification/notification_app.c
index 35d2fe6..1af97e2 100644
--- a/applications/services/notification/notification_app.c
+++ b/applications/services/notification/notification_app.c
@@ -9,6 +9,7 @@
#include "notification.h"
#include "notification_messages.h"
#include "notification_app.h"
+#include "applications/settings/notification_settings/rgb_backlight.h"
#define TAG "NotificationSrv"
@@ -616,6 +617,7 @@ int32_t notification_srv(void* p) {
break;
case SaveSettingsMessage:
notification_save_settings(app);
+ rgb_backlight_save_settings();
break;
case LoadSettingsMessage:
notification_load_settings(app);
diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c
index 2462b32..8e045ce 100644
--- a/applications/settings/notification_settings/notification_settings_app.c
+++ b/applications/settings/notification_settings/notification_settings_app.c
@@ -3,6 +3,7 @@
#include <gui/modules/variable_item_list.h>
#include <gui/view_dispatcher.h>
#include <lib/toolbox/value_index.h>
+#include <applications/settings/notification_settings/rgb_backlight.h>
#define MAX_NOTIFICATION_SETTINGS 4
@@ -13,6 +14,8 @@ typedef struct {
VariableItemList* variable_item_list;
} NotificationAppSettings;
+static VariableItem* temp_item;
+
static const NotificationSequence sequence_note_c = {
&message_note_c5,
&message_delay_100,
@@ -168,6 +171,59 @@ static void vibro_changed(VariableItem* item) {
notification_message(app->notification, &sequence_single_vibro);
}
+// Set RGB backlight color
+static void color_changed(VariableItem* item) {
+ NotificationAppSettings* app = variable_item_get_context(item);
+ uint8_t index = variable_item_get_current_value_index(item);
+ rgb_backlight_set_color(index);
+ variable_item_set_current_value_text(item, rgb_backlight_get_color_text(index));
+ notification_message(app->notification, &sequence_display_backlight_on);
+}
+
+// TODO: refactor and fix this
+static void color_set_custom_red(VariableItem* item) {
+ NotificationAppSettings* app = variable_item_get_context(item);
+ uint8_t index = variable_item_get_current_value_index(item);
+ rgb_backlight_set_custom_color(index, 0);
+ char valtext[4] = {};
+ snprintf(valtext, sizeof(valtext), "%d", index);
+ variable_item_set_current_value_text(item, valtext);
+ rgb_backlight_set_color(13);
+ rgb_backlight_update(app->notification->settings.display_brightness * 0xFF, true);
+ // Set to custom color explicitly
+ variable_item_set_current_value_index(temp_item, 13);
+ variable_item_set_current_value_text(temp_item, rgb_backlight_get_color_text(13));
+ notification_message(app->notification, &sequence_display_backlight_on);
+}
+static void color_set_custom_green(VariableItem* item) {
+ NotificationAppSettings* app = variable_item_get_context(item);
+ uint8_t index = variable_item_get_current_value_index(item);
+ rgb_backlight_set_custom_color(index, 1);
+ char valtext[4] = {};
+ snprintf(valtext, sizeof(valtext), "%d", index);
+ variable_item_set_current_value_text(item, valtext);
+ rgb_backlight_set_color(13);
+ rgb_backlight_update(app->notification->settings.display_brightness * 0xFF, true);
+ // Set to custom color explicitly
+ variable_item_set_current_value_index(temp_item, 13);
+ variable_item_set_current_value_text(temp_item, rgb_backlight_get_color_text(13));
+ notification_message(app->notification, &sequence_display_backlight_on);
+}
+static void color_set_custom_blue(VariableItem* item) {
+ NotificationAppSettings* app = variable_item_get_context(item);
+ uint8_t index = variable_item_get_current_value_index(item);
+ rgb_backlight_set_custom_color(index, 2);
+ char valtext[4] = {};
+ snprintf(valtext, sizeof(valtext), "%d", index);
+ variable_item_set_current_value_text(item, valtext);
+ rgb_backlight_set_color(13);
+ rgb_backlight_update(app->notification->settings.display_brightness * 0xFF, true);
+ // Set to custom color explicitly
+ variable_item_set_current_value_index(temp_item, 13);
+ variable_item_set_current_value_text(temp_item, rgb_backlight_get_color_text(13));
+ notification_message(app->notification, &sequence_display_backlight_on);
+}
+
static uint32_t notification_app_settings_exit(void* context) {
UNUSED(context);
return VIEW_NONE;
@@ -192,8 +248,40 @@ static NotificationAppSettings* alloc_settings(void) {
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, contrast_text[value_index]);
+ // RGB Colors
+ item = variable_item_list_add(
+ app->variable_item_list, "LCD Color", rgb_backlight_get_color_count(), color_changed, app);
+ value_index = rgb_backlight_get_settings()->display_color_index;
+ variable_item_set_current_value_index(item, value_index);
+ variable_item_set_current_value_text(item, rgb_backlight_get_color_text(value_index));
+ temp_item = item;
+
+ // Custom Color - REFACTOR THIS
+ item = variable_item_list_add(
+ app->variable_item_list, "Custom Red", 255, color_set_custom_red, app);
+ value_index = rgb_backlight_get_settings()->custom_r;
+ variable_item_set_current_value_index(item, value_index);
+ char valtext[4] = {};
+ snprintf(valtext, sizeof(valtext), "%d", value_index);
+ variable_item_set_current_value_text(item, valtext);
+
+ item = variable_item_list_add(
+ app->variable_item_list, "Custom Green", 255, color_set_custom_green, app);
+ value_index = rgb_backlight_get_settings()->custom_g;
+ variable_item_set_current_value_index(item, value_index);
+ snprintf(valtext, sizeof(valtext), "%d", value_index);
+ variable_item_set_current_value_text(item, valtext);
+
+ item = variable_item_list_add(
+ app->variable_item_list, "Custom Blue", 255, color_set_custom_blue, app);
+ value_index = rgb_backlight_get_settings()->custom_b;
+ variable_item_set_current_value_index(item, value_index);
+ snprintf(valtext, sizeof(valtext), "%d", value_index);
+ variable_item_set_current_value_text(item, valtext);
+ // End of RGB
+
item = variable_item_list_add(
- app->variable_item_list, "LCD Backlight", BACKLIGHT_COUNT, backlight_changed, app);
+ app->variable_item_list, "LCD Brightness", BACKLIGHT_COUNT, backlight_changed, app);
value_index = value_index_float(
app->notification->settings.display_brightness, backlight_value, BACKLIGHT_COUNT);
variable_item_set_current_value_index(item, value_index);
diff --git a/applications/settings/notification_settings/rgb_backlight.c b/applications/settings/notification_settings/rgb_backlight.c
new file mode 100644
index 0000000..4edd775
--- /dev/null
+++ b/applications/settings/notification_settings/rgb_backlight.c
@@ -0,0 +1,217 @@
+/*
+ RGB backlight FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include "rgb_backlight.h"
+#include <furi_hal.h>
+#include <storage/storage.h>
+
+#define RGB_BACKLIGHT_SETTINGS_VERSION 6
+#define RGB_BACKLIGHT_SETTINGS_FILE_NAME ".rgb_backlight.settings"
+#define RGB_BACKLIGHT_SETTINGS_PATH INT_PATH(RGB_BACKLIGHT_SETTINGS_FILE_NAME)
+
+#define COLOR_COUNT (sizeof(colors) / sizeof(RGBBacklightColor))
+
+#define TAG "RGB Backlight"
+
+static RGBBacklightSettings rgb_settings = {
+ .version = RGB_BACKLIGHT_SETTINGS_VERSION,
+ .display_color_index = 0,
+ .custom_r = 254,
+ .custom_g = 254,
+ .custom_b = 254,
+ .settings_is_loaded = false};
+
+static const RGBBacklightColor colors[] = {
+ {"Orange", 255, 60, 0},
+ {"Yellow", 255, 144, 0},
+ {"Spring", 167, 255, 0},
+ {"Lime", 0, 255, 0},
+ {"Aqua", 0, 255, 127},
+ {"Cyan", 0, 210, 210},
+ {"Azure", 0, 127, 255},
+ {"Blue", 0, 0, 255},
+ {"Purple", 127, 0, 255},
+ {"Magenta", 210, 0, 210},
+ {"Pink", 255, 0, 127},
+ {"Red", 255, 0, 0},
+ {"White", 254, 210, 200},
+ {"Custom", 0, 0, 0},
+};
+
+uint8_t rgb_backlight_get_color_count(void) {
+ return COLOR_COUNT;
+}
+
+const char* rgb_backlight_get_color_text(uint8_t index) {
+ return colors[index].name;
+}
+
+void rgb_backlight_load_settings(void) {
+ // Do not load settings if we are in other boot modes than normal
+ if(furi_hal_rtc_get_boot_mode() != FuriHalRtcBootModeNormal) {
+ rgb_settings.settings_is_loaded = true;
+ return;
+ }
+
+ // Wait for all required services to start and create their records
+ uint8_t timeout = 0;
+ while(!furi_record_exists(RECORD_STORAGE)) {
+ timeout++;
+ if(timeout > 150) {
+ rgb_settings.settings_is_loaded = true;
+ return;
+ }
+ furi_delay_ms(5);
+ }
+
+ RGBBacklightSettings settings;
+ File* file = storage_file_alloc(furi_record_open(RECORD_STORAGE));
+ const size_t settings_size = sizeof(RGBBacklightSettings);
+
+ FURI_LOG_D(TAG, "loading settings from \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH);
+ bool fs_result =
+ storage_file_open(file, RGB_BACKLIGHT_SETTINGS_PATH, FSAM_READ, FSOM_OPEN_EXISTING);
+
+ if(fs_result) {
+ uint16_t bytes_count = storage_file_read(file, &settings, settings_size);
+
+ if(bytes_count != settings_size) {
+ fs_result = false;
+ }
+ }
+
+ if(fs_result) {
+ FURI_LOG_D(TAG, "load success");
+ if(settings.version != RGB_BACKLIGHT_SETTINGS_VERSION) {
+ FURI_LOG_E(
+ TAG,
+ "version(%d != %d) mismatch",
+ settings.version,
+ RGB_BACKLIGHT_SETTINGS_VERSION);
+ } else {
+ memcpy(&rgb_settings, &settings, settings_size);
+ }
+ } else {
+ FURI_LOG_E(TAG, "load failed, %s", storage_file_get_error_desc(file));
+ }
+
+ storage_file_close(file);
+ storage_file_free(file);
+ furi_record_close(RECORD_STORAGE);
+ rgb_settings.settings_is_loaded = true;
+}
+
+void rgb_backlight_save_settings(void) {
+ RGBBacklightSettings settings;
+ File* file = storage_file_alloc(furi_record_open(RECORD_STORAGE));
+ const size_t settings_size = sizeof(RGBBacklightSettings);
+
+ FURI_LOG_D(TAG, "saving settings to \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH);
+
+ memcpy(&settings, &rgb_settings, settings_size);
+
+ bool fs_result =
+ storage_file_open(file, RGB_BACKLIGHT_SETTINGS_PATH, FSAM_WRITE, FSOM_CREATE_ALWAYS);
+
+ if(fs_result) {
+ uint16_t bytes_count = storage_file_write(file, &settings, settings_size);
+
+ if(bytes_count != settings_size) {
+ fs_result = false;
+ }
+ }
+
+ if(fs_result) {
+ FURI_LOG_D(TAG, "save success");
+ } else {
+ FURI_LOG_E(TAG, "save failed, %s", storage_file_get_error_desc(file));
+ }
+
+ storage_file_close(file);
+ storage_file_free(file);
+ furi_record_close(RECORD_STORAGE);
+}
+
+RGBBacklightSettings* rgb_backlight_get_settings(void) {
+ if(!rgb_settings.settings_is_loaded) {
+ rgb_backlight_load_settings();
+ }
+ return &rgb_settings;
+}
+
+void rgb_backlight_set_color(uint8_t color_index) {
+ if(color_index > (rgb_backlight_get_color_count() - 1)) color_index = 0;
+ rgb_settings.display_color_index = color_index;
+}
+
+void rgb_backlight_set_custom_color(uint8_t color, uint8_t index) {
+ if(index > 2) return;
+ if(index == 0) {
+ rgb_settings.custom_r = color;
+ } else if(index == 1) {
+ rgb_settings.custom_g = color;
+ } else if(index == 2) {
+ rgb_settings.custom_b = color;
+ }
+}
+
+void rgb_backlight_update(uint8_t brightness, bool bypass) {
+ if(!rgb_settings.settings_is_loaded) {
+ rgb_backlight_load_settings();
+ }
+
+ if(!bypass) {
+ static uint8_t last_color_index = 255;
+ static uint8_t last_brightness = 123;
+
+ if(last_brightness == brightness && last_color_index == rgb_settings.display_color_index) {
+ return;
+ }
+
+ last_brightness = brightness;
+ last_color_index = rgb_settings.display_color_index;
+ }
+
+ for(uint8_t i = 0; i < SK6805_get_led_count(); i++) {
+ if(rgb_settings.display_color_index == 13) {
+ uint8_t r = rgb_settings.custom_r * (brightness / 255.0f);
+ uint8_t g = rgb_settings.custom_g * (brightness / 255.0f);
+ uint8_t b = rgb_settings.custom_b * (brightness / 255.0f);
+
+ SK6805_set_led_color(i, r, g, b);
+ } else {
+ if((colors[rgb_settings.display_color_index].red == 0) &&
+ (colors[rgb_settings.display_color_index].green == 0) &&
+ (colors[rgb_settings.display_color_index].blue == 0)) {
+ uint8_t r = colors[0].red * (brightness / 255.0f);
+ uint8_t g = colors[0].green * (brightness / 255.0f);
+ uint8_t b = colors[0].blue * (brightness / 255.0f);
+
+ SK6805_set_led_color(i, r, g, b);
+ } else {
+ uint8_t r = colors[rgb_settings.display_color_index].red * (brightness / 255.0f);
+ uint8_t g = colors[rgb_settings.display_color_index].green * (brightness / 255.0f);
+ uint8_t b = colors[rgb_settings.display_color_index].blue * (brightness / 255.0f);
+
+ SK6805_set_led_color(i, r, g, b);
+ }
+ }
+ }
+
+ SK6805_update();
+}
diff --git a/applications/settings/notification_settings/rgb_backlight.h b/applications/settings/notification_settings/rgb_backlight.h
new file mode 100644
index 0000000..f215ed3
--- /dev/null
+++ b/applications/settings/notification_settings/rgb_backlight.h
@@ -0,0 +1,91 @@
+/*
+ RGB backlight FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include <furi.h>
+#include "SK6805.h"
+
+typedef struct {
+ char* name;
+ uint8_t red;
+ uint8_t green;
+ uint8_t blue;
+} RGBBacklightColor;
+
+typedef struct {
+ uint8_t version;
+ uint8_t display_color_index;
+ uint8_t custom_r;
+ uint8_t custom_g;
+ uint8_t custom_b;
+ bool settings_is_loaded;
+} RGBBacklightSettings;
+
+/**
+ * @brief Получить текущие настройки RGB-подсветки
+ *
+ * @return Указатель на структуру настроек
+ */
+RGBBacklightSettings* rgb_backlight_get_settings(void);
+
+/**
+ * @brief Загрузить настройки подсветки с SD-карты
+ */
+void rgb_backlight_load_settings(void);
+
+/**
+ * @brief Сохранить текущие настройки RGB-подсветки
+ */
+void rgb_backlight_save_settings(void);
+
+/**
+ * @brief Применить текущие настройки RGB-подсветки
+ *
+ * @param brightness Яркость свечения (0-255)
+ * @param bypass Применить настройки принудительно
+ */
+void rgb_backlight_update(uint8_t brightness, bool bypass);
+
+/**
+ * @brief Установить цвет RGB-подсветки
+ *
+ * @param color_index Индекс цвета (0 - rgb_backlight_get_color_count())
+ */
+void rgb_backlight_set_color(uint8_t color_index);
+
+/**
+ * @brief Set custom color values by index - 0=R 1=G 2=B
+ *
+ * @param color - color value (0-255)
+ * @param index - color index (0-2) 0=R 1=G 2=B
+ */
+void rgb_backlight_set_custom_color(uint8_t color, uint8_t index);
+
+/**
+ * @brief Получить количество доступных цветов
+ *
+ * @return Число доступных вариантов цвета
+ */
+uint8_t rgb_backlight_get_color_count(void);
+
+/**
+ * @brief Получить текстовое название цвета
+ *
+ * @param index Индекс из доступных вариантов цвета
+ * @return Указатель на строку с названием цвета
+ */
+const char* rgb_backlight_get_color_text(uint8_t index);
diff --git a/lib/drivers/SK6805.c b/lib/drivers/SK6805.c
new file mode 100644
index 0000000..b89f82a
--- /dev/null
+++ b/lib/drivers/SK6805.c
@@ -0,0 +1,101 @@
+/*
+ SK6805 FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#include "SK6805.h"
+#include <furi_hal.h>
+
+/* Настройки */
+#define SK6805_LED_COUNT 3 //Количество светодиодов на плате подсветки
+#define SK6805_LED_PIN &led_pin //Порт подключения светодиодов
+
+#ifdef FURI_DEBUG
+#define DEBUG_PIN &gpio_ext_pa7
+#define DEBUG_INIT() \
+ furi_hal_gpio_init(DEBUG_PIN, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh)
+#define DEBUG_SET_HIGH() furi_hal_gpio_write(DEBUG_PIN, true)
+#define DEBUG_SET_LOW() furi_hal_gpio_write(DEBUG_PIN, false)
+#else
+#define DEBUG_INIT()
+#define DEBUG_SET_HIGH()
+#define DEBUG_SET_LOW()
+#endif
+
+static const GpioPin led_pin = {.port = GPIOA, .pin = LL_GPIO_PIN_8};
+static uint8_t led_buffer[SK6805_LED_COUNT][3];
+
+void SK6805_init(void) {
+ DEBUG_INIT();
+ furi_hal_gpio_write(SK6805_LED_PIN, false);
+ furi_hal_gpio_init(SK6805_LED_PIN, GpioModeOutputPushPull, GpioPullNo, GpioSpeedVeryHigh);
+}
+
+uint8_t SK6805_get_led_count(void) {
+ return (const uint8_t)SK6805_LED_COUNT;
+}
+void SK6805_set_led_color(uint8_t led_index, uint8_t r, uint8_t g, uint8_t b) {
+ furi_check(led_index < SK6805_LED_COUNT);
+
+ led_buffer[led_index][0] = g;
+ led_buffer[led_index][1] = r;
+ led_buffer[led_index][2] = b;
+}
+
+void SK6805_update(void) {
+ SK6805_init();
+ FURI_CRITICAL_ENTER();
+ uint32_t end;
+ /* Последовательная отправка цветов светодиодов */
+ for(uint8_t lednumber = 0; lednumber < SK6805_LED_COUNT; lednumber++) {
+ //Последовательная отправка цветов светодиода
+ for(uint8_t color = 0; color < 3; color++) {
+ //Последовательная отправка битов цвета
+ uint8_t i = 0b10000000;
+ while(i != 0) {
+ if(led_buffer[lednumber][color] & (i)) {
+ furi_hal_gpio_write(SK6805_LED_PIN, true);
+ DEBUG_SET_HIGH();
+ end = DWT->CYCCNT + 30;
+ //T1H 600 us (615 us)
+ while(DWT->CYCCNT < end) {
+ }
+ furi_hal_gpio_write(SK6805_LED_PIN, false);
+ DEBUG_SET_LOW();
+ end = DWT->CYCCNT + 26;
+ //T1L 600 us (587 us)
+ while(DWT->CYCCNT < end) {
+ }
+ } else {
+ furi_hal_gpio_write(SK6805_LED_PIN, true);
+ DEBUG_SET_HIGH();
+ end = DWT->CYCCNT + 11;
+ //T0H 300 ns (312 ns)
+ while(DWT->CYCCNT < end) {
+ }
+ furi_hal_gpio_write(SK6805_LED_PIN, false);
+ DEBUG_SET_LOW();
+ end = DWT->CYCCNT + 43;
+ //T0L 900 ns (890 ns)
+ while(DWT->CYCCNT < end) {
+ }
+ }
+ i >>= 1;
+ }
+ }
+ }
+ FURI_CRITICAL_EXIT();
+}
diff --git a/lib/drivers/SK6805.h b/lib/drivers/SK6805.h
new file mode 100644
index 0000000..c97054f
--- /dev/null
+++ b/lib/drivers/SK6805.h
@@ -0,0 +1,51 @@
+/*
+ SK6805 FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+#ifndef SK6805_H_
+#define SK6805_H_
+
+#include <furi.h>
+
+/**
+ * @brief Инициализация линии управления подсветкой
+ */
+void SK6805_init(void);
+
+/**
+ * @brief Получить количество светодиодов в подсветке
+ *
+ * @return Количество светодиодов
+ */
+uint8_t SK6805_get_led_count(void);
+
+/**
+ * @brief Установить цвет свечения светодиода
+ *
+ * @param led_index номер светодиода (от 0 до SK6805_get_led_count())
+ * @param r значение красного (0-255)
+ * @param g значение зелёного (0-255)
+ * @param b значение синего (0-255)
+ */
+void SK6805_set_led_color(uint8_t led_index, uint8_t r, uint8_t g, uint8_t b);
+
+/**
+ * @brief Обновление состояния подсветки дисплея
+ */
+void SK6805_update(void);
+
+#endif /* SK6805_H_ */
diff --git a/targets/f7/furi_hal/furi_hal_light.c b/targets/f7/furi_hal/furi_hal_light.c
index 621478d..ef15153 100644
--- a/targets/f7/furi_hal/furi_hal_light.c
+++ b/targets/f7/furi_hal/furi_hal_light.c
@@ -3,6 +3,7 @@
#include <furi_hal_light.h>
#include <lp5562.h>
#include <stdint.h>
+#include <applications/settings/notification_settings/rgb_backlight.h>
#define LED_CURRENT_RED (50u)
#define LED_CURRENT_GREEN (50u)
@@ -31,22 +32,21 @@ void furi_hal_light_init(void) {
}
void furi_hal_light_set(Light light, uint8_t value) {
- furi_hal_i2c_acquire(&furi_hal_i2c_handle_power);
- if(light & LightRed) {
- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelRed, value);
- }
- if(light & LightGreen) {
- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelGreen, value);
- }
- if(light & LightBlue) {
- lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelBlue, value);
- }
if(light & LightBacklight) {
- uint8_t prev = lp5562_get_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelWhite);
- lp5562_execute_ramp(
- &furi_hal_i2c_handle_power, LP5562Engine1, LP5562ChannelWhite, prev, value, 100);
+ rgb_backlight_update(value, false);
+ } else {
+ furi_hal_i2c_acquire(&furi_hal_i2c_handle_power);
+ if(light & LightRed) {
+ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelRed, value);
+ }
+ if(light & LightGreen) {
+ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelGreen, value);
+ }
+ if(light & LightBlue) {
+ lp5562_set_channel_value(&furi_hal_i2c_handle_power, LP5562ChannelBlue, value);
+ }
+ furi_hal_i2c_release(&furi_hal_i2c_handle_power);
}
- furi_hal_i2c_release(&furi_hal_i2c_handle_power);
}
void furi_hal_light_blink_start(Light light, uint8_t brightness, uint16_t on_time, uint16_t period) {

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 872 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 861 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 853 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 856 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 863 B

View File

@@ -0,0 +1,23 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 10
Active frames: 18
Frames order: 0 1 2 1 0 1 2 1 0 1 2 3 4 5 6 5 4 7 2 8 9 10 11 10 9 10 11 12
Active cycles: 1
Frame rate: 2
Duration: 3600
Active cooldown: 7
Bubble slots: 1
Slot: 0
X: 11
Y: 19
Text: HAPPY\nHOLIDAYS!
AlignH: Right
AlignV: Center
StartFrame: 22
EndFrame: 27

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@@ -0,0 +1,14 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 4
Active frames: 0
Frames order: 0 1 2 3
Active cycles: 0
Frame rate: 2
Duration: 3600
Active cooldown: 0
Bubble slots: 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 816 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 772 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 867 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 866 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 795 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 870 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 852 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 830 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 887 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 890 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 799 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 817 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

View File

@@ -0,0 +1,23 @@
Filetype: Flipper Animation
Version: 1
Width: 128
Height: 64
Passive frames: 18
Active frames: 19
Frames order: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
Active cycles: 1
Frame rate: 2
Duration: 3600
Active cooldown: 7
Bubble slots: 1
Slot: 0
X: 21
Y: 25
Text: AAAAaAAAAHHh!!
AlignH: Right
AlignV: Bottom
StartFrame: 30
EndFrame: 32

View File

@@ -0,0 +1,30 @@
Filetype: Flipper Animation Manifest
Version: 1
Name: L1_Happy_holidays_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 3
Name: L1_Sleigh_ride_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4
Name: L1_New_year_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4
Name: L1_Halloween_128x64
Min butthurt: 0
Max butthurt: 14
Min level: 1
Max level: 3
Weight: 4

View File

@@ -81,34 +81,13 @@ steps:
- mv dist/f7-C/* artifacts-extra-apps/
- ls -laS artifacts-extra-apps
- ls -laS artifacts-extra-apps/f7-update-${DRONE_TAG}e
environment:
FBT_TOOLS_CUSTOM_LINK:
from_secret: fbt_link
- name: "Build with RGB patch"
image: hfdj/fztools
pull: never
commands:
- git apply .ci_files/rgb.patch
- export DIST_SUFFIX=${DRONE_TAG}r
- export WORKFLOW_BRANCH_OR_TAG=release-cfw-rgb
- export FORCE_NO_DIRTY=yes
- export FBT_GIT_SUBMODULE_SHALLOW=1
- rm -f build/f7-firmware-C/toolbox/version.*
- ./fbt COMPACT=1 DEBUG=0 updater_package
- mkdir artifacts-rgb-patch
- mv dist/f7-C/* artifacts-rgb-patch/
- ls -laS artifacts-rgb-patch
- ls -laS artifacts-rgb-patch/f7-update-${DRONE_TAG}r
- sed -i 's/(version)/'${DRONE_TAG}'/g' CHANGELOG.md
- echo '# Install FW via Web Updater:' >> CHANGELOG.md
- echo '### [Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/${DRONE_TAG}/flipper-z-f7-update-'${DRONE_TAG}'.tgz&channel=release-cfw&version='${DRONE_TAG}') > ` `' >> CHANGELOG.md
- echo '### [Default](https://lab.flipper.net/?url=https://unleashedflip.com/fw/${DRONE_TAG}/flipper-z-f7-update-'${DRONE_TAG}'.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}') > ` `' >> CHANGELOG.md
- echo '' >> CHANGELOG.md
- echo '### [Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&channel=release-cfw&version='${DRONE_TAG}'e) > `e`' >> CHANGELOG.md
- echo '### [Extra apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'e.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'e) > `e`' >> CHANGELOG.md
- echo '' >> CHANGELOG.md
- echo '### [No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'c.tgz&channel=release-cfw&version='${DRONE_TAG}'c) > `c`' >> CHANGELOG.md
- echo '' >> CHANGELOG.md
- echo '### [RGB patch - only for hardware mod!](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz&channel=release-cfw&version='${DRONE_TAG}'r) > `r`' >> CHANGELOG.md
- echo '### [No apps](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'c.tgz&target=f7&channel=release-cfw&version='${DRONE_TAG}'c) > `c`' >> CHANGELOG.md
environment:
FBT_TOOLS_CUSTOM_LINK:
from_secret: fbt_link
@@ -117,20 +96,16 @@ steps:
image: joshkeegan/zip
commands:
- cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.tgz .
- cp artifacts-rgb-patch/flipper-z-f7-update-${DRONE_TAG}r.tgz .
- cp artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.tgz .
- cp artifacts-default/flipper-z-f7-update-${DRONE_TAG}.tgz .
- zip -r artifacts-extra-apps/flipper-z-f7-update-${DRONE_TAG}e.zip artifacts-extra-apps/f7-update-${DRONE_TAG}e
- zip -r artifacts-rgb-patch/flipper-z-f7-update-${DRONE_TAG}r.zip artifacts-rgb-patch/f7-update-${DRONE_TAG}r
- zip -r artifacts-clean/flipper-z-f7-update-${DRONE_TAG}c.zip artifacts-clean/f7-update-${DRONE_TAG}c
- zip -r artifacts-default/flipper-z-f7-update-${DRONE_TAG}.zip artifacts-default/f7-update-${DRONE_TAG}
- tar czpf artifacts-default/flipper-z-any-scripts-${DRONE_TAG}.tgz scripts
- rm -rf artifacts-extra-apps/f7-update-${DRONE_TAG}
- rm -rf artifacts-rgb-patch/f7-update-${DRONE_TAG}
- rm -rf artifacts-clean/f7-update-${DRONE_TAG}
- rm -rf artifacts-default/f7-update-${DRONE_TAG}
- ls -laS artifacts-extra-apps
- ls -laS artifacts-rgb-patch
- ls -laS artifacts-clean
- ls -laS artifacts-default
- mv artifacts-default/ ${DRONE_TAG}
@@ -172,21 +147,6 @@ steps:
from_secret: dep_target_extra
source: flipper-z-f7-update-${DRONE_TAG}e.tgz
- name: "Upload rgb patch version to updates srv"
image: appleboy/drone-scp:linux-amd64
settings:
host:
from_secret: dep_host
username:
from_secret: dep_user
password:
from_secret: dep_passwd
port:
from_secret: dep_port
target:
from_secret: dep_target_extra
source: flipper-z-f7-update-${DRONE_TAG}r.tgz
- name: "Upload clean version to updates srv"
image: appleboy/drone-scp:linux-amd64
settings:
@@ -215,7 +175,6 @@ steps:
- ${DRONE_TAG}/*.tgz
- ${DRONE_TAG}/*.zip
- artifacts-extra-apps/*.tgz
- artifacts-rgb-patch/*.tgz
- artifacts-clean/*.tgz
title: ${DRONE_TAG}
note: CHANGELOG.md
@@ -245,7 +204,7 @@ steps:
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
- chmod +x ./discord.sh
- sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
- head -c 1544 changelogcut.txt > changelogcutfin.txt
- head -c 1200 changelogcut.txt > changelogcutfin.txt
- truncate -s -1 changelogcutfin.txt
- tail -c +2 changelogcutfin.txt > changelogready.txt
- rm -f changelogcut.txt
@@ -399,30 +358,10 @@ steps:
FBT_TOOLS_CUSTOM_LINK:
from_secret: fbt_link
- name: "Build dev with rgb patch"
image: hfdj/fztools
pull: never
commands:
- git apply .ci_files/rgb.patch
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}r
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw-rgb
- export FORCE_NO_DIRTY=yes
- export FBT_GIT_SUBMODULE_SHALLOW=1
- rm -f build/f7-firmware-C/toolbox/version.*
- ./fbt COMPACT=1 DEBUG=0 updater_package
- mkdir artifacts-rgb-patch
- mv dist/f7-C/* artifacts-rgb-patch/
- ls -laS artifacts-rgb-patch
- ls -laS artifacts-rgb-patch/f7-update-${DRONE_BUILD_NUMBER}r
environment:
FBT_TOOLS_CUSTOM_LINK:
from_secret: fbt_link
- name: "Bundle self-update packages"
image: joshkeegan/zip
commands:
- cp artifacts-extra-apps/flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz .
- cp artifacts-rgb-patch/flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz .
- cp artifacts-clean/flipper-z-f7-update-${DRONE_BUILD_NUMBER}c.tgz .
- cp artifacts-default/flipper-z-f7-update-${DRONE_BUILD_NUMBER}.tgz .
- rm -rf artifacts-default/f7-update-${DRONE_BUILD_NUMBER}
@@ -481,21 +420,6 @@ steps:
from_secret: dep_target_extra
source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}e.tgz
- name: "Upload rgb patch version to updates srv"
image: appleboy/drone-scp:linux-amd64
settings:
host:
from_secret: dep_host
username:
from_secret: dep_user
password:
from_secret: dep_passwd
port:
from_secret: dep_port
target:
from_secret: dep_target_extra
source: flipper-z-f7-update-${DRONE_BUILD_NUMBER}r.tgz
- name: "Upload clean version to updates srv"
image: appleboy/drone-scp:linux-amd64
settings:
@@ -532,7 +456,7 @@ steps:
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
- chmod +x ./discord.sh
- sed -n '/## Main changes/,/## Other changes/p' CHANGELOG.md | sed -e 's/## Main changes//' -e 's/## Other changes//' > changelogcut.txt
- head -c 1544 changelogcut.txt > changelogcutfin.txt
- head -c 1200 changelogcut.txt > changelogcutfin.txt
- truncate -s -1 changelogcutfin.txt
- tail -c +2 changelogcutfin.txt > changelogready.txt
- rm -f changelogcut.txt

4
.gitignore vendored
View File

@@ -73,3 +73,7 @@ PVS-Studio.log
# JS packages
node_modules/
# cli_perf script output in case of errors
/block.bin
/return_block.bin

View File

@@ -12,11 +12,20 @@
"SConstruct": "python",
"*.fam": "python"
},
"clangd.checkUpdates": false,
"clangd.path": "${workspaceFolder}/toolchain/current/bin/clangd@FBT_PLATFORM_EXECUTABLE_EXT@",
"clangd.arguments": [
"--query-driver=**/arm-none-eabi-*",
"--compile-commands-dir=${workspaceFolder}/build/latest",
"--clang-tidy",
"--header-insertion=never"
]
],
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/**/modules/**/objects/**": true,
"**/.git/**/subtree-cache/**": true,
"**/.git/**/rr-cache/**": true,
"build/**": true,
"toolchain/**": true
}
}

View File

@@ -1,123 +1,33 @@
## Main changes
- Current API: 78.1
- SubGHz:
- Frequency analyzer fixes and improvements:
- **Enforce int module** (like in OFW) usage due to lack of required hardware on external boards (PathIsolate (+rf switch for multiple paths)) and incorrect usage and/or understanding the purpose of frequency analyzer app by users, it should be used only to get frequency of the remote placed around 1-10cm around flipper's left corner
- **Fix possible GSM mobile towers signal interference** by limiting upper frequency to 920mhz max
- Fix buttons logic, **fix crash**
- Protocol improvements:
- **Keeloq: Monarch full support, with add manually option** (thanks @ashphx !)
- **Princeton support for second button encoding type** (8bit)
- GangQi fix serial check and remove broken check from UI
- Hollarm add more button codes (thanks to @mishamyte for captures)
- Misc:
- Add extra settings to disable GPIO pins control used for external modules amplifiers and/or LEDs (in radio settings menu with debug ON)
- NFC:
- Read Ultralight block by block (**fix password protected MFUL reading issue**) (by @mishamyte | PR #825 #826)
- **Update NDEF parser** (SLIX and MFC support) (by @luu176 and @jaylikesbunda and @Willy-JL)
- OFW PR 3822: **MIFARE Classic Key Recovery Improvements** (by @noproto)
- OFW PR 3930: NFC Emulation freeze fix (by @RebornedBrain)
- OFW: H World Hotel Chain Room Key Parser
- OFW: Parser for Tianjin Railway Transit
- New keys in system dict
- Infrared:
- **Add LEDs universal remote** (DB by @amec0e)
- Update universal remote assets (by @amec0e | PR #813 #816)
- JS:
- OFW: JS modules & SDK -> **Breaking API change**
- **Backporting custom features** (read about most of the changes after other changes section) (by @xMasterX and @Willy-JL)
- Add i2c & SPI module (by @jamisonderek)
* OFW: FuriHal, drivers: rework gauge initialization routine -> **Downgrade to older releases may break battery UI percent indicator, upgrade to this or newer version to restore**
* OFW: heap: increased size -> **More free RAM!!**
* OFW: New layout for BadUSB (es-LA)
* OFW: Require PIN on boot
- Current API: 87.1
* SubGHz: **Counter Edit option with UI** (PR #933 | by @Dmitry422) (with Debug enabled only) (Saved - open file - Signal Settings - Edit Counter)
* SubGHz: **UI for Counter Experimental Mode** (PR #930 | by @Dmitry422) (with Debug enabled only) (Saved - open file - Signal Settings - Counter Mode) (see docs below)
* SubGHz: **Counter modes for Keeloq, CAME Atomo, Nice Flor S, AlutechAT4N** - [see docs](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzCounterMode.md)
* SubGHz: Add AN-Motors AT4 button on arrow keys (0xC)
* SubGHz: Add IL-100 Smart support for Add manually
* SubGHz: Add **experimental counter overflow mode** (OFEX), replicates how some key duplicators work, DO NOT USE if you don't know what you are doing, it will reset your counter value! (accesible with debug on in radio settings - counter incr.)
* SubGHz: **Return Honeywell Sec** with fixes and improvements (by htotoo & LiQuiDz & xMasterX)
* NFC: Keys found in key cache are now used in Nested attacks, deleting key cache is no longer required (by @noproto)
* NFC: MFKey 4.0, MIFARE Classic Static Encrypted Nested attacks run 10x faster (by @noproto)
* NFC: **Add Saflok MFUL Parser Support** (by @aaronjamt)
* NFC: **Add MFUL counters to Info page** (by @aaronjamt)
* OFW: Fix Felica standard loading from nfc file
* Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev)
## Other changes
* SubGHz: Freq analyzer - Fix duplicated frequency lists and use user config for nearest frequency selector too
* SubGHz: Code cleanup and fix for rare dupicated (Data) field cases
* OFW: NFC TRT Parser: Additional checks to prevent false positives
* OFW PR 3992: Loader: Fix BusFault in handling of OOM (by @Willy-JL)
* OFW PR 3885: NFC: Add API to enforce ISO15693 mode (by @aaronjamt)
* OFW: NFC: iso14443_4a improvements (by @RebornedBrain)
* OFW: NFC: Plantain parser improvements (by @assasinfil) & fixes (by @mxcdoam)
* OFW: NFC: Moscow social card parser (by @assasinfil)
* OFW: fix: npm deps
* OFW: 目覚め時計 (Added alarm option and clock settings)
* OFW: JS: Backport and more additions & fixes
* OFW: nfc: add Caltrain zones for Clipper
* OFW: Update unit tests docs
* OFW: Fix JS memory corruption (in gpio module)
* OFW: Full-fledged JS SDK + npm packages
* OFW: FurEventLoop: add support for FuriEventFlag, simplify API
* OFW: lib: digital_signal: digital_sequence: add furi_hal.h wrapped in ifdefs
* OFW: Add warning about stealth mode in vibro CLI
* OFW: Small fixes in the wifi devboard docs
* OFW: BadUSB - Improve ChromeOS and GNOME demo scripts
* OFW: Small JS fixes
* OFW: Canvas: extended icon draw.
* OFW: Fixes Mouse Clicker Should have a "0" value setting for "as fast as possible"
* OFW: Wi-Fi Devboard documentation rework
* OFW: Furi: A Lot of Fixes
* OFW PR 3933: furi_hal_random: Wait for ready state and no errors before sampling (by @n1kolasM)
* OFW: nfc/clipper: Update BART station codes
* OFW: FuriThread: Improve state callbacks
* OFW: Documentation: update and cleanup
* OFW: Improve bit_buffer.h docs
* OFW: Prevent idle priority threads from potentially starving the FreeRTOS idle task
* OFW: IR universal remote additions
* OFW: Fix EM4100 T5577 writing block order (was already done in UL)
* OFW: kerel typo
* OFW: Folder rename fails
* OFW: Put errno into TCB
* OFW: Fix USB-UART bridge exit screen stopping the bridge prematurely
**More details on JS changes** (js changelog written by @Willy-JL , thanks!):
- Our custom JS SDK can be found on npm now: https://www.npmjs.com/org/darkflippers
- Non-exhaustive list of changes to help you fix your scripts:
- `badusb`:
- `setup()`: `mfr_name`, `prod_name`, `layout_path` parameters renamed to `mfrName`, `prodName`, `layoutPath`
- effort required to update old scripts using badusb: very minimal
- `dialog`:
- removed, now replaced by `gui/dialog` and `gui/file_picker` (see below)
- `event_loop`:
- new module, allows timer functionality, callbacks and event-driven programming, used heavily alongside gpio and gui modules
- `gpio`:
- fully overhauled, now you `get()` pin instances and perform actions on them like `.init()`
- now supports interrupts, callbacks and more cool things
- effort required to update old scripts using gpio: moderate
- `gui`:
- new module, fully overhauled, replaces dialog, keyboard, submenu, textbox modules
- higher barrier to entry than older modules (requires usage of `event_loop` and `gui.viewDispatcher`), but much more flexible, powerful and easier to extend
- includes all previously available js gui functionality (except `widget`), and also adds `gui/loading` and `gui/empty_screen` views
- currently `gui/file_picker` works different than other new view objects, it is a simple `.pickFile()` synchronous function, but this [may change later](https://github.com/flipperdevices/flipperzero-firmware/pull/3961#discussion_r1805579153)
- effort required to update old scripts using gui: extensive
- `keyboard`:
- removed, now replaced by `gui/text_input` and `gui/byte_input` (see above)
- `math`:
- `is_equal()` renamed to `isEqual()`
- `storage`:
- fully overhauled, now you `openFile()`s and perform actions on them like `.read()`
- now supports many more operations including different open modes, directories and much more
- effort required to update old scripts using storage: moderate
- `submenu`:
- removed, now replaced by `gui/submenu` (see above)
- `textbox`:
- removed, now replace by `gui/text_box` (see above)
- `widget`:
- only gui functionality not ported to new gui module, remains unchanged for now but likely to be ported later on
- globals:
- `__filepath` and `__dirpath` renamed to `__filename` and `__dirname` like in nodejs
- `to_string()` renamed and moved to number class as `n.toString()`, now supports optional base parameter
- `to_hex_string()` removed, now use `n.toString(16)`
- `parse_int()` renamed to `parseInt()`, now supports optional base parameter
- `to_upper_case()` and `to_lower_case()` renamed and moved to string class as `s.toUpperCase()` and `s.toLowerCase()`
- effort required to update old scripts using these: minimal
- Added type definitions (typescript files for type checking in IDE, Flipper does not run typescript)
- Documentation is incomplete and deprecated, from now on you should refer to type definitions (`applications/system/js_app/types`), those will always be correct
- Type definitions for extra modules we have that OFW doesn't will come later
* SubGHz: OFEX support for SecPlus v1 and v2, various fixes (by @Dmitry422 & xMasterX)
* SubGHz Remote: Add default remote and clear slot features (by @jknlsn)
* Fix typo in README warning about scammers (PR #931 | by @koterba)
* Bad USB: Colemak keyboard layout (by @Ashe-Sterling)
* Display: Remove display_back_light bug from "DisplayBacklightEnforceOn" (PR #928 | by @Dmitry422)
* OFW PR 4279: NFC FeliCa Minor Fix: FelicaPollerEventType should only be Incomplete if the tag is FeliCa Lite (by @zinongli)
* OFW PR 4261: Add date/time input module (by @aaronjamt)
* OFW PR 4312: Infrared: Fix infrared CLI plugin MissingImports (by @WillyJL)
* Dolphin: Enable winter anims
* Dolphin: Disable halloween anim
<br><br>
#### Known NFC post-refactor regressions list:
- Mifare Mini clones reading is broken (original mini working fine) (OFW)
- NFC CLI was removed with refactoring (OFW) (will be back soon)
- While reading some EMV capable cards via NFC->Read flipper may crash due to Desfire poller issue, read those cards via Extra actions->Read specific card type->EMV
----
@@ -126,21 +36,23 @@
[-> Download qFlipper (official link)](https://flipperzero.one/update)
## Please support development of the project
|Service|Remark|QR Code|Link/Wallet|
|-|-|-|-|
|**Patreon**||<div align="center"><a href="https://github.com/user-attachments/assets/a88a90a5-28c3-40b4-864a-0c0b79494a42"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://patreon.com/mmxdev|
|**Boosty**|patreon alternative|<div align="center"><a href="https://github.com/user-attachments/assets/893c0760-f738-42c1-acaa-916019a7bdf8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://boosty.to/mmxdev|
|cloudtips|only RU payments accepted|<div align="center"><a href="https://github.com/user-attachments/assets/5de31d6a-ef24-4d30-bd8e-c06af815332a"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://pay.cloudtips.ru/p/7b3e9d65|
|YooMoney|only RU payments accepted|<div align="center"><a href="https://github.com/user-attachments/assets/33454f79-074b-4349-b453-f94fdadc3c68"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://yoomoney.ru/fundraise/XA49mgQLPA0.221209|
|USDT|(TRC20)|<div align="center"><a href="https://github.com/user-attachments/assets/0500498d-18ed-412d-a1a4-8a66d0b6f057"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`|
|ETH|(BSC/ERC20-Tokens)|<div align="center"><a href="https://github.com/user-attachments/assets/0f323e98-c524-4f41-abb2-f4f1cec83ab6"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`|
|BTC||<div align="center"><a href="https://github.com/user-attachments/assets/5a904d45-947e-4b92-9f0f-7fbaaa7b37f8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`|
|SOL|(Solana/Tokens)|<div align="center"><a href="https://github.com/user-attachments/assets/ab33c5e0-dd59-497b-9c91-ceb89c36b34d"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`DSgwouAEgu8iP5yr7EHHDqMNYWZxAqXWsTEeqCAXGLj8`|
|DOGE||<div align="center"><a href="https://github.com/user-attachments/assets/2937edd0-5c85-4465-a444-14d4edb481c0"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`|
|LTC||<div align="center"><a href="https://github.com/user-attachments/assets/441985fe-f028-4400-83c1-c215760c1e74"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`|
|BCH||<div align="center"><a href="https://github.com/user-attachments/assets/7f365976-19a3-4777-b17e-4bfba5f69eff"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`|
|XMR|(Monero)|<div align="center"><a href="https://github.com/user-attachments/assets/96186c06-61e7-4b4d-b716-6eaf1779bfd8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`|
|TON||<div align="center"><a href="https://github.com/user-attachments/assets/92a57e57-7462-42b7-a342-6f22c6e600c1"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`UQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmsxa`|
| Service | Remark | QR Code | Link/Wallet |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| <img src="https://cdn.simpleicons.org/patreon/dark/white" alt="Patreon" width="14"/> **Patreon** | | <div align="center"><a href="https://github.com/user-attachments/assets/a88a90a5-28c3-40b4-864a-0c0b79494a42"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [patreon.com/mmxdev](https://patreon.com/mmxdev) |
| <img src="https://cdn.simpleicons.org/boosty" alt="Boosty" width="14"/> **Boosty** | patreon alternative | <div align="center"><a href="https://github.com/user-attachments/assets/893c0760-f738-42c1-acaa-916019a7bdf8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [boosty.to/mmxdev](https://boosty.to/mmxdev) |
| <img src="https://gist.githubusercontent.com/m-xim/255a3ef36c886dec144a58864608084c/raw/71da807b4abbd1582e511c9ea30fad27f78d642a/cloudtips_icon.svg" alt="Cloudtips" width="14"/> CloudTips | only RU payments accepted | <div align="center"><a href="https://github.com/user-attachments/assets/5de31d6a-ef24-4d30-bd8e-c06af815332a"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [pay.cloudtips.ru/p/7b3e9d65](https://pay.cloudtips.ru/p/7b3e9d65) |
| <img src="https://raw.githubusercontent.com/gist/PonomareVlad/55c8708f11702b4df629ae61129a9895/raw/1657350724dab66f2ad68ea034c480a2df2a1dfd/YooMoney.svg" alt="YooMoney" width="14"/> YooMoney | only RU payments accepted | <div align="center"><a href="https://github.com/user-attachments/assets/33454f79-074b-4349-b453-f94fdadc3c68"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [yoomoney.ru/fundraise/XA49mgQLPA0.221209](https://yoomoney.ru/fundraise/XA49mgQLPA0.221209) |
| <img src="https://cdn.simpleicons.org/tether" alt="USDT" width="14"/> USDT | TRC20 | <div align="center"><a href="https://github.com/user-attachments/assets/0500498d-18ed-412d-a1a4-8a66d0b6f057"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs` |
| <img src="https://cdn.simpleicons.org/ethereum" alt="ETH" width="14"/> ETH | BSC/ERC20-Tokens | <div align="center"><a href="https://github.com/user-attachments/assets/0f323e98-c524-4f41-abb2-f4f1cec83ab6"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a` |
| <img src="https://cdn.simpleicons.org/bitcoin" alt="BTC" width="14"/> BTC | | <div align="center"><a href="https://github.com/user-attachments/assets/5a904d45-947e-4b92-9f0f-7fbaaa7b37f8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9` |
| <img src="https://cdn.simpleicons.org/solana" alt="SOL" width="13"/> SOL | Solana/Tokens | <div align="center"><a href="https://github.com/user-attachments/assets/ab33c5e0-dd59-497b-9c91-ceb89c36b34d"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `DSgwouAEgu8iP5yr7EHHDqMNYWZxAqXWsTEeqCAXGLj8` |
| <img src="https://cdn.simpleicons.org/dogecoin" alt="DOGE" width="14"/> DOGE | | <div align="center"><a href="https://github.com/user-attachments/assets/2937edd0-5c85-4465-a444-14d4edb481c0"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv` |
| <img src="https://cdn.simpleicons.org/litecoin" alt="LTC" width="14"/> LTC | | <div align="center"><a href="https://github.com/user-attachments/assets/441985fe-f028-4400-83c1-c215760c1e74"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9` |
| <img src="https://bitcoincash.org/img/green/bitcoin-cash-circle.svg" alt="BCH" width="14"/> BCH | | <div align="center"><a href="https://github.com/user-attachments/assets/7f365976-19a3-4777-b17e-4bfba5f69eff"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3` |
| <img src="https://cdn.simpleicons.org/monero" alt="XMR" width="14"/> XMR | Monero | <div align="center"><a href="https://github.com/user-attachments/assets/96186c06-61e7-4b4d-b716-6eaf1779bfd8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn` |
| <img src="https://cdn.simpleicons.org/ton" alt="TON" width="14"/> TON | | <div align="center"><a href="https://github.com/user-attachments/assets/92a57e57-7462-42b7-a342-6f22c6e600c1"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `UQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmsxa` |
#### Thanks to our sponsors who supported project in the past and special thanks to sponsors who supports us on regular basis:
@mishamyte, ClaraCrazy, Pathfinder [Count Zero cDc], callmezimbra, Quen0n, MERRON, grvpvl (lvpvrg), art_col, ThurstonWaffles, Moneron, UterGrooll, LUCFER, Northpirate, zloepuzo, T.Rat, Alexey B., ionelife, ...
@@ -149,20 +61,22 @@ and all other great people who supported our project and me (xMasterX), thanks t
## **Recommended update option - Web Updater**
### What `r`, `e`, ` `, `c` means? What I need to download if I don't want to use Web updater?
What build I should download and what this name means - `flipper-z-f7-update-(version)(r / e / c).tgz` ? <br>
### What `e`, ` `, `c` means? What I need to download if I don't want to use Web updater?
What build I should download and what this name means - `flipper-z-f7-update-(version)(e / c).tgz` ? <br>
`flipper-z` = for Flipper Zero device<br>
`f7` = Hardware version - same for all flipper zero devices<br>
`update` = Update package, contains updater, all assets (plugins, IR libs, etc.), and firmware itself<br>
`(version)` = Firmware version<br>
| Designation | [Base Apps](https://github.com/xMasterX/all-the-plugins#default-pack) | [Extra Apps](https://github.com/xMasterX/all-the-plugins#extra-pack) |RGB mode* |
|-----|:---:|:---:|:---:|
| ` ` | ✅ | | |
| `c` | | | |
| `e` | ✅ | ✅ | |
| `r` | ✅ | ✅ | ⚠️ |
| Designation | [Base Apps](https://github.com/xMasterX/all-the-plugins#default-pack) | [Extra Apps](https://github.com/xMasterX/all-the-plugins#extra-pack) |
|-----|:---:|:---:|
| ` ` | ✅ | |
| `c` | | |
| `e` | ✅ | ✅ |
**To enable RGB Backlight support go into LCD & Notifications settings**
RGB backlight [hardware mod](https://github.com/quen0n/flipperzero-firmware-rgb#readme), works only on modded flippers! do not enable on non modded device!
This is [hardware mod](https://github.com/quen0n/flipperzero-firmware-rgb#readme), works only on modded flippers! do not install on non modded device!
Firmware Self-update package (update from microSD) - `flipper-z-f7-update-(version).tgz` for mobile app / qFlipper / web<br>
Archive of `scripts` folder (contains scripts for FW/plugins development) - `flipper-z-any-scripts-(version).tgz`<br>

497
ReadMe.md
View File

@@ -1,266 +1,316 @@
<h3 align="center">
<a href="https://github.com/DarkFlippers/unleashed-firmware">
<img src="https://user-images.githubusercontent.com/10697207/186202043-26947e28-b1cc-459a-8f20-ffcc7fc0c71c.png" align="center" alt="Unleashed Firmware Logo" border="0">
</a>
<a href="https://github.com/DarkFlippers/unleashed-firmware">
<img src="https://github.com/user-attachments/assets/466c40d5-f6a1-444d-a235-d9026f7cd0ff" align="center" alt="Unleashed Firmware Logo" border="0">
</a>
</h3>
<div align="center" id="badges">
<a href="https://discord.unleashedflip.com">
<img src="https://img.shields.io/discord/937479784148115456?style=flat-square&logo=discord&label=Discord&color=%237289DA&link=https%3A%2F%2Fdiscord.unleashedflip.com%2F" alt="Discord server"/>
</a>
<a href="https://t.me/flipperzero_unofficial">
<img src="https://img.shields.io/endpoint?label=EN%20Channel&style=flat-square&url=https%3A%2F%2Fmogyo.ro%2Fquart-apis%2Ftgmembercount%3Fchat_id%3Dflipperzero_unofficial" alt="EN TG channel"/>
</a>
<a href="https://t.me/flipperzero_unofficial_ru">
<img src="https://img.shields.io/endpoint?label=RU%20Channel&style=flat-square&url=https%3A%2F%2Fmogyo.ro%2Fquart-apis%2Ftgmembercount%3Fchat_id%3Dflipperzero_unofficial_ru" alt="RU TG channel"/>
</a>
<a href="https://t.me/flipperzero_unofficial_ua">
<img src="https://img.shields.io/endpoint?label=UA%20Channel&style=flat-square&url=https%3A%2F%2Fmogyo.ro%2Fquart-apis%2Ftgmembercount%3Fchat_id%3Dflipperzero_unofficial_ua" alt="UA TG channel"/>
</a>
</div>
### Welcome to the Flipper Zero Unleashed Firmware repo!
[![English Telegram Chat](https://img.shields.io/endpoint?color=neon&style=flat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fflipperzero_unofficial)](https://t.me/flipperzero_unofficial)
[![Russian Telegram Chat](https://img.shields.io/endpoint?color=neon&style=flat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fflipperzero_unofficial_ru)](https://t.me/flipperzero_unofficial_ru)
[![Ukraine Telegram Chat](https://img.shields.io/endpoint?color=neon&style=flat&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fflipperzero_unofficial_ua)](https://t.me/flipperzero_unofficial_ua)
[![Discord Server](https://img.shields.io/discord/937479784148115456?style=flat&logo=discord&label=Discord&color=%237289DA&link=https%3A%2F%2Fdiscord.unleashedflip.com%2F)](https://discord.unleashedflip.com)
#### **This firmware is a fork from original (OFW) firmware** [flipperdevices/flipperzero-firmware](https://github.com/flipperdevices/flipperzero-firmware)
# Flipper Zero Unleashed Firmware
This firmware is a fork of the original (OFW) version of [flipperdevices/flipperzero-firmware](https://github.com/flipperdevices/flipperzero-firmware) and represents the **most stable** custom build, incorporating **new features** and **improvements** to the original components while remaining **fully compatible** with the API and applications of the original firmware.
<br>
> [!WARNING]
> This software is intended solely for experimental purposes and is not meant for any illegal activities.
> We do not condone unlawful behavior and strongly encourage you to use it only within the bounds of the law.
>
> This project is developed independently and is not affiliated with Flipper Devices.
>
> Also be aware, DarkFlippers/unleashed-firmware is the only official page of the project, there is no paid, premium or closed source versions and if someone contacts you and say they are from our team and try to offer something like that - they are scammers, block that user ASAP
### Most stable custom firmware focused on new features and improvements of original firmware components, keeping compatibility with original firmware API and Apps
<br/>
<br>
## 🚀 Usage
##### This software is for experimental purposes only and is not meant for any illegal activity/purposes. <br> We do not condone illegal activity and strongly encourage keeping transmissions to legal/valid uses allowed by law. <br> Also, this software is made without any support from Flipper Devices and is in no way related to the official team.
Before getting started:
- **Review the Official Documentation:** [docs.flipper.net](https://docs.flipper.net)
- **Installation Guide & Version Info:**
How to install the firmware by following the [Installation Guide](/documentation/HowToInstall.md) and check the [version information](/CHANGELOG.md#recommended-update-option---web-updater) (`e`, ` `, `c`)
- **FAQ:**
Find answers to common questions in the [FAQ](/documentation/FAQ.md)
<br>
## 📦 Releases
## FAQ (frequently asked questions)
[Follow this link to find answers to most asked questions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/FAQ.md)
### Release builds (stable)
- <img src="https://github.com/badges/shields/assets/10694593/c5c5acc3-f434-4a8d-a834-6d94a7ffb45a" alt="Telegram" title="Telegram" width="14" height="14"> Telegram: <a href="https://t.me/unleashed_fw">t.me/unleashed_fw</a>
- <a href="https://github.com/DarkFlippers/unleashed-firmware/releases"> <img src="https://cdn.simpleicons.org/github/black/white" alt="GitHub" title="" width="14" height="14"> GitHub Releases</a>
## Our official domains
- https://flipperunleashed.com/ -> our main web page
- https://unleashedflip.com/ -> update server, direct .tgz update links for web updater or direct download
### Dev builds (unstable)
> [!NOTE]
> Built automatically from dev branch
## Dev builds (unstable) (built automatically from dev branch)
- https://dev.unleashedflip.com/
- https://t.me/kotnehleb
- Web site: [dev.unleashedflip.com](https://dev.unleashedflip.com)
- <img src="https://github.com/badges/shields/assets/10694593/c5c5acc3-f434-4a8d-a834-6d94a7ffb45a" alt="Telegram" title="Telegram" width="14" height="14"> Telegram: <a href="https://t.me/kotnehleb">t.me/kotnehleb</a>
## Releases in Telegram
- https://t.me/unleashed_fw
# What's changed
- **Sub-GHz** *lib & hal*
- Regional TX restrictions removed
- Extra Sub-GHz frequencies added
- Frequency range can be extended in settings file (Warning: It can damage Flipper's hardware)
- Many rolling code [protocols](https://github.com/DarkFlippers/unleashed-firmware#current-modified-and-new-sub-ghz-protocols-list) now have the ability to save & send captured signals
- FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation
- External CC1101 module support [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307)
- **Sub-GHz** *Main App*
- Save last used settings [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
- New frequency analyzer [(by ClusterM)](https://github.com/DarkFlippers/unleashed-firmware/pull/43)
- Press OK in frequency analyzer to use detected frequency in Read modes [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
- Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/79)
- New option to use timestamps + protocol name when you saving file, instead of random name or timestamp only - Enable in `Radio Settings -> Protocol Names = ON`
- Read mode UI improvements (shows time when signal was received) (by @wosk)
- External CC1101 module support (Hardware SPI used)
- External CC1101 module amplifier control (or LED control) support (enabled by default)
- **Hold right in received signal list to delete selected signal**
- **Custom buttons for Keeloq / Alutech AT4N / Nice Flor S / Somfy Telis / Security+ 2.0 / CAME Atomo** - now you can use arrow buttons to send signal with different button code
- `Add manually` menu extended with new protocols
- FAAC SLH, BFT Mitto / Somfy Telis / Nice Flor S / CAME Atomo, etc.. manual creation with programming new remote into receiver (use button 0xF for BFT Mitto, 0x8 (Prog) on Somfy Telis, (right arrow button for other protocols))
- Debug mode counter increase settings (+1 -> +5, +10, default: +1)
- Debug PIN output settings for protocol development
- **Sub-GHz apps** *by unleashed team*
- Sub-GHz Bruteforce - static code brute-force plugin |
- Time delay (between signals) setting (hold Up in main screen(says Up to Save)) + configure repeats in protocols list by pressing right button on selected protocol
- Load your own file and select bytes you want to bruteforce or use preconfigured options in protocols list
- Sub-GHz Remote - remote control for 5 sub-ghz files | bind one file for each button
- use the built-in constructor or make config file by following this [instruction](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemotePlugin.md)
- **Infrared**
- Recompiled IR TV Universal Remote for ALL buttons
- Universal remotes for Projectors, Fans, A/Cs and Audio(soundbars, etc.) -> Also always updated and verified by our team
- Infrared -> `RCA` Protocol
- Infrared -> External IR modules support (with autodetect by OFW)
- **NFC/RFID/iButton**
* LFRFID and iButton Fuzzer plugins
* Add DEZ 8 display form for EM4100 (by @korden32)
* Extra Mifare Classic keys in system dict
* EMV Protocol + Public data parser (by @Leptopt1los and @wosk)
* NFC `Add manually` -> Mifare Classic with custom UID
* NFC parsers: Umarsh, Zolotaya Korona, Kazan, Metromoney, Moscow Social Card, Troika (reworked) and [many others](https://github.com/DarkFlippers/unleashed-firmware/tree/dev/applications/main/nfc/plugins/supported_cards) (by @Leptopt1los and @assasinfil)
- **Quality of life & other features**
- Customizable Flipper name **Update! Now can be changed in Settings->Desktop** (by @xMasterX and @Willy-JL)
- Text Input UI element -> Cursor feature (by @Willy-JL)
- Byte Input Mini editor -> **Press UP** multiple times until the nibble editor appears (by @gid9798)
- Clock on Desktop -> `Settings -> Desktop -> Show Clock` (by @gid9798)
- Battery percentage display with different styles `Settings -> Desktop -> Battery View`
- More games in Dummy Mode -> click or hold any of arrow buttons
- Lock device with pin(or regular lock if pin not set) by holding UP button on main screen [(by an4tur0r)](https://github.com/DarkFlippers/unleashed-firmware/pull/107)
- **BadKB** plugin [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/Flipper-XFW/Xtreme-Firmware/tree/dev/applications/main/bad_kb) - (See in Applications->Tools) - (aka BadUSB via Bluetooth)
- BadUSB -> Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout)
- Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release
- Other small fixes and changes throughout
- See other changes in readme below
## 🆕 What's New
> <details>
> <summary><strong>SubGHz Library & HAL</strong></summary>
> <br/>
>
> - Many new protocols added
> - Regional TX restrictions removed
> - Extra Sub-GHz frequencies added
> - Frequency range can be extended in settings file _(warning: It can damage Flipper's hardware)_
> - Many rolling code [protocols](#current-modified-and-new-sub-ghz-protocols-list) now have the ability to save & send captured signals
> - FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation
> - External CC1101 module support [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307)
> </details>
> <details>
> <summary><strong>SubGHz Main App</strong></summary>
> <br/>
>
> - Save last used settings [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
> - New frequency analyzer [(by ClusterM)](https://github.com/DarkFlippers/unleashed-firmware/pull/43)
> - Press OK in frequency analyzer to use detected frequency in Read modes [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
> - Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/79)
> - New option to use timestamps + protocol name when you saving file, instead of random name or timestamp only - Enable in `Radio Settings -> Protocol Names = ON`
> - Read mode UI improvements (shows time when signal was received) (by @wosk)
> - External CC1101 module support (Hardware SPI used)
> - External CC1101 module amplifier control (or LED control) support (enabled by default)
> - **Hold right in received signal list to delete selected signal**
>- **Custom buttons for Keeloq / Alutech AT4N / Nice Flor S / Somfy Telis / Security+ 2.0 / CAME Atomo** - now you can use arrow buttons to send signal with different button code
> - `Add manually` menu extended with new protocols
> - FAAC SLH, BFT Mitto / Somfy Telis / Nice Flor S / CAME Atomo, etc. manual creation with programming new remote into receiver (use button 0xF for BFT Mitto, 0x8 (Prog) on Somfy Telis, (right arrow button for other protocols))
> - Debug mode counter increase settings (+1 → +5, +10, default: +1)
> - Debug PIN output settings for protocol development
> - Ignore options - Alarms: Hollarm, GangQi | Cars: Kia, Starline, ScherKhan | Sensors: Magellan, Honeywell Sec, Honeywell WDB (doorbells), Legrand (doorbells), Feron (RGB lights)
> </details>
> <details>
> <summary><strong>SubGHz Apps (by Unleashed Team)</strong></summary>
> <br/>
>
> - Sub-GHz Bruteforce - static code brute-force plugin
> - Time delay (between signals) setting (hold Up in main screen (says Up to Save)) + configure repeats in protocols list by pressing right button on selected protocol
> - Load your own file and select bytes you want to bruteforce or use preconfigured options in protocols list
> - Sub-GHz Remote - remote control for 5 sub-ghz files | bind one file for each button
> - use the built-in constructor or make config file by following this [instruction](/documentation/SubGHzRemotePlugin.md)
> </details>
> <details>
> <summary><strong>Infrared (IR)</strong></summary>
> <br/>
>
> - Recompiled IR TV Universal Remote for ALL buttons
> - Universal remotes for Projectors, Fans, A/Cs and Audio(soundbars, etc.) → Also always updated and verified by our team
> - Infrared → `RCA` Protocol
> - Infrared → External IR modules support (with autodetect by OFW)
> </details>
> <details>
> <summary><strong>NFC/RFID/iButton</strong></summary>
> <br/>
>
> - LFRFID and iButton Fuzzer plugins
> - Add DEZ 8 display form for EM4100 (by @korden32)
> - Extra Mifare Classic keys in system dict
> - EMV Protocol + Public data parser (by @Leptopt1los and @wosk)
> - NFC `Add manually` → Mifare Classic with custom UID
> - NFC parsers: Umarsh, Zolotaya Korona, Kazan, Metromoney, Moscow Social Card, Troika (reworked) and [many others](https://github.com/DarkFlippers/unleashed-firmware/tree/dev/applications/main/nfc/plugins/supported_cards) (by @Leptopt1los and @assasinfil)
> </details>
> <details>
> <summary><strong>Quality of Life & Other Features</strong></summary>
> <br/>
>
> - Customizable Flipper name **Update! Now can be changed in Settings → Desktop** (by @xMasterX and @Willy-JL)
> - Text Input UI element → Cursor feature (by @Willy-JL)
> - Byte Input Mini editor → **Press UP** multiple times until the nibble editor appears (by @gid9798)
> - Clock on Desktop `Settings -> Desktop -> Show Clock` (by @gid9798)
> - Battery percentage display with different styles `Settings -> Desktop -> Battery View`
> - More games in Dummy Mode → click or hold any of arrow buttons
> - Lock device with pin (or regular lock if pin not set) by holding UP button on main screen [(by an4tur0r)](https://github.com/DarkFlippers/unleashed-firmware/pull/107)
> - **BadKB** (BadUSB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/Flipper-XFW/Xtreme-Firmware/tree/dev/applications/main/bad_kb) - (Integrated into BadUSB app now!) - (aka BadUSB via Bluetooth)
> - BadUSB → Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout)
> - Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release
> - Other small fixes and changes throughout
> - See other changes in readme below
> </details>
Also check the [changelog in releases](https://github.com/DarkFlippers/unleashed-firmware/releases) for latest updates!
### Current modified and new Sub-GHz protocols list:
Thanks to Official team (to their SubGHz Developer, Skorp) for implementing support (decoder + encoder / or decode only) for these protocols in OFW.
Thanks to Official team (to their SubGHz Developer, Skorp) for implementing support (decoder + encoder / or decode only) for these protocols in OFW.
Keeloq [Not ALL systems supported for decode or emulation!] - [Supported manufacturers list](https://pastes.io/raw/unuj9bhe4m)
> [!NOTE]
> Not all Keeloq systems are supported for decoding or emulation!
> <details>
> <summary><strong>Supported Keeloq manufacturers include</strong></summary>
> <br/>
>
> | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 |
> |-------------------|--------------|------------------|-------------------|------------------------|
> | Alligator | Comunello | GSN | Magic_4 | SL_A2-A4 |
> | Alligator_S-275 | Dea_Mio | Guard_RF-311A | Mongoose | SL_A6-A9/Tomahawk_9010 |
> | APS-1100_APS-2550 | DTM_Neo | Harpoon | Mutanco_Mutancode | SL_B6,B9_dop |
> | Aprimatic | DoorHan | IronLogic | NICE_MHOUSE | Sommer(fsk476) |
> | Beninca | EcoStar | JCM_Tech | NICE_Smilo | Stilmatic |
> | BFT | Elmes_Poland | KEY | Normstahl | Teco |
> | Came_Space | FAAC_RC,XT | Kingates_Stylo4k | Pantera | Tomahawk_TZ-9030 |
> | Cenmax | FAAC_SLH | KGB/Subaru | Pantera_CLK | Tomahawk_Z,X_3-5 |
> | Cenmax_St-5 | Faraon | Leopard | Pantera_XS/Jaguar | ZX-730-750-1055 |
> | Cenmax_St-7 | Genius_Bravo | Magic_1 | Partisan_RX | IL-100(Smart) |
> | Centurion | Gibidi | Magic_2 | Reff | Merlin |
> | Monarch | Jolly Motors | Magic_3 | Sheriff | Steelmate |
> | Motorline | Rosh | Pecinin | Rossi | |
> </details>
<br/>
Decoders/Encoders or emulation (+ programming mode) support made by @xMasterX:
<details>
<summary><code><strong>Decoders/Encoders or emulation (+ programming mode) support made by @xMasterX</strong></code></summary>
<br/>
- Elplast/P-11B/3BK/E.C.A (static 18 bit)
- Roger (static 28 bit) with add manually support (thanks @mishamyte)
- V2 Phoenix (Phox) (dynamic 52 bit) (thanks @RocketGod-git)
- Marantec (static 49 bit) (add manually support and CRC verify) (thanks @li0ard)
- Feron (static 32 bit)
- ReversRB2 / RB2M (static 64 bit) with add manually support
- Marantec24 (static 24 bit) with add manually support
- GangQi (static 34 bit) with button parsing and add manually support (thanks to @mishamyte for captures and testing, thanks @Skorpionm for help)
- Hollarm (static 42 bit) with button parsing and add manually support (thanks to @mishamyte for captures, thanks @Skorpionm for help)
- Hay21 (dynamic 21 bit) with button parsing
- Nero Radio 57bit (+ 56bit support)
- CAME 12bit/24bit encoder fixes (Fixes are now merged in OFW)
- Keeloq: Dea Mio, Genius Bravo, GSN, HCS101, AN-Motors, JCM Tech, MHouse, Nice Smilo, DTM Neo, FAAC RC,XT, Mutancode, Normstahl, Beninca + Allmatic, Stilmatic, CAME Space, Aprimatic (model TR and similar), Centurion Nova (thanks Carlos !), Hormann EcoStar, Novoferm, Sommer, Monarch (thanks @ashphx !)
- Keeloq: Dea Mio, Genius Bravo, GSN, HCS101, AN-Motors, JCM Tech, MHouse, Nice Smilo, DTM Neo, FAAC RC,XT, Mutancode, Normstahl, Beninca + Allmatic, Stilmatic, CAME Space, Aprimatic (model TR and similar), Centurion Nova (thanks Carlos !), Hormann EcoStar, Novoferm, Sommer, Monarch (thanks @ashphx !), Jolly Motors (thanks @pkooiman !), IL-100(Smart) (thx Vitaly for RAWs), Motorline (with add manually support), Rosh, Pecinin, Rossi, Merlin, Steelmate (thanks @RocketGod-git)
</details>
Protocols support made by Skorp (original implementation) and @xMasterX (current version):
- CAME Atomo -> Update! check out new [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- Nice Flor S -> How to create new remote - [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- FAAC SLH (Spa) -> Update!!! (Programming mode!) Check out new [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- Keeloq: BFT Mitto -> Update! Check out new [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
<details>
<summary><code><strong>Protocols support made by Skorp (original implementation) and @xMasterX (current version)</strong></code></summary>
<br/>
- CAME Atomo → Update! check out new [instructions](/documentation/SubGHzRemoteProg.md)
- Nice Flor S → How to create new remote - [instructions](/documentation/SubGHzRemoteProg.md)
- FAAC SLH (Spa) → Update!!! (Programming mode!) Check out new [instructions](/documentation/SubGHzRemoteProg.md)
- Keeloq: BFT Mitto → Update! Check out new [instructions](/documentation/SubGHzRemoteProg.md)
- Star Line
- Security+ v1 & v2
</details>
Encoders made by @assasinfil and @xMasterX:
- Somfy Telis -> How to create new remote - [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
<details>
<summary><code><strong>Encoders made by @assasinfil and @xMasterX</strong></code></summary>
<br/>
- Somfy Telis → How to create new remote - [instructions](/documentation/SubGHzRemoteProg.md)
- Somfy Keytis
- KingGates Stylo 4k
- Alutech AT-4N -> How to create new remote - [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- Nice ON2E (Nice One) -> How to create new remote - [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- Alutech AT-4N How to create new remote - [instructions](/documentation/SubGHzRemoteProg.md)
- Nice ON2E (Nice One) How to create new remote - [instructions](/documentation/SubGHzRemoteProg.md)
</details>
## ❤️ Please support development of the project
## Please support development of the project
The majority of this project is developed and maintained by me, @xMasterX.
Our team is small and the guys are working on this project as much as they can solely based on the enthusiasm they have for this project and the community.
- @Leptopt1los - NFC, RFID, Plugins, and many other things
- @gid9798 - SubGHz, Plugins, many other things - currently offline :(
- @assasinfil - SubGHz protocols, NFC parsers
- @Svaarich - UI design and animations
- @amec0e - Infrared assets
Our team is small and the guys are working on this project as much as they can solely based on the enthusiasm they have for this project and the community.
- `@mishamyte` - NFC, RFID, SubGHz and chats moderation
- `@quen0n` - Hardware, SubGHz and chats moderation
- `@Drone1950` - Reverse Engineering, telegram bot and chats moderation
- `@HackcatDev` - Support and chats moderation
- `@Leptopt1los` - NFC, RFID, Plugins, chat moderation and many other things
- `@gid9798` - SubGHz, Plugins, many other things - currently offline :(
- `@assasinfil` - SubGHz protocols, NFC parsers, chat moderation
- `@Svaarich` - UI design and animations
- `@amec0e` - Infrared assets
- Community moderators in Telegram, Discord, and Reddit
- And of course our GitHub community. Your PRs are a very important part of this firmware and open-source development.
The amount of work done on this project is huge and we need your support, no matter how large or small. Even if you just say, "Thank you Unleashed firmware developers!" somewhere. Doing so will help us continue our work and will help drive us to make the firmware better every time.
Also, regarding our releases, every build has and always will be free and open-source. There will be no paywall releases or closed-source apps within the firmware. As long as I am working on this project it will never happen.
Also, regarding our releases, every build has and always will be free and open-source. There will be no paywall releases or closed-source apps within the firmware. As long as I am working on this project it will never happen.
You can support us by using links or addresses below:
|Service|Remark|QR Code|Link/Wallet|
|-|-|-|-|
|**Patreon**||<div align="center"><a href="https://github.com/user-attachments/assets/a88a90a5-28c3-40b4-864a-0c0b79494a42"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://patreon.com/mmxdev|
|**Boosty**|patreon alternative|<div align="center"><a href="https://github.com/user-attachments/assets/893c0760-f738-42c1-acaa-916019a7bdf8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://boosty.to/mmxdev|
|cloudtips|only RU payments accepted|<div align="center"><a href="https://github.com/user-attachments/assets/5de31d6a-ef24-4d30-bd8e-c06af815332a"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://pay.cloudtips.ru/p/7b3e9d65|
|YooMoney|only RU payments accepted|<div align="center"><a href="https://github.com/user-attachments/assets/33454f79-074b-4349-b453-f94fdadc3c68"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|https://yoomoney.ru/fundraise/XA49mgQLPA0.221209|
|USDT|(TRC20)|<div align="center"><a href="https://github.com/user-attachments/assets/0500498d-18ed-412d-a1a4-8a66d0b6f057"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`|
|ETH|(BSC/ERC20-Tokens)|<div align="center"><a href="https://github.com/user-attachments/assets/0f323e98-c524-4f41-abb2-f4f1cec83ab6"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`|
|BTC||<div align="center"><a href="https://github.com/user-attachments/assets/5a904d45-947e-4b92-9f0f-7fbaaa7b37f8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`|
|SOL|(Solana/Tokens)|<div align="center"><a href="https://github.com/user-attachments/assets/ab33c5e0-dd59-497b-9c91-ceb89c36b34d"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`DSgwouAEgu8iP5yr7EHHDqMNYWZxAqXWsTEeqCAXGLj8`|
|DOGE||<div align="center"><a href="https://github.com/user-attachments/assets/2937edd0-5c85-4465-a444-14d4edb481c0"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`|
|LTC||<div align="center"><a href="https://github.com/user-attachments/assets/441985fe-f028-4400-83c1-c215760c1e74"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`|
|BCH||<div align="center"><a href="https://github.com/user-attachments/assets/7f365976-19a3-4777-b17e-4bfba5f69eff"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`|
|XMR|(Monero)|<div align="center"><a href="https://github.com/user-attachments/assets/96186c06-61e7-4b4d-b716-6eaf1779bfd8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`|
|TON||<div align="center"><a href="https://github.com/user-attachments/assets/92a57e57-7462-42b7-a342-6f22c6e600c1"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div>|`UQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmsxa`|
## Community apps included
### [🎲 Download Extra plugins for Unleashed](https://github.com/xMasterX/all-the-plugins/releases/latest)
### [List of Extra pack](https://github.com/xMasterX/all-the-plugins/tree/dev#extra-pack) | [List of Base *(Default)* pack](https://github.com/xMasterX/all-the-plugins/tree/dev#default-pack)
See full list and sources here: [xMasterX/all-the-plugins](https://github.com/xMasterX/all-the-plugins/tree/dev)
### Official Flipper Zero Apps Catalog [web version](https://lab.flipper.net/apps) or mobile app
# Instructions
## First look at official docs [docs.flipper.net](https://docs.flipper.net/)
## [How to install](/documentation/HowToInstall.md) - [versions info](/CHANGELOG.md#recommended-update-option---web-updater): `r`,` `,`e`...
## Firmware & Development
### - **Developer Documentation** - [developer.flipper.net](https://developer.flipper.net/flipperzero/doxygen)
### - **[How to build](/documentation/HowToBuild.md#how-to-build-by-yourself) | [Project-structure](#project-structure)**
### - **CLion IDE** - How to setup workspace for flipper firmware development [by Savely Krasovsky](https://krasovs.ky/2022/11/01/flipper-zero-clion.html)
### - **"Hello world!"** - plugin tutorial [English<sub> by DroomOne</sub> ](https://github.com/DroomOne/Flipper-Plugin-Tutorial) | [Russian<sub> by Pavel Yakovlev</sub>](https://yakovlev.me/hello-flipper-zero/)
### - [How to write your own app](https://flipper.atmanos.com/docs/overview/intro). Docs by atmanos **⚠outdated API**
## Firmware & main Apps feature
### - System: [How to change Flipper name](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/CustomFlipperName.md)
### - BadUSB: [How to add new keyboard layouts](https://github.com/dummy-decoy/flipperzero_badusb_kl)
### - Infrared: [How to make captures to add them into Universal IR remotes](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/InfraredCaptures.md)
## **Sub-GHz**
### - [How to use Flipper as new remote (Nice FlorS, BFT Mitto, Somfy Telis, Aprimatic, AN-Motors, etc..)](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
### - External Radio: [How to connect CC1101 module](https://github.com/quen0n/flipperzero-ext-cc1101)
### - Transmission is blocked? [How to extend Sub-GHz frequency range](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md)
### - [How to add extra Sub-GHz frequencies](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSettings.md)
### - [~~Configure Sub-GHz Remote App~~](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemotePlugin.md) Not recommended, please use embedded configurator
## **Plugins**
### - TOTP (Authenticator): [config description](https://github.com/akopachov/flipper-zero_authenticator/blob/master/docs/conf-file_description.md)
### - Barcode Generator: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/BarcodeGenerator.md)
### - Multi Converter: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/MultiConverter.md)
### - WAV Player: [sample files & how to convert](https://github.com/UberGuidoZ/Flipper/tree/main/Wav_Player#readme)
### - Sub-GHz playlist: [generator script](https://github.com/darmiel/flipper-scripts/blob/main/playlist/playlist_creator_by_chunk.py)
## **Plugins that works with external hardware** [GPIO]
### - Unitemp - Temperature sensors reader: [How to use & supported sensors](https://github.com/quen0n/unitemp-flipperzero#readme)
### - [NMEA] GPS: [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/gps_nmea_uart/README.md)
### - i2c Tools [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/flipper_i2ctools/README.md)
### - [NRF24] plugins: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/NRF24.md)
| Service | Remark | QR Code | Link/Wallet |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| <img src="https://cdn.simpleicons.org/patreon/dark/white" alt="Patreon" width="14"/> **Patreon** | | <div align="center"><a href="https://github.com/user-attachments/assets/a88a90a5-28c3-40b4-864a-0c0b79494a42"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [patreon.com/mmxdev](https://patreon.com/mmxdev) |
| <img src="https://cdn.simpleicons.org/boosty" alt="Boosty" width="14"/> **Boosty** | patreon alternative | <div align="center"><a href="https://github.com/user-attachments/assets/893c0760-f738-42c1-acaa-916019a7bdf8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [boosty.to/mmxdev](https://boosty.to/mmxdev) |
| <img src="https://gist.githubusercontent.com/m-xim/255a3ef36c886dec144a58864608084c/raw/71da807b4abbd1582e511c9ea30fad27f78d642a/cloudtips_icon.svg" alt="Cloudtips" width="14"/> CloudTips | only RU payments accepted | <div align="center"><a href="https://github.com/user-attachments/assets/5de31d6a-ef24-4d30-bd8e-c06af815332a"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [pay.cloudtips.ru/p/7b3e9d65](https://pay.cloudtips.ru/p/7b3e9d65) |
| <img src="https://raw.githubusercontent.com/gist/PonomareVlad/55c8708f11702b4df629ae61129a9895/raw/1657350724dab66f2ad68ea034c480a2df2a1dfd/YooMoney.svg" alt="YooMoney" width="14"/> YooMoney | only RU payments accepted | <div align="center"><a href="https://github.com/user-attachments/assets/33454f79-074b-4349-b453-f94fdadc3c68"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | [yoomoney.ru/fundraise/XA49mgQLPA0.221209](https://yoomoney.ru/fundraise/XA49mgQLPA0.221209) |
| <img src="https://cdn.simpleicons.org/tether" alt="USDT" width="14"/> USDT | TRC20 | <div align="center"><a href="https://github.com/user-attachments/assets/0500498d-18ed-412d-a1a4-8a66d0b6f057"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs` |
| <img src="https://cdn.simpleicons.org/ethereum" alt="ETH" width="14"/> ETH | BSC/ERC20-Tokens | <div align="center"><a href="https://github.com/user-attachments/assets/0f323e98-c524-4f41-abb2-f4f1cec83ab6"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a` |
| <img src="https://cdn.simpleicons.org/bitcoin" alt="BTC" width="14"/> BTC | | <div align="center"><a href="https://github.com/user-attachments/assets/5a904d45-947e-4b92-9f0f-7fbaaa7b37f8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9` |
| <img src="https://cdn.simpleicons.org/solana" alt="SOL" width="13"/> SOL | Solana/Tokens | <div align="center"><a href="https://github.com/user-attachments/assets/ab33c5e0-dd59-497b-9c91-ceb89c36b34d"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `DSgwouAEgu8iP5yr7EHHDqMNYWZxAqXWsTEeqCAXGLj8` |
| <img src="https://cdn.simpleicons.org/dogecoin" alt="DOGE" width="14"/> DOGE | | <div align="center"><a href="https://github.com/user-attachments/assets/2937edd0-5c85-4465-a444-14d4edb481c0"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv` |
| <img src="https://cdn.simpleicons.org/litecoin" alt="LTC" width="14"/> LTC | | <div align="center"><a href="https://github.com/user-attachments/assets/441985fe-f028-4400-83c1-c215760c1e74"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9` |
| <img src="https://bitcoincash.org/img/green/bitcoin-cash-circle.svg" alt="BCH" width="14"/> BCH | | <div align="center"><a href="https://github.com/user-attachments/assets/7f365976-19a3-4777-b17e-4bfba5f69eff"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3` |
| <img src="https://cdn.simpleicons.org/monero" alt="XMR" width="14"/> XMR | Monero | <div align="center"><a href="https://github.com/user-attachments/assets/96186c06-61e7-4b4d-b716-6eaf1779bfd8"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn` |
| <img src="https://cdn.simpleicons.org/ton" alt="TON" width="14"/> TON | | <div align="center"><a href="https://github.com/user-attachments/assets/92a57e57-7462-42b7-a342-6f22c6e600c1"><img src="https://github.com/user-attachments/assets/da3a864d-d1c7-42cc-8a86-6fcaf26663ec" alt="QR image"/></a></div> | `UQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmsxa` |
### - [WiFi] Scanner: [How to use](https://github.com/SequoiaSan/FlipperZero-WiFi-Scanner_Module#readme) | [Web Flasher](https://sequoiasan.github.io/FlipperZero-WiFi-Scanner_Module/)
## 📱 Community Apps
### - [ESP8266] Deauther: [How to use](https://github.com/SequoiaSan/FlipperZero-Wifi-ESP8266-Deauther-Module#readme) | [Web Flasher](https://sequoiasan.github.io/FlipperZero-Wifi-ESP8266-Deauther-Module/)
Enhance your Flipper Zero with apps and plugins created by the community:
### - [ESP32] WiFi Marauder: [How to use](https://github.com/UberGuidoZ/Flipper/tree/main/Wifi_DevBoard)<sub> docs by UberGuidoZ</sub> | [Marauder repo](https://github.com/justcallmekoko/ESP32Marauder)
- **Extra Plugins & Packs:**
Check out the latest extra plugins and plugin packs (Extra Pack and Base Pack) on [GitHub](https://github.com/xMasterX/all-the-plugins/releases/latest).
### - [ESP32-CAM] Camera Suite: [How to use](https://github.com/CodyTolene/Flipper-Zero-Camera-Suite)
- **Source Code & Full List:**
Find the complete list and source code at [xMasterX/all-the-plugins](https://github.com/xMasterX/all-the-plugins/tree/dev).
### - How to Upload `.bin` to ESP32/ESP8266: [Windows](https://github.com/SequoiaSan/Guide-How-To-Upload-bin-to-ESP8266-ESP32) | [FAP "ESP flasher"](https://github.com/0xchocolate/flipperzero-esp-flasher)
- **Official Apps Catalog:**
Browse the official Flipper Zero Apps Catalog on the [web](https://lab.flipper.net/apps) or via the [mobile app](https://flipperzero.one/downloads).
### - [GPIO] SentrySafe plugin: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SentrySafe.md)
<br>
<br>
## 📁 Where I can find IR, Sub-GHz, ... files, DBs, and other stuff?
- [UberGuidoZ Playground - Large collection of files - Github](https://github.com/UberGuidoZ/Flipper)
- [Awesome Flipper Zero - Github](https://github.com/djsime1/awesome-flipperzero)
# Where I can find IR, Sub-GHz, ... files, DBs, and other stuff?
## [UberGuidoZ Playground - Large collection of files - Github](https://github.com/UberGuidoZ/Flipper)
## [Awesome Flipper Zero - Github](https://github.com/djsime1/awesome-flipperzero)
<br>
<br>
## 📘 Instructions
# Links
### ![Tools Icon Badge] Firmware & main Apps feature
* Official Docs: [docs.flipper.net](https://docs.flipper.net/)
* Official Forum: [forum.flipperzero.one](https://forum.flipperzero.one/)
- System: [How to change Flipper name](/documentation/CustomFlipperName.md)
- BadUSB: [How to add new keyboard layouts](https://github.com/dummy-decoy/flipperzero_badusb_kl)
- Infrared: [How to make captures to add them into Universal IR remotes](/documentation/InfraredCaptures.md)
* Update! Developer Documentation [developer.flipper.net](https://developer.flipper.net/flipperzero/doxygen)
### ![SubGhz Icon Badge] Sub-GHz
# Project structure
- [How to use Flipper as rolling code remote (Doorhan, Nice FlorS, BFT Mitto, Somfy Telis, Aprimatic, AN-Motors, etc..)](/documentation/SubGHzRemoteProg.md)
- [Experimental rolling code counter modes (avoid desync)](/documentation/SubGHzCounterMode.md)
- External Radio: [How to connect CC1101 module](https://github.com/quen0n/flipperzero-ext-cc1101)
- Transmission is blocked? [How to extend Sub-GHz frequency range](/documentation/DangerousSettings.md)
- [How to add extra Sub-GHz frequencies](/documentation/SubGHzSettings.md)
- [~~Configure Sub-GHz Remote App~~](/documentation/SubGHzRemotePlugin.md) ⚠️ Not recommended, please use embedded configurator
### ![Plugins Icon Badge] Plugins
- TOTP (Authenticator): [config description](https://github.com/akopachov/flipper-zero_authenticator/blob/master/docs/conf-file_description.md)
- Barcode Generator: [How to use](/documentation/BarcodeGenerator.md)
- Multi Converter: [How to use](/documentation/MultiConverter.md)
- WAV Player: [sample files & how to convert](https://github.com/UberGuidoZ/Flipper/tree/main/Wav_Player#readme)
- Sub-GHz playlist: [generator script](https://github.com/darmiel/flipper-scripts/blob/main/playlist/playlist_creator_by_chunk.py)
### ![GPIO Icon Badge] GPIO - Plugins that works with external hardware
- Unitemp - Temperature sensors reader: [How to use & supported sensors](https://github.com/quen0n/unitemp-flipperzero#readme)
- [NMEA] GPS: [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/gps_nmea_uart/README.md)
- i2c Tools [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/flipper_i2ctools/README.md)
- [NRF24] plugins: [How to use](/documentation/NRF24.md)
- [WiFi] Scanner: [How to use](https://github.com/SequoiaSan/FlipperZero-WiFi-Scanner_Module#readme) | [Web Flasher](https://sequoiasan.github.io/FlipperZero-WiFi-Scanner_Module/)
- [ESP8266] Deauther: [How to use](https://github.com/SequoiaSan/FlipperZero-Wifi-ESP8266-Deauther-Module#readme) | [Web Flasher](https://sequoiasan.github.io/FlipperZero-Wifi-ESP8266-Deauther-Module/)
- [ESP32] WiFi Marauder: [How to use](https://github.com/UberGuidoZ/Flipper/tree/main/Wifi_DevBoard)<sub> docs by UberGuidoZ</sub> | [Marauder repo](https://github.com/justcallmekoko/ESP32Marauder)
- [ESP32-CAM] Camera Suite: [How to use](https://github.com/CodyTolene/Flipper-Zero-Camera-Suite)
- How to Upload `.bin` to ESP32/ESP8266: [Windows](https://github.com/SequoiaSan/Guide-How-To-Upload-bin-to-ESP8266-ESP32) | [FAP "ESP flasher"](https://github.com/0xchocolate/flipperzero-esp-flasher)
- [GPIO] SentrySafe plugin: [How to use](/documentation/SentrySafe.md)
## 👨‍💻 Firmware & Development
- **Developer Documentation** - [developer.flipper.net](https://developer.flipper.net/flipperzero/doxygen)
- **[How to build](/documentation/HowToBuild.md#how-to-build-by-yourself) | [Project-structure](#project-structure)**
- **CLion IDE** - How to setup workspace for flipper firmware development [by Savely Krasovsky](https://krasovs.ky/2022/11/01/flipper-zero-clion.html)
- **"Hello world!"** - plugin tutorial [English<sub> by DroomOne</sub> ](https://github.com/DroomOne/Flipper-Plugin-Tutorial) | [Russian<sub> by Pavel Yakovlev</sub>](https://yakovlev.me/hello-flipper-zero)
- [How to write your own app](https://flipper.atmanos.com/docs/overview/intro).
### Project structure
- `applications` - Applications and services used in firmware
- `assets` - Assets used by applications and services
@@ -273,3 +323,34 @@ See full list and sources here: [xMasterX/all-the-plugins](https://github.com/xM
- `scripts` - Supplementary scripts and python libraries home
Also, pay attention to the `ReadMe.md` files inside those directories.
## 🔗 Links
- **Unleashed web page:** [flipperunleashed.com](https://flipperunleashed.com)
- **Unleashed update server, direct .tgz update links for web updater or direct download:** [unleashedflip.com](https://unleashedflip.com)
- Official Docs: [docs.flipper.net](https://docs.flipper.net)
- Official Forum: [forum.flipperzero.one](https://forum.flipperzero.one)
- Update! Developer Documentation [developer.flipper.net](https://developer.flipper.net/flipperzero/doxygen)
[RFID Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(255,244,147)?style=flat&logo=fz-rfid&logoColor=black
[iButton Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(225,187,166)?style=flat&logo=fz-ibutton&logoColor=black
[SubGhz Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(165,244,190)?style=flat&logo=fz-subghz&logoColor=black
[GPIO Badge]: https://custom-icon-badges.demolab.com/badge/-GPIO-rgb(167,242,234)?style=flat&logo=fz-gpio&logoColor=black
[GPIO Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(167,242,234)?style=flat&logo=fz-gpio&logoColor=black
[Tools Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(223,241,89)?style=flat&logo=fz-tools&logoColor=black
[Media Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(223,181,255)?style=flat&logo=fz-media&logoColor=black
[BT Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(139,172,255)?style=flat&logo=fz-bluetooth&logoColor=black
[NFC Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(152,206,254)?style=flat&logo=fz-nfc&logoColor=black
[USB Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(255,190,233)?style=flat&logo=fz-badusb&logoColor=black
[IR Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(254,147,140)?style=flat&logo=fz-infrared&logoColor=black
[Games Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(255,196,134)?style=flat&logo=fz-games&logoColor=black
[Plugins Icon Badge]: https://custom-icon-badges.demolab.com/badge/-rgb(226,78,178)?style=flat&logo=fz-plugins&logoColor=black
[UFW Icon Badge]: https://img.shields.io/badge/by_UFW-%2314D411?style=flat-square
[Official Icon Badge]: https://img.shields.io/badge/by_OFW-%23FF8200?style=flat-square
[Author Icon Badge]: https://img.shields.io/badge/by_author-%23FFFF00?style=flat-square
[None Icon Badge]: https://img.shields.io/badge/None-%23FF0000?style=flat-square

View File

@@ -412,6 +412,21 @@ distenv.PhonyTarget(
],
)
# Measure CLI loopback performance
distenv.PhonyTarget(
"cli_perf",
[
[
"${PYTHON3}",
"${FBT_SCRIPT_DIR}/serial_cli_perf.py",
"-p",
"${FLIP_PORT}",
"${ARGS}",
]
],
)
# Update WiFi devboard firmware with release channel
distenv.PhonyTarget(
"devboard_flash",

View File

@@ -67,6 +67,7 @@ Small applications providing configuration for basic firmware and its services.
- `power_settings_app` - Basic power options
- `storage_settings` - Storage settings app
- `system` - System settings
- `input_settings_app` - Basic input options
## system

View File

@@ -2,6 +2,7 @@
#include <furi.h>
#include <furi_hal.h>
#include <stdarg.h>
#include <power/power_service/power.h>
void AccessorApp::run(void) {
AccessorEvent event;
@@ -35,16 +36,18 @@ AccessorApp::AccessorApp()
: text_store{0} {
notification = static_cast<NotificationApp*>(furi_record_open(RECORD_NOTIFICATION));
expansion = static_cast<Expansion*>(furi_record_open(RECORD_EXPANSION));
power = static_cast<Power*>(furi_record_open(RECORD_POWER));
onewire_host = onewire_host_alloc(&gpio_ibutton);
expansion_disable(expansion);
furi_hal_power_enable_otg();
power_enable_otg(power, true);
}
AccessorApp::~AccessorApp() {
furi_hal_power_disable_otg();
power_enable_otg(power, false);
expansion_enable(expansion);
furi_record_close(RECORD_EXPANSION);
furi_record_close(RECORD_NOTIFICATION);
furi_record_close(RECORD_POWER);
onewire_host_free(onewire_host);
}

View File

@@ -7,6 +7,7 @@
#include <one_wire/one_wire_host.h>
#include <notification/notification_messages.h>
#include <expansion/expansion.h>
#include <power/power_service/power.h>
class AccessorApp {
public:
@@ -53,4 +54,5 @@ private:
NotificationApp* notification;
Expansion* expansion;
Power* power;
};

View File

@@ -6,6 +6,5 @@ App(
entry_point="accessor_app",
requires=["gui"],
stack_size=4 * 1024,
order=40,
fap_category="Debug",
)

View File

@@ -8,7 +8,6 @@ App(
"power",
],
stack_size=1 * 1024,
order=130,
fap_category="Debug",
fap_libs=["assets"],
)

View File

@@ -5,6 +5,5 @@ App(
entry_point="blink_test_app",
requires=["gui"],
stack_size=1 * 1024,
order=10,
fap_category="Debug",
)

View File

@@ -13,6 +13,5 @@ App(
"bt_debug",
],
stack_size=1 * 1024,
order=110,
fap_category="Debug",
)

View File

@@ -18,7 +18,7 @@ struct BtTestParam {
void* context;
};
ARRAY_DEF(BtTestParamArray, BtTestParam, M_POD_OPLIST);
ARRAY_DEF(BtTestParamArray, BtTestParam, M_POD_OPLIST); //-V658
struct BtTest {
View* view;

View File

@@ -10,6 +10,5 @@ App(
"ccid_test",
],
stack_size=1 * 1024,
order=120,
fap_category="Debug",
)

View File

@@ -24,8 +24,49 @@ typedef enum {
CrashTestSubmenuAssertMessage,
CrashTestSubmenuCrash,
CrashTestSubmenuHalt,
CrashTestSubmenuHeapUnderflow,
CrashTestSubmenuHeapOverflow,
} CrashTestSubmenu;
static void crash_test_corrupt_heap_underflow(void) {
const size_t block_size = 1000;
const size_t underflow_size = 123;
uint8_t* block = malloc(block_size);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-overflow" // that's what we want!
memset(block - underflow_size, 0xDD, underflow_size); // -V769
#pragma GCC diagnostic pop
free(block); // should crash here (if compiled with DEBUG=1)
// If we got here, the heap wasn't able to detect our corruption and crash
furi_crash("Test failed, should've crashed with \"FreeRTOS Assert\" error");
}
static void crash_test_corrupt_heap_overflow(void) {
const size_t block_size = 1000;
const size_t overflow_size = 123;
uint8_t* block1 = malloc(block_size);
uint8_t* block2 = malloc(block_size);
memset(block2, 12, 34); // simulate use to avoid optimization // -V597 // -V1086
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstringop-overflow" // that's what we want!
memset(block1 + block_size, 0xDD, overflow_size); // -V769 // -V512
#pragma GCC diagnostic pop
uint8_t* block3 = malloc(block_size);
memset(block3, 12, 34); // simulate use to avoid optimization // -V597 // -V1086
free(block3); // should crash here (if compiled with DEBUG=1)
free(block2);
free(block1);
// If we got here, the heap wasn't able to detect our corruption and crash
furi_crash("Test failed, should've crashed with \"FreeRTOS Assert\" error");
}
static void crash_test_submenu_callback(void* context, uint32_t index) {
CrashTest* instance = (CrashTest*)context;
UNUSED(instance);
@@ -49,6 +90,12 @@ static void crash_test_submenu_callback(void* context, uint32_t index) {
case CrashTestSubmenuHalt:
furi_halt("Crash test: furi_halt");
break;
case CrashTestSubmenuHeapUnderflow:
crash_test_corrupt_heap_underflow();
break;
case CrashTestSubmenuHeapOverflow:
crash_test_corrupt_heap_overflow();
break;
default:
furi_crash();
}
@@ -94,6 +141,18 @@ CrashTest* crash_test_alloc(void) {
instance->submenu, "Crash", CrashTestSubmenuCrash, crash_test_submenu_callback, instance);
submenu_add_item(
instance->submenu, "Halt", CrashTestSubmenuHalt, crash_test_submenu_callback, instance);
submenu_add_item(
instance->submenu,
"Heap underflow",
CrashTestSubmenuHeapUnderflow,
crash_test_submenu_callback,
instance);
submenu_add_item(
instance->submenu,
"Heap overflow",
CrashTestSubmenuHeapOverflow,
crash_test_submenu_callback,
instance);
return instance;
}

View File

@@ -5,6 +5,5 @@ App(
entry_point="direct_draw_app",
requires=["gui", "input"],
stack_size=2 * 1024,
order=70,
fap_category="Debug",
)

View File

@@ -6,6 +6,5 @@ App(
requires=["gui"],
fap_libs=["u8g2"],
stack_size=1 * 1024,
order=120,
fap_category="Debug",
)

View File

@@ -5,6 +5,5 @@ App(
entry_point="event_loop_blink_test_app",
requires=["input"],
stack_size=1 * 1024,
order=20,
fap_category="Debug",
)

View File

@@ -6,7 +6,6 @@ App(
requires=["expansion_start"],
fap_libs=["assets"],
stack_size=1 * 1024,
order=20,
fap_category="Debug",
fap_file_assets="assets",
)

View File

@@ -5,7 +5,6 @@ App(
entry_point="file_browser_app",
requires=["gui"],
stack_size=2 * 1024,
order=150,
fap_category="Debug",
fap_icon_assets="icons",
)

View File

@@ -5,6 +5,5 @@ App(
entry_point="keypad_test_app",
requires=["gui"],
stack_size=1 * 1024,
order=30,
fap_category="Debug",
)

View File

@@ -11,6 +11,5 @@ App(
"lfrfid_debug",
],
stack_size=1 * 1024,
order=100,
fap_category="Debug",
)

View File

@@ -0,0 +1,8 @@
App(
appid="loader_chaining_a",
name="Loader Chaining Test: App A",
apptype=FlipperAppType.DEBUG,
entry_point="chaining_test_app_a",
stack_size=1 * 1024,
fap_category="Debug",
)

View File

@@ -0,0 +1,164 @@
#include <furi.h>
#include <gui/gui.h>
#include <gui/view_dispatcher.h>
#include <gui/modules/submenu.h>
#include <loader/loader.h>
#include <dialogs/dialogs.h>
#define TAG "LoaderChainingA"
#define CHAINING_TEST_B "/ext/apps/Debug/loader_chaining_b.fap"
#define NONEXISTENT_APP "Some nonexistent app"
typedef struct {
Gui* gui;
ViewDispatcher* view_dispatcher;
Submenu* submenu;
Loader* loader;
DialogsApp* dialogs;
} LoaderChainingA;
typedef enum {
LoaderChainingASubmenuLaunchB,
LoaderChainingASubmenuLaunchBThenA,
LoaderChainingASubmenuLaunchNonexistentSilent,
LoaderChainingASubmenuLaunchNonexistentGui,
LoaderChainingASubmenuLaunchNonexistentGuiThenA,
} LoaderChainingASubmenu;
static void loader_chaining_a_submenu_callback(void* context, uint32_t index) {
LoaderChainingA* app = context;
FuriString* self_path = furi_string_alloc();
furi_check(loader_get_application_launch_path(app->loader, self_path));
switch(index) {
case LoaderChainingASubmenuLaunchB:
loader_enqueue_launch(app->loader, CHAINING_TEST_B, "Hello", LoaderDeferredLaunchFlagGui);
view_dispatcher_stop(app->view_dispatcher);
break;
case LoaderChainingASubmenuLaunchBThenA:
loader_enqueue_launch(app->loader, CHAINING_TEST_B, "Hello", LoaderDeferredLaunchFlagGui);
loader_enqueue_launch(
app->loader,
furi_string_get_cstr(self_path),
"Hello to you from the future",
LoaderDeferredLaunchFlagGui);
break;
case LoaderChainingASubmenuLaunchNonexistentSilent:
loader_enqueue_launch(app->loader, NONEXISTENT_APP, NULL, LoaderDeferredLaunchFlagNone);
break;
case LoaderChainingASubmenuLaunchNonexistentGui:
loader_enqueue_launch(app->loader, NONEXISTENT_APP, NULL, LoaderDeferredLaunchFlagGui);
break;
case LoaderChainingASubmenuLaunchNonexistentGuiThenA:
loader_enqueue_launch(app->loader, NONEXISTENT_APP, NULL, LoaderDeferredLaunchFlagGui);
loader_enqueue_launch(
app->loader,
furi_string_get_cstr(self_path),
"Hello to you from the future",
LoaderDeferredLaunchFlagGui);
break;
}
furi_string_free(self_path);
view_dispatcher_stop(app->view_dispatcher);
}
static bool loader_chaining_a_nav_callback(void* context) {
LoaderChainingA* app = context;
view_dispatcher_stop(app->view_dispatcher);
return true;
}
LoaderChainingA* loader_chaining_a_alloc(void) {
LoaderChainingA* app = malloc(sizeof(LoaderChainingA));
app->gui = furi_record_open(RECORD_GUI);
app->loader = furi_record_open(RECORD_LOADER);
app->dialogs = furi_record_open(RECORD_DIALOGS);
app->view_dispatcher = view_dispatcher_alloc();
app->submenu = submenu_alloc();
submenu_add_item(
app->submenu,
"Launch B",
LoaderChainingASubmenuLaunchB,
loader_chaining_a_submenu_callback,
app);
submenu_add_item(
app->submenu,
"Launch B, then A",
LoaderChainingASubmenuLaunchBThenA,
loader_chaining_a_submenu_callback,
app);
submenu_add_item(
app->submenu,
"Trigger error: silent",
LoaderChainingASubmenuLaunchNonexistentSilent,
loader_chaining_a_submenu_callback,
app);
submenu_add_item(
app->submenu,
"Trigger error: GUI",
LoaderChainingASubmenuLaunchNonexistentGui,
loader_chaining_a_submenu_callback,
app);
submenu_add_item(
app->submenu,
"Error, then launch A",
LoaderChainingASubmenuLaunchNonexistentGuiThenA,
loader_chaining_a_submenu_callback,
app);
view_dispatcher_add_view(app->view_dispatcher, 0, submenu_get_view(app->submenu));
view_dispatcher_set_navigation_event_callback(
app->view_dispatcher, loader_chaining_a_nav_callback);
view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
view_dispatcher_switch_to_view(app->view_dispatcher, 0);
return app;
}
void loader_chaining_a_free(LoaderChainingA* app) {
furi_record_close(RECORD_DIALOGS);
furi_record_close(RECORD_LOADER);
furi_record_close(RECORD_GUI);
view_dispatcher_remove_view(app->view_dispatcher, 0);
submenu_free(app->submenu);
view_dispatcher_free(app->view_dispatcher);
free(app);
}
int32_t chaining_test_app_a(const char* arg) {
LoaderChainingA* app = loader_chaining_a_alloc();
if(arg) {
if(strlen(arg)) {
DialogMessage* message = dialog_message_alloc();
FuriString* text;
dialog_message_set_header(message, "Hi, I am A", 64, 0, AlignCenter, AlignTop);
text = furi_string_alloc_printf("Me from the past says:\n%s", arg);
dialog_message_set_buttons(message, NULL, "ok!", NULL);
dialog_message_set_text(
message, furi_string_get_cstr(text), 64, 32, AlignCenter, AlignCenter);
dialog_message_show(app->dialogs, message);
dialog_message_free(message);
furi_string_free(text);
}
}
view_dispatcher_run(app->view_dispatcher);
loader_chaining_a_free(app);
return 0;
}

View File

@@ -0,0 +1,8 @@
App(
appid="loader_chaining_b",
name="Loader Chaining Test: App B",
apptype=FlipperAppType.DEBUG,
entry_point="chaining_test_app_b",
stack_size=1 * 1024,
fap_category="Debug",
)

View File

@@ -0,0 +1,27 @@
#include <furi.h>
#include <dialogs/dialogs.h>
#include <loader/loader.h>
int32_t chaining_test_app_b(const char* arg) {
if(!arg) return 0;
Loader* loader = furi_record_open(RECORD_LOADER);
DialogsApp* dialogs = furi_record_open(RECORD_DIALOGS);
DialogMessage* message = dialog_message_alloc();
dialog_message_set_header(message, "Hi, I am B", 64, 0, AlignCenter, AlignTop);
FuriString* text = furi_string_alloc_printf("And A told me:\n%s", arg);
dialog_message_set_text(message, furi_string_get_cstr(text), 64, 32, AlignCenter, AlignCenter);
dialog_message_set_buttons(message, "Just quit", NULL, "Launch A");
DialogMessageButton result = dialog_message_show(dialogs, message);
dialog_message_free(message);
furi_string_free(text);
if(result == DialogMessageButtonRight)
loader_enqueue_launch(
loader, "/ext/apps/Debug/loader_chaining_a.fap", NULL, LoaderDeferredLaunchFlagGui);
furi_record_close(RECORD_LOADER);
furi_record_close(RECORD_DIALOGS);
return 0;
}

View File

@@ -5,6 +5,5 @@ App(
entry_point="locale_test_app",
requires=["gui", "locale"],
stack_size=2 * 1024,
order=70,
fap_category="Debug",
)

View File

@@ -5,6 +5,5 @@ App(
entry_point="rpc_debug_app",
requires=["gui", "rpc_start", "notification"],
stack_size=2 * 1024,
order=10,
fap_category="Debug",
)

View File

@@ -5,7 +5,6 @@ App(
entry_point="speaker_debug_app",
requires=["gui", "notification"],
stack_size=2 * 1024,
order=10,
fap_category="Debug",
fap_libs=["music_worker"],
)

Some files were not shown because too many files have changed in this diff Show More