forked from NG-SD-Plugins/PowerTools
Update to sysfuss v0.3, sort of fix #156
This commit is contained in:
parent
29211b4762
commit
d4377872aa
8 changed files with 30 additions and 25 deletions
8
backend/Cargo.lock
generated
8
backend/Cargo.lock
generated
|
@ -1170,7 +1170,7 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "powertools"
|
name = "powertools"
|
||||||
version = "2.0.2-alpha1"
|
version = "2.0.3-alpha1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
@ -1481,7 +1481,7 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "smokepatio"
|
name = "smokepatio"
|
||||||
version = "0.1.0"
|
version = "0.2.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"embedded-io",
|
"embedded-io",
|
||||||
"log",
|
"log",
|
||||||
|
@ -1538,9 +1538,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sysfuss"
|
name = "sysfuss"
|
||||||
version = "0.2.0"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4fa4dd5879b3fd41aff63991a59970cdfeced6f0d5920c5da0937279904d9f45"
|
checksum = "f33bae529511a671b5f2ed4cc46ae0b2ccdf8c03ccf7eebe95a5a886ff7914dc"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "termcolor"
|
name = "termcolor"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "powertools"
|
name = "powertools"
|
||||||
version = "2.0.2-alpha1"
|
version = "2.0.3-alpha1"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
authors = ["NGnius (Graham) <ngniusness@gmail.com>"]
|
authors = ["NGnius (Graham) <ngniusness@gmail.com>"]
|
||||||
description = "Backend (superuser) functionality for PowerTools"
|
description = "Backend (superuser) functionality for PowerTools"
|
||||||
|
@ -16,7 +16,7 @@ usdpl-back = { version = "0.10.1", features = ["blocking", "decky"] }#, path = "
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
ron = "0.8"
|
ron = "0.8"
|
||||||
sysfuss = { version = "0.2", features = ["derive"] }#,path = "../../sysfs-nav"}
|
sysfuss = { version = "0.3", features = ["derive"] }#,path = "../../sysfs-nav"}
|
||||||
|
|
||||||
# async
|
# async
|
||||||
tokio = { version = "*", features = ["time"] }
|
tokio = { version = "*", features = ["time"] }
|
||||||
|
@ -31,7 +31,7 @@ limits_core = { version = "3", path = "./limits_core" }
|
||||||
regex = "1"
|
regex = "1"
|
||||||
|
|
||||||
# steam deck libs
|
# steam deck libs
|
||||||
smokepatio = { version = "0.1", features = [ "std" ], path = "../../smokepatio" }
|
smokepatio = { version = "0.2", default-features = false, path = "../../smokepatio" }
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
|
|
||||||
# online settings
|
# online settings
|
||||||
|
|
|
@ -34,8 +34,8 @@ impl GenericBatteryLimit {
|
||||||
fn default_steam_deck() -> Self {
|
fn default_steam_deck() -> Self {
|
||||||
Self {
|
Self {
|
||||||
charge_rate: Some(RangeLimit {
|
charge_rate: Some(RangeLimit {
|
||||||
min: Some(250),
|
min: Some(0),
|
||||||
max: Some(2500),
|
max: Some(100),
|
||||||
}),
|
}),
|
||||||
charge_modes: vec![
|
charge_modes: vec![
|
||||||
"normal".to_owned(),
|
"normal".to_owned(),
|
||||||
|
|
|
@ -4,7 +4,7 @@ use std::sync::{Arc, Mutex};
|
||||||
use sysfuss::capability::attributes;
|
use sysfuss::capability::attributes;
|
||||||
use sysfuss::{
|
use sysfuss::{
|
||||||
HwMonAttribute, HwMonAttributeItem, HwMonAttributeType, HwMonPath, PowerSupplyAttribute,
|
HwMonAttribute, HwMonAttributeItem, HwMonAttributeType, HwMonPath, PowerSupplyAttribute,
|
||||||
PowerSupplyPath, SysAttribute, SysEntity, SysEntityAttributesExt,
|
PowerSupplyPath, SysEntity, SysEntityAttributesExt, SysAttributeExt,
|
||||||
};
|
};
|
||||||
|
|
||||||
use limits_core::json_v2::GenericBatteryLimit;
|
use limits_core::json_v2::GenericBatteryLimit;
|
||||||
|
@ -230,12 +230,12 @@ const HWMON_NEEDS: &[HwMonAttribute] = &[
|
||||||
];
|
];
|
||||||
|
|
||||||
const MAX_BATTERY_CHARGE_RATE_ATTR: HwMonAttribute =
|
const MAX_BATTERY_CHARGE_RATE_ATTR: HwMonAttribute =
|
||||||
HwMonAttribute::custom("maximum_battery_charge_rate");
|
HwMonAttribute::custom("max_battery_charge_rate");
|
||||||
const MAX_BATTERY_CHARGE_LEVEL_ATTR: HwMonAttribute =
|
const MAX_BATTERY_CHARGE_LEVEL_ATTR: HwMonAttribute =
|
||||||
HwMonAttribute::custom("max_battery_charge_level");
|
HwMonAttribute::custom("max_battery_charge_level");
|
||||||
|
|
||||||
const MAX_CHARGE_RATE: u64 = 2500;
|
const MAX_CHARGE_RATE: u64 = 100;
|
||||||
const MIN_CHARGE_RATE: u64 = 250;
|
const MIN_CHARGE_RATE: u64 = 0;
|
||||||
|
|
||||||
impl Battery {
|
impl Battery {
|
||||||
fn find_battery_sysfs(root: Option<impl AsRef<std::path::Path>>) -> PowerSupplyPath {
|
fn find_battery_sysfs(root: Option<impl AsRef<std::path::Path>>) -> PowerSupplyPath {
|
||||||
|
@ -325,7 +325,7 @@ impl Battery {
|
||||||
self.state.charge_rate_set = true;
|
self.state.charge_rate_set = true;
|
||||||
let path = MAX_BATTERY_CHARGE_RATE_ATTR.path(&*self.sysfs_hwmon);
|
let path = MAX_BATTERY_CHARGE_RATE_ATTR.path(&*self.sysfs_hwmon);
|
||||||
self.sysfs_hwmon
|
self.sysfs_hwmon
|
||||||
.set(MAX_BATTERY_CHARGE_RATE_ATTR, charge_rate)
|
.set(MAX_BATTERY_CHARGE_RATE_ATTR, format!("{}\n", charge_rate))
|
||||||
.map_err(|e| SettingError {
|
.map_err(|e| SettingError {
|
||||||
msg: format!("Failed to write to `{}`: {}", path.display(), e),
|
msg: format!("Failed to write to `{}`: {}", path.display(), e),
|
||||||
setting: crate::settings::SettingVariant::Battery,
|
setting: crate::settings::SettingVariant::Battery,
|
||||||
|
@ -336,10 +336,10 @@ impl Battery {
|
||||||
self.sysfs_hwmon
|
self.sysfs_hwmon
|
||||||
.set(
|
.set(
|
||||||
MAX_BATTERY_CHARGE_RATE_ATTR,
|
MAX_BATTERY_CHARGE_RATE_ATTR,
|
||||||
self.limits
|
format!("{}\n", self.limits
|
||||||
.charge_rate
|
.charge_rate
|
||||||
.and_then(|lim| lim.max)
|
.and_then(|lim| lim.max)
|
||||||
.unwrap_or(2500),
|
.unwrap_or(100)),
|
||||||
)
|
)
|
||||||
.map_err(|e| SettingError {
|
.map_err(|e| SettingError {
|
||||||
msg: format!("Failed to write to `{}`: {}", path.display(), e),
|
msg: format!("Failed to write to `{}`: {}", path.display(), e),
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
use std::convert::Into;
|
use std::convert::Into;
|
||||||
|
|
||||||
use sysfuss::{
|
use sysfuss::{
|
||||||
capability::attributes, BasicEntityPath, HwMonPath, SysAttribute, SysEntity,
|
capability::attributes, BasicEntityPath, HwMonPath, SysEntity, SysEntityAttributesExt, SysAttributeExt,
|
||||||
SysEntityAttributes, SysEntityAttributesExt,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
use limits_core::json_v2::GenericGpuLimit;
|
use limits_core::json_v2::GenericGpuLimit;
|
||||||
|
@ -151,7 +150,7 @@ impl Gpu {
|
||||||
if let super::Model::OLED = self.variant {
|
if let super::Model::OLED = self.variant {
|
||||||
if let Ok(f) = self
|
if let Ok(f) = self
|
||||||
.sysfs_card
|
.sysfs_card
|
||||||
.read_value(GPU_CLOCK_READOUT_ATTRIBUTE.to_owned())
|
.read_value(&GPU_CLOCK_READOUT_ATTRIBUTE.to_owned())
|
||||||
{
|
{
|
||||||
let options = parse_pp_dpm_sclk(&String::from_utf8_lossy(&f));
|
let options = parse_pp_dpm_sclk(&String::from_utf8_lossy(&f));
|
||||||
return options
|
return options
|
||||||
|
@ -192,7 +191,7 @@ impl Gpu {
|
||||||
fn quantize_memory_clock(&self, clock: u64) -> u64 {
|
fn quantize_memory_clock(&self, clock: u64) -> u64 {
|
||||||
if let Ok(f) = self
|
if let Ok(f) = self
|
||||||
.sysfs_card
|
.sysfs_card
|
||||||
.read_value(GPU_MEMORY_DOWNCLOCK_ATTRIBUTE.to_owned())
|
.read_value(&GPU_MEMORY_DOWNCLOCK_ATTRIBUTE.to_owned())
|
||||||
{
|
{
|
||||||
let options = parse_pp_dpm_fclk(&String::from_utf8_lossy(&f));
|
let options = parse_pp_dpm_fclk(&String::from_utf8_lossy(&f));
|
||||||
// round (and find) nearest valid clock step
|
// round (and find) nearest valid clock step
|
||||||
|
@ -238,7 +237,7 @@ impl Gpu {
|
||||||
{
|
{
|
||||||
let options_count = self
|
let options_count = self
|
||||||
.sysfs_card
|
.sysfs_card
|
||||||
.read_value(GPU_MEMORY_DOWNCLOCK_ATTRIBUTE.to_owned())
|
.read_value(&GPU_MEMORY_DOWNCLOCK_ATTRIBUTE.to_owned())
|
||||||
.map(|b| parse_pp_dpm_fclk(&String::from_utf8_lossy(&b)).len())
|
.map(|b| parse_pp_dpm_fclk(&String::from_utf8_lossy(&b)).len())
|
||||||
.unwrap_or_else(|_| if is_oled { 4 } else { 2 });
|
.unwrap_or_else(|_| if is_oled { 4 } else { 2 });
|
||||||
let modifier = (options_count - 1) as u64;
|
let modifier = (options_count - 1) as u64;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
use std::sync::atomic::{AtomicU64, Ordering};
|
use std::sync::atomic::{AtomicU64, Ordering};
|
||||||
|
|
||||||
use sysfuss::{BasicEntityPath, SysAttribute, SysEntityAttributesExt};
|
use sysfuss::{BasicEntityPath, SysEntityAttributesExt, SysAttributeExt};
|
||||||
|
|
||||||
use crate::settings::SettingError;
|
use crate::settings::SettingError;
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
|
|
||||||
|
use std::sync::Mutex;
|
||||||
|
|
||||||
pub const JUPITER_HWMON_NAME: &'static str = "jupiter";
|
pub const JUPITER_HWMON_NAME: &'static str = "jupiter";
|
||||||
pub const STEAMDECK_HWMON_NAME: &'static str = "steamdeck_hwmon";
|
pub const STEAMDECK_HWMON_NAME: &'static str = "steamdeck_hwmon";
|
||||||
pub const GPU_HWMON_NAME: &'static str = "amdgpu";
|
pub const GPU_HWMON_NAME: &'static str = "amdgpu";
|
||||||
|
|
||||||
|
pub static THING_EC: Mutex<smokepatio::ec::unnamed_power::UnnamedPowerEC> = Mutex::new(smokepatio::ec::unnamed_power::UnnamedPowerEC::new());
|
||||||
|
|
||||||
pub fn range_min_or_fallback<I: Copy>(
|
pub fn range_min_or_fallback<I: Copy>(
|
||||||
range: &Option<limits_core::json_v2::RangeLimit<I>>,
|
range: &Option<limits_core::json_v2::RangeLimit<I>>,
|
||||||
fallback: I,
|
fallback: I,
|
||||||
|
@ -25,6 +29,7 @@ pub fn card_also_has(card: &dyn sysfuss::SysEntity, extensions: &'static [&'stat
|
||||||
}
|
}
|
||||||
|
|
||||||
const THINGS: &[u8] = &[
|
const THINGS: &[u8] = &[
|
||||||
|
0, 0, 0,
|
||||||
1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
|
1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0,
|
||||||
0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1,
|
0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 1,
|
||||||
1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,
|
1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0,
|
||||||
|
@ -35,13 +40,14 @@ const TIME_UNIT: std::time::Duration = std::time::Duration::from_millis(250);
|
||||||
|
|
||||||
pub fn flash_led() {
|
pub fn flash_led() {
|
||||||
use smokepatio::ec::ControllerSet;
|
use smokepatio::ec::ControllerSet;
|
||||||
let mut ec = smokepatio::ec::unnamed_power::UnnamedPowerEC::new();
|
|
||||||
|
let mut ec = THING_EC.lock().unwrap();
|
||||||
for &code in THINGS {
|
for &code in THINGS {
|
||||||
let on = code != 0;
|
let on = code != 0;
|
||||||
let colour = if on {
|
let colour = if on {
|
||||||
smokepatio::ec::unnamed_power::StaticColour::Red
|
smokepatio::ec::unnamed_power::StaticColour::Red
|
||||||
} else {
|
} else {
|
||||||
smokepatio::ec::unnamed_power::StaticColour::Off
|
smokepatio::ec::unnamed_power::StaticColour::Disabled
|
||||||
};
|
};
|
||||||
if let Err(e) = ec.set(colour) {
|
if let Err(e) = ec.set(colour) {
|
||||||
log::error!("Thing err: {}", e);
|
log::error!("Thing err: {}", e);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "PowerTools",
|
"name": "PowerTools",
|
||||||
"version": "2.0.2-alpha1",
|
"version": "2.0.3-alpha1",
|
||||||
"description": "Power tweaks for power users",
|
"description": "Power tweaks for power users",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "shx rm -rf dist && rollup -c",
|
"build": "shx rm -rf dist && rollup -c",
|
||||||
|
|
Loading…
Reference in a new issue