Fluke/dbus refactor

This commit is contained in:
Luke Jones
2023-12-03 20:44:01 +00:00
parent f6e4cc0626
commit 0a69c23288
143 changed files with 5421 additions and 10343 deletions

View File

@@ -10,6 +10,7 @@ description = "dbus interface methods for asusctl"
edition = "2021"
[dependencies]
asusd = { path = "../asusd" }
rog_anime = { path = "../rog-anime", features = ["dbus"] }
rog_aura = { path = "../rog-aura" }
rog_profiles = { path = "../rog-profiles" }

View File

@@ -1,13 +1,8 @@
pub static DBUS_NAME: &str = "org.asuslinux.Daemon";
pub static DBUS_PATH: &str = "/org/asuslinux/Daemon";
pub static DBUS_IFACE: &str = "org.asuslinux.Daemon";
pub use asusd::{DBUS_IFACE, DBUS_NAME, DBUS_PATH};
pub mod zbus_anime;
pub mod zbus_led;
pub mod zbus_aura;
pub mod zbus_fan_curves;
pub mod zbus_platform;
pub mod zbus_power;
pub mod zbus_profile;
pub mod zbus_supported;
// use rog_anime::AnimePowerStates;
// use rog_aura::{AuraEffect, LedPowerStates};
@@ -19,11 +14,9 @@ pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub struct DbusProxiesBlocking<'a> {
anime: zbus_anime::AnimeProxyBlocking<'a>,
charge: zbus_power::PowerProxyBlocking<'a>,
led: zbus_led::LedProxyBlocking<'a>,
profile: zbus_profile::ProfileProxyBlocking<'a>,
rog_bios: zbus_platform::RogBiosProxyBlocking<'a>,
supported: zbus_supported::SupportedProxyBlocking<'a>,
led: zbus_aura::AuraProxyBlocking<'a>,
profile: zbus_fan_curves::FanCurvesProxyBlocking<'a>,
rog_bios: zbus_platform::PlatformProxyBlocking<'a>,
}
impl<'a> DbusProxiesBlocking<'a> {
@@ -34,11 +27,9 @@ impl<'a> DbusProxiesBlocking<'a> {
Ok((
DbusProxiesBlocking {
anime: zbus_anime::AnimeProxyBlocking::new(&conn)?,
led: zbus_led::LedProxyBlocking::new(&conn)?,
charge: zbus_power::PowerProxyBlocking::new(&conn)?,
profile: zbus_profile::ProfileProxyBlocking::new(&conn)?,
rog_bios: zbus_platform::RogBiosProxyBlocking::new(&conn)?,
supported: zbus_supported::SupportedProxyBlocking::new(&conn)?,
led: zbus_aura::AuraProxyBlocking::new(&conn)?,
profile: zbus_fan_curves::FanCurvesProxyBlocking::new(&conn)?,
rog_bios: zbus_platform::PlatformProxyBlocking::new(&conn)?,
},
conn,
))
@@ -48,25 +39,17 @@ impl<'a> DbusProxiesBlocking<'a> {
&self.anime
}
pub fn charge(&self) -> &zbus_power::PowerProxyBlocking<'a> {
&self.charge
}
pub fn led(&self) -> &zbus_led::LedProxyBlocking<'a> {
pub fn aura(&self) -> &zbus_aura::AuraProxyBlocking<'a> {
&self.led
}
pub fn profile(&self) -> &zbus_profile::ProfileProxyBlocking<'a> {
pub fn fan_curves(&self) -> &zbus_fan_curves::FanCurvesProxyBlocking<'a> {
&self.profile
}
pub fn rog_bios(&self) -> &zbus_platform::RogBiosProxyBlocking<'a> {
pub fn platform(&self) -> &zbus_platform::PlatformProxyBlocking<'a> {
&self.rog_bios
}
pub fn supported(&self) -> &zbus_supported::SupportedProxyBlocking<'a> {
&self.supported
}
}
/// This is the main way to communicate with the DBUS interface
@@ -88,11 +71,9 @@ impl<'a> RogDbusClientBlocking<'a> {
pub struct DbusProxies<'a> {
anime: zbus_anime::AnimeProxy<'a>,
charge: zbus_power::PowerProxy<'a>,
led: zbus_led::LedProxy<'a>,
profile: zbus_profile::ProfileProxy<'a>,
rog_bios: zbus_platform::RogBiosProxy<'a>,
supported: zbus_supported::SupportedProxy<'a>,
led: zbus_aura::AuraProxy<'a>,
profile: zbus_fan_curves::FanCurvesProxy<'a>,
rog_bios: zbus_platform::PlatformProxy<'a>,
}
impl<'a> DbusProxies<'a> {
@@ -103,11 +84,9 @@ impl<'a> DbusProxies<'a> {
Ok((
DbusProxies {
anime: zbus_anime::AnimeProxy::new(&conn).await?,
led: zbus_led::LedProxy::new(&conn).await?,
charge: zbus_power::PowerProxy::new(&conn).await?,
profile: zbus_profile::ProfileProxy::new(&conn).await?,
rog_bios: zbus_platform::RogBiosProxy::new(&conn).await?,
supported: zbus_supported::SupportedProxy::new(&conn).await?,
led: zbus_aura::AuraProxy::new(&conn).await?,
profile: zbus_fan_curves::FanCurvesProxy::new(&conn).await?,
rog_bios: zbus_platform::PlatformProxy::new(&conn).await?,
},
conn,
))
@@ -117,25 +96,17 @@ impl<'a> DbusProxies<'a> {
&self.anime
}
pub fn charge(&self) -> &zbus_power::PowerProxy<'a> {
&self.charge
}
pub fn led(&self) -> &zbus_led::LedProxy<'a> {
pub fn led(&self) -> &zbus_aura::AuraProxy<'a> {
&self.led
}
pub fn profile(&self) -> &zbus_profile::ProfileProxy<'a> {
pub fn profile(&self) -> &zbus_fan_curves::FanCurvesProxy<'a> {
&self.profile
}
pub fn rog_bios(&self) -> &zbus_platform::RogBiosProxy<'a> {
pub fn rog_bios(&self) -> &zbus_platform::PlatformProxy<'a> {
&self.rog_bios
}
pub fn supported(&self) -> &zbus_supported::SupportedProxy<'a> {
&self.supported
}
}
/// This is the main way to communicate with the DBUS interface

