aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..4648631
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,46 @@
+//! mmx150 — battery and connection monitoring for the beyerdynamic MMX 150
+//! wireless dongle.
+
+use std::process::ExitCode;
+
+fn main() -> ExitCode {
+ let args: Vec<String> = std::env::args().skip(1).collect();
+ match args.first().map(String::as_str) {
+ Some("status") => cmd_status(),
+ Some("daemon") => cmd_daemon(),
+ Some("probe") => cmd_probe(),
+ _ => {
+ eprintln!("usage: mmx150 <status|daemon|probe>");
+ ExitCode::FAILURE
+ }
+ }
+}
+
+fn cmd_status() -> ExitCode {
+ match mmx150::hid::find_mmx150() {
+ Ok(Some(dev)) => {
+ println!("dongle: {} ({}:{:04x})", dev.name, dev.vid, dev.pid);
+ println!("connection: unknown (protocol reverse-engineering in progress)");
+ println!("battery: unknown");
+ ExitCode::SUCCESS
+ }
+ Ok(None) => {
+ eprintln!("dongle not found");
+ ExitCode::FAILURE
+ }
+ Err(e) => {
+ eprintln!("error: {e}");
+ ExitCode::FAILURE
+ }
+ }
+}
+
+fn cmd_daemon() -> ExitCode {
+ eprintln!("daemon not implemented yet");
+ ExitCode::FAILURE
+}
+
+fn cmd_probe() -> ExitCode {
+ eprintln!("use `mmx150-probe` binary instead");
+ ExitCode::FAILURE
+}