Check if client has been initialized when clicking back button

This commit is contained in:
Sylwester Zieliński
2023-08-10 12:36:07 +02:00
parent f807e2fb87
commit 2bbfe21abd
7 changed files with 34 additions and 26 deletions

View File

@@ -92,7 +92,7 @@ internal class CGMService : NotificationService() {
@Inject
lateinit var repository: CGMRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
private var secured = false
@@ -127,12 +127,13 @@ internal class CGMService : NotificationService() {
CGMServiceCommand.REQUEST_ALL_RECORDS -> requestAllRecords()
CGMServiceCommand.REQUEST_LAST_RECORD -> requestLastRecord()
CGMServiceCommand.REQUEST_FIRST_RECORD -> requestFirstRecord()
CGMServiceCommand.DISCONNECT -> client.disconnect()
CGMServiceCommand.DISCONNECT -> disconnect()
}
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@CGMService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@CGMService, device, logger = { p, s -> repository.log(p, s) })
this@CGMService.client = client
client.connectionStateWithStatus
.onEach { repository.onConnectionStateChanged(it) }
@@ -331,7 +332,7 @@ internal class CGMService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {

View File

@@ -66,7 +66,7 @@ internal class CSCService : NotificationService() {
@Inject
lateinit var repository: CSCRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
@@ -85,7 +85,8 @@ internal class CSCService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@CSCService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@CSCService, device, logger = { p, s -> repository.log(p, s) })
this@CSCService.client = client
client.connectionStateWithStatus
.onEach { repository.onConnectionStateChanged(it) }
@@ -132,7 +133,7 @@ internal class CSCService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {

View File

@@ -68,7 +68,7 @@ internal class HRSService : NotificationService() {
@Inject
lateinit var repository: HRSRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
@@ -87,7 +87,8 @@ internal class HRSService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@HRSService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@HRSService, device, logger = { p, s -> repository.log(p, s) })
this@HRSService.client = client
client.waitForBonding()
@@ -139,7 +140,7 @@ internal class HRSService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {

View File

@@ -66,7 +66,7 @@ internal class HTSService : NotificationService() {
@Inject
lateinit var repository: HTSRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
@@ -85,7 +85,8 @@ internal class HTSService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@HTSService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@HTSService, device, logger = { p, s -> repository.log(p, s) })
this@HTSService.client = client
client.connectionStateWithStatus
.onEach { repository.onConnectionStateChanged(it) }
@@ -131,7 +132,7 @@ internal class HTSService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {

View File

@@ -81,8 +81,8 @@ internal class PRXService : NotificationService() {
@Inject
lateinit var repository: PRXRepository
private lateinit var client: ClientBleGatt
private lateinit var server: ServerBleGatt
private var client: ClientBleGatt? = null
private var server: ServerBleGatt? = null
private var alertLevelCharacteristic: ClientBleGattCharacteristic? = null
@@ -127,7 +127,8 @@ internal class PRXService : NotificationService() {
characteristicConfigs = listOf(linkLossCharacteristic)
)
server = ServerBleGatt.create(this@PRXService, prxServiceConfig, linkLossServiceConfig)
val server = ServerBleGatt.create(this@PRXService, prxServiceConfig, linkLossServiceConfig)
this@PRXService.server = server
//Order is important. We don't want to connect before services have been added to the server.
startGattClient(device)
@@ -156,12 +157,13 @@ internal class PRXService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(
val client = ClientBleGatt.connect(
this@PRXService,
device,
logger = { p, s -> repository.log(p, s) },
options = BleGattConnectOptions(autoConnect = true)
)
this@PRXService.client = client
client.waitForBonding()
@@ -219,15 +221,15 @@ internal class PRXService : NotificationService() {
private fun stopIfDisconnected(connectionState: GattConnectionState, connectionStatus: BleGattConnectionStatus) {
if (connectionState == GattConnectionState.STATE_DISCONNECTED && !connectionStatus.isLinkLoss) {
server.stopServer()
server?.stopServer()
repository.disconnect()
stopSelf()
}
}
private fun disconnect() {
client.disconnect()
server.stopServer()
client?.disconnect()
server?.stopServer()
}
override fun onDestroy() {

View File

@@ -66,7 +66,7 @@ internal class RSCSService : NotificationService() {
@Inject
lateinit var repository: RSCSRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
@@ -85,7 +85,8 @@ internal class RSCSService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@RSCSService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@RSCSService, device, logger = { p, s -> repository.log(p, s) })
this@RSCSService.client = client
client.connectionStateWithStatus
.onEach { repository.onConnectionStateChanged(it) }
@@ -131,7 +132,7 @@ internal class RSCSService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {

View File

@@ -71,7 +71,7 @@ internal class UARTService : NotificationService() {
@Inject
lateinit var repository: UARTRepository
private lateinit var client: ClientBleGatt
private var client: ClientBleGatt? = null
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
super.onStartCommand(intent, flags, startId)
@@ -90,7 +90,8 @@ internal class UARTService : NotificationService() {
}
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
client = ClientBleGatt.connect(this@UARTService, device, logger = { p, s -> repository.log(p, s) })
val client = ClientBleGatt.connect(this@UARTService, device, logger = { p, s -> repository.log(p, s) })
this@UARTService.client = client
if (!client.isConnected) {
return@launch
@@ -155,7 +156,7 @@ internal class UARTService : NotificationService() {
}
private fun disconnect() {
client.disconnect()
client?.disconnect()
}
override fun onDestroy() {