diff --git a/asus-nb-ctrl/src/ctrl_leds.rs b/asus-nb-ctrl/src/ctrl_leds.rs index 35f02ad9..4f63be9a 100644 --- a/asus-nb-ctrl/src/ctrl_leds.rs +++ b/asus-nb-ctrl/src/ctrl_leds.rs @@ -152,7 +152,12 @@ impl crate::CtrlTask for CtrlKbdBacklight { let mut file = OpenOptions::new() .read(true) .open(&self.bright_node) - .map_err(|err| RogError::Path((&self.bright_node).into(), err))?; + .map_err(|err| { + match err.kind() { + std::io::ErrorKind::NotFound => RogError::MissingLedBrightNode((&self.bright_node).into(), err), + _ => RogError::Path((&self.bright_node).into(), err), + } + })?; let mut buf = [0u8; 1]; file.read_exact(&mut buf) .map_err(|err| RogError::Read("buffer".into(), err))?; diff --git a/asus-nb-ctrl/src/error.rs b/asus-nb-ctrl/src/error.rs index 2309292f..6bdaa8f3 100644 --- a/asus-nb-ctrl/src/error.rs +++ b/asus-nb-ctrl/src/error.rs @@ -1,7 +1,7 @@ -use std::fmt; -use std::convert::From; use intel_pstate::PStateError; use rog_fan_curve::CurveError; +use std::convert::From; +use std::fmt; #[derive(Debug)] pub enum RogError { @@ -19,6 +19,7 @@ pub enum RogError { FanCurve(CurveError), DoTask(String), MissingFunction(String), + MissingLedBrightNode(String, std::io::Error), } impl fmt::Display for RogError { @@ -39,6 +40,7 @@ impl fmt::Display for RogError { RogError::FanCurve(err) => write!(f, "Custom fan-curve error: {}", err), RogError::DoTask(deets) => write!(f, "Task error: {}", deets), RogError::MissingFunction(deets) => write!(f, "Missing functionality: {}", deets), + RogError::MissingLedBrightNode(path, error) => write!(f, "Led node at {} is missing, please check you have the required patch or dkms module installed: {}", path, error), } } } @@ -55,4 +57,4 @@ impl From for RogError { fn from(err: CurveError) -> Self { RogError::FanCurve(err) } -} \ No newline at end of file +}