use serde::Deserialize;
use serde::Serialize;
use std::collections::HashMap;
use zbus::dbus_proxy;
use zbus::zvariant::{DeserializeDict, SerializeDict, Type};
pub type ValueMap = HashMap<u32, String>;
#[derive(Debug, PartialEq, Eq, Type, Serialize, Deserialize)]
pub enum SensorMode {
ReadOnly,
ReadWrite,
WriteOnly,
}
#[derive(Debug, PartialEq, Eq, DeserializeDict, SerializeDict, Type)]
#[zvariant(signature = "dict")]
pub struct Metadata {
pub n: String,
pub u: Option<String>,
pub name: Option<String>,
pub description: Option<String>,
pub value_map: Option<ValueMap>,
pub mode: Option<SensorMode>,
}
#[dbus_proxy(
interface = "se.modio.logger.Logger1",
default_service = "se.modio.logger",
default_path = "/se/modio/logger"
)]
trait Logger1 {
fn get_metadata(&self, key: &str) -> zbus::Result<Metadata>;
fn set_metadata_description(&self, key: &str, description: &str) -> zbus::Result<()>;
fn set_metadata_mode(&self, key: &str, mode: SensorMode) -> zbus::Result<()>;
fn set_metadata_name(&self, key: &str, name: &str) -> zbus::Result<()>;
fn set_metadata_unit(&self, key: &str, unit: &str) -> zbus::Result<()>;
fn set_metadata_value_map(&self, key: &str, value_map: ValueMap) -> zbus::Result<()>;
#[dbus_proxy(signal)]
fn metadata_updated(&self, key: &str) -> zbus::Result<()>;
}