From dbd521b732aec8d7c5e76c4c00a9a31d6114b5a7 Mon Sep 17 00:00:00 2001 From: Alex van de Sandt Date: Wed, 6 May 2026 20:01:59 -0500 Subject: [PATCH] Add squelch commands --- src/command/bc125at/mod.rs | 2 ++ src/command/bc125at/squelch.rs | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/command/bc125at/squelch.rs diff --git a/src/command/bc125at/mod.rs b/src/command/bc125at/mod.rs index fc600ea..4bee70e 100644 --- a/src/command/bc125at/mod.rs +++ b/src/command/bc125at/mod.rs @@ -1,7 +1,9 @@ mod firmware_version; mod program_mode; +mod squelch; mod volume; pub use firmware_version::GetFirmwareVersion; pub use program_mode::{EnterProgramMode, ExitProgramMode}; +pub use squelch::{GetSquelchLevel, SetSquelchLevel, SquelchLevel, SquelchLevelError}; pub use volume::{GetVolumeLevel, SetVolumeLevel, VolumeLevel, VolumeLevelError}; diff --git a/src/command/bc125at/squelch.rs b/src/command/bc125at/squelch.rs new file mode 100644 index 0000000..b11d0a0 --- /dev/null +++ b/src/command/bc125at/squelch.rs @@ -0,0 +1,19 @@ +use std::{num::ParseIntError, str::Utf8Error}; + +use crate::command::{OkResponse, command, range_param, range_response}; + +#[derive(Debug, thiserror::Error)] +pub enum SquelchLevelError { + #[error("invalid UTF-8 bytes")] + Utf8Error(#[from] Utf8Error), + #[error(transparent)] + Parse(#[from] ParseIntError), + #[error("squelch must be between [0..15], got `{0}`")] + InvalidSquelch(u8), +} + +range_param!(SquelchLevel(0..=15): u8); +range_response!(SquelchLevel => SquelchLevelError : InvalidSquelch); + +command!(b"SQL": GetSquelchLevel => SquelchLevel); +command!(b"SQL": SetSquelchLevel(SquelchLevel) => OkResponse); -- 2.51.2