|
|
|
@ -42,7 +42,7 @@ PowerService::~PowerService()
|
|
|
|
|
// TODO Auto-generated destructor stub
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::canSetHibernation(TQString disk, TQString state) {
|
|
|
|
|
bool PowerService::canSetHibernation(TQString disk, TQString state, TQT_DBusError& error) {
|
|
|
|
|
|
|
|
|
|
// check if path is writable
|
|
|
|
|
bool state_writable = false;
|
|
|
|
@ -70,6 +70,7 @@ bool PowerService::canSetHibernation(TQString disk, TQString state) {
|
|
|
|
|
}
|
|
|
|
|
if (fclose(statenode) == EOF) {
|
|
|
|
|
// Error!
|
|
|
|
|
error = TQT_DBusError::stdInvalidArgs(TQString ("Could not flush stream for method " + method1));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
FILE *disknode = fopen("/sys/power/disk", "r");
|
|
|
|
@ -83,6 +84,7 @@ bool PowerService::canSetHibernation(TQString disk, TQString state) {
|
|
|
|
|
}
|
|
|
|
|
if (fclose(disknode) == EOF) {
|
|
|
|
|
// Error!
|
|
|
|
|
error = TQT_DBusError::stdInvalidArgs(TQString ("Could not flush stream for method " + method2));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -91,7 +93,7 @@ bool PowerService::canSetHibernation(TQString disk, TQString state) {
|
|
|
|
|
return state_writable && disk_writable && method1 && method2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::setHibernation(TQString disk, TQString state) {
|
|
|
|
|
bool PowerService::setHibernation(TQString disk, TQString state, TQT_DBusError& error) {
|
|
|
|
|
// set hibernation state
|
|
|
|
|
|
|
|
|
|
bool written1 = false, written2 = false;
|
|
|
|
@ -116,6 +118,7 @@ bool PowerService::setHibernation(TQString disk, TQString state) {
|
|
|
|
|
}
|
|
|
|
|
if (fclose(disknode) == EOF) {
|
|
|
|
|
// Error!
|
|
|
|
|
error = TQT_DBusError::stdInvalidArgs(TQString ("Could not flush stream for method " + disk));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (written1)
|
|
|
|
@ -127,6 +130,7 @@ bool PowerService::setHibernation(TQString disk, TQString state) {
|
|
|
|
|
}
|
|
|
|
|
if (fclose(statenode) == EOF) {
|
|
|
|
|
// Error!
|
|
|
|
|
error = TQT_DBusError::stdInvalidArgs(TQString ("Could not flush stream for method " + state));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -142,77 +146,121 @@ bool PowerService::setHibernation(TQString disk, TQString state) {
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanStandby(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state");
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::Standby(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = setDeviceValue("/sys/power/state", "standby");
|
|
|
|
|
value = setDeviceValue("/sys/power/state", "standby", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanFreeze(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state") && canSetDeviceValue("/sys/power/disk");
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state", error) && canSetDeviceValue("/sys/power/disk", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::Freeze(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = setDeviceValue("/sys/power/disk", "freeze");
|
|
|
|
|
value = setDeviceValue("/sys/power/disk", "freeze", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanSuspend(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state") && canSetDeviceValue("/sys/power/disk");
|
|
|
|
|
return true;
|
|
|
|
|
value = canSetDeviceValue("/sys/power/state", error) && canSetDeviceValue("/sys/power/disk", error);
|
|
|
|
|
return (error.isValid()) ? false : true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::Suspend(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = setDeviceValue("/sys/power/state", "mem");
|
|
|
|
|
value = setDeviceValue("/sys/power/state", "mem", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanHibernate(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetHibernation(TQString("/sys/power/disk"), "platform");
|
|
|
|
|
value = canSetHibernation(TQString("/sys/power/disk"), "platform", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::Hibernate(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = setHibernation("/sys/power/disk", "platform");
|
|
|
|
|
value = setHibernation("/sys/power/disk", "platform", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanHybridSuspend(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetHibernation("/sys/power/disk", "suspend");
|
|
|
|
|
value = canSetHibernation("/sys/power/disk", "suspend", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::HybridSuspend(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = setHibernation("/sys/power/disk", "suspend");
|
|
|
|
|
value = setHibernation("/sys/power/disk", "suspend", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::CanSetHibernationMethod(bool& value, TQT_DBusError& error) {
|
|
|
|
|
// do something
|
|
|
|
|
value = canSetDeviceValue("/sys/power/disk");
|
|
|
|
|
value = canSetDeviceValue("/sys/power/disk", error);
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool PowerService::SetHibernationMethod(const TQString& method, bool& value, TQT_DBusError& error) {
|
|
|
|
|
// set hibernation method
|
|
|
|
|
if (!method.isEmpty()) {
|
|
|
|
|
value = setDeviceValue("/sys/power/disk", method);
|
|
|
|
|
value = setDeviceValue("/sys/power/disk", method, error);
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
//TODO may be set dbus error
|
|
|
|
|
error = TQT_DBusError::stdInvalidArgs(TQString ("Invalid argument for method: " + method));
|
|
|
|
|
}
|
|
|
|
|
if (error.isValid()) {
|
|
|
|
|
tqDebug(error.message().local8Bit().data());
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|