Combined-stack simplify: loop discipline, gated materializer, registry, peer keys

This commit is contained in:
J. Nick Koston
2026-08-09 00:16:15 -05:00
parent ac6d2fe322
commit 2724ec3c30
21 changed files with 223 additions and 157 deletions
@@ -203,6 +203,9 @@ def test_every_registered_hub_platform_has_a_schema_arm() -> None:
registered = set(bluetooth_connection.HUB_MAX_CONNECTIONS)
assert registered <= set(bluetooth_proxy._GATT_HUB_SCHEMAS)
assert registered <= set(bluetooth_proxy._HUB_PLATFORMS)
# Hub platforms must also be in the backend registry the shared consumer
# helpers dispatch on.
assert registered <= set(bluetooth_connection.GATT_CLIENT_PLATFORMS)
# The outer walkable schema's bound must stay the loosest platform cap.
assert (
max(bluetooth_connection.HUB_MAX_CONNECTIONS.values())
@@ -53,8 +53,6 @@ class MinimalConnection {
}
GattServiceTable get_service_table() { return {}; }
void release_services() {}
bool disconnect_pending() const { return false; }
void cancel_pending_disconnect() {}
void set_connection_type(ConnectionType ct) {}
protected:
@@ -109,7 +107,8 @@ TEST_F(ServiceTableLookup, FindsServicesAndCharacteristicsByUuid) {
EXPECT_EQ(service->start_handle, 0x0010);
EXPECT_EQ(find_service(this->table_, ESPBTUUID::from_uint16(0xFFFF)), nullptr);
const GattCharacteristic *characteristic = find_characteristic(this->table_, *service, ESPBTUUID::from_uint16(0x1525));
const GattCharacteristic *characteristic =
find_characteristic(this->table_, *service, ESPBTUUID::from_uint16(0x1525));
ASSERT_NE(characteristic, nullptr);
EXPECT_EQ(characteristic->value_handle, 0x0012);
// The lookup is scoped to the service: 0x2A00 lives in the other service.
@@ -1,5 +1,5 @@
# Advertisement-only proxy on esp32 by explicit choice: no GATT backend is
# compiled (USE_BLE_GATT_CLIENT unset), which pins the HAS_GATT gating and the
# compiled (USE_BLE_GATT_CLIENT unset), which pins the SERVES_PROXY gating and the
# address-scoped maintenance path that a connections build never exercises.
packages:
common: !include common.yaml