pub mod cmd {
pub const MIC_MUTE: u16 = 0x2022;
pub const MIC_GAIN: u16 = 0x2023;
pub const COMPRESSOR_ENABLE: u16 = 0x2026;
pub const COMPRESSOR_THRESH: u16 = 0x2027;
pub const LIMITER_ENABLE: u16 = 0x202C;
pub const LIMITER_THRESH: u16 = 0x202D;
pub const HEADPHONE_VOL: u16 = 0x2030;
pub const NOISE_GATE: u16 = 0x2031;
pub const RGB_ENABLE: u16 = 0x2036;
pub const RGB_BRIGHTNESS: u16 = 0x2037;
pub const RGB_COLOR: u16 = 0x2038;
pub const LIGHTING_LINKAGE: u16 = 0x2039;
pub const NC_ENABLE: u16 = 0x203A;
pub const NC_STRENGTH: u16 = 0x203B;
pub const BAND1_BASE: u16 = 0x204D;
pub const BAND2_BASE: u16 = 0x2052;
pub const BAND3_BASE: u16 = 0x2057;
pub const BAND4_BASE: u16 = 0x205C;
pub const BAND5_BASE: u16 = 0x2061;
pub const HPF_BASE: u16 = 0x2066;
pub const LPF_BASE: u16 = 0x206B;
pub const MIC_MONITOR: u16 = 0x2070;
}
#[repr(u16)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum FilterType {
Peaking = 0,
LowPass = 1,
HighPass = 2,
LowShelf = 3,
HighShelf = 4,
}
#[repr(u16)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum RgbColor {
White = 0,
Red = 1,
Orange = 2,
Yellow = 3,
Green = 4,
Cyan = 5,
Blue = 6,
Purple = 7,
Rainbow = 8,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum EqBand {
Band1,
Band2,
Band3,
Band4,
Band5,
Hpf,
Lpf,
}
impl EqBand {
pub(crate) fn base_cmd(self) -> u16 {
match self {
EqBand::Band1 => cmd::BAND1_BASE,
EqBand::Band2 => cmd::BAND2_BASE,
EqBand::Band3 => cmd::BAND3_BASE,
EqBand::Band4 => cmd::BAND4_BASE,
EqBand::Band5 => cmd::BAND5_BASE,
EqBand::Hpf => cmd::HPF_BASE,
EqBand::Lpf => cmd::LPF_BASE,
}
}
}
#[derive(Debug, Clone, Copy)]
pub struct EqBandParams {
pub enabled: bool,
pub filter_type: FilterType,
pub frequency: u16,
pub gain_db: f32,
pub q: f32,
}
pub(crate) fn encode_gain(db: f32) -> u16 {
(2000.0 + db * 10.0) as u16
}
pub(crate) fn encode_q(q: f32) -> u16 {
(q * 100.0) as u16
}
pub(crate) fn encode_nc_strength(ui: u8) -> u16 {
(ui as u16 + 120) * 10
}