From c922e69efa1ad7c9fd5d8b81598eee9b5c083964 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sylwester=20Zieli=C5=84ski?= Date: Wed, 27 Dec 2023 08:37:35 +0100 Subject: [PATCH] Fix advertising mock servers --- .../android/nrftoolbox/NrfToolboxApplication.kt | 5 +++++ .../java/no/nordicsemi/android/gls/GlsServer.kt | 14 +++++++++++--- .../java/no/nordicsemi/android/uart/UartServer.kt | 14 +++++++++++--- settings.gradle.kts | 6 +++--- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/src/debug/java/no/nordicsemi/android/nrftoolbox/NrfToolboxApplication.kt b/app/src/debug/java/no/nordicsemi/android/nrftoolbox/NrfToolboxApplication.kt index 3ab3b539..17278e5d 100644 --- a/app/src/debug/java/no/nordicsemi/android/nrftoolbox/NrfToolboxApplication.kt +++ b/app/src/debug/java/no/nordicsemi/android/nrftoolbox/NrfToolboxApplication.kt @@ -35,6 +35,7 @@ import android.app.Application import dagger.hilt.android.HiltAndroidApp import no.nordicsemi.android.analytics.AppAnalytics import no.nordicsemi.android.analytics.AppOpenEvent +import no.nordicsemi.android.gls.GlsServer import no.nordicsemi.android.uart.UartServer import javax.inject.Inject @@ -47,11 +48,15 @@ class NrfToolboxApplication : Application() { @Inject lateinit var uartServer: UartServer + @Inject + lateinit var glsServer: GlsServer + override fun onCreate() { super.onCreate() analytics.logEvent(AppOpenEvent) uartServer.start(this) + glsServer.start(this) } } diff --git a/profile_gls/src/main/java/no/nordicsemi/android/gls/GlsServer.kt b/profile_gls/src/main/java/no/nordicsemi/android/gls/GlsServer.kt index ef39c8f2..17bbcda4 100644 --- a/profile_gls/src/main/java/no/nordicsemi/android/gls/GlsServer.kt +++ b/profile_gls/src/main/java/no/nordicsemi/android/gls/GlsServer.kt @@ -2,6 +2,7 @@ package no.nordicsemi.android.gls import android.annotation.SuppressLint import android.content.Context +import android.os.ParcelUuid import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay @@ -21,6 +22,7 @@ import no.nordicsemi.android.gls.main.viewmodel.RACP_CHARACTERISTIC import no.nordicsemi.android.kotlin.ble.advertiser.BleAdvertiser import no.nordicsemi.android.kotlin.ble.core.MockServerDevice import no.nordicsemi.android.kotlin.ble.core.advertiser.BleAdvertisingConfig +import no.nordicsemi.android.kotlin.ble.core.advertiser.BleAdvertisingData import no.nordicsemi.android.kotlin.ble.core.data.BleGattPermission import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty import no.nordicsemi.android.kotlin.ble.profile.gls.RecordAccessControlPointInputParser @@ -41,7 +43,7 @@ class GlsServer @Inject constructor( private val scope: CoroutineScope, @ApplicationContext private val context: Context, - private val logger: BleLogger = DefaultConsoleLogger(context) + private val logger: BleLogger = DefaultConsoleLogger(context), ) { private lateinit var server: ServerBleGatt @@ -150,7 +152,7 @@ class GlsServer @Inject constructor( context: Context, device: MockServerDevice = MockServerDevice( name = "GLS Server", - address = "55:44:33:22:11" + address = "11:22:33:44:55:66" ), ) = scope.launch { val gmCharacteristic = ServerBleGattCharacteristicConfig( @@ -198,7 +200,10 @@ class GlsServer @Inject constructor( ) val advertiser = BleAdvertiser.create(context) - advertiser.advertise(config = BleAdvertisingConfig(), mock = device).launchIn(scope) + advertiser.advertise( + config = BleAdvertisingConfig(advertiseData = BleAdvertisingData(serviceUuid = ParcelUuid(GLS_SERVICE_UUID))), + mock = device + ).launchIn(scope) launch { server.connections @@ -231,6 +236,7 @@ class GlsServer @Inject constructor( private fun startGlsService() { racpCharacteristic.value .onEach { lastRequest = it } + .onEach { continueWithResponse() } //comment to make tests working .launchIn(scope) } @@ -247,10 +253,12 @@ class GlsServer @Inject constructor( } racpCharacteristic.setValueAndNotifyClient(SUCCESS) } + RecordAccessControlPointInputParser.reportLastStoredRecord() -> { send(glsCharacteristic, records.last()) send(racpCharacteristic, SUCCESS) } + RecordAccessControlPointInputParser.reportFirstStoredRecord() -> { send(glsCharacteristic, records.first()) send(racpCharacteristic, SUCCESS) diff --git a/profile_uart/src/main/java/no/nordicsemi/android/uart/UartServer.kt b/profile_uart/src/main/java/no/nordicsemi/android/uart/UartServer.kt index 3f9e8f54..da87cc98 100644 --- a/profile_uart/src/main/java/no/nordicsemi/android/uart/UartServer.kt +++ b/profile_uart/src/main/java/no/nordicsemi/android/uart/UartServer.kt @@ -2,6 +2,7 @@ package no.nordicsemi.android.uart import android.annotation.SuppressLint import android.content.Context +import android.os.ParcelUuid import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.flow.launchIn @@ -12,6 +13,7 @@ import no.nordicsemi.android.common.core.DataByteArray import no.nordicsemi.android.kotlin.ble.advertiser.BleAdvertiser import no.nordicsemi.android.kotlin.ble.core.MockServerDevice import no.nordicsemi.android.kotlin.ble.core.advertiser.BleAdvertisingConfig +import no.nordicsemi.android.kotlin.ble.core.advertiser.BleAdvertisingData import no.nordicsemi.android.kotlin.ble.core.data.BleGattPermission import no.nordicsemi.android.kotlin.ble.core.data.BleGattProperty import no.nordicsemi.android.kotlin.ble.server.main.ServerBleGatt @@ -33,7 +35,7 @@ private const val STANDARD_DELAY = 1000L @SuppressLint("MissingPermission") @Singleton class UartServer @Inject constructor( - private val scope: CoroutineScope + private val scope: CoroutineScope, ) { private lateinit var server: ServerBleGatt @@ -46,7 +48,7 @@ class UartServer @Inject constructor( context: Context, device: MockServerDevice = MockServerDevice( name = "UART Server", - address = "55:44:33:22:11" + address = "66:55:44:33:22:11" ), ) = scope.launch { val rxCharacteristic = ServerBleGattCharacteristicConfig( @@ -87,7 +89,13 @@ class UartServer @Inject constructor( ) val advertiser = BleAdvertiser.create(context) - advertiser.advertise(config = BleAdvertisingConfig(), mock = device).launchIn(scope) + advertiser.advertise( + config = BleAdvertisingConfig( + advertiseData = BleAdvertisingData( + serviceUuid = ParcelUuid(UART_SERVICE_UUID) + ) + ), mock = device + ).launchIn(scope) launch { server.connections diff --git a/settings.gradle.kts b/settings.gradle.kts index 13c56319..8b6358bd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -79,6 +79,6 @@ include(":lib_utils") // includeBuild("../Android-Common-Libraries") //} // -//if (file("../Kotlin-BLE-Library").exists()) { -// includeBuild("../Kotlin-BLE-Library") -//} +if (file("../Kotlin-BLE-Library").exists()) { + includeBuild("../Kotlin-BLE-Library") +}