feat(audio): clamp transmit selector on RECORD_AUDIO permission state (SDD-106 §6)

Per SDD-106 §6 add a permission-state clamp to TransmitModeSelector.
When RECORD_AUDIO is Denied or PermanentlyDenied the transmit gate
is forced false regardless of PTT or voice-activity state; on
Granted the clamp releases and normal transmit decisions resume.
The clamp takes precedence over PTT and hard_mute in the decision
ordering documented inline.

Three new tests cover the clamp behavior, the release-on-grant
transition, and the non-RECORD_AUDIO ignore path.

Trace: SDD-106 §6, SRS-209.
This commit is contained in:
EdisonJwa
2026-05-18 10:56:17 +08:00
parent 78190c0694
commit 56222d190e
2 changed files with 277 additions and 2 deletions
+2 -2
View File
@@ -29,8 +29,8 @@
#![warn(missing_docs)]
mod engine;
pub mod mode_stack;
pub mod mobile_voice_backend;
pub mod mode_stack;
pub mod ptt;
pub mod ptt_backends;
pub mod release_tail;
@@ -54,7 +54,7 @@ pub use ptt_backends::{
};
pub use release_tail::{ReleaseTailTimer, DEFAULT_TAIL_MS, MAX_TAIL_MS};
pub use transmit_mode::TransmitMode;
pub use transmit_selector::TransmitModeSelector;
pub use transmit_selector::{PermissionGate, TransmitModeSelector};
use thiserror::Error;