From 511f1fff5b89577cb12ee3c4bc272a9b3c92c403 Mon Sep 17 00:00:00 2001 From: Tony Date: Sat, 8 Aug 2026 08:41:43 +0800 Subject: [PATCH] Refactor service discovery to always perform fresh discovery, removing cached services check Signed-off-by: Tony --- .../UniversalBleAsyncServiceDiscovery.swift | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/darwin/universal_ble/Sources/universal_ble/UniversalBleAsyncServiceDiscovery.swift b/darwin/universal_ble/Sources/universal_ble/UniversalBleAsyncServiceDiscovery.swift index 0f2f2e5..1ffd0a3 100644 --- a/darwin/universal_ble/Sources/universal_ble/UniversalBleAsyncServiceDiscovery.swift +++ b/darwin/universal_ble/Sources/universal_ble/UniversalBleAsyncServiceDiscovery.swift @@ -35,12 +35,11 @@ class UniversalBleAsyncServiceDiscovery: NSObject { } isDiscoveryInProgress = true - // Check if services are already cached - if let cachedServices = peripheral.services, !cachedServices.isEmpty { - handleServicesDiscovered(cachedServices) - } else { - peripheral.discoverServices(nil) - } + // A peripheral can keep CoreBluetooth's previous GATT view across a + // firmware update. UniversalBle.discoverServices is the explicit fresh + // discovery API; callers that want cached data use BleDevice's + // preferCached path instead. + peripheral.discoverServices(nil) } /// Cleans up discovery state @@ -64,13 +63,7 @@ class UniversalBleAsyncServiceDiscovery: NSObject { // Discover characteristics for each service for service in services { - if let cachedChar = service.characteristics, !cachedChar.isEmpty { - // Characteristics already cached, process them - processCharacteristicsForService(service) - } else { - // Need to discover characteristics - peripheral.discoverCharacteristics(nil, for: service) - } + peripheral.discoverCharacteristics(nil, for: service) } }