* Streams: string stream
* String stream: updated insert/delete api
* Streams: generic stream interface and string stream implementation
* Streams: helpers for insert and delete_and_insert
* FFF: now compatible with streams
* MinUnit: introduced tests with arguments
* FFF: stream access violation
* Streams: copy data between streams
* Streams: file stream
* FFF: documentation
* FFStream: documentation
* FFF: alloc as file
* MinUnit: support for nested tests
* Streams: changed delete_and_insert, now it returns success flag. Added ability dump stream inner parameters and data to cout.
* FFF: simplified file open function
* Streams: unit tests
* FFF: tests
* Streams: declare cache_size constant as define, to allow variable modified arrays
* FFF: lib moved to a separate folder
* iButton: new FFF
* RFID: new FFF
* Animations: new FFF
* IR: new FFF
* NFC: new FFF
* Flipper file format: delete lib
* U2F: new FFF
* Subghz: new FFF and streams
* Streams: read line
* Streams: split
* FuriCore: implement memset with extra asserts
* FuriCore: implement extra heap asserts without inventing memset
* Scene manager: protected access to the scene id stack with a size check
* NFC worker: dirty fix for issue where hal_nfc was busy on app start
* Furi: update allocator to erase memory on allocation. Replace furi_alloc with malloc.
* FuriCore: cleanup memmgr code.
* Furi HAL: furi_hal_init is split into critical and non-critical parts. The critical part is currently clock and console.
* Memmgr: added ability to track allocations and deallocations through console.
* FFStream: some speedup
* Streams, FF: minor fixes
* Tests: restore
* File stream: a slightly more thread-safe version of file_stream_delete_and_insert
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* Makefile, Scripts: new linter
* About: remove ID from IC
* Firmware: remove double define for DIVC/DIVR
* Scripts: check folder names too. Docker: replace syntax check with make lint.
* Reformat Sources and Migrate to new file naming convention
* Docker: symlink clang-format-12 to clang-format
* Add coding style guide
* Lib: always include rfal
* Gui: remove screen_stream
* Input: decouple from Cli
* Loader: decouple from Cli
* Desktop: ignore missing favorite app, decouple from Archive
* Make: make Notification a Gui dependency
* Make: embed debugging information into elfs
* Loader: hide Plugins submenu when plugins ga arimasen
* Applications: update on start hook usage
* Loader: fix dead lock on menu rebuild with open rpc, new cli command.
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* Project: fix release build, replace asserts with checks.
* FuriHal: i2c refactoring, new bus access model, flexible bus gpio configuration.
* FuriHal: set i2c pins to high on detach.
* FuriHal: more i2c bus events, put bus under reset when not used, move bus enable/disable routine to bus handler.
* FuriHal: fix i2c deadlock in power api, add external i2c handle.
- RPC: added CLI command to start session - all input bytes goes into RPC, all RPC output goes into VCP
- RPC: added command to close session (actually it only notifies transport layer)
- RPC: added recursive rmdir
- RPC: hard-coded listing for root directory (any, ext, int)
- Fixed CLI leak
- Fixed furi_record_delete leak
- Unit tests: repaired
- Unit tests: corrected output - remove excess, change dots with progress spinner
- Unit tests: added leak check
- Unit tests: SD mount check before start
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* RPC: Add App start, lock status
- Add RPC commands Application start, lock status acquiring.
- Write tests for RPC App system.
- Replace Unit Tests application with CLI command. This is for CI needs and for tests that run application.
* Fix NDEBUG build
* Update PB submodule
* Fix RPC print (ENABLE DEBUG PRINT!)
* snprintf -> string_t
* Fix Hard Fault (early mutex free)
* printf -> string_t, format, enable tests
* Update submodule: protobuf
* Applications: rollback unit test naming scheme.
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* Unit tests: fix IRDA test data
* Fix format-errors on test data files
* Fix sticking red/green light on unit-tests
Co-authored-by: あく <alleteam@gmail.com>
Co-authored-by: Albert Kharisov <albert@flipperdevices.com>
* Add cscope db generation
* Add api-hal-irda, TIM2: HAL->LL
* Add libirda: pwm decoding
* Universal state machine
* Add irda decoder library
* Move IRDA capture to standalone tool
* Add encoder/decoder samsung32, NEC, fix bugs
* Port current App to new Irda lib
* Fix clang format for test data
* Port IRDA api-hal to f6
Co-authored-by: あく <alleteam@gmail.com>
* Furi: replace obsolete furiac_exit with osThreadExit, drop obsolete apis and test. Rename systemd to flipper and move to separate file, cleanup. ApiHal: Rename timebase to os and move freertos hooks there, move insomnia api to power module.
* Furi: new thread helper
* Furi: cleanup thread documentation
* Flipper, AppLoader: update to use FuriThread. Update tasks signatures to match FuriThreadCallback signature.
* F4: rename API_HAL_TIMEBASE_DEBUG to API_HAL_OS_DEBUG
* Applications: rename FuriApplication to FlipperApplication, use FuriThreadCallback signature for apps.
* C++ app template sample, new exit method
* SYSTEM: tickless mode with deep sleep.
* Move FreeRTOS ticks to lptim2
* API: move all sumbodules init routines to one place. Timebase: working lptim2 at tick source.
* API Timebase: lp-timer routines, timer access safe zones prediction and synchronization. FreeRTOS: adjust configuration for tickless mode.
* NFC: support for tickless mode.
* API Timebase: improve tick error handling in IRQ. Apploader: use insomnia mode to run applications.
* BLE: prevent sleep while core2 starting
* HAL: nap while in insomnia mode
* init records work
* try to implement record delete
* tests and flapp
* flapp subsystem
* new core functions to get app stat, simplify core code
* fix thread termination
* add strdup to core
* fix tests
* Refactoring: remove all unusued parts, update API usage, aggreagate API sources and headers, new record storage
* Refactoring: update furi record api usage, cleanup code
* Fix broken merge for freertos apps
* Core, Target: fix compilation warnings
* Drop firmware target local
* HAL Timebase, Power, Clock: semaphore guarded access to clock and power modes, better sleep mode.
* SD-Filesystem: wait for all deps to arrive before adding widget. Core, BLE: disable debug dump to serial.
* delete old app example-ipc
* delete old app fatfs list
* fix strobe app, add input header
* delete old display driver
* comment old app qr-code
* fix sd-card test, add forced widget update
* remove unused new core test
* increase heap to 128k
* comment and assert old core tests
* fix syntax
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* add delay function
* todo about delay_isr
* remove arduino defines and fix all apps to use core-api/hal-api
* delay for local target
* remove warnings of task_equal
* fix BSP_SD_Init
* fix USBD_static
* grio read constant pointer to gpio
* add TODO about ISR context
* const void* arg for pubsub api
* mark unused functions
* app pointers now pointed to constant apps
* fix printf format
* fix "unused" warnings in local target
* fix const pin read in local target
* fix int to pointer warnings in local target
* power read mutex error fix
* delete old makefile
* add -werror
Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
* Fix ValueManager implementation
* Implement ValueComposer
* Add constructor for ValueManager
* Add value-expanders.h to flipper_v2.h set
* Move COPY_COMPOSE body into a .c file
* Add test for ValueManager
* Add destructors for ValueMutex, ValueManager and ValueComposer
* Use destructors in tests
* Move composition logic into perform_compose()
* Add docs for perform_compose()
* Add test for ValueComposer
* Replace atomic_bool with bool as g++ compiler doesn't support C11 atomics
* Add Event type
* Add semaphore support to the local target
* Add test for Event
* Update input records and relevant examples
* Rename Event to AppEvent in the cc1101-workaround example
* Rename Event to AppEvent in the irda example
* Use Event in ValueComposer to wait for update request
* Add perform_compose_internal() function
* fix Event/AppEvent
Co-authored-by: aanper <mail@s3f.ru>
* initial gpio layer
* move temlplate.c to template.c.example in preparing to applications.mk rework
* separate arduino layer
* separate flipper_hal.x
* prepare to switch applications on v2 core gpio api
* swithch applications to v2 gpio api
* gpio api for local target
* better gpio_disable handling
* remove pwm functions from local target
* inline gpio funcs
* common function to init all api's
* fix local example blink
* move delay us to hal api folder
* move pwm_set/pwm_stop to hal api folder
* update applications to use hal pwm api
* remove gpio mode case warning
* add speaker demo to build
Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
* fixed inline functions for modern C standart
* pubsub api, base version
* basic test for pubsub
* update applications.mk, add test file
* more test for pubsub
* remove unimplemented files, cleanup header file
* remove legacy tests, check unsubscribe not call cb
* implement deleting mutex, fail test
* release mutex before deleting
Co-authored-by: aanper <mail@s3f.ru>
* memory managment calls now forwarded to freertos heap
* memory managment tests
* local target test compability
* rename heap.c file to heap_4.c for local target and explicity init heap in single thread context
* rebase BlockLink_t struct
* check mutex in local heap
Co-authored-by: aanper <mail@s3f.ru>
* add input debounce code from old fw
* exampl of input api
* change input API to get/release
* revert input API to read
* pointer instead of instance
* add input API description
* add display API
* rewrite display names
* migrate to valuemanager
* add LED API
* add closing brakets
* add sound api
* fix led api
* basic api
* rename API pages
* change pubsub implementation
* move FURI AC -> flapp, add valuemutex example, add valuemanager implementation
* pubsub usage example
* user led example
* update example
* simplify input
* add composed display
* add SPI/GPIO and CC1101 bus
* change cc1101 api
* spi api and devices
* spi api and devices
* move SPI to page, add GPIO
* not block pin open
* backlight API and more
* add minunit tests
* fix logging
* ignore unexisting time service on embedded targets
* fix warning, issue with printf
* Deprecate furi_open and furi_close (#167)
Rename existing furi_open and furi_close to deprecated version
* add exitcode
* migrate to printf
* indicate test by leds
* add testing description
* rename furi.h
* wip basic api
* add valuemutex, pubsub, split files
* add value expanders
* value mutex realization and tests
* valuemutex test added to makefile
* do not build unimplemented files
* fix build furmware target f2
* redesigned minunit tests to allow testing in separate files
* test file for valuemutex minunit testing
* minunit partial test valuemutex
* local cmsis_os2 mutex bindings
* implement furi open/create, tests
* migrate concurrent_access to ValueMutex
* add spi header
* Lib: add mlib submodule.
Co-authored-by: rusdacent <rusdacentx0x08@gmail.com>
Co-authored-by: DrZlo13 <who.just.the.doctor@gmail.com>
* Lib: move cube to libs. Firmware: prepare for code base refactoring, detach from cube, port to cmsis_os2.
* Firmware, target f2: regenerate project with latest cube package, tim17 for os ticks.
* Firmware: unified codebase.
* Core: do not include semaphore on old targets. Firmware: dfu uplaod target.
* CI: submodules, add firmware build.
* CI: proper submodule config.
* refactor build system
* CI: update chain to use new targets. Documentation: update to match current structure.
* CI: clean before rebuild.
* Add local test
docker-compose exec dev make -C firmware TARGET=local TEST=1 run
* Makefile: target specific build directory. CI: updated artifacts path.
* Makefile: init git submodules if they don't exists.
* Makefile: debug rule now doesn't reset MCU, prevent SIGINT propagation to st-util.
* Makefile: proper rebuild sequence in zz and zzz
* Makefile: timestamp tracking for flash and upload commands.
* Apps: modular build. Input: fix flipper hal inline.
* Wiki: proper bootloader link.
* Applications: fix broken build for local targets.
* add st-flash to docker
* fix build
* force rebuild app
* move app force to firmware part
* fix build deps
* qrcode build ok
* fix example display
* add testing routine
* update build instruction
Co-authored-by: Aleksandr Kutuzov <aku@plooks.com>
Co-authored-by: aanper <mail@s3f.ru>
* proof of concept
* fix syntax for rust and add auto fix syntax
* fix syntax for C
* fix bug with files owner
* add information to wiki
* try to add ci
* format code from master
* even more format fixes
* change docker to docker-compose
* Exclude ./target_*/build directories from format check
* Run rustfmt only on project files
* add ulimit setup for long clang list
* merge
* fix rustfmt, exclude target Inc directory
* sync with master
* abspath
Co-authored-by: aanper <mail@s3f.ru>
Co-authored-by: Vadim Kaushan <admin@disasm.info>
* Implement mutex support for target_lo
* Kill application if test hangs
* Use mutex in furi_take and furi_give
* Give furi application enough time to finish
* remove app obj after build
* enable counting semaphores
Co-authored-by: aanper <mail@s3f.ru>
* add blank example
* add ipc example code, need to change FURI API
* add ipc example code, need to change FURI API
* change core API, add context
* check handler at take
* fix important bugs in furi
* drawing example
* add posix mq
* fix unsigned demo counter
* create at open
* working local demo
* russian version of IPC example
* english version
* add gif