fix: errors
This commit is contained in:
+140
-174
@@ -18,7 +18,7 @@ use crate::{
|
|||||||
response::map_response,
|
response::map_response,
|
||||||
},
|
},
|
||||||
protocol::{commands, config::decode_config, frame::extract_frame},
|
protocol::{commands, config::decode_config, frame::extract_frame},
|
||||||
types::{self, DSPMode},
|
types::{self, ConnectionStatus::Disconnected, DSPMode},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -57,7 +57,7 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
mode: types::DSPMode::Disconnected,
|
mode: types::DSPMode::Normal,
|
||||||
|
|
||||||
connection: types::DeviceConnection {
|
connection: types::DeviceConnection {
|
||||||
host,
|
host,
|
||||||
@@ -140,7 +140,7 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn connected(&self) -> bool {
|
pub fn connected(&self) -> bool {
|
||||||
self.mode == types::DSPMode::Connected
|
self.state.connection == types::ConnectionStatus::Connected
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn demo(&self) -> bool {
|
pub fn demo(&self) -> bool {
|
||||||
@@ -185,6 +185,7 @@ impl DSP408 {
|
|||||||
modified: modified.modified,
|
modified: modified.modified,
|
||||||
},
|
},
|
||||||
current_config: state,
|
current_config: state,
|
||||||
|
connection: Disconnected,
|
||||||
};
|
};
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -201,10 +202,11 @@ impl DSP408 {
|
|||||||
// Command `0x10`
|
// Command `0x10`
|
||||||
pub fn connect(&mut self) -> Result<(), DSPError> {
|
pub fn connect(&mut self) -> Result<(), DSPError> {
|
||||||
if self.mode == types::DSPMode::Demo {
|
if self.mode == types::DSPMode::Demo {
|
||||||
|
self.state.connection = types::ConnectionStatus::Connected;
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.mode == types::DSPMode::Connected {
|
if self.state.connection == types::ConnectionStatus::Connected {
|
||||||
return Err(DSPError::AlreadyConnected);
|
return Err(DSPError::AlreadyConnected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,7 +273,7 @@ impl DSP408 {
|
|||||||
return Err(error);
|
return Err(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
self.mode = types::DSPMode::Connected;
|
self.state.connection = types::ConnectionStatus::Connected;
|
||||||
|
|
||||||
instances()
|
instances()
|
||||||
.lock()
|
.lock()
|
||||||
@@ -289,6 +291,11 @@ impl DSP408 {
|
|||||||
|
|
||||||
// Command `0x11`
|
// Command `0x11`
|
||||||
pub fn disconnect(&mut self) -> Result<(), DSPError> {
|
pub fn disconnect(&mut self) -> Result<(), DSPError> {
|
||||||
|
if self.mode == types::DSPMode::Demo {
|
||||||
|
self.state.connection = types::ConnectionStatus::Disconnected;
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
|
||||||
let key = (self.connection.host, self.connection.device_id);
|
let key = (self.connection.host, self.connection.device_id);
|
||||||
|
|
||||||
let mut socket_guard = self
|
let mut socket_guard = self
|
||||||
@@ -306,9 +313,7 @@ impl DSP408 {
|
|||||||
.map_err(|e| DSPError::MutexPoisoned(e.to_string()))?
|
.map_err(|e| DSPError::MutexPoisoned(e.to_string()))?
|
||||||
.remove(&key);
|
.remove(&key);
|
||||||
|
|
||||||
if self.mode == types::DSPMode::Connected {
|
self.state.connection = types::ConnectionStatus::Disconnected;
|
||||||
self.mode = types::DSPMode::Disconnected;
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -362,8 +367,9 @@ impl DSP408 {
|
|||||||
pub fn set_delay_unit(&mut self, unit: types::DelayUnit) -> Result<bool, DSPError> {
|
pub fn set_delay_unit(&mut self, unit: types::DelayUnit) -> Result<bool, DSPError> {
|
||||||
let raw_unit = mapper::delay_unit_to_raw(unit)?;
|
let raw_unit = mapper::delay_unit_to_raw(unit)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_delay_unit(raw_unit)?;
|
let request = commands::build_set_delay_unit(raw_unit)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -383,12 +389,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -416,8 +419,9 @@ impl DSP408 {
|
|||||||
pub fn recall_preset(&mut self, preset_index: usize) -> Result<bool, DSPError> {
|
pub fn recall_preset(&mut self, preset_index: usize) -> Result<bool, DSPError> {
|
||||||
let raw_index = mapper::preset_index_to_raw(preset_index)?;
|
let raw_index = mapper::preset_index_to_raw(preset_index)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_recall(raw_index)?;
|
let request = commands::build_recall(raw_index)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -439,11 +443,11 @@ impl DSP408 {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if self.mode == types::DSPMode::Demo {
|
||||||
types::DSPMode::Demo => {
|
|
||||||
self.state = default_dsp_state();
|
self.state = default_dsp_state();
|
||||||
}
|
}
|
||||||
types::DSPMode::Disconnected => {
|
}
|
||||||
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -465,8 +469,9 @@ impl DSP408 {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_store_current_configuration(raw_index)?;
|
let request = commands::build_store_current_configuration(raw_index)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -492,8 +497,8 @@ impl DSP408 {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
types::DSPMode::Demo => {}
|
}
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -524,8 +529,9 @@ impl DSP408 {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_factory_reset();
|
let request = commands::build_factory_reset();
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -544,16 +550,12 @@ impl DSP408 {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if self.mode == types::DSPMode::Demo {
|
||||||
// Hardware accepted the reset.
|
|
||||||
self.state = default_dsp_state();
|
self.state = default_dsp_state();
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
self.state = default_dsp_state();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -565,8 +567,9 @@ impl DSP408 {
|
|||||||
pub fn set_current_preset_name(&mut self, name: &str) -> Result<bool, DSPError> {
|
pub fn set_current_preset_name(&mut self, name: &str) -> Result<bool, DSPError> {
|
||||||
let raw_name = mapper::preset_name_to_raw(name)?;
|
let raw_name = mapper::preset_name_to_raw(name)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_store_current_preset_name(&raw_name)?;
|
let request = commands::build_store_current_preset_name(&raw_name)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -596,10 +599,8 @@ impl DSP408 {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware operations.
|
|
||||||
}
|
}
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -704,8 +705,9 @@ impl DSP408 {
|
|||||||
) -> Result<bool, DSPError> {
|
) -> Result<bool, DSPError> {
|
||||||
let (raw_channel_1, raw_channel_2) = mapper::copy_channel_to_raw(channel_1, channel_2)?;
|
let (raw_channel_1, raw_channel_2) = mapper::copy_channel_to_raw(channel_1, channel_2)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_copy_channel(raw_channel_1, raw_channel_2)?;
|
let request = commands::build_copy_channel(raw_channel_1, raw_channel_2)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -725,12 +727,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -759,8 +758,9 @@ impl DSP408 {
|
|||||||
pub fn unlock_device(&mut self, password: &str) -> Result<bool, DSPError> {
|
pub fn unlock_device(&mut self, password: &str) -> Result<bool, DSPError> {
|
||||||
let raw_password = mapper::password_to_raw(password)?;
|
let raw_password = mapper::password_to_raw(password)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_unlock_device(&raw_password)?;
|
let request = commands::build_unlock_device(&raw_password)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -780,12 +780,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// Emulate successful unlock locally.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -799,8 +796,9 @@ impl DSP408 {
|
|||||||
pub fn lock_device(&mut self, password: &str) -> Result<bool, DSPError> {
|
pub fn lock_device(&mut self, password: &str) -> Result<bool, DSPError> {
|
||||||
let raw_password = mapper::password_to_raw(password)?;
|
let raw_password = mapper::password_to_raw(password)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_lock_device(&raw_password)?;
|
let request = commands::build_lock_device(&raw_password)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -820,18 +818,17 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// Emulate locking locally.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.state_mut().flags.is_locked = true;
|
self.state_mut().flags.is_locked = true;
|
||||||
|
|
||||||
|
self.disconnect()?;
|
||||||
|
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -852,8 +849,9 @@ impl DSP408 {
|
|||||||
let raw_knee = mapper::knee_db_to_raw(knee)?;
|
let raw_knee = mapper::knee_db_to_raw(knee)?;
|
||||||
let raw_threshold = mapper::threshold_db_to_raw(threshold)?;
|
let raw_threshold = mapper::threshold_db_to_raw(threshold)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_compressor(
|
let request = commands::build_set_compressor(
|
||||||
raw_channel,
|
raw_channel,
|
||||||
raw_ratio,
|
raw_ratio,
|
||||||
@@ -880,12 +878,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -916,8 +911,9 @@ impl DSP408 {
|
|||||||
let raw_freq = mapper::frequency_hz_to_raw(freq)?;
|
let raw_freq = mapper::frequency_hz_to_raw(freq)?;
|
||||||
let raw_filter = mapper::crossover_filter_to_raw(filter_type)?;
|
let raw_filter = mapper::crossover_filter_to_raw(filter_type)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_low_pass(raw_channel, raw_freq, raw_filter)?;
|
let request = commands::build_low_pass(raw_channel, raw_freq, raw_filter)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -937,12 +933,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -987,8 +980,9 @@ impl DSP408 {
|
|||||||
let raw_freq = mapper::frequency_hz_to_raw(freq)?;
|
let raw_freq = mapper::frequency_hz_to_raw(freq)?;
|
||||||
let raw_filter = mapper::crossover_filter_to_raw(filter_type)?;
|
let raw_filter = mapper::crossover_filter_to_raw(filter_type)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_high_pass(raw_channel, raw_freq, raw_filter)?;
|
let request = commands::build_high_pass(raw_channel, raw_freq, raw_filter)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1008,12 +1002,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1066,8 +1057,9 @@ impl DSP408 {
|
|||||||
let raw_q = mapper::peq_q_to_raw(q, filter_type)?;
|
let raw_q = mapper::peq_q_to_raw(q, filter_type)?;
|
||||||
let raw_filter = mapper::peq_filter_to_raw(filter_type)?;
|
let raw_filter = mapper::peq_filter_to_raw(filter_type)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_peq_band(
|
let request = commands::build_peq_band(
|
||||||
raw_channel,
|
raw_channel,
|
||||||
raw_band,
|
raw_band,
|
||||||
@@ -1095,12 +1087,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1144,8 +1133,9 @@ impl DSP408 {
|
|||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
let raw_db = mapper::gain_db_to_raw(db)?;
|
let raw_db = mapper::gain_db_to_raw(db)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_gain(raw_channel, raw_db)?;
|
let request = commands::build_gain(raw_channel, raw_db)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1165,12 +1155,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1194,8 +1181,9 @@ impl DSP408 {
|
|||||||
pub fn set_mute(&mut self, channel: types::Channel, muted: bool) -> Result<bool, DSPError> {
|
pub fn set_mute(&mut self, channel: types::Channel, muted: bool) -> Result<bool, DSPError> {
|
||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_mute(raw_channel, muted as u8)?;
|
let request = commands::build_mute(raw_channel, muted as u8)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1215,12 +1203,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1248,8 +1233,9 @@ impl DSP408 {
|
|||||||
) -> Result<bool, DSPError> {
|
) -> Result<bool, DSPError> {
|
||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_inverted_gain(raw_channel, inverted as u8)?;
|
let request = commands::build_inverted_gain(raw_channel, inverted as u8)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1269,12 +1255,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1304,8 +1287,9 @@ impl DSP408 {
|
|||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
let raw_delay = mapper::delay_to_raw(delay, unit)?;
|
let raw_delay = mapper::delay_to_raw(delay, unit)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_delay(raw_channel, raw_delay)?;
|
let request = commands::build_set_delay(raw_channel, raw_delay)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1325,12 +1309,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1356,8 +1337,9 @@ impl DSP408 {
|
|||||||
let raw_source = mapper::input_source_to_raw(input_source.r#type)?;
|
let raw_source = mapper::input_source_to_raw(input_source.r#type)?;
|
||||||
let raw_frequency = mapper::frequency_value_to_raw(input_source.frequency)?;
|
let raw_frequency = mapper::frequency_value_to_raw(input_source.frequency)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_input_source(raw_source, raw_frequency)?;
|
let request = commands::build_set_input_source(raw_source, raw_frequency)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1377,12 +1359,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1404,8 +1383,9 @@ impl DSP408 {
|
|||||||
let raw_output = mapper::output_channel_to_raw(output)?;
|
let raw_output = mapper::output_channel_to_raw(output)?;
|
||||||
let raw_inputs = mapper::matrix_to_raw(&inputs)?;
|
let raw_inputs = mapper::matrix_to_raw(&inputs)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_matrix_routing(raw_output, raw_inputs)?;
|
let request = commands::build_matrix_routing(raw_output, raw_inputs)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1425,12 +1405,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1466,8 +1443,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
// Link source
|
// Link source
|
||||||
let request = commands::build_link_channel(raw_source, bitmask)?;
|
let request = commands::build_link_channel(raw_source, bitmask)?;
|
||||||
|
|
||||||
@@ -1520,12 +1498,9 @@ impl DSP408 {
|
|||||||
return Ok(false);
|
return Ok(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// Copy already applied above; nothing else to reconcile.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1589,8 +1564,9 @@ impl DSP408 {
|
|||||||
) -> Result<bool, DSPError> {
|
) -> Result<bool, DSPError> {
|
||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_bypass_peq(raw_channel, bypass as u8)?;
|
let request = commands::build_bypass_peq(raw_channel, bypass as u8)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1610,12 +1586,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1648,8 +1621,9 @@ impl DSP408 {
|
|||||||
let raw_channel = mapper::channel_to_raw(channel)?;
|
let raw_channel = mapper::channel_to_raw(channel)?;
|
||||||
let raw_name = mapper::channel_name_to_raw(name)?;
|
let raw_name = mapper::channel_name_to_raw(name)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_store_channel_name(raw_channel, &raw_name)?;
|
let request = commands::build_store_channel_name(raw_channel, &raw_name)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1669,12 +1643,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1711,8 +1682,9 @@ impl DSP408 {
|
|||||||
let raw_hold = mapper::hold_ms_to_raw(hold)?;
|
let raw_hold = mapper::hold_ms_to_raw(hold)?;
|
||||||
let raw_release = mapper::release_ms_to_raw(release)?;
|
let raw_release = mapper::release_ms_to_raw(release)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_gate(
|
let request = commands::build_set_gate(
|
||||||
raw_channel,
|
raw_channel,
|
||||||
raw_threshold,
|
raw_threshold,
|
||||||
@@ -1738,12 +1710,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1774,8 +1743,9 @@ impl DSP408 {
|
|||||||
let raw_attack = mapper::attack_ms_to_raw(attack)?;
|
let raw_attack = mapper::attack_ms_to_raw(attack)?;
|
||||||
let raw_release = mapper::release_ms_to_raw(release)?;
|
let raw_release = mapper::release_ms_to_raw(release)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_limiter(
|
let request = commands::build_set_limiter(
|
||||||
raw_channel,
|
raw_channel,
|
||||||
raw_threshold,
|
raw_threshold,
|
||||||
@@ -1800,12 +1770,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1826,8 +1793,12 @@ impl DSP408 {
|
|||||||
pub fn get_meter_levels(
|
pub fn get_meter_levels(
|
||||||
&mut self,
|
&mut self,
|
||||||
) -> Result<(types::InputMeters, types::OutputMeters), DSPError> {
|
) -> Result<(types::InputMeters, types::OutputMeters), DSPError> {
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Demo {
|
||||||
|
return Ok((self.input_meters.clone(), self.output_meters.clone()));
|
||||||
|
}
|
||||||
|
|
||||||
let request = commands::build_get_meter_levels();
|
let request = commands::build_get_meter_levels();
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1846,12 +1817,7 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
types::ConnectionStatus::Disconnected => Err(DSPError::NotConnected),
|
||||||
// Return the locally simulated meter values.
|
|
||||||
Ok((self.input_meters.clone(), self.output_meters.clone()))
|
|
||||||
}
|
|
||||||
|
|
||||||
types::DSPMode::Disconnected => Err(DSPError::NotConnected),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1866,10 +1832,14 @@ impl DSP408 {
|
|||||||
let raw_output_channel = mapper::output_channel_to_raw(output_channel)?;
|
let raw_output_channel = mapper::output_channel_to_raw(output_channel)?;
|
||||||
let raw_gain = mapper::matrix_gain_db_to_raw(gain)?;
|
let raw_gain = mapper::matrix_gain_db_to_raw(gain)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
let request =
|
if self.mode == types::DSPMode::Normal {
|
||||||
commands::build_matrix_gain(raw_input_channel, raw_output_channel, raw_gain)?;
|
let request = commands::build_matrix_gain(
|
||||||
|
raw_input_channel,
|
||||||
|
raw_output_channel,
|
||||||
|
raw_gain,
|
||||||
|
)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
|
|
||||||
@@ -1888,12 +1858,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1919,10 +1886,14 @@ impl DSP408 {
|
|||||||
let raw_frequency_band = mapper::frequency_value_to_raw(frequency_band)?;
|
let raw_frequency_band = mapper::frequency_value_to_raw(frequency_band)?;
|
||||||
let raw_gain = mapper::eq_gain_db_to_raw(gain)?;
|
let raw_gain = mapper::eq_gain_db_to_raw(gain)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
let request =
|
if self.mode == types::DSPMode::Normal {
|
||||||
commands::build_set_geq_band(raw_input_channel, raw_frequency_band, raw_gain)?;
|
let request = commands::build_set_geq_band(
|
||||||
|
raw_input_channel,
|
||||||
|
raw_frequency_band,
|
||||||
|
raw_gain,
|
||||||
|
)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
|
|
||||||
@@ -1941,12 +1912,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1972,8 +1940,9 @@ impl DSP408 {
|
|||||||
) -> Result<bool, DSPError> {
|
) -> Result<bool, DSPError> {
|
||||||
let raw_input_channel = mapper::input_channel_to_raw(input_channel)?;
|
let raw_input_channel = mapper::input_channel_to_raw(input_channel)?;
|
||||||
|
|
||||||
match self.mode {
|
match self.state.connection {
|
||||||
types::DSPMode::Connected => {
|
types::ConnectionStatus::Connected => {
|
||||||
|
if self.mode == types::DSPMode::Normal {
|
||||||
let request = commands::build_set_geq_bypass(raw_input_channel, bypass as u8)?;
|
let request = commands::build_set_geq_bypass(raw_input_channel, bypass as u8)?;
|
||||||
|
|
||||||
let resp = self.send_recv(&request)?;
|
let resp = self.send_recv(&request)?;
|
||||||
@@ -1993,12 +1962,9 @@ impl DSP408 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Demo => {
|
|
||||||
// No hardware request.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
types::DSPMode::Disconnected => {
|
types::ConnectionStatus::Disconnected => {
|
||||||
return Err(DSPError::NotConnected);
|
return Err(DSPError::NotConnected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
|
|
||||||
|
use crate::dsp408::types;
|
||||||
|
|
||||||
use super::types::{
|
use super::types::{
|
||||||
Compressor, Crossover, CrossoverFilter, CrossoverFilters, DSPConfigState, DSPState, DelayUnit,
|
Compressor, Crossover, CrossoverFilter, CrossoverFilters, DSPConfigState, DSPState, DelayUnit,
|
||||||
DeviceFlags, DiscreteFrequency, Gate, GraphicEQ, InputChannel, InputChannelState, InputMeters,
|
DeviceFlags, DiscreteFrequency, Gate, GraphicEQ, InputChannel, InputChannelState, InputMeters,
|
||||||
@@ -23,7 +25,7 @@ pub fn default_dsp_state() -> DSPState {
|
|||||||
|
|
||||||
current_config: default_config(),
|
current_config: default_config(),
|
||||||
|
|
||||||
mode: super::types::DSPMode::Disconnected,
|
connection: types::ConnectionStatus::Disconnected,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -398,12 +398,14 @@ impl DSPConfigState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum DSPMode {
|
pub enum DSPMode {
|
||||||
Demo,
|
Demo,
|
||||||
Normal,
|
Normal,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_attr(feature = "serialization", derive(Serialize, Deserialize))]
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||||
pub enum ConnectionStatus {
|
pub enum ConnectionStatus {
|
||||||
Connected,
|
Connected,
|
||||||
|
|||||||
Reference in New Issue
Block a user