Document radio PTT release fallback and native command coverage

This commit is contained in:
evgeny committed 2026-10-29 13:34:22 +01:00
1 parent 46edb1beb5
commit 7780922353
1 file changed
+22
+22
View File
@@ -243,6 +243,22 @@ true только при удалении последнего владельц
набора: это позволяет отменить хвост передачи после release. Null снимает всех.
Агрегатор не управляет VAD, аудио или таймерами; их владелец — RadioAudioEngine.
Ручные talkBegin/talkEnd/cancelTalk в RadioAudioEngine проверяют main-поток до
изменения владельцев/таймера. Неактивная рация отказывает с WARN; отсутствие
RECORD_AUDIO запрашивает разрешение без сохранения удержания. После выдачи
пользователь нажимает снова. Принятый PTT — асинхронный запрос, не подтверждение
первого PCM/TX: эти этапы видны отдельно в логах capture/native и transmittingGroup.
Последний talkEnd оставляет 250 мс хвоста; новое нажатие снимает его таймер,
cancel последнего владельца снимает хвост сразу. Если postDelayed отказал,
ERROR содержит source/group/generation; движок немедленно снимает ручной запрос
и ставит согласование capture в io. Сообщение scheduled появляется только при
успешной постановке. Когда захват больше не нужен, подписка закрывается и native
capture останавливается. При работающем измерителе/автоматике захват сохраняется,
а отпускание PTT проходит общей очередью управления/PCM до native radioTalkEnd.
Снятие ручного PTT само по себе не выключает автоматическую передачу.
Stop/смена группы сбрасывает удержания и прежний хвост; io проверяет generation.
`RadioTalkState` хранит отдельный снимок говорящих для активной группы. Включение/
смена канала создаёт новый снимок, выключение устанавливает groupId=0. Событие 43
разбирается строго как 19 little-endian байтов: group/node/stream/on; ID ненулевые,
@@ -419,6 +435,12 @@ audio focus, импульса/cancel вибрации и постановки т
Для CallRingback/NotificationSound проверяются также запрет смены фазы при
неосвобождённом loop, независимость перекрывающихся сигналов, очистка без
установленных callbacks и повтор release при выключенном звуке/ошибке create.
RadioPttLifecycleTest использует настоящие RadioAudioEngine, MicrophoneCapture и
MediaAudioController с host-границами Android/JNI. Проверяется не только UI-флаг,
но и команда native capture stop либо упорядоченный radioTalkEnd при сохранённом
измерителе: отказ/обычный хвост таймера, повторное нажатие, независимые владельцы,
отмена, смена группы, RECORD_AUDIO и запрет фоновых PTT-вызовов. PCM-подписки и
workers настоящие; звукового оборудования, DSP и сетевой передачи в модели нет.
На Linux `:app:testDebugUnitTest` также запускает 25 fault-сценариев настоящего
JNI logger через `:app:testJniLog`; окружение и границы модели: `tests/jni_log/README.md`.
Проверки native bridge/standby доступны в `tests/Makefile.am`;