From 05d78c9960c76e4e581c4936220c330bcd652e3f Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 29 Oct 2026 20:14:51 +0100 Subject: [PATCH] Add a controlled Android scan pause to the manual BLE probe --- .../src/androidTest/java/com/utun/chat/BlePeerProbe.kt | 4 ++++ .../app/src/main/java/com/utun/chat/data/BleRadio.kt | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/tools/chatgui-android/app/src/androidTest/java/com/utun/chat/BlePeerProbe.kt b/tools/chatgui-android/app/src/androidTest/java/com/utun/chat/BlePeerProbe.kt index d249409b..ff0d7009 100644 --- a/tools/chatgui-android/app/src/androidTest/java/com/utun/chat/BlePeerProbe.kt +++ b/tools/chatgui-android/app/src/androidTest/java/com/utun/chat/BlePeerProbe.kt @@ -33,6 +33,10 @@ class BlePeerProbe : Instrumentation() { NativeLib.setChatSetting("bluetooth_invites_enabled", "1") } check(BleRadio.nativeConfigure(flags)) { "configure refused" } + if (args.getString("pauseScan") == "true") { + Thread.sleep(2000) + check(BleRadio.pauseScanForProbe()) { "pause scan command refused" } + } val seconds = (args.getString("seconds") ?: "100").toLong() require(seconds in 1..600) { "seconds must be in 1..600" } if (args.getString("invites") == "true") { diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/BleRadio.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/BleRadio.kt index 3dad5679..6298b921 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/BleRadio.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/BleRadio.kt @@ -79,6 +79,15 @@ object BleRadio { if (NativeLib.isReady() && !nativeConfigure(effective)) log("WARN", "Settings could not be queued") if (effective == 0) state.value = 2 } + /** Только ручная instrumentation: отделить влияние scanning от передачи по уже открытому GATT. */ + fun pauseScanForProbe(): Boolean = worker.post { + guarded { + val callback = checkNotNull(scan) { "Probe scan is not running" } + checkNotNull(scanner).stopScan(callback) + scan = null; scanner = null + log("INFO", "Scan paused for probe generation=$generation") + } + } private fun log(level: String, text: String) { LogManager.addLog(level, "discovery", "BLE $text") } private fun emit(type: Int, token: Long = 0, arg: Int = 0, text: String = "", data: ByteArray = byteArrayOf()) { nativeEvent(generation, token, type, arg, text, data)