mirror of
https://github.com/ByteWelder/Tactility.git
synced 2026-06-19 20:35:06 +00:00
* Bluetooth LE addition * fixes * use the psram! helps a little on S3 (t-deck) * custom device name * Update symbols.c * Feedback + fixes Fixes external app start/stop server (child devices) Fixes BtManage causing a full system hang upon disabling bt when a device is connected to the host. * updoot * more updoot * move back! * Revert "move back!" This reverts commit d3694365c634acc5db62ac59771c496cb971a727. * fix some of the things * Addressing feedback? hmm * Fixes Bug 1 — Reconnect loop / Reconnect not working fixed Bug 2 — Name-only advertising overwrites HID advertising Bug 3 — BleHidDeviceCtx leak on re-enable Enhancement — HID device auto-start on radio re-enable * stuff... * update for consistency with others * fix crashes and some bonus symbols * a few symbols, i2c speed, cdn message 100kHz i2c speed seems to be more compatible with m5stack modules...and probably in general. cdn message no longer applies * Hide BT Settings when bt not enabled * Addressing things and device fixes * Missed one! * stuff
46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
@startuml Bluetooth Thread Model
|
|
|
|
box "nimble_host task\n(NimBLE internal, 4 KB stack)" #LightBlue
|
|
participant "gap_event_handler\n(esp32_ble.cpp)" as GAP
|
|
participant "ble_gatt\ncallbacks" as GATT
|
|
participant "bt_event_bridge\n(Bluetooth.cpp)" as Bridge
|
|
participant "hidHostGapCb\n& discovery\n(BluetoothHidHost.cpp)" as HID
|
|
end box
|
|
|
|
box "main_dispatcher task\n(Tactility main task)" #LightGreen
|
|
participant "settings I/O\n& peer updates" as Dispatch
|
|
end box
|
|
|
|
box "App tasks" #LightYellow
|
|
participant "BtManage\nBtPeerSettings" as Apps
|
|
end box
|
|
|
|
box "esp_timer task" #LightGray
|
|
participant "advRestart\nmidiKeepalive\nhidEncRetry" as Timers
|
|
end box
|
|
|
|
box "LVGL task\n(GuiService)" #MistyRose
|
|
participant "hidHostKeyboard\nReadCb / mouseReadCb" as LVGL
|
|
end box
|
|
|
|
GAP -> Bridge : ble_publish_event() →\nBtEventCallback (bt_event_bridge)
|
|
Bridge -> Dispatch : getMainDispatcher().dispatch()\n(settings::load/save, autoConnect)
|
|
Dispatch -> Apps : publishEventCpp → PubSub callbacks
|
|
GATT -> GAP : GATT access within\nnimble_host task
|
|
HID -> Dispatch : getMainDispatcher().dispatch()\n(indev cleanup, ProfileStateChanged)
|
|
Timers -> GAP : advRestartCallback\n(calls ble_start_advertising)
|
|
LVGL -> HID : lv_indev read callbacks\n(LVGL tick)
|
|
|
|
note over GAP, GATT
|
|
NO file I/O on NimBLE host task —
|
|
stringstream blows the 4 KB stack
|
|
end note
|
|
|
|
note over GAP, Bridge
|
|
Driver fires BtEvent via callback array.
|
|
Bridge (Tactility layer) translates to
|
|
C++ PubSub<BtEvent> and dispatches I/O.
|
|
end note
|
|
|
|
@enduml
|