Close service after disconnect event

This commit is contained in:
Sylwester Zieliński
2022-02-01 15:47:07 +01:00
parent 05d48ed03e
commit 5b23af133e
9 changed files with 17 additions and 26 deletions

View File

@@ -92,6 +92,13 @@ abstract class BleProfileService : Service() {
})
}
protected fun stopIfDisconnected(status: BleManagerStatus) {
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
stopSelf()
}
}
override fun onBind(intent: Intent?): IBinder? {
return null
}

View File

@@ -24,9 +24,7 @@ internal class CGMService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {

View File

@@ -25,9 +25,7 @@ internal class CSCService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {

View File

@@ -5,9 +5,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import no.nordicsemi.android.hrs.data.HRSRepository
import no.nordicsemi.android.service.BleManagerStatus
import no.nordicsemi.android.service.BleServiceStatus
import no.nordicsemi.android.service.ForegroundBleService
import no.nordicsemi.android.utils.exhaustive
import javax.inject.Inject
@AndroidEntryPoint
@@ -24,9 +22,7 @@ internal class HRSService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {

View File

@@ -1,5 +1,6 @@
package no.nordicsemi.android.hrs.viewmodel
import android.util.Log
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -24,6 +25,7 @@ internal class HRSViewModel @Inject constructor(
) : ViewModel() {
val state = repository.data.combine(repository.status) { data, status ->
Log.d("AAATESTAAA", "data: $data, status: $status")
when (status) {
BleManagerStatus.CONNECTING -> LoadingState
BleManagerStatus.OK,

View File

@@ -24,9 +24,7 @@ internal class HTSService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {

View File

@@ -1,14 +1,9 @@
package no.nordicsemi.android.prx.repository
import android.util.Log
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import no.nordicsemi.android.prx.data.AlarmLevel
import no.nordicsemi.android.prx.data.DisableAlarm
import no.nordicsemi.android.prx.data.Disconnect
import no.nordicsemi.android.prx.data.EnableAlarm
import no.nordicsemi.android.prx.data.PRXRepository
import no.nordicsemi.android.prx.data.*
import no.nordicsemi.android.service.BleManagerStatus
import no.nordicsemi.android.service.BleServiceStatus
import no.nordicsemi.android.service.ForegroundBleService
@@ -43,6 +38,7 @@ internal class PRXService : ForegroundBleService() {
BleServiceStatus.OK -> BleManagerStatus.OK
BleServiceStatus.DISCONNECTED -> {
scope.close()
stopSelf()
BleManagerStatus.DISCONNECTED
}
BleServiceStatus.LINK_LOSS -> null

View File

@@ -24,9 +24,7 @@ internal class RSCSService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {

View File

@@ -25,9 +25,7 @@ internal class UARTService : ForegroundBleService() {
status.onEach {
val status = it.mapToSimpleManagerStatus()
repository.setNewStatus(status)
if (status == BleManagerStatus.DISCONNECTED) {
scope.close()
}
stopIfDisconnected(status)
}.launchIn(scope)
repository.command.onEach {