summaryrefslogtreecommitdiff
path: root/sound_card_init/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'sound_card_init/src/main.rs')
-rw-r--r--sound_card_init/src/main.rs131
1 files changed, 0 insertions, 131 deletions
diff --git a/sound_card_init/src/main.rs b/sound_card_init/src/main.rs
deleted file mode 100644
index 806b7d53..00000000
--- a/sound_card_init/src/main.rs
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2020 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//! `sound_card_init` is an user space binary to perform sound card initialization during boot time.
-//!
-//!
-//! # Arguments
-//!
-//! * `sound_card_id` - The sound card name, ex: sofcmlmax98390d.
-//!
-//! Given the `sound_card_id`, this binary parses the CONF_DIR/<sound_card_id>.yaml to perform per sound card initialization.
-//! The upstart job of `sound_card_init` is started by the udev event specified in /lib/udev/rules.d/99-sound_card_init.rules.
-#![deny(missing_docs)]
-use std::env;
-use std::error;
-use std::fmt;
-use std::process;
-use std::string::String;
-
-use getopts::Options;
-use remain::sorted;
-use sys_util::{error, info, syslog};
-
-use amp::AmpBuilder;
-use dsm::utils::run_time;
-
-type Result<T> = std::result::Result<T, Error>;
-
-#[derive(Default)]
-struct Args {
- pub sound_card_id: String,
- pub conf: String,
-}
-
-#[sorted]
-#[derive(Debug)]
-enum Error {
- MissingOption(String),
- ParseArgsFailed(getopts::Fail),
-}
-
-impl error::Error for Error {}
-
-impl fmt::Display for Error {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- use Error::*;
- match self {
- MissingOption(option) => write!(f, "missing required option: {}", option),
- ParseArgsFailed(e) => write!(f, "parse_args failed: {}", e),
- }
- }
-}
-
-fn print_usage(opts: &Options) {
- let brief = "Usage: sound_card_init [options]".to_owned();
- print!("{}", opts.usage(&brief));
-}
-
-fn parse_args() -> Result<Args> {
- let mut opts = Options::new();
- opts.optopt("", "id", "sound card id", "ID");
- opts.optopt(
- "",
- "conf",
- "the config file name. It should be $(cros_config /audio/main sound-card-init-conf)",
- "CONFIG_NAME",
- );
- opts.optflag("h", "help", "print help menu");
- let matches = opts
- .parse(&env::args().collect::<Vec<_>>()[1..])
- .map_err(|e| {
- print_usage(&opts);
- Error::ParseArgsFailed(e)
- })?;
-
- if matches.opt_present("h") {
- print_usage(&opts);
- process::exit(0);
- }
-
- let sound_card_id = matches
- .opt_str("id")
- .ok_or_else(|| Error::MissingOption("id".to_owned()))
- .map_err(|e| {
- print_usage(&opts);
- e
- })?;
-
- let conf = matches
- .opt_str("conf")
- .ok_or_else(|| Error::MissingOption("conf".to_owned()))
- .map_err(|e| {
- print_usage(&opts);
- e
- })?;
-
- Ok(Args {
- sound_card_id,
- conf,
- })
-}
-
-/// Parses the CONF_DIR/${args.conf}.yaml and starts the boot time calibration.
-fn sound_card_init(args: &Args) -> std::result::Result<(), Box<dyn error::Error>> {
- info!("sound_card_id: {}, conf:{}", args.sound_card_id, args.conf);
- AmpBuilder::new(&args.sound_card_id, &args.conf)
- .build()?
- .boot_time_calibration()?;
-
- Ok(())
-}
-
-fn main() {
- syslog::init().expect("failed to initialize syslog");
- let args = match parse_args() {
- Ok(args) => args,
- Err(e) => {
- error!("failed to parse arguments: {}", e);
- return;
- }
- };
-
- match sound_card_init(&args) {
- Ok(_) => info!("sound_card_init finished successfully."),
- Err(e) => error!("sound_card_init: {}", e),
- }
-
- if let Err(e) = run_time::now_to_file(&args.sound_card_id) {
- error!("failed to create sound_card_init run time file: {}", e);
- }
-}