diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt index 1981537b..d1496fee 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt @@ -92,25 +92,25 @@ internal class UARTService : NotificationService() { private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { client = ClientBleGatt.connect(this@UARTService, device, logger = { p, s -> repository.log(p, s) }) - client.requestMtu(Mtu.max) - - client.connectionStateWithStatus - .filterNotNull() - .onEach { repository.onConnectionStateChanged(it) } - .onEach { stopIfDisconnected(it.state, it.status) } - .filterNotNull() - .launchIn(lifecycleScope) - if (!client.isConnected) { return@launch } + client.requestMtu(Mtu.max) + try { val services = client.discoverServices() configureGatt(services) } catch (e: Exception) { repository.onMissingServices() } + + client.connectionStateWithStatus + .filterNotNull() + .onEach { repository.onConnectionStateChanged(it) } + .onEach { stopIfDisconnected(it.state, it.status) } + .filterNotNull() + .launchIn(lifecycleScope) } private suspend fun configureGatt(services: ClientBleGattServices) {