Commit graph

1503 commits

Author SHA1 Message Date
Sergei Gavrilov
730026c87a
[FL-3844] Loader: fix crash on "locked via cli loader" (#3706) 2024-06-13 12:38:24 +01:00
Astra
cf8c82c451
[FL-3746] Mifare Plus detection support (#3607)
* Initial MFPlus draft
* Proper detection (WIP)
* Mifare Plus detection done
* Bump F18 API
* Alloc takes no arguments
* Fixes from code review
* Remove leftover logging
* Remove stray reminder comment
* Review changes and extra logging
* Fix atqa detection
* Fix incorrect comparison
* ATQA byte swap fix
* mf plus: code clean up
* mf plus: remove unused code
* mf plus: fix read fail event handling
* mf plus: fix return error codes
* mf plus: handle load and save errors
* mf plus: assert -> check in public API funxtion
* Bump API Symbols version
* Fix wrong feature mask
* Skylanders plugin separation
* Fix navigation
* Fix info box size

Co-authored-by: gornekich <n.gorbadey@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-06-10 20:36:46 +01:00
あく
6d8b050eda
[FL-3833] Furi: event loop (#3675)
* Furi: epoll prototype

* Gui: simplify view_dispatcher custom event processing

* Furi: add missing critical sections to epoll

* Furi: add epoll unit tests, fully implement level processing for in and out events

* Furi: properly trigger epoll item event on adding mq, update tests.

* Unit tests: cleanup defines

* Furi: protect epoll from modification in callback

* Furi: rename epoll into event_loop, cleanup api naming

* Sync API Symbols

* Furi: add event loop contract and link api, port mq to new api, cleanup code

* Format Sources

* Furi: cleanup mq and event loop code

* Furi: remove unused staff from message queue

* ApiSymbols: remove event loop from public APIs.

* Fix furi unit tests

---------

Co-authored-by: Georgii Surkov <georgii.surkov@outlook.com>
Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
2024-06-10 20:53:08 +03:00
あく
0bc400a3ae
Code Cleanup: unused includes, useless checks, unused variables, etc... (#3696)
* Remove unnecessary checks
* Sublime: never insert missing headers
* Cleanup furi defines use
* Cleanup startup. Cleanup linker scripts. Explicitly define all interrupts hadlers, including uninmplemented one.
* Startup routine in C
* Drop assembler startup
* Move linker defines to stm32wb55_linker.h, cleanup naming, unify usage. Mpu: protect last 32b of main stack. Document various obscure things.
* Move furi_hal_switch documentation to appropriate place, use 0x0 for updater jump.
* UnitTests: move all temporary test files into tmp folder

---------

Co-authored-by: SG <who.just.the.doctor@gmail.com>
2024-06-11 03:04:29 +10:00
Skorpionm
ef0300d239
[FL-3840] SubGhz: fix gui "No transition to the "Saved" menu when deleting a SubGHz RAW file" (#3695)
* SubGhz: fix gui "No transition to the "Saved" menu when deleting a SubGHz RAW file"
* SubGhz: remove dead code

Co-authored-by: あく <alleteam@gmail.com>
2024-06-08 15:45:31 +01:00
RebornedBrain
467e973da2
[FL-3810] Felica emulation (#3673)
* Moved some structs and defs from poller to generic felica
* Buffer size increased for transferring more data
* Felica HAL Tx function implemented
* Some structs and fields for listener
* Raw listener implementation
* Added new event for felica activation
* Proper config fot listener added
* Moved some structs from poller in order to use them in listener too
* New function for calculating MAC
* Listener data structures and function definitions
* Private listener functions implementation added
* Raw felica listener logic implementation added
* Fix total sector count both for poller and listener
* Defined type for write handlers
* New logic for write operations added
* Removed old commented code
* Splitted read logic into several separate functions
* New type added and some fields to instance
* New logic of read command implemented
* Defines added for response codes
* Functions moved to private namespace
* Function visibility changed and some cleanups
* Update felica_listener.c, felica_listener_i.c, and felica_listener_i.h
* Some type adjustments
* Moved frame_exchange function to private namespace
* Error handling added
* Function to get data_ptr for write request added
* Missing declaration added
* Add processing of nfc errors
* write_with_mac is a local variable now
* Adjustments to MAC calculation logic
* Values replaced with defines
* Update nfc_transport.c with felica logic
* Sync felica poller added for unit tests
* Felica unit_tests and data dump added
* Fixed proper reading of MAC_A block when it is 1st
* Macro definitions for MC added
* Function simplified
* More defines
* CRC check for incomming packets added
* Readonly logic adjusted
* Block write validation adjusted
* New logic for ID block writing
* Some cleanups
* New logic of moving across the block list with different element length
* Some cleanups
* Adjusted requires_mac logic to cover all blocks needed
* Cleanups and renaming
* New block list validation logic
* Block list logic iteration simplified
* Some asserts and checks added
* Replaced MC[2] checks with macros
* Marked def values as unsigned
* Removed old code
* Removed commented function declarations
* Changed protected block in felica test card dump and adjusted tests
* Fixes after merge
* Moved defines to header
* Now we allocate memory for max possible response pack in any case
* Some renaming and documentation
* Bump api symbols
* Set feature to emulate full for felica
* Removed 'More' button and added MoreInfo feature which adds this button back
* Types renamed
* Removed unnecessary code
* Reformat comments
* Fixing missing signatures
* Replaced crash with error log and return value
* Format doxygen comments

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-06-08 15:24:51 +01:00
RebornedBrain
ba3beeddeb
[FL-3811] Write to ultralight cards is now possible (#3684)
* Added new function which returns end block for write operation
* Enabled write menu item also for Ultralight 11 and 21
* Fix api_symbols.csv for f18
* Bump Api Symbols

Co-authored-by: あく <alleteam@gmail.com>
2024-06-08 14:38:02 +01:00
WillyJL
2f9ca172e3
RPC: Add TarExtract command, some small fixes (#3685)
* RPC: Add TarExtract command
* Tar: Fix unpack when not at FS root
* RPC: Add missing storage state resets
* Fix dupe state reset
* Bump pb submodule
* Switch to latest protobuf release
* RPC: cleanup excessive furi_record calls in rpc_storage

Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-06-08 14:15:12 +01:00
RebornedBrain
7ff785d71f
[FL-3786] Fixed infinite loop in dictionary attack scene (#3686)
Co-authored-by: あく <alleteam@gmail.com>
2024-06-08 12:51:54 +01:00
Georgii Surkov
418a98c299
[FL-3808] Fix renaming directories with dots in archive (#3692) 2024-06-08 12:32:30 +01:00
Georgii Surkov
20c4121f25
[FL-3832] Use static synchronisation primitives (#3679)
* Use static mutex
* Add static_assert checks
* Use static semaphore
* Fix formatting
* Use static stream buffer
* Use static timer
* Use static event group
* Increase allocation size for stream buffer
* Remove recursive bit from the mutex before freeing
* Prevent service tasks from ever returning
* Use static threads
* Do not realloc memory when changing stack size
* Use FuriSemaphore instead of raw FreeRTOS one in rpc_test
* Remove redundant includes
* Abolish FreeRTOS dynamic allocation
* Improve FuriMutex
* Improve FuriMessageQueue
* Remove redundant comments and parentheses
* Clean up code more
* Create service threads via a dedicated constructor
* Minor code improvements
* Update docs for FuriThread, FuriTimer
* Fix doxygen typo
* Use a bigger buffer for static StreamBuffer
* Furi: remove timer control block only when timer thread have completed all operations
---------

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-06-05 18:04:03 +01:00
hedger
03196fa110
cleanup of various warnings from clangd (#3682)
* cleanup of various warnings from clangs
* lfrfid_debug: cast fixes
* subghz: binraw: round->roundf
* furi: thread: updated internal stack size variable to size_t
* github: fail faster on unsuccessful build
* unit_tests: double trouble
2024-06-03 14:43:23 +01:00
Filipe Paz Rodrigues
0d4ead8fbd
Add initial ISO7816 support (#3681)
* Add initial ISO7816 support
* Format sources and sync API Symbols version
* Debug: change VID/PID in ccid test app to opensc detectable generic one

Co-authored-by: あく <alleteam@gmail.com>
2024-06-01 17:45:27 +01:00
Skorpionm
83e4bcc35a
SubGhz: Princeton protocol add custom guard time (#3671)
* SubGhz: Princeton protocol add custom guard time
* SubGhz: fix type var
* SubGhz: fix syntax
* SubGhz: add define PRINCETON_GUARD_TIME_DEFALUT
* Update princeton.c

Co-authored-by: あく <alleteam@gmail.com>
2024-06-01 12:15:24 +01:00
あく
3f04d6dd46
Furi: wrap message queue in container, prepare it for epoll. Accessor: disable expansion service on start. (#3672)
* Furi: wrap message queue in container, prepare it for epoll. Accessor: disable expansion service on start.
* Furi: one allocation, smaller message queue struct, type compatibility with FreeRTOS.
2024-05-30 12:58:03 +01:00
Konstantin Volkov
f309844ee0
[FL-3797] Favorite apps navigation fix and text fixes (#3670)
* fixed navigation in dummy mode, fixed wording for button presses and menus
* suppress PVS warnings

Co-authored-by: doomwastaken <k.volkov@flipperdevices.com>
2024-05-28 12:57:03 +01:00
gornekich
ab2fcaf4ab
[FL-3829] NFC App: fix changing UID (#3663)
* nfc app: fix changing uid on each byte change
* nfc app: remove unused code
2024-05-23 13:46:00 +01:00
あく
8ba938cec1
[FL-3775] Archive: fix condition race on exit (#3659)
* Archive: fix condition race on exit

* Format sources and remove debug logging

---------

Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-05-22 21:35:59 +04:00
gornekich
11070c9e5e
Text Box: fix displaying text with end text focus (#3658)
* text box: fix reset text offset state after initial text iteration
* debug: add tests for text box view debug app
* hal: flash: removed redundant #else

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

Co-authored-by: あく <alleteam@gmail.com>
2024-05-20 18:23:47 +01:00
gornekich
d5339f8270
[FL-3816] Text Box rework (#3642)
* text box: rework text box to use less memory
* text box: optimize lines iteration
* text box: fix back scrolling
* text box: add end focus support
* text box: allocate index buffer on stack instead of heap
* text box: fix index decrement
* apps: add text box debug app
* debug: rework text box view app with view stack
* debug app: rename text_box_test app to text_box_element_test
* text box: rework text box module
* debug: update text box view test
* text box: fix end focus initial offset
* debug: fix memory leak in text box view test app

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
2024-05-20 16:13:20 +01:00
WillyJL
de4b086083
Fix calling both view_free_model() and view_free() (#3655) 2024-05-18 19:40:01 +01:00
WillyJL
0d456aa550
JS: Add textbox module (#3597)
* JS: Add textbox module
* Using view_holder instead of view_dispatcher, more checks in js_textbox_show
* API version sync
* Rename emptyText() to clearText()
* Keeping view_holder allocated for thread sefety
* Js: proper comparision with 0 in js_math_sign
* Js: add comments and fix condition race in textbox

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: nminaylov <nm29719@gmail.com>
2024-05-17 18:43:52 +01:00
WillyJL
c673b53e21
JS: Add math module (#3598)
* JS: Add math module
* Double constants
* Error on argument type mismatch
* Fix missing returns
* Using sin, exp from c library
* asin, acos, pow, sqrt too
* Js: tests for math module and various fixes.

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: nminaylov <nm29719@gmail.com>
2024-05-17 17:45:40 +01:00
gornekich
217bfac2fc
NFC: add Slix capabilities (#3652)
* iso15693 listener: fix inventory cmd and buffer overflow
* iso15 listener: fix read multiple blocks command
* slix: print password
* slix: add capabilities field
* slix listener: skip password validation for special capability
* slix: fix capability name
* slix: add capabilities handler to verify and reset
* nfc test: introduce slix tests
* fbt: change toolchain back to 33 version
* slix: fix saving capablities comment
* unit tests: add slix files to resources
* slix: fix set passwrd signature
* nfc tests: add set correct password test
* nfc test: complete slix password tests
* nfc test: add slix file test
* nfc test: handle errors in worker callback
* iso15693_3: code clean up
* iso15693_listener: fix incorrect afi handling
* slix: chage capabilities format to one word camel case
* unit tests: update nfc files with new slix format

Co-authored-by: あく <alleteam@gmail.com>
2024-05-17 12:58:32 +01:00
Astra
603a86dbe6
[FL-3797] Settings refactor fixes (#3654) 2024-05-17 12:52:42 +01:00
WillyJL
63403bbae2
JS: Add submenu module (#3601)
* JS: Add submenu module
* Using view_holder instead of view_dispatcher

Co-authored-by: nminaylov <nm29719@gmail.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-05-16 18:55:08 +01:00
あく
7c63bf7574
Revert "TLSF memory allocator. Less free flash, moar free ram. (#3572)" (#3651)
* Revert "TLSF memory allocator. Less free flash, moar free ram. (#3572)"

This reverts commit 1d17206e23.

* Fix PVS warnings

* github: logging for ticket number checks to stdout

* memgr: removed offending todo

---------

Co-authored-by: hedger <hedger@nanode.su>
2024-05-16 18:43:27 +04:00
Eric Betts
50bee67748
Skylanders plugin (#3315)
* PoC skylanders plugin
* based on db0c7e4fad
* More figures
* Fix util methods

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: gornekich <n.gorbadey@gmail.com>
2024-05-15 19:09:08 +01:00
Sergei Gavrilov
1d17206e23
TLSF memory allocator. Less free flash, moar free ram. (#3572)
* add tlsf as submodule
* libs: tlsf
* Furi: tlsf as allocator
* Furi: heap walker
* shmal fixshesh
* f18: tlsf
* PVS: ignore tlsf
* I like to moving
* merge upcoming changes
* memmgr: alloc aligned, realloc
* Furi: distinct name for auxiliary memory pool
* Furi: put idle and timer thread to mem2
* Furi: fix smal things in allocator
* Furi: remove aligned_free. Use free instead.
* aligned_malloc -> aligned_alloc
* aligned_alloc, parameters order
* aligned_alloc: check that alignment is correct
* unit test: malloc
* unit tests: realloc and test with memory fragmentation
* unit tests: aligned_alloc
* update api
* updater: properly read large update file

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-05-15 16:47:21 +01:00
Astra
e3f95a326b
[FL-3797] Settings menu refactoring (#3632)
* Settings menu refactoring
* Update F18 api
* Wording changes
* Update certification icon
* Desktop: optimize settings save routine, fix navigation lag
* Gui: add submenu position getter. Desktop: proper menu index preservation.
* Gui: proper index getter for submenu. Desktop: cleaner settings navigation.

Co-authored-by: あく <alleteam@gmail.com>
2024-05-14 19:58:09 +01:00
gornekich
5f9b300ab2
NFC: Mf Desfire fix reading big files (#3616)
* mf desfire: fix incorrect long files reading
* nfc app: trim record size for mf desfire render
* mf desfire: rework reading long record files
* mf desfire: more robust size check

Co-authored-by: あく <alleteam@gmail.com>
2024-05-14 13:34:27 +01:00
hakuyoku2011
a7715704f8
Infrared: Add Toshiba RAS-2518D (#3635)
* Infrared: Add Toshiba RAS-2518D
* Infrared: cleanup AC universal remote

Co-authored-by: あく <alleteam@gmail.com>
2024-05-14 13:15:30 +01:00
あく
b12d43b765
Desktop: fix crash on autolock after restart in locked state (#3643)
* Desktop: fix crash on autolock after restart in locked state
* Desktop: switch to clock model to fix condition race in desktop lock.
2024-05-10 16:01:33 +01:00
あく
43c4381820
[FL-3814] Desktop: cleanup error popups (#3615)
* Desktop: cleanup error popups, add missing factory keys notification
* Desktop: enclave warning wording
2024-04-25 08:39:38 +09:00
Astra
1559ee6293
[Fl-3809] Troika parser visual fixes (#3614)
Co-authored-by: あく <alleteam@gmail.com>
2024-04-24 21:47:40 +09:00
Astra
34abaa7e27
[FL-3815] Fix the retry/exit confirmation prompts in iButton (#3613) 2024-04-24 21:35:15 +09:00
gornekich
c87683596a
nfc app: add legacy keys for plantain cards (#3602)
Co-authored-by: あく <alleteam@gmail.com>
2024-04-19 23:22:07 +09:00
WillyJL
9bef2aaec6
GUI: Fix array out of bounds in menu exit (#3604)
* GUI: Fix array out of bounds in menu exit
* Gui: fix incorrect empty menu handling
* Gui: add missing item check in menu ok handling
* Gui: remove dead code from menu module

Co-authored-by: あく <alleteam@gmail.com>
2024-04-19 23:10:48 +09:00
Astra
0d73a58123
Mosgortrans parser output fixes (#3554)
* Fix mosgortrans/troika newlines and mark unused variables
* Supress warnings for TODOs that don't need a ticket

Co-authored-by: あく <alleteam@gmail.com>
2024-04-19 21:01:57 +09:00
gornekich
be43e49869
nfc app: fix false positive verification in bip plugin (#3595)
Co-authored-by: あく <alleteam@gmail.com>
2024-04-18 09:56:39 +09:00
MMX
00970a4b12
Allow setting view_dispatcher callbacks to NULL again (#3580)
Co-authored-by: あく <alleteam@gmail.com>
2024-04-18 09:34:33 +09:00
KRukus9
94c2d7a4e3
Update tv.ir (#3584)
Co-authored-by: あく <alleteam@gmail.com>
2024-04-18 08:12:02 +09:00
Astra
4883383b20
[FL-3679] iButton new UI (#3471)
* iButton new UI
* UI final touches
* Satisfy PVS

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
2024-04-18 08:05:37 +09:00
あく
70f93a48f5
[FL-2969] FuriHal: add ADC API (#3583)
* Examples: remove unused context
* FuriHal: add simple ADC API
* Examples: add ADC example app
* FuriHal: add extended configuration options for ADC API
* FuriHal: add ADC clock configuration, fix calibration routine for single ended mode, new optimized parameters, documentation.
* FuriHal: add FuriHalAdcChannelTEMPSENSOR sampling time note
* FuriHal: update FuriHalAdcChannelVBAT description.
* FuriHal: use insomnia while ADC is acquired.
* Examples: cleanup example_adc a little bit
2024-04-18 00:17:40 +09:00
gornekich
1a40fae003
[FL-3750] Mf Desfire multiple file rights support (#3576)
* mf desfire: remove unused type
* mf desfire: continue reading after failed get free mem cmd
* mf desfire: fix processing read master key settings command
* mf desfire: don't read applications if they are auth protected
* mf desfire: handle multiple rights
* mf desfire: fix PVS warnings
* mf desfire: fix print format
* mf desfire: fix logs
* mf classic: add send frame functions to poller
* unit tests: add test from mfc crypto frame exchange
* mf classic: add documentation
* mf classic: fix incorrect name
* target: fix api version
2024-04-16 14:55:24 +09:00
RebornedBrain
fb9728d570
[FL-3772] Felica poller (#3570)
* New types for felica poller
* New functions for felica data transmissions
* Felica memory map extended with new fields
* Init/deinit of mbedtls context added for felica encryption
* Functions for session key and mac calculations added
* Raw felica_poller implementation added
* Removed MAC type parameter from check_mac function
* Replaced all data fields needed for auth with context structure
* Clean up felica_poller.c
* Now RC block is filled with random numbers
* New parameter for counting well-read blocks
* Some cleanups
* Felica file save and load logic added
* Now we use card key from context for session key calculation
* Copying card key to card block from auth context when both authentications succeeded, otherwise decrement blocks count by 1
* New felica poller event added
* Moved some data structions to public namespace
* FelicaAuthenticationContext struct moved to felica.h
* Field type and name changed for better ones
* Helper functions for felica_auth added to the app
* New scene for felica card key input added
* Logic for felica key input added
* Auth context request processing added
* Added block index definitions and replaced all index numbers with them
* More macro defines
* Replace nesting with do while block
* New function for write operations mac calculation added
* Replace nesting with do while block
* Make functions static for now because they are used internally
* Wrote some comments
* Raw felica render implementation
* New felica scenes
* Adjusted felica dump rendering according design requirements
* New felica scene added
* Helper for switching scene during unlock added
* Added warning scene and transfer to it
* Moved unlock scene logic to separate files
* Magic number changed
* New felica render logic
* Felica scenes adjusted according to design requirements
* Felica poller cleanups
* Some asserts added and some fixed
* Replcaed asserts to checks in public api
* Fixed pvs warnings in felica_poller
* New event for felica_poller added for incomplete read actions
* Handling of new poller event added
* Update SConscript with felica files
* Update api_symbols.csv with felica functions
* Sync API versions

Co-authored-by: あく <alleteam@gmail.com>
2024-04-10 18:51:36 +09:00
Victor Nikitchuk
db14ca964b
Status output !TX/RX on the GDO2 CC1101 pin (#3571)
* Status output !TX/RX on the GDO2 CC1101 pin\
* Fix PVS warnings

Co-authored-by: あく <alleteam@gmail.com>
2024-04-10 00:05:30 +09:00
WillyJL
e3ca293eee
Desktop/Loader: Unload animations before loading FAPs (#3573)
* Desktop: Unload animations before FAP is loaded
* Loader: Add API to start detached (returns instantly, queues event)
* Desktop: Fix early animation unload deadlocks
* Loader: remove redundant event
* Bump api symbols

Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: SG <who.just.the.doctor@gmail.com>
2024-04-09 22:42:03 +09:00
Sergei Gavrilov
5431257470
[FL-3765][FL-3737] Desktop: ensure that animation is unloaded before app start (#3569)
* Desktop: ensure that animation is unloaded before app start
* Desktop: unload animation only if it is loaded
2024-04-04 21:42:58 +09:00