* GUI: Icons and IconsAnimation refactoring. Switch assets to new Icon API.
* Gui: icon and animation draw now do not accept null pointer
* Format Sources
* Fix no debug build
* Furi: stricter checks in memmgr
* Cli: merge version and hwinfo and form machine/human readable key value set.
* Backport F6 changes to F5. Add readme to cli_command_device_info rountine
* Cli: return proper order to radio stack version in device_info command
Co-authored-by: SG <who.just.the.doctor@gmail.com>
* ApiHal: set frequency and path in one go. Drivers: proper frequency registers calculation for CC1101. Update subghz cli to match new api.
* SubGhz: preparation for parsers porting, tim2 sharing
* ApiHal: add interrupts API, move all TIM2 related things there.
* SubGhz: refactor protocol lib and add keeloq.
* SubGhz: proper init_set for keeloq manafacture key
* SubGhz: port more protocols to lib
* SubGhz: load keeloq manufacture keys from sd card (if any).
* SubGhz: format output from protocols.
* SubGhz: use default frequency in subghz_rx cli command.
* SubGhz: keeloq key types
* Fix compillation error when internal storage disabled
* SubGhz: minor cleanup
* SubGhz: properly handle timeout and reset signal in subghz_rx
* SubGhz: Worker, Capture View. Furi: emulate thread join.
* SubGhz: free strings on keeloq key load end
* SubGhz: update protocols reporting API, app refactoring and capture view, update API HAL usage.
* SubGhz: update dump formatting
* ApiHal: backport subghz preset to F5
* ApiHal: backport subghz frequency range to F5
* HAL interrupl manager: cleaned version
* HAL interrupt manager: mem barriers
* HAL interrupt manager: volatile interrupt list
Co-authored-by: あく <alleteam@gmail.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>
* Add littlefs submodule
* Furi: add mutex in logging, fix issues with corrupted printf
* ApiHal: disable debug traces in ble glue
* App-loader: more logs
* Passport: fix invalid DolphinState usage
* ApiHal, linker script: flash API is now aware of free space, complete abstraction layer for storage
* Internal Storage: littlefs based storage services with key value API. Migrate dolphin state to new storage API.
* furi_log: introduce log system
* applications: rework with furi logging
* furi_log: reset color after tag printed
* core: add log info
Co-authored-by: あく <alleteam@gmail.com>
* Add bootloader versioning
* Move some logic to api-hal-version
* Backport to f4
* Dolphin: update version screen layout, make it more readable
Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
* Interrupt manager: add memory barriers.
* ISRs: remove TIM17 dead code.
* API HAL Delay: rename initialization routine and move to API-HAL
* Main: move FURI initialization to the start.
* API HAL GPIO: drop CC1101 shenanigans, COMP inversion for new boards.
* IButton: migrate Cyfral and Metakom to RFID comp routine, make it compatible with new boards.
* RFID: Better keyboard handling and shutdown routines
* invert inputs
* move RFID RX to IRQ, unstable
* remove critical blink
* supress short carrier, decrease queue
* migrate to stream buffer
* enable state change
* conditions build for invert RFID IN
* move get_rfid_in_level
* use hal function for get comp level, remove duplicate interrupt registration, interrupt unregister on exit
* reinit comparator context on mode change
* Add F5 target, lp5562 driver and api-hal-light. Update api-usage, switch to F5 by default.
* API HAL: add i2c and hardware version api. Dolphin: show hardware version.
* OTP version generator and flashing utility.
* Assets script: fix code formatting
* Backport F5 changes to F4
* F4: disable insomnia, prevent damage to BLE RX path
* F5 HAL API Light: remove magic delay to fix magic BLE
* Dolphin: HW target validation on start
* invert RSSI indication in sub-1
* API HAL: rename board to body in version api
* Gpio tester: detach and release viewport on exit
Co-authored-by: aanper <mail@s3f.ru>
* 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
* fix Werror flag
* strdup implementation fix
* fix irda and lfrdid printf
* remove unused position
* doubtful type fix
* type fix in EXTI interrupt
* fix warnings in CubeWB, need to fork ST repo
* onewire fixes
* fork STM32WB Cube repo
* 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>
* fix "state not acquired error"
* add InterruptTypeComparatorTrigger to interrupt mgr, use interrupt mgr in irda app
* separate init irda timer
* capture events buffer by app
* irda common decoder
* irda nec decoder realization
* finished work with decoder
* fix app path
* fix widget remove on exit
* nec receive, store and send
* init some packets
* Core, API: add externs for c++
* Makefile: improve debug speed, flash with openocd, cleanup f2 config
* Power: add cli diagnostic.
* Local: fix api hal externs
* Local: fix externs in main and flipper_hal
* F2: power state dump stabs
* Bootloader flashing with openocd
* F3: move bq drivers to libs
* temporary do not build drivers on local
* temporary do not build drivers on f2
Co-authored-by: aanper <mail@s3f.ru>
* fix multithread logic
* more buffer for dallas id string
* update apps to use new logic
* delay_us small speedup
* add consant qualifier to gpio records and some core api
* fix some apps to use simpler method of getting gpio record
* fix ibutton app, stupid stack problem
* variable cluster size, label info functions for targets
* app record
* init, mount, get label, get sn, get space
* enable exfat
* more stack for the stack god
* remove c app and add cpp app
* remove MULTI_PARTITION
* fix 4gb bug
* update app to new template lib, add animated waiting
* tiny buffer configuration
* write speed benchmark
* fnv1a hash library
* make DEFAULT_STACK_SIZE and MAX_TASK_COUNT defined per target
* fully functional sd card app
* build sd test app to release firmware
* cpp, not c
* light up red led if error
* flags for c++
* linking with g++
* suppres snprintf warning
* move format work area to heap
Co-authored-by: coreglitch <mail@s3f.ru>
* 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>
* Assets: import from gdrive
* Assets: fully working build pipeline and registry
* NFC: menu icon
* Gui: layers. Irukagotchi: base app to handle input on idle screen. Makefile: reboot after flash in dfu mode.
* ValueMutex: with lambda
* Assets: proper animation frames sorting
* ValueMutex: proper furi_open usage
* Assets,GUI: split icon into icon data and icon state.
* Format source code
* Docker: add python3 and imagemagic
* Irukagotchi: cleanup
* GUI: event lock moved to gui.
* Rfid: proper gui layer
* GUI: elements. Menu: frame and scroll
* GUI, Menu: format code.
* Menu: dual font main menu
* Menu: format sources
* GUI: 0 total scrollbar
* CI: enable lfs
* Menu: pixel perfect main menu
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>
* fixed inline functions for modern C standart
* more stack for application
* added library
* init fatfs library
* fatfs example application
* Merge with current master
* fix typo and delete old files
* cmsis os 2 reentrance fix
* Reworked dependency wait to support multiple dependency
* Build FatFS on local target, syscall.c is target-specific.
* run local target ok
* testcase for fatfs
Co-authored-by: aanper <mail@s3f.ru>
* 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