diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/repository/BPSRepository.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/repository/BPSRepository.kt index 84c7486e..c723e49c 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/repository/BPSRepository.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/repository/BPSRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.bps.data.BPSManager import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @ViewModelScoped @@ -25,9 +26,9 @@ internal class BPSRepository @Inject constructor( private var logger: ToolboxLogger? = null - fun downloadData(device: BluetoothDevice): Flow> = callbackFlow { + fun downloadData(device: DiscoveredBluetoothDevice): Flow> = callbackFlow { val scope = this - val createdLogger = toolboxLoggerFactory.create("BPS", device.address).also { + val createdLogger = toolboxLoggerFactory.create("BPS", device.address()).also { logger = it } val manager = BPSManager(context, scope, createdLogger) @@ -36,7 +37,7 @@ internal class BPSRepository @Inject constructor( trySend(it) }.launchIn(scope) - manager.connect(device) + manager.connect(device.device) .useAutoConnect(false) .retry(3, 100) .enqueue() diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt index 36826f5e..e720d7c2 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/view/BPSViewState.kt @@ -5,5 +5,8 @@ import no.nordicsemi.android.service.BleManagerResult internal sealed class BPSViewState -internal data class WorkingState(val result: BleManagerResult) : BPSViewState() +internal data class WorkingState( + val result: BleManagerResult +) : BPSViewState() + internal object NoDeviceState : BPSViewState() diff --git a/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt b/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt index 1d031de8..62664cdc 100644 --- a/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt +++ b/profile_bps/src/main/java/no/nordicsemi/android/bps/viewmodel/BPSViewModel.kt @@ -51,7 +51,7 @@ internal class BPSViewModel @Inject constructor( } private fun connectDevice(device: DiscoveredBluetoothDevice) { - repository.downloadData(device.device).onEach { + repository.downloadData(device).onEach { _state.value = WorkingState(it) }.launchIn(viewModelScope) } diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt index 10ea642d..57ed9ae3 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult import no.nordicsemi.android.service.ServiceManager +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -33,12 +34,12 @@ class CGMRepository @Inject constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(CGMService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("CGMS", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("CGMS", device.address()).also { logger = it } val manager = CGMManager(context, scope, createdLogger) @@ -53,9 +54,9 @@ class CGMRepository @Inject constructor( } } - private suspend fun CGMManager.start(device: BluetoothDevice) { + private suspend fun CGMManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt index d97d1a63..51f81d03 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/repository/CGMService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class CGMService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMScreenViewModel.kt b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMScreenViewModel.kt index 06a3f954..76a5115b 100644 --- a/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMScreenViewModel.kt +++ b/profile_cgms/src/main/java/no/nordicsemi/android/cgms/viewmodel/CGMScreenViewModel.kt @@ -58,7 +58,7 @@ internal class CGMScreenViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt index 2b80f735..3372b2e6 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCRepository.kt @@ -15,6 +15,7 @@ import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult import no.nordicsemi.android.service.ServiceManager +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -34,12 +35,12 @@ class CSCRepository @Inject constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(CSCService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("CSC", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("CSC", device.address()).also { logger = it } val manager = CSCManager(context, scope, createdLogger) @@ -58,9 +59,9 @@ class CSCRepository @Inject constructor( manager?.setWheelSize(wheelSize) } - private suspend fun CSCManager.start(device: BluetoothDevice) { + private suspend fun CSCManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt index 32fdf0f0..488ceb93 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/repository/CSCService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class CSCService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt b/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt index 0dd8b15d..ec692fbd 100644 --- a/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt +++ b/profile_csc/src/main/java/no/nordicsemi/android/csc/viewmodel/CSCViewModel.kt @@ -48,7 +48,7 @@ internal class CSCViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt index bb002791..033c101f 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/main/viewmodel/GLSViewModel.kt @@ -52,7 +52,7 @@ internal class GLSViewModel @Inject constructor( } private fun connectDevice(device: DiscoveredBluetoothDevice) { - repository.downloadData(device.device).onEach { + repository.downloadData(device).onEach { _state.value = WorkingState(it) }.launchIn(viewModelScope) } diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/repository/GLSRepository.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/repository/GLSRepository.kt index ac27ebf7..daf8f711 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/repository/GLSRepository.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/repository/GLSRepository.kt @@ -18,6 +18,7 @@ import no.nordicsemi.android.logger.ToolboxLogger import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.utils.exhaustive +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @ViewModelScoped @@ -30,14 +31,14 @@ internal class GLSRepository @Inject constructor( private var manager: GLSManager? = null private var logger: ToolboxLogger? = null - fun downloadData(device: BluetoothDevice): Flow> = callbackFlow { + fun downloadData(device: DiscoveredBluetoothDevice): Flow> = callbackFlow { val scope = this - val createdLogger = toolboxLoggerFactory.create("GLS", device.address).also { + val createdLogger = toolboxLoggerFactory.create("GLS", device.address()).also { logger = it } val managerInstance = manager ?: GLSManager(context, scope, createdLogger).apply { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt index b5258e3d..312485b7 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult import no.nordicsemi.android.service.ServiceManager +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -33,12 +34,12 @@ class HRSRepository @Inject constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(HRSService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("HRS", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("HRS", device.address()).also { logger = it } val manager = HRSManager(context, scope, createdLogger) @@ -57,9 +58,9 @@ class HRSRepository @Inject constructor( logger?.openLogger() } - private suspend fun HRSManager.start(device: BluetoothDevice) { + private suspend fun HRSManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt index 565f4cd0..ce0077fd 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/service/HRSService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class HRSService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt index 504d98de..b5d8aa90 100644 --- a/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt +++ b/profile_hrs/src/main/java/no/nordicsemi/android/hrs/viewmodel/HRSViewModel.kt @@ -49,7 +49,7 @@ internal class HRSViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt index 0d767b46..cd22b37d 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.logger.ToolboxLoggerFactory import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult import no.nordicsemi.android.service.ServiceManager +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -33,12 +34,12 @@ class HTSRepository @Inject constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(HTSService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("HTS", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("HTS", device.address()).also { logger = it } val manager = HTSManager(context, scope, createdLogger) @@ -57,9 +58,9 @@ class HTSRepository @Inject constructor( logger?.openLogger() } - private suspend fun HTSManager.start(device: BluetoothDevice) { + private suspend fun HTSManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt index fbb41b6e..5d7f71f5 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/repository/HTSService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class HTSService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt b/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt index 9a7d3d8f..3e8b63a3 100644 --- a/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt +++ b/profile_hts/src/main/java/no/nordicsemi/android/hts/viewmodel/HTSViewModel.kt @@ -48,7 +48,7 @@ internal class HTSViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt index 4ebd7b95..695680e0 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXRepository.kt @@ -12,6 +12,7 @@ import no.nordicsemi.android.prx.data.PRXData import no.nordicsemi.android.prx.data.PRXManager import no.nordicsemi.android.prx.data.ProximityServerManager import no.nordicsemi.android.service.* +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -34,13 +35,13 @@ class PRXRepository @Inject internal constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnectedWithoutLinkLoss = data.map { it.hasBeenDisconnectedWithoutLinkLoss() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(PRXService::class.java, device) proximityServerManager.open() } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("PRX", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("PRX", device.address()).also { logger = it } val manager = PRXManager(context, scope, createdLogger) @@ -52,7 +53,7 @@ class PRXRepository @Inject internal constructor( handleLocalAlarm(it) }.launchIn(scope) - manager.connect(device) + manager.connect(device.device) .useAutoConnect(true) .retry(3, 100) .enqueue() diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt index e2654c62..1f440d90 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/repository/PRXService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class PRXService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt b/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt index 786a9796..4aac1ea3 100644 --- a/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt +++ b/profile_prx/src/main/java/no/nordicsemi/android/prx/viewmodel/PRXViewModel.kt @@ -48,7 +48,7 @@ internal class PRXViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt index 15688907..4b4f2141 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.rscs.data.RSCSManager import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.service.ConnectingResult import no.nordicsemi.android.service.ServiceManager +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -33,12 +34,12 @@ class RSCSRepository @Inject constructor( val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(RSCSService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { - val createdLogger = toolboxLoggerFactory.create("RSCS", device.address).also { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { + val createdLogger = toolboxLoggerFactory.create("RSCS", device.address()).also { logger = it } val manager = RSCSManager(context, scope, createdLogger) @@ -57,9 +58,9 @@ class RSCSRepository @Inject constructor( logger?.openLogger() } - private suspend fun RSCSManager.start(device: BluetoothDevice) { + private suspend fun RSCSManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt index 70007ded..6c05e241 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/repository/RSCSService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class RSCSService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt index 6977b1c8..03c00310 100644 --- a/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt +++ b/profile_rscs/src/main/java/no/nordicsemi/android/rscs/viewmodel/RSCSViewModel.kt @@ -48,7 +48,7 @@ internal class RSCSViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive } diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt index 02b7b175..e3cc5095 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTRepository.kt @@ -14,6 +14,7 @@ import no.nordicsemi.android.service.IdleResult import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.uart.data.* import no.nordicsemi.android.utils.EMPTY +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject import javax.inject.Singleton @@ -31,20 +32,20 @@ class UARTRepository @Inject internal constructor( private val _data = MutableStateFlow>(IdleResult()) internal val data = _data.asStateFlow() - var device: BluetoothDevice? = null + var device: DiscoveredBluetoothDevice? = null val isRunning = data.map { it.isRunning() } val hasBeenDisconnected = data.map { it.hasBeenDisconnected() } val lastConfigurationName = configurationDataSource.lastConfigurationName - fun launch(device: BluetoothDevice) { + fun launch(device: DiscoveredBluetoothDevice) { serviceManager.startService(UARTService::class.java, device) } - fun start(device: BluetoothDevice, scope: CoroutineScope) { + fun start(device: DiscoveredBluetoothDevice, scope: CoroutineScope) { this.device = device - val createdLogger = toolboxLoggerFactory.create("UART", device.address).also { + val createdLogger = toolboxLoggerFactory.create("UART", device.address()).also { logger = it } val manager = UARTManager(context, scope, createdLogger) @@ -80,9 +81,9 @@ class UARTRepository @Inject internal constructor( configurationDataSource.saveConfigurationName(name) } - private suspend fun UARTManager.start(device: BluetoothDevice) { + private suspend fun UARTManager.start(device: DiscoveredBluetoothDevice) { try { - connect(device) + connect(device.device) .useAutoConnect(false) .retry(3, 100) .suspend() diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt index d01a5660..3f241958 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/repository/UARTService.kt @@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice import javax.inject.Inject @AndroidEntryPoint @@ -19,7 +20,7 @@ internal class UARTService : NotificationService() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { super.onStartCommand(intent, flags, startId) - val device = intent!!.getParcelableExtra(DEVICE_DATA)!! + val device = intent!!.getParcelableExtra(DEVICE_DATA)!! repository.start(device, lifecycleScope) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt index 08e99f44..8587e90c 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTScreen.kt @@ -24,7 +24,6 @@ import no.nordicsemi.ui.scanner.ui.DeviceDisconnectedView import no.nordicsemi.ui.scanner.ui.NoDeviceView import no.nordicsemi.ui.scanner.ui.Reason -@SuppressLint("MissingPermission") @Composable fun UARTScreen() { val viewModel: UARTViewModel = hiltViewModel() @@ -33,25 +32,7 @@ fun UARTScreen() { Column { val navigateUp = { viewModel.onEvent(NavigateUp) } - Column(modifier = Modifier) { - when (state.uartManagerState) { - NoDeviceState -> BackIconAppBar(stringResource(id = R.string.uart_title), navigateUp) - is WorkingState -> when (state.uartManagerState.result) { - is IdleResult, - is DisconnectedResult, - is LinkLossResult, - is MissingServiceResult, - is UnknownErrorResult -> BackIconAppBar(stringResource(id = R.string.uart_title), navigateUp) - is ConnectingResult, - is SuccessResult -> { - val text = state.uartManagerState.device.name ?: state.uartManagerState.device.address ?: stringResource(id = R.string.uart_title) - LoggerIconAppBar(text, navigateUp, { viewModel.onEvent(DisconnectEvent) }) { - viewModel.onEvent(OpenLogger) - } - } - } - }.exhaustive - } + AppBar(state = state, navigateUp = navigateUp) { viewModel.onEvent(it) } Column(modifier = Modifier) { when (state.uartManagerState) { @@ -70,6 +51,30 @@ fun UARTScreen() { } } +@SuppressLint("MissingPermission") +@Composable +private fun AppBar(state: UARTViewState, navigateUp: () -> Unit, onEvent: (UARTViewEvent) -> Unit) { + Column(modifier = Modifier) { + when (state.uartManagerState) { + NoDeviceState -> BackIconAppBar(stringResource(id = R.string.uart_title), navigateUp) + is WorkingState -> when (state.uartManagerState.result) { + is IdleResult, + is DisconnectedResult, + is LinkLossResult, + is MissingServiceResult, + is UnknownErrorResult -> BackIconAppBar(stringResource(id = R.string.uart_title), navigateUp) + is ConnectingResult, + is SuccessResult -> { + val text = state.uartManagerState.device.nameOrAddress() + LoggerIconAppBar(text, navigateUp, { onEvent(DisconnectEvent) }) { + onEvent(OpenLogger) + } + } + } + }.exhaustive + } +} + @Composable private fun SuccessScreen(data: UARTData, state: UARTViewState, viewModel: UARTViewModel) { val viewEntity = PagerViewEntity( diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTState.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTState.kt index 666b333d..eebbcde5 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTState.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/view/UARTState.kt @@ -5,6 +5,7 @@ import no.nordicsemi.android.service.BleManagerResult import no.nordicsemi.android.uart.data.UARTConfiguration import no.nordicsemi.android.uart.data.UARTData import no.nordicsemi.android.uart.data.UARTMacro +import no.nordicsemi.ui.scanner.DiscoveredBluetoothDevice internal data class UARTViewState( val editedPosition: Int? = null, @@ -28,7 +29,7 @@ internal data class UARTViewState( internal sealed class HTSManagerState internal data class WorkingState( - val device: BluetoothDevice, + val device: DiscoveredBluetoothDevice, val result: BleManagerResult ) : HTSManagerState() diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt index c3da2b1e..af2c87de 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/viewmodel/UARTViewModel.kt @@ -67,7 +67,7 @@ internal class UARTViewModel @Inject constructor( private fun handleArgs(args: DestinationResult) { when (args) { is CancelDestinationResult -> navigationManager.navigateUp() - is SuccessDestinationResult -> repository.launch(args.getDevice().device) + is SuccessDestinationResult -> repository.launch(args.getDevice()) }.exhaustive }