From 515870c9e8ff833e50f5253ec6e6d43de97519ed Mon Sep 17 00:00:00 2001 From: Minijackson Date: Tue, 4 Sep 2018 12:33:44 +0200 Subject: Rust stable compatibility + use amplitude decibel conversion --- src/main.rs | 17 ++++++++++++++--- src/parsing/equalizer_apo.lalrpop | 2 +- src/parsing/equalizer_apo.rs | 4 ++-- src/utils.rs | 2 +- 4 files changed, 18 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main.rs b/src/main.rs index 171fe3c..8edc760 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,7 @@ extern crate failure; extern crate clap; extern crate clap_log_flag; extern crate clap_verbosity_flag; +#[macro_use] extern crate structopt; mod dbus_api; @@ -109,7 +110,17 @@ impl Filter { } } -fn main() -> Result<(), Error> { +fn main() { + match start() { + Ok(()) => (), + Err(err) => { + eprintln!("Error: {}", err); + std::process::exit(-1); + } + } +} + +fn start() -> Result<(), Error> { let args = Cli::from_args(); args.log.log_all(args.verbose.log_level())?; @@ -142,8 +153,8 @@ fn load(args: LoadCli) -> Result<(), Error> { let filter = if args.file == "-" { let stdin = io::stdin(); - let mut lock = stdin.lock(); - read_filter(&mut lock)? + let mut handle = stdin.lock(); + read_filter(&mut handle)? } else { let mut file = File::open(args.file)?; read_filter(&mut file)? diff --git a/src/parsing/equalizer_apo.lalrpop b/src/parsing/equalizer_apo.lalrpop index b1faad9..39dda67 100644 --- a/src/parsing/equalizer_apo.lalrpop +++ b/src/parsing/equalizer_apo.lalrpop @@ -6,7 +6,7 @@ grammar; pub Main: Filter = { => { - let coefficients: Vec<_> = eq.1.iter().map(|decibel| 10f64.powf(decibel / 10f64)).collect(); + let coefficients: Vec<_> = eq.1.iter().map(|decibel| 10f64.powf(decibel / 10f64).sqrt()).collect(); // TODO: add decibel_to_ratio conversion function let preamp = 10f64.powf(preamp / 10f64); Filter { preamp, frequencies: eq.0, coefficients } diff --git a/src/parsing/equalizer_apo.rs b/src/parsing/equalizer_apo.rs index 3fab396..a24cf99 100644 --- a/src/parsing/equalizer_apo.rs +++ b/src/parsing/equalizer_apo.rs @@ -1,5 +1,5 @@ // auto-generated: "lalrpop 0.15.2" -// sha256: 81b6fa5856d7887b20715c2c7f6137db1927ece087e2db9f4bf1fcd8943365c5 +// sha256: a735e8f9bd5cf5f3aac915d12b24752d366481c3952258e22871eef395f44 use ::Filter; use std::str::FromStr; #[allow(unused_extern_crates)] @@ -880,7 +880,7 @@ fn __action1< ) -> Filter { { - let coefficients: Vec<_> = eq.1.iter().map(|decibel| 10f64.powf(decibel / 10f64)).collect(); + let coefficients: Vec<_> = eq.1.iter().map(|decibel| 10f64.powf(decibel / 10f64).sqrt()).collect(); // TODO: add decibel_to_ratio conversion function let preamp = 10f64.powf(preamp / 10f64); Filter { preamp, frequencies: eq.0, coefficients } diff --git a/src/utils.rs b/src/utils.rs index 6d7ae58..66ccae4 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -46,7 +46,7 @@ pub fn send_filter(conn_sink: &ConnPath<&Connection>, filter: Filter) -> Result< Ok(()) } -pub fn read_filter(file: &mut impl io::Read) -> Result { +pub fn read_filter(file: &mut T) -> Result where T: io::Read { let mut buffer = String::new(); info!("Reading filter in GraphicEQ format from the command line"); -- cgit v1.2.3