From 79b98c84b2af421bbe04c43fdd9548258e82457a Mon Sep 17 00:00:00 2001 From: andrekir Date: Tue, 28 Nov 2023 18:17:05 -0300 Subject: [PATCH] fix: replace BluetoothAdapter with repository methods --- .../java/com/geeksville/mesh/android/ContextServices.kt | 3 --- .../mesh/repository/radio/BluetoothInterface.kt | 6 +++--- .../mesh/repository/radio/BluetoothInterfaceSpec.kt | 9 +++------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/android/ContextServices.kt b/app/src/main/java/com/geeksville/mesh/android/ContextServices.kt index 1c47c88c..b422b625 100644 --- a/app/src/main/java/com/geeksville/mesh/android/ContextServices.kt +++ b/app/src/main/java/com/geeksville/mesh/android/ContextServices.kt @@ -8,7 +8,6 @@ import android.bluetooth.BluetoothManager import android.companion.CompanionDeviceManager import android.content.Context import android.content.pm.PackageManager -import android.hardware.usb.UsbManager import android.location.LocationManager import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat @@ -26,8 +25,6 @@ val Context.companionDeviceManager: CompanionDeviceManager? @SuppressLint("NewApi") get() = getSystemService(Context.COMPANION_DEVICE_SERVICE).takeIf { hasCompanionDeviceApi() } as? CompanionDeviceManager? -val Context.usbManager: UsbManager get() = requireNotNull(getSystemService(Context.USB_SERVICE) as? UsbManager?) { "USB_SERVICE is not available"} - val Context.notificationManager: NotificationManager get() = requireNotNull(getSystemService(Context.NOTIFICATION_SERVICE) as? NotificationManager?) val Context.locationManager: LocationManager get() = requireNotNull(getSystemService(Context.LOCATION_SERVICE) as? LocationManager?) diff --git a/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterface.kt b/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterface.kt index d43542c7..a6c36b23 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterface.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterface.kt @@ -1,11 +1,11 @@ package com.geeksville.mesh.repository.radio import android.app.Application -import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothGattCharacteristic import android.bluetooth.BluetoothGattService import com.geeksville.mesh.android.Logging import com.geeksville.mesh.concurrent.handledLaunch +import com.geeksville.mesh.repository.bluetooth.BluetoothRepository import com.geeksville.mesh.service.* import com.geeksville.mesh.util.anonymize import com.geeksville.mesh.util.exceptionReporter @@ -79,7 +79,7 @@ A variable keepAllPackets, if set to true will suppress this behavior and instea */ class BluetoothInterface @AssistedInject constructor( context: Application, - bluetoothAdapter: dagger.Lazy, + bluetoothRepository: BluetoothRepository, private val service: RadioInterfaceService, @Assisted val address: String, ) : IRadioInterface, Logging { @@ -136,7 +136,7 @@ class BluetoothInterface @AssistedInject constructor( init { // Note: this call does no comms, it just creates the device object (even if the // device is off/not connected) - val device = bluetoothAdapter.get()?.getRemoteDevice(address) + val device = bluetoothRepository.getRemoteDevice(address) if (device != null) { info("Creating radio interface service. device=${address.anonymize}") diff --git a/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterfaceSpec.kt b/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterfaceSpec.kt index 2b6a16b5..e055820c 100644 --- a/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterfaceSpec.kt +++ b/app/src/main/java/com/geeksville/mesh/repository/radio/BluetoothInterfaceSpec.kt @@ -1,8 +1,7 @@ package com.geeksville.mesh.repository.radio -import android.annotation.SuppressLint -import android.bluetooth.BluetoothAdapter import com.geeksville.mesh.android.Logging +import com.geeksville.mesh.repository.bluetooth.BluetoothRepository import com.geeksville.mesh.util.anonymize import javax.inject.Inject @@ -11,17 +10,15 @@ import javax.inject.Inject */ class BluetoothInterfaceSpec @Inject constructor( private val factory: BluetoothInterfaceFactory, - private val bluetoothAdapter: dagger.Lazy - + private val bluetoothRepository: BluetoothRepository, ): InterfaceSpec, Logging { override fun createInterface(rest: String): BluetoothInterface { return factory.create(rest) } /** Return true if this address is still acceptable. For BLE that means, still bonded */ - @SuppressLint("MissingPermission") override fun addressValid(rest: String): Boolean { - val allPaired = bluetoothAdapter.get()?.bondedDevices.orEmpty() + val allPaired = bluetoothRepository.state.value.bondedDevices .map { it.address }.toSet() return if (!allPaired.contains(rest)) { warn("Ignoring stale bond to ${rest.anonymize}")