fix: bypass calculation

This commit is contained in:
2026-10-02 22:50:39 +02:00
parent e661022329
commit 2bf07d0fba
5 changed files with 26 additions and 28 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
use rand::RngExt;
use std::collections::HashMap; use std::collections::HashMap;
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
use rand::RngExt;
use crate::dsp408::types::ConnectionStatus; use crate::dsp408::types::ConnectionStatus;
use crate::dsp408::types::{ use crate::dsp408::types::{
+11 -7
View File
@@ -8,12 +8,19 @@ use std::{
}; };
use crate::{ use crate::{
common::errors::DSPError, dsp408::{ common::errors::DSPError,
client::default::{default_dsp_state, default_input_meters, default_output_meters, random_input_meters, random_output_meters}, mapper::{ dsp408::{
client::default::{
default_dsp_state, default_input_meters, default_output_meters, random_input_meters,
random_output_meters,
},
mapper::{
self, self,
constants::{CONFIG_CHUNK_INDEX_MAX, PRESET_INDEX_MAX, delay_range}, constants::{CONFIG_CHUNK_INDEX_MAX, PRESET_INDEX_MAX, delay_range},
response::map_response, response::map_response,
}, protocol::{commands, config::decode_config, frame::extract_frame}, types::{self, ConnectionStatus::Disconnected, DSPMode}, },
protocol::{commands, config::decode_config, frame::extract_frame},
types::{self, ConnectionStatus::Disconnected, DSPMode},
}, },
}; };
@@ -1794,10 +1801,7 @@ impl DSP408 {
self.input_meters = random_input_meters(); self.input_meters = random_input_meters();
self.output_meters = random_output_meters(); self.output_meters = random_output_meters();
return Ok(( return Ok((self.input_meters.clone(), self.output_meters.clone()));
self.input_meters.clone(),
self.output_meters.clone(),
));
} }
let request = commands::build_get_meter_levels(); let request = commands::build_get_meter_levels();
+1 -1
View File
@@ -1,4 +1,4 @@
mod dsp408;
mod default; mod default;
mod dsp408;
pub use dsp408::DSP408; pub use dsp408::DSP408;
+2 -6
View File
@@ -297,9 +297,7 @@ pub fn decode_config(payload: &[u8]) -> Result<types::DSPConfigState, DSPError>
for (index, inp) in input_channels.iter_mut().enumerate() { for (index, inp) in input_channels.iter_mut().enumerate() {
let bypass = input_peq_bitmap & (1 << index) != 0; let bypass = input_peq_bitmap & (1 << index) != 0;
for peq in inp.peq_chain.bands.values_mut() { inp.peq_chain.bypass = bypass;
peq.bypass = bypass;
}
} }
let output_peq_bitmap = r.read_u16()?; let output_peq_bitmap = r.read_u16()?;
@@ -307,9 +305,7 @@ pub fn decode_config(payload: &[u8]) -> Result<types::DSPConfigState, DSPError>
for (index, out) in output_channels.iter_mut().enumerate() { for (index, out) in output_channels.iter_mut().enumerate() {
let bypass = output_peq_bitmap & (1 << index) != 0; let bypass = output_peq_bitmap & (1 << index) != 0;
for peq in out.peq_chain.bands.values_mut() { out.peq_chain.bypass = bypass;
peq.bypass = bypass;
}
} }
let bitmap = r.read_u16()?; let bitmap = r.read_u16()?;
+11 -13
View File
@@ -2,8 +2,6 @@ use std::net::IpAddr;
use std::str::FromStr; use std::str::FromStr;
use dsp_thomann::dsp408::DSP408; use dsp_thomann::dsp408::DSP408;
use dsp_thomann::dsp408::types;
use dsp_thomann::dsp408::types::InputChannel::InA;
fn main() -> Result<(), Box<dyn std::error::Error>> { fn main() -> Result<(), Box<dyn std::error::Error>> {
let host = IpAddr::from_str("192.168.49.30")?; let host = IpAddr::from_str("192.168.49.30")?;
@@ -25,18 +23,18 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
// dsp.set_mute(types::Channel::Input(types::InputChannel::InA), true)?; // dsp.set_mute(types::Channel::Input(types::InputChannel::InA), true)?;
let r = dsp.set_peq_band( // let r = dsp.set_peq_band(
types::Channel::Input(InA), // types::Channel::Input(InA),
types::PEQBand::B1, // types::PEQBand::B1,
3.0, // 3.0,
1400.0, // 1400.0,
2.1, // 2.1,
types::PEQFilter::LowShelf, // types::PEQFilter::LowShelf,
false, // false,
)?; // )?;
dbg!(r); // dbg!(r);
// dbg!(dsp.state()?); dbg!(&dsp.state());
// let s = &dsp.state()?.current_config.input_states[&InputChannel::InA].peq_chain; // let s = &dsp.state()?.current_config.input_states[&InputChannel::InA].peq_chain;
// dbg!(s) // dbg!(s)