forked from kofal.net/zmk
feat(studio): Initial RPC infrastructure and subsystems.
* UART and BLE/GATT transports for a protobuf encoded RPC request/response protocol. * Custom framing protocol is used to frame a give message. * Requests/responses are divided into major "subsystems" which handle requests and create response messages. * Notification support, including mapping local events to RPC notifications by a given subsystem. * Meta responses for "no response" and "unlock needed". * Initial basic lock state support in a new core section, and allow specifying if a given RPC callback requires unlocked state or not. * Add behavior subsystem with full metadata support and examples of using callback to serialize a repeated field without extra stack space needed. Co-authored-by: Cem Aksoylar <caksoylar@users.noreply.github.com>
This commit is contained in:
committed by
Pete Johanson
parent
ea64fcaf71
commit
feda96eb40
15
app/src/studio/CMakeLists.txt
Normal file
15
app/src/studio/CMakeLists.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
# Copyright (c) 2024 The ZMK Contributors
|
||||
# SPDX-License-Identifier: MIT
|
||||
|
||||
zephyr_linker_sources(DATA_SECTIONS ../../include/linker/zmk-rpc-subsystems.ld)
|
||||
zephyr_linker_sources(SECTIONS ../../include/linker/zmk-rpc-subsystem-handlers.ld)
|
||||
zephyr_linker_sources(SECTIONS ../../include/linker/zmk-rpc-event-mappers.ld)
|
||||
zephyr_linker_sources(SECTIONS ../../include/linker/zmk-rpc-transport.ld)
|
||||
|
||||
target_sources(app PRIVATE msg_framing.c)
|
||||
target_sources(app PRIVATE rpc.c)
|
||||
target_sources(app PRIVATE core.c)
|
||||
target_sources(app PRIVATE behavior_subsystem.c)
|
||||
target_sources(app PRIVATE core_subsystem.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_STUDIO_TRANSPORT_UART app PRIVATE uart_rpc_transport.c)
|
||||
target_sources_ifdef(CONFIG_ZMK_STUDIO_TRANSPORT_BLE app PRIVATE gatt_rpc_transport.c)
|
||||
Reference in New Issue
Block a user