-rw-r--r-- | libopie2/opiecore/device/odevice_ipaq.cpp | 53 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice_mypal.cpp | 55 |
2 files changed, 79 insertions, 29 deletions
diff --git a/libopie2/opiecore/device/odevice_ipaq.cpp b/libopie2/opiecore/device/odevice_ipaq.cpp index e6e3145..63b60a7 100644 --- a/libopie2/opiecore/device/odevice_ipaq.cpp +++ b/libopie2/opiecore/device/odevice_ipaq.cpp @@ -32,4 +32,5 @@ /* QT */ #include <qapplication.h> +#include <qdir.h> #include <qfile.h> #include <qtextstream.h> @@ -380,10 +381,28 @@ bool iPAQ::setDisplayBrightness ( int bright ) switch ( model()) { case Model_iPAQ_H191x: - if ( !bright ) - cmdline = QString::fromLatin1( "echo 4 > /sys/class/backlight/pxafb/power"); - else - cmdline = QString::fromLatin1( "echo 0 > /sys/class/backlight/pxafb/power; echo %1 > /sys/class/backlight/pxafb/brightness" ).arg( bright ); - // No Global::shellQuote as we gurantee it to be sane - res = ( ::system( QFile::encodeName(cmdline) ) == 0 ); + { + QDir sysClass( "/sys/class/backlight/pxafb/" ); + sysClass.setFilter(QDir::Dirs); + int fd; + if ( sysClass.exists() ) { + QString sysClassPath = sysClass.absFilePath( "/sys/class/backlight/pxafb/power" ); + fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[10]; + buf[0] = bright ? 0 : 4; + buf[1] = '\0'; + res = ( ::write( fd, &buf[0], 2 ) == 0 ); + ::close( fd ); + } + sysClassPath = sysClass.absFilePath( "/sys/class/backlight/pxafb/brightness" ); + fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[100]; + int len = ::snprintf( &buf[0], sizeof buf, "%d", bright ); + res = ( ::write( fd, &buf[0], len ) == 0 ); + ::close( fd ); + } + } + } break; @@ -438,5 +457,18 @@ bool iPAQ::setDisplayStatus ( bool on ) if ( model() == Model_iPAQ_H191x ) { - cmdline = QString::fromLatin1( "echo %1 > /sys/class/lcd/pxafb/power; echo %2 > /sys/class/backlight/pxafb/power").arg( on ? "0" : "4" ).arg( on ? "0" : "4" ); + QDir sysClass( "/sys/class/lcd/pxafb/" ); + sysClass.setFilter(QDir::Dirs); + if ( sysClass.exists() ) { + QString sysClassPath = sysClass.absFilePath( "/sys/class/lcd/pxafb/power" ); + int fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[10]; + buf[0] = on ? 0 : 4; + buf[1] = '\0'; + res = ( ::write( fd, &buf[0], 2 ) == 0 ); + ::close( fd ); + } + } + return res; } else { return OAbstractMobileDevice::setDisplayStatus(on); @@ -450,5 +482,10 @@ bool iPAQ::setDisplayStatus ( bool on ) bool iPAQ::hasLightSensor() const { - return true; + switch (model()) { + case Model_iPAQ_H191x: + return false; + default: + return true; + } } diff --git a/libopie2/opiecore/device/odevice_mypal.cpp b/libopie2/opiecore/device/odevice_mypal.cpp index 7e1245a..7eb8d1d 100644 --- a/libopie2/opiecore/device/odevice_mypal.cpp +++ b/libopie2/opiecore/device/odevice_mypal.cpp @@ -32,4 +32,5 @@ /* QT */ #include <qapplication.h> +#include <qdir.h> #include <qfile.h> #include <qtextstream.h> @@ -207,17 +208,25 @@ bool MyPal::setDisplayBrightness ( int bright ) bright = 0; - QString cmdline; - - switch ( model()) { - case Model_MyPal_716: - if ( !bright ) - cmdline = QString::fromLatin1( "echo 4 > /sys/class/backlight/pxafb/power"); - else - cmdline = QString::fromLatin1( "echo 0 > /sys/class/backlight/pxafb/power; echo %1 > /sys/class/backlight/pxafb/brightness" ).arg( bright ); - // No Global::shellQuote as we gurantee it to be sane - res = ( ::system( QFile::encodeName(cmdline) ) == 0 ); - break; - default: - res = OAbstractMobileDevice::setDisplayBrightness(bright); + QDir sysClass( "/sys/class/backlight/pxafb/" ); + sysClass.setFilter(QDir::Dirs); + int fd; + if ( sysClass.exists() ) { + QString sysClassPath = sysClass.absFilePath( "/sys/class/backlight/pxafb/power" ); + fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[10]; + buf[0] = bright ? 0 : 4; + buf[1] = '\0'; + res = ( ::write( fd, &buf[0], 2 ) == 0 ); + ::close( fd ); + } + sysClassPath = sysClass.absFilePath( "/sys/class/backlight/pxafb/brightness" ); + fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[100]; + int len = ::snprintf( &buf[0], sizeof buf, "%d", bright ); + res = ( ::write( fd, &buf[0], len ) == 0 ); + ::close( fd ); + } } @@ -239,14 +248,18 @@ bool MyPal::setDisplayStatus ( bool on ) bool res = false; - QString cmdline; - - if ( model() == Model_MyPal_716 ) { - cmdline = QString::fromLatin1( "echo %1 > /sys/class/lcd/pxafb/power; echo %2 > /sys/class/backlight/pxafb/power").arg( on ? "0" : "4" ).arg( on ? "0" : "4" ); - } else { - return OAbstractMobileDevice::setDisplayStatus(on); + QDir sysClass( "/sys/class/lcd/" ); + sysClass.setFilter(QDir::Dirs); + if ( sysClass.exists() ) { + QString sysClassPath = sysClass.absFilePath( "/sys/class/lcd/pxafb/power" ); + int fd = ::open( sysClassPath, O_WRONLY | O_NONBLOCK ); + if ( fd ) { + char buf[10]; + buf[0] = on ? 0 : 4; + buf[1] = '\0'; + res = ( ::write( fd, &buf[0], 2 ) == 0 ); + ::close( fd ); + } } - res = ( ::system( QFile::encodeName(cmdline) ) == 0 ); - return res; } |