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

Compare commits

..

273 Commits

Author SHA1 Message Date
MX
5e30b14d90 update changelog 2022-09-26 02:12:11 +03:00
MX
c07e3a34dd Merge pull request #75 from derskythe/subbrute-deep-refactor
SubBrute deep refactor
2022-09-26 02:08:45 +03:00
MX
be7e11e60f Merge branch 'dev' into subbrute-deep-refactor 2022-09-26 02:06:50 +03:00
MX
e96e414561 Merge branch 'fz-dev' into dev 2022-09-26 02:06:09 +03:00
derskythe
0c99cb52ec free transmitter during subbrute_worker_init_manual_transmit 2022-09-26 02:45:09 +04:00
derskythe
ad9e1ce4df set furi_hal_subghz_set_path to FuriHalSubGhzPathIsolate on each manual iteration 2022-09-26 02:42:39 +04:00
derskythe
22dc5190d1 remove furi_hal_power_suppress_charge_enter/exit from other places 2022-09-26 02:39:17 +04:00
derskythe
f2fd97d9c5 fix memory leaks 2022-09-26 02:36:38 +04:00
derskythe
08084d5763 fix first send signal equals last transferred or 0x00 2022-09-26 02:03:36 +04:00
derskythe
add1ad6949 fix manual select key on max and min values 2022-09-26 01:48:51 +04:00
DerSkythe
87654e60b8 Merge remote-tracking branch 'origin/subbrute-deep-refactor' into subbrute-deep-refactor 2022-09-26 01:10:21 +04:00
DerSkythe
6f92cd645e fixed frame width to scroll 2022-09-26 01:09:00 +04:00
DerSkythe
23f6ea2e05 refactor worker moved it to SubBruteState 2022-09-26 01:07:16 +04:00
David Coles
a6b98ccbbe Preliminary Rust support (#1781)
* Add support for R_ARM_THM_MOVW_ABS_NC/THM_MOVT_ABS

These are sometimes emitted by the Rust LLVM compiler.

Ref: https://github.com/ARM-software/abi-aa/blob/main/aaelf32/aaelf32.rst#56relocation

* Discard LLVM bitcode from extension applications

LLVM-based compilers may include uncompressed bitcode in object files
to help with link-time optimization. However this can bloat binary sizes
from KB to MB.

* Expose alligned_malloc/free functions to applications

This is required to implement a global allocator in Rust.
2022-09-26 07:06:46 +10:00
DerSkythe
ba5f590dab switched to manual transmit 2022-09-26 00:07:14 +04:00
Der Skythe
f1048733d2 Merge branch 'Eng1n33r:dev' into subbrute-deep-refactor 2022-09-25 23:16:27 +04:00
DerSkythe
ea7f68fcab fixed load existing dump 2022-09-25 23:12:31 +04:00
MX
8013aacd94 oops 2022-09-25 21:03:32 +03:00
MX
be8f409098 update changelog 2022-09-25 21:01:12 +03:00
MX
97e6fe8f4e update universal remote assets
by @amec0e
2022-09-25 20:39:22 +03:00
DerSkythe
54757428e6 fix bug with return to main menu when choice file 2022-09-25 21:31:33 +04:00
MX
bd39d81324 Merge branch 'fz-dev' into dev 2022-09-25 19:55:35 +03:00
Chris van Marle
2a2078d9b5 Text input overwrite max size template (#1687) 2022-09-26 01:17:09 +09:00
MX
01ca588488 Merge branch 'fz-dev' into dev 2022-09-25 18:27:58 +03:00
Kowalski Dragon
f86eada292 Remove unused headers (#1751) 2022-09-25 23:39:06 +09:00
Skorpionm
bc777b2eff SubGhz: fix config menu (#1748)
* SubGhz: fix config menu
* SubGhz: fix gui Magellen protocol
* SubGhz: fix gui Transmit SubGhz
* SubGhz: keeloq, new gen manufacture code
* SubGhz: Update keeloq_mfcodes

Co-authored-by: あく <alleteam@gmail.com>
2022-09-25 23:34:52 +09:00
DerSkythe
6f91fa42f0 Added additional graphic decorations 2022-09-25 18:26:10 +04:00
Sergey Gavrilov
e6d22ed147 ELF-Loader: C++ plugin support, loader overhaul. (#1744)
* fap-loader: load all code and data sections
* fap-loader: relocate all code and data sections
* fap-loader: remove old elf loader
* fap-loader: new jmp call relocation
* openocd: resume on detach
* fap-loader: trampoline for big jumps
* fap-loader: rename cache
* fap-loader: init_array support
* fap-loader: untangled flipper_application into separate entities
* fap-loader: fix debug
* fap-loader: optimize section container
* fap-loader: optimize key for section container
* fap-loader: disable debug log
* documentation
* F7: bump api symbols version
* Lib: cleanup elf_file.c

Co-authored-by: あく <alleteam@gmail.com>
2022-09-25 23:11:29 +09:00
MX
436f70b69b Merge branch 'fz-dev' into dev 2022-09-25 16:46:23 +03:00
DerSkythe
ec9ce0cad7 Working prototype, but not yet tested on a real device 2022-09-25 17:05:52 +04:00
Jauder Ho
7e2008095e Bump protobuf from 3.20.1 to 3.20.2 in /scripts (#1774) 2022-09-25 20:56:53 +09:00
Sergey Gavrilov
92e440c77d Core: simplify record container (#1776)
Co-authored-by: あく <alleteam@gmail.com>
2022-09-25 20:48:57 +09:00
DerSkythe
666821e9ce SubBruteMainView is ready 2022-09-25 00:46:43 +04:00
MX
1bca477a43 update install instructions
thanks to @Svaarich !
2022-09-24 22:20:13 +03:00
MX
41571ce9ad SubGHz RAW - datetime in default names (+ format changed)
OFW PR 1772 by Skorpionm / printf text format changed by me
2022-09-24 22:15:06 +03:00
MX
038d098c85 Merge branch 'fz-dev' into dev 2022-09-24 21:56:17 +03:00
DerSkythe
b03cc8ddc3 trying to fix load failure 2022-09-24 22:30:08 +04:00
DerSkythe
c8e3d9b040 fix repeat call of view_dispatcher_alloc 2022-09-24 22:15:09 +04:00
DerSkythe
aeb02500de Deep refactor of SubBrute was made, but it doesn't start. Debug device needed 2022-09-24 21:47:21 +04:00
ghettorce
eadd7801af fbt: exclude user site-packages directory from sys.path (#1778)
* fbt: exclude user site-packages directory from sys.path
* fbt: python path fixes for *nix
* fbt: fixed cli target on Windows

Co-authored-by: hedger <hedger@users.noreply.github.com>
2022-09-24 15:30:19 +04:00
Yoanndp
6d2b0a3b6c Update ReadMe.md (#1766) 2022-09-24 19:36:11 +09:00
MX
32a7642761 remove duplicate function, update changelog 2022-09-22 21:51:47 +03:00
MX
e8bb45496d Merge branch 'fz-dev' into dev 2022-09-22 21:45:26 +03:00
Andrea Sacchi
3846852f2b NFC Fix Mifare Classic (#1769)
* Fix Mifare Classic key str to int conversion: Wrong cast lead to unexpected behavior converting key from str to int.
* Nfc: fix type cast in mf_classic_dict and add basic unit tests

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2022-09-23 02:35:28 +09:00
Georgii Surkov
17d01f5c29 [FL-2848] Universal Remote fix (#1770)
* Reset BruteForce on exit from Universal Remote
* Reset current button in ButtonPanel
2022-09-23 01:13:00 +09:00
MX
e6bcba6959 update changelog, minor fixes 2022-09-22 18:23:32 +03:00
MX
e13edc2f70 keeeloq update 2022-09-22 18:01:54 +03:00
MX
de6ff1d9c9 update changelog 2022-09-21 23:07:39 +03:00
MX
bea15134ba fix mousejacker gui 2022-09-21 22:29:42 +03:00
MX
28a55bf576 Merge branch 'fz-dev' into dev 2022-09-21 22:02:02 +03:00
gornekich
e70121e20f [FL-2843] NFC fixes (#1764)
* nfc: fix empty desfire card message
* nfc: limit total user keys to list
* nfc: increase popup timeout

Co-authored-by: あく <alleteam@gmail.com>
2022-09-22 00:53:25 +09:00
hedger
432ff41d6a [FL-2844] desktop: removing slideshow file when leaving slideshow view (#1762)
* [FL-2844] desktop: removing slideshow file when leaving slideshow view; vscode: fix for BM port fetcher; fap api: more symbols for LL
* desktop: actually removing slideshow file
* desktop: moved slideshow removal to scene code; fbt: better blackmagic device handling
* fbt: disabled pagination for gdb
* vscode: restored blackmagic command line
* fbt: fixed debug_other target; added debug_other_blackmagic
* furi: added furi_thread_suspend API group; fixed null-pointer deref for thread name; cleaned up RTOS config
* furi: changed thread state check to eTaskGetState
2022-09-21 23:42:59 +09:00
MX
87393a086c fix rfid fuzzer crashes, some new random names 2022-09-21 08:43:07 +03:00
MX
6000d47a0f allow saving only for protocols without encoder 2022-09-21 07:12:09 +03:00
MX
d986ef4104 fix nice flor s crash, fix debug pack for debug builds 2022-09-21 06:52:34 +03:00
MX
f85dc1675d update changelog, rm unused var from clock 2022-09-21 01:00:56 +03:00
MX
7c7ac07e6a Merge pull request #74 from mvanzanten/adding-support-for-hidprox
adding support for HIDProx, updating the UI to switch between protocols
2022-09-20 23:25:45 +03:00
MX
ca02826cfd set time between cards to 6, run fbt format 2022-09-20 23:24:34 +03:00
MX
96ad7f3cef fix nfc list crash, fix magellen gui, fix transmitter gui 2022-09-20 23:13:15 +03:00
Matt Van Zanten
c213ff596a adding support for HIDProx, updating the UI to switch between protocols 2022-09-20 11:45:16 -07:00
MX
b2589698ff Merge branch 'fz-dev' into dev 2022-09-20 21:39:22 +03:00
Max Lapan
3360f818a1 Subghz: Adding checks for get_upload functions (#1704)
* Adding checks for get_upload functions
  Almost in every protocol, function which generates upload might fail and return false.
  But we don't check this result, which might end up sending random memory contents to the air.
* Format sources and fix crash on ivalid bit count in chamberlain

Co-authored-by: あく <alleteam@gmail.com>
2022-09-20 14:29:10 +09:00
Georgii Surkov
066da4080b [FL-2792] AC Universal Remote (#1725)
* Add Universal AC Remote scene
* Implement AC gui
* Basic working implemetation
* Another Universal AC Remote implementation
* Update icons
* Adjust button positions
* Revert old ButtonPanel class
* Update resource manifest
* [FL-2627] Flipper applications: SDK, build and debug system (#1387)
* Update api definitions
* Add UniversalRemotes documentation
* Use more Flipper-friendly signal names

Co-authored-by: SG <who.just.the.doctor@gmail.com>
2022-09-20 14:09:37 +09:00
MX
b2c118f267 fix null pointer dereference in archive -> Info
and fix long path display
2022-09-20 05:52:13 +03:00
MX
a8db46124e update docs & changelog 2022-09-20 04:09:14 +03:00
MX
672e27f258 fix icon name 2022-09-20 03:23:22 +03:00
MX
e762a68265 Merge pull request #72 from RogueMaster/ApplicationsFromArchive
Applications from archive
2022-09-20 03:20:25 +03:00
MX
8659becc9d fix tab name and add new icon
icon by @Svaarich
2022-09-20 03:19:31 +03:00
RogueMaster
82e1e8af6a Enable fap support on Archive app 2022-09-19 18:47:22 -04:00
RogueMaster
a71d05a114 Update archive_browser.h 2022-09-19 18:39:38 -04:00
MX
8d68bf62a5 update changelog 2022-09-19 23:34:31 +03:00
MX
2c85adb270 remove unused icon, update api symbols and unirf 2022-09-19 21:21:31 +03:00
MX
e2123c55bb Merge branch 'fz-dev' into dev 2022-09-19 21:15:04 +03:00
David
f5ff6438d1 NFC user dict list, delete, and de-duplication. (#1533)
* Add MFC user keys list
* Leakey submenu fix
* Set next target for Save/Delete success scenes
* Delete individual user keys
* Update count of total keys
* Fix memory leak
* Check for duplicate keys
* Remove a submodule that I never added?
* Swap and position icons
* Revamp according to design doc
* Rename icons to include size and replace keychain icon with smaller variant
* Fix typos
* Final fixes
* Fufill requested changes
* Cleanup comments
* Merge dev after SD app loading
* Fixing icon names
* Revert merge mistakes and API version
* Scene switching adjustments
* F7: add/change/remove some nfc icons in api_symbols.csv

Co-authored-by: あく <alleteam@gmail.com>
2022-09-20 01:43:53 +09:00
Astra
9f3b80e606 Add new card parsers (#1503)
* Add the "Two cities" parser
* Add plantain and plantain4k parsers
* Add new parsers to the supported list
* United card PoC
* Fix nfc device not sleeping
* Completely read the 4K troika variants
* Correct naming
* Update to reflect upstream changes
* Add support for MfUl info
* Fix parsers
* Card type detection fixes
* Remove debug info
* Fixes for the verification of cards
* nfc: fix verification for supported cards
* nfc: remove unused vars
* Improve card reading reliability and fix plantain
* plantain: change log level

Co-authored-by: gornekich <n.gorbadey@gmail.com>
2022-09-20 01:05:04 +09:00
MX
111656d2c1 Merge branch 'fz-dev' into dev 2022-09-19 18:50:20 +03:00
MX
2045a29d3f lower frame rate in custom anim to save a bit of battery charge 2022-09-19 18:40:50 +03:00
MX
26e46f9267 Merge pull request #71 from TasyDevilsky/patch-1
Update setting_user
2022-09-19 17:47:12 +03:00
Max Lapan
d003db0404 SubGhz: Oregon v2.1 decoder (#1678)
* Oregon v2.1 decoder
* Refactor FSM to switch
* Refactor headers
* Format strings
* Unit tests of oregon2
* Cleanups
* Add oregon2 raw data to random_test_raw.sub
* Adjust count of packets detected on random test
* Format sources

Co-authored-by: あく <alleteam@gmail.com>
2022-09-19 23:24:24 +09:00
MX
5a31e35dc2 Merge branch 'fz-dev' into dev 2022-09-19 17:21:31 +03:00
Patrick Cunningham
c7cd5721ed Picopass: detect and show SE / SIO (#1701)
* detect and show SE / SIO
* fix fault
* remove bad read check

Co-authored-by: あく <alleteam@gmail.com>
2022-09-19 22:37:12 +09:00
Nikolay Minaylov
fb476c29e6 RFID: fix read info screen (#1723)
* RFID: fix read info screen
* Fix line break for long data string
* Protocol data redecoding before write

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-19 22:21:40 +09:00
Nikolay Minaylov
d80329b323 [FL-2815, FL-2821] Dummy mode (#1739)
* Dummy mode implementation
* dumb -> dummy
* F7: Add new api_symbols: game icon
* Starting snake game from dummy mode

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2022-09-19 22:03:42 +09:00
Astra
3d3c422751 [FL-2674] Show error popup when NFC chip is not init/disconnected (#1722)
* Show error popup when NFC chip is not init/disconnected
* Move to dialogs for the error message
* Fix a memory leak and wrap the hal check
* F7: update api_symbols.csv, add furi_hal_nfc_is_init

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-19 21:46:56 +09:00
hedger
ed385594a3 faploader: more subsystem headers in API table (#1742)
* faploader: more subsystem headers in API table; not counting header entries for SDK version change
* subghz: removed dead function
* Adjusted API version
* hal: removed furi_hal_power_get_system_voltage
* lib: mbedtls: additional flags for .fap linkage
* fbt: rebuilding assets when git commit id changes
* fbt: removed assets rebuild on git commit id change; added explicit dependency for SDK source on compiled assets parts; removed unneeded sdk regeneration runs
* fbt: changed stock plugins to EXTERNAL apps; restored building app as a PLUGIN as a part of main fw as well as a .fap; readme fixes
* fbt: restored certain apps to PLUGIN type
* fbt: app manifests: renamed version->fap_version, added extra fields
* fbt: fixed version processing after rename

Co-authored-by: あく <alleteam@gmail.com>
2022-09-19 21:39:00 +09:00
Astra
787df44c79 [FL-2800] Fix Mifare Classic 4K reading of the last 8 sectors (#1712)
* Fix FURI_BIT_SET

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: SG <who.just.the.doctor@gmail.com>
2022-09-19 21:30:18 +09:00
TasmanDevil
f0eedc3243 Update setting_user
Adding the 868.95 frequency for the Sommer device, the `Sommer(fsk476)` protocol was recently added but Flipper could not read it until now.
2022-09-19 08:59:13 +02:00
MX
365d055dc5 update changelog again 2022-09-19 05:55:54 +03:00
MX
650ba8a91f Update HowToInstall.md 2022-09-19 05:53:23 +03:00
MX
654d6dc6ec update changelog 2022-09-19 05:51:10 +03:00
MX
18b70ac6b5 update universal ir assets
by @amec0e
2022-09-19 05:45:58 +03:00
hedger
51369d6219 fbt: removed assets rebuild on git commit id change; added explicit dependency for SDK source on compiled assets parts; removed unneeded sdk regeneration runs 2022-09-19 05:27:21 +03:00
MX
181533df1b fixed bug with power suppress in unirf, removed icon from api 2022-09-19 05:22:50 +03:00
MX
d85731636f move spectrum analyzer into plugins, fix debug builds 2022-09-19 04:59:28 +03:00
MX
6f66f87fab add new frequency to user config 2022-09-18 21:10:08 +03:00
MX
85d4dedb15 update changelog 2022-09-18 05:18:17 +03:00
MX
0a4cddb84c update assets 2022-09-18 01:53:50 +03:00
MX
4e17230290 fix subghz read issues 2022-09-18 01:48:10 +03:00
MX
aa99ac53c7 delete 2022-09-17 20:34:46 +03:00
MX
875f70196b drop setting save feature 2022-09-17 20:33:26 +03:00
MX
1e71d212fe Trying to fix strange bug 2022-09-17 17:53:44 +03:00
MX
269a6ce562 update how to install with animated instructions
sorry for quality, will be fixed later
2022-09-17 03:19:38 +03:00
MX
cd2014c51b Update ReadMe.md 2022-09-17 02:23:33 +03:00
MX
08f80ab645 update changelog 2022-09-17 01:40:35 +03:00
MX
14bd8f2c49 ofw pr: dummy mode
OFW PR 1739 by nminaylov
2022-09-17 00:43:21 +03:00
MX
8ce5fae626 fix config 2022-09-17 00:19:43 +03:00
MX
087bf41392 commented back 2022-09-16 22:47:52 +03:00
MX
d390381d5a Merge branch 'fix-subghz-last-used-settings' into dev 2022-09-16 22:45:43 +03:00
Der Skythe
c3e31663ef Minor changes 2022-09-16 23:08:45 +04:00
MX
c28e4ea733 Merge pull request #69 from h4sh5/random_uid_reader_detect
random uid for detect reader each time NFC app exists and comes back
2022-09-16 22:01:08 +03:00
MX
96a3da24c9 Merge pull request #70 from derskythe/fix-subghz-last-used-settings
Fix SubGHz last used settings
2022-09-16 21:58:24 +03:00
MX
9d4b318357 Merge branch 'dev' into fix-subghz-last-used-settings 2022-09-16 21:55:52 +03:00
MX
ef5d0aa483 fix null pointer dereference 2022-09-16 21:48:03 +03:00
MX
66487abaee disable some logs 2022-09-16 21:37:01 +03:00
MX
d2bb1ef4d3 fix receiver filter set-up 2022-09-16 21:30:53 +03:00
hedger
0e15090629 fbt: rebuilding assets when git commit id changes 2022-09-16 21:16:32 +03:00
MX
1413d7c937 secret
special secret animation by @Svaarich
2022-09-16 21:14:00 +03:00
Der Skythe
d97a3ef161 fix: change SUBGHZ_HISTORY_MAX to 50 according off-firm 2022-09-16 21:35:26 +04:00
MX
870dfd188c ofw pr: picopass se identify
OFW PR 1701 by pcunning
2022-09-16 18:42:12 +03:00
MX
71a6844a5f drop dfu's from releases
qflipper and android app is not allowing to use new update method with custom firmware, so we have 3 methods only
2022-09-16 18:14:28 +03:00
Der Skythe
d67d5da034 fix: SubGhz Read reset setting ReadRAW after using scene ReadRAW 2022-09-16 18:38:08 +04:00
MX
c894948d4f faploader api extension and lib fixes
OFW PR 1742 by hedger

keeping api version the same to allow compatibility 
it might be changed in next releases if api changes are destructive
2022-09-16 17:30:07 +03:00
MX
e25148ce72 update changelog 2022-09-16 03:12:07 +03:00
MX
07301935b5 update universal ac asset
by @amec0e
2022-09-16 02:56:58 +03:00
MX
3a1705bcf9 Merge pull request #68 from derskythe/fixed-archive-app
Fixed archive app
2022-09-16 02:53:15 +03:00
MX
df87b04fa9 disable debug logs to make gui faster 2022-09-16 02:52:43 +03:00
MX
75f5efce03 Merge branch 'dev' into fixed-archive-app 2022-09-16 02:50:24 +03:00
MX
00585fa16a add free back 2022-09-16 02:32:03 +03:00
Der Skythe
30aaae33be Revert "Fix bugs with new model"
This reverts commit 8915c0c66c.
2022-09-16 02:30:42 +03:00
MX
c0e7c2a929 remove merge bug 2022-09-16 02:27:08 +03:00
Der Skythe
286b4876ce Fix bugs with new model 2022-09-16 03:22:53 +04:00
Der Skythe
10c2ae5a05 Merge branch 'fixed-archive-app' of https://github.com/derskythe/flipperzero-firmware-wPlugins into fixed-archive-app 2022-09-16 03:20:45 +04:00
Der Skythe
8915c0c66c Fix bugs with new model 2022-09-16 03:16:46 +04:00
MX
ec7676182a fix null pointer dereference 2022-09-16 02:15:58 +03:00
MX
e23dbb9f99 add new start screen for doom
by @Svaarich
2022-09-16 01:54:17 +03:00
MX
19d201085b reduce max subghz history items to resolve memory issues 2022-09-16 01:23:29 +03:00
Der Skythe
17a4e03656 Fix bugs with new model 2022-09-16 02:21:10 +04:00
Der Skythe
1fd9240481 Add Info to all files, fix file info elements position 2022-09-15 23:33:43 +04:00
MX
fc9996377d fix subghz read mode doesn’t work at all 2022-09-15 22:10:18 +03:00
Der Skythe
7f4b586b13 Init archive app with Rename, normal context menu and file info 2022-09-15 22:00:51 +04:00
MX
72de4af6db change it back temporarily 2022-09-15 19:59:00 +03:00
MX
5bbb13c5c9 Merge branch 'fz-dev' into dev 2022-09-15 19:58:11 +03:00
MX
3efb093125 change app type and category for music players 2022-09-15 19:37:06 +03:00
Astra
60bce7b8d8 [FL-2780] NFC Notifications fix (#1731)
* Show error popup when NFC chip is not init/disconnected
* Move to dialogs for the error message
* NFC notifications fixed to match the intended design
* Revert "Move to dialogs for the error message"
* Revert "Show error popup when NFC chip is not init/disconnected"

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-16 00:49:10 +09:00
Skorpionm
8b05bd1106 [FL-2814] SubGhz: fix display information in the file if the frequency is not available for transmission in the given region (#1724) 2022-09-16 00:42:44 +09:00
MX
668b7857b4 Merge branch 'fz-dev' into dev 2022-09-15 18:28:57 +03:00
MX
8b3b5fa802 fix nrfsniff log spam, add new icons
icons by @Svaarich
2022-09-15 18:27:27 +03:00
Nikolay Minaylov
a6052be0f1 Charging icon update fix (#1733)
* Power: refresh battery indicator on charger plug/unplug

Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-15 23:13:48 +09:00
hedger
007a3d295e [FL-2819] updater: fixed failing backups on /int with empty files in it #1735
Co-authored-by: あく <alleteam@gmail.com>
2022-09-15 22:55:55 +09:00
hedger
28beff1ab6 Fbt: fixed gdb-py path for MacOS, docs: spelling fixes, codeowners (#1736)
* fbt: fixed gdb-py path for MacOS, docs: spelling fixes
* Gtihub: update codeowners

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2022-09-15 22:40:26 +09:00
MX
9c95562fad enable uart echo and usb mouse apps 2022-09-15 08:17:58 +03:00
MX
83e036da14 update readme & changelog 2022-09-15 07:28:26 +03:00
MX
8fd4225939 fix detect raw bug, fix came atomo 2022-09-15 06:45:19 +03:00
MX
a3234995db make zombiez input faster 2022-09-15 05:17:19 +03:00
MX
98312860a6 resolve merge conflict 2022-09-15 05:09:27 +03:00
MX
9dbcd43e66 Merge branch 'fz-dev' into dev 2022-09-15 05:08:53 +03:00
MX
ffce0aeec9 NFC Notifications fix
OFW PR 1731 by Astrrra
2022-09-15 04:54:18 +03:00
MX
361a239d3e add some games, make DOOM somewhat playable 2022-09-15 04:42:17 +03:00
MX
51ffdcd3bc update api, add icons, fix picopass again 2022-09-15 01:14:55 +03:00
hedger
d47fdce337 updater: fixed failing backups on /int with empty files in it 2022-09-14 21:04:46 +03:00
MX
3fbaad1488 Merge branch 'fz-dev' into dev 2022-09-14 21:04:04 +03:00
SG
b9a766d909 [FL-2627] Flipper applications: SDK, build and debug system (#1387)
* Added support for running applications from SD card (FAPs - Flipper Application Packages)
* Added plugin_dist target for fbt to build FAPs
* All apps of type FlipperAppType.EXTERNAL and FlipperAppType.PLUGIN are built as FAPs by default
* Updated VSCode configuration for new fbt features - re-deploy stock configuration to use them
* Added debugging support for FAPs with fbt debug & VSCode
* Added public firmware API with automated versioning

Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2022-09-15 02:21:03 +09:00
MX
1b8684eb53 drop games menu, preparing for app loader 2022-09-14 19:32:41 +03:00
MX
7a2b5be137 new clock
timer by GMMan and settings by kowalski7cc
2022-09-14 19:25:31 +03:00
SG
873e1f114b [FL-2627] Flipper applications: SDK, build and debug system (#1387) 2022-09-15 01:11:38 +09:00
MX
abce958db9 Merge pull request #66 from TQMatvey/dev
Arkanoid: rand_range, remove temp number
2022-09-14 17:36:07 +03:00
MX
d4c44d7500 Merge pull request #67 from derskythe/eng1n33r-save-subghz
Save last used SubGHZ config settings
2022-09-14 17:35:54 +03:00
Der Skythe
444035d06a Add missing settings 2022-09-14 18:12:27 +04:00
Der Skythe
c8c75d5f14 Merge remote-tracking branch 'upstream/dev' into eng1n33r-save-subghz 2022-09-14 17:57:00 +04:00
Der Skythe
1fda069579 Save Read and ReadRAW Config settings in subghz/assets/last_used.txt file 2022-09-14 17:41:44 +04:00
MX
fccb99d847 Power: refresh battery indicator on charger plug/unplug
OFW PR 1733 by nminaylov
2022-09-14 16:29:17 +03:00
MX
4a61a28f57 Protocol data redecoding before write
OFW PR 1723 by nminaylov
2022-09-14 16:18:23 +03:00
MX
b00117e02c Detect RAW feature
by perspecdev
2022-09-14 16:01:30 +03:00
Haoxi Tan
6b91c660d4 random uid each time NFC app exists and comes back 2022-09-14 20:10:49 +10:00
TQMatvey
9c3406895c Arkanoid: rand_range, remote temp number 2022-09-14 12:46:40 +07:00
MX
ee6b59ab9d update universal ac asset
by @Amec0e
2022-09-14 02:01:58 +03:00
MX
bd594c7134 update mf classic dict and ir universal remote assets 2022-09-13 16:53:48 +03:00
MX
4417a37a2e update changelog 2022-09-12 02:09:02 +03:00
MX
1b6794ce7c update manifest 2022-09-12 02:06:44 +03:00
MX
c96bfba95a update slideshow images
author - @Svaarich
2022-09-12 01:18:25 +03:00
MX
fe8ad22132 Merge pull request #65 from web-mancha/dev
Added Brazilian Portuguese keyboard layout
2022-09-12 01:09:19 +03:00
Mancha
bcb5af1813 Added Brazilian Portuguese keyboard layout
Created the BadUSB keyboard layout for the Brazilian Portuguese ABNT-2 keyboard layout configuration
2022-09-11 14:40:00 -03:00
MX
77be3db143 update changelog 2022-09-11 15:59:42 +03:00
MX
7a2a1d6007 Merge remote-tracking branch 'origin/dev' into dev 2022-09-11 15:03:54 +03:00
MX
1c00709ea6 fix custom name serial, bt mac, fix subghz starline 2022-09-11 15:03:44 +03:00
MX
9ad96f782e Merge pull request #64 from TQMatvey/dev
arkanoid: dont allow user to jump after start
2022-09-11 14:06:24 +03:00
TQMatvey
67955b6ab8 arkanoid: dont allow user to jump after start 2022-09-11 15:15:03 +07:00
MX
37ce143527 update changelog 2022-09-11 04:26:30 +03:00
MX
771e948cfc update message 2022-09-11 03:46:55 +03:00
MX
9dc337a02c Merge branch 'mpu' into dev 2022-09-11 03:44:11 +03:00
MX
3ea01f8413 fix broken save 2022-09-11 03:29:21 +03:00
MX
5623842892 Merge branch 'dev' into mpu 2022-09-11 02:10:46 +03:00
MX
a8d37879cb Merge pull request #63 from enovella/subghz-came12bits-on-307.80mhz
Include CAME 12 bits bruteforce on 307.80Mhz
2022-09-11 02:09:51 +03:00
MX
bcaf898c57 fixes and impovements 2022-09-11 02:09:02 +03:00
Eduardo Novella
248d222459 Respect the whitespaces 2022-09-11 00:57:13 +02:00
Eduardo Novella
fd230b6d09 Refactor switch case with duplicated code 2022-09-11 00:52:34 +02:00
Eduardo Novella
d55da415c2 Include CAME 12 bits bruteforce on 307.80Mhz 2022-09-11 00:37:08 +02:00
MX
f94517fdab lower stack sizes for apps 2022-09-10 20:37:00 +03:00
MX
177fabe50c add mpu, fix keeloq 2022-09-10 20:16:08 +03:00
MX
7930f73a4e introduce example, update changelog/readme 2022-09-10 17:51:13 +03:00
MX
b0633af0b6 Merge pull request #62 from darmiel/feat/playlist
feat: .sub playlist plugin
2022-09-10 17:05:00 +03:00
MX
e0efb2bf37 change log type and move power suppress 2022-09-10 17:04:15 +03:00
darmiel
239eca0543 Merge branch 'dev' of github.com:Eng1n33r/flipperzero-firmware into feat/playlist 2022-09-10 14:31:45 +02:00
MX
de4e7b9dd9 update changelog 2022-09-09 15:26:29 +03:00
MX
8e986c58c3 disable some debug tools in releases, actually fix tv.ir 2022-09-09 15:25:12 +03:00
MX
bbe5c9cae1 fix universal tv, lfrfid gui 2022-09-09 14:33:18 +03:00
MX
a3193e3bbd update assets 2022-09-09 02:04:55 +03:00
MX
f34dafeecc revert picopass OFW PR
37 bit card is read as 255 bit and saving is broken
2022-09-09 01:32:50 +03:00
MX
f4c2744f16 update changelog 2022-09-08 23:55:25 +03:00
MX
e66e7fabed Picopass: detect and show SE / SIO - OFW PR 1701
by pcunning
2022-09-08 23:41:54 +03:00
MX
30ed8c1598 Fix MFClassic 4k reading - OFW PR 1712
PR by Astrrra
2022-09-08 23:40:16 +03:00
MX
c2eeadc41e update changelog 2022-09-08 23:34:30 +03:00
MX
a1f4b8065a fix lfrfid gui and add icon
oops I forgot about multiline element
2022-09-08 23:33:34 +03:00
MX
bda69f7650 fix new lfrfid bugs 2022-09-08 20:23:54 +03:00
MX
5e03086d7b Merge branch 'fz-dev' into dev 2022-09-08 19:55:03 +03:00
MX
8e9795eec0 update changelog 2022-09-08 19:54:03 +03:00
MX
9e4d7a0c9b change save gui in brute 2022-09-08 19:53:02 +03:00
Nikolay Minaylov
0f6f9ad52e [FL-2753] RFID app port to plain C (#1710)
* LF RFID: port to plain C
* LFRFID debug port to C, new reading screen
* LFRFID debug: fix pvs-studio warnings
* RFID read view: remove unused input callback
* RFID read view: animation update
2022-09-09 01:40:33 +09:00
MX
0cabefbc24 format and update changelog 2022-09-08 18:24:25 +03:00
MX
4ea5dc4b5a Merge pull request #60 from theeogflip/dev
Battery info
2022-09-08 17:46:40 +03:00
MX
8abb9e8a2b Merge branch 'fz-dev' into dev 2022-09-08 17:45:37 +03:00
MX
a07ab6175f remove leftovers 2022-09-08 17:45:10 +03:00
MX
61e76bc85c run bruteforce in separate thread 2022-09-08 17:39:33 +03:00
Patrik Burleson
b52c63f6da change update the Battery info 2022-09-08 12:52:18 +02:00
Skorpionm
e9ab581771 SubGhz: fix decoder kelooq (#1719)
* SubGhz: fix decoder kelooq

Co-authored-by: hedger <hedger@users.noreply.github.com>
2022-09-08 10:27:03 +03:00
あく
b62096fb91 [FL-2645, FL-2810] SubGhz: handle missing key in cryptostore. Lib: lower default display contrast. (#1717)
* SubGhz: skip file loading on key load fail

* Lib: update default display contrast

* Format sources

Co-authored-by: hedger <hedger@users.noreply.github.com>
2022-09-08 10:18:18 +03:00
あく
ff33bc6aea Furi: wait for timer wind down in destructor (#1716) 2022-09-08 09:47:23 +03:00
theeogflip
d65c7b5f4c Merge branch 'Eng1n33r:dev' into dev 2022-09-08 07:34:52 +02:00
Patrik Burleson
563cf986d6 change update the Battery info 2022-09-08 07:31:57 +02:00
MX
123bd6fc65 assets 2022-09-08 05:56:58 +03:00
MX
77b19ec0db OFW: SubGhz: fix decoder keeloq
OFW PR 1719 by Skorpionm
2022-09-08 05:39:21 +03:00
MX
7f464f8be4 Revert "Merge pull request #58 from theeogflip/dev"
This reverts commit 23433ce161.
2022-09-08 05:33:04 +03:00
MX
23433ce161 Merge pull request #58 from theeogflip/dev
Battery Meter
2022-09-08 05:10:16 +03:00
MX
7de9c957d2 Merge pull request #57 from Ganapati/dev
Add SubGhz Fuzzer
2022-09-08 05:07:48 +03:00
MX
18891ade89 big upgrade 2022-09-08 05:00:53 +03:00
MX
4588f38ae9 some fixes 2022-09-07 17:48:24 +03:00
Patrik Burleson
015fcf239c Battery Meter 2022-09-07 16:04:22 +02:00
MX
251b747b00 Merge branch 'dev' into subfuz 2022-09-07 16:45:03 +03:00
Ganapati
8955388a60 add tx region check 2022-09-07 15:39:04 +02:00
Ganapati
7afb4d0f41 First version of subghz fuzzer 2022-09-07 15:38:20 +02:00
MX
6decd6fc7d Merge pull request #56 from Graf3x/dev
NRFSniff : Adds unique count display
2022-09-07 15:09:39 +03:00
MX
e9e0079e30 remove non existing function usage
getRandomDeed is not exist
2022-09-07 15:05:57 +03:00
Josh First of His Name, breaker of builds
f28ecec835 NRFSniff : Adds unique count display 2022-09-06 17:27:58 -07:00
Daniel
b10727435a fix: removed converter app (missed that while merging) 2022-08-24 15:36:30 +02:00
Daniel
fe7d089593 Merge remote-tracking branch 'upstream/dev' into feat/playlist 2022-08-24 15:30:22 +02:00
Daniel
380fe2633a Merge remote-tracking branch 'upstream/dev' into feat/playlist 2022-08-24 15:29:02 +02:00
Daniel
58cc7c1814 feat[playlist]: redesign (implements #2) 2022-08-18 01:39:25 +02:00
Daniel Statzner
7681e9a257 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-18 00:50:53 +02:00
Daniel
365d2977ef feat[playlist]: repeat (implements #1) 2022-08-18 00:50:19 +02:00
Daniel Statzner
a8895d56ea Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-15 20:51:30 +02:00
Daniel Statzner
7acd814970 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-14 21:44:58 +02:00
Daniel
2ad9aec802 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-12 14:27:06 +02:00
Daniel
f84d5e9b85 refactor[playlist]: made app a plugin 2022-08-11 20:47:08 +02:00
Daniel
1a60093689 feat[playlist]: overview view 2022-08-11 20:05:56 +02:00
Daniel
a8eb53af4e fix[playlist]: resending playlist 2022-08-11 18:48:02 +02:00
Daniel
5cb074fc24 fix[playlist]: crash & mass send on pause 2022-08-11 18:24:35 +02:00
Daniel
d9265164a3 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-11 18:08:25 +02:00
Daniel
b67dfb5821 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-11 01:34:10 +02:00
Daniel
4c2e38b51c refactor[playlist]: repetitions 2022-08-11 01:33:41 +02:00
Daniel
d13b4e3bd5 feat[playlist]: implementd sending 2022-08-11 00:44:35 +02:00
MX
91c7441fa8 Update Frequency analyzer by @ClusterM
OFW PR #1557
2022-08-10 22:46:12 +03:00
Daniel
b7922a2a49 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-10 17:04:10 +02:00
Daniel
f0937e91f1 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-10 03:43:43 +02:00
Daniel
ac08c92a35 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-09 02:13:02 +02:00
Daniel
b2ba7b5e59 feat[playlist]: display history 2022-08-09 01:14:28 +02:00
Daniel
9b89acfec0 feat[playlist]: basic controls 2022-08-09 00:12:06 +02:00
Daniel
7c1a48a377 refactor[playlist]: remove unused includes 2022-08-08 19:19:51 +02:00
Daniel
c8ad361818 Merge branch 'Eng1n33r:dev' into feat/playlist 2022-08-08 18:32:04 +02:00
Daniel
1a52e55a73 feat[playlist]: display current .sub 2022-08-08 02:55:18 +02:00
Daniel
f6a071ed6b feat[playlist]: worker thread 2022-08-08 02:02:39 +02:00
Daniel
05b6f9a901 refactor: rebrand brute-helper to playlist 2022-08-08 00:05:49 +02:00
Daniel
31e06da7e7 Merge branch 'Eng1n33r:dev' into feat/brute-helper 2022-08-07 15:37:51 +02:00
Daniel
1bb1022d51 feat[brutehelper]: initial commit 2022-08-07 02:02:01 +02:00
1339 changed files with 31440 additions and 7472 deletions

View File

@@ -1,86 +1,191 @@
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignConsecutiveDeclarations: false
AlignArrayOfStructures: None
AlignConsecutiveMacros: None
AlignConsecutiveAssignments: None
AlignConsecutiveBitFields: None
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Left
AlignOperands: true
AlignOperands: Align
AlignTrailingComments: false
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: true
AllowShortBlocksOnASingleLine: Never
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: true
AllowShortLambdasOnASingleLine: All
AllowShortIfStatementsOnASingleLine: WithoutElse
AllowShortLoopsOnASingleLine: true
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
AlwaysBreakTemplateDeclarations: Yes
AttributeMacros:
- __capability
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterCaseLabel: false
AfterClass: false
AfterControlStatement: Never
AfterEnum: false
AfterFunction: false
AfterNamespace: false
AfterObjCDeclaration: false
AfterStruct: false
AfterUnion: false
AfterExternBlock: false
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None
BreakBeforeConceptDeclarations: true
BreakBeforeBraces: Attach
BreakBeforeInheritanceComma: false
BreakInheritanceList: BeforeColon
BreakBeforeTernaryOperators: false
BreakConstructorInitializersBeforeComma: false
BreakConstructorInitializers: BeforeComma
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 99
ColumnLimit: 99
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerAllOnOneLineOrOnePerLine: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: BinPack
BasedOnStyle: ''
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: false
IncludeBlocks: Preserve
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Preserve
IncludeCategories:
- Regex: '.*'
Priority: 1
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
- Regex: '^(<|"(gtest|gmock|isl|json)/)'
Priority: 3
SortPriority: 0
CaseSensitive: false
- Regex: '.*'
Priority: 1
SortPriority: 0
CaseSensitive: false
IncludeIsMainRegex: '(Test)?$'
IncludeIsMainSourceRegex: ''
IndentAccessModifiers: false
IndentCaseLabels: false
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: None
IndentWidth: 4
IndentExternBlock: AfterExternBlock
IndentRequires: false
IndentWidth: 4
IndentWrappedFunctionNames: true
InsertTrailingCommas: None
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: None
ObjCBinPackProtocolList: Auto
ObjCBlockIndentWidth: 4
ObjCBreakBeforeNestedBlockParam: true
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
# Taken from git's rules
PenaltyBreakAssignment: 10
PenaltyBreakBeforeFirstCallParameter: 30
PenaltyBreakComment: 10
PenaltyBreakFirstLessLess: 0
PenaltyBreakOpenParenthesis: 0
PenaltyBreakString: 10
PenaltyBreakTemplateDeclaration: 10
PenaltyExcessCharacter: 100
PenaltyReturnTypeOnItsOwnLine: 60
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
ReflowComments: false
SortIncludes: false
PPIndentWidth: -1
ReferenceAlignment: Pointer
ReflowComments: false
RemoveBracesLLVM: false
SeparateDefinitionBlocks: Leave
ShortNamespaceLines: 1
SortIncludes: Never
SortJavaStaticImport: Before
SortUsingDeclarations: false
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: Never
SpaceBeforeParensOptions:
AfterControlStatements: false
AfterForeachMacros: false
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: false
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: false
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp03
TabWidth: 4
UseTab: Never
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: c++03
StatementAttributeLikeMacros:
- Q_EMIT
StatementMacros:
- Q_UNUSED
- QT_REQUIRE_VERSION
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
...

View File

@@ -28,33 +28,6 @@ steps:
FBT_TOOLS_CUSTOM_LINK:
from_secret: fbt_link
- name: "Bundle resources"
image: kramos/alpine-zip
commands:
- mkdir sd-card
- mkdir -p sd-card/subghz/assets
- mkdir -p sd-card/nfc/assets
- mkdir -p sd-card/infrared/assets
- mkdir -p sd-card/unirf
- mkdir -p sd-card/rfidfuzzer
- mkdir -p sd-card/badusb/layouts
- cp assets/resources/badusb/layouts/* sd-card/badusb/layouts/
- cp assets/resources/subghz/assets/dangerous_settings sd-card/subghz/assets/dangerous_settings
- cp assets/resources/subghz/assets/setting_user sd-card/subghz/assets/setting_user
- cp assets/resources/subghz/assets/keeloq_mfcodes sd-card/subghz/assets/keeloq_mfcodes
- cp assets/resources/nfc/assets/mf_classic_dict.nfc sd-card/nfc/assets/mf_classic_dict.nfc
- cp assets/resources/infrared/assets/tv.ir sd-card/infrared/assets/tv.ir
- cp assets/resources/infrared/assets/ac.ir sd-card/infrared/assets/ac.ir
- cp assets/resources/infrared/assets/fans.ir sd-card/infrared/assets/fans.ir
- cp assets/resources/infrared/assets/projectors.ir sd-card/infrared/assets/projectors.ir
- cp assets/resources/infrared/assets/audio.ir sd-card/infrared/assets/audio.ir
- cp assets/resources/unirf/unirf_map_example.txt sd-card/unirf/unirf_map_example.txt
- cp assets/resources/rfidfuzzer/example_uids.txt sd-card/rfidfuzzer/example_uids.txt
- cp assets/resources/Manifest sd-card/Manifest
- zip -r artifacts-default/sd-card-${DRONE_TAG}.zip sd-card
- rm -rf sd-card
- ls -laS artifacts-default
- name: "Bundle self-update packages"
image: kramos/alpine-zip
commands:
@@ -91,7 +64,6 @@ steps:
files:
- artifacts-default/*.tgz
- artifacts-default/*.zip
- artifacts-default/flipper-z-f7-full-${DRONE_TAG}.dfu
title: ${DRONE_TAG}
note: CHANGELOG.md
checksum:

1
.github/CODEOWNERS vendored Normal file
View File

@@ -0,0 +1 @@
* @xMasterX

3
.gitmodules vendored
View File

@@ -28,3 +28,6 @@
[submodule "lib/mbedtls"]
path = lib/mbedtls
url = https://github.com/Mbed-TLS/mbedtls.git
[submodule "lib/cxxheaderparser"]
path = lib/cxxheaderparser
url = https://github.com/robotpy/cxxheaderparser.git

View File

@@ -9,6 +9,10 @@
"type": "command",
"command": "shellCommand.execute",
"args": {
"useSingleResult": true,
"env": {
"PATH": "${workspaceFolder};${env:PATH}"
},
"command": "./fbt get_blackmagic",
"description": "Get Blackmagic device",
}
@@ -31,7 +35,10 @@
],
"postAttachCommands": [
// "attach 1",
"compare-sections",
// "compare-sections",
"source debug/flipperapps.py",
// "source debug/FreeRTOS/FreeRTOS.py",
// "svd_load debug/STM32WB55_CM4.svd"
]
// "showDevDebugOutput": "raw",
},
@@ -50,7 +57,8 @@
"attach 1",
"set confirm off",
"set mem inaccessible-by-default off",
"compare-sections",
"source debug/flipperapps.py",
// "compare-sections",
]
// "showDevDebugOutput": "raw",
},
@@ -65,6 +73,9 @@
"device": "STM32WB55RG",
"svdFile": "./debug/STM32WB55_CM4.svd",
"rtos": "FreeRTOS",
"postAttachCommands": [
"source debug/flipperapps.py",
]
// "showDevDebugOutput": "raw",
},
{
@@ -73,7 +84,7 @@
"request": "launch",
"program": "./lib/scons/scripts/scons.py",
"args": [
"sdk"
"plugin_dist"
]
},
{

View File

@@ -12,6 +12,9 @@
"cortex-debug.openocdPath.windows": "${workspaceFolder}/toolchain/i686-windows/openocd/bin/openocd.exe",
"cortex-debug.openocdPath.linux": "${workspaceFolder}/toolchain/x86_64-linux/openocd/bin/openocd",
"cortex-debug.openocdPath.osx": "${workspaceFolder}/toolchain/x86_64-darwin/openocd/bin/openocd",
"cortex-debug.gdbPath.windows": "${workspaceFolder}/toolchain/i686-windows/bin/arm-none-eabi-gdb-py.bat",
"cortex-debug.gdbPath.linux": "${workspaceFolder}/toolchain/x86_64-linux/bin/arm-none-eabi-gdb-py",
"cortex-debug.gdbPath.osx": "${workspaceFolder}/toolchain/x86_64-darwin/bin/arm-none-eabi-gdb-py",
"editor.formatOnSave": true,
"files.associations": {
"*.scons": "python",
@@ -19,4 +22,4 @@
"SConstruct": "python",
"*.fam": "python",
}
}
}

View File

@@ -93,11 +93,41 @@
"type": "shell",
"command": "./fbt FIRMWARE_APP_SET=unit_tests FORCE=1 flash_usb"
},
{
"label": "[Debug] Flash (USB, with resources)",
"group": "build",
"type": "shell",
"command": "./fbt FORCE=1 flash_usb_full"
},
{
"label": "[Release] Flash (USB, with resources)",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 FORCE=1 flash_usb_full"
},
{
"label": "[Debug] Build FAPs",
"group": "build",
"type": "shell",
"command": "./fbt plugin_dist"
},
{
"label": "[Release] Build FAPs",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 plugin_dist"
},
{
"label": "[Debug] Launch App on Flipper",
"group": "build",
"type": "shell",
"command": "./fbt launch_app APPSRC=${relativeFileDirname}"
},
{
"label": "[Release] Launch App on Flipper",
"group": "build",
"type": "shell",
"command": "./fbt COMPACT=1 DEBUG=0 launch_app APPSRC=${relativeFileDirname}"
}
]
}

View File

@@ -1,14 +1,16 @@
### New changes
* Set poweroff button timer to 2sec
* Debug apps (USB Mouse, UART Echo) now included in release build
* OFW: Toolchain update
* PR: SubGHz bruteforcer plugin - deep refactoring (huge thanks to @derskythe ! | PR #75)
* OFW: Preliminary Rust support
**Note: To avoid issues prefer installing using web updater or by self update package, all needed assets will be installed**
#### **DFU files no longer included in releases to avoid issues with wrong manual installation of assets - use .tgz file with qFlipper, or install automatically via web updater or use microSD update package**
Self-update package (update from microSD) - `flipper-z-f7-update-(version).zip` or `.tgz` for iOS mobile app
[- How to install](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/HowToInstall.md)
DFU for update using qFlipper - `flipper-z-f7-full-(version).dfu`
[- Download qFlipper 1.2.0 (allows .tgz installation) (official link)](https://update.flipperzero.one/builds/qFlipper/1.2.0/)
If using DFU update method, download this archive and unpack it to your microSD, replacing all files except files you have edited manually -
`sd-card-(version).zip`
**Note: To avoid issues with .dfu, prefer installing using .tgz with qFlipper, web updater or by self update package, all needed assets will be installed**
Self-update package (update from microSD) - `flipper-z-f7-update-(version).zip` or download `.tgz` for iOS mobile app / qFlipper
Update using qFlipper (1.2.0) is now possible with `.tgz` update package! Also you can use Web Updater or self-update package.

View File

@@ -7,7 +7,7 @@
### Welcome to Flipper Zero Unleashed Firmware repo!
Our goal is to make any features possible in this device without any limitations!
Please help us implement emulation for all subghz dynamic (rolling code) protocols and static code brute-force plugin!
Please help us implement emulation for all subghz dynamic (rolling code) protocols!
<br>
@@ -16,7 +16,7 @@ Please help us implement emulation for all subghz dynamic (rolling code) protoco
<br>
Our Discord Community:
<br>
<a href="https://discord.gg/58D6E8BtTU"><img src="https://discordapp.com/api/guilds/937479784148115456/widget.png?style=banner4" alt="Unofficial Discord Community"></a>
<a href="https://discord.gg/flipperzero-unofficial"><img src="https://discordapp.com/api/guilds/937479784148115456/widget.png?style=banner4" alt="Unofficial Discord Community"></a>
<br>
<br>
@@ -27,6 +27,8 @@ Our Discord Community:
* SubGHz frequecy 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 (secure with seed) manual creation
* Sub-GHz static code brute-force plugin
* LFRFID Fuzzer plugin
* Custom community plugins and games added
* Extra SubGHz frequencies + extra Mifare Classic keys
* Picopass/iClass plugin included in releases
@@ -47,7 +49,7 @@ See changelog in releases for latest updates!
- Keeloq [Not ALL systems supported yet!]
- Nice Flor S
- Security+ v1 & v2
- Star Line
- Star Line (saving only)
## Support us so we can buy equipment and develop new features
* ETH/BSC/ERC20-Tokens: `0xFebF1bBc8229418FF2408C07AF6Afa49152fEc6a`
@@ -57,6 +59,9 @@ See changelog in releases for latest updates!
### Community apps included:
- RFID Fuzzer plugin [(by Ganapati)](https://github.com/Eng1n33r/flipperzero-firmware/pull/54) with some changes by xMasterX
- Sub-GHz bruteforce plugin [(by Ganapati & xMasterX)](https://github.com/Eng1n33r/flipperzero-firmware/pull/57)
- Sub-GHz playlist plugin [(by darmiel)](https://github.com/Eng1n33r/flipperzero-firmware/pull/62)
- ESP8266 Deauther plugin [(by SequoiaSan)](https://github.com/SequoiaSan/FlipperZero-Wifi-ESP8266-Deauther-Module)
- WiFi Scanner plugin [(by SequoiaSan)](https://github.com/SequoiaSan/FlipperZero-WiFi-Scanner_Module)
- MultiConverter plugin [(by theisolinearchip)](https://github.com/theisolinearchip/flipperzero_stuff)
@@ -65,17 +70,23 @@ See changelog in releases for latest updates!
- GPIO: Sentry Safe plugin [(by H4ckd4ddy)](https://github.com/H4ckd4ddy/flipperzero-sentry-safe-plugin)
- ESP32: WiFi Marauder companion plugin [(by 0xchocolate)](https://github.com/0xchocolate/flipperzero-firmware-with-wifi-marauder-companion)
- NRF24: Sniffer & MouseJacker (with changes) [(by mothball187)](https://github.com/mothball187/flipperzero-nrf24/tree/main/mousejacker)
- Simple Clock (fixed) [(Original by CompaqDisc)](https://gist.github.com/CompaqDisc/4e329c501bd03c1e801849b81f48ea61)
- Simple Clock (timer by GMMan / settings by kowalski7cc) [(Original by CompaqDisc)](https://gist.github.com/CompaqDisc/4e329c501bd03c1e801849b81f48ea61)
- UniversalRF Remix / Sub-GHz Remote [(by ESurge)](https://github.com/ESurge/flipperzero-firmware-unirfremix)[(updated and all protocol support added by darmiel & xMasterX)](https://github.com/darmiel/flipper-playlist/tree/feat/unirf-protocols)
- Tetris (with fixes) [(by jeffplang)](https://github.com/jeffplang/flipperzero-firmware/tree/tetris_game/applications/tetris_game)
- Spectrum Analyzer (with changes) [(by jolcese)](https://github.com/jolcese/flipperzero-firmware/tree/spectrum/applications/spectrum_analyzer) - [Ultra Narrow mode & scan channels non-consecutively](https://github.com/theY4Kman/flipperzero-firmware/commits?author=theY4Kman)
- Arkanoid (with fixes) [(by gotnull)](https://github.com/gotnull/flipperzero-firmware-wPlugins)
- Tic Tac Toe (with fixes) [(by gotnull)](https://github.com/gotnull/flipperzero-firmware-wPlugins)
Games:
- DOOM (fixed) [(By p4nic4ttack)](https://github.com/p4nic4ttack/doom-flipper-zero/)
- Zombiez [(Reworked By DevMilanIan)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/pull/240) [(Original By Dooskington)](https://github.com/Dooskington/flipperzero-zombiez)
- Flappy Bird [(By DroomOne)](https://github.com/DroomOne/flipperzero-firmware/tree/dev/applications/flappy_bird)
- Arkanoid (refactored by xMasterX) [(by gotnull)](https://github.com/gotnull/flipperzero-firmware-wPlugins)
- Tic Tac Toe (refactored by xMasterX) [(by gotnull)](https://github.com/gotnull/flipperzero-firmware-wPlugins)
- Tetris (with fixes) [(by jeffplang)](https://github.com/jeffplang/flipperzero-firmware/tree/tetris_game/applications/tetris_game)
### Other changes
- BadUSB Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout)
- New frequency analyzer - [(by ClusterM)](https://github.com/ClusterM)
- BadUSB -> Keyboard layouts [(by rien > dummy-decoy)](https://github.com/dummy-decoy/flipperzero-firmware/tree/dummy_decoy/bad_usb_keyboard_layout)
- SubGHz -> New frequency analyzer - [(by ClusterM)](https://github.com/ClusterM)
- SubGHz -> Detect RAW feature - [(by perspecdev)](https://github.com/RogueMaster/flipperzero-firmware-wPlugins/pull/152)
# Instructions
## [- How to install firmware](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/HowToInstall.md)
@@ -88,6 +99,8 @@ See changelog in releases for latest updates!
### **Plugins**
## [- 💎 Extra plugins precompiled for Unleashed](https://github.com/UberGuidoZ/Flipper/tree/main/Applications/Unleashed)
## [- Configure Sub-GHz Remote App](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/SubGHzRemotePlugin.md)
## [- Barcode Generator](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/BarcodeGenerator.md)
@@ -96,6 +109,8 @@ See changelog in releases for latest updates!
## [- WAV Player sample files & how to convert](https://github.com/UberGuidoZ/Flipper/tree/main/Wav_Player#readme)
## [- SubGHz playlist generator script](https://github.com/darmiel/flipper-scripts/blob/main/playlist/playlist_creator_by_chunk.py)
### **Plugins that works with external hardware**
## [- How to use: [NRF24] plugins](https://github.com/Eng1n33r/flipperzero-firmware/blob/dev/documentation/NRF24.md)
@@ -133,7 +148,7 @@ See changelog in releases for latest updates!
# Links
* Unofficial Discord: [discord.gg/58D6E8BtTU](https://discord.gg/58D6E8BtTU)
* Unofficial Discord: [discord.gg/flipperzero-unofficial](https://discord.gg/flipperzero-unofficial)
* 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)
@@ -151,4 +166,4 @@ See changelog in releases for latest updates!
- `site_scons` - Build helpers
- `scripts` - Supplementary scripts and python libraries home
Also pay attention to `ReadMe.md` files inside of those directories.
Also pay attention to `ReadMe.md` files inside those directories.

View File

@@ -9,9 +9,10 @@
import os
import subprocess
DefaultEnvironment(tools=[])
EnsurePythonVersion(3, 8)
DefaultEnvironment(tools=[])
# Progress(["OwO\r", "owo\r", "uwu\r", "owo\r"], interval=15)
@@ -43,6 +44,8 @@ distenv = coreenv.Clone(
"target extended-remote ${GDBREMOTE}",
"-ex",
"set confirm off",
"-ex",
"set pagination off",
],
GDBOPTS_BLACKMAGIC=[
"-ex",
@@ -58,6 +61,8 @@ distenv = coreenv.Clone(
"-ex",
"source debug/FreeRTOS/FreeRTOS.py",
"-ex",
"source debug/flipperapps.py",
"-ex",
"source debug/PyCortexMDebug/PyCortexMDebug.py",
"-ex",
"svd_load ${SVD_FILE}",
@@ -160,6 +165,28 @@ if GetOption("fullenv") or any(
basic_dist = distenv.DistCommand("fw_dist", distenv["DIST_DEPENDS"])
distenv.Default(basic_dist)
dist_dir = distenv.GetProjetDirName()
plugin_dist = [
distenv.Install(
f"#/dist/{dist_dir}/apps/debug_elf",
firmware_env["FW_EXTAPPS"]["debug"].values(),
),
*(
distenv.Install(f"#/dist/{dist_dir}/apps/{dist_entry[0]}", dist_entry[1])
for dist_entry in firmware_env["FW_EXTAPPS"]["dist"].values()
),
]
Depends(plugin_dist, firmware_env["FW_EXTAPPS"]["validators"].values())
Alias("plugin_dist", plugin_dist)
# distenv.Default(plugin_dist)
plugin_resources_dist = list(
distenv.Install(f"#/assets/resources/apps/{dist_entry[0]}", dist_entry[1])
for dist_entry in firmware_env["FW_EXTAPPS"]["dist"].values()
)
distenv.Depends(firmware_env["FW_RESOURCES"], plugin_resources_dist)
# Target for bundling core2 package for qFlipper
copro_dist = distenv.CoproBuilder(
distenv.Dir("assets/core2_firmware"),
@@ -209,10 +236,19 @@ distenv.PhonyTarget(
distenv.PhonyTarget(
"debug_other",
"${GDBPYCOM}",
GDBPYOPTS='-ex "source debug/PyCortexMDebug/PyCortexMDebug.py" ',
GDBOPTS="${GDBOPTS_BASE}",
GDBREMOTE="${OPENOCD_GDB_PIPE}",
GDBPYOPTS='-ex "source debug/PyCortexMDebug/PyCortexMDebug.py" ',
)
distenv.PhonyTarget(
"debug_other_blackmagic",
"${GDBPYCOM}",
GDBOPTS="${GDBOPTS_BASE} ${GDBOPTS_BLACKMAGIC}",
GDBREMOTE="$${BLACKMAGIC_ADDR}",
)
# Just start OpenOCD
distenv.PhonyTarget(
"openocd",
@@ -240,7 +276,6 @@ firmware_env.Append(
"site_scons",
"scripts",
# Extra files
"applications/extapps.scons",
"SConstruct",
"firmware.scons",
"fbt_options.py",

View File

@@ -1,38 +1,89 @@
# Structure
- `about` - Small About application that shows flipper info
- `accessor` - Wiegand server
## debug
Applications for factory testing the Flipper.
- `accessor` - Wiegand server
- `battery_test_app` - Battery debug app
- `blink_test` - LED blinker
- `bt_debug_app` - BT test app. Requires full BT stack installed
- `display_test` - Various display tests & tweaks
- `file_browser_test` - Test UI for file picker
- `keypad_test` - Keypad test
- `lfrfid_debug` - LF RFID debug tool
- `text_box_test` - UI tests
- `uart_echo` - UART mode test
- `unit_tests` - Unit tests
- `usb_mouse` - USB HID test
- `usb_test` - Other USB tests
- `vibro_test` - Vibro test
## main
Applications for main Flipper menu.
- `archive` - Archive and file manager
- `bad_usb` - Bad USB application
- `fap_loader` - External applications loader
- `gpio` - GPIO application: includes USART bridge and GPIO control
- `ibutton` - iButton application, onewire keys and more
- `infrared` - Infrared application, controls your IR devices
- `lfrfid` - LF RFID application
- `nfc` - NFC application, HF rfid, EMV and etc
- `subghz` - SubGhz application, 433 fobs and etc
- `u2f` - U2F Application
## plugins
Extra apps for Plugins & App Loader menus.
- `bt_hid_app` - BT Remote controller
- `music_player` - Music player app (demo)
- `picopass` - Picopass tool
- `snake_game` - Snake game application
## services
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
- `debug_tools` - Different tools that we use for debug
- `desktop` - Desktop service
- `dialogs` - Dialogs service: GUI Dialogs for your app
- `dolphin` - Dolphin service and supplementary apps
- `gpio` - GPIO application: includes USART bridge and GPIO control
- `gui` - GUI service and API
- `ibutton` - iButton application, onewire keys and more
- `input` - Input service
- `infrared` - Infrared application, controls your IR devices
- `lfrfid` - LF RFID application
- `lfrfid_debug` - LF RFID debug tool
- `loader` - Application loader service
- `music_player` - Music player app (demo)
- `nfc` - NFC application, HF rfid, EMV and etc
- `notification` - Notification service
- `power` - Power service
- `power_observer` - Power debug tool
- `rpc` - RPC service and API
- `scened_app_example` - C++ application example
- `snake_game` - Snake game application
- `storage` - Storage service, internal + sdcard
- `storage_settings` - Storage settings app
- `subghz` - SubGhz application, 433 fobs and etc
- `system` - System settings, tools and API
- `tests` - Unit tests and etc
- `u2f` - U2F Application
- `updater` - Update service & application
- `application.h` - Firmware application list header
## settings
Small applications providing configuration for basic firmware and its services.
- `about` - Small About application that shows flipper info
- `bt_settings_app` - Bluetooth options
- `desktop_settings` - Desktop configuration
- `dolphin_passport` - Dolphin passport app
- `notification_settings` - LCD brightness, sound volume, etc configuration
- `power_settings_app` - Basic power options
- `storage_settings` - Storage settings app
- `system` - System settings
## system
Utility apps not visible in other menus.
- `storage_move_to_sd` - Data migration tool for internal storage
- `updater` - Update service & application

View File

@@ -1,79 +0,0 @@
#include "archive_i.h"
#include "m-string.h"
bool archive_custom_event_callback(void* context, uint32_t event) {
furi_assert(context);
ArchiveApp* archive = (ArchiveApp*)context;
return scene_manager_handle_custom_event(archive->scene_manager, event);
}
bool archive_back_event_callback(void* context) {
furi_assert(context);
ArchiveApp* archive = (ArchiveApp*)context;
return scene_manager_handle_back_event(archive->scene_manager);
}
ArchiveApp* archive_alloc() {
ArchiveApp* archive = malloc(sizeof(ArchiveApp));
archive->gui = furi_record_open(RECORD_GUI);
archive->text_input = text_input_alloc();
string_init(archive->fav_move_str);
archive->view_dispatcher = view_dispatcher_alloc();
archive->scene_manager = scene_manager_alloc(&archive_scene_handlers, archive);
view_dispatcher_enable_queue(archive->view_dispatcher);
view_dispatcher_attach_to_gui(
archive->view_dispatcher, archive->gui, ViewDispatcherTypeFullscreen);
view_dispatcher_set_event_callback_context(archive->view_dispatcher, archive);
view_dispatcher_set_custom_event_callback(
archive->view_dispatcher, archive_custom_event_callback);
view_dispatcher_set_navigation_event_callback(
archive->view_dispatcher, archive_back_event_callback);
archive->browser = browser_alloc();
view_dispatcher_add_view(
archive->view_dispatcher, ArchiveViewBrowser, archive_browser_get_view(archive->browser));
view_dispatcher_add_view(
archive->view_dispatcher, ArchiveViewTextInput, text_input_get_view(archive->text_input));
archive->widget = widget_alloc();
view_dispatcher_add_view(
archive->view_dispatcher, ArchiveViewWidget, widget_get_view(archive->widget));
return archive;
}
void archive_free(ArchiveApp* archive) {
furi_assert(archive);
view_dispatcher_remove_view(archive->view_dispatcher, ArchiveViewBrowser);
view_dispatcher_remove_view(archive->view_dispatcher, ArchiveViewTextInput);
view_dispatcher_remove_view(archive->view_dispatcher, ArchiveViewWidget);
widget_free(archive->widget);
view_dispatcher_free(archive->view_dispatcher);
scene_manager_free(archive->scene_manager);
browser_free(archive->browser);
string_clear(archive->fav_move_str);
text_input_free(archive->text_input);
furi_record_close(RECORD_GUI);
archive->gui = NULL;
free(archive);
}
int32_t archive_app(void* p) {
UNUSED(p);
ArchiveApp* archive = archive_alloc();
scene_manager_next_scene(archive->scene_manager, ArchiveAppSceneBrowser);
view_dispatcher_run(archive->view_dispatcher);
archive_free(archive);
return 0;
}

View File

@@ -1,89 +0,0 @@
#include "../archive_i.h"
#include "../helpers/archive_favorites.h"
#include "../helpers/archive_files.h"
#include "../helpers/archive_browser.h"
#include "archive/views/archive_browser_view.h"
#include "toolbox/path.h"
#define SCENE_RENAME_CUSTOM_EVENT (0UL)
#define MAX_TEXT_INPUT_LEN 22
void archive_scene_rename_text_input_callback(void* context) {
ArchiveApp* archive = (ArchiveApp*)context;
view_dispatcher_send_custom_event(archive->view_dispatcher, SCENE_RENAME_CUSTOM_EVENT);
}
void archive_scene_rename_on_enter(void* context) {
ArchiveApp* archive = (ArchiveApp*)context;
TextInput* text_input = archive->text_input;
ArchiveFile_t* current = archive_get_current_file(archive->browser);
string_t filename;
string_init(filename);
path_extract_filename(current->path, filename, true);
strlcpy(archive->text_store, string_get_cstr(filename), MAX_NAME_LEN);
path_extract_extension(current->path, archive->file_extension, MAX_EXT_LEN);
text_input_set_header_text(text_input, "Rename:");
text_input_set_result_callback(
text_input,
archive_scene_rename_text_input_callback,
archive,
archive->text_store,
MAX_TEXT_INPUT_LEN,
false);
ValidatorIsFile* validator_is_file = validator_is_file_alloc_init(
string_get_cstr(archive->browser->path), archive->file_extension, "");
text_input_set_validator(text_input, validator_is_file_callback, validator_is_file);
string_clear(filename);
view_dispatcher_switch_to_view(archive->view_dispatcher, ArchiveViewTextInput);
}
bool archive_scene_rename_on_event(void* context, SceneManagerEvent event) {
ArchiveApp* archive = (ArchiveApp*)context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SCENE_RENAME_CUSTOM_EVENT) {
Storage* fs_api = furi_record_open(RECORD_STORAGE);
const char* path_src = archive_get_name(archive->browser);
ArchiveFile_t* file = archive_get_current_file(archive->browser);
string_t path_dst;
string_init(path_dst);
path_extract_dirname(path_src, path_dst);
string_cat_printf(path_dst, "/%s%s", archive->text_store, known_ext[file->type]);
storage_common_rename(fs_api, path_src, string_get_cstr(path_dst));
furi_record_close(RECORD_STORAGE);
if(file->fav) {
archive_favorites_rename(path_src, string_get_cstr(path_dst));
}
string_clear(path_dst);
scene_manager_next_scene(archive->scene_manager, ArchiveAppSceneBrowser);
consumed = true;
}
}
return consumed;
}
void archive_scene_rename_on_exit(void* context) {
ArchiveApp* archive = (ArchiveApp*)context;
// Clear view
void* validator_context = text_input_get_validator_callback_context(archive->text_input);
text_input_set_validator(archive->text_input, NULL, NULL);
validator_is_file_free(validator_context);
text_input_reset(archive->text_input);
}

View File

@@ -1,66 +0,0 @@
App(
appid="bt",
name="BtSrv",
apptype=FlipperAppType.SERVICE,
entry_point="bt_srv",
cdefines=["SRV_BT"],
requires=[
"cli",
"dialogs",
],
provides=[
"bt_start",
"bt_settings",
"bt_debug",
],
stack_size=1 * 1024,
order=20,
)
App(
appid="bt_start",
apptype=FlipperAppType.STARTUP,
entry_point="bt_on_system_start",
order=70,
)
App(
appid="bt_settings",
name="Bluetooth",
apptype=FlipperAppType.SETTINGS,
entry_point="bt_settings_app",
stack_size=1 * 1024,
requires=[
"bt",
"gui",
],
order=10,
)
App(
appid="bt_debug",
name="Bluetooth Debug",
apptype=FlipperAppType.DEBUG,
entry_point="bt_debug_app",
stack_size=1 * 1024,
requires=[
"bt",
"gui",
"dialogs",
],
order=110,
)
App(
appid="bt_hid",
name="Bluetooth Remote",
apptype=FlipperAppType.PLUGIN,
entry_point="bt_hid_app",
stack_size=1 * 1024,
cdefines=["APP_BLE_HID"],
requires=[
"bt",
"gui",
],
order=10,
)

View File

@@ -1,11 +0,0 @@
App(
appid="clock",
name="Clock",
apptype=FlipperAppType.APP,
entry_point="clock_app",
cdefines=["APP_CLOCK"],
requires=["gui"],
icon="A_Clock_14",
stack_size=2 * 1024,
order=9,
)

View File

@@ -1,146 +0,0 @@
#include <furi.h>
#include <furi_hal.h>
#include <gui/elements.h>
#include <gui/gui.h>
#include <input/input.h>
#define TAG "Clock"
#define CLOCK_DATE_FORMAT "%.4d-%.2d-%.2d"
#define CLOCK_TIME_FORMAT "%.2d:%.2d:%.2d"
typedef enum {
EventTypeTick,
EventTypeKey,
} EventType;
typedef struct {
EventType type;
InputEvent input;
} PluginEvent;
typedef struct {
FuriHalRtcDateTime datetime;
} ClockState;
static void clock_input_callback(InputEvent* input_event, FuriMessageQueue* event_queue) {
furi_assert(event_queue);
PluginEvent event = {.type = EventTypeKey, .input = *input_event};
furi_message_queue_put(event_queue, &event, FuriWaitForever);
}
static void clock_render_callback(Canvas* const canvas, void* ctx) {
canvas_clear(canvas);
canvas_set_color(canvas, ColorBlack);
ClockState* state = (ClockState*)acquire_mutex((ValueMutex*)ctx, 25);
char strings[2][20];
snprintf(
strings[0],
sizeof(strings[0]),
CLOCK_DATE_FORMAT,
state->datetime.year,
state->datetime.month,
state->datetime.day);
snprintf(
strings[1],
sizeof(strings[1]),
CLOCK_TIME_FORMAT,
state->datetime.hour,
state->datetime.minute,
state->datetime.second);
release_mutex((ValueMutex*)ctx, state);
canvas_set_font(canvas, FontBigNumbers);
canvas_draw_str_aligned(canvas, 64, 42 - 16, AlignCenter, AlignCenter, strings[1]);
canvas_set_font(canvas, FontSecondary);
canvas_draw_str_aligned(canvas, 64, 52 - 8, AlignCenter, AlignTop, strings[0]);
}
static void clock_state_init(ClockState* const state) {
furi_hal_rtc_get_datetime(&state->datetime);
}
// Runs every 1000ms by default
static void clock_tick(void* ctx) {
furi_assert(ctx);
FuriMessageQueue* event_queue = ctx;
PluginEvent event = {.type = EventTypeTick};
// It's OK to loose this event if system overloaded
furi_message_queue_put(event_queue, &event, 0);
}
int32_t clock_app(void* p) {
UNUSED(p);
FuriMessageQueue* event_queue = furi_message_queue_alloc(8, sizeof(PluginEvent));
ClockState* plugin_state = malloc(sizeof(ClockState));
clock_state_init(plugin_state);
ValueMutex state_mutex;
if(!init_mutex(&state_mutex, plugin_state, sizeof(ClockState))) {
FURI_LOG_E(TAG, "cannot create mutex\r\n");
furi_message_queue_free(event_queue);
free(plugin_state);
return 255;
}
// Set system callbacks
ViewPort* view_port = view_port_alloc();
view_port_draw_callback_set(view_port, clock_render_callback, &state_mutex);
view_port_input_callback_set(view_port, clock_input_callback, event_queue);
FuriTimer* timer = furi_timer_alloc(clock_tick, FuriTimerTypePeriodic, event_queue);
furi_timer_start(timer, furi_kernel_get_tick_frequency());
// Open GUI and register view_port
Gui* gui = furi_record_open(RECORD_GUI);
gui_add_view_port(gui, view_port, GuiLayerFullscreen);
// Main loop
PluginEvent event;
for(bool processing = true; processing;) {
FuriStatus event_status = furi_message_queue_get(event_queue, &event, 100);
ClockState* plugin_state = (ClockState*)acquire_mutex_block(&state_mutex);
if(event_status == FuriStatusOk) {
// press events
if(event.type == EventTypeKey) {
if(event.input.type == InputTypeShort || event.input.type == InputTypeRepeat) {
switch(event.input.key) {
case InputKeyUp:
case InputKeyDown:
case InputKeyRight:
case InputKeyLeft:
case InputKeyOk:
break;
case InputKeyBack:
// Exit the plugin
processing = false;
break;
}
}
} else if(event.type == EventTypeTick) {
furi_hal_rtc_get_datetime(&plugin_state->datetime);
}
} else {
FURI_LOG_D(TAG, "furi_message_queue: event timeout");
// event timeout
}
view_port_update(view_port);
release_mutex(&state_mutex, plugin_state);
}
furi_timer_free(timer);
view_port_enabled_set(view_port, false);
gui_remove_view_port(gui, view_port);
furi_record_close(RECORD_GUI);
view_port_free(view_port);
furi_message_queue_free(event_queue);
delete_mutex(&state_mutex);
return 0;
}

View File

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

View File

@@ -0,0 +1,16 @@
App(
appid="debug_apps",
name="Basic debug apps bundle",
apptype=FlipperAppType.METAPACKAGE,
provides=[
"blink_test",
"vibro_test",
"keypad_test",
"usb_test",
"usb_mouse",
"uart_echo",
"display_test",
"text_box_test",
"file_browser_test",
],
)

View File

@@ -0,0 +1,14 @@
App(
appid="battery_test",
name="Battery Test",
apptype=FlipperAppType.DEBUG,
entry_point="battery_test_app",
cdefines=["APP_BATTERY_TEST"],
requires=[
"gui",
"power",
],
stack_size=1 * 1024,
order=130,
fap_category="Debug",
)

View File

@@ -27,7 +27,7 @@ static void battery_test_battery_info_update_model(void* context) {
.charge = app->info.charge,
.health = app->info.health,
};
battery_info_set_data(app->batery_info, &battery_info_data);
battery_info_set_data(app->battery_info, &battery_info_data);
notification_message(app->notifications, &sequence_display_backlight_on);
}
@@ -48,13 +48,13 @@ BatteryTestApp* battery_test_alloc() {
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
// Views
app->batery_info = battery_info_alloc();
app->battery_info = battery_info_alloc();
view_set_previous_callback(
battery_info_get_view(app->batery_info), battery_test_exit_confirm_view);
battery_info_get_view(app->battery_info), battery_test_exit_confirm_view);
view_dispatcher_add_view(
app->view_dispatcher,
BatteryTestAppViewBatteryInfo,
battery_info_get_view(app->batery_info));
battery_info_get_view(app->battery_info));
app->dialog = dialog_ex_alloc();
dialog_ex_set_header(app->dialog, "Close Battery Test?", 64, 12, AlignCenter, AlignTop);
@@ -76,7 +76,7 @@ void battery_test_free(BatteryTestApp* app) {
// Views
view_dispatcher_remove_view(app->view_dispatcher, BatteryTestAppViewBatteryInfo);
battery_info_free(app->batery_info);
battery_info_free(app->battery_info);
view_dispatcher_remove_view(app->view_dispatcher, BatteryTestAppViewExitDialog);
dialog_ex_free(app->dialog);
// View dispatcher

View File

@@ -6,14 +6,15 @@
#include <notification/notification.h>
#include <gui/modules/dialog_ex.h>
#include <power/power_settings_app/views/battery_info.h>
// FIXME
#include "../settings/power_settings_app/views/battery_info.h"
typedef struct {
Power* power;
Gui* gui;
NotificationApp* notifications;
ViewDispatcher* view_dispatcher;
BatteryInfo* batery_info;
BatteryInfo* battery_info;
DialogEx* dialog;
PowerInfo info;
} BatteryTestApp;

View File

@@ -0,0 +1,11 @@
App(
appid="blink_test",
name="Blink Test",
apptype=FlipperAppType.DEBUG,
entry_point="blink_test_app",
cdefines=["APP_BLINK"],
requires=["gui"],
stack_size=1 * 1024,
order=10,
fap_category="Debug",
)

View File

@@ -0,0 +1,18 @@
App(
appid="bt_debug",
name="Bluetooth Debug",
apptype=FlipperAppType.DEBUG,
entry_point="bt_debug_app",
cdefines=["SRV_BT"],
requires=[
"bt",
"gui",
"dialogs",
],
provides=[
"bt_debug",
],
stack_size=1 * 1024,
order=110,
fap_category="Debug",
)

View File

@@ -9,7 +9,7 @@
#include <gui/modules/submenu.h>
#include "views/bt_carrier_test.h"
#include "views/bt_packet_test.h"
#include "../bt_settings.h"
#include <bt/bt_settings.h>
typedef struct {
BtSettings settings;

View File

@@ -0,0 +1,11 @@
App(
appid="display_test",
name="Display Test",
apptype=FlipperAppType.DEBUG,
entry_point="display_test_app",
cdefines=["APP_DISPLAY_TEST"],
requires=["gui"],
stack_size=1 * 1024,
order=120,
fap_category="Debug",
)

View File

@@ -0,0 +1,11 @@
App(
appid="file_browser_test",
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,
fap_category="Debug",
)

View File

@@ -0,0 +1,11 @@
App(
appid="keypad_test",
name="Keypad Test",
apptype=FlipperAppType.DEBUG,
entry_point="keypad_test_app",
cdefines=["APP_KEYPAD_TEST"],
requires=["gui"],
stack_size=1 * 1024,
order=30,
fap_category="Debug",
)

View File

@@ -5,8 +5,11 @@ App(
entry_point="lfrfid_debug_app",
requires=[
"gui",
"lfrfid",
],
provides=[
"lfrfid_debug",
],
stack_size=1 * 1024,
order=100,
fap_category="Debug",
)

View File

@@ -0,0 +1,81 @@
#include "lfrfid_debug_i.h"
static bool lfrfid_debug_custom_event_callback(void* context, uint32_t event) {
furi_assert(context);
LfRfidDebug* app = context;
return scene_manager_handle_custom_event(app->scene_manager, event);
}
static bool lfrfid_debug_back_event_callback(void* context) {
furi_assert(context);
LfRfidDebug* app = context;
return scene_manager_handle_back_event(app->scene_manager);
}
static LfRfidDebug* lfrfid_debug_alloc() {
LfRfidDebug* app = malloc(sizeof(LfRfidDebug));
app->view_dispatcher = view_dispatcher_alloc();
app->scene_manager = scene_manager_alloc(&lfrfid_debug_scene_handlers, app);
view_dispatcher_enable_queue(app->view_dispatcher);
view_dispatcher_set_event_callback_context(app->view_dispatcher, app);
view_dispatcher_set_custom_event_callback(
app->view_dispatcher, lfrfid_debug_custom_event_callback);
view_dispatcher_set_navigation_event_callback(
app->view_dispatcher, lfrfid_debug_back_event_callback);
// Open GUI record
app->gui = furi_record_open(RECORD_GUI);
view_dispatcher_attach_to_gui(app->view_dispatcher, app->gui, ViewDispatcherTypeFullscreen);
// Submenu
app->submenu = submenu_alloc();
view_dispatcher_add_view(
app->view_dispatcher, LfRfidDebugViewSubmenu, submenu_get_view(app->submenu));
// Tune view
app->tune_view = lfrfid_debug_view_tune_alloc();
view_dispatcher_add_view(
app->view_dispatcher,
LfRfidDebugViewTune,
lfrfid_debug_view_tune_get_view(app->tune_view));
return app;
}
static void lfrfid_debug_free(LfRfidDebug* app) {
furi_assert(app);
// Submenu
view_dispatcher_remove_view(app->view_dispatcher, LfRfidDebugViewSubmenu);
submenu_free(app->submenu);
// Tune view
view_dispatcher_remove_view(app->view_dispatcher, LfRfidDebugViewTune);
lfrfid_debug_view_tune_free(app->tune_view);
// View Dispatcher
view_dispatcher_free(app->view_dispatcher);
// Scene Manager
scene_manager_free(app->scene_manager);
// GUI
furi_record_close(RECORD_GUI);
app->gui = NULL;
free(app);
}
int32_t lfrfid_debug_app(void* p) {
UNUSED(p);
LfRfidDebug* app = lfrfid_debug_alloc();
scene_manager_next_scene(app->scene_manager, LfRfidDebugSceneStart);
view_dispatcher_run(app->view_dispatcher);
lfrfid_debug_free(app);
return 0;
}

View File

@@ -0,0 +1,30 @@
#pragma once
#include <furi.h>
#include <furi_hal.h>
#include <gui/gui.h>
#include <gui/view.h>
#include <gui/view_dispatcher.h>
#include <gui/scene_manager.h>
#include <gui/modules/submenu.h>
#include "views/lfrfid_debug_view_tune.h"
#include "scenes/lfrfid_debug_scene.h"
typedef struct LfRfidDebug LfRfidDebug;
struct LfRfidDebug {
Gui* gui;
ViewDispatcher* view_dispatcher;
SceneManager* scene_manager;
// Common Views
Submenu* submenu;
LfRfidTuneView* tune_view;
};
typedef enum {
LfRfidDebugViewSubmenu,
LfRfidDebugViewTune,
} LfRfidDebugView;

View File

@@ -0,0 +1,44 @@
#include "../lfrfid_debug_i.h"
typedef enum {
SubmenuIndexTune,
} SubmenuIndex;
static void lfrfid_debug_scene_start_submenu_callback(void* context, uint32_t index) {
LfRfidDebug* app = context;
view_dispatcher_send_custom_event(app->view_dispatcher, index);
}
void lfrfid_debug_scene_start_on_enter(void* context) {
LfRfidDebug* app = context;
Submenu* submenu = app->submenu;
submenu_add_item(
submenu, "Tune", SubmenuIndexTune, lfrfid_debug_scene_start_submenu_callback, app);
submenu_set_selected_item(
submenu, scene_manager_get_scene_state(app->scene_manager, LfRfidDebugSceneStart));
view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidDebugViewSubmenu);
}
bool lfrfid_debug_scene_start_on_event(void* context, SceneManagerEvent event) {
LfRfidDebug* app = context;
bool consumed = false;
if(event.type == SceneManagerEventTypeCustom) {
if(event.event == SubmenuIndexTune) {
scene_manager_next_scene(app->scene_manager, LfRfidDebugSceneTune);
consumed = true;
}
}
return consumed;
}
void lfrfid_debug_scene_start_on_exit(void* context) {
LfRfidDebug* app = context;
submenu_reset(app->submenu);
}

View File

@@ -1,4 +1,4 @@
#include "lfrfid_debug_app_scene_tune.h"
#include "../lfrfid_debug_i.h"
#include <furi_hal.h>
static void comparator_trigger_callback(bool level, void* comp_ctx) {
@@ -6,32 +6,38 @@ static void comparator_trigger_callback(bool level, void* comp_ctx) {
furi_hal_gpio_write(&gpio_ext_pa7, !level);
}
void LfRfidDebugAppSceneTune::on_enter(LfRfidDebugApp* app, bool /* need_restore */) {
app->view_controller.switch_to<LfRfidViewTuneVM>();
void lfrfid_debug_scene_tune_on_enter(void* context) {
LfRfidDebug* app = context;
furi_hal_gpio_init_simple(&gpio_ext_pa7, GpioModeOutputPushPull);
furi_hal_rfid_comp_set_callback(comparator_trigger_callback, this);
furi_hal_rfid_comp_set_callback(comparator_trigger_callback, app);
furi_hal_rfid_comp_start();
furi_hal_rfid_pins_read();
furi_hal_rfid_tim_read(125000, 0.5);
furi_hal_rfid_tim_read_start();
view_dispatcher_switch_to_view(app->view_dispatcher, LfRfidDebugViewTune);
}
bool LfRfidDebugAppSceneTune::on_event(LfRfidDebugApp* app, LfRfidDebugApp::Event* /* event */) {
bool lfrfid_debug_scene_tune_on_event(void* context, SceneManagerEvent event) {
UNUSED(event);
LfRfidDebug* app = context;
bool consumed = false;
LfRfidViewTuneVM* tune = app->view_controller;
if(tune->is_dirty()) {
furi_hal_rfid_set_read_period(tune->get_ARR());
furi_hal_rfid_set_read_pulse(tune->get_CCR());
if(lfrfid_debug_view_tune_is_dirty(app->tune_view)) {
furi_hal_rfid_set_read_period(lfrfid_debug_view_tune_get_arr(app->tune_view));
furi_hal_rfid_set_read_pulse(lfrfid_debug_view_tune_get_ccr(app->tune_view));
}
return consumed;
}
void LfRfidDebugAppSceneTune::on_exit(LfRfidDebugApp* /* app */) {
void lfrfid_debug_scene_tune_on_exit(void* context) {
UNUSED(context);
furi_hal_rfid_comp_stop();
furi_hal_rfid_comp_set_callback(NULL, NULL);

View File

@@ -0,0 +1,30 @@
#include "lfrfid_debug_scene.h"
// Generate scene on_enter handlers array
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_enter,
void (*const lfrfid_debug_on_enter_handlers[])(void*) = {
#include "lfrfid_debug_scene_config.h"
};
#undef ADD_SCENE
// Generate scene on_event handlers array
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_event,
bool (*const lfrfid_debug_on_event_handlers[])(void* context, SceneManagerEvent event) = {
#include "lfrfid_debug_scene_config.h"
};
#undef ADD_SCENE
// Generate scene on_exit handlers array
#define ADD_SCENE(prefix, name, id) prefix##_scene_##name##_on_exit,
void (*const lfrfid_debug_on_exit_handlers[])(void* context) = {
#include "lfrfid_debug_scene_config.h"
};
#undef ADD_SCENE
// Initialize scene handlers configuration structure
const SceneManagerHandlers lfrfid_debug_scene_handlers = {
.on_enter_handlers = lfrfid_debug_on_enter_handlers,
.on_event_handlers = lfrfid_debug_on_event_handlers,
.on_exit_handlers = lfrfid_debug_on_exit_handlers,
.scene_num = LfRfidDebugSceneNum,
};

View File

@@ -0,0 +1,29 @@
#pragma once
#include <gui/scene_manager.h>
// Generate scene id and total number
#define ADD_SCENE(prefix, name, id) LfRfidDebugScene##id,
typedef enum {
#include "lfrfid_debug_scene_config.h"
LfRfidDebugSceneNum,
} LfRfidDebugScene;
#undef ADD_SCENE
extern const SceneManagerHandlers lfrfid_debug_scene_handlers;
// Generate scene on_enter handlers declaration
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_enter(void*);
#include "lfrfid_debug_scene_config.h"
#undef ADD_SCENE
// Generate scene on_event handlers declaration
#define ADD_SCENE(prefix, name, id) \
bool prefix##_scene_##name##_on_event(void* context, SceneManagerEvent event);
#include "lfrfid_debug_scene_config.h"
#undef ADD_SCENE
// Generate scene on_exit handlers declaration
#define ADD_SCENE(prefix, name, id) void prefix##_scene_##name##_on_exit(void* context);
#include "lfrfid_debug_scene_config.h"
#undef ADD_SCENE

View File

@@ -0,0 +1,2 @@
ADD_SCENE(lfrfid_debug, start, Start)
ADD_SCENE(lfrfid_debug, tune, Tune)

View File

@@ -0,0 +1,229 @@
#include "lfrfid_debug_view_tune.h"
#include <gui/elements.h>
#define TEMP_STR_LEN 128
struct LfRfidTuneView {
View* view;
};
typedef struct {
bool dirty;
bool fine;
uint32_t ARR;
uint32_t CCR;
int pos;
} LfRfidTuneViewModel;
static void lfrfid_debug_view_tune_draw_callback(Canvas* canvas, void* _model) {
LfRfidTuneViewModel* model = _model;
canvas_set_color(canvas, ColorBlack);
if(model->fine) {
canvas_draw_box(
canvas,
128 - canvas_string_width(canvas, "Fine") - 4,
0,
canvas_string_width(canvas, "Fine") + 4,
canvas_current_font_height(canvas) + 1);
canvas_set_color(canvas, ColorWhite);
}
canvas_draw_str_aligned(canvas, 128 - 2, 2, AlignRight, AlignTop, "Fine");
canvas_set_color(canvas, ColorBlack);
char buffer[TEMP_STR_LEN + 1];
double freq = ((float)SystemCoreClock / ((float)model->ARR + 1));
double duty = ((float)model->CCR + 1) / ((float)model->ARR + 1) * 100.0f;
snprintf(
buffer,
TEMP_STR_LEN,
"%sARR: %lu\n"
"freq = %.4f\n"
"%sCCR: %lu\n"
"duty = %.4f",
model->pos == 0 ? ">" : "",
model->ARR,
freq,
model->pos == 1 ? ">" : "",
model->CCR,
duty);
elements_multiline_text_aligned(canvas, 2, 2, AlignLeft, AlignTop, buffer);
}
static void lfrfid_debug_view_tune_button_up(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
if(model->pos > 0) model->pos--;
return true;
});
}
static void lfrfid_debug_view_tune_button_down(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
if(model->pos < 1) model->pos++;
return true;
});
}
static void lfrfid_debug_view_tune_button_left(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
if(model->pos == 0) {
if(model->fine) {
model->ARR -= 1;
} else {
model->ARR -= 10;
}
} else if(model->pos == 1) {
if(model->fine) {
model->CCR -= 1;
} else {
model->CCR -= 10;
}
}
model->dirty = true;
return true;
});
}
static void lfrfid_debug_view_tune_button_right(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
if(model->pos == 0) {
if(model->fine) {
model->ARR += 1;
} else {
model->ARR += 10;
}
} else if(model->pos == 1) {
if(model->fine) {
model->CCR += 1;
} else {
model->CCR += 10;
}
}
model->dirty = true;
return true;
});
}
static void lfrfid_debug_view_tune_button_ok(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
model->fine = !model->fine;
return true;
});
}
static bool lfrfid_debug_view_tune_input_callback(InputEvent* event, void* context) {
LfRfidTuneView* tune_view = context;
bool consumed = false;
// Process key presses only
if(event->type == InputTypeShort || event->type == InputTypeRepeat) {
consumed = true;
switch(event->key) {
case InputKeyLeft:
lfrfid_debug_view_tune_button_left(tune_view);
break;
case InputKeyRight:
lfrfid_debug_view_tune_button_right(tune_view);
break;
case InputKeyUp:
lfrfid_debug_view_tune_button_up(tune_view);
break;
case InputKeyDown:
lfrfid_debug_view_tune_button_down(tune_view);
break;
case InputKeyOk:
lfrfid_debug_view_tune_button_ok(tune_view);
break;
default:
consumed = false;
break;
}
}
return consumed;
}
LfRfidTuneView* lfrfid_debug_view_tune_alloc() {
LfRfidTuneView* tune_view = malloc(sizeof(LfRfidTuneView));
tune_view->view = view_alloc();
view_set_context(tune_view->view, tune_view);
view_allocate_model(tune_view->view, ViewModelTypeLocking, sizeof(LfRfidTuneViewModel));
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
model->dirty = true;
model->fine = false;
model->ARR = 511;
model->CCR = 255;
model->pos = 0;
return true;
});
view_set_draw_callback(tune_view->view, lfrfid_debug_view_tune_draw_callback);
view_set_input_callback(tune_view->view, lfrfid_debug_view_tune_input_callback);
return tune_view;
}
void lfrfid_debug_view_tune_free(LfRfidTuneView* tune_view) {
view_free(tune_view->view);
free(tune_view);
}
View* lfrfid_debug_view_tune_get_view(LfRfidTuneView* tune_view) {
return tune_view->view;
}
void lfrfid_debug_view_tune_clean(LfRfidTuneView* tune_view) {
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
model->dirty = true;
model->fine = false;
model->ARR = 511;
model->CCR = 255;
model->pos = 0;
return true;
});
}
bool lfrfid_debug_view_tune_is_dirty(LfRfidTuneView* tune_view) {
bool result = false;
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
result = model->dirty;
model->dirty = false;
return false;
});
return result;
}
uint32_t lfrfid_debug_view_tune_get_arr(LfRfidTuneView* tune_view) {
uint32_t result = false;
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
result = model->ARR;
return false;
});
return result;
}
uint32_t lfrfid_debug_view_tune_get_ccr(LfRfidTuneView* tune_view) {
uint32_t result = false;
with_view_model(
tune_view->view, (LfRfidTuneViewModel * model) {
result = model->CCR;
return false;
});
return result;
}

View File

@@ -0,0 +1,18 @@
#pragma once
#include <gui/view.h>
typedef struct LfRfidTuneView LfRfidTuneView;
LfRfidTuneView* lfrfid_debug_view_tune_alloc();
void lfrfid_debug_view_tune_free(LfRfidTuneView* tune_view);
View* lfrfid_debug_view_tune_get_view(LfRfidTuneView* tune_view);
void lfrfid_debug_view_tune_clean(LfRfidTuneView* tune_view);
bool lfrfid_debug_view_tune_is_dirty(LfRfidTuneView* tune_view);
uint32_t lfrfid_debug_view_tune_get_arr(LfRfidTuneView* tune_view);
uint32_t lfrfid_debug_view_tune_get_ccr(LfRfidTuneView* tune_view);

View File

@@ -0,0 +1,11 @@
App(
appid="text_box_test",
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,
fap_category="Debug",
)

View File

@@ -0,0 +1,12 @@
App(
appid="uart_echo",
name="UART Echo",
apptype=FlipperAppType.PLUGIN,
entry_point="uart_echo_app",
cdefines=["APP_UART_ECHO"],
requires=["gui"],
stack_size=2 * 1024,
order=70,
fap_icon="../../../assets/icons/Archive/keyboard_10px.png",
fap_category="Misc",
)

View File

@@ -10,7 +10,7 @@ App(
App(
appid="delay_test",
name="Delay Test",
apptype=FlipperAppType.DEBUG,
apptype=FlipperAppType.SYSTEM,
entry_point="delay_test_app",
stack_size=1 * 1024,
requires=["unit_tests"],

View File

@@ -1,8 +1,9 @@
#include <furi.h>
#include <furi_hal.h>
#include <applications/storage/storage.h>
#include <storage/storage.h>
#include <lib/flipper_format/flipper_format.h>
#include <lib/nfc/protocols/nfca.h>
#include <lib/nfc/helpers/mf_classic_dict.h>
#include <lib/digital_signal/digital_signal.h>
#include <lib/flipper_format/flipper_format_i.h>
@@ -170,10 +171,59 @@ MU_TEST(nfc_digital_signal_test) {
"NFC long digital signal test failed\r\n");
}
MU_TEST(mf_classic_dict_test) {
MfClassicDict* instance = NULL;
uint64_t key = 0;
string_t temp_str;
string_init(temp_str);
instance = mf_classic_dict_alloc(MfClassicDictTypeUnitTest);
mu_assert(instance != NULL, "mf_classic_dict_alloc\r\n");
mu_assert(
mf_classic_dict_get_total_keys(instance) == 0,
"mf_classic_dict_get_total_keys == 0 assert failed\r\n");
string_set(temp_str, "2196FAD8115B");
mu_assert(
mf_classic_dict_add_key_str(instance, temp_str),
"mf_classic_dict_add_key == true assert failed\r\n");
mu_assert(
mf_classic_dict_get_total_keys(instance) == 1,
"mf_classic_dict_get_total_keys == 1 assert failed\r\n");
mu_assert(mf_classic_dict_rewind(instance), "mf_classic_dict_rewind == 1 assert failed\r\n");
mu_assert(
mf_classic_dict_get_key_at_index_str(instance, temp_str, 0),
"mf_classic_dict_get_key_at_index_str == true assert failed\r\n");
mu_assert(
string_cmp(temp_str, "2196FAD8115B") == 0,
"string_cmp(temp_str, \"2196FAD8115B\") == 0 assert failed\r\n");
mu_assert(mf_classic_dict_rewind(instance), "mf_classic_dict_rewind == 1 assert failed\r\n");
mu_assert(
mf_classic_dict_get_key_at_index(instance, &key, 0),
"mf_classic_dict_get_key_at_index == true assert failed\r\n");
mu_assert(key == 0x2196FAD8115B, "key == 0x2196FAD8115B assert failed\r\n");
mu_assert(mf_classic_dict_rewind(instance), "mf_classic_dict_rewind == 1 assert failed\r\n");
mu_assert(
mf_classic_dict_delete_index(instance, 0),
"mf_classic_dict_delete_index == true assert failed\r\n");
mf_classic_dict_free(instance);
string_clear(temp_str);
}
MU_TEST_SUITE(nfc) {
nfc_test_alloc();
MU_RUN_TEST(nfc_digital_signal_test);
MU_RUN_TEST(mf_classic_dict_test);
nfc_test_free();
}

View File

@@ -13,7 +13,7 @@
#define CAME_ATOMO_DIR_NAME EXT_PATH("subghz/assets/came_atomo")
#define NICE_FLOR_S_DIR_NAME EXT_PATH("subghz/assets/nice_flor_s")
#define TEST_RANDOM_DIR_NAME EXT_PATH("unit_tests/subghz/test_random_raw.sub")
#define TEST_RANDOM_COUNT_PARSE 232
#define TEST_RANDOM_COUNT_PARSE 233
#define TEST_TIMEOUT 10000
static SubGhzEnvironment* environment_handler;
@@ -434,6 +434,13 @@ MU_TEST(subghz_decoder_clemsa_test) {
"Test decoder " SUBGHZ_PROTOCOL_CLEMSA_NAME " error\r\n");
}
MU_TEST(subghz_decoder_oregon2_test) {
mu_assert(
subghz_decoder_test(
EXT_PATH("unit_tests/subghz/oregon2_raw.sub"), SUBGHZ_PROTOCOL_OREGON2_NAME),
"Test decoder " SUBGHZ_PROTOCOL_OREGON2_NAME " error\r\n");
}
//test encoders
MU_TEST(subghz_encoder_princeton_test) {
mu_assert(
@@ -595,6 +602,7 @@ MU_TEST_SUITE(subghz) {
MU_RUN_TEST(subghz_decoder_magellen_test);
MU_RUN_TEST(subghz_decoder_intertechno_v3_test);
MU_RUN_TEST(subghz_decoder_clemsa_test);
MU_RUN_TEST(subghz_decoder_oregon2_test);
MU_RUN_TEST(subghz_encoder_princeton_test);
MU_RUN_TEST(subghz_encoder_came_test);

View File

@@ -0,0 +1,12 @@
App(
appid="usb_mouse",
name="USB Mouse",
apptype=FlipperAppType.PLUGIN,
entry_point="usb_mouse_app",
cdefines=["APP_USB_MOUSE"],
requires=["gui"],
stack_size=1 * 1024,
order=60,
fap_icon="../../plugins/mousejacker/mouse_10px.png",
fap_category="Misc",
)

View File

@@ -0,0 +1,11 @@
App(
appid="usb_test",
name="USB Test",
apptype=FlipperAppType.DEBUG,
entry_point="usb_test_app",
cdefines=["APP_USB_TEST"],
requires=["gui"],
stack_size=1 * 1024,
order=50,
fap_category="Debug",
)

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