From 52f4e26665f94545ab4ac586d07f0b694fd518e5 Mon Sep 17 00:00:00 2001 From: Sylwester Zielinski Date: Tue, 25 Apr 2023 16:50:10 +0200 Subject: [PATCH] Unlock UI if device disconnects after connection --- .../no/nordicsemi/android/cgms/repository/CGMService.kt | 7 +++++++ .../no/nordicsemi/android/csc/repository/CSCService.kt | 7 +++++++ .../java/no/nordicsemi/android/hrs/service/HRSService.kt | 7 +++++++ .../no/nordicsemi/android/hts/repository/HTSService.kt | 7 +++++++ .../no/nordicsemi/android/rscs/repository/RSCSService.kt | 7 +++++++ .../no/nordicsemi/android/uart/repository/UARTService.kt | 7 +++++++ 6 files changed, 42 insertions(+) diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt index 097b83ee..6f5658b5 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt @@ -144,6 +144,7 @@ internal class CGMService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -312,6 +313,12 @@ internal class CGMService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() } diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt index afbaa898..8cb71746 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt @@ -100,6 +100,7 @@ internal class CSCService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -139,6 +140,12 @@ internal class CSCService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() } diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt index d2a90758..f7331c13 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt @@ -102,6 +102,7 @@ internal class HRSService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -144,6 +145,12 @@ internal class HRSService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() } diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt index a97d36da..01a4d47b 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt @@ -100,6 +100,7 @@ internal class HTSService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -138,6 +139,12 @@ internal class HTSService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() } diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt index 3cad3f41..d0d26e12 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt @@ -100,6 +100,7 @@ internal class RSCSService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -138,6 +139,12 @@ internal class RSCSService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() } 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 cd4947a0..50b60814 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 @@ -107,6 +107,7 @@ internal class UARTService : NotificationService() { .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() .onEach { stopIfDisconnected(it) } + .onEach { unlockUiIfDisconnected(it, device) } .launchIn(lifecycleScope) if (!client.isConnected) { @@ -160,6 +161,12 @@ internal class UARTService : NotificationService() { } } + private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) { + if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) { + repository.onInitComplete(device) + } + } + private fun disconnect() { client.disconnect() }