-rw-r--r-- | libopie/odevice.cpp | 61 | ||||
-rw-r--r-- | libopie/odevice.h | 6 |
2 files changed, 63 insertions, 4 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index f808960..4b5a54e 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp @@ -73,4 +73,5 @@ public: QValueList <ODeviceButton> *m_buttons; uint m_holdtime; + QStrList *m_cpu_frequencies; }; @@ -424,4 +425,5 @@ ODevice::ODevice ( ) d-> m_holdtime = 1000; // 1000ms d-> m_buttons = 0; + d-> m_cpu_frequencies = new QStrList; } @@ -774,4 +776,44 @@ int ODevice::lightSensorResolution ( ) const /** + * @return a list with valid CPU frequency + */ +QStrList &ODevice::cpuFrequencies ( ) const +{ +qWarning("ODevice::cpuFrequencies: m_cpu_frequencies is %d", (int) d->m_cpu_frequencies); + return *d->m_cpu_frequencies; +} + + +/** + * Set desired cpu frequency + * + * @param index index into d->m_cpu_frequencies of the frequency to be set + */ +bool ODevice::setCpuFrequency(uint index) +{ + if (index >= d->m_cpu_frequencies->count()) + return false; + + char *freq = d->m_cpu_frequencies->at(index); + qWarning("set freq to %s", freq); + + //TODO: do the change in /proc/sys/cpu/0/speed + + return false; +} + +/** + * Returns current frequency index out of d->m_cpu_frequencies + */ +uint ODevice::cpuFrequency() const +{ + // TODO: get freq from /proc/sys/cpu/0/speed and return index + + return 0; +} + + + +/** * @return a list of hardware buttons */ @@ -1951,4 +1993,9 @@ void Ramses::init() m_power_timer = 0; +qWarning("adding freq"); + d->m_cpu_frequencies->append("100"); + d->m_cpu_frequencies->append("200"); + d->m_cpu_frequencies->append("300"); + d->m_cpu_frequencies->append("400"); } @@ -2011,4 +2058,5 @@ bool Ramses::suspend ( ) { qDebug("Ramses::suspend"); + return false; } @@ -2049,6 +2097,15 @@ bool Ramses::setDisplayBrightness(int bright) if (bright < 0) bright = 0; - bright = 500-(bright * 500 / 255); + // Turn backlight completely off + if ((fd = ::open("/proc/sys/board/lcd_backlight", O_WRONLY)) >= 0) { + char writeCommand[10]; + const int count = sprintf(writeCommand, "%d\n", bright ? 1 : 0); + res = (::write(fd, writeCommand, count) != -1); + ::close(fd); + } + + // scale backlight brightness to hardware + bright = 500-(bright * 500 / 255); if ((fd = ::open("/proc/sys/board/pwm1", O_WRONLY)) >= 0) { qDebug(" %d -> pwm1", bright); @@ -2057,6 +2114,4 @@ bool Ramses::setDisplayBrightness(int bright) res = (::write(fd, writeCommand, count) != -1); ::close(fd); - } else { - qWarning("no write"); } return res; diff --git a/libopie/odevice.h b/libopie/odevice.h index 0974e8d..7f6f856 100644 --- a/libopie/odevice.h +++ b/libopie/odevice.h @@ -24,4 +24,5 @@ #include <qstring.h> #include <qnamespace.h> +#include <qstrlist.h> #include <opie/odevicebutton.h> @@ -153,5 +154,4 @@ public: virtual ~ODevice ( ); - static ODevice *inst ( ); @@ -199,4 +199,8 @@ public: virtual int lightSensorResolution ( ) const; + QStrList &cpuFrequencies() const; + bool setCpuFrequency(uint index); + uint cpuFrequency() const; + /** * Returns the available buttons on this device. The number and location |