a024e470b7
* SubGhz: the functions of saving loading KeeLog have been modified, saving KeeLog is prohibited * SubGhz: Fix displaying Nice FlorS in the Raed scene * SubGhz: Fix displaying Faac SLH in the Raed scene * SubGhz: Fix displaying iDo in the Raed scene * SubGhz: Fix displaying Star Line in the Raed scene * SubGhz: Fix displaying Nice Flo in the Raed scene, added save and load functions. (testing needed, no remote control) * SubGhz: subghz_beginadded common encoder upload signal * SubGhz: add Came encoder * SubGhz: modified pricenton encoder, fix view transmitter hide the "Send" button if there is no encoder * SubGhz: add nice flo encoder, need testing no remote control * SubGhz: add gate_tx encoder * SubGhz: add nero_sketch encoder * SubGhz: add keelog encoder * SubGhz: add long upload upload while the button is pressed while releasing the transfer is over, with a check for sticking (maximum 200 upload repetitions) * SubGhz: fix max upload * SubGhz: Fix structure subghz add encoder * SubGhz: add generating and sending a dynamic keelog key, refactoring the code * SubGhz: add notifications * SubGhz: add creating a new remote control (Pricenton, Nice Flo 12bit, Nice Flo 24bit, CAME 12bit, CAME 24bit, Gate TX, DoorHan) * SubGhz: Fix load file, fix scene start * Subghz: Fix show key * SubGhz: Fix subghz_cli * SubGhz: Fix furi-hal-subghz * Format sources * SubGhz: standard notification scheme, fix broken assert in DMA. * SubGhz: move level alignment logic to furi-hal-subghz, fix spelling, cleanup. Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com> |
||
---|---|---|
.. | ||
targets | ||
Makefile | ||
ReadMe.md |
Project structure
.
├── applications # Flipper applications
├── assets # Assets: icons, animation
├── bootloader # Bootloader make project
├── core # Main feature like OS, HAL (target-independed)
├── core-rs # Rust code
├── debug # Debug helpers, configs and plugins
├── docker # Docker toolchain container
├── firmware # Firmware make project
├── lib # Libs and 3rd parties
├── make # Makefile scripts
Bootloader
Bootloader must be flashed first.
Detailed instruction on how to compile and flash it you can find in bootloader
folder.
OS
CMSIS-RTOS2 over FreeRTOS
Platform code
CMSIS, Freertos and HAL files are generated by CubeMX.
You can find platform code for STM32WB55 version in f4
folder:
├── Inc # CubeMX generated headers
├── Src # CubeMX generated code
├── furi-hal # Our HAL wrappers and platform specifics
├── ble-glue # BLE specific code(Glue for STMWPAN)
├── f4.ioc # CubeMX project file
├── startup_stm32wb55xx_cm4.s # Board startup/initialization assembler code
├── stm32wb55xx_flash_cm4*.ld # Linker scripts
├── target.mk # Makefile include
Working with CubeMX:
- Download CubeMX from st.com
- Open
*.ioc
file - Do whatever you want to
- Click
generate code
- After regenerating, look at git status, regeneration may brake some files.
- Check one more time that things that you've changes are not covered in platform furi-hal. Because you know...
Flipper Universal Registry Implementation (FURI)
FURI is used to:
- application control (start, exit, switch between active)
- data exchange between application (create/open channel, subscribe and push messages or read/write values)
- non-volatile data storage for application (create/open value and read/write)
Read more at FURI page
FS (not implemented)
File system is used to volaile storage some files (config, application data, etc.). There are some folders mounted to different volumes:
/usr
for store static data like assets, menu items. Build system add files to usr while building. It can be useful for exchange some static data between application. For example, your app can add link to itself to Plugins menu items file, user will see your app and can call it from this menu.- Specially
/usr/etc-default
folder contains default configs for apps. Bootloader hasfactory default
options to reset applications config. Also when new app is bootstapping, system copy files from default config folder to/etc
. /etc
for store configs of application. This volume not overwrite during flashing./var
for store some application data (saved keys, application database, logs). This volume also not overwrite during flashing./media/*
mounted if SD card is inserted.
Flipper applications
Each flipper functionality except OS/HAL/FURI doing by Flipper application. Some application are called at startup, the rest are called by the user (for example, from menu).
(you can see some examples)
For exchange data between application each app expose own record in FURI. You can subscribe on/read record to get data from application and write to record to send data to application.