mirror of
https://github.com/aljazceru/Android-nRF-Toolbox.git
synced 2026-02-06 15:24:29 +01:00
Add link loss alarm
This commit is contained in:
@@ -14,7 +14,9 @@ data class PRXServiceData(
|
||||
val deviceName: String? = null
|
||||
) {
|
||||
|
||||
val isLinkLossDisconnected = connectionState?.let {
|
||||
connectionStatus == BleGattConnectionStatus.LINK_LOSS
|
||||
val isLinkLossDisconnected = connectionState?.let { connectionState ->
|
||||
connectionStatus?.let { connectionStatus ->
|
||||
connectionStatus != BleGattConnectionStatus.SUCCESS && connectionStatus != BleGattConnectionStatus.TERMINATE_PEER_USER
|
||||
} ?: false
|
||||
} ?: false
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@ package no.nordicsemi.android.prx.repository
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.flow.filterNotNull
|
||||
@@ -42,6 +41,7 @@ import kotlinx.coroutines.flow.mapNotNull
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import no.nordicsemi.android.kotlin.ble.core.ServerDevice
|
||||
import no.nordicsemi.android.kotlin.ble.core.client.BleGattConnectOptions
|
||||
import no.nordicsemi.android.kotlin.ble.core.client.BleWriteType
|
||||
import no.nordicsemi.android.kotlin.ble.core.client.callback.BleGattClient
|
||||
import no.nordicsemi.android.kotlin.ble.core.client.service.BleGattCharacteristic
|
||||
@@ -154,7 +154,7 @@ internal class PRXService : NotificationService() {
|
||||
}
|
||||
|
||||
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch {
|
||||
client = device.connect(this@PRXService)
|
||||
client = device.connect(this@PRXService, BleGattConnectOptions(autoConnect = true))
|
||||
|
||||
client.connectionStateWithStatus
|
||||
.filterNotNull()
|
||||
|
||||
@@ -78,7 +78,7 @@ fun PRXScreen() {
|
||||
null,
|
||||
GattConnectionState.STATE_CONNECTING -> DeviceConnectingView { NavigateUpButton(navigateUp) }
|
||||
GattConnectionState.STATE_DISCONNECTED,
|
||||
GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(Reason.UNKNOWN) { NavigateUpButton(navigateUp) }
|
||||
GattConnectionState.STATE_DISCONNECTING -> DeviceDisconnectedView(getReason(state.isLinkLossDisconnected)) { NavigateUpButton(navigateUp) }
|
||||
GattConnectionState.STATE_CONNECTED -> ContentView(state) { viewModel.onEvent(it) }
|
||||
}
|
||||
}
|
||||
@@ -86,6 +86,14 @@ fun PRXScreen() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getReason(isLinkLoss: Boolean): Reason {
|
||||
return if (isLinkLoss) {
|
||||
Reason.LINK_LOSS
|
||||
} else {
|
||||
Reason.UNKNOWN
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun AppBar(state: PRXServiceData, navigateUp: () -> Unit, viewModel: PRXViewModel) {
|
||||
if (state.deviceName?.isNotBlank() == true) {
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
package no.nordicsemi.android.prx.viewmodel
|
||||
|
||||
import android.os.ParcelUuid
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
@@ -80,7 +79,6 @@ internal class PRXViewModel @Inject constructor(
|
||||
}
|
||||
|
||||
repository.data.onEach {
|
||||
Log.d("AAATESTAAA", "Data $it")
|
||||
if (it.isLinkLossDisconnected) {
|
||||
alarmHandler.playAlarm(it.linkLossAlarmLevel)
|
||||
}
|
||||
@@ -127,4 +125,9 @@ internal class PRXViewModel @Inject constructor(
|
||||
alarmHandler.pauseAlarm()
|
||||
navigationManager.navigateUp()
|
||||
}
|
||||
|
||||
override fun onCleared() {
|
||||
super.onCleared()
|
||||
alarmHandler.pauseAlarm()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user