phodevi: Various fixes
This commit is contained in:
@@ -817,6 +817,9 @@ class phodevi_cpu extends phodevi_device_interface
|
||||
case '0xd84':
|
||||
$new_info .= ' Neoverse-V3';
|
||||
break;
|
||||
case '0xd85':
|
||||
$new_info .= ' Cortex-X925';
|
||||
break;
|
||||
case '0xd88':
|
||||
$new_info .= ' Cortex-A520E';
|
||||
break;
|
||||
|
||||
@@ -341,8 +341,11 @@ class phodevi_gpu extends phodevi_device_interface
|
||||
// First try reading "current" screen 0 as it should better handle multiple monitors, etc.
|
||||
// e.g. Screen 0: minimum 1 x 1, current 2560 x 1341, maximum 8192 x 8192
|
||||
$info = shell_exec('xrandr 2>&1');
|
||||
$info = substr($info, strpos($info, 'current ') + 8);
|
||||
$info = explode(' x ', trim(substr($info, 0, strpos($info, ','))));
|
||||
if(!empty($info))
|
||||
{
|
||||
$info = substr($info, strpos($info, 'current ') + 8);
|
||||
$info = explode(' x ', trim(substr($info, 0, strpos($info, ','))));
|
||||
}
|
||||
|
||||
if(count($info) == 2 && is_numeric($info[0]) && is_numeric($info[1]))
|
||||
{
|
||||
|
||||
@@ -1406,16 +1406,6 @@ class phodevi_system extends phodevi_device_interface
|
||||
$desktop_version = pts_strings::last_in_string(trim(shell_exec('gnome-session --version 2> /dev/null')));
|
||||
}
|
||||
}
|
||||
else if(pts_client::is_process_running('unity-2d-panel') || $desktop_session == 'ubuntu-2d')
|
||||
{
|
||||
// Canonical / Ubuntu Unity 2D Desktop
|
||||
$desktop_environment = 'Unity 2D';
|
||||
|
||||
if(pts_client::executable_in_path('unity'))
|
||||
{
|
||||
$desktop_version = pts_strings::last_in_string(trim(shell_exec('unity --version 2> /dev/null')));
|
||||
}
|
||||
}
|
||||
else if(pts_client::is_process_running('unity-panel-service') || $desktop_session == 'ubuntu')
|
||||
{
|
||||
// Canonical / Ubuntu Unity Desktop
|
||||
@@ -1514,12 +1504,6 @@ class phodevi_system extends phodevi_device_interface
|
||||
$desktop_environment = 'LXDE';
|
||||
$desktop_version = $version;
|
||||
}
|
||||
else if(pts_client::is_process_running('lumina-desktop'))
|
||||
{
|
||||
// Lumina Desktop Environment
|
||||
$desktop_environment = 'Lumina';
|
||||
$desktop_version = str_replace('"', '', trim(shell_exec('lumina-desktop --version 2>&1')));
|
||||
}
|
||||
else if(pts_client::is_process_running('xfce4-session') || pts_client::is_process_running('xfce-mcs-manager') || $desktop_session == 'xfce')
|
||||
{
|
||||
// Xfce 4.x
|
||||
@@ -1532,12 +1516,6 @@ class phodevi_system extends phodevi_device_interface
|
||||
$desktop_version = substr($xfce_output, 0, strpos($xfce_output, ')'));
|
||||
}
|
||||
}
|
||||
else if(pts_client::is_process_running('sugar-session'))
|
||||
{
|
||||
// Sugar Desktop Environment (namely for OLPC)
|
||||
$desktop_environment = 'Sugar';
|
||||
$desktop_version = null; // TODO: where can the Sugar version be figured out?
|
||||
}
|
||||
else if(pts_client::is_process_running('openbox'))
|
||||
{
|
||||
$desktop_environment = 'Openbox';
|
||||
@@ -1564,16 +1542,6 @@ class phodevi_system extends phodevi_device_interface
|
||||
$desktop_environment = 'Enlightenment';
|
||||
$desktop_version = null; // No known -v / --version command on any Enlightenment component
|
||||
}
|
||||
else if(pts_client::is_process_running('consort-panel'))
|
||||
{
|
||||
$desktop_environment = 'Consort';
|
||||
$desktop_version = null; // TODO: Haven't tested Consort Desktop yet
|
||||
}
|
||||
else if(pts_client::is_process_running('razor-desktop'))
|
||||
{
|
||||
$desktop_environment = 'Razor-qt';
|
||||
$desktop_version = null; // TODO: Figure out how to determine razor version
|
||||
}
|
||||
else if(pts_client::is_process_running('icewm'))
|
||||
{
|
||||
$desktop_environment = 'IceWM';
|
||||
@@ -1585,6 +1553,15 @@ class phodevi_system extends phodevi_device_interface
|
||||
$desktop_environment = 'Budgie';
|
||||
$desktop_version = pts_strings::last_in_string(trim(shell_exec('budgie-desktop --version 2> /dev/null | grep desktop')));
|
||||
}
|
||||
else if(pts_client::is_process_running('cosmic-comp') && pts_client::is_process_running('cosmic-panel'))
|
||||
{
|
||||
// Pop OS COSMIC
|
||||
$desktop_environment = 'COSMIC';
|
||||
if(pts_client::executable_in_path('cosmic-launcher'))
|
||||
{
|
||||
$desktop_version = pts_strings::last_in_string(trim(shell_exec('cosmic-launcher -V 2> /dev/null')));
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($desktop_environment))
|
||||
{
|
||||
|
||||
@@ -33,7 +33,7 @@ class gpu_power extends phodevi_sensor
|
||||
public function read_sensor()
|
||||
{
|
||||
$gpu_power = -1;
|
||||
$en1_input_files = glob('/sys/class/drm/card0/device/hwmon/hwmon*/energy1_input');
|
||||
$en1_input_files = glob('/sys/class/drm/card*/device/hwmon/hwmon*/energy1_input');
|
||||
if(($nvidia_smi = pts_client::executable_in_path('nvidia-smi')))
|
||||
{
|
||||
$smi_output = shell_exec(escapeshellarg($nvidia_smi) . ' -q -d POWER');
|
||||
@@ -70,13 +70,13 @@ class gpu_power extends phodevi_sensor
|
||||
}
|
||||
}
|
||||
}
|
||||
else if($power1_average = phodevi_linux_parser::read_sysfs_node('/sys/class/drm/card0/device/hwmon/hwmon*/power1_average', 'POSITIVE_NUMERIC'))
|
||||
else if($power1_average = phodevi_linux_parser::read_sysfs_node('/sys/class/drm/card*/device/hwmon/hwmon*/power1_average', 'POSITIVE_NUMERIC'))
|
||||
{
|
||||
// AMDGPU path
|
||||
if(is_numeric($power1_average))
|
||||
{
|
||||
$power1_average = $power1_average / 1000000;
|
||||
if($power1_average > 1 && $power1_average < 600)
|
||||
if($power1_average > 0 && $power1_average < 900)
|
||||
{
|
||||
self::$unit = 'Watts';
|
||||
$gpu_power = $power1_average;
|
||||
|
||||
@@ -78,11 +78,12 @@ class sys_power extends phodevi_sensor
|
||||
}
|
||||
if(pts_client::executable_in_path('wattsup'))
|
||||
{
|
||||
$wattsup = self::watts_up_power_meter();
|
||||
$meters = false;
|
||||
$wattsup = self::watts_up_power_meter($meters);
|
||||
|
||||
if($wattsup > 0.5 && is_numeric($wattsup))
|
||||
{
|
||||
self::$wattsup_meter = true;
|
||||
self::$wattsup_meter = $meters;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -161,7 +162,7 @@ class sys_power extends phodevi_sensor
|
||||
}
|
||||
else if(self::$wattsup_meter)
|
||||
{
|
||||
return self::watts_up_power_meter();
|
||||
return self::watts_up_power_meter(self::$wattsup_meter);
|
||||
}
|
||||
else if(self::$tegra_power)
|
||||
{
|
||||
@@ -208,23 +209,44 @@ class sys_power extends phodevi_sensor
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
private static function watts_up_power_meter()
|
||||
private static function watts_up_power_meter(&$meters = false)
|
||||
{
|
||||
// Sometimes Wattsup have read failures returning 0....
|
||||
for($i = 0; $i < 3; $i++)
|
||||
if($meters == false)
|
||||
{
|
||||
$output = trim(shell_exec('wattsup -c 1 ttyUSB0 watts 2>&1'));
|
||||
$output = explode(PHP_EOL, $output);
|
||||
|
||||
do
|
||||
$meters = pts_file_io::glob('/dev/ttyUSB*');
|
||||
foreach($meters as &$meter)
|
||||
{
|
||||
$value = array_pop($output);
|
||||
$meter = basename($meter);
|
||||
}
|
||||
while(!is_numeric($value) && count($output) > 0);
|
||||
}
|
||||
|
||||
if(is_numeric($value) && $value > 0)
|
||||
$value = 0;
|
||||
// Allow reading multiple meters
|
||||
foreach($meters as $meter)
|
||||
{
|
||||
// Sometimes Wattsup have read failures returning 0....
|
||||
// try reading up to 3 times...
|
||||
for($i = 0; $i < 3; $i++)
|
||||
{
|
||||
break;
|
||||
$output = trim(shell_exec('wattsup -c 1 ' . $meter . ' watts 2>&1'));
|
||||
$output = explode(PHP_EOL, $output);
|
||||
|
||||
do
|
||||
{
|
||||
$this_value = array_pop($output);
|
||||
}
|
||||
while(!is_numeric($this_value) && count($output) > 0);
|
||||
|
||||
if(is_numeric($this_value) && $this_value > 0)
|
||||
{
|
||||
$value += $this_value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!is_numeric($this_value) || $this_value <= 0)
|
||||
{
|
||||
// Avoid case of one meter failing to read but other one reporting....
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user