mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2025-12-19 15:34:26 +01:00
Prevent calling init after disconnect
This commit is contained in:
@@ -104,6 +104,8 @@ internal class CGMService : NotificationService() {
|
||||
|
||||
private lateinit var recordAccessControlPointCharacteristic: BleGattCharacteristic
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -148,6 +150,7 @@ internal class CGMService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -230,6 +233,7 @@ internal class CGMService : NotificationService() {
|
||||
opsControlPointCharacteristic.write(CGMSpecificOpsControlPointData.startSession(secured).value!!)
|
||||
}
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -314,7 +318,7 @@ internal class CGMService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,13 +32,13 @@
|
||||
package no.nordicsemi.android.csc.repository
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.asSharedFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import kotlinx.coroutines.flow.map
|
||||
import no.nordicsemi.android.common.core.simpleSharedFlow
|
||||
import no.nordicsemi.android.common.logger.NordicBlekLogger
|
||||
import no.nordicsemi.android.csc.data.CSCServiceData
|
||||
import no.nordicsemi.android.csc.data.SpeedUnit
|
||||
import no.nordicsemi.android.kotlin.ble.core.ServerDevice
|
||||
@@ -78,8 +78,12 @@ class CSCRepository @Inject constructor(
|
||||
}
|
||||
|
||||
fun onInitComplete(device: ServerDevice) {
|
||||
Log.d("AAATESTAAA", "onInitComplete: ${data.value}")
|
||||
if (_data.value.deviceName == null) {
|
||||
Log.d("AAATESTAAA", "AAA")
|
||||
_data.value = _data.value.copy(deviceName = device.name)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun setSpeedUnit(speedUnit: SpeedUnit) {
|
||||
_data.value = _data.value.copy(speedUnit = speedUnit)
|
||||
@@ -106,6 +110,7 @@ class CSCRepository @Inject constructor(
|
||||
}
|
||||
|
||||
fun release() {
|
||||
Log.d("AAATESTAAA", "release: ${data.value}")
|
||||
_data.value = CSCServiceData()
|
||||
_stopEvent.tryEmit(DisconnectAndStopEvent())
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ internal class CSCService : NotificationService() {
|
||||
|
||||
private lateinit var client: BleGattClient
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -104,6 +106,7 @@ internal class CSCService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -131,6 +134,7 @@ internal class CSCService : NotificationService() {
|
||||
.onEach { repository.onCSCDataChanged(it) }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -141,7 +145,8 @@ internal class CSCService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
package no.nordicsemi.android.csc.view
|
||||
|
||||
import android.util.Log
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.rememberScrollState
|
||||
@@ -57,6 +58,8 @@ fun CSCScreen() {
|
||||
val viewModel: CSCViewModel = hiltViewModel()
|
||||
val state = viewModel.state.collectAsState().value
|
||||
|
||||
Log.d("AAATESTAAA", "State: ${state}")
|
||||
|
||||
val navigateUp = { viewModel.onEvent(NavigateUp) }
|
||||
|
||||
Scaffold(
|
||||
|
||||
@@ -75,6 +75,8 @@ internal class HRSService : NotificationService() {
|
||||
|
||||
private lateinit var client: BleGattClient
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -106,6 +108,7 @@ internal class HRSService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -136,6 +139,7 @@ internal class HRSService : NotificationService() {
|
||||
.onEach { repository.onHRSDataChanged(it) }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -146,7 +150,7 @@ internal class HRSService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +73,8 @@ internal class HTSService : NotificationService() {
|
||||
|
||||
private lateinit var client: BleGattClient
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -104,6 +106,7 @@ internal class HTSService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -130,6 +133,7 @@ internal class HTSService : NotificationService() {
|
||||
.onEach { repository.onHTSDataChanged(it) }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -140,7 +144,7 @@ internal class HTSService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -89,6 +89,8 @@ internal class PRXService : NotificationService() {
|
||||
|
||||
private lateinit var alertLevelCharacteristic: BleGattCharacteristic
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -173,6 +175,7 @@ internal class PRXService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -202,6 +205,7 @@ internal class PRXService : NotificationService() {
|
||||
|
||||
linkLossCharacteristic.write(AlertLevelInputParser.parse(AlarmLevel.HIGH))
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
|
||||
@@ -73,6 +73,8 @@ internal class RSCSService : NotificationService() {
|
||||
|
||||
private lateinit var client: BleGattClient
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -104,6 +106,7 @@ internal class RSCSService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -130,6 +133,7 @@ internal class RSCSService : NotificationService() {
|
||||
.onEach { repository.onRSCSDataChanged(it) }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -140,7 +144,7 @@ internal class RSCSService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,6 +78,8 @@ internal class UARTService : NotificationService() {
|
||||
|
||||
private lateinit var client: BleGattClient
|
||||
|
||||
private var hasBeenInitialized: Boolean = false
|
||||
|
||||
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
|
||||
super.onStartCommand(intent, flags, startId)
|
||||
|
||||
@@ -111,6 +113,7 @@ internal class UARTService : NotificationService() {
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
if (!client.isConnected) {
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
return@launch
|
||||
}
|
||||
@@ -144,6 +147,7 @@ internal class UARTService : NotificationService() {
|
||||
.onEach { logger.log(10, "Sent: $it") }
|
||||
.launchIn(lifecycleScope)
|
||||
|
||||
hasBeenInitialized = true
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
|
||||
@@ -162,7 +166,7 @@ internal class UARTService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun unlockUiIfDisconnected(connectionState: GattConnectionStateWithStatus, device: ServerDevice) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED) {
|
||||
if (connectionState.state == GattConnectionState.STATE_DISCONNECTED && !hasBeenInitialized) {
|
||||
repository.onInitComplete(device)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user