1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-13 05:06:30 +04:00

Compare commits

..

531 Commits

Author SHA1 Message Date
Methodius
b1a5d4fa8f Zolotaya Korona Online parser added 2024-01-13 17:01:06 +09:00
MX
634e841ce8 upd changelog 2024-01-13 03:24:27 +03:00
MX
924520a9a7 Revert "its time to enable this one"
This reverts commit bc1fdabce4.
2024-01-13 03:24:00 +03:00
Methodius
0d40e57cc8 LF RFID: Write with random password added [ci skip] 2024-01-13 02:39:50 +03:00
MX
81efe25a6e Merge branch 'ofw_dev' into dev 2024-01-12 15:39:40 +03:00
MX
781794f699 Revert "NFC: Skip system dict bug fixed"
This reverts commit 7de861bb4c.
2024-01-12 15:39:00 +03:00
hedger
0789cbdefa assets: checking limits on image size; ufbt: cdb target (#3359)
* scripts: assets: checking limits on image size
* ufbt: added "cdb" target for regenerating; also generating cdb on "vscode_dist"
* fbt: now also creating cdb for vscode_dist

Co-authored-by: あく <alleteam@gmail.com>
2024-01-12 17:58:37 +09:00
Leptopt1los
d289545bf8 NFC: system dict skip when user dict is skipped fix (#3356)
* NFC: system dict skip when user dict is skipped fix
* MFC poller allocator fix (by gornekich)

Co-authored-by: gornekich <n.gorbadey@gmail.com>
2024-01-12 17:41:19 +09:00
MX
e6db0842d4 upd changelog 2024-01-11 21:47:54 +03:00
MX
4b3d6e7332 Add NFC NDEF parser by Willy-JL
510404efe7/applications/main/nfc/plugins/supported_cards/ndef.c
2024-01-11 21:30:17 +03:00
MX
8a3557bc97 merge FuriHal: fix start duration furi_hal_subghz_async_tx 2024-01-11 17:33:29 +03:00
MX
b757544ede Merge branch 'ofw_dev' into dev 2024-01-11 17:10:11 +03:00
Skorpionm
34539cda17 FuriHal: fix start duration furi_hal_subghz_async_tx (#3230)
* FuriHal: fix start duration furi_hal_subghz_async_tx
* FuriHal: add check min duration arr for the first level
* FuriHal: fix conflict dev
* SubGhz: fix unit_test
* FuriHal: subghz internal fix start/stop transmit duration
* Drivers: subghz external fix start/stop transmit duration
* FuriHal: subghz optimization
* SubGhz: fix unit_test subghz
* FuriHal: subghz fix end duration if size == size dma buf
* FuriHal: revert enum values order, remove garbage
* FuriHal: revert one more small bit in subghz
* FuriHal: handle various corner cases in subghz transmission
* FuriHal: cleanup subghz code
* FuriHal: add parenthesis around value in subghz defines
* FuriHal: add packer subghz_async_tx
* FuriHal: more reliable subghz transmission end handling, fixes stuck transmission
* FuriHal: add subghz crutch docs, and rename some defines to conform naming standards
* FuriHal: subghz,  the logic of timers has been changed. disabling the shadow register ARR
* FuriHal: fix subghz off dma irq
* SubGhzExt: fun rename
* FuriHal,SubGhz: fix g0 state on reset, fix incorrect async_tx stop sequence, remove dead code.

Co-authored-by: あく <alleteam@gmail.com>
2024-01-11 16:56:14 +09:00
Augusto Zanellato
0b15fc3807 Fix MyKey production date parsing (#3332)
Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-01-10 22:49:30 +09:00
Leptopt1los
4d99a454fd NFC: parsers minor cleanup (#3329)
* WashCity cards parser cleanup
* umarsh includes cleanup

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-01-10 20:55:45 +09:00
RebornedBrain
3452fbc351 [FL-3744] [NFC] Ntag success write freeze when not saved card (#3354)
* New scenes for ultralight poller write mode
* Added new button and transition logic for write operation
  For now write is only possible for NTAG21x cards with default password and no AUTHLIM set
* Poller states extended
* Enums and datatypes extended for new poller mode
* Added mode field to poller instance datatype
* New states for poller added in order to implement write mode
* Added new event type for locked cards in order to simplify state flow
* New logic for poller write commands
* Scenes adjustments
* Scenes renamed
* New field added to poller instance
* Now we write in 'page per call' mode
* Now function takes callback return value into account
* Callback will be called only in write mode
* Event type added
* Log adjusted and start page to write set
* Logs added and check in now false at start, then it moves to true
* Now mf_ultralight_poller_handler_request_write_data halts card in case of check failure and stops poller
* All fail events now returns NfcCommandStop callback
* In case of fail we move back properly
* Remove garbage
* Fix moving to previous screen in case of not saved ultralight

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-01-10 20:46:55 +09:00
hedger
8c04947aa2 ufbt: fixed generated project paths on Windows (#3339) 2024-01-10 20:37:28 +09:00
MX
c85e1305c0 upd changelog 2024-01-08 01:13:22 +03:00
MX
5dfa2fd24c Merge branch 'leptoptilos' into dev 2024-01-08 00:02:55 +03:00
Methodius
71ed7f8e94 NFC parsers false read() positive return fixed pt2 2024-01-08 05:49:58 +09:00
Methodius
4636444464 NFC parsers false read() positive return fixed 2024-01-08 05:39:36 +09:00
MX
e7bf9b4df2 return default update splash screen 2024-01-06 22:35:08 +03:00
MX
f224a8ec57 Merge branch 'leptoptilos' into dev [ci skip] 2024-01-06 21:51:31 +03:00
Methodius
4a47644e64 update ReadMe.md 2024-01-07 03:09:47 +09:00
MX
7af56e8717 upd changelog 2024-01-06 19:39:24 +03:00
MX
526f728f89 Merge branch 'leptoptilos' into dev 2024-01-06 19:35:38 +03:00
Methodius
7de861bb4c NFC: Skip system dict bug fixed 2024-01-06 18:47:35 +09:00
Methodius
4e068ba593 NFC: Set ATQA scene bit numbering changed 2024-01-06 15:38:08 +09:00
MX
0d68fb409c update changelog 2024-01-06 01:47:05 +03:00
MX
b77f41949c Merge branch 'nfc-parsers' into dev 2024-01-06 01:23:48 +03:00
MMX
1d35110a98 Merge pull request #690 from DarkFlippers/leptoptilos
NFC: Add manually MF Classic with custom UID
2024-01-05 22:53:30 +03:00
MMX
e5738ec703 Merge pull request #683 from yaba/nfc-washcity
Added plugin to read WashCity card balance
2024-01-05 22:53:05 +03:00
MMX
942f024db9 Merge pull request #688 from Eczbek/patch-1
Remove weird newline in `applications/ReadMe.md`
2024-01-05 22:52:32 +03:00
MX
a640dfecf8 Merge branch 'dev' into leptoptilos 2024-01-05 22:41:57 +03:00
MX
4fa617b772 Merge branch 'dev' into nfc-parsers 2024-01-05 22:41:47 +03:00
MX
4b95efda49 move hid and snake apps into main repo [ci skip] 2024-01-05 22:41:29 +03:00
Methodius
f6a363e7d2 Fix MyKey production date parsing by augustozanellato (https://github.com/flipperdevices/flipperzero-firmware/pull/3332/files) 2024-01-06 04:36:06 +09:00
Methodius
d2549b3b1a Code cleanup 2024-01-06 03:18:32 +09:00
Methodius
1bae3d19ee Merge remote-tracking branch 'upstream/dev' into nfc-washcity 2024-01-06 03:13:07 +09:00
Methodius
d1df26cc83 NFC: Add manually MF Classic UID desync bug fixed 2024-01-06 00:56:50 +09:00
MX
66756853a6 Merge branch 'dev' into leptoptilos 2024-01-05 18:39:42 +03:00
MX
00d9c60515 subghz use long press to exit transmitter [ci skip]
to avoid unwanted 2 buttons hold condition
holding arrow button and exit causes default button change, which is stays as hidden feature
but this change makes it harder to call it accidentally
2024-01-05 18:39:04 +03:00
MX
e243ca47ba Merge branch 'ofw_dev' into dev 2024-01-05 17:39:24 +03:00
Methodius
941652ec57 NFC App: Generate MF Classic with custom UID added 2024-01-05 22:10:28 +09:00
あく
7eeb60e17e Desktop: fix rpc unlock on pin input screen (#3334) 2024-01-03 17:00:56 +04:00
MX
c8ce5e6ed4 replace icon 2024-01-02 14:10:19 +03:00
MX
1e89197349 Merge branch 'nfc-parsers' into dev 2024-01-02 13:57:17 +03:00
MX
b57f4ce848 Merge branch 'dev' into nfc-parsers 2024-01-02 13:57:06 +03:00
MX
48e80adccc Merge branch 'ofw_dev' into dev 2024-01-02 13:53:42 +03:00
RebornedBrain
d511d76a1b [FL-3678] [FL-3733] [FL-3723] UI refactor (#3323)
* Added new image DolphinSaved_113x58.png for all "saved" pages
* New image DolphinDone_80x58.png added
* Replaced dolphins on all scenes accroding to new UI specs
* New success dolphin image added
* Success scene image replaced
* Changed image and text for update initial scene
* Image and text adjusted for "Original restored" scene
* Removed old DolphinNice_96x59.png image
* New image for LFRFID scene
* Removed unused image
* New UI image added to assets
* Replaced warning dolphin on mf_classic write initial fail scene
* Removed old image
* Changed image on scenes to a new one
* New dolphin mafia image
* Replaced dolphin mafia image to a new one
* Removed DolphinMafia_115x62.png
* New check symbol on completed state for detect_reader
* Adjusted layout elements position
* Removed second switching to popup view in order to achieve control in support callbacks
In general now we show generic scene and after that in on_enter callback we can redefine it for particular protocol
* CardDetected event now also triggers on_event callback
* Now on AuthRequest we throw CardDetected custom event
* Added callback for read_on_event
* Now we show different screen while reading and unlocking
* Fixed missing asstes for some scenes
* Update DolphinMafia_119x62.png
* Adjusted all the scenes with DolphinMafia image
* Scenes with save image adjusted
* Removed unnecessary assets DolphinMafia_119x62.png and DolphinSaved_113x58.png
* All common dolphins moved to Dolphin folder
* Moved DolphinReadingSuccess_59x63.png to Dolphin folder
* Set proper led color for detect and read scenes
* Added new notification sequence for semi_success results
* Use new sequence for semi_success nfc reads
* Different events are now throwed depending on read result
* Added handling of incomplete event for ultralight cards
* Replaced image for iButton scene
* Updated API for f18
* Fixed issue with unlock retry sequence
* Fix after review
* Success notification replaced to semi success in case of incomplete mf classic reading
* New text for read scene
* New read result sound notification logic for mf classic cards

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2024-01-02 15:43:46 +09:00
Eczbek
0049b19994 Remove weird newline in applications/ReadMe.md
>:)
2024-01-01 21:56:58 -05:00
MX
56ad7ece69 add new update image for next builds
happy new year !
2023-12-30 03:11:55 +03:00
MX
b48103196f subghz revert previous "fix" and do proper fix
and thanks to Willy-JL !
2023-12-30 02:43:15 +03:00
Methodius
4d5e096437 parsers cleanup 2023-12-30 00:55:13 +09:00
MX
e5ceef3422 Merge branch 'ofw_dev' into dev 2023-12-29 16:57:23 +03:00
gornekich
a7b60bf2a6 MFC emulation fixes (#3324)
* mf classic listener: fix write block
* nfc: go to idle state instead of sleep
* lib nfc: fix documentation
2023-12-29 12:24:20 +09:00
あく
895694c624 Scripts: fix incorrect handling of storage stress test count option (#3321) 2023-12-28 19:15:07 +09:00
Arthur Braghetto
2a0a54a224 Add Samsung AC remotes DB93 and AR-EH04 (#3301)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-28 14:35:01 +09:00
YaBa
35e74c07d1 Added NFC plugin; parser for WashCity cards. (#3319)
* Added NFC plugin; parser for WashCity cards.
* Fixed file to the correct path
* Added demo file Demo_WC_20E.nfc
* Fixed clang format
* fixed typo (balance_cents)
* Removed demo file as requested.

Co-authored-by: あく <alleteam@gmail.com>
2023-12-28 14:23:12 +09:00
ry4000
f6a38352e8 Update mf_classic_dict.nfc (#3314)
This Commit proposes the addition of the 33 Bandai Namco Passport / Sega Aime Card static access keys that has been available to Members of the Flipper Devices Discord Server; for convenience, they are listed in Sector Key A/B order.

Sector 0 Key B has two possible access keys;
019761AA8082 [current Bandai Namco Passports]
574343467632 [Sega Aime Cards / early-edition Bandai Namco Passports]

Co-authored-by: あく <alleteam@gmail.com>
2023-12-28 14:12:13 +09:00
Eric Betts
76ed466eb4 Nfc: HID MFC Plugin (#3312)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-28 14:03:50 +09:00
YaBa
f7e0338a75 Added demo file 2023-12-27 00:48:30 +00:00
YaBa
ca62254ee7 Fixed clang format and typo in var balance_cents 2023-12-26 23:19:48 +00:00
YaBa
a6bfc27530 Added plugin to read WashCity card balance 2023-12-26 21:45:36 +00:00
MX
40cc78489a merge ofw dev 2023-12-27 00:13:37 +03:00
MX
5ef6adb9ea upd changelog 2023-12-26 23:29:24 +03:00
MMX
eef8c0ffa7 Merge pull request #677 from amec0e/dev
Updated infrared assets
2023-12-26 23:25:07 +03:00
MX
528d29b82d upd changelog and ac 2023-12-26 23:24:57 +03:00
MX
5c00a403f6 temp fix for subghz keyboard lock
actually - furi timer is broken :(((((
2023-12-26 22:49:38 +03:00
あく
c9e3f20314 [FL-3429] About: cn,tw,mx certification information (#3318) 2023-12-26 15:12:17 +09:00
あく
0084443ed7 [FL-3727] RPC: reverse input (#3304)
* RPC: reverse input
* Assets: sync protobuf
2023-12-26 14:09:10 +09:00
MX
b84f14386c subghz option to delete old signals on full memory 2023-12-24 03:08:24 +03:00
MX
111750c420 Merge branch 'ofw_dev' into dev 2023-12-22 22:14:20 +03:00
MX
2832160891 change log level 2023-12-22 22:13:28 +03:00
あく
531ba24e9a Rollback #3305 and #3297 fix various rendering issues (#3307)
* Revert "[FL-3729, FL-3730] Gui: fix string width calculation (#3305)"
* Revert "Added UTF-8 support to Flipper Zero canvas API (#3297)"
2023-12-22 11:08:46 +00:00
MX
4d56bb4e44 Revert "testing subghz dynamic limit based on freeheap + RPC"
This reverts commit 77f458fb6e.
2023-12-21 21:42:17 +03:00
MX
92bed4a081 Merge branch 'ofw_dev' into dev 2023-12-21 19:48:12 +03:00
MX
bcadbc6353 Revert "fix broken texts due to usage of utf8, add proper api"
This reverts commit 49b2a4da8a.
2023-12-21 19:45:45 +03:00
あく
1543170f4c [FL-3729, FL-3730] Gui: fix string width calculation (#3305) 2023-12-21 16:43:11 +00:00
amec0e
18194b6bb5 Update audio.ir
New additions
2023-12-21 15:41:32 +00:00
amec0e
cdede67f31 Update fans.ir
New additions
2023-12-21 15:41:08 +00:00
amec0e
c5a76af1dd Update projectors.ir
Updated last checked, no new additions
2023-12-21 15:40:44 +00:00
amec0e
1acbd84b7c Update tv.ir
New additions
2023-12-21 15:39:57 +00:00
MX
271ec6cf97 fix readme 2023-12-21 03:37:44 +03:00
MX
9b156fbdca Merge branch 'nfc-parsers' into dev 2023-12-21 03:36:44 +03:00
MX
de9765fa25 Merge branch 'dev' into nfc-parsers 2023-12-21 03:36:32 +03:00
MMX
abcb9b2f38 Merge pull request #672 from krolchonok/ir-show-number-brute
[IR] change percent on number
2023-12-21 03:35:54 +03:00
MX
eaae5da519 faac rcxt add manually (not tested) 2023-12-21 03:28:53 +03:00
MX
77f458fb6e testing subghz dynamic limit based on freeheap + RPC
by Willy-JL

5cd2d3eabe

e8d9325bec
2023-12-21 03:17:21 +03:00
MX
8fa21c49b2 better subghz history element removal
by Willy-JL

c40755f700
2023-12-21 03:16:16 +03:00
MX
49b2a4da8a fix broken texts due to usage of utf8, add proper api 2023-12-21 03:14:23 +03:00
MX
bc1fdabce4 its time to enable this one 2023-12-20 01:25:35 +03:00
MX
fc6e152fd1 Merge branch 'ofw_dev' into dev 2023-12-19 22:23:17 +03:00
Skorpionm
17b122990f USART Bridge: added support for software control of DE/RE pins (#3280)
* USART Bridge: added support for software control of DE/RE pins
* USART Bridge: fix syntax
* UsbUsartBridge: add TODO ticket
* UsbUsartBridge: add second TODO ticket
* GpioUartBridge: human readable configuration
* GpioUartBridge: rename `Soft DE/RE` to `DE/RE Pin`
* GpioUartBridge: push pull for DE/RE pin

Co-authored-by: あく <alleteam@gmail.com>
2023-12-19 14:13:37 +00:00
MX
78d1507f14 Merge branch 'ofw_dev' into dev 2023-12-19 16:27:23 +03:00
hedger
1e1d9fcb69 ufbt: changed toolchain environment invocation; updated .gitignore for app template (#3300) 2023-12-19 12:43:06 +00:00
gornekich
6f6074dc01 Keys Dict: fix PVS warnings (#3299)
* keys dict: fix PVS warnings
* nfc app: suppress PVS warning
2023-12-19 12:11:35 +00:00
MX
14c6abe4eb Merge branch 'ofw_dev' into dev 2023-12-19 14:01:10 +03:00
Evgeny Stepanischev
25d24f1e4c Added UTF-8 support to Flipper Zero canvas API (#3297)
* Added UTF-8 support to Flipper Zero canvas API
* Add unicode example

Co-authored-by: あく <alleteam@gmail.com>
2023-12-18 18:36:50 +00:00
MX
528d2a7ec3 Merge branch 'ofw_dev' into dev 2023-12-18 21:23:58 +03:00
Andrea Maugeri
7642d67cae NfcDict Refactoring (#3271)
* toolbox(keys_dict): generalize nfc_dict
* nfc: rework nfc app and tests
* toolbox(keys_dict): improve code readability
2023-12-18 14:30:56 +00:00
ushastoe
238187730c [IR] change percent on number
change percent on number in ir brute
2023-12-18 11:41:54 +03:00
Methodius
c53f5aa5b5 Zolotaya Korona transport card parser added 2023-12-17 04:58:07 +09:00
Methodius
ebe1a8f55f parsers cleanup for new api 2023-12-16 23:57:46 +09:00
MX
510f217cd5 Merge branch 'dev' into nfc-parsers 2023-12-16 02:33:09 +03:00
MX
364b334654 fix dict remove dupes 2023-12-16 02:33:00 +03:00
MX
afc2b14578 Merge branch 'dev' into nfc-parsers 2023-12-16 02:31:39 +03:00
MX
db57ff947b Merge branch 'ofw_dev' into dev 2023-12-16 02:16:46 +03:00
MarcelSchm
8c4716f170 added new TV Philips OLED 934/12 (#3293)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-15 19:07:01 +00:00
Gustavo de León
11ac6240d2 Add AC's Carrier 42QG5A580SC and AUX YKR-H/006E (#3284)
* Add Carrier 42QG5A580SC
* Add AC Model: AUX YKR-H/006E
* Cleanup ac.ir
* Infrared: Move Carrier 42QHB12D8S to the back of universal remote
* Infreared: more universal ac cleanup

Co-authored-by: あく <alleteam@gmail.com>
2023-12-15 18:57:08 +00:00
gornekich
d6680d1f75 [FL-3719] NFC Plugins loading rework (#3295)
* nfc app: rework supported cards
* nfc app: supported cards optimization
* nfc app: remove old nfc support implementation
* nfc app: add documentation for supported cards
* nfc app: format sources
* nfc app: fix PVS warnings
* nfc app: one more PVS fix
* nfc app: PVS please stop
* nfc app: add missing documentation

Co-authored-by: あく <alleteam@gmail.com>
2023-12-15 18:09:52 +00:00
gornekich
09540929c3 [FL-3717] MFC emulation fix (#3291)
* mf classic listener: reset state before sleep and after nack
* Fix PVS warnings
* Fix PVS and compiler disagree on builtins

Co-authored-by: あく <alleteam@gmail.com>
2023-12-15 17:51:20 +00:00
Leptopt1los
36aecfbec9 nfc_util: little endian bytes2num functions added (#3287)
* nfc_util_bytes2num_little_endian function added
* f18 target api version sync
* Bump api version

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-12-15 17:05:16 +00:00
Leptopt1los
0af74fb755 Umarsh transport cards parser (#3277)
* Umarsh transport card parser added
* Volna transport cards keys added

Co-authored-by: あく <alleteam@gmail.com>
2023-12-14 14:02:40 +00:00
Augusto Zanellato
78b7310057 Add MyKey parser (#3262)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-14 13:54:58 +00:00
あく
ccbb3a3498 [FL-3715] Update CLI MOTD (#3292)
* Add Carrier 42QG5A580SC

* Cli: update motd

---------

Co-authored-by: Gustavo de León <alfonso.gus.deleon@gmail.com>
2023-12-14 15:14:21 +04:00
MX
2d860b4a22 fix key display newline 2023-12-14 01:14:08 +03:00
MMX
09a66e2285 Merge pull request #668 from noproto/patch-1
Fix edge case -- 0.5% of UIDs got wrong result
2023-12-14 01:06:03 +03:00
MMX
fb17718a5d Merge pull request #667 from sudoAlphaX/patch-1
Fix typo
2023-12-14 01:05:45 +03:00
gornekich
73145e0beb mf classic listener: reset state before sleep and after nack 2023-12-14 00:35:21 +03:00
MX
55b4f87cd7 Merge branch 'ofw_dev' into dev 2023-12-13 20:24:48 +03:00
Nathan N
3dde112676 Fix edge case -- 0.5% of UIDs got wrong result 2023-12-12 11:17:33 -05:00
gornekich
155e4e9fa4 [FL-3706], [FL-3674] NFC NTAG and ISO14443-3b reading fix (#3285)
* mf ultralight poller: reset field after reading tearing flags
* iso14443-3b poller: change cid comparison in ATTRIB cmd

Co-authored-by: あく <alleteam@gmail.com>
2023-12-12 15:24:06 +00:00
あく
90cb1c4f2e FuriHal: RTC register reset API. New factory reset routine that wipes all RTC backup registers content. (#3288) 2023-12-12 19:12:57 +04:00
あく
e2e3663524 FuriHal: various GPIO improvements (#3260)
* FuriHal: add alternative gpio pulls that covers special cases, extra checks and crash on inalid parameters.
* FuriHal: optimize pwr_XX selection in gpio_init
* FuriHal: cleanup gpio param validation crash routine
2023-12-12 14:39:14 +00:00
Skorpionm
7b85e04462 [FL-3681] SubGhz: changed the name of the button when sending RAW to SubGHz (#3275) 2023-12-12 13:59:22 +00:00
Alpha
96412202ba Fix typo
Change Deafult to Default in line 170
2023-12-12 17:04:08 +05:30
MX
0b356c2d6d update changelog 2023-12-11 01:36:54 +03:00
MX
ee9092c8e5 Merge branch 'nfc-parsers' into dev 2023-12-08 00:18:23 +03:00
Methodius
2e7bb26eef Merge branch 'dev' into nfc-parsers 2023-12-07 22:22:29 +09:00
Methodius
5d28939c28 social_moscow parser verification collisions fix 2023-12-07 21:59:27 +09:00
MX
15a29e1483 format 2023-12-07 08:21:32 +03:00
MX
c22b3b57bd Merge branch 'nfc-parsers' into dev 2023-12-07 08:03:43 +03:00
MX
1daa2fa377 Merge branch 'ofw_dev' into dev 2023-12-07 08:03:18 +03:00
Methodius
1b45b8a17d Kazan parser: adult social tariff added 2023-12-06 18:25:47 +09:00
Methodius
e94beff204 Kazan parser: basic tariffs parsing added 2023-12-06 18:08:20 +09:00
gornekich
82baf1e923 [FL-3701] NFC fixes (#3264)
* nfc app: fix unlock with manual password crash
* nfc app: preserve card detected state
* nfc app: fix mf keys scene switch
* nfc app: fix multiple protocol tag detect notification
* nfc plugin: fix retrun in function body in aime parser
* iso14443-3b poller: rework ATTRIB response check
* nfc app: fix navigation after file load failur
* iso14443-3b poller: fix PVS warning
* mfc listener: add crutch in mfc emulation
2023-12-05 22:40:06 +09:00
MX
c416041379 Fix secplus v1 key display issue 2023-12-05 03:40:12 +03:00
MX
10444b943e Fix keeloq decode logic 2023-12-05 03:34:31 +03:00
MMX
2308a54ada Merge pull request #662 from noproto/dev
Add Saflok and MyKey KDFs
2023-12-05 03:33:37 +03:00
MMX
0ed6738a5b Merge pull request #660 from hnlcory/dev
Add keys to mf_classic_dict.nfc
2023-12-05 03:33:03 +03:00
noproto
dc25bfb831 Add Saflok and MyKey KDFs 2023-12-04 16:03:32 -05:00
MX
d6fcb04aa8 Merge branch 'ofw_dev' into dev 2023-12-03 18:42:11 +03:00
MX
9bf8f1015d fix keeloq null pointer if unknown 2023-12-03 18:41:28 +03:00
Honghao Zeng
c477d1321a nfc: m1k-based Aime (non-AIC) card support (#3241)
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2023-12-03 20:00:46 +09:00
MX
ec99b70b38 upd changelog 2023-12-02 23:55:05 +03:00
MX
06a58ebd53 Merge branch 'ofw_dev' into dev [ci skip] 2023-12-02 23:19:43 +03:00
Skorpionm
eb6fe0a4db SubGhz: fix count bit for detect gate_tx protocol (#3253)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-02 16:34:02 +09:00
pborsutzki
c6a14e1a67 Fixed a zero allocation error when reading an iso15693 nfc tag with no additional blocks. (#3229)
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2023-12-02 16:27:58 +09:00
Astra
04cead1fc5 [FL-3620] Add the "remove pairing" button to BLE hid (#3237)
Co-authored-by: あく <alleteam@gmail.com>
2023-12-02 14:03:10 +09:00
Astra
93732865ac [FL-3132] HID app: Add new function key icons (#3236)
* Add new function key icons
* Fix graphical glitches on the buttons

Co-authored-by: あく <alleteam@gmail.com>
2023-12-02 13:52:04 +09:00
RebornedBrain
6a5d63803a [FL-3675] Ntag21x write (#3246)
* New scenes for ultralight poller write mode
* Added new button and transition logic for write operation
   For now write is only possible for NTAG21x cards with default password and no AUTHLIM set
* Poller states extended
* Enums and datatypes extended for new poller mode
* Added mode field to poller instance datatype
* New states for poller added in order to implement write mode
* Added new event type for locked cards in order to simplify state flow
* New logic for poller write commands
* Scenes adjustments
* Scenes renamed
* New field added to poller instance
* Now we write in 'page per call' mode
* Now function takes callback return value into account
* Callback will be called only in write mode
* Event type added
* Log adjusted and start page to write set
* Logs added and check in now false at start, then it moves to true
* Now mf_ultralight_poller_handler_request_write_data halts card in case of check failure and stops poller
* All fail events now returns NfcCommandStop callback
* In case of fail we move back properly
* Remove garbage

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-12-02 13:45:47 +09:00
MX
159aef022b Fix keeloq decoding order 2023-12-01 22:51:21 +03:00
MX
f7c63c675b upd changelog 2023-12-01 20:38:01 +03:00
MX
99d657fcfb merge fixes 2023-12-01 20:33:14 +03:00
MX
00ceb2cd5d Merge branch 'ofw_dev' into dev 2023-12-01 20:29:16 +03:00
Augusto Zanellato
b51a754fd9 Mifare Classic nested auth support (#3238)
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-12-01 22:25:53 +09:00
Augusto Zanellato
c1e0d02afc ST25TB poller refining + write support (#3239)
* nfc: st25tb: rework async poller
* nfc: st25tb: introduce sync poller
* nfc: st25tb: add write support
* nfc: st25tb: rewrite poller to use better states
* nfc: st25tb: move to mode request state after success
* nfc: st25tb: minor bug fixes
* type wasn't properly set on ready event
* sending NfcCustomEventPollerFailure on St25tbPollerEventTypeFailure caused poller to being freed and ultimately resulted in a thread crash

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

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-12-01 18:16:48 +09:00
MX
961dd297dd upd changelog 2023-12-01 04:53:11 +03:00
MX
d675563271 sync anims 2023-12-01 04:47:54 +03:00
MX
e027d5c3e8 Add new API function for varitemlist
by Willy-JL

466e1f989f
2023-12-01 04:47:17 +03:00
MX
fdcfd5996b Merge branch 'ofw_dev' into dev 2023-12-01 02:33:41 +03:00
Astra
a849d49c92 [FL-3682] Add the secret door animation (#3233)
Co-authored-by: あく <alleteam@gmail.com>
2023-11-30 18:51:38 +09:00
Evgeny Stepanischev
ff129e524a Allows you to use UCS-2 in canvas_glyph_width (#3226)
* allows you to use UCS-2 in canvas_glyph_width
* Sync API Symbols

Co-authored-by: あく <alleteam@gmail.com>
2023-11-30 18:38:48 +09:00
Cory Parker
05479103a6 Update mf_classic_dict.nfc
Added in new mf classic keys
2023-11-29 21:41:10 -10:00
MX
ff41d262dc add 303.9 frequency 2023-11-29 16:18:20 +03:00
MX
8628a2c6a2 update changelog, release planned for next week 2023-11-29 03:26:05 +03:00
MX
30914678c9 ibutton FIX crash!!!
why??????
2023-11-29 00:20:15 +03:00
MX
c4bf1fe717 use char escaping 2023-11-28 04:39:46 +03:00
MX
1946aaf5e1 upd discord notify 2023-11-28 04:21:43 +03:00
MX
a7b2427007 Merge branch 'ofw_dev' into dev 2023-11-26 19:58:48 +03:00
Astra
f9101d8084 [FL-3686] Mifare Classic fixes (#3221)
* Update Mifare Classic generators to create more accuate data
* Check the transfer buffer validity for NACK
* Fix the AC issues
* CRC errors don't really affect emulation, checking for them isn't worth it
* Make ATQA logic a bit easier to understand
* mf classic: change log level
* mf classic: fix log level

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-11-26 17:20:49 +09:00
RebornedBrain
1c3cbec661 [FL-3640] NFC: Felica UID emulation (#3190)
* Added basic template of Felica listener
* Raw nfc felica listener functions
* Added functions to setup chip for felica listener
* Cleanup function templates from unnecessary parts
* Removed todo comment
* Updated api versions
* Adjusted chip config for felica
* Set proper chip passive target mode for felica
* Added felica function to unit tests
* Update furi_hal_nfc_felica.c
* Removed duplication

Co-authored-by: gornekich <n.gorbadey@gmail.com>
2023-11-26 17:10:33 +09:00
MX
cea423742b Merge remote-tracking branch 'origin/nfc-parsers' into dev 2023-11-24 02:56:39 +03:00
Methodius
8c5f28d6a0 Kazan parser: Type: abonnement fix 2023-11-23 23:59:06 +09:00
Methodius
6c2e332638 Kazan transport cards parser added 2023-11-23 22:19:26 +09:00
Methodius
5f18532a59 Umarsh code cleanup 2023-11-23 22:11:12 +09:00
Methodius
63f072a819 Umarsh header check rework reworked. Thanks J for idea! 2023-11-22 17:26:10 +09:00
Methodius
df1d6503c0 Umarsh header check rework 2023-11-22 16:15:53 +09:00
MMX
972054b377 Merge pull request #655 from DarkFlippers/nfc-parsers
Nfc parsers
2023-11-22 01:50:54 +03:00
MX
e1c89834df no verbose 2023-11-22 01:48:22 +03:00
assasinfil
c145cad653 Verify card bugfix 2023-11-21 22:34:29 +03:00
Methodius
4261063c99 Metromoney transport card parser added 2023-11-22 00:39:23 +09:00
MX
f8546937c0 fix readme and feature name 2023-11-21 15:59:38 +03:00
assasinfil
3daaea6ecf Added new social card 2023-11-21 15:03:46 +03:00
assasinfil
4a84fbc6e3 UI printing bugfix 2023-11-21 13:12:24 +03:00
assasinfil
d8800e9fe3 Merge branch 'nfc-parsers' of https://github.com/DarkFlippers/unleashed-firmware into nfc-parsers 2023-11-21 11:54:11 +03:00
assasinfil
7fd921227c Fixes 2023-11-21 11:54:06 +03:00
Methodius
b6ad07b47c Umarsh parser: kopecks support added 2023-11-21 13:18:18 +09:00
Methodius
1a21f0e3c9 Umarsh transport cards parser added 2023-11-21 12:21:22 +09:00
MX
c666368446 add simple nfc file name display
temp fix for UI
2023-11-21 01:53:20 +03:00
MX
91d614dd25 add subghz honeywell protocol
by htotoo

https://github.com/Flipper-XFW/Xtreme-Firmware/commits?author=htotoo
2023-11-21 01:00:15 +03:00
MMX
baca59927b Merge pull request #653 from DarkFlippers/nfc-parsers
Nfc parsers
2023-11-20 23:25:52 +03:00
MX
4eb40ce948 fix ibutton info display
by @krolchonok
+ added missing furi_string_free
a378db6663/applications/main/ibutton/scenes/ibutton_scene_info.c
2023-11-20 23:25:29 +03:00
assasinfil
00b1018e9e Fixed validating 2023-11-20 20:46:51 +03:00
assasinfil
9c92338ddf Added social card parser 2023-11-20 19:11:30 +03:00
assasinfil
8188b63522 cleanup 2023-11-20 18:43:23 +03:00
assasinfil
0e172b67eb Layout 1c4 fix 2023-11-20 18:22:17 +03:00
assasinfil
156948ec58 All code added to parser 2023-11-20 17:42:19 +03:00
Methodius
bbdda5a3d7 trying to fix previous fix of timestamp_to_datetime() 2023-11-20 22:19:29 +09:00
Methodius
51a2e638ed trying to fix timestamp_to_datetime() 2023-11-20 22:14:49 +09:00
assasinfil
ffd9d3c218 Added msk transport parser 2023-11-20 14:10:50 +03:00
MX
9513ff5307 fix rgb patch 2023-11-17 02:43:47 +03:00
MX
12e736b283 fix ci, temp workaround for manifest 2023-11-17 02:35:27 +03:00
MX
a64c9534e2 Merge branch 'ofw_dev' into dev 2023-11-17 02:20:27 +03:00
Sergey Gavrilov
4b3e8aba29 [FL-3664] 64k does not enough (#3216)
* Unit tests: add "exists" to furi_record tests
* Unit tests: mu_warn, storage 64k test
* Storage: read/write over 64k
* Unit tests: moar tests for storage r/w for >64k cases
* Apps, libs: replace uint16_t with size_t on storage r/w operations
* Unit tests: better data pattern, subghz: warning if transmission is prohibited

Co-authored-by: あく <alleteam@gmail.com>
2023-11-16 01:39:27 +09:00
hedger
98d5718ec9 fbt: improvements (#3217)
* fbt: changed cdefines & lib handling for external apps; added extra checks for app manifest fields; moved around AppsC generator
* fbt: commandline fixes for spaces in paths
* fbt: fixed stringification for FAP_VERSION
* fbt: Removed excessive quoting for gdb
* docs: update for cdefines; fbt: typo fix
* fbt: enforcing at least 2 components in app version=

Co-authored-by: あく <alleteam@gmail.com>
2023-11-16 01:27:35 +09:00
あく
457aa5331f Various Fixes for 0.95 (#3215)
* FuriHal: retry gauge/charger initialization
* FuriHal: lower logging level for flash known errata
* FuriHal: graceful fail if subghz chip is not working
* Furi: issue stop command even if timer is not active, document timer behavior
2023-11-15 20:11:05 +04:00
Flipper Zelebro
a61b5d4b4c Add Mastercode SubGHz Protocol (#3187)
* Add Mastercode SubGHz Protocol
* Add 2 valid raw files and cleanup code
* Add tests to the two Raw Files
* Remove extra test & delete comments
* Fixes pulse length and shows correct Key

Co-authored-by: FlipperZelebro <flipperzelebro [at] gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-11-15 18:04:45 +09:00
Georgii Surkov
ba074068b0 [FL-3662] Do not remove file when renaming to itself (#3193)
* Do not allow overwriting a file with dir and support renaming file to itself
* Fix operator precedence error
* Add support for storage-specific path equivalence checks
* Fix typo
* Fix updater compilation
* Update Doxygen comments in storage.h

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-11-15 17:56:13 +09:00
Georgii Surkov
615a147973 [FL-3608] Fix iButton crash on missing file (#3210)
Co-authored-by: あく <alleteam@gmail.com>
2023-11-15 17:45:41 +09:00
gornekich
c00776ca22 [FL-3666] NFC API improvements (#3214)
* drivers: expose st25r3916 driver API
* nfc poller: add start with custom callback
* mf classic: rework sync API with poller custom start
* mf ultralight: rework sync API with poller custom start
* iso14443_3a poller: remove unused col res state
* nfc: rework nfc poller custom start
* mf ultralight: rename sync API
* mf classic: rename sync API
* iso14443-3a: rename sync API
* nfc: remove async prefix in internal functions
* nfc: expose internal API
* nfc: fix sync api include and docs
* targets: fix f18 build
* nfc: rework NfcGenericEventEx type
* nfc poller: add documentation
* iso14443-3a poller: add documentation
* felica poller: add documentation
* iso14443_3b poller: add documentation
* so14443_4a poller: add documentation
* iso14443_4b poller: add documentation
* iso15693 poller: add documentation
* slix poller: add documentation
* mf desfire poller: add documentation
* mf ultralight poller: fix API and add documentation
* mf classic poller: add documentation

Co-authored-by: あく <alleteam@gmail.com>
2023-11-15 17:32:45 +09:00
RebornedBrain
d0b9a3a4ae [NFC] MF Ultralight no pwd polling adjustment (#3207)
* Listener log level changed to Trace
* Show pages count without pwd pages in case of no auth success
* Fixed unit tests

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-11-15 17:02:35 +09:00
Tobias Jost
dc246ddb09 Fix limited_credit_value having wrong value in mf_desfire_file_settings_parse (#3204)
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-11-15 16:39:29 +09:00
MMX
591a2f2b02 Merge pull request #649 from krolchonok/ibutton_fix
Fix naming in iButton
2023-11-13 20:01:09 +03:00
MX
7aaa847835 Merge branch 'nfcrefactoring' into dev 2023-11-13 20:57:36 +04:00
MX
18377185c7 upd dronich 2023-11-13 15:02:01 +04:00
MX
ef09dcf8f8 subghz things and remove rtos finally 2023-11-13 12:42:05 +04:00
ushastoe
42101c6594 Revert " applications_user/Flipper-Zero-Privet-Mir-main/"
This reverts commit 3e9ecd2f4f.
2023-11-13 11:27:27 +03:00
MX
bee1a6c18a remove rtos 2023-11-13 12:27:21 +04:00
ushastoe
3e9ecd2f4f applications_user/Flipper-Zero-Privet-Mir-main/ 2023-11-13 11:26:36 +03:00
MX
b958bfd5c9 Merge branch 'ofw_dev' into nfcrefactoring 2023-11-11 20:18:55 +04:00
ushastoe
725811d7b3 fix [] 2023-11-10 23:29:11 +03:00
ushastoe
a56a52b4bb Fix naming in iButton 2023-11-10 21:15:33 +03:00
Georgii Surkov
49dcf81743 [FL-3618] Infrared remote button index support (#3180)
* Do not load all signals at once (Draft)
* Minor cleanup
* Refactor remote renaming
* Improve function signatures
* Rename infrared_remote functions
* Optimise signal loading
* Implement adding signals to remote
* Add read_name() method
* Deprecate a function
* Partially implement deleting signals (draft)
* Use m-array instead of m-list for signal name directory
* Use plain C strings instead of furi_string
* Implement deleting signals
* Implement deleting signals via generalised callback
* Implement renaming signals
* Rename some types
* Some more renaming
* Remove unused type
* Implement inserting signals (internal use)
* Improve InfraredMoveView
* Send an event to move a signal
* Remove unused type
* Implement moving signals
* Implement creating new remotes with one signal
* Un-deprecate and rename a function
* Add InfraredRemote API docs
* Add InfraredSignal API docs
* Better error messages
* Show progress pop-up when moving buttons in a remote
* Copy labels to the InfraredMoveView to avoid pointer invalidation
* Improve file selection scene
* Show progress pop-up when renaming buttons in a remote
* Refactor a scene
* Show progress when deleting a button from remote
* Use a random name for temp files
* Add docs to infrared_brute_force.h
* Rename Infrared type to InfraredApp
* Add docs to infrared_app_i.h
* Deliver event data via a callback
* Bundle event data together with event type
* Change DataExchange behaviour
* Adapt RPC debug app to new API
* Remove rogue output
* Add Doxygen comments to rpc_app.h
* Simplify rpc_app.c code
* Remove superflous parameter
* Do not allocate protobuf messages on the stack
* Fix GetError response
* Support for button indices
* Comment out shallow submodules
* Fix F18 api
* Fix logical error and add more debug output
* fbt: testing unshallow for protobuf
* github: lint&checks: unshallow prior to checks
* Fix a TODO
* github: do not unshallow the unshallowed
* fbt: assets: only attempt to unshallow if cannot describe
* Do not use the name when loading a signal by index (duh)
* Simplify loading infrared signals by name
* Sync with protobuf release
* Infrared: use compact furi_crash macros

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-11-10 16:22:34 +09:00
gornekich
16ffa2bf75 [FL-3657] Fix NFC unit tests (#3192)
Co-authored-by: あく <alleteam@gmail.com>
2023-11-09 15:18:36 +09:00
MX
32e2cbe60a Merge branch 'ofw_dev' into nfcrefactoring 2023-11-08 15:14:30 +04:00
MX
a7e6eb7fe4 clock lol 2023-11-08 13:41:41 +04:00
MX
33ed5ea1f2 upd tv ir from pr manually 2023-11-08 13:10:09 +04:00
MX
c8c191c0a4 fix ir assets 2023-11-08 13:09:01 +04:00
MX
78af3214c3 api 44 2023-11-08 13:05:23 +04:00
MX
e244bedd64 resources rework pt1 2023-11-08 12:41:14 +04:00
MX
ebe95a92d1 infrared subghz merge fixes 2023-11-08 11:38:22 +04:00
MX
5921eb3d27 return some stuff 2023-11-08 11:26:11 +04:00
MX
9ed23799eb merge port p2 2023-11-08 11:08:17 +04:00
MX
19f524ec43 merge pt1 2023-11-08 10:27:39 +04:00
DerSkythe
085c90af40 fix: invariant format of log time data #3195 (#3202) 2023-11-05 17:59:22 +04:00
hedger
0d94abf856 fbt: dist improvements (#3186)
* fbt: MENUEXTERNAL apps now respect build configuration; fixed `fap_deploy`
* fbt, ufbt: better message for missing app manifests (shows real paths)

Co-authored-by: あく <alleteam@gmail.com>
2023-11-02 22:28:39 +09:00
Georgii Surkov
0131eb3aa2 [FL-3656] Fix crash when exiting write mode (#3191) 2023-11-02 22:10:16 +09:00
MX
bee48f483c Merge branch 'ofw_dev' into nfcrefactoring 2023-11-01 21:07:33 +03:00
あく
47cc05dab4 [FL-3655] Dolphin: Extreme butthurt loop fix (#3184)
* Furi: change timer restart function signature, explicitly require timer time. Dolphin: fix incorrect timer usage caused by refactoring.
* Format Sources
* Furi: update timer documentation
2023-11-01 19:23:02 +04:00
あく
aa06328516 Furi, FuriHal: remove FreeRTOS headers leaks (#3179)
* Furi: remove direct FreeRTOS timers use
* Furi: eliminate FreeRTOS headers leak. What did it cost? Everything...
* SubGhz: proper public api for protocols. Format Sources.
* Furi: slightly less redundant declarations
* Desktop: proper types in printf
* Sync API Symbols
* Furi: add timer reset and fix dolphin service, fix unit tests
* Furi: proper timer restart method naming and correct behavior in timer stopped state.

---------

Co-authored-by: hedger <hedger@nanode.su>
2023-11-01 11:24:11 +04:00
hedger
7bd3bd7ea4 fbt: source collection improvements (#3181)
* fbt: reduced amount of redundant compilation units
* fbt: added GatherSources() method which can reject source paths starting with "!" in sources list; optimized apps' source lists
* docs: updated on path exclusion for `sources`
* apps: examples: fixed example_advanced_plugins source list
* docs: more details on `sources`; apps: narrower sources lists
2023-11-01 13:21:31 +09:00
Astra
bf8984a225 [FL-3647] Rename menu items related to dummy mode and sound (#3177)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-10-31 20:34:21 +09:00
hedger
bbe68d6ffc [FL-3629] fbt: SD card resource handling speedup (#3178)
* fbt: reduced size of resources dependency graphs, resulting in faster build task evaluation
* lib: flipper_app: fixed error message & error handling for plugins
2023-10-31 15:27:58 +04:00
あく
9af81ce8d0 Furi: cleanup crash use (#3175)
* Furi: optional message in furi_crash and furi_halt
* Consistent furi_crash use
* UnitTests: crash instead of assert
* furi: check: fixed macro for default arg
* unit_tests: fixed crashes everywhere
* lib: infrared: fixed PVS warnings
* furi: eliminated __FURI_ASSERT_MESSAGE_FLAG
* Furi: update check.h docs
* Furi: add check.h usage note
* Docs: grammar

---------

Co-authored-by: hedger <hedger@nanode.su>
2023-10-31 14:40:32 +04:00
Georgii Surkov
c8180747db [FL-3456] Allow for larger Infrared remotes (#3164)
* Do not load all signals at once (Draft)
* Minor cleanup
* Refactor remote renaming
* Improve function signatures
* Rename infrared_remote functions
* Optimise signal loading
* Implement adding signals to remote
* Add read_name() method
* Deprecate a function
* Partially implement deleting signals (draft)
* Use m-array instead of m-list for signal name directory
* Use plain C strings instead of furi_string
* Implement deleting signals
* Implement deleting signals via generalised callback
* Implement renaming signals
* Rename some types
* Some more renaming
* Remove unused type
* Implement inserting signals (internal use)
* Improve InfraredMoveView
* Send an event to move a signal
* Remove unused type
* Implement moving signals
* Implement creating new remotes with one signal
* Un-deprecate and rename a function
* Add InfraredRemote API docs
* Add InfraredSignal API docs
* Better error messages
* Show progress pop-up when moving buttons in a remote
* Copy labels to the InfraredMoveView to avoid pointer invalidation
* Improve file selection scene
* Show progress pop-up when renaming buttons in a remote
* Refactor a scene
* Show progress when deleting a button from remote
* Use a random name for temp files
* Add docs to infrared_brute_force.h
* Rename Infrared type to InfraredApp
* Add docs to infrared_app_i.h

Co-authored-by: あく <alleteam@gmail.com>
2023-10-31 01:20:35 +09:00
hedger
917410a0a8 [FL-3629] fbt: reworked assets & resources handling (#3160)
* fbt: reworking targets & assets handling WIP
* fbt: dist fixes
* fbt: moved SD card resources to owning apps
* unit_tests: moved resources to app folder
* github: updated unit_tests paths
* github: packaging fixes
* unit_tests: fixes
* fbt: assets: internal cleanup
* fbt: reworked assets handling
* github: unit_tests: reintroducing fixes
* minor cleanup
* fbt: naming changes to reflect private nature of scons tools
* fbt: resources: fixed dist archive paths
* docs: updated paths
* docs: updated more paths
* docs: included "resources" parameter in app manifest docs; updated assets readme
* updated gitignore for assets
* github: updated action versions
* unit_tests: restored timeout; scripts: assets: logging changes
* gh: don't upload desktop animations for unit test run

Co-authored-by: あく <alleteam@gmail.com>
2023-10-31 00:17:30 +09:00
あく
176fb21f5f Storage: speedup write_chunk cli command (#3173)
* Storage: speedup write_chunk cli command

* Storage: handle disconnect on write_chunk correctly
2023-10-30 18:51:51 +04:00
MX
593b5fc098 Merge branch 'ofw_dev' into nfcrefactoring 2023-10-29 02:23:02 +03:00
Augusto Zanellato
0fe93fcfa4 fix crash after st25tb save (#3170)
Co-authored-by: あく <alleteam@gmail.com>
2023-10-28 23:45:08 +09:00
Georgii Surkov
cfaf745523 [FL-3643] Fix crash when reading files > 64B (#3166)
* Increase MF DESFire result buffer
* Ignore chunks that do not fit into the result buffer and show warning
* Display information about partial files

Co-authored-by: あく <alleteam@gmail.com>
2023-10-28 23:29:14 +09:00
gornekich
3d872cf37a [FL-3637] NFC RC fixes (#3165)
* firmware: remove nfc lib build settings section
* furi hal nfc: fix nfc irq gpio deinit
* lib nfc: remove deprecated exception from sources
* nfc: use ASK demodulator in transparent mode
* mf ultralight: add upper page bound for NTAGI2C1K
* furi hal nfc: set event if nfc event was started
* nfc: fix PVS warnings
* lib signal reader: remove gpio pull setting in alloc
* furi: added math.h include for compatibility with existing apps
* nfc: remove resolved TODO in mf desfire poller
* bump api symbol version

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: あく <alleteam@gmail.com>
2023-10-28 23:22:07 +09:00
Georgii Surkov
844e0f10e5 [FL-3639] Fix MF DESFire record file handling (#3167) 2023-10-28 22:56:49 +09:00
MX
92969ecc1f remove mf classic uid add manually temp 2023-10-24 16:04:55 +03:00
MX
3bbb326c9c Merge branch 'ofw_dev' into nfcrefactoring 2023-10-24 14:42:49 +03:00
gornekich
d92b0a82cc NFC refactoring (#3050)
"A long time ago in a galaxy far, far away...." we started NFC subsystem refactoring.

Starring:

- @gornekich - NFC refactoring project lead, architect, senior developer
- @gsurkov - architect, senior developer
- @RebornedBrain - senior developer

Supporting roles:

- @skotopes, @DrZlo13, @hedger - general architecture advisors, code review
- @Astrrra, @doomwastaken, @Hellitron, @ImagineVagon333 - quality assurance

Special thanks:

@bettse, @pcunning, @nxv, @noproto, @AloneLiberty and everyone else who has been helping us all this time and contributing valuable knowledges, ideas and source code.
2023-10-24 12:08:09 +09:00
MX
ac5abdbb1d add new env var 2023-10-24 00:56:15 +03:00
MX
2958e5cef3 Merge branch 'ofw_dev' into dev 2023-10-23 21:40:52 +03:00
hedger
35c903494c [FL-3627, FL-3628, FL-3631] fbt: glob & git improvements (#3151)
* fbt: optional shallow submodule checkout
* fbt: more git threads by default
* fbt: git condition fix
* fbt: renamed FBT_SHALLOW to FBT_GIT_SUBMODULE_SHALLOW
* github: enabled   FBT_GIT_SUBMODULE_SHALLOW in flows
* fbt: always compile icons' .c, even if user does not specify a proper source glob; changed glob to require files at user-specified paths to exist
* fbt: fail build for missing imports in .faps
* fbt: moved STRICT_FAP_IMPORT_CHECK to commandline options; enabled by default
* ufbt: enabled STRICT_FAP_IMPORT_CHECK

Co-authored-by: あく <alleteam@gmail.com>
2023-10-23 18:55:36 +09:00
Sergey Gavrilov
1b6295b2bf [FL-3632] FastFAP: human readable error log (#3156) 2023-10-23 18:49:16 +09:00
MX
b93a06354f upd changelog 2023-10-17 23:41:23 +03:00
MX
2d9090b2de fix niceflors 2023-10-17 22:15:42 +03:00
MMX
e5b079f4ce Merge pull request #620 from G2Dolphin/niceflors
Added NiceFloR-S to ignore options, removed colons.
2023-10-17 03:51:22 +03:00
MX
1e5223c6ab nice one is disabled too 2023-10-17 00:46:59 +03:00
MX
29a1865ec3 Merge branch 'dev' into niceflors 2023-10-16 18:07:51 +03:00
MX
8b8174b1b4 upd changelog 2023-10-16 06:05:55 +03:00
MX
53245986ab Remove migration, not needed anymore 2023-10-16 05:29:23 +03:00
MX
b44bc718be SubGHz: Add 4 more systems to add manually (untested!!!)
if you have remotes from these systems please share captures, also try binding flipper as new remote in current condition
2023-10-16 05:28:47 +03:00
MX
8e3378b7b9 SubGHz: add manually fixes 2023-10-16 05:06:40 +03:00
MX
9e90948fc3 RGB: Fix white color on reboot, move settings, add custom color options 2023-10-16 05:01:42 +03:00
MX
b87a8ca329 Merge branch 'ofw_dev' into dev 2023-10-15 01:30:55 +03:00
Astra
e664159188 [FL-3621] Fix double arrows and add proper indication (#3146)
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-10-13 05:48:16 +09:00
Derek Jamison
9d6352e92f fix #3141: 12-bits is 0xFFF (or 0xFF0) CAME/NICE 12-bit (#3142)
* 12-bits is 0xFFF (or 0xFF0)
* Mask with 0x7FFFF3FC for 850LM pairing

Co-authored-by: あく <alleteam@gmail.com>
2023-10-13 05:39:14 +09:00
あく
f45a5dff43 Fix various crashes if debug libraries used (#3144)
* FuriHal: enable HSI in stop mode only if we use STOP0, proper SMPS selected clock assert

* Furi: fix double crash caused by bkpt use outside of debug session

* Libs: update ERC and MGG contrast

* Fix various crashes with LIB_DEBUG=1

* BadUsb: size_t where it should be and proper printf types

* Various fixes and make PVS happy

* FuriHal: proper CCID status and make PVS happy

* boot: update mode: graceful handling of corrupted stage file

---------

Co-authored-by: hedger <hedger@nanode.su>
2023-10-12 20:34:30 +04:00
MX
130fa43ad6 update changelog 2023-10-11 01:25:36 +03:00
MX
76e5a1c087 Merge branch 'ofw_dev' into dev 2023-10-09 22:21:49 +03:00
h00die
38792f2c93 Fix spelling across some project files (#3128)
* codespell across project

Co-authored-by: あく <alleteam@gmail.com>
2023-10-10 04:01:17 +09:00
Filipe Paz Rodrigues
4308a5e377 CCID: Support PC To Reader Transfer Block data (#3126)
* CCID: Support PC To Reader Transfer Block data
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2023-10-10 03:48:37 +09:00
あく
65a56cdb4a Firmware: bigger thread name storage. Notification app: better BacklightEnforce edge cases handling. (#3137) 2023-10-09 21:55:38 +04:00
あく
fbded1e4ee Lib: update stm32wb_copro to 1.17.3 release (#3119)
* Lib: update stm32wb_copro to 1.17.3 release
* Bump copro versions
* Lib: switch stm32_copro to release
2023-10-09 22:03:27 +09:00
hedger
4ae9a02efa FuriHal ble: length fix for fw version prop (#3136)
* hal ble: length fix for fw version prop
* hal ble: dev_info char: setting data after setup is done
* api: storage: enabled storage_file_sync
2023-10-09 21:53:20 +09:00
MX
2c3b5ca43d Revert "Temp fix for older iOS v9-14 HID support"
This reverts commit 016abe3273.
2023-10-09 15:44:37 +03:00
MX
b51b8eb843 here too 2023-10-09 02:24:18 +03:00
MX
40552e6837 and this one too 2023-10-09 02:22:03 +03:00
MX
9960328d3e fix linebreaks 2023-10-09 02:20:20 +03:00
MX
3ac6aef6cf Add FAQ 2023-10-09 02:14:50 +03:00
MX
700cee3766 lower even more due to nfc small free ram issues 2023-10-08 22:37:44 +03:00
MX
c1363a18cc Merge branch 'ofw_dev' into dev 2023-10-08 11:43:16 +03:00
MX
016abe3273 Temp fix for older iOS v9-14 HID support
TODO: Fix it properly
2023-10-08 11:42:56 +03:00
MX
5bf5826c88 disable sorting if more than 300 files are in current folder
fixes current out of memory crash
2023-10-08 11:39:47 +03:00
Skorpionm
62a4c0dd03 [Documentation]: add documentation SubGhz Bin_RAW file format (#3133)
* [Documentation]: add documentation SubGhz Bin_RAW file format
* [Documentation]: fix error

Co-authored-by: あく <alleteam@gmail.com>
2023-10-06 16:20:32 +09:00
hedger
d47e5ca520 fbt: glob improvements (#3117)
* fbt: glob improvements, now treats entries with no special glob chars as files by default, not calling scons' globbing for them
* fbt: further fixes for glob
* fbt: less strict existence checks
* fbt: fixed frame_rate collection; typo fixes & comments

Co-authored-by: あく <alleteam@gmail.com>
2023-10-06 16:11:02 +09:00
Astra
699078d5a5 [FL-3576] HEX input UI improvements (#3112)
Co-authored-by: あく <alleteam@gmail.com>
2023-10-06 15:15:26 +09:00
Soren
8ebfda6b8c Added NiceFloR-S to ignore options, removed colons. 2023-10-03 17:56:39 +03:00
MMX
e7ea821650 Merge pull request #612 from baugp/t5577-write-pwd-fix
bugfix t5577_write_with_pass
2023-10-03 09:14:11 +03:00
MMX
0c2c74ae21 Merge pull request #619 from amec0e/dev
Updated infrared assets
2023-10-03 09:13:33 +03:00
Max Andreev
9898a5d0dd Enable PVS Studio license check (#3122) 2023-10-02 18:51:41 +09:00
amec0e
09f86f24fd Update audio.ir
No new additions
2023-10-01 16:07:21 +01:00
amec0e
57aa5e1620 Update fans.ir
New additions
2023-10-01 16:06:38 +01:00
amec0e
ef01355297 Update projectors.ir
New additions + Fix
2023-10-01 16:06:14 +01:00
amec0e
14c0572368 Update tv.ir
New additons
2023-10-01 16:05:19 +01:00
MX
50aaacd30d Merge branch 'ofw_dev' into dev 2023-09-30 23:42:42 +03:00
MX
2f44fd6cac nice flor s add button code 0x3 2023-09-30 23:41:54 +03:00
あく
c924693a84 Ble: fix null-ptr dereference in bt_change_profile (#3110) 2023-09-26 14:09:17 +10:00
Piyamate Wisanuvej
e739aeeb10 bugfix t5577_write_with_pass 2023-09-26 10:08:40 +07:00
MX
5031540a8f sync anims 2023-09-25 16:53:46 +03:00
MX
fc1ec55a40 Merge branch 'ofw_dev' into dev 2023-09-25 16:53:05 +03:00
Astra
a6bb9698ef [FL-3609] Add the coding in the shell animation (#3106)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-25 17:03:51 +09:00
あく
63d7d46bd3 FuriHal,BleGlue: prevent sleep while HCI command executed, proper bt api rpc locking. Fixes random system lockups. (#3107) 2023-09-25 09:12:12 +04:00
hedger
e1030e7999 fbt: reworked tool path handling (#3105)
* fbt: removed absolute paths from env setup; moved abs paths to cdb tool
* fbt: moved tool lookup to cdb emitter
* fbt: cdb: quote only tools with spaces in path
* typo fix
* fbt: pvs: suppress license expiration warning
2023-09-25 14:04:34 +09:00
MMX
8d1a4a5c69 Merge pull request #607 from amec0e/dev
Updated infrared assets
2023-09-23 00:01:15 +03:00
MX
cc5607d66f include totp cli plugins 2023-09-22 23:45:47 +03:00
MX
8666cdc5ef Merge branch 'ofw_dev' into dev 2023-09-21 22:43:48 +03:00
MX
286dbfaf0b Revert "Revert "Revert "temp remove before release"""
This reverts commit 4368ff4294.
2023-09-21 22:40:14 +03:00
MX
bf8357ee52 Revert "Testing hid without LED descr"
This reverts commit f7f9250e55.
2023-09-21 22:39:57 +03:00
あく
b98631c633 Gui: handle view port lockup and notify developer about it (#3102)
* Gui: handle view port lockup and notify developer about it

* Gui: fix more viewport deadlock cases and add proper notification
2023-09-21 18:34:48 +04:00
hedger
1891d54baf [FL-3600] Added fal_embedded parameter for PLUGIN apps (#3083)
* fbt, ufbt: added `fal_embedded` parameter for PLIGIN apps, to embed them into .fap
* fbt: fixed dependency settings for assets
* fbt: extapps: Removed unneeded casts
* fbt: extapps: code simplification
* fbt: fal_embedded: fixed dependency relations

Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 21:56:00 +09:00
hedger
b80dfbe0c5 github: fixed grep arg for RC builds (#3093)
* github: fixed grep arg for RC builds
* scripts: fbt: checking for .git existence, not for it being a dir

Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 18:44:55 +09:00
Robin Gareus
a73a83f04d IR Universal Audio Remote: Amend 98d4309 -NAD Amp (#2954) (#3092)
The original PR was cut short

Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 18:36:46 +09:00
Astra
3fbb9f24f8 [FL-3583] Fix multiline aligned text going out of bounds (again) (#3084)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 18:29:28 +09:00
Filipe Paz Rodrigues
a089aeb2bd Add Initial CCID support (#3048)
* Add Initial CCID support
* Sync api symbols
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 18:09:00 +09:00
Astra
182c8defb1 [FL-3458] Add confirmation before exiting USB-UART (#3043)
* Add confirmation before exiting USB-UART
* Redo the confirm view to be a scene to ignore the back button

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 17:06:45 +09:00
agarof
f46018b204 Add extended I2C HAL functions (#3037)
* Add extended I2C HAL functions
* Rename I2CEndClockStretch to I2CEndAwaitRestart
* Address review comments
* Update f18 api_symbols.csv
* FuriHal: check input values in cortex timer
* FuriHal: cleanup I2C documentation
* Properly bump api symbols
* FuriHal: fix incorrect cast in I2C write_reg methods, fix spelling and naming
* FuriHal: cleanup const usage in I2C, sync declaration and implementation
* Format Sources
* FuriHal: more i2c docs
* Add I2C Restart and Pause / Resume test
* Add I2C auto-reload test
* UnitTests: skip furi_hal_i2c_ext_eeprom if eeprom is not connected
* UnitTest: cleanup subghz test output
* FuriHal: classic timeouts in i2c

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-09-21 16:54:25 +09:00
MX
f7f9250e55 Testing hid without LED descr 2023-09-19 17:45:34 +03:00
hedger
70b8823eb8 experimental key size change 2023-09-19 17:36:12 +03:00
MX
8f5ea2be83 Merge branch 'ofw_dev' into dev 2023-09-19 17:27:48 +03:00
MX
abe0e34ace Merge branch 'blegatt_refactor_merge' into dev 2023-09-19 17:27:33 +03:00
MX
1f485be6e8 Merge branch 'dev' into blegatt_refactor_merge 2023-09-19 17:27:18 +03:00
MX
4368ff4294 Revert "Revert "temp remove before release""
This reverts commit 6a2adf69e6.
2023-09-19 17:23:21 +03:00
あく
338fc3afea New clock switch schema, fixes random core2 crashes (#3008)
* Updated stack to 1.17.0

* hal: ble: Fixed stack config

* Bumped stack version in config

* scripts: added validation of copro stack version in update bundles

* Copro: update to 1.17.2

* FuriHal: adjust tick frequency for HSE as sys clk

* FuriHal: adjust systick reload on sys clock change

* Sync api and format sources

* scripts: updated ob.data for newer stack

* FuriHal: return core2 hse pll transition on deep sleep

* FuriHal: cleanup ble glue

* FuriHal: rework ble glue, allow shci_send in critical section

* FuriHal: sync api symbols

* FuriHal: cleanup BLE glue, remove unused garbage and duplicate declarations

* FuriHal: BLE glue cleanup, 2nd iteration

* FuriHal: hide tick drift reports under FURI_HAL_OS_DEBUG

* Lib: sync stm32wb_copro with latest dev

* FuriHal: ble-glue, slightly less editable device name and duplicate definition cleanup

* FuriHal: update ble config options, enable some optimizations and ext adv

* FuriHal: update clock switch method documentation

* FuriHal: better SNBRSA bug workaround fix

* FuriHal: complete comment about tick skew

* FuriHal: proper condition in clock hsi2hse transition

* FuriHal: move PLL start to hse2pll routine, fix lockup caused by core2 switching to HSE before us

* FuriHal: explicit HSE start before switch

* FuriHal: fix documentation and move flash latency change to later stage, remove duplicate LL_RCC_SetRFWKPClockSource call

---------

Co-authored-by: hedger <hedger@nanode.su>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-09-19 18:22:21 +04:00
MX
fdc39f8473 Merge branch 'ofw_dev' into dev 2023-09-15 17:52:23 +03:00
amec0e
931f4464c2 Update projectors.ir
Temporary power fix
2023-09-14 20:12:14 +01:00
amec0e
5901720681 Update fans.ir
1 New addition
2023-09-14 20:10:48 +01:00
amec0e
e68ee9b47c Update audio.ir
No new additions
2023-09-14 20:09:40 +01:00
amec0e
ee24e4eb48 Update tv.ir
No new additions
2023-09-14 20:09:21 +01:00
Skorpionm
25af13e998 SubGhz: Fix CLI subghz chat (#3073)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-14 18:27:01 +09:00
Max Andreev
ac892f3d03 Fix DMA SPI memory increment define (#3075) 2023-09-14 18:15:20 +09:00
MX
4d3a3070e4 Merge branch 'dev' into blegatt_refactor_merge 2023-09-12 19:20:03 +03:00
MX
6a2adf69e6 Revert "temp remove before release"
This reverts commit 19ca956e7c.
2023-09-12 19:00:25 +03:00
MX
19ca956e7c temp remove before release 2023-09-12 18:59:12 +03:00
MX
1530c2b4f1 update changelog 2023-09-12 18:56:15 +03:00
hedger
f0f2a6c11f github: typo fix (#3070)
* github: typo fix
* github: sdk action: added validation for action inputs
* github: sdk action: 10+ rcs
2023-09-12 18:24:44 +09:00
hedger
8bfa9898e3 github: final fixes for SDK publishing (#3069)
* Fixes 4 fixes 4 fixes
* gh: proper step naming
* github: Restored SDK processing logic
2023-09-12 10:20:45 +09:00
MX
953a747b1a make text more centered 2023-09-12 01:18:50 +03:00
MX
8835ef3598 move things 2023-09-12 00:42:34 +03:00
MX
cbc5d61ab7 princeton and varitemlist ui fixes 2023-09-11 23:57:17 +03:00
MX
e8210cd94d fix 2023-09-11 22:27:27 +03:00
MX
b6ff400587 update changelog 2023-09-11 20:47:11 +03:00
hedger
91813831c6 github: specified shell for SDK submission action (#3068) 2023-09-12 01:36:13 +09:00
hedger
c657eb8a40 github: potential fix for compact builds (#3067)
* github: potential fix for compact builds
* github: explicit build mode
2023-09-12 01:18:04 +09:00
MX
091210c003 ofw upds 2023-09-11 18:51:14 +03:00
MX
d4cad7b8c6 add refactor things back 2023-09-11 18:39:38 +03:00
MX
5949d7be1c Merge branch 'ofw_dev' into dev 2023-09-11 18:38:13 +03:00
Skorpionm
ac3bd337a1 [FL-3589] Sub-GHz: incorrect key parsing crash (#3066) 2023-09-12 00:30:16 +09:00
MX
f09d364e95 update subghz remote 2023-09-11 17:18:00 +03:00
MX
7f474ed9c6 Ignore princeton option and fix typo magellan 2023-09-11 17:03:17 +03:00
MX
04c914d945 fix typo 2023-09-11 16:55:08 +03:00
MX
93ae4db35a moved into codeql yml 2023-09-11 16:41:30 +03:00
MMX
2db719f35c Create codeql.yml 2023-09-11 16:40:47 +03:00
MMX
e36b87ddd9 Merge pull request #600 from DarkFlippers/readme_update
Readme: instructions block systematized & cleanup
2023-09-11 16:38:44 +03:00
MMX
1c360ae110 Merge pull request #599 from derskythe/ci/codeql-code-scan
[FEAT] add workflow to automatic CodeQL Code scanning
2023-09-11 16:38:34 +03:00
MMX
44140caa2d Merge pull request #590 from derskythe/feat/subghz-save-hopping-state
[FEAT] Save hopping state in SubGHz
2023-09-11 16:38:21 +03:00
hedger
15894235a9 [FL-3596] fbt: added FW_CFG_<name> with build configuration (#3062) 2023-09-11 22:34:41 +09:00
DerSkythe
fae8d91880 Revert "fix: version-check.yml and build-with-firmwware.yml"
This reverts commit c3d2a1f243.
2023-09-11 16:23:15 +03:00
MX
78446bab07 Merge branch 'dev' into feat/subghz-save-hopping-state 2023-09-11 16:22:35 +03:00
MX
84e94e728c update comment 2023-09-11 15:32:55 +03:00
MX
b2042fd044 loader merge fixes 2023-09-11 15:31:11 +03:00
MX
67a681f8b8 no apps :( 2023-09-11 15:29:43 +03:00
MX
eb2607f308 Merge branch 'ofw_dev' into dev 2023-09-11 15:26:26 +03:00
あく
9f6fc6fe79 Snake: fix deadlock caused by use of view_port_update while locking model (#3063) 2023-09-11 21:08:09 +09:00
gid9798
226e300a16 Readme: fix typo & small fixes 2023-09-11 13:56:50 +03:00
hedger
77d6c41914 github: submit SDKs to prod & dev (#3060)
* github: submit SDKs to prod & dev
* github: increased limit of queried SDKs

Co-authored-by: あく <alleteam@gmail.com>
2023-09-11 19:51:03 +09:00
gid9798
d49246048d Readme: instructions block systematized & cleanup 2023-09-11 13:08:09 +03:00
Sergey Gavrilov
4705812d24 SD-Card: proper HAL (#3058)
* Storage: remove unused error from SDInfo
* FatFS: remove sd_spi_io
* HAL: sd card api
* Update: use sd hal
* FatFS: use sd hal
* Storage: use sd hal
* API: sd hal
* Fix TODO workflow
* SD Hal: Fix source buffer overflow
* fix for fix!
* HAL: cleanup sd detection api
* HAL: FURI_HAL_SD_SPI_DEBUG flag
* HAL: FuriHalSdStatus -> FuriStatus
* API: downgrade
* Change define logic
* HAL: presence
2023-09-11 18:30:56 +09:00
あく
1c0276a0be Various Fixes and Improvements (#3059)
* FuriHal: lower MGG display contrast by 4 points
* FuriHal: unify external gpio resources initialization
* Infrared: parse raw in universal TV file, cleanup it with new ifrared script. Other minor changes.
* Gui: fix elements_multiline_text_aligned eating symbols
* Lib: human readable errors in flipper application package
* Special request from marketing team
2023-09-11 16:23:00 +10:00
MX
abc4110198 Fix random deadlocks in various plugins
thanks Willy-JL for finding details of that issue
2023-09-10 03:45:50 +03:00
DerSkythe
99ba1b6a24 feat: add workflow to automatic CodeQL Code scanning 2023-09-10 03:44:40 +04:00
DerSkythe
1fec80a533 feat: add RX config option "Reset to default" 2023-09-10 02:35:27 +04:00
DerSkythe
53fffffd1b Merge remote-tracking branch 'upstream/dev' into feat/subghz-save-hopping-state
# Conflicts:
#	applications/main/subghz/scenes/subghz_scene_receiver.c
2023-09-09 22:41:08 +04:00
MX
a90ebd7b53 Update changelog 2023-09-08 15:53:15 +03:00
MX
b1b35e87f9 update readme, docs, fix build versions 2023-09-07 14:46:06 +03:00
MX
1df2fc035f New bt beacon api
by Willy-JL
2023-09-07 13:45:37 +03:00
MX
45fd5ef9d8 Subghz fix path reset on save name exit 2023-09-05 19:28:47 +03:00
hedger
dfd5233760 github: don't cancel jobs if parallel ones failed (#3044) 2023-09-05 18:17:16 +04:00
MX
cfa95c757e Merge branch 'ofw_dev' into dev 2023-09-05 16:32:16 +03:00
Astra
600b2ce627 [FL-3566] iButton: Return to the file selection if file is corrupted (#3040)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-05 22:24:50 +09:00
MX
fdb9748acc Merge branch 'ofw_dev' into dev 2023-09-05 16:22:49 +03:00
MX
d40f664342 API for BLE Beacon app
thanks to Willy-JL
2023-09-05 16:22:14 +03:00
Astra
8cbb757533 [FL-3583]Account for the "-" in line carry-over (#3038)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-05 22:13:50 +09:00
hedger
452e27b05e github: workflow improvements (#3032)
* github: compact build: status reporting step
* github: build: matrix strategy
* debugging
* github: added version_token to /uploadfiles request
* github: reworked main build flow
* github: suppressed non-zero cp status
* github: build: fixed comment lookup; experimental changes to apps build order
* github: removed summary step for compact builds; united map analyzer steps
* fbt: added get_apiversion target; moved ext apps processing logic to AppBuildset
* ufbt: added missing global
* fbt: Moved incompatible app list to firmware config output
* fbt: cleaner extapps processing
* github: build: added automation for SDK publishing
2023-09-05 20:49:39 +09:00
MX
b3cce2351a Some faac fixes 2023-09-05 14:40:49 +03:00
MX
1859b06b6a oops 2023-09-05 05:59:21 +03:00
MX
1653abe0ef Remove unused table 2023-09-05 05:51:21 +03:00
MMX
c7b2e85e13 Merge pull request #585 from Eng1n33r/dev
FAAC SLH better UI/UX.
2023-09-05 05:45:24 +03:00
MX
b24fba6ad7 just in case 2023-09-05 05:44:09 +03:00
MX
ffc6f726f0 fix small bug 2023-09-05 05:43:06 +03:00
MX
0eb06ba2b7 Actually working progmode, new add manually options + bonus fixes 2023-09-05 05:31:03 +03:00
Eng1n33r
2a789ae1c1 faac beta-3 2023-09-04 23:55:08 +03:00
Eng1n33r
062faa4a84 Merge branch 'DarkFlippers:dev' into dev 2023-09-04 23:19:53 +03:00
MX
1cafa9a46b Fix naming var 2023-09-04 23:15:23 +03:00
MX
654b3245c2 fix module p2 2023-09-04 23:14:07 +03:00
MX
99eb10d6e7 fix module p1 2023-09-04 23:11:40 +03:00
Eng1n33r
e878ed7547 Merge branch 'DarkFlippers:dev' into dev 2023-09-04 22:52:42 +03:00
MMX
ac4177c248 Merge pull request #592 from DarkFlippers/subghz_remote_submodule
SubGHz Remote: submodule
2023-09-04 22:42:21 +03:00
MX
e6f9563bbc Merge branch 'dev' into eng_dev 2023-09-04 22:40:50 +03:00
MX
2b383ebcee Keyboard ok to toggle select all in cursor mode
by Willy-JL
2023-09-04 21:19:35 +03:00
Eng1n33r
cfc5caca63 Merge branch 'DarkFlippers:dev' into dev 2023-09-04 20:50:46 +03:00
MX
9c6e20356f Merge branch 'ofw-dev' into dev 2023-09-04 16:47:08 +03:00
Sergey Gavrilov
0b806c2360 Storage: force mount (#3033)
* Storage: count opened files
* Storage: sd mount
* Storage: prompt to mount SD card if not mounted
* F18: update API
* F18: update API version
* Fix logger naming scheme
* Storage: storage_files_count -> storage_open_files_count

Co-authored-by: あく <alleteam@gmail.com>
2023-09-04 14:10:07 +09:00
Linn Dahlgren
ce89240f6f [DOC] Remove defunct link in ReadMe.md (#3036) 2023-09-04 12:37:12 +09:00
Eng1n33r
686fab7296 Merge remote-tracking branch 'origin/dev' into dev
faac prg mode beta-2
2023-09-02 22:04:36 +03:00
MX
7d2deb5939 add some non working code 2023-09-02 21:45:51 +03:00
Eng1n33r
06a528f497 FAAC SLH prog mode [beta] 2023-09-02 19:00:45 +03:00
MX
265d2592e7 proper check 2023-09-02 16:26:19 +03:00
MX
72e6f5f59e fix 2023-09-02 16:02:32 +03:00
MX
3898e6e71d Fixes and de-kostilying 2023-09-02 16:00:24 +03:00
MX
17269a5386 Merge remote-tracking branch 'Eng1n33r/dev' into eng_dev 2023-09-02 15:59:51 +03:00
Eng1n33r
a2bcf67f7f Merge remote-tracking branch 'DarkFlippers/dev' into dev 2023-09-02 15:22:21 +03:00
MX
bd2cfb55df Merge branch 'dev' into eng_dev 2023-09-02 14:28:49 +03:00
MMX
0c7689831e Merge pull request #594 from amec0e/dev
Updated Infrared Assets
2023-09-02 14:27:08 +03:00
MX
ec9df8711a fmt + fix subrem 2023-09-02 14:26:32 +03:00
MX
15c480b68a Merge branch 'ofw-dev' into dev 2023-09-02 13:33:32 +03:00
amec0e
a8456208da Update tv.ir
New additions
2023-09-01 22:36:42 +01:00
amec0e
7ecd5684cb Update projectors.ir
New additions
2023-09-01 22:36:21 +01:00
amec0e
832d861b9d Update fans.ir
New additions
2023-09-01 22:35:58 +01:00
amec0e
7a0c896626 Update audio.ir
New additions
2023-09-01 22:35:31 +01:00
Max
52b5966262 Add File Naming setting for more detailed naming (#3002)
* added filename mode setting
* added furi_flag checks for when filename_mode is set
* changed naming for ibutton, lfrfid and subghz
* requested changes from PR
* Lib: gather all naming bits and pieces under name generator module. Properly bump api version. FuriHal: fix RTC flag enum.
* PR requested changes
* bug fix for arg type
* added functionality for other application scenes
* Lib: cleanup name generator API, simplify usage. Sync API symbols.
* Lib: proper size type in name_generator. Cleanup.
* FuriHal: cleanup rtc api usage across firmware

Co-authored-by: あく <alleteam@gmail.com>
2023-09-01 14:57:49 +09:00
Astra
e5fdb2e069 [FL-3314] Disconnect from BLE on protobuf error (#2955)
* Disconnect from BLE on protobuf error
* Set profile instead of disconnecting and add logging

Co-authored-by: あく <alleteam@gmail.com>
2023-09-01 13:54:12 +09:00
hedger
5eeb672dd4 github: workflow trigger optimizations (#3030) 2023-09-01 12:09:48 +09:00
suaveolent
d8d2b360cb Add support for Mifare Classic 4k SAK 0x38 ATQA 0x02, 0x04, 0x08 (#3009)
Co-authored-by: suaveolent <suaveolent@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-09-01 11:22:29 +09:00
あく
7531e18020 Move roadmap link to readme (#3014)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-09-01 06:00:40 +04:00
あく
f218c41d83 Undo some TODO (#3024)
* TODO FL-3497: impossible to fix with current memory allocator

* TODO FL-3497: removed, requires radically different settings approach

* TODO FL-3514: removed, yes we should

* TODO FL-3498: implemented, guarding view port access with mutex.

* TODO FL-3515: removed, questionable but ok

* TODO FL-3510: removed, comment added

* TODO FL-3500: refactored, store pin numbers in GpioPinRecord, fix gpio app crash caused by incorrect gpio_pins traversal.

* Format Sources

* TODO FL-3505: removed, mutex alone is not going to fix issue with WPAN architecture

* TODO FL-3506: removed, change ownership by copy is good

* TODO FL-3519: documentation and link to source added

* Lib: remove unneded total sum from comment in bq27220

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-09-01 05:54:52 +04:00
Astra
7aa55ebc6c [FL-3543] Check the filetype of the update manifest (#3025)
Co-authored-by: あく <alleteam@gmail.com>
2023-09-01 10:47:02 +09:00
Sergey Gavrilov
809418b9da [FL-3563] StorageListRequest: size filter (#3018)
* Protobuf: size filter
* Update protobuf
* Scripts: types for fwflash.py
* RPC: handle fliter for StorageListRequest
* RPC: StorageListRequest tests for filtering
* Fix unit tests configuration
* Assets: sync protobuf with upstream

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-09-01 10:23:37 +09:00
Eng1n33r
b91f8d009e Fix KL unknown mf cnt bug 2023-08-31 22:39:22 +03:00
Skorpionm
aa1c1fd905 [FL-3582] SubGhz: heap overflow text error (#3021) 2023-08-29 20:55:36 +09:00
gid9798
cb5c5c08f6 SubGHz Remote: submodule 2023-08-29 13:37:15 +03:00
Astra
c6be6f487a [FL-3495] Remove the TODO for GPIO settings save/load (#3015)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-29 13:39:34 +09:00
gornekich
5eb045e25f nfc: add rfal wrong state error handling (#3017) 2023-08-29 13:31:40 +09:00
Eng1n33r
04b2771e3b Merge branch 'DarkFlippers:dev' into dev 2023-08-28 13:23:07 +03:00
MX
5bd868665e fix timer icons in ir remote
icons by @Svaarich
2023-08-28 05:50:32 +03:00
MX
46e74b3823 remake fix in ofw way
view_dispatcher will skip on _run and free will be called, then app will exit same as normal
2023-08-28 05:48:40 +03:00
Eng1n33r
a772408ee6 Good Monday
[SubGhz / RadioSettings] More flexible rolling counter rate;
Remove unused stuff & small UI revisal
2023-08-28 00:02:48 +03:00
DerSkythe
7b4d66f0f4 change: add another icon for a BinRAW receiver mode 2023-08-27 04:04:22 +04:00
MX
416a02fc5b Merge branch 'ofw-dev' into dev 2023-08-27 02:43:56 +03:00
あく
cf74dd2599 Rfid: fix crash on broken key launch from archive (#3012) 2023-08-25 21:00:00 +04:00
Astra
66d26c16cd [FL-3580] AC OFF button (#3010)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-26 01:09:40 +09:00
hedger
c3aa151712 github: Check for todos (#3011) 2023-08-25 23:38:41 +09:00
DerSkythe
c3d2a1f243 fix: version-check.yml and build-with-firmwware.yml 2023-08-25 08:16:22 +04:00
DerSkythe
3491844d41 change: add defines to disable load saved preset value and binary RAW
add: icon for BinRAW mode in Read screen
2023-08-25 07:48:04 +04:00
DerSkythe
9ef1a4dfaa change: add measure loading to SubGHz 2023-08-25 06:32:31 +04:00
Eng1n33r
ce1336c0ed fix anomaly 2023-08-24 22:14:00 +03:00
Eng1n33r
32fb94f5db Cnt value edit [in progress] 2023-08-24 19:23:05 +03:00
DerSkythe
f53246d40b Merge remote-tracking branch 'origin/feat/subghz-save-hopping-state' into feat/subghz-save-hopping-state 2023-08-24 17:20:30 +04:00
DerSkythe
d1f1635dd2 Merge branch 'DarkFlippers:dev' into feat/subghz-save-hopping-state 2023-08-24 17:17:35 +04:00
Eng1n33r
f93aab9b22 Merge branch 'DarkFlippers:dev' into dev 2023-08-24 16:03:07 +03:00
MX
742c4ae834 added patreon link 2023-08-24 04:51:44 +03:00
MX
6609a64307 Remake custom universal remotes to use new design
New icons by @Svaarich
2023-08-24 03:31:42 +03:00
Eng1n33r
09aabff55b EditCnt rework [in progress] 2023-08-24 00:00:28 +03:00
MX
0660329ae5 Merge branch 'ofw-dev' into dev 2023-08-23 23:47:03 +03:00
MX
b5426197f5 fix 0xFFFF counter value being skipped 2023-08-23 23:40:13 +03:00
Skorpionm
940ec36a0b SubGhz: fix todo (#2984)
* [FL-3501] SubGhz: fix Handle multiple external cc1101 modules
* [FL-3502] SubGhz: fix Protocol not found error message
* [FL-3503] SubGhz: fix Handle rx buffer overflow
* {FL-3520] SubGhz: Handle RX buffer overflow with external cc1101
* [FL-3548] SubGhz: Security+ 2.0 counter start value
* [FL-3552] Sub-GHz: Check saved file
* [FL-3555] [FL-3554] Sub-GHz: RX buffer overflow handling and check that buffer has been properly written
* [FL-3557] Sub-GHz: No optimization required
* [FL-3558] Sub-GHz: Keeloq 0 discriminator
* [FL-3559] Sub-GHz: Keeloq unknown learning
* [FL-3560] Sub-GHz: callback for updating keeloq data on display
* SubGhz: fix RXFIFO_OVERFLOW

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2023-08-24 04:51:32 +09:00
Astra
60182aa2cd [FL-3564] New IR universal remote graphics (#3006)
* New IR universal remote layout
* Remove redundant checks

Co-authored-by: あく <alleteam@gmail.com>
2023-08-24 03:24:47 +09:00
hedger
56b5b35236 Intelligent probing with warnings for fwflash.py (#3005)
* scripts: fwflash: intelligent probing with warnings
* scripts: fwflash: better texting

Co-authored-by: あく <alleteam@gmail.com>
2023-08-24 03:04:12 +09:00
Nikolay Minaylov
b368660d48 More apps moved to apps repo (#2978)
* Clock, music player, snake game removed
* Music player, picopass assets removed

Co-authored-by: あく <alleteam@gmail.com>
2023-08-24 02:50:17 +09:00
Eng1n33r
091d32ed7a Merge branch 'DarkFlippers:dev' into dev 2023-08-23 20:35:41 +03:00
MX
52654d018e picopass assets moved into app 2023-08-23 20:09:29 +03:00
MX
8df9947d42 Merge branch 'ofw-dev' into dev 2023-08-23 19:49:00 +03:00
あく
d808884b97 FuriHal: explicitly pull display pins at early init stage, move PUPD config to early stage (#3004)
Co-authored-by: hedger <hedger@users.noreply.github.com>
2023-08-23 20:17:39 +04:00
Eng1n33r
6042254861 Merge branch 'DarkFlippers:dev' into dev 2023-08-23 17:59:56 +03:00
Synthethics
beeeb9bbdc Update tv.ir (#2942)
* Update tv.ir: Added VOX Electronics LED 43ADS316B TV Remote.
* Assets: reorder and tag new tv remote
* Assets: cleanup infrared universal tv

Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 22:50:19 +09:00
Konstantin Volkov
4ade0fc76d [FL-3421] Unit bench: multiple attempts to find flipper (#2960)
* Unit bench: added retry count for finding flipper for reboot/reboot2dfu and power off scripts. Changed returns to sys.exit() since scripts are being used standalone
* fixed typo in await flipper and changed debug level to info for searching flipper in power.py
* reversed return operator instead of sys.exit, changed app.py exit behavior
* test run to see if exit(1) fails the run
* reversed test changes, fixed flipper name and increased await flipper timeout
* await after flash increase
* increased serial timeout
* increased serial timeout, apparently it is for entire run

Co-authored-by: doomwastaken <k.volkov@flipperdevices.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 21:51:02 +09:00
Nikolay Minaylov
15f92f765d [FL-3479] Desktop: more favorites, configurable dummy mode (#2972)
* Desktop: more favorite app shortcuts
* Making PVS happy
* Desktop settings submenu fix

Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 21:26:47 +09:00
MX
821f03b230 Merge branch 'ofw-dev' into dev 2023-08-23 15:08:54 +03:00
MX
ad723217e6 fix subghz loading 2023-08-23 15:08:29 +03:00
Eng1n33r
df5b2cbddd fix misspelling 2023-08-22 23:58:49 +03:00
Dzhos Oleksii
dc7517e5fd Fix display last symbol in multiline text (#2967)
* Revert submodules
* Compare without round
* Gui: slightly more integer logic in elements_get_max_chars_to_fit

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 04:15:38 +09:00
MX
20593d56c0 Merge branch 'ofw-dev' into dev 2023-08-22 21:53:50 +03:00
Astra
27b2808ade [FL-3481] Properly reset the NFC device data (#2980)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 03:40:05 +09:00
hedger
ace0901125 [FL-3486,FL-3392] fbt: various improvements and bug fixes (#2982)
* fbt: extapps: compact debug format for .faps
* fbt: sdk: fixed symbol cache regen logic for removed-only symbols
* lib: elf_file: early .fap file handle release
* fbt: extapps: added FAP_VERSION define for application environments
* github: added appsymbols artifact
* api: updates for f18
* github: fixed early fap_dist
* fbt: added flash_dap
* ufbt: added flash_dap
* fbt: reworked flash target; scripts: program.py->fwflash.py and changes
* vscode: updated configuration
* scripts: fwflash.py: ugly fixes for ufbt
* scripts: fwflash.py: cleanup
* fbt: flash: always use .elf file
* scripts: fwflash: fixed elf file path

Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 03:33:10 +09:00
Nikolay Minaylov
991e58e405 Littlefs updated to v2.7.0 (#2986)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 03:08:58 +09:00
Astra
e353433cd8 [FL-3488] Assign tickets to all TODO items (#2988)
Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 02:56:27 +09:00
hedger
200c44bdca loader: restored support for debug apps (#2993)
* fbt: restored loader support for debug apps (no GUI tho)
* desktop: fixed code for handling autorun apps
* loader: fixed autorun app messing up last update stage
* Loader: handle status without message

Co-authored-by: あく <alleteam@gmail.com>
2023-08-23 02:38:45 +09:00
Eng1n33r
67a0136e81 microfix 2023-08-22 20:33:36 +03:00
Eng1n33r
2b5ad4f5af Correct counter work. FAAC SLH bugfix. 2023-08-22 20:22:49 +03:00
hedger
35cdefa1ca Removed explicit dependency on scons for external scripting (#2999) 2023-08-23 02:11:53 +09:00
Eng1n33r
f14ed73dfd Merge branch 'DarkFlippers:dev' into dev 2023-08-21 23:22:46 +03:00
MX
9bf1433334 fix non capital letters 2023-08-21 22:09:40 +03:00
MX
35c413b8a6 remove duplicate discord invite 2023-08-21 22:07:32 +03:00
MMX
34712b0c3b Merge pull request #586 from DarkFlippers/readme_and_changelog
Readme & Changelog fixes
2023-08-21 22:04:10 +03:00
gid9798
486542fe14 Readme - community links
Changelog - version table
2023-08-21 22:01:11 +03:00
Eng1n33r
69debc36a0 FAAC SLH 0x0 seed new "smart logic"
Comeback
2023-08-21 04:18:47 +03:00
Eng1n33r
2fabb0b589 Merge branch 'DarkFlippers:dev' into dev 2023-08-20 16:33:27 +03:00
MMX
c05a766651 Merge pull request #583 from OperKH/fix-sub-ghz-remote
Fix Sub-GHz Remote folder name
2023-08-20 16:03:43 +03:00
Aleksandr Zhytnyk
ac9234563a Fix Sub-GHz Remote folder name 2023-08-20 12:24:49 +03:00
Eng1n33r
b07b6dc857 Merge branch 'DarkFlippers:dev' into dev 2023-08-20 11:54:42 +03:00
MX
c70edf6dc9 update changelog and settings naming 2023-08-20 05:34:54 +03:00
MX
8a3d8bdee7 out of memory message 2023-08-20 04:21:09 +03:00
Eng1n33r
535bf35e23 Merge branch 'DarkFlippers:dev' into dev 2023-08-20 01:44:08 +03:00
MMX
362aa68038 Merge pull request #581 from amec0e/dev
Updated Infrared Assets Pack
2023-08-20 01:33:31 +03:00
MMX
f17b941f7d Merge pull request #578 from DarkFlippers/desktop_favorite_port
Desktop favorite port
2023-08-20 01:32:36 +03:00
MX
830eb0e5f6 Merge branch 'dev' into desktop_favorite_port 2023-08-19 23:34:08 +03:00
amec0e
38607d8dbe Update tv.ir
No new additions
2023-08-19 20:02:23 +01:00
amec0e
fe095df06a Update projectors.ir
New additions
2023-08-19 20:01:49 +01:00
amec0e
d728c140d8 Update fans.ir
New additions
2023-08-19 20:01:22 +01:00
amec0e
4f6fd2e9bc Update audio.ir
No new additions
2023-08-19 20:00:47 +01:00
DerSkythe
e7c52828ea Merge pull request #10 from derskythe/dev-master
Sync
2023-08-19 08:30:37 +04:00
DerSkythe
fea15bedd4 Merge branch 'feat/subghz-save-hopping-state' into dev-master
Signed-off-by: DerSkythe <31771569+derskythe@users.noreply.github.com>
2023-08-19 08:30:28 +04:00
Eng1n33r
d7a579e713 Merge branch 'DarkFlippers:dev' into dev 2023-08-19 00:08:09 +03:00
MX
26e5ae7476 RXFIFO_OVERFLOW still breaks esubghz_chat 2023-08-18 23:50:38 +03:00
Eng1n33r
2458cb2b96 Allow 0x0 seed for testing 2023-08-18 22:35:13 +03:00
Eng1n33r
3da9cb1b81 Merge remote-tracking branch 'origin/dev' into dev 2023-08-18 22:01:40 +03:00
MX
5924c3dd2c disable 0 seed in add manually 2023-08-18 21:04:59 +03:00
Eng1n33r
5cfc8fc536 Merge remote-tracking branch 'origin/dev' into dev 2023-08-18 21:01:12 +03:00
SkorP
03d3482357 SubGhz: fix RXFIFO_OVERFLOW 2023-08-18 17:14:50 +03:00
Eng1n33r
0af8bd1e8b Test FAAC 0x0 seed 2023-08-18 16:41:35 +03:00
gid9798
6330012b1d Desktop: fix lock timer after rebooting 2023-08-18 11:27:12 +03:00
gid9798
b1b00d4fa7 Desktop favorites: Return none and add lock in dummy 2023-08-18 11:23:35 +03:00
MX
7a80aaa5c8 readme fixes part 1
thanks @gid9798
2023-08-17 19:04:09 +03:00
MX
3584e0da46 Fix FAAC counter fix seed being not removed from RAM 2023-08-17 17:33:21 +03:00
SkorP
e1c83692c3 [FL-3552] Sub-GHz: Check saved file 2023-08-17 16:02:39 +03:00
MX
3507c89dbb fix faac add manually cnt 2023-08-17 16:02:32 +03:00
SkorP
6e2bcd9d00 {FL-3520] SubGhz: Handle RX buffer overflow with external cc1101 2023-08-17 14:43:53 +03:00
gid9798
f73f369952 Desktop favorites pt2 2023-08-17 13:40:55 +03:00
gid9798
3990c93013 Desktop favorites pt1 2023-08-17 13:04:40 +03:00
DerSkythe
5bbee02704 finalization of saving last settings
- Check loading of critical values in subghz_last_settings_log
- Change comparison of float type to safe
- Refactor
2023-08-08 17:31:46 +04:00
DerSkythe
8c44dfb6af Save preset, RSSIm ignore values in last settings
- Save preset
- Save RSSI
- Save Ignore Starline, Cars, Magellan
- Fix types of COUNT_OF result
- Move subghz_set_default_preset to SubGhzTxRx
- In subghz_txrx_radio_device_is_tx_allowed check for SubGhzTxRxStateSleep is not working
2023-08-08 09:51:48 +04:00
DerSkythe
540862fbf2 Merge pull request #9 from derskythe/dev-master
Sync branch
2023-08-08 00:34:31 +04:00
DerSkythe
500ca0758a Save hopping in last settings
- Save hopping state
- Add easy logging to SubGhzLastSettings
- Add to CLI alias 'l' for log command
- Fix misspelled names
2023-08-04 18:52:16 +04:00
1752 changed files with 72123 additions and 91939 deletions

View File

@@ -168,3 +168,17 @@ Max butthurt: 13
Min level: 1
Max level: 3
Weight: 4
Name: L2_Coding_in_the_shell_128x64
Min butthurt: 0
Max butthurt: 12
Min level: 2
Max level: 3
Weight: 4
Name: L2_Secret_door_128x64
Min butthurt: 0
Max butthurt: 12
Min level: 2
Max level: 3
Weight: 4

View File

@@ -1,5 +1,5 @@
diff --git a/applications/services/notification/notification_app.c b/applications/services/notification/notification_app.c
index 2f947fe..03c4c76 100644
index 5769ced..c5d3088 100644
--- a/applications/services/notification/notification_app.c
+++ b/applications/services/notification/notification_app.c
@@ -9,6 +9,7 @@
@@ -10,7 +10,7 @@ index 2f947fe..03c4c76 100644
#define TAG "NotificationSrv"
@@ -579,6 +580,7 @@ int32_t notification_srv(void* p) {
@@ -589,6 +590,7 @@ int32_t notification_srv(void* p) {
break;
case SaveSettingsMessage:
notification_save_settings(app);
@@ -19,7 +19,7 @@ index 2f947fe..03c4c76 100644
}
diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c
index 565d4f1..bae9299 100644
index 1955012..19d953d 100644
--- a/applications/settings/notification_settings/notification_settings_app.c
+++ b/applications/settings/notification_settings/notification_settings_app.c
@@ -3,6 +3,7 @@
@@ -30,10 +30,20 @@ index 565d4f1..bae9299 100644
#define MAX_NOTIFICATION_SETTINGS 4
@@ -162,6 +163,14 @@ static void vibro_changed(VariableItem* item) {
@@ -20,6 +21,8 @@ static const NotificationSequence sequence_note_c = {
NULL,
};
+static VariableItem* temp_item;
+
#define CONTRAST_COUNT 11
const char* const contrast_text[CONTRAST_COUNT] = {
"-5",
@@ -156,6 +159,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);
@@ -41,31 +51,102 @@ index 565d4f1..bae9299 100644
+ 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;
@@ -187,7 +196,13 @@ static NotificationAppSettings* alloc_settings() {
@@ -180,8 +236,40 @@ static NotificationAppSettings* alloc_settings() {
variable_item_set_current_value_index(item, value_index);
variable_item_set_current_value_text(item, contrast_text[value_index]);
item = variable_item_list_add(
- app->variable_item_list, "LCD Backlight", BACKLIGHT_COUNT, backlight_changed, app);
+ // 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..269b544
index 0000000..98f0d3a
--- /dev/null
+++ b/applications/settings/notification_settings/rgb_backlight.c
@@ -0,0 +1,171 @@
@@ -0,0 +1,217 @@
+/*
+ RGB backlight FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
@@ -88,9 +169,9 @@ index 0000000..269b544
+#include <furi_hal.h>
+#include <storage/storage.h>
+
+#define RGB_BACKLIGHT_SETTINGS_VERSION 5
+#define RGB_BACKLIGHT_SETTINGS_VERSION 6
+#define RGB_BACKLIGHT_SETTINGS_FILE_NAME ".rgb_backlight.settings"
+#define RGB_BACKLIGHT_SETTINGS_PATH EXT_PATH(RGB_BACKLIGHT_SETTINGS_FILE_NAME)
+#define RGB_BACKLIGHT_SETTINGS_PATH INT_PATH(RGB_BACKLIGHT_SETTINGS_FILE_NAME)
+
+#define COLOR_COUNT (sizeof(colors) / sizeof(RGBBacklightColor))
+
@@ -99,11 +180,14 @@ index 0000000..269b544
+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, 150, 0},
+ {"Yellow", 255, 144, 0},
+ {"Spring", 167, 255, 0},
+ {"Lime", 0, 255, 0},
+ {"Aqua", 0, 255, 127},
@@ -114,7 +198,8 @@ index 0000000..269b544
+ {"Magenta", 210, 0, 210},
+ {"Pink", 255, 0, 127},
+ {"Red", 255, 0, 0},
+ {"White", 150, 150, 110},
+ {"White", 254, 210, 200},
+ {"Custom", 0, 0, 0},
+};
+
+uint8_t rgb_backlight_get_color_count(void) {
@@ -126,18 +211,28 @@ index 0000000..269b544
+}
+
+void rgb_backlight_load_settings(void) {
+ //Не загружать данные из внутренней памяти при загрузке в режиме DFU
+ FuriHalRtcBootMode bm = furi_hal_rtc_get_boot_mode();
+ if(bm == FuriHalRtcBootModeDfu) {
+ // 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_I(TAG, "loading settings from \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH);
+ 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);
+
@@ -150,7 +245,7 @@ index 0000000..269b544
+ }
+
+ if(fs_result) {
+ FURI_LOG_I(TAG, "load success");
+ FURI_LOG_D(TAG, "load success");
+ if(settings.version != RGB_BACKLIGHT_SETTINGS_VERSION) {
+ FURI_LOG_E(
+ TAG,
@@ -175,7 +270,7 @@ index 0000000..269b544
+ File* file = storage_file_alloc(furi_record_open(RECORD_STORAGE));
+ const size_t settings_size = sizeof(RGBBacklightSettings);
+
+ FURI_LOG_I(TAG, "saving settings to \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH);
+ FURI_LOG_D(TAG, "saving settings to \"%s\"", RGB_BACKLIGHT_SETTINGS_PATH);
+
+ memcpy(&settings, &rgb_settings, settings_size);
+
@@ -191,7 +286,7 @@ index 0000000..269b544
+ }
+
+ if(fs_result) {
+ FURI_LOG_I(TAG, "save success");
+ FURI_LOG_D(TAG, "save success");
+ } else {
+ FURI_LOG_E(TAG, "save failed, %s", storage_file_get_error_desc(file));
+ }
@@ -213,36 +308,68 @@ index 0000000..269b544
+ rgb_settings.display_color_index = color_index;
+}
+
+void rgb_backlight_update(uint8_t brightness) {
+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();
+ }
+
+ static uint8_t last_color_index = 255;
+ static uint8_t last_brightness = 123;
+ 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;
+ if(last_brightness == brightness && last_color_index == rgb_settings.display_color_index) {
+ return;
+ }
+
+ last_brightness = brightness;
+ last_color_index = rgb_settings.display_color_index;
+ last_brightness = brightness;
+ last_color_index = rgb_settings.display_color_index;
+ }
+
+ for(uint8_t i = 0; i < SK6805_get_led_count(); i++) {
+ 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);
+ 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);
+ 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..b63d223
index 0000000..68dacda
--- /dev/null
+++ b/applications/settings/notification_settings/rgb_backlight.h
@@ -0,0 +1,79 @@
@@ -0,0 +1,91 @@
+/*
+ RGB backlight FlipperZero driver
+ Copyright (C) 2022-2023 Victor Nikitchuk (https://github.com/quen0n)
@@ -274,6 +401,9 @@ index 0000000..b63d223
+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;
+
@@ -298,8 +428,9 @@ index 0000000..b63d223
+ * @brief Применить текущие настройки RGB-подсветки
+ *
+ * @param brightness Яркость свечения (0-255)
+ * @param bypass Применить настройки принудительно
+ */
+void rgb_backlight_update(uint8_t brightness);
+void rgb_backlight_update(uint8_t brightness, bool bypass);
+
+/**
+ * @brief Установить цвет RGB-подсветки
@@ -309,6 +440,14 @@ index 0000000..b63d223
+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 Число доступных вариантов цвета
@@ -323,10 +462,10 @@ index 0000000..b63d223
+ */
+const char* rgb_backlight_get_color_text(uint8_t index);
\ No newline at end of file
diff --git a/firmware/targets/f7/furi_hal/furi_hal_light.c b/firmware/targets/f7/furi_hal/furi_hal_light.c
index 83e1603..cad5b86 100644
--- a/firmware/targets/f7/furi_hal/furi_hal_light.c
+++ b/firmware/targets/f7/furi_hal/furi_hal_light.c
diff --git a/targets/f7/furi_hal/furi_hal_light.c b/targets/f7/furi_hal/furi_hal_light.c
index 83e1603..45798ca 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>
@@ -353,7 +492,7 @@ index 83e1603..cad5b86 100644
- 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);
+ rgb_backlight_update(value, false);
+ } else {
+ furi_hal_i2c_acquire(&furi_hal_i2c_handle_power);
+ if(light & LightRed) {

View File

@@ -22,7 +22,8 @@ steps:
- export DIST_SUFFIX=${DRONE_TAG}c
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
- export FORCE_NO_DIRTY=yes
- rm -rf assets/resources/apps/
- export FBT_GIT_SUBMODULE_SHALLOW=1
- rm -rf applications/main/clock_app/resources/apps/
- rm -rf build/
- rm -rf dist/
- rm -rf .sconsign.dblite
@@ -42,11 +43,16 @@ steps:
- export DIST_SUFFIX=${DRONE_TAG}
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
- export FORCE_NO_DIRTY=yes
- export FBT_GIT_SUBMODULE_SHALLOW=1
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
- tar zxvf all-the-apps-base.tgz
- cp -R base_pack_build/artifacts-base/* assets/resources/apps/
- tar zxf all-the-apps-base.tgz
- mkdir -p applications/main/clock_app/resources/apps
- mkdir -p applications/main/clock_app/resources/apps_data
- cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
- cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
- rm -rf base_pack_build
- rm -rf all-the-apps-base.tgz
- rm -f build/f7-firmware-C/toolbox/version.*
- ./fbt COMPACT=1 DEBUG=0 updater_package
- mkdir artifacts-default
- mv dist/f7-C/* artifacts-default/
@@ -61,12 +67,14 @@ steps:
pull: never
commands:
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
- tar zxvf all-the-apps-extra.tgz
- cp -R extra_pack_build/artifacts-extra/* assets/resources/apps/
- tar zxf all-the-apps-extra.tgz
- mkdir -p applications/main/clock_app/resources/apps
- cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
- rm -rf extra_pack_build
- export DIST_SUFFIX=${DRONE_TAG}e
- export WORKFLOW_BRANCH_OR_TAG=release-cfw
- 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-extra-apps
@@ -85,6 +93,7 @@ steps:
- 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
@@ -103,15 +112,19 @@ steps:
- git checkout -- .
- rm -f assets/dolphin/external/manifest.txt
- cp .ci_files/anims_ofw.txt assets/dolphin/external/manifest.txt
- rm -rf assets/resources/apps/
- rm -rf applications/main/clock_app/resources/apps/
- export DIST_SUFFIX=${DRONE_TAG}n
- export WORKFLOW_BRANCH_OR_TAG=no-custom-anims
- 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
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
- tar zxvf all-the-apps-base.tgz
- cp -R base_pack_build/artifacts-base/* assets/resources/apps/
- tar zxf all-the-apps-base.tgz
- mkdir -p applications/main/clock_app/resources/apps
- mkdir -p applications/main/clock_app/resources/apps_data
- cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
- cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
- rm -rf base_pack_build
- rm -rf all-the-apps-base.tgz
- rm -f build/f7-firmware-C/toolbox/version.*
@@ -328,9 +341,10 @@ steps:
DISCORD_WEBHOOK:
from_secret: dis_release_webhook
commands:
- wget "https://raw.githubusercontent.com/fieu/discord.sh/e1dc1a7595efad2cad8f072f0b3531c470f5b7c8/discord.sh"
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
- chmod +x ./discord.sh
- ./discord.sh --text 'New Unleashed firmware released!\n\nVersion - '${DRONE_TAG}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[[Github - Changelog]](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')\n\n[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)\n\n[-Download latest extra apps pack-](https://github.com/xMasterX/all-the-plugins/releases/latest)\n\n[-Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/'${DRONE_TAG}'/flipper-z-f7-update-'${DRONE_TAG}'.tgz&channel=release-cfw&version='${DRONE_TAG}')\n\n[-Version with only main apps - Install FW via Web Updater-](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)\n\n[-Version without custom animations - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-'${DRONE_TAG}'n.tgz&channel=release-cfw&version='${DRONE_TAG}'n)\n\n[-Version with RGB patch - only for hardware mod! - Install FW via Web Updater-](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)\n\n[-Version with RGB patch - only for hardware mod! - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz)\n\n[-Version with Extra apps - Install FW via Web Updater-](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)'
- echo 'New Unleashed firmware released!\n\nVersion - '${DRONE_TAG}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[[Github - Changelog]](https://github.com/DarkFlippers/unleashed-firmware/releases/tag/'${DRONE_TAG}')\n\n[-How to install firmware-](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)\n\n[-Download latest extra apps pack-](https://github.com/xMasterX/all-the-plugins/releases/latest)\n\n[-Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/'${DRONE_TAG}'/flipper-z-f7-update-'${DRONE_TAG}'.tgz&channel=release-cfw&version='${DRONE_TAG}')\n\n[-Version with only main apps - Install FW via Web Updater-](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)\n\n[-Version without custom animations - Install FW via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_no_anim/flipper-z-f7-update-'${DRONE_TAG}'n.tgz&channel=release-cfw&version='${DRONE_TAG}'n)\n\n[-Version with RGB patch - only for hardware mod! - Install FW via Web Updater-](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)\n\n[-Version with RGB patch - only for hardware mod! - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_TAG}'r.tgz)\n\n[-Version with Extra apps - Install FW via Web Updater-](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)' > messagedisc.txt
- ./discord.sh --text "$(jq -Rs . <messagedisc.txt | cut -c 2- | rev | cut -c 2- | rev)"
- name: "Send clean build to telegram"
image: appleboy/drone-telegram
@@ -388,7 +402,8 @@ steps:
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}c
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
- export FORCE_NO_DIRTY=yes
- rm -rf assets/resources/apps/
- export FBT_GIT_SUBMODULE_SHALLOW=1
- rm -rf applications/main/clock_app/resources/apps/
- rm -rf build/
- rm -rf dist/
- rm -rf .sconsign.dblite
@@ -409,11 +424,16 @@ steps:
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
- export FORCE_NO_DIRTY=yes
- export FBT_GIT_SUBMODULE_SHALLOW=1
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-base.tgz
- tar zxvf all-the-apps-base.tgz
- cp -R base_pack_build/artifacts-base/* assets/resources/apps/
- tar zxf all-the-apps-base.tgz
- mkdir -p applications/main/clock_app/resources/apps
- mkdir -p applications/main/clock_app/resources/apps_data
- cp -R base_pack_build/artifacts-base/* applications/main/clock_app/resources/apps/
- cp -R base_pack_build/apps_data/* applications/main/clock_app/resources/apps_data/
- rm -rf base_pack_build
- rm -rf all-the-apps-base.tgz
- rm -f build/f7-firmware-C/toolbox/version.*
- ./fbt COMPACT=1 DEBUG=0 updater_package
- mkdir artifacts-default
- mv dist/f7-C/* artifacts-default/
@@ -428,12 +448,14 @@ steps:
pull: never
commands:
- wget https://github.com/xMasterX/all-the-plugins/releases/latest/download/all-the-apps-extra.tgz
- tar zxvf all-the-apps-extra.tgz
- cp -R extra_pack_build/artifacts-extra/* assets/resources/apps/
- tar zxf all-the-apps-extra.tgz
- mkdir -p applications/main/clock_app/resources/apps
- cp -R extra_pack_build/artifacts-extra/* applications/main/clock_app/resources/apps/
- rm -rf extra_pack_build
- export DIST_SUFFIX=${DRONE_BUILD_NUMBER}e
- export WORKFLOW_BRANCH_OR_TAG=dev-cfw
- 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-extra-apps
@@ -452,6 +474,7 @@ steps:
- 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
@@ -643,9 +666,10 @@ steps:
DISCORD_WEBHOOK:
from_secret: dis_dev_webhook
commands:
- wget "https://raw.githubusercontent.com/fieu/discord.sh/e1dc1a7595efad2cad8f072f0b3531c470f5b7c8/discord.sh"
- wget "https://raw.githubusercontent.com/fieu/discord.sh/2253303efc0e7211ac2777d2535054cbb872f1e0/discord.sh"
- chmod +x ./discord.sh
- ./discord.sh --text 'Unleashed firmware dev build successful!\n\nBuild - '${DRONE_BUILD_NUMBER}'\n\nCommit - https://github.com/DarkFlippers/unleashed-firmware/commit/'${DRONE_COMMIT_SHA}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[-Version with Extra apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'e.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'e)\n\n[-Version with only main apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'c.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'c)\n\n[-Version with RGB patch - only for hardware mod! - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'r)\n\n[-Version with RGB patch - only for hardware mod! - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz)\n\n[-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}')'
- echo 'Unleashed firmware dev build successful!\n\nBuild - '${DRONE_BUILD_NUMBER}'\n\nCommit - https://github.com/DarkFlippers/unleashed-firmware/commit/'${DRONE_COMMIT_SHA}'\n\n[-> Sponsor our project](https://boosty.to/mmxdev)\n\n[-Version with Extra apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'e.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'e)\n\n[-Version with only main apps - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'c.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'c)\n\n[-Version with RGB patch - only for hardware mod! - Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}'r)\n\n[-Version with RGB patch - only for hardware mod! - Direct download-](https://unleashedflip.com/fw_extra_apps/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'r.tgz)\n\n[-Install via Web Updater-](https://lab.flipper.net/?url=https://unleashedflip.com/fw/dev/flipper-z-f7-update-'${DRONE_BUILD_NUMBER}'.tgz&channel=dev-cfw&version='${DRONE_BUILD_NUMBER}')' > messagedisc.txt
- ./discord.sh --text "$(jq -Rs . <messagedisc.txt | cut -c 2- | rev | cut -c 2- | rev)"
trigger:
branch:

1
.github/FUNDING.yml vendored
View File

@@ -1,3 +1,4 @@
patreon: mmxdev
custom:
[
"https://boosty.to/mmxdev",

114
.github/workflows/codeql.yml vendored Normal file
View File

@@ -0,0 +1,114 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
run-name: "CodeQL Analyze ${{ github.ref_name }} by @${{ github.ACTOR }}"
on:
push:
branches: ["dev"]
workflow_dispatch:
jobs:
analyze:
name: Analyze
# Runner size impacts CodeQL analysis time. To learn more, please see:
# - https://gh.io/recommended-hardware-resources-for-running-codeql
# - https://gh.io/supported-runners-and-hardware-resources
# - https://gh.io/using-larger-runners
# Consider using larger runners for possible analysis time improvements.
runs-on: [ "ubuntu-latest" ]
timeout-minutes: 60
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: ["cpp"]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby', 'swift' ]
# Use only 'java' to analyze code written in Java, Kotlin or both
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
env:
PATH_SARIF_DIR: ".github/results.sarif"
PATH_SARIF_FILE: ".github/results.sarif/${{ matrix.language }}.sarif"
FBT_NO_SYNC: 0
DIST_SUFFIX: "codeql"
WORKFLOW_BRANCH_OR_TAG: release-cfw
LANG_CATEGORY: "/language:${{matrix.language}}"
steps:
- name: Checkout Firmware Files
uses: actions/checkout@v3
with:
clean: "true"
submodules: "true"
fetch-depth: "0"
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
languages: ${{ matrix.language }}
setup-python-dependencies: true
- name: Resolve CodeQL Build Env
uses: github/codeql-action/resolve-environment@v2
with:
language: ${{ matrix.language }}
#debug: true
- name: Build Firmware
shell: bash
if: ${{ success() }}
run: |
./fbt COMPACT=1 DEBUG=0 FBT_NO_SYNC=${{ env.FBT_NO_SYNC }}
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2
if: ${{ success() }}
with:
threads: 4
category: "${{ env.LANG_CATEGORY }}"
output: "${{ env.PATH_SARIF_DIR }}"
upload-database: false
upload: "failure-only" # disable the upload here - we will upload in a different action
- name: Filter dirs for SARIF
uses: advanced-security/filter-sarif@v1
if: ${{ success() }}
with:
# filter out all test files unless they contain a sql-injection vulnerability
patterns: |
-build/**
-dist/**
-toolchain/**
-lib/**
input: "${{ env.PATH_SARIF_FILE }}"
output: "${{ env.PATH_SARIF_FILE }}"
- name: Upload CodeQL SARIF
uses: github/codeql-action/upload-sarif@v2
if: ${{ success() }}
with:
category: "${{ env.LANG_CATEGORY }}"
sarif_file: "${{ env.PATH_SARIF_FILE }}"
# optional: for debugging the uploaded sarif
# - name: Upload loc as a Build Artifact
# uses: actions/upload-artifact@v3
# with:
# name: sarif-results
# path: sarif-results
# retention-days: 1

4
.gitmodules vendored
View File

@@ -38,3 +38,7 @@
[submodule "lib/stm32wb_copro"]
path = lib/stm32wb_copro
url = https://github.com/flipperdevices/stm32wb_copro.git
[submodule "subghz_remote"]
path = applications/main/subghz_remote
url = https://github.com/DarkFlippers/SubGHz_Remote.git
branch = ufw_main_app

View File

@@ -1 +1 @@
--ignore-ccache -C gccarm --rules-config .pvsconfig -e lib/cmsis_core -e lib/fatfs -e lib/fnv1a-hash -e lib/FreeRTOS-Kernel -e lib/heatshrink -e lib/libusb_stm32 -e lib/littlefs -e lib/mbedtls -e lib/micro-ecc -e lib/microtar -e lib/mlib -e lib/qrcode -e lib/ST25RFAL002 -e lib/stm32wb_cmsis -e lib/stm32wb_copro -e lib/stm32wb_hal -e lib/u8g2 -e lib/nanopb -e */arm-none-eabi/*
--ignore-ccache -C gccarm --rules-config .pvsconfig -e lib/cmsis_core -e lib/fatfs -e lib/fnv1a-hash -e lib/FreeRTOS-Kernel -e lib/heatshrink -e lib/libusb_stm32 -e lib/littlefs -e lib/mbedtls -e lib/microtar -e lib/mlib -e lib/stm32wb_cmsis -e lib/stm32wb_copro -e lib/stm32wb_hal -e lib/u8g2 -e lib/nanopb -e */arm-none-eabi/*

View File

@@ -28,29 +28,17 @@
"command": "./fbt -c"
},
{
"label": "[Release] Flash (ST-Link)",
"label": "[Release] Flash (SWD)",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash"
},
{
"label": "[Debug] Flash (ST-Link)",
"label": "[Debug] Flash (SWD)",
"group": "build",
"type": "shell",
"command": "./fbt FORCE=1 flash"
},
{
"label": "[Release] Flash (blackmagic)",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash_blackmagic"
},
{
"label": "[Debug] Flash (blackmagic)",
"group": "build",
"type": "shell",
"command": "./fbt FORCE=1 flash_blackmagic"
},
{
"label": "[Release] Flash (JLink)",
"group": "build",

View File

@@ -1,31 +1,21 @@
## New changes
* NFC: Add manually MF Classic with custom UID (by @gid9798 | PR #571)
* Infrared: Fix crash when frequency is outside of supported range, allow sending broken files by setting frequency to nearest border
* Infrared: Updated AC universal asset (Legion LE-F30RH-IN added and other changes) (by @Leptopt1los | PR #577)
* SubGHz: Fix Somfy Telis wrong frequency in add manually
* SubGHz: Fix frequency out of bounds check causing crash/freeze
* RGB Patch: Fix colors
* Builds: New build (clean) `c` - comes only with main apps, use in case you don't want preinstalled apps pack
* Plugins: Moved into one repo - https://github.com/xMasterX/all-the-plugins
* OFW PR 2984: (only buffer changes was merged, other will be later) SubGhz: fix todo (by Skorpionm)
* OFW PR 2980: Properly reset the NFC device data (by Astrrra)
* OFW: SubGhz: add timeout to subghz_hal_async_tx_test_run
* OFW: Improve vscode clangd experience
* OFW: Add the Sad song animation
* OFW: ufbt: fixed FAP_SRC_DIR
* OFW: UI: Clock on Desktop -> Refactoring of our desktop clock
* OFW: uFBT: devboard_flash to update WiFi devboard
* OFW: FBT: devboard_flash to update WiFi devboard
* OFW: Scripts: OB recovery
* OFW: Expose additional functions of the crypto engine to user -> **Breaking API change 34.x -> 35.x**
* OFW: External apps removed -> In our case - moved into extra plugins repo to separate plugins and firmware
* OFW: BadUSB: qFlipper install script for MacOS
* OFW: Add compressor.h to the SDK
* OFW: fbt: Fix building using path with space
* OFW: RPC: md5 in storage list
* OFW: Fixes 2957 - subghz decode_raw
* OFW: FDX-B temperature in system units
* OFW: Infrared: buttons move feature rework
* LF RFID: Write T5577 with random password added (clear password via Extra actions) (by @Leptopt1los)
* NFC: Add NFC NDEF parser (by @Willy-JL)
* Apps: **Check out Apps updates by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev)
* OFW: assets: checking limits on image size; ufbt: cdb target
* OFW: NFC: system dict skip when user dict is skipped fix (replaces our fix)
* OFW: FuriHal: fix start duration furi_hal_subghz_async_tx
* OFW: NFC: parsers minor cleanup
* OFW: NFC Ntag success write freeze when not saved card
* OFW: ufbt: fixed generated project paths on Windows
<br><br>
#### Known NFC post-refactor regressions list:
- Mifare Mini clones reading is broken (original mini working fine) (OFW)
- EMV simple data parser was removed with protocol with refactoring (OFW)
- Option to unlock Slix-L (NFC V) with preset or custom password was removed with refactoring (OFW)
- NFC CLI was removed with refactoring (OFW)
- Current list of affected apps: https://github.com/xMasterX/all-the-plugins/tree/dev/apps_broken_by_last_refactors
- Also in app **Enhanced Sub-GHz Chat** - NFC part was temporarily removed to make app usable, NFC part of the app requires remaking it with new nfc stack
----
@@ -34,20 +24,23 @@
[-> Download qFlipper (official link)](https://flipperzero.one/update)
## Please support development of the project
* **Boosty** (patreon alternative): https://boosty.to/mmxdev
* cloudtips (only RU payments accepted): https://pay.cloudtips.ru/p/7b3e9d65
* YooMoney (only RU payments accepted): https://yoomoney.ru/fundraise/XA49mgQLPA0.221209
* USDT(TRC20): `TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`
* BCH: `qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`
* ETH/BSC/ERC20-Tokens: `darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`)
* BTC: `bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`
* DOGE: `D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`
* LTC: `ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`
* XMR (Monero): `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`
* TON: `EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf`
|Service|Remark|Link/Wallet|
|-|-|-|
|**Patreon**||https://patreon.com/mmxdev|
|**Boosty**|patreon alternative|https://boosty.to/mmxdev|
|cloudtips|only RU payments accepted|https://pay.cloudtips.ru/p/7b3e9d65|
|YooMoney|only RU payments accepted|https://yoomoney.ru/fundraise/XA49mgQLPA0.221209|
|USDT|(TRC20)|`TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`|
|BCH||`qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`|
|ETH|(BSC/ERC20-Tokens)|`darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`)|
|BTC||`bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`|
|DOGE||`D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`|
|LTC||`ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`|
|XMR|(Monero)| `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`|
|TON||`EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf`|
#### Thanks to our sponsors:
callmezimbra, Quen0n, MERRON, grvpvl (lvpvrg), art_col, ThurstonWaffles, Moneron, UterGrooll, LUCFER, Northpirate, zloepuzo, T.Rat, Alexey B., ionelife, ...
#### Thanks to our sponsors who supported project in the past and special thanks to sponsors who supports us on regular basis:
ClaraCrazy, Pathfinder [Count Zero cDc], callmezimbra, Quen0n, MERRON, grvpvl (lvpvrg), art_col, ThurstonWaffles, Moneron, UterGrooll, LUCFER, Northpirate, zloepuzo, T.Rat, Alexey B., ionelife, ...
and all other great people who supported our project and me (xMasterX), thanks to you all!
@@ -59,11 +52,15 @@ What build I should download and what this name means - `flipper-z-f7-update-(ve
`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>
` ` = this build comes with 3 custom animations, and default apps preinstalled<br>
`c` = this build comes with 3 custom animations, and only main apps (Clean build)<br>
`n` = this build comes without our custom animations (we have only 3 of them), only official flipper animations<br>
`e` = build has 🎲 [extra apps pack](https://github.com/xMasterX/all-the-plugins) preinstalled<br>
`r` = RGB patch (+ extra apps) for flippers with rgb backlight mod (this is hardware mod!) (Works only on modded flippers!) (do not install on non modded device!)
| Designation | 3 Custom Animation | [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` | ✅ | | | |
| `n` | | ✅ | | |
| `e` | ✅ | ✅ | ✅ | |
| `r` | ✅ | ✅ | ✅ | ⚠️ |
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>

249
ReadMe.md
View File

@@ -3,6 +3,20 @@
<img src="https://user-images.githubusercontent.com/10697207/186202043-26947e28-b1cc-459a-8f20-ffcc7fc0c71c.png" align="center" alt="fzCUSTOM" 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!
@@ -16,14 +30,11 @@
##### 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 devs.
<br>
Our Discord Community:
<br>
<a href="https://discord.unleashedflip.com"><img src="https://discordapp.com/api/guilds/937479784148115456/widget.png?style=banner4" alt="Unofficial Discord Community" target="_blank"></a>
<br>
<br>
<br>
## 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)
## Dev builds (unstable)
- https://dev.unleashedflip.com/
@@ -32,74 +43,76 @@ Our Discord Community:
- https://t.me/unleashed_fw
# What's changed
* Sub-GHz regional TX restrictions removed
* Sub-GHz frequency range can be extended in settings file (Warning: It can damage Flipper's hardware)
* Many rolling code protocols now have the ability to save & send captured signals
* FAAC SLH (Spa) & BFT Mitto (keeloq secure with seed) manual creation
* Sub-GHz static code brute-force plugin
* LFRFID Fuzzer plugin
* Custom community plugins and games added + all known working apps can be downloaded in extra pack in every release
* Extra Sub-GHz frequencies + extra Mifare Classic keys
* Picopass/iClass plugin included in releases
* Recompiled IR TV Universal Remote for ALL buttons
* Universal remote for Projectors, Fans, A/Cs and Audio(soundbars, etc.)
* 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)
- **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/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)
- Sub-GHz -> External CC1101 module support - [(by quen0n)](https://github.com/DarkFlippers/unleashed-firmware/pull/307)
- Sub-GHz -> `Add manually` menu extended with new protocols
- Sub-GHz -> New frequency analyzer - [(by ClusterM)](https://github.com/DarkFlippers/unleashed-firmware/pull/43)
- Sub-GHz -> Save last used frequency [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
- Sub-GHz -> Press OK in frequency analyzer to use detected frequency in Read modes [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/77)
- Sub-GHz -> Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu [(by derskythe)](https://github.com/DarkFlippers/unleashed-firmware/pull/79)
- 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)
* Sub-GHz -> Short press OK in frequency analyzer to save detected frequency for usage in Read modes
* Sub-GHz -> Long press OK button in Sub-GHz Frequency analyzer to switch to Read menu and automatically use selected frequency
* SubGHz -> New option to use timestamps + protocol name when you saving file, instead of random name - Enable in `Radio Settings -> Time in names = ON`
* SubGHz Bruteforcer 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
* SubGHz -> Read mode UI improvements (scrolling text, + shows time when signal was received) (by @wosk)
* Sub-GHz -> External CC1101 module support (Hardware SPI used)
* SubGHz -> **Hold right in received signal list to delete selected signal**
* SubGHz -> **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
* SubGHz -> 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)
* SubGHz -> Debug mode counter increase settings (+1 -> +5, +10, default: +1)
* SubGHz -> Debug PIN output settings for protocol development
* Infrared -> `RCA` Protocol
* Infrared -> Debug TX PIN output settings
* Other small fixes and changes throughout
* See other changes in readme below
- **Sub-GHz** *lib & hal*
- Regional TX restrictions removed
- Extra Sub-GHz frequencies
- 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 frequency [(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)
- **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)
- 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 -> Debug TX PIN output settings
- **NFC/RFID/iButton**
* LFRFID/iButton Fuzzer plugins
* Extra Mifare Classic keys
* 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)
* Picopass/iClass plugin (now with emulation support!) included in releases
- **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
- Clock on Desktop -> `Settings -> Desktop -> Show Clock`
- 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)
- **BadBT** plugin (BT version of BadKB) [(by Willy-JL, ClaraCrazy, XFW contributors)](https://github.com/ClaraCrazy/Flipper-Xtreme/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
Also check the changelog in releases for latest updates!
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 decoders for these protocols in OFW.
Keeloq [Not ALL systems supported for decode or emulation yet!] - [Supported manufacturers list](https://0bin.net/paste/VwR2lNJY#WH9vnPgvcp7w6zVKucFCuNREKAcOij8KsJ6vqLfMn3b)
Keeloq [Not ALL systems supported for decode or emulation!] - [Supported manufacturers list](https://pastes.io/raw/unuj9bhe4m)
Encoders or sending made by @xMasterX:
- Nero Radio 57bit (+ 56bit encoder improvements)
- CAME 12bit/24bit encoder fixes (Fixes now merged in OFW)
- Keeloq: HCS101
- Keeloq: AN-Motors
- Keeloq: JCM Tech
- Keeloq: MHouse
- Keeloq: Nice Smilo
- Keeloq: DTM Neo
- Keeloq: FAAC RC,XT
- Keeloq: Mutancode
- Keeloq: Normstahl
- Keeloq: Beninca + Allmatic
- Keeloq: Stilmatic
- Keeloq: CAME Space
- Keeloq: Aprimatic (model TR and similar)
- Keeloq: Centurion Nova (thanks Carlos !)
- Keeloq: 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 !)
Encoders or sending made by @Eng1n33r(first implementation in Q2 2022) & @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) [External seed calculation required (For info contact me in Discord: @mmx7)]
- Keeloq: BFT Mitto -> Update! check out new [instructions](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemoteProg.md)
- FAAC SLH (Spa) -> Update!!! 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)
- Star Line
- Security+ v1 & v2 (encoders was made in OFW)
@@ -115,96 +128,108 @@ The majority of this project is developed and maintained by me, @xMasterX.
I'm unemployed, and the only income I receive is from your donations.
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.
- @gid9798 - SubGHz, Plugins, many other things
- @assasinfil - SubGHz protocols
- @assasinfil - SubGHz protocols, NFC parsers (working with @Leptopt1los)
- @Svaarich - UI design and animations
- @amec0e & @Leptopt1los - Infrared assets
- @amec0e & @Leptopt1los (only ACs) - 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.
You can support us by using links or addresses below:
* **Boosty** (patreon alternative): https://boosty.to/mmxdev
* cloudtips (only RU payments accepted): https://pay.cloudtips.ru/p/7b3e9d65
* YooMoney (only RU payments accepted): https://yoomoney.ru/fundraise/XA49mgQLPA0.221209
* USDT(TRC20): `TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`
* BCH: `qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`
* ETH/BSC/ERC20-Tokens: `darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`)
* BTC: `bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`
* DOGE: `D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`
* LTC: `ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`
* XMR (Monero): `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`
* TON: `EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf`
|Service|Remark|Link/Wallet|
|-|-|-|
|**Patreon**||https://patreon.com/mmxdev|
|**Boosty**|patreon alternative|https://boosty.to/mmxdev|
|cloudtips|only RU payments accepted|https://pay.cloudtips.ru/p/7b3e9d65|
|YooMoney|only RU payments accepted|https://yoomoney.ru/fundraise/XA49mgQLPA0.221209|
|USDT|(TRC20)|`TSXcitMSnWXUFqiUfEXrTVpVewXy2cYhrs`|
|BCH||`qquxfyzntuqufy2dx0hrfr4sndp0tucvky4sw8qyu3`|
|ETH|(BSC/ERC20-Tokens)|`darkflippers.eth` (or `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`)|
|BTC||`bc1q0np836jk9jwr4dd7p6qv66d04vamtqkxrecck9`|
|DOGE||`D6R6gYgBn5LwTNmPyvAQR6bZ9EtGgFCpvv`|
|LTC||`ltc1q3ex4ejkl0xpx3znwrmth4lyuadr5qgv8tmq8z9`|
|XMR|(Monero)| `41xUz92suUu1u5Mu4qkrcs52gtfpu9rnZRdBpCJ244KRHf6xXSvVFevdf2cnjS7RAeYr5hn9MsEfxKoFDRSctFjG5fv1Mhn`|
|TON||`EQCOqcnYkvzOZUV_9bPE_8oTbOrOF03MnF-VcJyjisTZmpGf`|
### Community apps included:
## Community apps included
#### See full list and sources here: https://github.com/xMasterX/all-the-plugins/tree/dev
### [🎲 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
## [- How to install firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToInstall.md)
## 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): `n`,` `,`e`...
## Firmware & Development
## [- How to build firmware](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/HowToBuild.md)
### - **[How to build](/documentation/HowToBuild.md#how-to-build-by-yourself) | [Project-structure](#project-structure)**
## [- How to connect external CC1101 module](https://github.com/quen0n/flipperzero-ext-cc1101)
### - **CLion IDE** - How to setup workspace for flipper firmware development [by Savely Krasovsky](https://krasovs.ky/2022/11/01/flipper-zero-clion.html)
## [- BadUSB: how to add new keyboard layouts](https://github.com/dummy-decoy/flipperzero_badusb_kl)
### - **"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 change Flipper name](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/CustomFlipperName.md)
### - [How to write your own app](https://flipper.atmanos.com/docs/overview/intro). Docs by atmanos **⚠outdated API**
## [- How to use Mifare Nested plugin to recover keys](https://github.com/AloneLiberty/FlipperNested#how-to-use-it)
## Firmware & main Apps feature
## [- How to make captures to add them into Universal IR remotes](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/InfraredCaptures.md)
### - System: [How to change Flipper name](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/CustomFlipperName.md)
### **Sub-GHz**
### - BadUSB: [How to add new keyboard layouts](https://github.com/dummy-decoy/flipperzero_badusb_kl)
## [- Transmission is blocked? - How to extend Sub-GHz frequency range](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md)
### - Infrared: [How to make captures to add them into Universal IR remotes](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/InfraredCaptures.md)
## [- How to add extra Sub-GHz frequencies](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSettings.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)
## [- Configure Sub-GHz Remote App](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemotePlugin.md)
### - Transmission is blocked? [How to extend Sub-GHz frequency range](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/DangerousSettings.md)
### **Plugins**
### - [How to add extra Sub-GHz frequencies](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzSettings.md)
## [- 🎲 Download Extra plugins for Unleashed](https://github.com/xMasterX/all-the-plugins)
### - [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)
## [- TOTP (Authenticator) config description](https://github.com/akopachov/flipper-zero_authenticator/blob/master/docs/conf-file_description.md)
### - [~~Configure Sub-GHz Remote App~~](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SubGHzRemotePlugin.md) Not recomeded, please use embedded configurator
## [- Barcode Generator](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/BarcodeGenerator.md)
## **Plugins**
## [- Multi Converter](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/MultiConverter.md)
### - TOTP (Authenticator): [config description](https://github.com/akopachov/flipper-zero_authenticator/blob/master/docs/conf-file_description.md)
## [- WAV Player sample files & how to convert](https://github.com/UberGuidoZ/Flipper/tree/main/Wav_Player#readme)
### - Mifare Nested plugin: [How to recover keys](https://github.com/AloneLiberty/FlipperNested#how-to-use-it)
## [- Sub-GHz playlist generator script](https://github.com/darmiel/flipper-scripts/blob/main/playlist/playlist_creator_by_chunk.py)
### - Barcode Generator: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/BarcodeGenerator.md)
### **Plugins that works with external hardware**
### - Multi Converter: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/MultiConverter.md)
## [- How to use: Unitemp - Temperature sensors reader](https://github.com/quen0n/unitemp-flipperzero#readme)
### - WAV Player: [sample files & how to convert](https://github.com/UberGuidoZ/Flipper/tree/main/Wav_Player#readme)
## [- How to use: [NMEA] GPS](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/gps_nmea_uart/README.md)
### - Sub-GHz playlist: [generator script](https://github.com/darmiel/flipper-scripts/blob/main/playlist/playlist_creator_by_chunk.py)
## [- How to use: i2c Tools](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/flipper_i2ctools/README.md)
## **Plugins that works with external hardware** [GPIO]
## [- How to use: [NRF24] plugins](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/NRF24.md)
### - Unitemp - Temperature sensors reader: [How to use & supported sensors](https://github.com/quen0n/unitemp-flipperzero#readme)
## [- How to use: [WiFi] Scanner](https://github.com/SequoiaSan/FlipperZero-WiFi-Scanner_Module#readme)
### - [NMEA] GPS: [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/gps_nmea_uart/README.md)
## [- How to use: [ESP8266] Deauther](https://github.com/SequoiaSan/FlipperZero-Wifi-ESP8266-Deauther-Module#readme)
### - i2c Tools [How to use](https://github.com/xMasterX/all-the-plugins/blob/dev/base_pack/flipper_i2ctools/README.md)
## [- How to use: [ESP32] WiFi Marauder](https://github.com/UberGuidoZ/Flipper/tree/main/Wifi_DevBoard)
### - [NRF24] plugins: [How to use](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/NRF24.md)
## [- How to use: [ESP32-CAM] Camera Suite](https://github.com/CodyTolene/Flipper-Zero-Camera-Suite)
## [- [WiFi] Scanner - Web Flasher for module firmware](https://sequoiasan.github.io/FlipperZero-WiFi-Scanner_Module/)
### - [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 - Web Flasher for module firmware](https://sequoiasan.github.io/FlipperZero-Wifi-ESP8266-Deauther-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/)
## [- Windows: How to Upload .bin to ESP32/ESP8266](https://github.com/SequoiaSan/Guide-How-To-Upload-bin-to-ESP8266-ESP32)
### - [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)
## [- How to use: [GPIO] SentrySafe plugin](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SentrySafe.md)
### - [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](https://github.com/DarkFlippers/unleashed-firmware/blob/dev/documentation/SentrySafe.md)
<br>
<br>
@@ -218,13 +243,7 @@ You can support us by using links or addresses below:
# Links
* Unofficial Discord: [discord.unleashedflip.com](https://discord.unleashedflip.com)
* Hello world - plugin tutorial (English): [https://github.com/DroomOne/Flipper-Plugin-Tutorial](https://github.com/DroomOne/Flipper-Plugin-Tutorial)
* Hello world - plugin tutorial (in Russian): [https://yakovlev.me/hello-flipper-zero/](https://yakovlev.me/hello-flipper-zero/)
* CLion IDE - How to setup workspace for flipper firmware development: [https://krasovs.ky/2022/11/01/flipper-zero-clion.html](https://krasovs.ky/2022/11/01/flipper-zero-clion.html)
* Docs by atmanos / How to write your own app (outdated API): [https://flipper.atmanos.com/docs/overview/intro](https://flipper.atmanos.com/docs/overview/intro)
* Official Docs: [http://docs.flipperzero.one](http://docs.flipperzero.one)
* Official Docs: [docs.flipper.net](https://docs.flipper.net/)
* Official Forum: [forum.flipperzero.one](https://forum.flipperzero.one/)
# Project structure

View File

@@ -67,20 +67,22 @@ if GetOption("fullenv") or any(
# Target for self-update package
dist_basic_arguments = [
"--bundlever",
'"${UPDATE_VERSION_STRING}"',
"${UPDATE_VERSION_STRING}",
]
dist_radio_arguments = [
"--radio",
'"${ROOT_DIR.abspath}/${COPRO_STACK_BIN_DIR}/${COPRO_STACK_BIN}"',
"${ROOT_DIR.abspath}/${COPRO_STACK_BIN_DIR}/${COPRO_STACK_BIN}",
"--radiotype",
"${COPRO_STACK_TYPE}",
"${COPRO_DISCLAIMER}",
"--obdata",
'"${ROOT_DIR.abspath}/${COPRO_OB_DATA}"',
"${ROOT_DIR.abspath}/${COPRO_OB_DATA}",
"--stackversion",
"${COPRO_CUBE_VERSION}",
]
dist_resource_arguments = [
"-r",
'"${ROOT_DIR.abspath}/assets/resources"',
firmware_env.subst("${RESOURCES_ROOT}"),
]
dist_splash_arguments = (
[
@@ -93,7 +95,7 @@ if GetOption("fullenv") or any(
selfupdate_dist = distenv.DistCommand(
"updater_package",
(distenv["DIST_DEPENDS"], firmware_env["FW_RESOURCES"]),
(distenv["DIST_DEPENDS"], firmware_env["FW_RESOURCES_MANIFEST"]),
DIST_EXTRA=[
*dist_basic_arguments,
*dist_radio_arguments,
@@ -126,7 +128,8 @@ if GetOption("fullenv") or any(
# Installation over USB & CLI
usb_update_package = distenv.AddUsbFlashTarget(
"#build/usbinstall.flag", (firmware_env["FW_RESOURCES"], selfupdate_dist)
"#build/usbinstall.flag",
(firmware_env["FW_RESOURCES_MANIFEST"], selfupdate_dist),
)
distenv.Alias("flash_usb_full", usb_update_package)
@@ -164,17 +167,27 @@ Depends(
list(app_artifact.validator for app_artifact in external_app_list),
)
Alias("fap_dist", fap_dist)
# distenv.Default(fap_dist)
distenv.Depends(firmware_env["FW_RESOURCES"], external_apps_artifacts.resources_dist)
# Copy all faps to device
fap_deploy = distenv.PhonyTarget(
"fap_deploy",
"${PYTHON3} ${FBT_SCRIPT_DIR}/storage.py -p ${FLIP_PORT} send ${SOURCE} /ext/apps",
source=Dir("#/assets/resources/apps"),
Action(
[
[
"${PYTHON3}",
"${FBT_SCRIPT_DIR}/storage.py",
"-p",
"${FLIP_PORT}",
"send",
"${SOURCE}",
"/ext/apps",
]
]
),
source=firmware_env.Dir(("${RESOURCES_ROOT}/apps")),
)
Depends(fap_deploy, firmware_env["FW_RESOURCES_MANIFEST"])
# Target for bundling core2 package for qFlipper
@@ -185,27 +198,15 @@ copro_dist = distenv.CoproBuilder(
distenv.AlwaysBuild(copro_dist)
distenv.Alias("copro_dist", copro_dist)
firmware_flash = distenv.AddOpenOCDFlashTarget(firmware_env)
firmware_flash = distenv.AddFwFlashTarget(firmware_env)
distenv.Alias("flash", firmware_flash)
# To be implemented in fwflash.py
firmware_jflash = distenv.AddJFlashTarget(firmware_env)
distenv.Alias("jflash", firmware_jflash)
firmware_bm_flash = distenv.PhonyTarget(
"flash_blackmagic",
"$GDB $GDBOPTS $SOURCES $GDBFLASH",
source=firmware_env["FW_ELF"],
GDBOPTS="${GDBOPTS_BASE} ${GDBOPTS_BLACKMAGIC}",
GDBREMOTE="${BLACKMAGIC_ADDR}",
GDBFLASH=[
"-ex",
"load",
"-ex",
"quit",
],
)
gdb_backtrace_all_threads = distenv.PhonyTarget(
distenv.PhonyTarget(
"gdb_trace_all",
"$GDB $GDBOPTS $SOURCES $GDBFLASH",
source=firmware_env["FW_ELF"],
@@ -262,7 +263,7 @@ distenv.PhonyTarget(
distenv.PhonyTarget(
"debug_other_blackmagic",
"${GDBPYCOM}",
GDBOPTS="${GDBOPTS_BASE} ${GDBOPTS_BLACKMAGIC}",
GDBOPTS="${GDBOPTS_BASE} ${GDBOPTS_BLACKMAGIC}",
GDBREMOTE="${BLACKMAGIC_ADDR}",
GDBPYOPTS=debug_other_opts,
)
@@ -277,23 +278,27 @@ distenv.PhonyTarget(
# Linter
distenv.PhonyTarget(
"lint",
"${PYTHON3} ${FBT_SCRIPT_DIR}/lint.py check ${LINT_SOURCES}",
[["${PYTHON3}", "${FBT_SCRIPT_DIR}/lint.py", "check", "${LINT_SOURCES}"]],
LINT_SOURCES=[n.srcnode() for n in firmware_env["LINT_SOURCES"]],
)
distenv.PhonyTarget(
"format",
"${PYTHON3} ${FBT_SCRIPT_DIR}/lint.py format ${LINT_SOURCES}",
[["${PYTHON3}", "${FBT_SCRIPT_DIR}/lint.py", "format", "${LINT_SOURCES}"]],
LINT_SOURCES=[n.srcnode() for n in firmware_env["LINT_SOURCES"]],
)
# PY_LINT_SOURCES contains recursively-built modules' SConscript files + application manifests
# PY_LINT_SOURCES contains recursively-built modules' SConscript files
# Here we add additional Python files residing in repo root
firmware_env.Append(
PY_LINT_SOURCES=[
# Py code folders
"site_scons",
"scripts",
"applications",
"applications_user",
"assets",
"targets",
# Extra files
"SConstruct",
"firmware.scons",
@@ -303,7 +308,10 @@ firmware_env.Append(
black_commandline = "@${PYTHON3} -m black ${PY_BLACK_ARGS} ${PY_LINT_SOURCES}"
black_base_args = ["--include", '"\\.scons|\\.py|SConscript|SConstruct"']
black_base_args = [
"--include",
'"(\\.scons|\\.py|SConscript|SConstruct|\\.fam)$"',
]
distenv.PhonyTarget(
"lint_py",
@@ -325,11 +333,13 @@ distenv.PhonyTarget(
# Start Flipper CLI via PySerial's miniterm
distenv.PhonyTarget(
"cli", "${PYTHON3} ${FBT_SCRIPT_DIR}/serial_cli.py -p ${FLIP_PORT}"
"cli", [["${PYTHON3}", "${FBT_SCRIPT_DIR}/serial_cli.py", "-p", "${FLIP_PORT}"]]
)
# Update WiFi devboard firmware
distenv.PhonyTarget("devboard_flash", "${PYTHON3} ${FBT_SCRIPT_DIR}/wifi_board.py")
distenv.PhonyTarget(
"devboard_flash", [["${PYTHON3}", "${FBT_SCRIPT_DIR}/wifi_board.py"]]
)
# Find blackmagic probe
@@ -359,10 +369,10 @@ vscode_dist = distenv.Install(
)
distenv.Precious(vscode_dist)
distenv.NoClean(vscode_dist)
distenv.Alias("vscode_dist", vscode_dist)
distenv.Alias("vscode_dist", (vscode_dist, firmware_env["FW_CDB"]))
# Configure shell with build tools
distenv.PhonyTarget(
"env",
"@echo $( ${FBT_SCRIPT_DIR}/toolchain/fbtenv.sh $)",
"@echo $( ${FBT_SCRIPT_DIR.abspath}/toolchain/fbtenv.sh $)",
)

View File

@@ -40,7 +40,6 @@ Applications for main Flipper menu.
Background services providing system APIs to applications.
- `applications.h` - Firmware application list header
- `bt` - BLE service and application
- `cli` - Console service and API
- `crypto` - Crypto cli tools

View File

@@ -4,7 +4,6 @@ App(
apptype=FlipperAppType.DEBUG,
targets=["f7"],
entry_point="accessor_app",
cdefines=["APP_ACCESSOR"],
requires=["gui"],
stack_size=4 * 1024,
order=40,

View File

@@ -174,7 +174,7 @@ bool WIEGAND::DoWiegandConversion() {
return false;
}
// TODO: Handle validation failure case!
// TODO FL-3490: Handle validation failure case!
} else if(4 == _bitCount) {
// 4-bit Wiegand codes have no data integrity check so we just
// read the LOW nibble.

View File

@@ -3,7 +3,6 @@ App(
name="Battery Test",
apptype=FlipperAppType.DEBUG,
entry_point="battery_test_app",
cdefines=["APP_BATTERY_TEST"],
requires=[
"gui",
"power",

View File

@@ -3,7 +3,6 @@ App(
name="Blink Test",
apptype=FlipperAppType.DEBUG,
entry_point="blink_test_app",
cdefines=["APP_BLINK"],
requires=["gui"],
stack_size=1 * 1024,
order=10,

View File

@@ -0,0 +1,15 @@
App(
appid="ccid_test",
name="CCID Debug",
apptype=FlipperAppType.DEBUG,
entry_point="ccid_test_app",
requires=[
"gui",
],
provides=[
"ccid_test",
],
stack_size=1 * 1024,
order=120,
fap_category="Debug",
)

View File

@@ -0,0 +1,169 @@
#include <stdint.h>
#include <furi.h>
#include <furi_hal.h>
#include <gui/view.h>
#include <gui/view_dispatcher.h>
#include <gui/modules/submenu.h>
#include <gui/gui.h>
#include "iso7816_t0_apdu.h"
typedef enum {
EventTypeInput,
} EventType;
typedef struct {
Gui* gui;
ViewPort* view_port;
FuriMessageQueue* event_queue;
FuriHalUsbCcidConfig ccid_cfg;
} CcidTestApp;
typedef struct {
union {
InputEvent input;
};
EventType type;
} CcidTestAppEvent;
typedef enum {
CcidTestSubmenuIndexInsertSmartcard,
CcidTestSubmenuIndexRemoveSmartcard,
CcidTestSubmenuIndexInsertSmartcardReader
} SubmenuIndex;
void icc_power_on_callback(uint8_t* atrBuffer, uint32_t* atrlen, void* context) {
UNUSED(context);
iso7816_answer_to_reset(atrBuffer, atrlen);
}
//dataBlock points to the buffer
//dataBlockLen tells reader how nany bytes should be read
void xfr_datablock_callback(
const uint8_t* dataBlock,
uint32_t dataBlockLen,
uint8_t* responseDataBlock,
uint32_t* responseDataBlockLen,
void* context) {
UNUSED(context);
struct ISO7816_Command_APDU commandAPDU;
iso7816_read_command_apdu(&commandAPDU, dataBlock, dataBlockLen);
struct ISO7816_Response_APDU responseAPDU;
//class not supported
responseAPDU.SW1 = 0x6E;
responseAPDU.SW2 = 0x00;
iso7816_write_response_apdu(&responseAPDU, responseDataBlock, responseDataBlockLen);
}
static const CcidCallbacks ccid_cb = {
icc_power_on_callback,
xfr_datablock_callback,
};
static void ccid_test_app_render_callback(Canvas* canvas, void* ctx) {
UNUSED(ctx);
canvas_clear(canvas);
canvas_set_font(canvas, FontPrimary);
canvas_draw_str(canvas, 0, 10, "CCID Test App");
canvas_set_font(canvas, FontSecondary);
canvas_draw_str(canvas, 0, 63, "Hold [back] to exit");
}
static void ccid_test_app_input_callback(InputEvent* input_event, void* ctx) {
FuriMessageQueue* event_queue = ctx;
CcidTestAppEvent event;
event.type = EventTypeInput;
event.input = *input_event;
furi_message_queue_put(event_queue, &event, FuriWaitForever);
}
uint32_t ccid_test_exit(void* context) {
UNUSED(context);
return VIEW_NONE;
}
CcidTestApp* ccid_test_app_alloc() {
CcidTestApp* app = malloc(sizeof(CcidTestApp));
// Gui
app->gui = furi_record_open(RECORD_GUI);
//viewport
app->view_port = view_port_alloc();
gui_add_view_port(app->gui, app->view_port, GuiLayerFullscreen);
view_port_draw_callback_set(app->view_port, ccid_test_app_render_callback, NULL);
//message queue
app->event_queue = furi_message_queue_alloc(8, sizeof(CcidTestAppEvent));
furi_check(app->event_queue);
view_port_input_callback_set(app->view_port, ccid_test_app_input_callback, app->event_queue);
return app;
}
void ccid_test_app_free(CcidTestApp* app) {
furi_assert(app);
//message queue
furi_message_queue_free(app->event_queue);
//view port
gui_remove_view_port(app->gui, app->view_port);
view_port_free(app->view_port);
// Close gui record
furi_record_close(RECORD_GUI);
app->gui = NULL;
// Free rest
free(app);
}
int32_t ccid_test_app(void* p) {
UNUSED(p);
//setup view
CcidTestApp* app = ccid_test_app_alloc();
//setup CCID USB
// On linux: set VID PID using: /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist
app->ccid_cfg.vid = 0x1234;
app->ccid_cfg.pid = 0x5678;
FuriHalUsbInterface* usb_mode_prev = furi_hal_usb_get_config();
furi_hal_usb_unlock();
furi_hal_ccid_set_callbacks((CcidCallbacks*)&ccid_cb);
furi_check(furi_hal_usb_set_config(&usb_ccid, &app->ccid_cfg) == true);
//handle button events
CcidTestAppEvent event;
while(1) {
FuriStatus event_status =
furi_message_queue_get(app->event_queue, &event, FuriWaitForever);
if(event_status == FuriStatusOk) {
if(event.type == EventTypeInput) {
if(event.input.type == InputTypeLong && event.input.key == InputKeyBack) {
break;
}
}
}
view_port_update(app->view_port);
}
//tear down USB
furi_hal_usb_set_config(usb_mode_prev, NULL);
furi_hal_ccid_set_callbacks(NULL);
//teardown view
ccid_test_app_free(app);
return 0;
}

View File

@@ -0,0 +1,37 @@
/* Implements rudimentary iso7816-3 support for APDU (T=0) */
#include <stdint.h>
#include <string.h>
#include <furi.h>
#include "iso7816_t0_apdu.h"
void iso7816_answer_to_reset(uint8_t* dataBuffer, uint32_t* atrlen) {
//minimum valid ATR: https://smartcard-atr.apdu.fr/parse?ATR=3B+00
uint8_t AtrBuffer[2] = {
0x3B, //TS (direct convention)
0x00 // T0 (Y(1): b0000, K: 0 (historical bytes))
};
*atrlen = 2;
memcpy(dataBuffer, AtrBuffer, sizeof(uint8_t) * (*atrlen));
}
void iso7816_read_command_apdu(
struct ISO7816_Command_APDU* command,
const uint8_t* dataBuffer,
uint32_t dataLen) {
UNUSED(dataLen);
command->CLA = dataBuffer[0];
command->INS = dataBuffer[1];
command->P1 = dataBuffer[2];
command->P2 = dataBuffer[3];
command->Lc = dataBuffer[4];
}
void iso7816_write_response_apdu(
const struct ISO7816_Response_APDU* response,
uint8_t* dataBuffer,
uint32_t* dataLen) {
dataBuffer[0] = response->SW1;
dataBuffer[1] = response->SW2;
*dataLen = 2;
}

View File

@@ -0,0 +1,32 @@
#ifndef _ISO7816_T0_APDU_H_
#define _ISO7816_T0_APDU_H_
#include <stdint.h>
struct ISO7816_Command_APDU {
//header
uint8_t CLA;
uint8_t INS;
uint8_t P1;
uint8_t P2;
//body
uint8_t Lc;
uint8_t Le;
} FURI_PACKED;
struct ISO7816_Response_APDU {
uint8_t SW1;
uint8_t SW2;
} FURI_PACKED;
void iso7816_answer_to_reset(uint8_t* atrBuffer, uint32_t* atrlen);
void iso7816_read_command_apdu(
struct ISO7816_Command_APDU* command,
const uint8_t* dataBuffer,
uint32_t dataLen);
void iso7816_write_response_apdu(
const struct ISO7816_Response_APDU* response,
uint8_t* dataBuffer,
uint32_t* dataLen);
#endif //_ISO7816_T0_APDU_H_

View File

@@ -3,7 +3,6 @@ App(
name="Crash Test",
apptype=FlipperAppType.DEBUG,
entry_point="crash_test_app",
cdefines=["APP_CRASH_TEST"],
requires=["gui"],
stack_size=1 * 1024,
fap_category="Debug",

View File

@@ -71,7 +71,7 @@ static void direct_draw_run(DirectDraw* instance) {
size_t counter = 0;
float fps = 0;
vTaskPrioritySet(furi_thread_get_current_id(), FuriThreadPriorityIdle);
furi_thread_set_current_priority(FuriThreadPriorityIdle);
do {
size_t elapsed = DWT->CYCCNT - start;

View File

@@ -3,9 +3,8 @@ App(
name="Display Test",
apptype=FlipperAppType.DEBUG,
entry_point="display_test_app",
cdefines=["APP_DISPLAY_TEST"],
requires=["gui"],
fap_libs=["misc"],
fap_libs=["u8g2"],
stack_size=1 * 1024,
order=120,
fap_category="Debug",

View File

@@ -3,7 +3,6 @@ App(
name="File Browser Test",
apptype=FlipperAppType.DEBUG,
entry_point="file_browser_app",
cdefines=["APP_FILE_BROWSER_TEST"],
requires=["gui"],
stack_size=2 * 1024,
order=150,

View File

@@ -3,7 +3,6 @@ App(
name="Keypad Test",
apptype=FlipperAppType.DEBUG,
entry_point="keypad_test_app",
cdefines=["APP_KEYPAD_TEST"],
requires=["gui"],
stack_size=1 * 1024,
order=30,

View File

@@ -3,7 +3,6 @@ App(
name="Locale Test",
apptype=FlipperAppType.DEBUG,
entry_point="locale_test_app",
cdefines=["APP_LOCALE"],
requires=["gui", "locale"],
stack_size=2 * 1024,
order=70,

View File

@@ -21,22 +21,51 @@ static void rpc_debug_app_tick_event_callback(void* context) {
scene_manager_handle_tick_event(app->scene_manager);
}
static void rpc_debug_app_rpc_command_callback(RpcAppSystemEvent event, void* context) {
static void
rpc_debug_app_format_hex(const uint8_t* data, size_t data_size, char* buf, size_t buf_size) {
if(data == NULL || data_size == 0) {
strncpy(buf, "<Data empty>", buf_size);
return;
}
const size_t byte_width = 3;
const size_t line_width = 7;
data_size = MIN(data_size, buf_size / (byte_width + 1));
for(size_t i = 0; i < data_size; ++i) {
char* p = buf + (i * byte_width);
char sep = !((i + 1) % line_width) ? '\n' : ' ';
snprintf(p, byte_width + 1, "%02X%c", data[i], sep);
}
buf[buf_size - 1] = '\0';
}
static void rpc_debug_app_rpc_command_callback(const RpcAppSystemEvent* event, void* context) {
furi_assert(context);
RpcDebugApp* app = context;
furi_assert(app->rpc);
if(event == RpcAppEventSessionClose) {
if(event->type == RpcAppEventTypeSessionClose) {
scene_manager_stop(app->scene_manager);
view_dispatcher_stop(app->view_dispatcher);
rpc_system_app_set_callback(app->rpc, NULL, NULL);
app->rpc = NULL;
} else if(event == RpcAppEventAppExit) {
} else if(event->type == RpcAppEventTypeAppExit) {
scene_manager_stop(app->scene_manager);
view_dispatcher_stop(app->view_dispatcher);
rpc_system_app_confirm(app->rpc, RpcAppEventAppExit, true);
rpc_system_app_confirm(app->rpc, true);
} else if(event->type == RpcAppEventTypeDataExchange) {
furi_assert(event->data.type == RpcAppSystemEventDataTypeBytes);
rpc_debug_app_format_hex(
event->data.bytes.ptr, event->data.bytes.size, app->text_store, TEXT_STORE_SIZE);
view_dispatcher_send_custom_event(
app->view_dispatcher, RpcDebugAppCustomEventRpcDataExchange);
} else {
rpc_system_app_confirm(app->rpc, event, false);
rpc_system_app_confirm(app->rpc, false);
}
}

View File

@@ -1,40 +1,5 @@
#include "../rpc_debug_app.h"
static void rpc_debug_app_scene_start_format_hex(
const uint8_t* data,
size_t data_size,
char* buf,
size_t buf_size) {
furi_assert(data);
furi_assert(buf);
const size_t byte_width = 3;
const size_t line_width = 7;
data_size = MIN(data_size, buf_size / (byte_width + 1));
for(size_t i = 0; i < data_size; ++i) {
char* p = buf + (i * byte_width);
char sep = !((i + 1) % line_width) ? '\n' : ' ';
snprintf(p, byte_width + 1, "%02X%c", data[i], sep);
}
buf[buf_size - 1] = '\0';
}
static void rpc_debug_app_scene_receive_data_exchange_callback(
const uint8_t* data,
size_t data_size,
void* context) {
RpcDebugApp* app = context;
if(data) {
rpc_debug_app_scene_start_format_hex(data, data_size, app->text_store, TEXT_STORE_SIZE);
} else {
strncpy(app->text_store, "<Data empty>", TEXT_STORE_SIZE);
}
view_dispatcher_send_custom_event(app->view_dispatcher, RpcDebugAppCustomEventRpcDataExchange);
}
void rpc_debug_app_scene_receive_data_exchange_on_enter(void* context) {
RpcDebugApp* app = context;
strncpy(app->text_store, "Received data will appear here...", TEXT_STORE_SIZE);
@@ -42,8 +7,6 @@ void rpc_debug_app_scene_receive_data_exchange_on_enter(void* context) {
text_box_set_text(app->text_box, app->text_store);
text_box_set_font(app->text_box, TextBoxFontHex);
rpc_system_app_set_data_exchange_callback(
app->rpc, rpc_debug_app_scene_receive_data_exchange_callback, app);
view_dispatcher_switch_to_view(app->view_dispatcher, RpcDebugAppViewTextBox);
}
@@ -53,6 +16,7 @@ bool rpc_debug_app_scene_receive_data_exchange_on_event(void* context, SceneMana
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == RpcDebugAppCustomEventRpcDataExchange) {
rpc_system_app_confirm(app->rpc, true);
notification_message(app->notifications, &sequence_blink_cyan_100);
notification_message(app->notifications, &sequence_display_backlight_on);
text_box_set_text(app->text_box, app->text_store);
@@ -66,5 +30,4 @@ bool rpc_debug_app_scene_receive_data_exchange_on_event(void* context, SceneMana
void rpc_debug_app_scene_receive_data_exchange_on_exit(void* context) {
RpcDebugApp* app = context;
text_box_reset(app->text_box);
rpc_system_app_set_data_exchange_callback(app->rpc, NULL, NULL);
}

View File

@@ -56,7 +56,6 @@ static void subghz_test_packet_rx_callback(bool level, uint32_t duration, void*
subghz_decoder_princeton_for_testing_parse(instance->decoder, level, duration);
}
//todo
static void subghz_test_packet_rx_pt_callback(SubGhzDecoderPrinceton* parser, void* context) {
UNUSED(parser);
furi_assert(context);

View File

@@ -3,7 +3,6 @@ App(
name="Text Box Test",
apptype=FlipperAppType.DEBUG,
entry_point="text_box_test_app",
cdefines=["APP_TEXT_BOX_TEST"],
requires=["gui"],
stack_size=1 * 1024,
order=140,

View File

@@ -3,7 +3,6 @@ App(
name="UART Echo",
apptype=FlipperAppType.DEBUG,
entry_point="uart_echo_app",
cdefines=["APP_UART_ECHO"],
requires=["gui"],
stack_size=2 * 1024,
order=70,

View File

@@ -5,6 +5,7 @@ App(
cdefines=["APP_UNIT_TESTS"],
requires=["system_settings"],
provides=["delay_test"],
resources="resources",
order=100,
)

View File

@@ -28,7 +28,7 @@ void bt_test_alloc() {
}
void bt_test_free() {
furi_assert(bt_test);
furi_check(bt_test);
free(bt_test->nvm_ram_buff_ref);
free(bt_test->nvm_ram_buff_dut);
bt_keys_storage_free(bt_test->bt_keys_storage);
@@ -89,7 +89,7 @@ static void bt_test_keys_remove_test_file() {
}
MU_TEST(bt_test_keys_storage_serial_profile) {
furi_assert(bt_test);
furi_check(bt_test);
bt_test_keys_remove_test_file();
bt_test_keys_storage_profile();

View File

@@ -26,7 +26,6 @@ void test_furi_memmgr() {
mu_assert_int_eq(66, ((uint8_t*)ptr)[i]);
}
// TODO: fix realloc to copy only old size, and write testcase that leftover of reallocated memory is zero-initialized
free(ptr);
// allocate and zero-initialize array (calloc)

View File

@@ -3,18 +3,29 @@
#include <furi.h>
#include "../minunit.h"
void test_furi_create_open() {
// 1. Create record
uint8_t test_data = 0;
furi_record_create("test/holding", (void*)&test_data);
#define TEST_RECORD_NAME "test/holding"
// 2. Open it
void* record = furi_record_open("test/holding");
void test_furi_create_open() {
// Test that record does not exist
mu_check(furi_record_exists(TEST_RECORD_NAME) == false);
// Create record
uint8_t test_data = 0;
furi_record_create(TEST_RECORD_NAME, (void*)&test_data);
// Test that record exists
mu_check(furi_record_exists(TEST_RECORD_NAME) == true);
// Open it
void* record = furi_record_open(TEST_RECORD_NAME);
mu_assert_pointers_eq(record, &test_data);
// 3. Close it
furi_record_close("test/holding");
// Close it
furi_record_close(TEST_RECORD_NAME);
// 4. Clean up
furi_record_destroy("test/holding");
// Clean up
furi_record_destroy(TEST_RECORD_NAME);
// Test that record does not exist
mu_check(furi_record_exists(TEST_RECORD_NAME) == false);
}

View File

@@ -69,7 +69,7 @@ MU_TEST(mu_test_furi_string_mem) {
mu_check(string != NULL);
mu_check(!furi_string_empty(string));
// TODO: how to test furi_string_reserve?
// TODO FL-3493: how to test furi_string_reserve?
// test furi_string_reset
furi_string_reset(string);

View File

@@ -5,6 +5,11 @@
#include "../minunit.h"
#define DATA_SIZE 4
#define EEPROM_ADDRESS 0b10101000
#define EEPROM_ADDRESS_HIGH (EEPROM_ADDRESS | 0b10)
#define EEPROM_SIZE 512
#define EEPROM_PAGE_SIZE 16
#define EEPROM_WRITE_DELAY_MS 6
static void furi_hal_i2c_int_setup() {
furi_hal_i2c_acquire(&furi_hal_i2c_handle_power);
@@ -14,6 +19,14 @@ static void furi_hal_i2c_int_teardown() {
furi_hal_i2c_release(&furi_hal_i2c_handle_power);
}
static void furi_hal_i2c_ext_setup() {
furi_hal_i2c_acquire(&furi_hal_i2c_handle_external);
}
static void furi_hal_i2c_ext_teardown() {
furi_hal_i2c_release(&furi_hal_i2c_handle_external);
}
MU_TEST(furi_hal_i2c_int_1b) {
bool ret = false;
uint8_t data_one = 0;
@@ -103,14 +116,116 @@ MU_TEST(furi_hal_i2c_int_1b_fail) {
mu_assert(data_one != 0, "9 invalid data");
}
MU_TEST(furi_hal_i2c_int_ext_3b) {
bool ret = false;
uint8_t data_many[DATA_SIZE] = {0};
// 3 byte: read
data_many[0] = LP5562_CHANNEL_BLUE_CURRENT_REGISTER;
ret = furi_hal_i2c_tx_ext(
&furi_hal_i2c_handle_power,
LP5562_ADDRESS,
false,
data_many,
1,
FuriHalI2cBeginStart,
FuriHalI2cEndAwaitRestart,
LP5562_I2C_TIMEOUT);
mu_assert(ret, "3 tx failed");
// Send a RESTART condition, then read the 3 bytes one after the other
ret = furi_hal_i2c_rx_ext(
&furi_hal_i2c_handle_power,
LP5562_ADDRESS,
false,
data_many + 1,
1,
FuriHalI2cBeginRestart,
FuriHalI2cEndPause,
LP5562_I2C_TIMEOUT);
mu_assert(ret, "4 rx failed");
mu_assert(data_many[1] != 0, "4 invalid data");
ret = furi_hal_i2c_rx_ext(
&furi_hal_i2c_handle_power,
LP5562_ADDRESS,
false,
data_many + 2,
1,
FuriHalI2cBeginResume,
FuriHalI2cEndPause,
LP5562_I2C_TIMEOUT);
mu_assert(ret, "5 rx failed");
mu_assert(data_many[2] != 0, "5 invalid data");
ret = furi_hal_i2c_rx_ext(
&furi_hal_i2c_handle_power,
LP5562_ADDRESS,
false,
data_many + 3,
1,
FuriHalI2cBeginResume,
FuriHalI2cEndStop,
LP5562_I2C_TIMEOUT);
mu_assert(ret, "6 rx failed");
mu_assert(data_many[3] != 0, "6 invalid data");
}
MU_TEST(furi_hal_i2c_ext_eeprom) {
if(!furi_hal_i2c_is_device_ready(&furi_hal_i2c_handle_external, EEPROM_ADDRESS, 100)) {
printf("no device connected, skipping\r\n");
return;
}
bool ret = false;
uint8_t buffer[EEPROM_SIZE] = {0};
for(size_t page = 0; page < (EEPROM_SIZE / EEPROM_PAGE_SIZE); ++page) {
// Fill page buffer
for(size_t page_byte = 0; page_byte < EEPROM_PAGE_SIZE; ++page_byte) {
// Each byte is its position in the EEPROM modulo 256
uint8_t byte = ((page * EEPROM_PAGE_SIZE) + page_byte) % 256;
buffer[page_byte] = byte;
}
uint8_t address = (page < 16) ? EEPROM_ADDRESS : EEPROM_ADDRESS_HIGH;
ret = furi_hal_i2c_write_mem(
&furi_hal_i2c_handle_external,
address,
page * EEPROM_PAGE_SIZE,
buffer,
EEPROM_PAGE_SIZE,
20);
mu_assert(ret, "EEPROM write failed");
furi_delay_ms(EEPROM_WRITE_DELAY_MS);
}
ret = furi_hal_i2c_read_mem(
&furi_hal_i2c_handle_external, EEPROM_ADDRESS, 0, buffer, EEPROM_SIZE, 100);
mu_assert(ret, "EEPROM read failed");
for(size_t pos = 0; pos < EEPROM_SIZE; ++pos) {
mu_assert_int_eq(pos % 256, buffer[pos]);
}
}
MU_TEST_SUITE(furi_hal_i2c_int_suite) {
MU_SUITE_CONFIGURE(&furi_hal_i2c_int_setup, &furi_hal_i2c_int_teardown);
MU_RUN_TEST(furi_hal_i2c_int_1b);
MU_RUN_TEST(furi_hal_i2c_int_3b);
MU_RUN_TEST(furi_hal_i2c_int_ext_3b);
MU_RUN_TEST(furi_hal_i2c_int_1b_fail);
}
MU_TEST_SUITE(furi_hal_i2c_ext_suite) {
MU_SUITE_CONFIGURE(&furi_hal_i2c_ext_setup, &furi_hal_i2c_ext_teardown);
MU_RUN_TEST(furi_hal_i2c_ext_eeprom);
}
int run_minunit_test_furi_hal() {
MU_RUN_SUITE(furi_hal_i2c_int_suite);
MU_RUN_SUITE(furi_hal_i2c_ext_suite);
return MU_EXIT_CODE;
}

View File

@@ -27,7 +27,7 @@ static void infrared_test_alloc() {
}
static void infrared_test_free() {
furi_assert(test);
furi_check(test);
infrared_free_decoder(test->decoder_handler);
infrared_free_encoder(test->encoder_handler);
flipper_format_free(test->ff);

View File

@@ -311,7 +311,7 @@ MU_TEST(test_bit_lib_test_parity) {
}
MU_TEST(test_bit_lib_remove_bit_every_nth) {
// TODO: more tests
// TODO FL-3494: more tests
uint8_t data_i[1] = {0b00001111};
uint8_t data_o[1] = {0b00011111};
size_t length;

View File

@@ -22,7 +22,7 @@ MU_TEST(manifest_iteration_test) {
ResourceManifestReader* manifest_reader = resource_manifest_reader_alloc(storage);
do {
// Open manifest file
if(!resource_manifest_reader_open(manifest_reader, EXT_PATH("unit_tests/Manifest"))) {
if(!resource_manifest_reader_open(manifest_reader, EXT_PATH("unit_tests/Manifest_test"))) {
result = false;
break;
}

View File

@@ -81,6 +81,7 @@ __attribute__((unused)) static void (*minunit_teardown)(void) = NULL;
void minunit_print_progress(void);
void minunit_print_fail(const char* error);
void minunit_printf_warning(const char* format, ...);
/* Definitions */
#define MU_TEST(method_name) static void method_name(void)
@@ -150,6 +151,10 @@ void minunit_print_fail(const char* error);
minunit_end_proc_timer - minunit_proc_timer);)
#define MU_EXIT_CODE minunit_fail
/* Warnings */
#define mu_warn(message) \
MU__SAFE_BLOCK(minunit_printf_warning("%s:%d: %s", __FILE__, __LINE__, message);)
/* Assertions */
#define mu_check(test) \
MU__SAFE_BLOCK( \

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,473 @@
#ifdef FW_CFG_unit_tests
#include <lib/nfc/nfc.h>
#include <lib/nfc/helpers/iso14443_crc.h>
#include <lib/nfc/protocols/iso14443_3a/iso14443_3a.h>
#include <furi/furi.h>
#define NFC_MAX_BUFFER_SIZE (256)
typedef enum {
NfcTransportLogLevelWarning,
NfcTransportLogLevelInfo,
} NfcTransportLogLevel;
FuriMessageQueue* poller_queue = NULL;
FuriMessageQueue* listener_queue = NULL;
typedef enum {
NfcMessageTypeTx,
NfcMessageTypeTimeout,
NfcMessageTypeAbort,
} NfcMessageType;
typedef struct {
uint16_t data_bits;
uint8_t data[NFC_MAX_BUFFER_SIZE];
} NfcMessageData;
typedef struct {
NfcMessageType type;
NfcMessageData data;
} NfcMessage;
typedef enum {
NfcStateIdle,
NfcStateReady,
NfcStateReset,
} NfcState;
typedef enum {
Iso14443_3aColResStatusIdle,
Iso14443_3aColResStatusInProgress,
Iso14443_3aColResStatusDone,
} Iso14443_3aColResStatus;
typedef struct {
Iso14443_3aSensResp sens_resp;
Iso14443_3aSddResp sdd_resp[2];
Iso14443_3aSelResp sel_resp[2];
} Iso14443_3aColResData;
struct Nfc {
NfcState state;
Iso14443_3aColResStatus col_res_status;
Iso14443_3aColResData col_res_data;
NfcEventCallback callback;
void* context;
NfcMode mode;
FuriThread* worker_thread;
};
static void nfc_test_print(
NfcTransportLogLevel log_level,
const char* message,
uint8_t* buffer,
uint16_t bits) {
FuriString* str = furi_string_alloc();
size_t bytes = (bits + 7) / 8;
for(size_t i = 0; i < bytes; i++) {
furi_string_cat_printf(str, " %02X", buffer[i]);
}
if(log_level == NfcTransportLogLevelWarning) {
FURI_LOG_W(message, "%s", furi_string_get_cstr(str));
} else {
FURI_LOG_I(message, "%s", furi_string_get_cstr(str));
}
furi_string_free(str);
}
static void nfc_prepare_col_res_data(
Nfc* instance,
uint8_t* uid,
uint8_t uid_len,
uint8_t* atqa,
uint8_t sak) {
memcpy(instance->col_res_data.sens_resp.sens_resp, atqa, 2);
if(uid_len == 7) {
instance->col_res_data.sdd_resp[0].nfcid[0] = 0x88;
memcpy(&instance->col_res_data.sdd_resp[0].nfcid[1], uid, 3);
uint8_t bss = 0;
for(size_t i = 0; i < 4; i++) {
bss ^= instance->col_res_data.sdd_resp[0].nfcid[i];
}
instance->col_res_data.sdd_resp[0].bss = bss;
instance->col_res_data.sel_resp[0].sak = 0x04;
memcpy(instance->col_res_data.sdd_resp[1].nfcid, &uid[3], 4);
bss = 0;
for(size_t i = 0; i < 4; i++) {
bss ^= instance->col_res_data.sdd_resp[1].nfcid[i];
}
instance->col_res_data.sdd_resp[1].bss = bss;
instance->col_res_data.sel_resp[1].sak = sak;
} else {
furi_crash("Not supporting not 7 bytes");
}
}
Nfc* nfc_alloc() {
Nfc* instance = malloc(sizeof(Nfc));
return instance;
}
void nfc_free(Nfc* instance) {
furi_check(instance);
free(instance);
}
void nfc_config(Nfc* instance, NfcMode mode, NfcTech tech) {
UNUSED(instance);
UNUSED(tech);
instance->mode = mode;
}
void nfc_set_fdt_poll_fc(Nfc* instance, uint32_t fdt_poll_fc) {
UNUSED(instance);
UNUSED(fdt_poll_fc);
}
void nfc_set_fdt_listen_fc(Nfc* instance, uint32_t fdt_listen_fc) {
UNUSED(instance);
UNUSED(fdt_listen_fc);
}
void nfc_set_mask_receive_time_fc(Nfc* instance, uint32_t mask_rx_time_fc) {
UNUSED(instance);
UNUSED(mask_rx_time_fc);
}
void nfc_set_fdt_poll_poll_us(Nfc* instance, uint32_t fdt_poll_poll_us) {
UNUSED(instance);
UNUSED(fdt_poll_poll_us);
}
void nfc_set_guard_time_us(Nfc* instance, uint32_t guard_time_us) {
UNUSED(instance);
UNUSED(guard_time_us);
}
NfcError nfc_iso14443a_listener_set_col_res_data(
Nfc* instance,
uint8_t* uid,
uint8_t uid_len,
uint8_t* atqa,
uint8_t sak) {
furi_check(instance);
furi_check(uid);
furi_check(atqa);
nfc_prepare_col_res_data(instance, uid, uid_len, atqa, sak);
return NfcErrorNone;
}
static int32_t nfc_worker_poller(void* context) {
Nfc* instance = context;
furi_check(instance->callback);
instance->state = NfcStateReady;
NfcCommand command = NfcCommandContinue;
NfcEvent event = {};
while(true) {
event.type = NfcEventTypePollerReady;
command = instance->callback(event, instance->context);
if(command == NfcCommandStop) {
break;
}
}
instance->state = NfcStateIdle;
return 0;
}
static void nfc_worker_listener_pass_col_res(Nfc* instance, uint8_t* rx_data, uint16_t rx_bits) {
furi_check(instance->col_res_status != Iso14443_3aColResStatusDone);
BitBuffer* tx_buffer = bit_buffer_alloc(NFC_MAX_BUFFER_SIZE);
bool processed = false;
if((rx_bits == 7) && (rx_data[0] == 0x52)) {
instance->col_res_status = Iso14443_3aColResStatusInProgress;
bit_buffer_copy_bytes(
tx_buffer,
instance->col_res_data.sens_resp.sens_resp,
sizeof(instance->col_res_data.sens_resp.sens_resp));
nfc_listener_tx(instance, tx_buffer);
processed = true;
} else if(rx_bits == 2 * 8) {
if((rx_data[0] == 0x93) && (rx_data[1] == 0x20)) {
bit_buffer_copy_bytes(
tx_buffer,
(const uint8_t*)&instance->col_res_data.sdd_resp[0],
sizeof(Iso14443_3aSddResp));
nfc_listener_tx(instance, tx_buffer);
processed = true;
} else if((rx_data[0] == 0x95) && (rx_data[1] == 0x20)) {
bit_buffer_copy_bytes(
tx_buffer,
(const uint8_t*)&instance->col_res_data.sdd_resp[1],
sizeof(Iso14443_3aSddResp));
nfc_listener_tx(instance, tx_buffer);
processed = true;
}
} else if(rx_bits == 9 * 8) {
if((rx_data[0] == 0x93) && (rx_data[1] == 0x70)) {
bit_buffer_set_size_bytes(tx_buffer, 1);
bit_buffer_set_byte(tx_buffer, 0, instance->col_res_data.sel_resp[0].sak);
iso14443_crc_append(Iso14443CrcTypeA, tx_buffer);
nfc_listener_tx(instance, tx_buffer);
processed = true;
} else if((rx_data[0] == 0x95) && (rx_data[1] == 0x70)) {
bit_buffer_set_size_bytes(tx_buffer, 1);
bit_buffer_set_byte(tx_buffer, 0, instance->col_res_data.sel_resp[1].sak);
iso14443_crc_append(Iso14443CrcTypeA, tx_buffer);
nfc_listener_tx(instance, tx_buffer);
instance->col_res_status = Iso14443_3aColResStatusDone;
NfcEvent event = {.type = NfcEventTypeListenerActivated};
instance->callback(event, instance->context);
processed = true;
}
}
if(!processed) {
NfcMessage message = {.type = NfcMessageTypeTimeout};
furi_message_queue_put(poller_queue, &message, FuriWaitForever);
}
bit_buffer_free(tx_buffer);
}
static int32_t nfc_worker_listener(void* context) {
Nfc* instance = context;
furi_check(instance->callback);
NfcMessage message = {};
NfcEventData event_data = {};
event_data.buffer = bit_buffer_alloc(NFC_MAX_BUFFER_SIZE);
NfcEvent nfc_event = {.data = event_data};
while(true) {
furi_message_queue_get(listener_queue, &message, FuriWaitForever);
bit_buffer_copy_bits(event_data.buffer, message.data.data, message.data.data_bits);
if((message.data.data[0] == 0x52) && (message.data.data_bits == 7)) {
instance->col_res_status = Iso14443_3aColResStatusIdle;
}
if(message.type == NfcMessageTypeAbort) {
break;
} else if(message.type == NfcMessageTypeTx) {
nfc_test_print(
NfcTransportLogLevelInfo, "RDR", message.data.data, message.data.data_bits);
if(instance->col_res_status != Iso14443_3aColResStatusDone) {
nfc_worker_listener_pass_col_res(
instance, message.data.data, message.data.data_bits);
} else {
instance->state = NfcStateReady;
nfc_event.type = NfcEventTypeRxEnd;
instance->callback(nfc_event, instance->context);
}
}
}
instance->state = NfcStateIdle;
instance->col_res_status = Iso14443_3aColResStatusIdle;
memset(&instance->col_res_data, 0, sizeof(instance->col_res_data));
bit_buffer_free(nfc_event.data.buffer);
return 0;
}
void nfc_start(Nfc* instance, NfcEventCallback callback, void* context) {
furi_check(instance);
furi_check(instance->worker_thread == NULL);
if(instance->mode == NfcModeListener) {
furi_check(listener_queue == NULL);
// Check that poller didn't start
furi_check(poller_queue == NULL);
} else {
furi_check(poller_queue == NULL);
// Check that poller is started after listener
furi_check(listener_queue);
}
instance->callback = callback;
instance->context = context;
if(instance->mode == NfcModeListener) {
listener_queue = furi_message_queue_alloc(4, sizeof(NfcMessage));
} else {
poller_queue = furi_message_queue_alloc(4, sizeof(NfcMessage));
}
instance->worker_thread = furi_thread_alloc();
furi_thread_set_context(instance->worker_thread, instance);
furi_thread_set_priority(instance->worker_thread, FuriThreadPriorityHigh);
furi_thread_set_stack_size(instance->worker_thread, 8 * 1024);
if(instance->mode == NfcModeListener) {
furi_thread_set_name(instance->worker_thread, "NfcWorkerListener");
furi_thread_set_callback(instance->worker_thread, nfc_worker_listener);
} else {
furi_thread_set_name(instance->worker_thread, "NfcWorkerPoller");
furi_thread_set_callback(instance->worker_thread, nfc_worker_poller);
}
furi_thread_start(instance->worker_thread);
}
void nfc_stop(Nfc* instance) {
furi_check(instance);
furi_check(instance->worker_thread);
if(instance->mode == NfcModeListener) {
NfcMessage message = {.type = NfcMessageTypeAbort};
furi_message_queue_put(listener_queue, &message, FuriWaitForever);
furi_thread_join(instance->worker_thread);
furi_message_queue_free(listener_queue);
listener_queue = NULL;
furi_thread_free(instance->worker_thread);
instance->worker_thread = NULL;
} else {
furi_thread_join(instance->worker_thread);
furi_message_queue_free(poller_queue);
poller_queue = NULL;
furi_thread_free(instance->worker_thread);
instance->worker_thread = NULL;
}
}
// Called from worker thread
NfcError nfc_listener_tx(Nfc* instance, const BitBuffer* tx_buffer) {
furi_check(instance);
furi_check(poller_queue);
furi_check(listener_queue);
furi_check(tx_buffer);
NfcMessage message = {};
message.type = NfcMessageTypeTx;
message.data.data_bits = bit_buffer_get_size(tx_buffer);
bit_buffer_write_bytes(tx_buffer, message.data.data, bit_buffer_get_size_bytes(tx_buffer));
furi_message_queue_put(poller_queue, &message, FuriWaitForever);
return NfcErrorNone;
}
NfcError nfc_iso14443a_listener_tx_custom_parity(Nfc* instance, const BitBuffer* tx_buffer) {
return nfc_listener_tx(instance, tx_buffer);
}
NfcError
nfc_poller_trx(Nfc* instance, const BitBuffer* tx_buffer, BitBuffer* rx_buffer, uint32_t fwt) {
furi_check(instance);
furi_check(tx_buffer);
furi_check(rx_buffer);
furi_check(poller_queue);
furi_check(listener_queue);
UNUSED(fwt);
NfcError error = NfcErrorNone;
NfcMessage message = {};
message.type = NfcMessageTypeTx;
message.data.data_bits = bit_buffer_get_size(tx_buffer);
bit_buffer_write_bytes(tx_buffer, message.data.data, bit_buffer_get_size_bytes(tx_buffer));
// Tx
furi_check(furi_message_queue_put(listener_queue, &message, FuriWaitForever) == FuriStatusOk);
// Rx
FuriStatus status = furi_message_queue_get(poller_queue, &message, 50);
if(status == FuriStatusErrorTimeout) {
error = NfcErrorTimeout;
} else if(message.type == NfcMessageTypeTx) {
bit_buffer_copy_bits(rx_buffer, message.data.data, message.data.data_bits);
nfc_test_print(
NfcTransportLogLevelWarning, "TAG", message.data.data, message.data.data_bits);
} else if(message.type == NfcMessageTypeTimeout) {
error = NfcErrorTimeout;
}
return error;
}
NfcError nfc_iso14443a_poller_trx_custom_parity(
Nfc* instance,
const BitBuffer* tx_buffer,
BitBuffer* rx_buffer,
uint32_t fwt) {
return nfc_poller_trx(instance, tx_buffer, rx_buffer, fwt);
}
// Technology specific API
NfcError nfc_iso14443a_poller_trx_short_frame(
Nfc* instance,
NfcIso14443aShortFrame frame,
BitBuffer* rx_buffer,
uint32_t fwt) {
UNUSED(frame);
BitBuffer* tx_buffer = bit_buffer_alloc(32);
bit_buffer_set_size(tx_buffer, 7);
bit_buffer_set_byte(tx_buffer, 0, 0x52);
NfcError error = nfc_poller_trx(instance, tx_buffer, rx_buffer, fwt);
bit_buffer_free(tx_buffer);
return error;
}
NfcError nfc_iso14443a_poller_trx_sdd_frame(
Nfc* instance,
const BitBuffer* tx_buffer,
BitBuffer* rx_buffer,
uint32_t fwt) {
return nfc_poller_trx(instance, tx_buffer, rx_buffer, fwt);
}
NfcError nfc_iso15693_listener_tx_sof(Nfc* instance) {
UNUSED(instance);
return NfcErrorNone;
}
NfcError nfc_felica_listener_set_sensf_res_data(
Nfc* instance,
const uint8_t* idm,
const uint8_t idm_len,
const uint8_t* pmm,
const uint8_t pmm_len) {
furi_assert(instance);
furi_assert(idm);
furi_assert(pmm);
furi_assert(idm_len == 8);
furi_assert(pmm_len == 8);
return NfcErrorNone;
}
#endif

View File

@@ -0,0 +1,66 @@
Filetype: Flipper NFC device
Version: 3
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic
Device type: NTAG213
# UID, ATQA and SAK are common for all formats
UID: 04 AC 6B 72 BA 6C 80
ATQA: 00 44
SAK: 00
# Mifare Ultralight specific data
Data format version: 1
Signature: 2D AE BC AF 84 B8 85 87 C2 FB FE 76 13 58 86 72 8E 1D 3C B5 DA 24 23 44 E5 63 4D 4C 82 FB D7 18
Mifare version: 00 04 04 02 01 00 0F 03
Counter 0: 0
Tearing 0: 00
Counter 1: 0
Tearing 1: 00
Counter 2: 0
Tearing 2: 00
Pages total: 45
Pages read: 45
Page 0: 04 AC 6B 4B
Page 1: 72 BA 6C 80
Page 2: 24 48 00 00
Page 3: E1 10 12 00
Page 4: 00 00 41 50
Page 5: 00 00 31 31
Page 6: 00 20 09 28
Page 7: 00 03 31 59
Page 8: 91 DF D3 00
Page 9: 00 00 00 00
Page 10: 00 00 00 00
Page 11: 00 00 00 00
Page 12: 00 00 00 00
Page 13: 00 00 00 00
Page 14: 00 00 00 00
Page 15: 00 00 00 00
Page 16: 00 00 00 00
Page 17: 00 00 00 00
Page 18: 00 00 00 00
Page 19: 00 00 00 00
Page 20: 00 00 00 00
Page 21: 00 00 00 00
Page 22: 00 00 00 00
Page 23: 00 00 00 00
Page 24: 00 00 00 00
Page 25: 00 00 00 00
Page 26: 00 00 00 00
Page 27: 00 00 00 00
Page 28: 00 00 00 00
Page 29: 00 00 00 00
Page 30: 00 00 00 00
Page 31: 00 00 00 00
Page 32: 00 00 00 00
Page 33: 00 00 00 00
Page 34: 00 00 00 00
Page 35: 00 00 00 00
Page 36: 00 00 00 00
Page 37: 00 00 00 00
Page 38: 00 00 00 00
Page 39: 00 00 00 00
Page 40: 00 00 00 BD
Page 41: 04 00 00 04
Page 42: C0 05 00 00
Page 43: 95 3F 52 FF
Page 44: 00 00 00 00
Failed authentication attempts: 0

View File

@@ -0,0 +1,156 @@
Filetype: Flipper NFC device
Version: 3
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic
Device type: NTAG215
# UID, ATQA and SAK are common for all formats
UID: 04 51 5C FA 6F 73 81
ATQA: 00 44
SAK: 00
# Mifare Ultralight specific data
Data format version: 1
Signature: 42 21 E4 6C 79 6A 81 5E EA 0D 93 6D 85 EE 4B 0C 2A 00 D5 77 F1 C5 67 F3 63 75 F8 EB 86 48 5E 6B
Mifare version: 00 04 04 02 01 00 11 03
Counter 0: 0
Tearing 0: 00
Counter 1: 0
Tearing 1: 00
Counter 2: 00
Tearing 2: 00
Pages total: 135
Pages read: 135
Page 0: 04 51 5C 81
Page 1: FA 6F 73 81
Page 2: 67 48 0F E0
Page 3: F1 10 FF EE
Page 4: A5 00 00 00
Page 5: 90 42 74 71
Page 6: FD 8F 50 61
Page 7: C5 65 1B 54
Page 8: EF 68 D0 8E
Page 9: 3D 35 DB 83
Page 10: D3 00 29 F6
Page 11: 42 2A A5 5C
Page 12: F1 69 0A FC
Page 13: B6 44 E9 6B
Page 14: 77 41 88 81
Page 15: 86 31 CB AD
Page 16: B1 DE F1 AB
Page 17: DF 96 C2 C5
Page 18: C1 26 99 96
Page 19: 85 AF 9F 0E
Page 20: 58 FE ED DC
Page 21: 0A 0A 00 01
Page 22: 03 C1 05 02
Page 23: 38 39 34 33
Page 24: 49 2D 4E 5C
Page 25: 5B 21 0F 44
Page 26: 3F 3F 76 69
Page 27: B4 72 D8 38
Page 28: A0 35 53 51
Page 29: 53 EB A6 7C
Page 30: 3E 8B 97 C0
Page 31: 00 7A 45 13
Page 32: 3A 8B D4 0F
Page 33: 31 C2 32 CC
Page 34: B4 24 A6 1B
Page 35: D3 F5 4A 1F
Page 36: CD 8F 1D 64
Page 37: 01 F4 DF C2
Page 38: 11 16 C2 C5
Page 39: 30 6D 49 AF
Page 40: 10 D4 7C 3C
Page 41: 6E 36 4E 08
Page 42: 95 76 BC 84
Page 43: 35 50 DD F0
Page 44: 21 0F EE D9
Page 45: 85 19 54 5F
Page 46: 3E A9 04 20
Page 47: 1B 97 E4 39
Page 48: FF 0A 45 F6
Page 49: 13 D4 3E DD
Page 50: 97 42 FC 67
Page 51: 6A AC 78 96
Page 52: D1 DA 25 23
Page 53: BF 4D B3 76
Page 54: F1 21 ED 15
Page 55: BD 55 11 C4
Page 56: 4E 8C E9 23
Page 57: C0 C4 6D 5A
Page 58: 58 25 FF 95
Page 59: 3C 2B 7A 57
Page 60: 66 BE A0 61
Page 61: BC FC 4A 31
Page 62: 4D AC EE 81
Page 63: BE 1A 86 04
Page 64: F6 D7 5E B3
Page 65: E7 A8 A2 86
Page 66: E9 40 AB 47
Page 67: C8 36 E4 3E
Page 68: A7 4D D3 EA
Page 69: 83 9A 64 F7
Page 70: 96 6B 5D BF
Page 71: 4E A2 A6 0F
Page 72: BD 3D BE 7C
Page 73: 22 0C 68 51
Page 74: 0F 9A B8 AE
Page 75: 38 2C C4 CD
Page 76: 53 D8 DD 18
Page 77: A6 5D 35 87
Page 78: C9 6D 99 59
Page 79: 61 9F B6 DC
Page 80: E6 22 0F 99
Page 81: 39 82 79 60
Page 82: 58 2E BE F7
Page 83: EF F7 95 62
Page 84: D5 06 1B 58
Page 85: 65 05 A9 08
Page 86: 75 ED 5D 90
Page 87: 5A E1 7E C9
Page 88: 35 D6 29 BB
Page 89: D0 67 6C F9
Page 90: A0 FF 0B 93
Page 91: 22 EA A3 3F
Page 92: E2 BD BD 58
Page 93: BE 93 D9 94
Page 94: 41 CC 7E 40
Page 95: E6 8C 5A 43
Page 96: 65 C1 24 94
Page 97: B9 97 61 13
Page 98: AD 74 FF 21
Page 99: 0F EC F6 03
Page 100: 89 5D 89 E5
Page 101: 8D 11 F8 D7
Page 102: 33 43 79 2E
Page 103: 23 E5 29 B5
Page 104: 53 98 13 FF
Page 105: E8 79 8B 33
Page 106: 45 6C 34 38
Page 107: 3B 69 28 D7
Page 108: D2 80 B0 2F
Page 109: D0 18 D5 DD
Page 110: 6C 2D D9 97
Page 111: CA 78 B4 A2
Page 112: B7 3E B8 79
Page 113: A2 BE 54 E4
Page 114: C8 28 0C 4A
Page 115: 81 E7 EC 1C
Page 116: 39 93 6F 70
Page 117: 75 77 5C FC
Page 118: 66 58 0C 1C
Page 119: 9F 70 2E C8
Page 120: 52 4A 52 BD
Page 121: 56 D5 6A 15
Page 122: 54 1B 33 90
Page 123: 44 11 C1 07
Page 124: 11 5C BA 80
Page 125: 10 14 20 9A
Page 126: 4A D8 E6 36
Page 127: DA B8 59 E5
Page 128: 5E 48 95 DA
Page 129: 96 6A 26 85
Page 130: 01 00 0F BD
Page 131: 00 00 00 04
Page 132: 5F 00 00 00
Page 133: 00 00 00 00
Page 134: 00 00 00 00
Failed authentication attempts: 0

View File

@@ -0,0 +1,252 @@
Filetype: Flipper NFC device
Version: 2
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic, Bank card
Device type: NTAG216
# UID, ATQA and SAK are common for all formats
UID: 04 D9 65 0A 32 5E 80
ATQA: 44 00
SAK: 00
# Mifare Ultralight specific data
Data format version: 1
Signature: 48 2A F2 01 0F F2 F5 A7 9A D5 79 6E CB 14 54 48 98 D1 57 5D 8A 23 A9 B0 E8 20 02 3E CD C8 16 DB
Mifare version: 00 04 04 02 01 00 13 03
Counter 0: 0
Tearing 0: 00
Counter 1: 0
Tearing 1: 00
Counter 2: 0
Tearing 2: 00
Pages total: 231
Pages read: 231
Page 0: 04 D9 65 30
Page 1: 0A 32 5E 80
Page 2: E6 48 00 00
Page 3: E1 10 6D 00
Page 4: 03 37 D1 01
Page 5: 33 55 04 6D
Page 6: 2E 79 6F 75
Page 7: 74 75 62 65
Page 8: 2E 63 6F 6D
Page 9: 2F 77 61 74
Page 10: 63 68 3F 76
Page 11: 3D 62 78 71
Page 12: 4C 73 72 6C
Page 13: 61 6B 4B 38
Page 14: 26 66 65 61
Page 15: 74 75 72 65
Page 16: 3D 79 6F 75
Page 17: 74 75 2E 62
Page 18: 65 FE 00 00
Page 19: 00 00 00 00
Page 20: 00 00 00 00
Page 21: 00 00 00 00
Page 22: 00 00 00 00
Page 23: 00 00 00 00
Page 24: 00 00 00 00
Page 25: 00 00 00 00
Page 26: 00 00 00 00
Page 27: 00 00 00 00
Page 28: 00 00 00 00
Page 29: 00 00 00 00
Page 30: 00 00 00 00
Page 31: 00 00 00 00
Page 32: 00 00 00 00
Page 33: 00 00 00 00
Page 34: 00 00 00 00
Page 35: 00 00 00 00
Page 36: 00 00 00 00
Page 37: 00 00 00 00
Page 38: 00 00 00 00
Page 39: 00 00 00 00
Page 40: 00 00 00 00
Page 41: 00 00 00 00
Page 42: 00 00 00 00
Page 43: 00 00 00 00
Page 44: 00 00 00 00
Page 45: 00 00 00 00
Page 46: 00 00 00 00
Page 47: 00 00 00 00
Page 48: 00 00 00 00
Page 49: 00 00 00 00
Page 50: 00 00 00 00
Page 51: 00 00 00 00
Page 52: 00 00 00 00
Page 53: 00 00 00 00
Page 54: 00 00 00 00
Page 55: 00 00 00 00
Page 56: 00 00 00 00
Page 57: 00 00 00 00
Page 58: 00 00 00 00
Page 59: 00 00 00 00
Page 60: 00 00 00 00
Page 61: 00 00 00 00
Page 62: 00 00 00 00
Page 63: 00 00 00 00
Page 64: 00 00 00 00
Page 65: 00 00 00 00
Page 66: 00 00 00 00
Page 67: 00 00 00 00
Page 68: 00 00 00 00
Page 69: 00 00 00 00
Page 70: 00 00 00 00
Page 71: 00 00 00 00
Page 72: 00 00 00 00
Page 73: 00 00 00 00
Page 74: 00 00 00 00
Page 75: 00 00 00 00
Page 76: 00 00 00 00
Page 77: 00 00 00 00
Page 78: 00 00 00 00
Page 79: 00 00 00 00
Page 80: 00 00 00 00
Page 81: 00 00 00 00
Page 82: 00 00 00 00
Page 83: 00 00 00 00
Page 84: 00 00 00 00
Page 85: 00 00 00 00
Page 86: 00 00 00 00
Page 87: 00 00 00 00
Page 88: 00 00 00 00
Page 89: 00 00 00 00
Page 90: 00 00 00 00
Page 91: 00 00 00 00
Page 92: 00 00 00 00
Page 93: 00 00 00 00
Page 94: 00 00 00 00
Page 95: 00 00 00 00
Page 96: 00 00 00 00
Page 97: 00 00 00 00
Page 98: 00 00 00 00
Page 99: 00 00 00 00
Page 100: 00 00 00 00
Page 101: 00 00 00 00
Page 102: 00 00 00 00
Page 103: 00 00 00 00
Page 104: 00 00 00 00
Page 105: 00 00 00 00
Page 106: 00 00 00 00
Page 107: 00 00 00 00
Page 108: 00 00 00 00
Page 109: 00 00 00 00
Page 110: 00 00 00 00
Page 111: 00 00 00 00
Page 112: 00 00 00 00
Page 113: 00 00 00 00
Page 114: 00 00 00 00
Page 115: 00 00 00 00
Page 116: 00 00 00 00
Page 117: 00 00 00 00
Page 118: 00 00 00 00
Page 119: 00 00 00 00
Page 120: 00 00 00 00
Page 121: 00 00 00 00
Page 122: 00 00 00 00
Page 123: 00 00 00 00
Page 124: 00 00 00 00
Page 125: 00 00 00 00
Page 126: 00 00 00 00
Page 127: 00 00 00 00
Page 128: 00 00 00 00
Page 129: 00 00 00 00
Page 130: 00 00 00 00
Page 131: 00 00 00 00
Page 132: 00 00 00 00
Page 133: 00 00 00 00
Page 134: 00 00 00 00
Page 135: 00 00 00 00
Page 136: 00 00 00 00
Page 137: 00 00 00 00
Page 138: 00 00 00 00
Page 139: 00 00 00 00
Page 140: 00 00 00 00
Page 141: 00 00 00 00
Page 142: 00 00 00 00
Page 143: 00 00 00 00
Page 144: 00 00 00 00
Page 145: 00 00 00 00
Page 146: 00 00 00 00
Page 147: 00 00 00 00
Page 148: 00 00 00 00
Page 149: 00 00 00 00
Page 150: 00 00 00 00
Page 151: 00 00 00 00
Page 152: 00 00 00 00
Page 153: 00 00 00 00
Page 154: 00 00 00 00
Page 155: 00 00 00 00
Page 156: 00 00 00 00
Page 157: 00 00 00 00
Page 158: 00 00 00 00
Page 159: 00 00 00 00
Page 160: 00 00 00 00
Page 161: 00 00 00 00
Page 162: 00 00 00 00
Page 163: 00 00 00 00
Page 164: 00 00 00 00
Page 165: 00 00 00 00
Page 166: 00 00 00 00
Page 167: 00 00 00 00
Page 168: 00 00 00 00
Page 169: 00 00 00 00
Page 170: 00 00 00 00
Page 171: 00 00 00 00
Page 172: 00 00 00 00
Page 173: 00 00 00 00
Page 174: 00 00 00 00
Page 175: 00 00 00 00
Page 176: 00 00 00 00
Page 177: 00 00 00 00
Page 178: 00 00 00 00
Page 179: 00 00 00 00
Page 180: 00 00 00 00
Page 181: 00 00 00 00
Page 182: 00 00 00 00
Page 183: 00 00 00 00
Page 184: 00 00 00 00
Page 185: 00 00 00 00
Page 186: 00 00 00 00
Page 187: 00 00 00 00
Page 188: 00 00 00 00
Page 189: 00 00 00 00
Page 190: 00 00 00 00
Page 191: 00 00 00 00
Page 192: 00 00 00 00
Page 193: 00 00 00 00
Page 194: 00 00 00 00
Page 195: 00 00 00 00
Page 196: 00 00 00 00
Page 197: 00 00 00 00
Page 198: 00 00 00 00
Page 199: 00 00 00 00
Page 200: 00 00 00 00
Page 201: 00 00 00 00
Page 202: 00 00 00 00
Page 203: 00 00 00 00
Page 204: 00 00 00 00
Page 205: 00 00 00 00
Page 206: 00 00 00 00
Page 207: 00 00 00 00
Page 208: 00 00 00 00
Page 209: 00 00 00 00
Page 210: 00 00 00 00
Page 211: 00 00 00 00
Page 212: 00 00 00 00
Page 213: 00 00 00 00
Page 214: 00 00 00 00
Page 215: 00 00 00 00
Page 216: 00 00 00 00
Page 217: 00 00 00 00
Page 218: 00 00 00 00
Page 219: 00 00 00 00
Page 220: 00 00 00 00
Page 221: 00 00 00 00
Page 222: 00 00 00 00
Page 223: 00 00 00 00
Page 224: 00 00 00 00
Page 225: 00 00 00 00
Page 226: 00 00 00 BD
Page 227: 04 00 00 FF
Page 228: 00 05 00 00
Page 229: 00 00 00 00
Page 230: 00 00 00 00
Failed authentication attempts: 0

View File

@@ -0,0 +1,41 @@
Filetype: Flipper NFC device
Version: 3
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic
Device type: Mifare Ultralight 11
# UID, ATQA and SAK are common for all formats
UID: 04 15 74 F2 B0 5E 81
ATQA: 00 44
SAK: 00
# Mifare Ultralight specific data
Data format version: 1
Signature: A4 37 7D E5 8C 2F 88 D8 04 60 41 6E 3A C8 CD DB 19 94 26 12 C5 D0 12 B0 EB 88 05 72 89 F2 A5 61
Mifare version: 00 04 03 01 01 00 0B 03
Counter 0: 0
Tearing 0: BD
Counter 1: 0
Tearing 1: BD
Counter 2: 0
Tearing 2: BD
Pages total: 20
Pages read: 20
Page 0: 04 15 74 ED
Page 1: F2 B0 5E 81
Page 2: 9D 48 F8 FF
Page 3: C1 31 3E 3F
Page 4: B0 00 F0 02
Page 5: 2F B3 45 A0
Page 6: D4 9C 02 F2
Page 7: 4A B1 ED FF
Page 8: C8 01 00 02
Page 9: 4F B3 46 70
Page 10: EE F6 60 B0
Page 11: B6 C6 12 1B
Page 12: B9 1E 49 C3
Page 13: 49 DF 7A 57
Page 14: 08 52 2A 11
Page 15: 28 0A 28 59
Page 16: 00 00 00 FF
Page 17: 00 05 00 00
Page 18: FF FF FF FF
Page 19: 00 00 00 00
Failed authentication attempts: 0

View File

@@ -0,0 +1,62 @@
Filetype: Flipper NFC device
Version: 3
# Nfc device type can be UID, Mifare Ultralight, Mifare Classic
Device type: Mifare Ultralight 21
# UID, ATQA and SAK are common for all formats
UID: 34 BF AB B1 AE 73 D6
ATQA: 00 44
SAK: 00
# Mifare Ultralight specific data
Data format version: 1
Signature: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Mifare version: 00 34 21 01 01 00 0E 03
Counter 0: 0
Tearing 0: 00
Counter 1: 0
Tearing 1: 00
Counter 2: 0
Tearing 2: 00
Pages total: 41
Pages read: 41
Page 0: 34 BF AB A8
Page 1: B1 AE 73 D6
Page 2: BA 00 70 08
Page 3: FF FF FF FC
Page 4: 45 D9 BB A0
Page 5: 5D 9D FA 00
Page 6: 80 70 38 40
Page 7: 12 30 02 00
Page 8: 00 00 00 00
Page 9: 00 00 00 00
Page 10: AC A1 0D E4
Page 11: 80 70 38 40
Page 12: 00 57 A0 01
Page 13: 00 08 C1 40
Page 14: 00 00 00 00
Page 15: AC A1 0D E4
Page 16: 00 00 00 00
Page 17: 00 00 00 00
Page 18: 00 00 00 00
Page 19: 00 00 00 00
Page 20: 00 00 00 00
Page 21: 00 00 00 00
Page 22: 00 00 00 00
Page 23: 00 00 00 00
Page 24: 00 00 00 00
Page 25: 00 00 00 00
Page 26: 00 00 00 00
Page 27: 00 00 00 00
Page 28: 00 00 00 00
Page 29: 00 00 00 00
Page 30: 00 00 00 00
Page 31: 00 00 00 00
Page 32: 00 00 00 00
Page 33: 00 00 00 00
Page 34: 00 00 00 00
Page 35: 00 00 00 00
Page 36: 00 00 00 BD
Page 37: 00 00 00 FF
Page 38: 00 05 00 00
Page 39: FF FF FF FF
Page 40: 00 00 00 00
Failed authentication attempts: 0

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