Bluetooth (#518)
* 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
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
@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
|
||||
Reference in New Issue
Block a user