summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs49
1 files changed, 8 insertions, 41 deletions
diff --git a/src/main.rs b/src/main.rs
index 85d2443..a23034e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -14,21 +14,22 @@ extern crate structopt;
14 14
15extern crate lalrpop_util; 15extern crate lalrpop_util;
16 16
17#[macro_use]
18extern crate serde_json;
19
17mod cli; 20mod cli;
18mod dbus_api; 21mod dbus_api;
19mod parsing; 22mod parsing;
20mod utils; 23mod utils;
21 24
22use utils::*; 25mod pa_eq;
23use dbus_api::sink::OrgPulseAudioExtEqualizing1Equalizer; 26mod pa_effects;
27
24use cli::*; 28use cli::*;
25 29
26use failure::Error; 30use failure::Error;
27use structopt::StructOpt; 31use structopt::StructOpt;
28 32
29use std::fs::File;
30use std::io;
31
32#[derive(Debug)] 33#[derive(Debug)]
33pub struct Filter { 34pub struct Filter {
34 preamp: f64, 35 preamp: f64,
@@ -74,41 +75,7 @@ fn start() -> Result<(), Error> {
74 use Command::*; 75 use Command::*;
75 76
76 match args.cmd { 77 match args.cmd {
77 Load(args) => load(args), 78 PaEq(args) => pa_eq::main(args),
78 Reset(args) => reset(args), 79 PaEffects(args) => pa_effects::main(args),
79 } 80 }
80} 81}
81
82fn reset(args: ResetCli) -> Result<(), Error> {
83 let conn = connect()?;
84 let conn_sink = get_equalized_sink(&conn)?;
85 let filter_rate = conn_sink.get_filter_sample_rate()?;
86 let filter = Filter {
87 preamp: 1f64,
88 frequencies: vec![],
89 coefficients: vec![],
90 }.pad(filter_rate);
91
92 send_filter(&conn_sink, filter)?;
93
94 Ok(())
95}
96
97fn load(args: LoadCli) -> Result<(), Error> {
98 let conn = connect()?;
99 let conn_sink = get_equalized_sink(&conn)?;
100
101 let filter = if args.file == "-" {
102 let stdin = io::stdin();
103 let mut handle = stdin.lock();
104 read_filter(&mut handle)?
105 } else {
106 let mut file = File::open(args.file)?;
107 read_filter(&mut file)?
108 };
109
110 let filter_rate = conn_sink.get_filter_sample_rate()?;
111 send_filter(&conn_sink, filter.pad(filter_rate))?;
112
113 Ok(())
114}