#include #include #include "sysfs.h" SysFS::SysFS() {} SysFS::~SysFS() {} bool SysFS::hasHDAPS() { QDir d("/sys/devices/platform/hdaps"); return d.isReadable(); } bool SysFS::fileBool(QString path) { QFile file; QTextStream stream; file.setName(path); if(! file.exists() || ! file.open(IO_ReadOnly)) return FALSE; stream.setDevice(&file); return stream.readLine().toInt(NULL, 10); } bool SysFS::keyboardActivity() { return fileBool("/sys/devices/platform/hdaps/keyboard_activity"); } bool SysFS::mouseActivity() { return fileBool("/sys/devices/platform/hdaps/mouse_activity"); } QString SysFS::position() { QFile file; QTextStream stream; file.setName("/sys/devices/platform/hdaps/position"); if(! file.exists() || ! file.open(IO_ReadOnly)) return NULL; stream.setDevice(&file); return stream.readLine(); } QStringList SysFS::deviceList() { QDir sysBlock("/sys/block", "[hs]d*", QDir::IgnoreCase, QDir::Dirs); if (! sysBlock.exists()) return NULL; QStringList deviceList = sysBlock.entryList(); unsigned int i = 0; while (i < deviceList.count()) { if(QFile("/sys/block/" + deviceList[i] + "/device/unload_heads").exists()) i++; else deviceList.remove(deviceList.at(i)); } return deviceList; } bool SysFS::queueProtected(QString device) { QFile file; bool b = FALSE; QTextStream stream; file.setName("/sys/block/" + device + "/device/unload_heads"); if(! file.exists() || ! file.open(IO_ReadOnly)) return NULL; stream.setDevice(&file); if(stream.readLine().toInt() > 0) b = TRUE; return b; }