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) } }