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 1320fce0..ec7f73fc 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 @@ -41,13 +41,14 @@ import no.nordicsemi.android.cgms.data.CGMRecordWithSequenceNumber import no.nordicsemi.android.cgms.data.CGMServiceCommand import no.nordicsemi.android.cgms.data.CGMServiceData import no.nordicsemi.android.common.core.simpleSharedFlow +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.core.data.GattConnectionStateWithStatus 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 no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -56,7 +57,10 @@ class CGMRepository @Inject constructor( @ApplicationContext private val context: Context, private val serviceManager: ServiceManager, + private val stringConst: StringConst ) { + private var logger: NordicBlekLogger? = null + private val _data = MutableStateFlow(CGMServiceData()) internal val data = _data.asStateFlow() @@ -66,9 +70,6 @@ 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?.state == GattConnectionState.STATE_CONNECTED } val hasRecords = data.value.records.isNotEmpty() val highestSequenceNumber = data.value.records.maxOfOrNull { it.sequenceNumber } ?: -1 @@ -91,6 +92,7 @@ class CGMRepository @Inject constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "CGM", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(CGMService::class.java, device) } @@ -121,7 +123,11 @@ class CGMRepository @Inject constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun clear() { @@ -133,6 +139,7 @@ class CGMRepository @Inject constructor( } private fun clean() { + logger = null _data.value = CGMServiceData() } } 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 d52eedb5..b6e6975c 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 @@ -93,9 +93,6 @@ internal class CGMService : NotificationService() { @Inject lateinit var repository: CGMRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient private var secured = false @@ -136,13 +133,7 @@ internal class CGMService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - 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 = device.connect(this@CGMService, logger = { p, s -> repository.log(p, s) }) client.connectionStateWithStatus .onEach { repository.onConnectionStateChanged(it) } 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 f74f5e05..61750958 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,6 +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.NordicBlekLogger import no.nordicsemi.android.csc.data.CSCServiceData import no.nordicsemi.android.csc.data.SpeedUnit import no.nordicsemi.android.kotlin.ble.core.ServerDevice @@ -49,6 +50,7 @@ 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 no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -57,7 +59,10 @@ class CSCRepository @Inject constructor( @ApplicationContext private val context: Context, private val serviceManager: ServiceManager, + private val stringConst: StringConst ) { + private var logger: NordicBlekLogger? = null + private val _wheelSize = MutableStateFlow(WheelSizes.default) internal val wheelSize = _wheelSize.asStateFlow() @@ -67,9 +72,6 @@ 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?.state == GattConnectionState.STATE_CONNECTED } private var isOnScreen = false @@ -90,6 +92,7 @@ class CSCRepository @Inject constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "CSC", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(CSCService::class.java, device) } @@ -120,7 +123,11 @@ class CSCRepository @Inject constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun disconnect() { @@ -128,6 +135,7 @@ class CSCRepository @Inject constructor( } private fun clean() { + logger = null _data.value = CSCServiceData() } } 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 1a5878d6..e631fb42 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 @@ -69,9 +69,6 @@ internal class CSCService : NotificationService() { @Inject lateinit var repository: CSCRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -91,13 +88,7 @@ internal class CSCService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - 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 = device.connect(this@CSCService, logger = { p, s -> repository.log(p, s) }) client.connectionStateWithStatus .onEach { repository.onConnectionStateChanged(it) } 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 c6f9b810..4153883c 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 @@ -47,6 +47,7 @@ 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 no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -54,7 +55,8 @@ import javax.inject.Singleton class HRSRepository @Inject constructor( @ApplicationContext private val context: Context, - private val serviceManager: ServiceManager + private val serviceManager: ServiceManager, + private val stringConst: StringConst ) { private var logger: NordicBlekLogger? = null @@ -64,9 +66,6 @@ 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?.state == GattConnectionState.STATE_CONNECTED } private var isOnScreen = false @@ -87,6 +86,7 @@ class HRSRepository @Inject constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "HRS", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(HRSService::class.java, device) } @@ -117,7 +117,11 @@ class HRSRepository @Inject constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun disconnect() { @@ -125,6 +129,7 @@ class HRSRepository @Inject constructor( } private fun clean() { + logger = null _data.value = HRSServiceData() } } 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 4d1f66a8..b55b4da5 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 @@ -41,7 +41,6 @@ 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.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 @@ -53,7 +52,6 @@ import no.nordicsemi.android.kotlin.ble.profile.hrs.BodySensorLocationParser import no.nordicsemi.android.kotlin.ble.profile.hrs.HRSDataParser import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService -import no.nordicsemi.android.ui.view.StringConst import java.util.* import javax.inject.Inject @@ -71,9 +69,6 @@ internal class HRSService : NotificationService() { @Inject lateinit var repository: HRSRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -93,16 +88,10 @@ internal class HRSService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicBlekLogger(this@HRSService, stringConst.APP_NAME, "HRS", device.address) - - client = device.connect(this@HRSService, logger = logger) + client = device.connect(this@HRSService, logger = { p, s -> repository.log(p, s) }) client.waitForBonding() - repository.loggerEvent - .onEach { logger.launch() } - .launchIn(lifecycleScope) - client.connectionStateWithStatus .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 01421843..d795753a 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 @@ -38,14 +38,15 @@ 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.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus 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 no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -53,8 +54,10 @@ import javax.inject.Singleton class PRXRepository @Inject internal constructor( @ApplicationContext private val context: Context, - private val serviceManager: ServiceManager + private val serviceManager: ServiceManager, + private val stringConst: StringConst ) { + private var logger: NordicBlekLogger? = null private val _data = MutableStateFlow(PRXServiceData()) internal val data = _data.asStateFlow() @@ -62,9 +65,6 @@ 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() @@ -87,8 +87,8 @@ class PRXRepository @Inject internal constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning - fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "PRX", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(PRXService::class.java, device) } @@ -118,7 +118,11 @@ class PRXRepository @Inject internal constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun onMissingServices() { @@ -132,6 +136,7 @@ class PRXRepository @Inject internal constructor( } private fun clean() { + logger = null _data.value = PRXServiceData() } } 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 e1226158..d98956e1 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 @@ -84,9 +84,6 @@ internal class PRXService : NotificationService() { @Inject lateinit var repository: PRXRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient private lateinit var server: BleGattServer @@ -162,16 +159,14 @@ internal class PRXService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicBlekLogger(this@PRXService, stringConst.APP_NAME, "PRX", device.address) - - client = device.connect(this@PRXService, logger = logger, options = BleGattConnectOptions(autoConnect = true)) + client = device.connect( + this@PRXService, + logger = { p, s -> repository.log(p, s) }, + options = BleGattConnectOptions(autoConnect = true) + ) client.waitForBonding() - 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 672c88ed..2889cb13 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 @@ -45,8 +45,8 @@ import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus 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 no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -54,7 +54,8 @@ import javax.inject.Singleton class RSCSRepository @Inject constructor( @ApplicationContext private val context: Context, - private val serviceManager: ServiceManager + private val serviceManager: ServiceManager, + private val stringConst: StringConst ) { private var logger: NordicBlekLogger? = null @@ -64,9 +65,6 @@ 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?.state == GattConnectionState.STATE_CONNECTED } private var isOnScreen = false @@ -87,6 +85,7 @@ class RSCSRepository @Inject constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "RSCS", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(RSCSService::class.java, device) } @@ -109,7 +108,11 @@ class RSCSRepository @Inject constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun disconnect() { 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 fca9ef0f..92ba9b37 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 @@ -69,9 +69,6 @@ internal class RSCSService : NotificationService() { @Inject lateinit var repository: RSCSRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -91,13 +88,7 @@ internal class RSCSService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - 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 = device.connect(this@RSCSService, logger = { p, s -> repository.log(p, s) }) client.connectionStateWithStatus .onEach { repository.onConnectionStateChanged(it) } 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 5e03d40e..dca16a06 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,6 +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.NordicBlekLogger import no.nordicsemi.android.kotlin.ble.core.ServerDevice import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionStateWithStatus @@ -51,6 +52,7 @@ import no.nordicsemi.android.uart.data.UARTRecord import no.nordicsemi.android.uart.data.UARTRecordType import no.nordicsemi.android.uart.data.UARTServiceData import no.nordicsemi.android.uart.data.parseWithNewLineChar +import no.nordicsemi.android.ui.view.StringConst import javax.inject.Inject import javax.inject.Singleton @@ -59,8 +61,11 @@ class UARTRepository @Inject internal constructor( @ApplicationContext private val context: Context, private val serviceManager: ServiceManager, - private val configurationDataSource: ConfigurationDataSource + private val configurationDataSource: ConfigurationDataSource, + private val stringConst: StringConst ) { + private var logger: NordicBlekLogger? = null + private val _data = MutableStateFlow(UARTServiceData()) internal val data = _data.asStateFlow() @@ -70,9 +75,6 @@ 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?.state == GattConnectionState.STATE_CONNECTED } val lastConfigurationName = configurationDataSource.lastConfigurationName @@ -95,6 +97,7 @@ class UARTRepository @Inject internal constructor( private fun shouldClean() = !isOnScreen && !isServiceRunning fun launch(device: ServerDevice) { + logger = NordicBlekLogger(context, stringConst.APP_NAME, "UART", device.address) _data.value = _data.value.copy(deviceName = device.name) serviceManager.startService(UARTService::class.java, device) } @@ -131,7 +134,11 @@ class UARTRepository @Inject internal constructor( } fun openLogger() { - _loggerEvent.tryEmit(OpenLoggerEvent()) + logger?.launch() + } + + fun log(priority: Int, message: String) { + logger?.log(priority, message) } fun onMissingServices() { @@ -148,6 +155,7 @@ class UARTRepository @Inject internal constructor( } private fun clean() { + logger = null _data.value = UARTServiceData() } } 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 432e0554..ad632829 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 @@ -41,7 +41,6 @@ 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.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 @@ -53,7 +52,6 @@ import no.nordicsemi.android.kotlin.ble.core.data.Mtu import no.nordicsemi.android.kotlin.ble.profile.battery.BatteryLevelParser import no.nordicsemi.android.service.DEVICE_DATA import no.nordicsemi.android.service.NotificationService -import no.nordicsemi.android.ui.view.StringConst import java.util.* import javax.inject.Inject @@ -71,9 +69,6 @@ internal class UARTService : NotificationService() { @Inject lateinit var repository: UARTRepository - @Inject - lateinit var stringConst: StringConst - private lateinit var client: BleGattClient override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { @@ -93,16 +88,10 @@ internal class UARTService : NotificationService() { } private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { - val logger = NordicBlekLogger(this@UARTService, stringConst.APP_NAME, "UART", device.address) - - client = device.connect(this@UARTService, logger = logger) + client = device.connect(this@UARTService, logger = { p, s -> repository.log(p, s) }) client.requestMtu(Mtu.max) - repository.loggerEvent - .onEach { logger.launch() } - .launchIn(lifecycleScope) - client.connectionStateWithStatus .onEach { repository.onConnectionStateChanged(it) } .filterNotNull() @@ -114,12 +103,12 @@ internal class UARTService : NotificationService() { client.discoverServices() .filterNotNull() - .onEach { configureGatt(it, logger) } + .onEach { configureGatt(it) } .catch { repository.onMissingServices() } .launchIn(lifecycleScope) } - private suspend fun configureGatt(services: BleGattServices, logger: NordicBlekLogger) { + private suspend fun configureGatt(services: BleGattServices) { val uartService = services.findService(UART_SERVICE_UUID)!! val rxCharacteristic = uartService.findCharacteristic(UART_RX_CHARACTERISTIC_UUID)!! val txCharacteristic = uartService.findCharacteristic(UART_TX_CHARACTERISTIC_UUID)!! @@ -134,14 +123,14 @@ internal class UARTService : NotificationService() { txCharacteristic.getNotifications() .onEach { repository.onNewMessageReceived(String(it)) } - .onEach { logger.log(10, "Received: ${String(it)}") } + .onEach { repository.log(10, "Received: ${String(it)}") } .catch { it.printStackTrace() } .launchIn(lifecycleScope) repository.command .onEach { rxCharacteristic.splitWrite(it.toByteArray(), getWriteType(rxCharacteristic)) } .onEach { repository.onNewMessageSent(it) } - .onEach { logger.log(10, "Sent: $it") } + .onEach { repository.log(10, "Sent: $it") } .launchIn(lifecycleScope) }