From 6ec8950a855f47a0b2dc5d290e09af90ccd7e574 Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 28 Oct 2026 18:12:41 +0100 Subject: [PATCH] Clarify asynchronous radio signaling and wire identity contracts --- .../app/src/main/java/com/utun/chat/data/NativeLib.kt | 5 ++++- .../src/main/java/com/utun/chat/data/RadioCallController.kt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt index 2b14d2f1..dde82b26 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/NativeLib.kt @@ -303,7 +303,10 @@ object NativeLib { * true — копия принята очередью живого worker; применение асинхронно, stop/restart может отменить её. * После SERVICE_STARTED монитор повторяет актуальное состояние. false — отказ с native-диагностикой. */ fun setPhoneState(state: Int, policy: Int): Boolean = nativeSetPhoneState(state, policy) - /* action: radio_call_action, результат — CHAT_EVT_RADIO_CALL (65). */ + /** Адресное приглашение в рацию: action — radio_call_action (1..8), id — ненулевые uint64-биты Long. + * Для START (1) group/peer также ненулевые; прочие действия используют id. + * true — копия команды принята очередью живого uasync; результат сигналинга приходит событием 65 + * (id/group/peer:8LE + phase/reason/incoming:1). false — отказ с native-логом; restart отменяет старые запросы. */ fun radioCall(id: Long, action: Int, group: Long = 0, peer: Long = 0): Boolean = nativeRadioCall(id, group, peer, action) private external fun nativeRadioCall(id: Long, group: Long, peer: Long, action: Int): Boolean diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/RadioCallController.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/RadioCallController.kt index 033d07f0..0eb8b494 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/RadioCallController.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/RadioCallController.kt @@ -57,7 +57,7 @@ object RadioCallController { /** На main: занят также между принятым START и первым событием; ENDED-карточка не удерживает активность. */ fun busy(): Boolean = pendingStart != null || _state.value?.phase?.let { it != RadioCallPhase.ENDED } == true - /** На main запросить START ненулевым участнику/каналу. Резерв busy снимает первое событие либо reset/отказ очереди. */ + /** На main запросить START с ненулевыми ID канала и участника. Busy снимает первое событие либо reset/отказ очереди. */ fun start(channel: String, peer: Long) { checkMain() if (!ready || !NativeLib.isReady() || busy() || CallController.state.value?.ongoing == true) {