View File

@@ -1,5 +1,5 @@
use rog_anime::usb::{AnimAwake, AnimBooting, AnimShutdown, AnimSleeping, Brightness};
use rog_anime::{AnimeDataBuffer, DeviceState as AnimeDeviceState};
use rog_anime::usb::Brightness;
use rog_anime::{Animations, AnimeDataBuffer, DeviceState as AnimeDeviceState};
use zbus::dbus_proxy;
#[dbus_proxy(
@@ -8,41 +8,58 @@ use zbus::dbus_proxy;
default_path = "/org/asuslinux/Anime"
)]
trait Anime {
/// Set the global base brightness
fn set_brightness(&self, bright: Brightness) -> zbus::Result<()>;
/// Set whether the AniMe will show boot, suspend, or off animations
fn set_builtins_enabled(&self, enabled: bool) -> zbus::Result<()>;
/// Set which builtin animation is used for each stage
fn set_builtin_animations(
&self,
boot: AnimBooting,
awake: AnimAwake,
sleep: AnimSleeping,
shutdown: AnimShutdown,
) -> zbus::Result<()>;
/// Set whether the AniMe is displaying images/data
fn set_enable_display(&self, status: bool) -> zbus::Result<()>;
/// SetOffWhenLidClosed method
fn set_off_when_lid_closed(&self, enabled: bool) -> zbus::Result<()>;
/// SetOffWhenSuspended method
fn set_off_when_suspended(&self, enabled: bool) -> zbus::Result<()>;
/// SetOffWhenUnplugged method
fn set_off_when_unplugged(&self, enabled: bool) -> zbus::Result<()>;
/// Writes a data stream of length. Will force system thread to exit until
/// it is restarted
fn write(&self, input: AnimeDataBuffer) -> zbus::Result<()>;
// #[dbus_proxy(property)]
/// DeviceState method
fn device_state(&self) -> zbus::Result<AnimeDeviceState>;
/// RunMainLoop method
fn run_main_loop(&self, start: bool) -> zbus::Result<()>;
/// Write method
fn write(&self, input: AnimeDataBuffer) -> zbus::Result<()>;
/// NotifyDeviceState signal
#[dbus_proxy(signal)]
fn notify_device_state(&self, data: AnimeDeviceState) -> zbus::Result<()>;
/// Brightness property
#[dbus_proxy(property)]
fn brightness(&self) -> zbus::Result<Brightness>;
#[dbus_proxy(property)]
fn set_brightness(&self, value: Brightness) -> zbus::Result<()>;
/// BuiltinAnimations property
#[dbus_proxy(property)]
fn builtin_animations(&self) -> zbus::Result<Animations>;
#[dbus_proxy(property)]
fn set_builtin_animations(&self, value: Animations) -> zbus::Result<()>;
/// BuiltinsEnabled property
#[dbus_proxy(property)]
fn builtins_enabled(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_builtins_enabled(&self, value: bool) -> zbus::Result<()>;
/// EnableDisplay property
#[dbus_proxy(property)]
fn enable_display(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_enable_display(&self, value: bool) -> zbus::Result<()>;
/// OffWhenLidClosed property
#[dbus_proxy(property)]
fn off_when_lid_closed(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_off_when_lid_closed(&self, value: bool) -> zbus::Result<()>;
/// OffWhenSuspended property
#[dbus_proxy(property)]
fn off_when_suspended(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_off_when_suspended(&self, value: bool) -> zbus::Result<()>;
/// OffWhenUnplugged property
#[dbus_proxy(property)]
fn off_when_unplugged(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_off_when_unplugged(&self, value: bool) -> zbus::Result<()>;
}

View File

@@ -23,7 +23,7 @@
use std::collections::BTreeMap;
use rog_aura::advanced::UsbPackets;
use rog_aura::usb::AuraPowerDev;
use rog_aura::usb::{AuraDevice, AuraPowerDev};
use rog_aura::{AuraEffect, AuraModeNum, LedBrightness};
use zbus::blocking::Connection;
use zbus::{dbus_proxy, Result};
@@ -32,66 +32,63 @@ const BLOCKING_TIME: u64 = 33; // 100ms = 10 FPS, max 50ms = 20 FPS, 40ms = 25 F
#[dbus_proxy(
interface = "org.asuslinux.Daemon",
default_service = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/Aura"
)]
trait Led {
/// NextLedMode method
fn next_led_mode(&self) -> zbus::Result<()>;
trait Aura {
/// AllModeData method
fn all_mode_data(&self) -> zbus::Result<BTreeMap<AuraModeNum, AuraEffect>>;
/// PrevLedMode method
fn prev_led_mode(&self) -> zbus::Result<()>;
/// DirectAddressingRaw method
fn direct_addressing_raw(&self, data: UsbPackets) -> zbus::Result<()>;
/// Toggle to next led brightness
fn next_led_brightness(&self) -> zbus::Result<()>;
/// Toggle to previous led brightness
fn prev_led_brightness(&self) -> zbus::Result<()>;
/// SetBrightness method
fn set_brightness(&self, brightness: LedBrightness) -> zbus::Result<()>;
/// SetLedMode method
fn set_led_mode(&self, effect: &AuraEffect) -> zbus::Result<()>;
fn set_led_power(&self, options: AuraPowerDev, enabled: bool) -> zbus::Result<()>;
/// On machine that have some form of either per-key keyboard or per-zone
/// this can be used to write custom effects over dbus. The input is a
/// nested `Vec<Vec<8>>` where `Vec<u8>` is a raw USB packet
fn direct_addressing_raw(&self, data: UsbPackets) -> zbus::fdo::Result<()>;
/// NotifyLed signal
#[dbus_proxy(signal)]
fn notify_led(&self, data: AuraEffect) -> zbus::Result<()>;
#[dbus_proxy(signal)]
fn notify_power_states(&self, data: AuraPowerDev) -> zbus::Result<()>;
/// LedBrightness property
/// Brightness property
#[dbus_proxy(property)]
fn led_brightness(&self) -> zbus::Result<i16>;
fn brightness(&self) -> zbus::Result<LedBrightness>;
#[dbus_proxy(property)]
fn set_brightness(&self, value: LedBrightness) -> zbus::Result<()>;
/// DeviceType property
#[dbus_proxy(property)]
fn device_type(&self) -> zbus::Result<AuraDevice>;
/// LedMode property
#[dbus_proxy(property)]
fn led_mode(&self) -> zbus::Result<AuraModeNum>;
#[dbus_proxy(property)]
fn set_led_mode(&self, value: AuraModeNum) -> zbus::Result<()>;
/// LedModes property
fn led_modes(&self) -> zbus::Result<BTreeMap<AuraModeNum, AuraEffect>>;
/// LedModeData property
#[dbus_proxy(property)]
fn led_mode_data(&self) -> zbus::Result<AuraEffect>;
#[dbus_proxy(property)]
fn set_led_mode_data(&self, value: AuraEffect) -> zbus::Result<()>;
// As property doesn't work for AuraPowerDev (complexity of serialization?)
// #[dbus_proxy(property)]
/// LedPower property
#[dbus_proxy(property)]
fn led_power(&self) -> zbus::Result<AuraPowerDev>;
#[dbus_proxy(property)]
fn set_led_power(&self, value: (AuraPowerDev, bool)) -> zbus::Result<()>;
/// SupportedBrightness property
#[dbus_proxy(property)]
fn supported_brightness(&self) -> zbus::Result<Vec<LedBrightness>>;
/// SupportedModes property
#[dbus_proxy(property)]
fn supported_modes(&self) -> zbus::Result<Vec<AuraModeNum>>;
}
pub struct LedProxyPerkey<'a>(LedProxyBlocking<'a>);
pub struct AuraProxyPerkey<'a>(AuraProxyBlocking<'a>);
impl<'a> LedProxyPerkey<'a> {
impl<'a> AuraProxyPerkey<'a> {
#[inline]
pub fn new(conn: &Connection) -> Result<Self> {
Ok(LedProxyPerkey(LedProxyBlocking::new(conn)?))
Ok(AuraProxyPerkey(AuraProxyBlocking::new(conn)?))
}
#[inline]
pub fn proxy(&self) -> &LedProxyBlocking<'a> {
pub fn proxy(&self) -> &AuraProxyBlocking<'a> {
&self.0
}

View File

@@ -20,62 +20,43 @@
//!
//! …consequently `zbus-xmlgen` did not generate code for the above interfaces.
use rog_platform::platform::PlatformPolicy;
use rog_profiles::fan_curve_set::CurveData;
use rog_profiles::{FanCurvePU, Profile};
use rog_profiles::FanCurvePU;
use zbus::dbus_proxy;
#[dbus_proxy(
interface = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/Profile"
default_service = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/FanCurves"
)]
trait Profile {
/// Get the fan-curve data for the currently active Profile
fn fan_curve_data(&self, profile: Profile) -> zbus::Result<Vec<CurveData>>;
trait FanCurves {
/// Get the fan-curve data for the currently active PlatformProfile
fn fan_curve_data(&self, profile: PlatformPolicy) -> zbus::Result<Vec<CurveData>>;
/// Fetch the active profile name
fn active_profile(&self) -> zbus::Result<Profile>;
/// Reset the stored (self) and device curve to the defaults of the
/// platform.
///
/// Each platform_profile has a different default and the defualt can be
/// read only for the currently active profile.
fn reset_profile_curves(&self, profile: PlatformPolicy) -> zbus::fdo::Result<()>;
/// Toggle to next platform_profile. Names provided by `Profiles`.
/// If fan-curves are supported will also activate a fan curve for profile.
fn next_profile(&self) -> zbus::Result<()>;
/// SetActiveCurveToDefaults method
fn set_active_curve_to_defaults(&self) -> zbus::Result<()>;
/// Fetch profile names
fn profiles(&self) -> zbus::Result<Vec<Profile>>;
/// Set this platform_profile name as active
fn set_active_profile(&self, profile: Profile) -> zbus::Result<()>;
/// Set the fan curve for the specified profile, or the profile the user is
/// currently in if profile == None. Will also activate the fan curve.
fn set_fan_curve(&self, profile: PlatformPolicy, curve: CurveData) -> zbus::Result<()>;
/// Set a profile fan curve enabled status. Will also activate a fan curve.
fn set_fan_curves_enabled(&self, profile: Profile, enabled: bool) -> zbus::Result<()>;
fn set_fan_curves_enabled(&self, profile: PlatformPolicy, enabled: bool) -> zbus::Result<()>;
/// Set a single fan curve for a profile to enabled status. Will also
/// activate a fan curve.
async fn set_profile_fan_curve_enabled(
&self,
profile: Profile,
profile: PlatformPolicy,
fan: FanCurvePU,
enabled: bool,
) -> zbus::Result<()>;
/// Set the fan curve for the specified profile, or the profile the user is
/// currently in if profile == None. Will also activate the fan curve.
fn set_fan_curve(&self, profile: Profile, curve: CurveData) -> zbus::Result<()>;
/// Reset the stored (self) and device curve to the defaults of the
/// platform.
///
/// Each platform_profile has a different default and the defualt can be
/// read only for the currently active profile.
fn set_active_curve_to_defaults(&self) -> zbus::Result<()>;
/// Reset the stored (self) and device curve to the defaults of the
/// platform.
///
/// Each platform_profile has a different default and the defualt can be
/// read only for the currently active profile.
fn reset_profile_curves(&self, profile: Profile) -> zbus::fdo::Result<()>;
/// NotifyProfile signal
#[dbus_proxy(signal)]
async fn notify_profile(&self, profile: Profile) -> zbus::Result<Profile>;
}

View File

@@ -20,16 +20,29 @@
//!
//! …consequently `zbus-xmlgen` did not generate code for the above interfaces.
use rog_platform::platform::GpuMode;
use rog_platform::platform::{GpuMode, PlatformPolicy, Properties};
use zbus::dbus_proxy;
#[dbus_proxy(
interface = "org.asuslinux.Daemon",
default_service = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/Platform"
)]
trait RogBios {
trait Platform {
/// NextThrottleThermalPolicy method
fn next_throttle_thermal_policy(&self) -> zbus::Result<()>;
/// SupportedInterfaces method
fn supported_interfaces(&self) -> zbus::Result<Vec<String>>;
/// SupportedProperties method
fn supported_properties(&self) -> zbus::Result<Vec<String>>;
fn supported_properties(&self) -> zbus::Result<Vec<Properties>>;
/// ChargeControlEndThreshold property
#[dbus_proxy(property)]
fn charge_control_end_threshold(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_charge_control_end_threshold(&self, value: u8) -> zbus::Result<()>;
/// DgpuDisable property
#[dbus_proxy(property)]
@@ -42,55 +55,72 @@ trait RogBios {
/// GpuMuxMode property
#[dbus_proxy(property)]
fn gpu_mux_mode(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_gpu_mux_mode(&self, value: GpuMode) -> zbus::Result<()>;
/// MiniLedMode property
#[dbus_proxy(property)]
fn mini_led_mode(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_mini_led_mode(&self, value: bool) -> zbus::Result<()>;
/// NvDynamicBoost property
#[dbus_proxy(property)]
fn nv_dynamic_boost(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_nv_dynamic_boost(&self, value: u8) -> zbus::Result<()>;
/// NvTempTarget property
#[dbus_proxy(property)]
fn nv_temp_target(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_nv_temp_target(&self, value: u8) -> zbus::Result<()>;
/// PanelOd property
#[dbus_proxy(property)]
fn panel_od(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_panel_od(&self, value: bool) -> zbus::Result<()>;
/// PostAnimationSound property
#[dbus_proxy(property)]
fn post_animation_sound(&self) -> zbus::Result<bool>;
#[dbus_proxy(property)]
fn set_post_animation_sound(&self, value: bool) -> zbus::Result<()>;
/// PptApuSppt property
#[dbus_proxy(property)]
fn ppt_apu_sppt(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_ppt_apu_sppt(&self, value: u8) -> zbus::Result<()>;
/// PptFppt property
#[dbus_proxy(property)]
fn ppt_fppt(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_ppt_fppt(&self, value: u8) -> zbus::Result<()>;
/// PptPl1Spl property
#[dbus_proxy(property)]
fn ppt_pl1_spl(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_ppt_pl1_spl(&self, value: u8) -> zbus::Result<()>;
/// PptPl2Sppt property
#[dbus_proxy(property)]
fn ppt_pl2_sppt(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_ppt_pl2_sppt(&self, value: u8) -> zbus::Result<()>;
/// PptPlatformSppt property
#[dbus_proxy(property)]
fn ppt_platform_sppt(&self) -> zbus::Result<u8>;
#[dbus_proxy(property)]
fn set_ppt_platform_sppt(&self, value: u8) -> zbus::Result<()>;
/// PlatformPolicy property
#[dbus_proxy(property)]
fn throttle_thermal_policy(&self) -> zbus::Result<PlatformPolicy>;
#[dbus_proxy(property)]
fn set_throttle_thermal_policy(&self, value: PlatformPolicy) -> zbus::Result<()>;
}

View File

@@ -1,46 +0,0 @@
//! # `DBus` interface proxy for: `org.asuslinux.Daemon`
//!
//! This code was generated by `zbus-xmlgen` `1.0.0` from `DBus` introspection
//! data. Source: `Interface '/org/asuslinux/Charge' from service
//! 'org.asuslinux.Daemon' on system bus`.
//!
//! You may prefer to adapt it, instead of using it verbatim.
//!
//! More information can be found in the
//! [Writing a client proxy](https://zeenix.pages.freedesktop.org/zbus/client.html)
//! section of the zbus documentation.
//!
//! This `DBus` object implements
//! [standard `DBus` interfaces](https://dbus.freedesktop.org/doc/dbus-specification.html),
//! (`org.freedesktop.DBus.*`) for which the following zbus proxies can be used:
//!
//! * [`zbus::fdo::PropertiesProxy`]
//! * [`zbus::fdo::PeerProxy`]
//! * [`zbus::fdo::IntrospectableProxy`]
//!
//! …consequently `zbus-xmlgen` did not generate code for the above interfaces.
use zbus::dbus_proxy;
#[dbus_proxy(
interface = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/Power"
)]
trait Power {
/// charge_control_end_threshold method
fn charge_control_end_threshold(&self) -> zbus::Result<u8>;
/// MainsOnline method
fn mains_online(&self) -> zbus::Result<bool>;
/// set_charge_control_end_threshold method
fn set_charge_control_end_threshold(&self, limit: u8) -> zbus::Result<()>;
/// NotifyCharge signal
#[dbus_proxy(signal)]
fn notify_charge_control_end_threshold(&self, limit: u8) -> zbus::Result<u8>;
/// NotifyMainsOnline signal
#[dbus_proxy(signal)]
fn notify_mains_online(&self, on: bool) -> zbus::Result<()>;
}

View File

@@ -1,33 +0,0 @@
//! # `DBus` interface proxy for: `org.asuslinux.Daemon`
//!
//! This code was generated by `zbus-xmlgen` `1.0.0` from `DBus` introspection
//! data. Source: `Interface '/org/asuslinux/Supported' from service
//! 'org.asuslinux.Daemon' on system bus`.
//!
//! You may prefer to adapt it, instead of using it verbatim.
//!
//! More information can be found in the
//! [Writing a client proxy](https://zeenix.pages.freedesktop.org/zbus/client.html)
//! section of the zbus documentation.
//!
//! This `DBus` object implements
//! [standard `DBus` interfaces](https://dbus.freedesktop.org/doc/dbus-specification.html),
//! (`org.freedesktop.DBus.*`) for which the following zbus proxies can be used:
//!
//! * [`zbus::fdo::PeerProxy`]
//! * [`zbus::fdo::PropertiesProxy`]
//! * [`zbus::fdo::IntrospectableProxy`]
//!
//! …consequently `zbus-xmlgen` did not generate code for the above interfaces.
use rog_platform::supported::SupportedFunctions;
use zbus::dbus_proxy;
#[dbus_proxy(
interface = "org.asuslinux.Daemon",
default_path = "/org/asuslinux/Supported"
)]
trait Supported {
/// SupportedFunctions method
fn supported_functions(&self) -> zbus::Result<SupportedFunctions>;
}