From f31d76ea53bdeee14913c76c7e1a55feceb78ec1 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 20 Feb 2025 18:32:03 -0800 Subject: [PATCH] hardware: Refactor device detection to be more future-proof --- src/hardware.rs | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/hardware.rs b/src/hardware.rs index 671a441..01cfd67 100644 --- a/src/hardware.rs +++ b/src/hardware.rs @@ -77,17 +77,20 @@ pub(crate) async fn steam_deck_variant() -> Result { } pub(crate) async fn device_type() -> Result { - if variant().await? != SteamDeckVariant::Unknown { - return Ok(DeviceType::SteamDeck); - } - let board_vendor = fs::read_to_string(path(SYS_VENDOR_PATH)).await?; - if board_vendor.trim_end() == "LENOVO" { - let product_name = fs::read_to_string(path(PRODUCT_NAME_PATH)).await?; - if ["83L3", "83N6", "83Q2", "83Q3"].contains(&product_name.trim_end()) { - return Ok(DeviceType::LegionGoS); - } - } - Ok(DeviceType::Unknown) + let sys_vendor = fs::read_to_string(path(SYS_VENDOR_PATH)).await?; + let product_name = fs::read_to_string(path(PRODUCT_NAME_PATH)).await?; + let board_name = fs::read_to_string(path(BOARD_NAME_PATH)).await?; + Ok( + match ( + sys_vendor.trim_end(), + product_name.trim_end(), + board_name.trim_end(), + ) { + ("LENOVO", "83L3" | "83N6" | "83Q2" | "83Q3", _) => DeviceType::LegionGoS, + ("Valve", _, "Jupiter" | "Galileo") => DeviceType::SteamDeck, + _ => DeviceType::Unknown, + }, + ) } pub(crate) struct FanControl { @@ -175,10 +178,12 @@ pub mod test { SteamDeckVariant::Jupiter => { write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?; write(crate::path(BOARD_NAME_PATH), "Jupiter\n").await?; + write(crate::path(PRODUCT_NAME_PATH), "Jupiter\n").await?; } SteamDeckVariant::Galileo => { write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?; write(crate::path(BOARD_NAME_PATH), "Galileo\n").await?; + write(crate::path(PRODUCT_NAME_PATH), "Galileo\n").await?; } } Ok(())