[FL-3669] Expansion module protocol (#3250)

* ApiSymbols: add furi_record_destroy
* FuriHal: cleanup serial API, add logging configuration in RTC
* FuriHal: hide private part in _i header. Toolbox: cleanup value index. SystemSettings: logging device and baudrate.
* FuriHal: RTC logging method documentation
* Synchronize API Symbols
* Furi: mark HEAP_PRINT_DEBUG as broken
* FuriHal: furi_hal_serial, add custom IRQ func
* Fix PR review issues
* Implement basic external module detection and echo
* Update api symbols for f18
* Minimally working implementation (can create directory via rpc)
* Make expansion protocol parser a header-only library
* Rename a function
* Improve thread syncronisation
* Implement multi-packet transmissions
* Improve test application
* Clean up expansion worker code
* Send heartbeat when host is ready
* Update API symbols
* Add draft documentation
* Expansion worker: proper timeout and error handling
* Expansion worker: correct TX, do not disable expansion callback
* Expansion protocol: pc side test script
* PC side expansion test: trying to change baudrate
* Working comms between 2 flippers
* Cleaner exit from expansion worker thread
* Better checks
* Add debug logs
* Remove unneeded delays
* Use USART as default expansion port
* Refactor furi_hal_serial_control, fix crash
* Improve furi_hal abstraction, wait for stable rx pin
* Remove rogue include
* Set proper exit reason on RPC error
* Remove rogue comment
* Remove RX stability check as potentially problematic
* Improve expansion_test application
* Remove rogue define
* Give up on TODO
* Implement expansion protocol checksum support
* Update ExpansionModules.md
* RPC: reverse input
* Assets: sync protobuf
* Fix typos
* FuriHal: UART add reception DMA (#3220)
* FuriHal: add DMA serial rx mode
* usb_uart_bridge: switch to working with DMA
* Sync api symbol versions
* FuriHal: update serial docs and api
* FuriHal: Selial added similar API for simple reception mode as with DMA
* FuriHal: Update API target H18
* API: ver API H7
* FuriHal: Serial error processing
* FuriHal: fix furi_hal_serial set baudrate
* Sync api symbols
* FuriHal: cleanup serial isr and various flag handling procedures
* FuriHal: cleanup and simplify serial API
* Debug: update UART Echo serial related flags
* FuriHal: update serial API symbols naming
* Make expansion_test compile
* Remove unneeded file
* Make PVS-studio happy
* Optimise stack usage
* Optimise heap usage, improve api signature
* Fix typo
* Clean up code
* Update expansion_protocol.h
* Fix unit tests
* Add doxygen comments to expansion.h
* Update/add doxygen comments
* Update ExpansionModules.md
* Github: new global code owner
* FuriHal: naming in serial control
* Expansion: check mutex acquire return result

Co-authored-by: Aleksandr Kutuzov <alleteam@gmail.com>
Co-authored-by: hedger <hedger@users.noreply.github.com>
Co-authored-by: SkorP <skorpionm@yandex.ru>
Co-authored-by: SG <who.just.the.doctor@gmail.com>
Co-authored-by: Skorpionm <85568270+Skorpionm@users.noreply.github.com>
This commit is contained in:
Georgii Surkov
2024-01-16 18:18:56 +09:00
committed by GitHub
co-authored by Aleksandr Kutuzov hedger SkorP SG Skorpionm
parent f9f67e6d54
commit 95737958ad
30 changed files with 2279 additions and 114 deletions
+13 -5
View File
@@ -1,10 +1,11 @@
entry,status,name,type,params
Version,+,51.0,,
Version,+,52.0,,
Header,+,applications/services/bt/bt_service/bt.h,,
Header,+,applications/services/cli/cli.h,,
Header,+,applications/services/cli/cli_vcp.h,,
Header,+,applications/services/dialogs/dialogs.h,,
Header,+,applications/services/dolphin/dolphin.h,,
Header,+,applications/services/expansion/expansion.h,,
Header,+,applications/services/gui/elements.h,,
Header,+,applications/services/gui/gui.h,,
Header,+,applications/services/gui/icon_i.h,,
@@ -788,6 +789,8 @@ Function,-,exp10f,float,float
Function,-,exp2,double,double
Function,-,exp2f,float,float
Function,-,exp2l,long double,long double
Function,+,expansion_disable,void,Expansion*
Function,+,expansion_enable,void,"Expansion*, FuriHalSerialId"
Function,-,expf,float,float
Function,-,expl,long double,long double
Function,-,explicit_bzero,void,"void*, size_t"
@@ -1268,22 +1271,27 @@ Function,+,furi_hal_sd_max_mount_retry_count,uint8_t,
Function,+,furi_hal_sd_presence_init,void,
Function,+,furi_hal_sd_read_blocks,FuriStatus,"uint32_t*, uint32_t, uint32_t"
Function,+,furi_hal_sd_write_blocks,FuriStatus,"const uint32_t*, uint32_t, uint32_t"
Function,+,furi_hal_serial_async_rx,uint8_t,FuriHalSerialHandle*
Function,+,furi_hal_serial_async_rx_start,void,"FuriHalSerialHandle*, FuriHalSerialAsyncRxCallback, void*, _Bool"
Function,+,furi_hal_serial_async_rx_stop,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_control_acquire,FuriHalSerialHandle*,FuriHalSerialId
Function,+,furi_hal_serial_control_deinit,void,
Function,+,furi_hal_serial_control_init,void,
Function,+,furi_hal_serial_control_release,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_control_resume,void,
Function,+,furi_hal_serial_control_set_expansion_callback,void,"FuriHalSerialId, FuriHalSerialControlExpansionCallback, void*"
Function,+,furi_hal_serial_control_set_logging_config,void,"FuriHalSerialId, uint32_t"
Function,+,furi_hal_serial_control_suspend,void,
Function,+,furi_hal_serial_deinit,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_disable_direction,void,"FuriHalSerialHandle*, FuriHalSerialDirection"
Function,+,furi_hal_serial_dma_rx,size_t,"FuriHalSerialHandle*, uint8_t*, size_t"
Function,+,furi_hal_serial_dma_rx_start,void,"FuriHalSerialHandle*, FuriHalSerialDmaRxCallback, void*, _Bool"
Function,+,furi_hal_serial_dma_rx_stop,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_enable_direction,void,"FuriHalSerialHandle*, FuriHalSerialDirection"
Function,+,furi_hal_serial_get_gpio_pin,const GpioPin*,"FuriHalSerialHandle*, FuriHalSerialDirection"
Function,+,furi_hal_serial_init,void,"FuriHalSerialHandle*, uint32_t"
Function,+,furi_hal_serial_is_baud_rate_supported,_Bool,"FuriHalSerialHandle*, uint32_t"
Function,+,furi_hal_serial_resume,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_async_rx,uint8_t,FuriHalSerialHandle*
Function,+,furi_hal_serial_async_rx_start,void,"FuriHalSerialHandle*, FuriHalSerialAsyncRxCallback, void*, _Bool"
Function,+,furi_hal_serial_async_rx_stop,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_set_br,void,"FuriHalSerialHandle*, uint32_t"
Function,+,furi_hal_serial_suspend,void,FuriHalSerialHandle*
Function,+,furi_hal_serial_tx,void,"FuriHalSerialHandle*, const uint8_t*, size_t"
@@ -2098,7 +2106,7 @@ Function,-,round,double,double
Function,+,roundf,float,float
Function,-,roundl,long double,long double
Function,+,rpc_session_close,void,RpcSession*
Function,+,rpc_session_feed,size_t,"RpcSession*, uint8_t*, size_t, uint32_t"
Function,+,rpc_session_feed,size_t,"RpcSession*, const uint8_t*, size_t, uint32_t"
Function,+,rpc_session_get_available_size,size_t,RpcSession*
Function,+,rpc_session_get_owner,RpcOwner,RpcSession*
Function,+,rpc_session_open,RpcSession*,"Rpc*, RpcOwner"
1 entry status name type params
2 Version + 51.0 52.0
3 Header + applications/services/bt/bt_service/bt.h
4 Header + applications/services/cli/cli.h
5 Header + applications/services/cli/cli_vcp.h
6 Header + applications/services/dialogs/dialogs.h
7 Header + applications/services/dolphin/dolphin.h
8 Header + applications/services/expansion/expansion.h
9 Header + applications/services/gui/elements.h
10 Header + applications/services/gui/gui.h
11 Header + applications/services/gui/icon_i.h
789 Function - exp2 double double
790 Function - exp2f float float
791 Function - exp2l long double long double
792 Function + expansion_disable void Expansion*
793 Function + expansion_enable void Expansion*, FuriHalSerialId
794 Function - expf float float
795 Function - expl long double long double
796 Function - explicit_bzero void void*, size_t
1271 Function + furi_hal_sd_presence_init void
1272 Function + furi_hal_sd_read_blocks FuriStatus uint32_t*, uint32_t, uint32_t
1273 Function + furi_hal_sd_write_blocks FuriStatus const uint32_t*, uint32_t, uint32_t
1274 Function + furi_hal_serial_async_rx uint8_t FuriHalSerialHandle*
1275 Function + furi_hal_serial_async_rx_start void FuriHalSerialHandle*, FuriHalSerialAsyncRxCallback, void*, _Bool
1276 Function + furi_hal_serial_async_rx_stop void FuriHalSerialHandle*
1277 Function + furi_hal_serial_control_acquire FuriHalSerialHandle* FuriHalSerialId
1278 Function + furi_hal_serial_control_deinit void
1279 Function + furi_hal_serial_control_init void
1280 Function + furi_hal_serial_control_release void FuriHalSerialHandle*
1281 Function + furi_hal_serial_control_resume void
1282 Function + furi_hal_serial_control_set_expansion_callback void FuriHalSerialId, FuriHalSerialControlExpansionCallback, void*
1283 Function + furi_hal_serial_control_set_logging_config void FuriHalSerialId, uint32_t
1284 Function + furi_hal_serial_control_suspend void
1285 Function + furi_hal_serial_deinit void FuriHalSerialHandle*
1286 Function + furi_hal_serial_disable_direction void FuriHalSerialHandle*, FuriHalSerialDirection
1287 Function + furi_hal_serial_dma_rx size_t FuriHalSerialHandle*, uint8_t*, size_t
1288 Function + furi_hal_serial_dma_rx_start void FuriHalSerialHandle*, FuriHalSerialDmaRxCallback, void*, _Bool
1289 Function + furi_hal_serial_dma_rx_stop void FuriHalSerialHandle*
1290 Function + furi_hal_serial_enable_direction void FuriHalSerialHandle*, FuriHalSerialDirection
1291 Function + furi_hal_serial_get_gpio_pin const GpioPin* FuriHalSerialHandle*, FuriHalSerialDirection
1292 Function + furi_hal_serial_init void FuriHalSerialHandle*, uint32_t
1293 Function + furi_hal_serial_is_baud_rate_supported _Bool FuriHalSerialHandle*, uint32_t
1294 Function + furi_hal_serial_resume void FuriHalSerialHandle*
Function + furi_hal_serial_async_rx uint8_t FuriHalSerialHandle*
Function + furi_hal_serial_async_rx_start void FuriHalSerialHandle*, FuriHalSerialAsyncRxCallback, void*, _Bool
Function + furi_hal_serial_async_rx_stop void FuriHalSerialHandle*
1295 Function + furi_hal_serial_set_br void FuriHalSerialHandle*, uint32_t
1296 Function + furi_hal_serial_suspend void FuriHalSerialHandle*
1297 Function + furi_hal_serial_tx void FuriHalSerialHandle*, const uint8_t*, size_t
2106 Function + roundf float float
2107 Function - roundl long double long double
2108 Function + rpc_session_close void RpcSession*
2109 Function + rpc_session_feed size_t RpcSession*, uint8_t*, size_t, uint32_t RpcSession*, const uint8_t*, size_t, uint32_t
2110 Function + rpc_session_get_available_size size_t RpcSession*
2111 Function + rpc_session_get_owner RpcOwner RpcSession*
2112 Function + rpc_session_open RpcSession* Rpc*, RpcOwner