diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallState.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallState.kt index df81e5bb..83fe12dc 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallState.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/CallState.kt @@ -13,15 +13,19 @@ enum class CallConnectionType(val labelRes: Int) { val label: String get() = AppLanguage.text(labelRes) } +/** Снимок аудиозвонка: задержки/границы в мс, tempoX100=100 означает 1x; dropped/underruns — счётчики кадров. */ data class CallStats( val rttMs: Int, val bufferMs: Int, val tempoX100: Int, val dropped: Int, val underruns: Int, val minMs: Int, val maxMs: Int, val reserveMs: Int, val output: CallOutputLatency = CallOutputLatency() ) -/** outputMs включает queueMs; это задержка конца записанного PCM, не сумма двух буферов. */ +/** Миллисекунды задержки конца записанного PCM: outputMs включает queueMs, поля -1 означают неизвестное значение. */ data class CallOutputLatency(val queueMs: Int = -1, val outputMs: Int = -1) +/** Immutable UI snapshot одной сессии: IDs Long сохраняют uint64, reason=-1 до результата. + * startedAtElapsedRealtime — локальные монотонные мс для chronometer; durationSeconds обновляется controller. + * ongoing исключает только NONE/ENDED; preparing отдельно удерживает media до начала сигналинга. */ data class CallState( val callId: Long = 0, val channelId: String = "", diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/ConfigCallback.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/ConfigCallback.kt index e43969b2..c6e0631f 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/data/ConfigCallback.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/data/ConfigCallback.kt @@ -1,5 +1,8 @@ package com.utun.chat.data +/** Вспомогательное описание синхронных getters конфигурации: String может отсутствовать, Int задаёт provider. + * JNI связывает ConfigProvider по сигнатурам методов; актуальный радио-ACK — onRadioSettingsApplied(Long, Boolean). + * Этот интерфейс не задаёт полный контракт callback объекта nativeInit. */ interface ConfigCallback { fun getString(key: String): String? fun getInt(key: String): Int