From d7b391b43221156a06ca8010627b1f8717496543 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 13 May 2024 16:43:42 -0700 Subject: [PATCH] cec: Add HdmiCecState::from_str --- src/cec.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/cec.rs b/src/cec.rs index 9372f35..8d4c875 100644 --- a/src/cec.rs +++ b/src/cec.rs @@ -6,8 +6,9 @@ * SPDX-License-Identifier: MIT */ -use anyhow::Result; +use anyhow::{bail, Error, Result}; use std::fmt; +use std::str::FromStr; use zbus::Connection; use crate::systemd::{daemon_reload, EnableState, SystemdUnit}; @@ -31,6 +32,18 @@ impl TryFrom for HdmiCecState { } } +impl FromStr for HdmiCecState { + type Err = Error; + fn from_str(input: &str) -> Result { + Ok(match input { + "disable" | "disabled" | "off" => HdmiCecState::Disabled, + "control-only" | "ControlOnly" => HdmiCecState::ControlOnly, + "control-wake" | "control-and-wake" | "ControlAndWake" => HdmiCecState::ControlAndWake, + v => bail!("No enum match for value {v}"), + }) + } +} + impl fmt::Display for HdmiCecState { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { @@ -41,7 +54,7 @@ impl fmt::Display for HdmiCecState { } } -pub struct HdmiCecControl<'dbus> { +pub(crate) struct HdmiCecControl<'dbus> { plasma_rc_unit: SystemdUnit<'dbus>, wakehook_unit: SystemdUnit<'dbus>, connection: Connection,