Fix crash when LinkLoss occurs before establishing successful connection

This commit is contained in:
Sylwester Zieliński
2022-05-23 09:55:47 +02:00
parent 2434ff812e
commit a72d3dd758
3 changed files with 4 additions and 4 deletions

View File

@@ -29,7 +29,7 @@ class IdleResult<T> : BleManagerResult<T>
class ConnectingResult<T>(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult<T>
class SuccessResult<T>(device: BluetoothDevice, val data: T) : DeviceHolder(device), BleManagerResult<T>
class LinkLossResult<T>(device: BluetoothDevice, val data: T) : DeviceHolder(device), BleManagerResult<T>
class LinkLossResult<T>(device: BluetoothDevice, val data: T?) : DeviceHolder(device), BleManagerResult<T>
class DisconnectedResult<T>(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult<T>
class UnknownErrorResult<T>(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult<T>
class MissingServiceResult<T>(device: BluetoothDevice) : DeviceHolder(device), BleManagerResult<T>

View File

@@ -46,7 +46,7 @@ class ConnectionObserverAdapter<T> : ConnectionObserver {
Log.d(TAG, "onDeviceDisconnected(), reason: $reason")
_status.value = when (reason) {
ConnectionObserver.REASON_NOT_SUPPORTED -> MissingServiceResult(device)
ConnectionObserver.REASON_LINK_LOSS -> LinkLossResult(device, getData()!!)
ConnectionObserver.REASON_LINK_LOSS -> LinkLossResult(device, getData())
ConnectionObserver.REASON_SUCCESS -> DisconnectedResult(device)
else -> UnknownErrorResult(device)
}

View File

@@ -1,6 +1,5 @@
package no.nordicsemi.android.prx.repository
import android.bluetooth.BluetoothDevice
import android.content.Context
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.CoroutineScope
@@ -68,7 +67,8 @@ class PRXRepository @Inject internal constructor(
}
}
(result as? LinkLossResult<PRXData>)?.let {
alarmHandler.playAlarm(it.data.linkLossAlarmLevel)
val alarmLevel = it.data?.linkLossAlarmLevel ?: AlarmLevel.HIGH
alarmHandler.playAlarm(alarmLevel)
}
}