hardware: Refactor device detection to be more future-proof

This commit is contained in:
Vicki Pfau 2025-02-20 18:32:03 -08:00
parent 7d8bd602a7
commit f31d76ea53

View file

@ -77,17 +77,20 @@ pub(crate) async fn steam_deck_variant() -> Result<SteamDeckVariant> {
} }
pub(crate) async fn device_type() -> Result<DeviceType> { pub(crate) async fn device_type() -> Result<DeviceType> {
if variant().await? != SteamDeckVariant::Unknown { let sys_vendor = fs::read_to_string(path(SYS_VENDOR_PATH)).await?;
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?; let product_name = fs::read_to_string(path(PRODUCT_NAME_PATH)).await?;
if ["83L3", "83N6", "83Q2", "83Q3"].contains(&product_name.trim_end()) { let board_name = fs::read_to_string(path(BOARD_NAME_PATH)).await?;
return Ok(DeviceType::LegionGoS); Ok(
} match (
} sys_vendor.trim_end(),
Ok(DeviceType::Unknown) 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 { pub(crate) struct FanControl {
@ -175,10 +178,12 @@ pub mod test {
SteamDeckVariant::Jupiter => { SteamDeckVariant::Jupiter => {
write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?; write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?;
write(crate::path(BOARD_NAME_PATH), "Jupiter\n").await?; write(crate::path(BOARD_NAME_PATH), "Jupiter\n").await?;
write(crate::path(PRODUCT_NAME_PATH), "Jupiter\n").await?;
} }
SteamDeckVariant::Galileo => { SteamDeckVariant::Galileo => {
write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?; write(crate::path(SYS_VENDOR_PATH), "Valve\n").await?;
write(crate::path(BOARD_NAME_PATH), "Galileo\n").await?; write(crate::path(BOARD_NAME_PATH), "Galileo\n").await?;
write(crate::path(PRODUCT_NAME_PATH), "Galileo\n").await?;
} }
} }
Ok(()) Ok(())