Fix logger

This commit is contained in:
Sylwester Zielinski
2023-03-31 15:42:36 +02:00
parent a431df5e78
commit c69b8c72a2
19 changed files with 99 additions and 86 deletions

View File

@@ -43,6 +43,7 @@ import kotlinx.coroutines.flow.onEach
import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.AppAnalytics
import no.nordicsemi.android.analytics.ProfileOpenEvent import no.nordicsemi.android.analytics.ProfileOpenEvent
import no.nordicsemi.android.cgms.repository.CGMRepository 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.logger.NordicLogger
import no.nordicsemi.android.common.navigation.DestinationId import no.nordicsemi.android.common.navigation.DestinationId
import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.common.navigation.Navigator

View File

@@ -0,0 +1,3 @@
package no.nordicsemi.android.service
class OpenLoggerEvent

View File

@@ -52,7 +52,7 @@ import no.nordicsemi.android.bps.view.BPSViewEvent
import no.nordicsemi.android.bps.view.BPSViewState import no.nordicsemi.android.bps.view.BPSViewState
import no.nordicsemi.android.bps.view.DisconnectEvent import no.nordicsemi.android.bps.view.DisconnectEvent
import no.nordicsemi.android.bps.view.OpenLoggerEvent 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.NavigationResult
import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.common.navigation.Navigator
import no.nordicsemi.android.kotlin.ble.client.main.callback.BleGattClient 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.ServerDevice
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState 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.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.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.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.toolbox.scanner.ScannerDestinationId
import no.nordicsemi.android.ui.view.StringConst import no.nordicsemi.android.ui.view.StringConst
import java.util.* import java.util.*
@@ -91,6 +91,7 @@ internal class BPSViewModel @Inject constructor(
val state = _state.asStateFlow() val state = _state.asStateFlow()
private lateinit var client: BleGattClient private lateinit var client: BleGattClient
private lateinit var logger: NordicBlekLogger
init { init {
navigationManager.navigateTo(ScannerDestinationId, ParcelUuid(BPS_SERVICE_UUID)) navigationManager.navigateTo(ScannerDestinationId, ParcelUuid(BPS_SERVICE_UUID))
@@ -110,14 +111,14 @@ internal class BPSViewModel @Inject constructor(
fun onEvent(event: BPSViewEvent) { fun onEvent(event: BPSViewEvent) {
when (event) { when (event) {
DisconnectEvent -> navigationManager.navigateUp() DisconnectEvent -> navigationManager.navigateUp()
OpenLoggerEvent -> TODO() OpenLoggerEvent -> logger.launch()
} }
} }
private fun startGattClient(device: ServerDevice) = viewModelScope.launch { private fun startGattClient(device: ServerDevice) = viewModelScope.launch {
_state.value = _state.value.copy(deviceName = device.name) _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) client = device.connect(context, logger = logger)

View File

@@ -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.core.data.GattConnectionState
import no.nordicsemi.android.kotlin.ble.profile.gls.data.RequestStatus import no.nordicsemi.android.kotlin.ble.profile.gls.data.RequestStatus
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -64,6 +65,9 @@ class CGMRepository @Inject constructor(
private val _command = simpleSharedFlow<CGMServiceCommand>() private val _command = simpleSharedFlow<CGMServiceCommand>()
internal val command = _command.asSharedFlow() internal val command = _command.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
val hasRecords = data.value.records.isNotEmpty() val hasRecords = data.value.records.isNotEmpty()
val highestSequenceNumber = data.value.records.maxOfOrNull { it.sequenceNumber } ?: -1 val highestSequenceNumber = data.value.records.maxOfOrNull { it.sequenceNumber } ?: -1
@@ -94,7 +98,7 @@ class CGMRepository @Inject constructor(
} }
fun openLogger() { fun openLogger() {
TODO() _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun clear() { fun clear() {

View File

@@ -43,7 +43,7 @@ import kotlinx.coroutines.launch
import no.nordicsemi.android.ble.common.data.cgm.CGMSpecificOpsControlPointData import no.nordicsemi.android.ble.common.data.cgm.CGMSpecificOpsControlPointData
import no.nordicsemi.android.cgms.data.CGMRecordWithSequenceNumber import no.nordicsemi.android.cgms.data.CGMRecordWithSequenceNumber
import no.nordicsemi.android.cgms.data.CGMServiceCommand 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect 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.BleGattCharacteristic
@@ -131,10 +131,14 @@ internal class CGMService : NotificationService() {
} }
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { 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) client = device.connect(this@CGMService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()

View File

@@ -38,7 +38,7 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import no.nordicsemi.android.common.core.simpleSharedFlow 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.CSCServiceData
import no.nordicsemi.android.csc.data.SpeedUnit import no.nordicsemi.android.csc.data.SpeedUnit
import no.nordicsemi.android.kotlin.ble.core.ServerDevice 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.WheelSize
import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSizes import no.nordicsemi.android.kotlin.ble.profile.csc.data.WheelSizes
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -57,8 +58,6 @@ class CSCRepository @Inject constructor(
private val context: Context, private val context: Context,
private val serviceManager: ServiceManager, private val serviceManager: ServiceManager,
) { ) {
private var logger: NordicLogger? = null
private val _wheelSize = MutableStateFlow(WheelSizes.default) private val _wheelSize = MutableStateFlow(WheelSizes.default)
internal val wheelSize = _wheelSize.asStateFlow() internal val wheelSize = _wheelSize.asStateFlow()
@@ -68,6 +67,9 @@ class CSCRepository @Inject constructor(
private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>() private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>()
internal val stopEvent = _stopEvent.asSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
fun launch(device: ServerDevice) { fun launch(device: ServerDevice) {
@@ -99,11 +101,10 @@ class CSCRepository @Inject constructor(
} }
fun openLogger() { fun openLogger() {
NordicLogger.launch(context, logger) _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun release() { fun release() {
logger = null
_stopEvent.tryEmit(DisconnectAndStopEvent()) _stopEvent.tryEmit(DisconnectAndStopEvent())
} }
} }

View File

@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.connect
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices 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 { 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) client = device.connect(this@CSCService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()

View File

@@ -48,7 +48,7 @@ import kotlinx.coroutines.launch
import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.AppAnalytics
import no.nordicsemi.android.analytics.Profile import no.nordicsemi.android.analytics.Profile
import no.nordicsemi.android.analytics.ProfileConnectedEvent 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.NavigationResult
import no.nordicsemi.android.common.navigation.Navigator import no.nordicsemi.android.common.navigation.Navigator
import no.nordicsemi.android.gls.GlsDetailsDestinationId import no.nordicsemi.android.gls.GlsDetailsDestinationId
@@ -103,6 +103,7 @@ internal class GLSViewModel @Inject constructor(
) : ViewModel() { ) : ViewModel() {
private lateinit var client: BleGattClient private lateinit var client: BleGattClient
private lateinit var logger: NordicBlekLogger
private lateinit var glucoseMeasurementCharacteristic: BleGattCharacteristic private lateinit var glucoseMeasurementCharacteristic: BleGattCharacteristic
private lateinit var recordAccessControlPointCharacteristic: BleGattCharacteristic private lateinit var recordAccessControlPointCharacteristic: BleGattCharacteristic
@@ -130,7 +131,7 @@ internal class GLSViewModel @Inject constructor(
fun onEvent(event: GLSScreenViewEvent) { fun onEvent(event: GLSScreenViewEvent) {
when (event) { when (event) {
OpenLoggerEvent -> TODO() OpenLoggerEvent -> logger.launch()
DisconnectEvent -> navigationManager.navigateUp() DisconnectEvent -> navigationManager.navigateUp()
is OnWorkingModeSelected -> onEvent(event) is OnWorkingModeSelected -> onEvent(event)
is OnGLSRecordClick -> navigateToDetails(event.record) is OnGLSRecordClick -> navigateToDetails(event.record)
@@ -156,7 +157,7 @@ internal class GLSViewModel @Inject constructor(
} }
private fun startGattClient(device: ServerDevice) = viewModelScope.launch { 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) client = device.connect(context, logger = logger)

View File

@@ -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(
) {
}

View File

@@ -38,12 +38,13 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import no.nordicsemi.android.common.core.simpleSharedFlow 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.hrs.data.HRSServiceData
import no.nordicsemi.android.kotlin.ble.core.ServerDevice 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.GattConnectionState
import no.nordicsemi.android.kotlin.ble.profile.hrs.data.HRSData import no.nordicsemi.android.kotlin.ble.profile.hrs.data.HRSData
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -54,7 +55,7 @@ class HRSRepository @Inject constructor(
private val context: Context, private val context: Context,
private val serviceManager: ServiceManager private val serviceManager: ServiceManager
) { ) {
private var logger: NordicLogger? = null private var logger: NordicBlekLogger? = null
private val _data = MutableStateFlow(HRSServiceData()) private val _data = MutableStateFlow(HRSServiceData())
internal val data = _data.asStateFlow() internal val data = _data.asStateFlow()
@@ -62,6 +63,9 @@ class HRSRepository @Inject constructor(
private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>() private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>()
internal val stopEvent = _stopEvent.asSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
fun launch(device: ServerDevice) { fun launch(device: ServerDevice) {
@@ -93,7 +97,7 @@ class HRSRepository @Inject constructor(
} }
fun openLogger() { fun openLogger() {
NordicLogger.launch(context, logger) _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun release() { fun release() {

View File

@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.connect
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices 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 { 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) client = device.connect(this@HRSService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()

View File

@@ -38,13 +38,14 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import no.nordicsemi.android.common.core.simpleSharedFlow 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.data.HTSServiceData
import no.nordicsemi.android.hts.view.TemperatureUnit import no.nordicsemi.android.hts.view.TemperatureUnit
import no.nordicsemi.android.kotlin.ble.core.ServerDevice 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.GattConnectionState
import no.nordicsemi.android.kotlin.ble.profile.hts.data.HTSData import no.nordicsemi.android.kotlin.ble.profile.hts.data.HTSData
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -55,7 +56,7 @@ class HTSRepository @Inject constructor(
private val context: Context, private val context: Context,
private val serviceManager: ServiceManager private val serviceManager: ServiceManager
) { ) {
private var logger: NordicLogger? = null private var logger: NordicBlekLogger? = null
private val _data = MutableStateFlow(HTSServiceData()) private val _data = MutableStateFlow(HTSServiceData())
internal val data = _data.asStateFlow() internal val data = _data.asStateFlow()
@@ -63,6 +64,9 @@ class HTSRepository @Inject constructor(
private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>() private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>()
internal val stopEvent = _stopEvent.asSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
fun launch(device: ServerDevice) { fun launch(device: ServerDevice) {
@@ -90,7 +94,7 @@ class HTSRepository @Inject constructor(
} }
fun openLogger() { fun openLogger() {
NordicLogger.launch(context, logger) _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun release() { fun release() {

View File

@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.connect
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices 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 { 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) client = device.connect(this@HTSService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()

View File

@@ -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.kotlin.ble.profile.prx.AlarmLevel
import no.nordicsemi.android.prx.data.PRXServiceData import no.nordicsemi.android.prx.data.PRXServiceData
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -61,6 +62,9 @@ class PRXRepository @Inject internal constructor(
private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>() private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>()
internal val stopEvent = _stopEvent.asSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
private val _remoteAlarmLevel = simpleSharedFlow<AlarmLevel>() private val _remoteAlarmLevel = simpleSharedFlow<AlarmLevel>()
internal val remoteAlarmLevel = _remoteAlarmLevel.asSharedFlow() internal val remoteAlarmLevel = _remoteAlarmLevel.asSharedFlow()
@@ -99,7 +103,7 @@ class PRXRepository @Inject internal constructor(
} }
fun openLogger() { fun openLogger() {
TODO() _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun release() { fun release() {

View File

@@ -40,13 +40,12 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect 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.BleGattCharacteristic
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices 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.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.BleGattConnectionStatus
import no.nordicsemi.android.kotlin.ble.core.data.BleGattPermission import no.nordicsemi.android.kotlin.ble.core.data.BleGattPermission
import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty
@@ -162,10 +161,14 @@ internal class PRXService : NotificationService() {
} }
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { 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) client = device.connect(this@PRXService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionStateWithStatus client.connectionStateWithStatus
.filterNotNull() .filterNotNull()
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }

View File

@@ -38,12 +38,13 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import no.nordicsemi.android.common.core.simpleSharedFlow 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.ServerDevice
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState
import no.nordicsemi.android.kotlin.ble.profile.rscs.data.RSCSData import no.nordicsemi.android.kotlin.ble.profile.rscs.data.RSCSData
import no.nordicsemi.android.rscs.data.RSCSServiceData import no.nordicsemi.android.rscs.data.RSCSServiceData
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -54,7 +55,7 @@ class RSCSRepository @Inject constructor(
private val context: Context, private val context: Context,
private val serviceManager: ServiceManager private val serviceManager: ServiceManager
) { ) {
private var logger: NordicLogger? = null private var logger: NordicBlekLogger? = null
private val _data = MutableStateFlow(RSCSServiceData()) private val _data = MutableStateFlow(RSCSServiceData())
internal val data = _data.asStateFlow() internal val data = _data.asStateFlow()
@@ -62,6 +63,9 @@ class RSCSRepository @Inject constructor(
private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>() private val _stopEvent = simpleSharedFlow<DisconnectAndStopEvent>()
internal val stopEvent = _stopEvent.asSharedFlow() internal val stopEvent = _stopEvent.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
fun launch(device: ServerDevice) { fun launch(device: ServerDevice) {
@@ -85,7 +89,7 @@ class RSCSRepository @Inject constructor(
} }
fun openLogger() { fun openLogger() {
NordicLogger.launch(context, logger) _loggerEvent.tryEmit(OpenLoggerEvent())
} }
fun release() { fun release() {

View File

@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect import no.nordicsemi.android.kotlin.ble.client.main.connect
import no.nordicsemi.android.kotlin.ble.client.main.service.BleGattServices 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 { 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) client = device.connect(this@RSCSService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()

View File

@@ -38,10 +38,11 @@ import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import no.nordicsemi.android.common.core.simpleSharedFlow 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.ServerDevice
import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState import no.nordicsemi.android.kotlin.ble.core.data.GattConnectionState
import no.nordicsemi.android.service.DisconnectAndStopEvent import no.nordicsemi.android.service.DisconnectAndStopEvent
import no.nordicsemi.android.service.OpenLoggerEvent
import no.nordicsemi.android.service.ServiceManager import no.nordicsemi.android.service.ServiceManager
import no.nordicsemi.android.uart.data.ConfigurationDataSource import no.nordicsemi.android.uart.data.ConfigurationDataSource
import no.nordicsemi.android.uart.data.MacroEol import no.nordicsemi.android.uart.data.MacroEol
@@ -60,8 +61,6 @@ class UARTRepository @Inject internal constructor(
private val serviceManager: ServiceManager, private val serviceManager: ServiceManager,
private val configurationDataSource: ConfigurationDataSource private val configurationDataSource: ConfigurationDataSource
) { ) {
private var logger: NordicLogger? = null
private val _data = MutableStateFlow(UARTServiceData()) private val _data = MutableStateFlow(UARTServiceData())
internal val data = _data.asStateFlow() internal val data = _data.asStateFlow()
@@ -71,6 +70,9 @@ class UARTRepository @Inject internal constructor(
private val _command = simpleSharedFlow<String>() private val _command = simpleSharedFlow<String>()
internal val command = _command.asSharedFlow() internal val command = _command.asSharedFlow()
private val _loggerEvent = simpleSharedFlow<OpenLoggerEvent>()
internal val loggerEvent = _loggerEvent.asSharedFlow()
val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED } val isRunning = data.map { it.connectionState == GattConnectionState.STATE_CONNECTED }
val lastConfigurationName = configurationDataSource.lastConfigurationName val lastConfigurationName = configurationDataSource.lastConfigurationName
@@ -115,7 +117,7 @@ class UARTRepository @Inject internal constructor(
} }
fun openLogger() { fun openLogger() {
NordicLogger.launch(context, logger) _loggerEvent.tryEmit(OpenLoggerEvent())
} }
suspend fun saveConfigurationName(name: String) { suspend fun saveConfigurationName(name: String) {
@@ -124,6 +126,5 @@ class UARTRepository @Inject internal constructor(
fun release() { fun release() {
_stopEvent.tryEmit(DisconnectAndStopEvent()) _stopEvent.tryEmit(DisconnectAndStopEvent())
logger = null
} }
} }

View File

@@ -40,7 +40,7 @@ import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.mapNotNull import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch 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.callback.BleGattClient
import no.nordicsemi.android.kotlin.ble.client.main.connect 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.BleGattCharacteristic
@@ -90,10 +90,14 @@ internal class UARTService : NotificationService() {
} }
private fun startGattClient(device: ServerDevice) = lifecycleScope.launch { 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) client = device.connect(this@UARTService, logger = logger)
repository.loggerEvent
.onEach { logger.launch() }
.launchIn(lifecycleScope)
client.connectionState client.connectionState
.onEach { repository.onConnectionStateChanged(it) } .onEach { repository.onConnectionStateChanged(it) }
.filterNotNull() .filterNotNull()