use fpgad::comm::dbus::{control_interface::ControlInterface, status_interface::StatusInterface};
use fpgad::{register_platforms, softeners};
use log::info;
use std::error::Error;
use std::future::pending;
use zbus::connection;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
register_platforms();
#[cfg(feature = "softeners")]
{
if std::env::var("SNAP").is_ok() {
info!("SNAP environment detected, starting softener daemon wrapper");
tokio::spawn(async {
softeners::softeners_thread::run_softener_daemons().await;
});
}
}
let status_interface = StatusInterface {};
let control_interface = ControlInterface {};
let _conn = connection::Builder::system()?
.name("com.canonical.fpgad")?
.serve_at("/com/canonical/fpgad/status", status_interface)?
.serve_at("/com/canonical/fpgad/control", control_interface)?
.build()
.await?;
info!("Started com.canonical.fpgad dbus service");
pending::<()>().await;
Ok(())
}