parent
8bc5f3a294
commit
4b775b444d
@ -0,0 +1,149 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "tdebatterydevice.h"
|
||||||
|
|
||||||
|
TDEBatteryDevice::TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
|
||||||
|
}
|
||||||
|
|
||||||
|
TDEBatteryDevice::~TDEBatteryDevice() {
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::voltage() {
|
||||||
|
return m_currentVoltage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetVoltage(double vt) {
|
||||||
|
m_currentVoltage = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::maximumVoltage() {
|
||||||
|
return m_maximumVoltage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetMaximumVoltage(double vt) {
|
||||||
|
m_maximumVoltage = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::minimumVoltage() {
|
||||||
|
return m_minimumVoltage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetMinimumVoltage(double vt) {
|
||||||
|
m_minimumVoltage = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::maximumDesignVoltage() {
|
||||||
|
return m_maximumDesignVoltage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetMaximumDesignVoltage(double vt) {
|
||||||
|
m_maximumDesignVoltage = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::energy() {
|
||||||
|
return m_currentEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetEnergy(double vt) {
|
||||||
|
m_currentEnergy = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::alarmEnergy() {
|
||||||
|
return m_alarmEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetAlarmEnergy(double vt) {
|
||||||
|
m_alarmEnergy = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::maximumEnergy() {
|
||||||
|
return m_maximumEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetMaximumEnergy(double vt) {
|
||||||
|
m_maximumEnergy = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::maximumDesignEnergy() {
|
||||||
|
return m_maximumDesignEnergy;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetMaximumDesignEnergy(double vt) {
|
||||||
|
m_maximumDesignEnergy = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::dischargeRate() {
|
||||||
|
return m_dischargeRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetDischargeRate(double vt) {
|
||||||
|
m_dischargeRate = vt;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::timeRemaining() {
|
||||||
|
return m_timeRemaining;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetTimeRemaining(double tr) {
|
||||||
|
m_timeRemaining = tr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQString TDEBatteryDevice::technology() {
|
||||||
|
return m_technology;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetTechnology(TQString tc) {
|
||||||
|
m_technology = tc;
|
||||||
|
}
|
||||||
|
|
||||||
|
TDEBatteryStatus::TDEBatteryStatus TDEBatteryDevice::status() {
|
||||||
|
return m_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetStatus(TQString tc) {
|
||||||
|
tc = tc.lower();
|
||||||
|
|
||||||
|
if (tc == "charging") {
|
||||||
|
m_status = TDEBatteryStatus::Charging;
|
||||||
|
}
|
||||||
|
else if (tc == "discharging") {
|
||||||
|
m_status = TDEBatteryStatus::Discharging;
|
||||||
|
}
|
||||||
|
else if (tc == "full") {
|
||||||
|
m_status = TDEBatteryStatus::Full;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_status = TDEBatteryStatus::Unknown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDEBatteryDevice::installed() {
|
||||||
|
return m_installed;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEBatteryDevice::internalSetInstalled(bool tc) {
|
||||||
|
m_installed = tc;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDEBatteryDevice::chargePercent() {
|
||||||
|
return (m_currentEnergy/m_maximumEnergy)*100.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "tdebatterydevice.moc"
|
@ -0,0 +1,215 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TDEBATTERYDEVICE_H
|
||||||
|
#define _TDEBATTERYDEVICE_H
|
||||||
|
|
||||||
|
#include "tdegenericdevice.h"
|
||||||
|
|
||||||
|
namespace TDEBatteryStatus {
|
||||||
|
enum TDEBatteryStatus {
|
||||||
|
Charging,
|
||||||
|
Discharging,
|
||||||
|
Full,
|
||||||
|
Unknown = 0x80000000
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class TDECORE_EXPORT TDEBatteryDevice : public TDEGenericDevice
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
* @param Device type
|
||||||
|
*/
|
||||||
|
TDEBatteryDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~TDEBatteryDevice();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery voltage, if available
|
||||||
|
*/
|
||||||
|
double voltage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the minimum battery voltage, if available
|
||||||
|
*/
|
||||||
|
double minimumVoltage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the maximum battery voltage, if available
|
||||||
|
*/
|
||||||
|
double maximumVoltage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the designed maximum battery voltage, if available
|
||||||
|
*/
|
||||||
|
double maximumDesignVoltage();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery energy in watt-hours, if available
|
||||||
|
*/
|
||||||
|
double energy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery alarm energy in watt-hours, if available
|
||||||
|
*/
|
||||||
|
double alarmEnergy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the maximum battery energy in watt-hours, if available
|
||||||
|
*/
|
||||||
|
double maximumEnergy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the designed maximum battery energy in watt-hours, if available
|
||||||
|
*/
|
||||||
|
double maximumDesignEnergy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery discharge rate in watt-hours, if available
|
||||||
|
*/
|
||||||
|
double dischargeRate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery discharge time remaining in seconds, if available
|
||||||
|
*/
|
||||||
|
double timeRemaining();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQString with the battery technology, if available
|
||||||
|
*/
|
||||||
|
TQString technology();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TDEBatteryStatus::TDEBatteryStatus with the current battery status
|
||||||
|
*/
|
||||||
|
TDEBatteryStatus::TDEBatteryStatus status();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return TRUE if the battery is installed
|
||||||
|
*/
|
||||||
|
bool installed();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current battery charge in percent, if available
|
||||||
|
*/
|
||||||
|
double chargePercent();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* @param a double with the current battery voltage, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetVoltage(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the minimum battery voltage, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMinimumVoltage(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the maximum battery voltage, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMaximumVoltage(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the designed maximum battery voltage, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMaximumDesignVoltage(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the current battery energy in watt-hours, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetEnergy(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the current battery alarm energy in watt-hours, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetAlarmEnergy(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the maximum battery energy in watt-hours, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMaximumEnergy(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the designed maximum battery energy in watt-hours, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMaximumDesignEnergy(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the current battery discharge rate in volt-hours, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetDischargeRate(double vt);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a double with the current battery discharge time remaining in seconds, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetTimeRemaining(double tr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a TQString with the battery technology, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetTechnology(TQString tc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param a TQString with the battery status, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetStatus(TQString tc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param TRUE if the battery is installed
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetInstalled(bool tc);
|
||||||
|
|
||||||
|
private:
|
||||||
|
double m_currentVoltage;
|
||||||
|
double m_minimumVoltage;
|
||||||
|
double m_maximumVoltage;
|
||||||
|
double m_maximumDesignVoltage;
|
||||||
|
double m_alarmEnergy;
|
||||||
|
double m_currentEnergy;
|
||||||
|
double m_maximumEnergy;
|
||||||
|
double m_maximumDesignEnergy;
|
||||||
|
double m_dischargeRate;
|
||||||
|
double m_timeRemaining;
|
||||||
|
TQString m_technology;
|
||||||
|
TDEBatteryStatus::TDEBatteryStatus m_status;
|
||||||
|
bool m_installed;
|
||||||
|
|
||||||
|
friend class TDEHardwareDevices;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _TDEBATTERYDEVICE_H
|
@ -0,0 +1,223 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "tdecpudevice.h"
|
||||||
|
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <tqfile.h>
|
||||||
|
|
||||||
|
// uPower
|
||||||
|
#if defined(WITH_UPOWER)
|
||||||
|
#include <tqdbusdata.h>
|
||||||
|
#include <tqdbusmessage.h>
|
||||||
|
#include <tqdbusproxy.h>
|
||||||
|
#include <tqdbusvariant.h>
|
||||||
|
#include <tqdbusconnection.h>
|
||||||
|
#endif // defined(WITH_UPOWER)
|
||||||
|
|
||||||
|
#include <tdeglobal.h>
|
||||||
|
|
||||||
|
#include "tdehardwaredevices.h"
|
||||||
|
|
||||||
|
TDECPUDevice::TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
|
||||||
|
m_frequency = -1;
|
||||||
|
m_minfrequency = -1;
|
||||||
|
m_maxfrequency = -1;
|
||||||
|
m_corenumber = -1;
|
||||||
|
m_transitionlatency = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
TDECPUDevice::~TDECPUDevice() {
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDECPUDevice::frequency() {
|
||||||
|
return m_frequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetFrequency(double fr) {
|
||||||
|
m_frequency = fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDECPUDevice::minFrequency() {
|
||||||
|
return m_minfrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetMinFrequency(double fr) {
|
||||||
|
m_minfrequency = fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDECPUDevice::maxFrequency() {
|
||||||
|
return m_maxfrequency;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetMaxFrequency(double fr) {
|
||||||
|
m_maxfrequency = fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TDECPUDevice::transitionLatency() {
|
||||||
|
return m_transitionlatency;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetTransitionLatency(double tl) {
|
||||||
|
m_transitionlatency = tl;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQString TDECPUDevice::governor() {
|
||||||
|
return m_governor;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetGovernor(TQString gr) {
|
||||||
|
m_governor = gr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQString TDECPUDevice::scalingDriver() {
|
||||||
|
return m_scalingdriver;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetScalingDriver(TQString dr) {
|
||||||
|
m_scalingdriver = dr;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQStringList TDECPUDevice::dependentProcessors() {
|
||||||
|
return m_tiedprocs;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetDependentProcessors(TQStringList dp) {
|
||||||
|
m_tiedprocs = dp;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQStringList TDECPUDevice::availableFrequencies() {
|
||||||
|
return m_frequencies;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetAvailableFrequencies(TQStringList af) {
|
||||||
|
m_frequencies = af;
|
||||||
|
}
|
||||||
|
|
||||||
|
TQStringList TDECPUDevice::availableGovernors() {
|
||||||
|
return m_governers;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetAvailableGovernors(TQStringList gp) {
|
||||||
|
m_governers = gp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::internalSetCoreNumber(int cn) {
|
||||||
|
m_corenumber = cn;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDECPUDevice::canSetGovernor() {
|
||||||
|
TQString governornode = systemPath() + "/cpufreq/scaling_governor";
|
||||||
|
int rval = access (governornode.ascii(), W_OK);
|
||||||
|
if (rval == 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
#ifdef WITH_UPOWER
|
||||||
|
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
|
||||||
|
if (dbusConn.isConnected()) {
|
||||||
|
TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
|
||||||
|
if (hardwareControl.canSend()) {
|
||||||
|
// can set CPU governor?
|
||||||
|
TQValueList<TQT_DBusData> params;
|
||||||
|
params << TQT_DBusData::fromInt32(coreNumber());
|
||||||
|
TQT_DBusMessage reply = hardwareControl.sendWithReply("CanSetCPUGovernor", params);
|
||||||
|
if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) {
|
||||||
|
return reply[0].toVariant().value.toBool();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#else // WITH_UPOWER
|
||||||
|
return FALSE;
|
||||||
|
#endif// WITH_UPOWER
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::setGovernor(TQString gv) {
|
||||||
|
TQString governornode = systemPath() + "/cpufreq/scaling_governor";
|
||||||
|
TQFile file( governornode );
|
||||||
|
if ( file.open( IO_WriteOnly ) ) {
|
||||||
|
TQTextStream stream( &file );
|
||||||
|
stream << gv.lower();
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
#ifdef WITH_UPOWER
|
||||||
|
else {
|
||||||
|
TQT_DBusConnection dbusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus);
|
||||||
|
if (dbusConn.isConnected()) {
|
||||||
|
TQT_DBusProxy hardwareControl("org.trinitydesktop.hardwarecontrol", "/org/trinitydesktop/hardwarecontrol", "org.trinitydesktop.hardwarecontrol.CPUGovernor", dbusConn);
|
||||||
|
if (hardwareControl.canSend()) {
|
||||||
|
// set CPU governor
|
||||||
|
TQValueList<TQT_DBusData> params;
|
||||||
|
params << TQT_DBusData::fromInt32(coreNumber()) << TQT_DBusData::fromString(gv.lower());
|
||||||
|
hardwareControl.sendWithReply("SetCPUGovernor", params);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // WITH_UPOWER
|
||||||
|
|
||||||
|
// Force update of the device information object
|
||||||
|
TDEGlobal::hardwareDevices()->processModifiedCPUs();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDECPUDevice::canSetMaximumScalingFrequency() {
|
||||||
|
TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
|
||||||
|
int rval = access (freqnode.ascii(), W_OK);
|
||||||
|
if (rval == 0) {
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDECPUDevice::setMaximumScalingFrequency(double fr) {
|
||||||
|
TQString freqnode = systemPath() + "/cpufreq/scaling_max_freq";
|
||||||
|
TQFile file( freqnode );
|
||||||
|
if ( file.open( IO_WriteOnly ) ) {
|
||||||
|
TQTextStream stream( &file );
|
||||||
|
stream << TQString("%1").arg(fr*1000000.0, 0, 'f', 0);
|
||||||
|
file.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force update of the device information object
|
||||||
|
TDEGlobal::hardwareDevices()->processModifiedCPUs();
|
||||||
|
}
|
||||||
|
|
||||||
|
int TDECPUDevice::coreNumber() {
|
||||||
|
return m_corenumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "tdecpudevice.moc"
|
@ -0,0 +1,186 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TDECPUDEVICE_H
|
||||||
|
#define _TDECPUDEVICE_H
|
||||||
|
|
||||||
|
#include "tdegenericdevice.h"
|
||||||
|
|
||||||
|
class TDECORE_EXPORT TDECPUDevice : public TDEGenericDevice
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
* @param Device type
|
||||||
|
*/
|
||||||
|
TDECPUDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~TDECPUDevice();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the current CPU frequency in MHz, if available
|
||||||
|
*/
|
||||||
|
double frequency();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the minimum CPU frequency in MHz, if available
|
||||||
|
*/
|
||||||
|
double minFrequency();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the maximum CPU frequency in MHz, if available
|
||||||
|
*/
|
||||||
|
double maxFrequency();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a double with the transition latency in ns, if available
|
||||||
|
*/
|
||||||
|
double transitionLatency();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQString with the current CPU governor policy, if available
|
||||||
|
*/
|
||||||
|
TQString governor();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQString with the current CPU scaling driver, if available
|
||||||
|
*/
|
||||||
|
TQString scalingDriver();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
|
||||||
|
*/
|
||||||
|
TQStringList dependentProcessors();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQStringList with all valid scaling frequencies in Hz, if available
|
||||||
|
*/
|
||||||
|
TQStringList availableFrequencies();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a TQStringList with all available governor policies, if available
|
||||||
|
*/
|
||||||
|
TQStringList availableGovernors();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return TRUE if permissions allow the CPU governor to be set, FALSE if not
|
||||||
|
*/
|
||||||
|
bool canSetGovernor();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param gv a TQString with the new CPU governor policy name
|
||||||
|
*/
|
||||||
|
void setGovernor(TQString gv);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return TRUE if permissions allow the CPU maximum frequency to be set, FALSE if not
|
||||||
|
*/
|
||||||
|
bool canSetMaximumScalingFrequency();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param gv a double with the new CPU maximum frequency in MHz
|
||||||
|
*/
|
||||||
|
void setMaximumScalingFrequency(double fr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return an integer with the core number, starting at 0
|
||||||
|
*/
|
||||||
|
int coreNumber();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* @param fr a double with the current CPU frequency in MHz, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetFrequency(double fr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fr a double with the minimum CPU frequency in MHz, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMinFrequency(double fr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fr a double with the maximum CPU frequency in MHz, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetMaxFrequency(double fr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tl a double with the transition latency in ns, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetTransitionLatency(double tl);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param gr a TQString with the current CPU governor policy, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetGovernor(TQString gr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param dr a TQString with the current CPU scaling driver, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetScalingDriver(TQString dr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param dp a TQStringList with the IDs of all processors that are dependent on the frequency/power settings of this one, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetDependentProcessors(TQStringList dp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param af a TQStringList with all valid scaling frequencies in Hz, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetAvailableFrequencies(TQStringList af);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param gp a TQStringList with all available governor policies, if available
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetAvailableGovernors(TQStringList gp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param cn an integer with the core number, starting at 0
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetCoreNumber(int cn);
|
||||||
|
|
||||||
|
private:
|
||||||
|
double m_frequency;
|
||||||
|
double m_minfrequency;
|
||||||
|
double m_maxfrequency;
|
||||||
|
double m_transitionlatency;
|
||||||
|
TQString m_governor;
|
||||||
|
TQString m_scalingdriver;
|
||||||
|
TQStringList m_tiedprocs;
|
||||||
|
TQStringList m_frequencies;
|
||||||
|
TQStringList m_governers;
|
||||||
|
int m_corenumber;
|
||||||
|
|
||||||
|
friend class TDEHardwareDevices;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _TDECPUDEVICE_H
|
@ -0,0 +1,36 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "tdemainspowerdevice.h"
|
||||||
|
|
||||||
|
TDEMainsPowerDevice::TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn) : TDEGenericDevice(dt, dn) {
|
||||||
|
}
|
||||||
|
|
||||||
|
TDEMainsPowerDevice::~TDEMainsPowerDevice() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDEMainsPowerDevice::online() {
|
||||||
|
return m_online;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDEMainsPowerDevice::internalSetOnline(bool tc) {
|
||||||
|
m_online = tc;
|
||||||
|
}
|
||||||
|
|
||||||
|
#include "tdemainspowerdevice.moc"
|
@ -0,0 +1,57 @@
|
|||||||
|
/* This file is part of the TDE libraries
|
||||||
|
Copyright (C) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
|
||||||
|
(C) 2013 Golubev Alexander <fatzer2@gmail.com>
|
||||||
|
|
||||||
|
This library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public
|
||||||
|
License version 2 as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
This library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public License
|
||||||
|
along with this library; see the file COPYING.LIB. If not, write to
|
||||||
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||||
|
Boston, MA 02110-1301, USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TDEMAINSPOWERDEVICE_H
|
||||||
|
#define _TDEMAINSPOWERDEVICE_H
|
||||||
|
|
||||||
|
#include "tdegenericdevice.h"
|
||||||
|
|
||||||
|
class TDECORE_EXPORT TDEMainsPowerDevice : public TDEGenericDevice
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
* @param Device type
|
||||||
|
*/
|
||||||
|
TDEMainsPowerDevice(TDEGenericDeviceType::TDEGenericDeviceType dt, TQString dn=TQString::null);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destructor.
|
||||||
|
*/
|
||||||
|
~TDEMainsPowerDevice();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return TRUE if power supply is online via mains power, FALSE if not
|
||||||
|
*/
|
||||||
|
bool online();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* @param TRUE if power supply is online via mains power, FALSE if not
|
||||||
|
* @internal
|
||||||
|
*/
|
||||||
|
void internalSetOnline(bool vt);
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool m_online;
|
||||||
|
|
||||||
|
friend class TDEHardwareDevices;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _TDEMAINSPOWERDEVICE_H
|
Loading…
Reference in new issue