diff --git a/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt b/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt index c156e5c0..3e817ba0 100644 --- a/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt +++ b/app/src/main/java/no/nordicsemi/android/nrftoolbox/viewmodel/HomeViewModel.kt @@ -43,6 +43,7 @@ import kotlinx.coroutines.flow.onEach import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.ProfileOpenEvent import no.nordicsemi.android.cgms.repository.CGMRepository +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.common.logger.NordicLogger import no.nordicsemi.android.common.navigation.DestinationId import no.nordicsemi.android.common.navigation.Navigator diff --git a/lib_service/src/main/java/no/nordicsemi/android/service/OpenLoggerEvent.kt b/lib_service/src/main/java/no/nordicsemi/android/service/OpenLoggerEvent.kt new file mode 100644 index 00000000..52d8ed38 --- /dev/null +++ b/lib_service/src/main/java/no/nordicsemi/android/service/OpenLoggerEvent.kt @@ -0,0 +1,3 @@ +package no.nordicsemi.android.service + +class OpenLoggerEvent 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 a369ffef..b150a969 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 @@ -52,7 +52,7 @@ import no.nordicsemi.android.bps.view.BPSViewEvent import no.nordicsemi.android.bps.view.BPSViewState import no.nordicsemi.android.bps.view.DisconnectEvent import no.nordicsemi.android.bps.view.OpenLoggerEvent -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.common.navigation.NavigationResult import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient @@ -61,10 +61,10 @@ import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser -import no.nordicsemi.android.kotlin.ble.profile.bps.data.BloodPressureMeasurementData import no.nordicsemi.android.kotlin.ble.profile.bps.BloodPressureMeasurementParser -import no.nordicsemi.android.kotlin.ble.profile.bps.data.IntermediateCuffPressureData import no.nordicsemi.android.kotlin.ble.profile.bps.IntermediateCuffPressureParser +import no.nordicsemi.android.kotlin.ble.profile.bps.data.BloodPressureMeasurementData +import no.nordicsemi.android.kotlin.ble.profile.bps.data.IntermediateCuffPressureData import no.nordicsemi.android.toolbox.scanner.ScannerDestinationId import no.nordicsemi.android.ui.view.StringConst import java.util.* @@ -91,6 +91,7 @@ internal class BPSViewModel @Inject constructor( val state = _state.asStateFlow() private lateinit var client: BleGattClient + private lateinit var logger: NordicBlekLogger init { navigationManager.navigateTo(ScannerDestinationId, ParcelUuid(BPS_SERVICE_UUID)) @@ -110,14 +111,14 @@ internal class BPSViewModel @Inject constructor( fun onEvent(event: BPSViewEvent) { when (event) { DisconnectEvent -> navigationManager.navigateUp() - OpenLoggerEvent -> TODO() + OpenLoggerEvent -> logger.launch() } } private fun startGattClient(device: ServerDevice) = viewModelScope.launch { _state.value = _state.value.copy(deviceName = device.name) - val logger = NordicLogger(context, stringConst.APP_NAME, "BPS", device.address) + logger = NordicBlekLogger(context, stringConst.APP_NAME, "BPS", device.address) client = device.connect(context, logger = logger) 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 19dfb9ae..7def0da5 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 @@ -45,6 +45,7 @@ import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.gls.data.RequestStatus import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -64,6 +65,9 @@ class CGMRepository @Inject constructor( private val _command = simpleSharedFlow() internal val command = _command.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val hasRecords = data.value.records.isNotEmpty() val highestSequenceNumber = data.value.records.maxOfOrNull { it.sequenceNumber } ?: -1 @@ -94,7 +98,7 @@ class CGMRepository @Inject constructor( } fun openLogger() { - TODO() + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun clear() { 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 5084fc93..0b826c1a 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 @@ -43,7 +43,7 @@ import kotlinx.coroutines.launch import no.nordicsemi.android.ble.common.data.cgm.CGMSpecificOpsControlPointData import no.nordicsemi.android.cgms.data.CGMRecordWithSequenceNumber import no.nordicsemi.android.cgms.data.CGMServiceCommand -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattCharacteristic @@ -131,10 +131,14 @@ internal class CGMService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@CGMService, stringConst.APP_NAME, "CGM", device.address) + val logger = NordicBlekLogger(this@CGMService, stringConst.APP_NAME, "CGM", device.address) client = device.connect(this@CGMService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() 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 db1507b5..9a7b20c7 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 @@ -38,7 +38,7 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import no.nordicsemi.android.common.core.simpleSharedFlow -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.csc.data.CSCServiceData import no.nordicsemi.android.csc.data.SpeedUnit import no.nordicsemi.android.kotlin.ble.core.ServerDevice @@ -47,6 +47,7 @@ import no.nordicsemi.android.kotlin.ble.profile.csc.data.CSCData import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSize import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSizes import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -57,8 +58,6 @@ class CSCRepository @Inject constructor( private val context: Context, private val serviceManager: ServiceManager, ) { - private var logger: NordicLogger? = null - private val _wheelSize = MutableStateFlow(WheelSizes.default) internal val wheelSize = _wheelSize.asStateFlow() @@ -68,6 +67,9 @@ class CSCRepository @Inject constructor( private val _stopEvent = simpleSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } fun launch(device: ServerDevice) { @@ -99,11 +101,10 @@ class CSCRepository @Inject constructor( } fun openLogger() { - NordicLogger.launch(context, logger) + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun release() { - logger = null _stopEvent.tryEmit(DisconnectAndStopEvent()) } } 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 2f218f51..7d175df5 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 @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices @@ -87,10 +87,14 @@ internal class CSCService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@CSCService, stringConst.APP_NAME, "CSC", device.address) + val logger = NordicBlekLogger(this@CSCService, stringConst.APP_NAME, "CSC", device.address) client = device.connect(this@CSCService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() 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 7ff5f277..93762a1c 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 @@ -48,7 +48,7 @@ import kotlinx.coroutines.launch import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.ProfileConnectedEvent -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.common.navigation.NavigationResult import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.gls.GlsDetailsDestinationId @@ -103,6 +103,7 @@ internal class GLSViewModel @Inject constructor( ) : ViewModel() { private lateinit var client: BleGattClient + private lateinit var logger: NordicBlekLogger private lateinit var glucoseMeasurementCharacteristic: BleGattCharacteristic private lateinit var recordAccessControlPointCharacteristic: BleGattCharacteristic @@ -130,7 +131,7 @@ internal class GLSViewModel @Inject constructor( fun onEvent(event: GLSScreenViewEvent) { when (event) { - OpenLoggerEvent -> TODO() + OpenLoggerEvent -> logger.launch() DisconnectEvent -> navigationManager.navigateUp() is OnWorkingModeSelected -> onEvent(event) is OnGLSRecordClick -> navigateToDetails(event.record) @@ -156,7 +157,7 @@ internal class GLSViewModel @Inject constructor( } private fun startGattClient(device: ServerDevice) = viewModelScope.launch { - val logger = NordicLogger(context, stringConst.APP_NAME, "BPS", device.address) + logger = NordicBlekLogger(context, stringConst.APP_NAME, "BPS", device.address) client = device.connect(context, logger = logger) 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 deleted file mode 100644 index c0c0ff6e..00000000 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/repository/GLSRepository.kt +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2022, Nordic Semiconductor - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors may be - * used to endorse or promote products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, - * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, - * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package no.nordicsemi.android.gls.repository - -import dagger.hilt.android.scopes.ViewModelScoped -import javax.inject.Inject - -@ViewModelScoped -internal class GLSRepository @Inject constructor( - -) { - -} 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 829e3c9f..94cee9ae 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 @@ -38,12 +38,13 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import no.nordicsemi.android.common.core.simpleSharedFlow -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.hrs.data.HRSServiceData import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.hrs.data.HRSData import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -54,7 +55,7 @@ class HRSRepository @Inject constructor( private val context: Context, private val serviceManager: ServiceManager ) { - private var logger: NordicLogger? = null + private var logger: NordicBlekLogger? = null private val _data = MutableStateFlow(HRSServiceData()) internal val data = _data.asStateFlow() @@ -62,6 +63,9 @@ class HRSRepository @Inject constructor( private val _stopEvent = simpleSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } fun launch(device: ServerDevice) { @@ -93,7 +97,7 @@ class HRSRepository @Inject constructor( } fun openLogger() { - NordicLogger.launch(context, logger) + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun release() { 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 980873e5..b5c05088 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 @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices @@ -89,10 +89,14 @@ internal class HRSService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@HRSService, stringConst.APP_NAME, "CSC", device.address) + val logger = NordicBlekLogger(this@HRSService, stringConst.APP_NAME, "CSC", device.address) client = device.connect(this@HRSService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() 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 a0e921de..1cc7c7e8 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 @@ -38,13 +38,14 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import no.nordicsemi.android.common.core.simpleSharedFlow -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.hts.data.HTSServiceData import no.nordicsemi.android.hts.view.TemperatureUnit import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.hts.data.HTSData import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -55,7 +56,7 @@ class HTSRepository @Inject constructor( private val context: Context, private val serviceManager: ServiceManager ) { - private var logger: NordicLogger? = null + private var logger: NordicBlekLogger? = null private val _data = MutableStateFlow(HTSServiceData()) internal val data = _data.asStateFlow() @@ -63,6 +64,9 @@ class HTSRepository @Inject constructor( private val _stopEvent = simpleSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } fun launch(device: ServerDevice) { @@ -90,7 +94,7 @@ class HTSRepository @Inject constructor( } fun openLogger() { - NordicLogger.launch(context, logger) + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun release() { 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 fb90a48f..9e86d0a3 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 @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices @@ -87,10 +87,14 @@ internal class HTSService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@HTSService, stringConst.APP_NAME, "HTS", device.address) + val logger = NordicBlekLogger(this@HTSService, stringConst.APP_NAME, "HTS", device.address) client = device.connect(this@HTSService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() 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 4add8c10..755dbb03 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 @@ -44,6 +44,7 @@ import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.prx.AlarmLevel import no.nordicsemi.android.prx.data.PRXServiceData import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -61,6 +62,9 @@ class PRXRepository @Inject internal constructor( private val _stopEvent = simpleSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + private val _remoteAlarmLevel = simpleSharedFlow() internal val remoteAlarmLevel = _remoteAlarmLevel.asSharedFlow() @@ -99,7 +103,7 @@ class PRXRepository @Inject internal constructor( } fun openLogger() { - TODO() + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun release() { 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 9404a9f1..93c79dde 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 @@ -40,13 +40,12 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattCharacteristic import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices import no.nordicsemi.android.kotlin.ble.core.ServerDevice -import no.nordicsemi.android.kotlin.ble.core.data.BleGattConnectOptions import no.nordicsemi.android.kotlin.ble.core.data.BleGattConnectionStatus import no.nordicsemi.android.kotlin.ble.core.data.BleGattPermission import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty @@ -162,10 +161,14 @@ internal class PRXService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@PRXService, stringConst.APP_NAME, "PRX", device.address) + val logger = NordicBlekLogger(this@PRXService, stringConst.APP_NAME, "PRX", device.address) client = device.connect(this@PRXService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionStateWithStatus .filterNotNull() .onEach { repository.onConnectionStateChanged(it) } 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 36b935fd..f1654fe8 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 @@ -38,12 +38,13 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import no.nordicsemi.android.common.core.simpleSharedFlow -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.profile.rscs.data.RSCSData import no.nordicsemi.android.rscs.data.RSCSServiceData import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import javax.inject.Inject import javax.inject.Singleton @@ -54,7 +55,7 @@ class RSCSRepository @Inject constructor( private val context: Context, private val serviceManager: ServiceManager ) { - private var logger: NordicLogger? = null + private var logger: NordicBlekLogger? = null private val _data = MutableStateFlow(RSCSServiceData()) internal val data = _data.asStateFlow() @@ -62,6 +63,9 @@ class RSCSRepository @Inject constructor( private val _stopEvent = simpleSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } fun launch(device: ServerDevice) { @@ -85,7 +89,7 @@ class RSCSRepository @Inject constructor( } fun openLogger() { - NordicLogger.launch(context, logger) + _loggerEvent.tryEmit(OpenLoggerEvent()) } fun release() { 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 647b474e..e0874334 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 @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices @@ -87,10 +87,14 @@ internal class RSCSService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@RSCSService, stringConst.APP_NAME, "RSCS", device.address) + val logger = NordicBlekLogger(this@RSCSService, stringConst.APP_NAME, "RSCS", device.address) client = device.connect(this@RSCSService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() 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 19827880..0cc31462 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 @@ -38,10 +38,11 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.map import no.nordicsemi.android.common.core.simpleSharedFlow -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.service.DisconnectAndStopEvent +import no.nordicsemi.android.service.OpenLoggerEvent import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.uart.data.ConfigurationDataSource import no.nordicsemi.android.uart.data.MacroEol @@ -60,8 +61,6 @@ class UARTRepository @Inject internal constructor( private val serviceManager: ServiceManager, private val configurationDataSource: ConfigurationDataSource ) { - private var logger: NordicLogger? = null - private val _data = MutableStateFlow(UARTServiceData()) internal val data = _data.asStateFlow() @@ -71,6 +70,9 @@ class UARTRepository @Inject internal constructor( private val _command = simpleSharedFlow() internal val command = _command.asSharedFlow() + private val _loggerEvent = simpleSharedFlow() + internal val loggerEvent = _loggerEvent.asSharedFlow() + val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val lastConfigurationName = configurationDataSource.lastConfigurationName @@ -115,7 +117,7 @@ class UARTRepository @Inject internal constructor( } fun openLogger() { - NordicLogger.launch(context, logger) + _loggerEvent.tryEmit(OpenLoggerEvent()) } suspend fun saveConfigurationName(name: String) { @@ -124,6 +126,5 @@ class UARTRepository @Inject internal constructor( fun release() { _stopEvent.tryEmit(DisconnectAndStopEvent()) - logger = null } } 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 d25feabe..ac0cec0b 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 @@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch -import no.nordicsemi.android.common.logger.NordicLogger +import no.nordicsemi.android.common.logger.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattCharacteristic @@ -90,10 +90,14 @@ internal class UARTService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicLogger(this@UARTService, stringConst.APP_NAME, "UART", device.address) + val logger = NordicBlekLogger(this@UARTService, stringConst.APP_NAME, "UART", device.address) client = device.connect(this@UARTService, logger = logger) + repository.loggerEvent + .onEach { logger.launch() } + .launchIn(lifecycleScope) + client.connectionState .onEach { repository.onConnectionStateChanged(it) } .filterNotNull()