summaryrefslogtreecommitdiff
path: root/libopie
authorsandman <sandman>2002-10-28 04:41:42 (UTC)
committer sandman <sandman>2002-10-28 04:41:42 (UTC)
commit226ddd19ef0adeb279c3a864e24cbfcf556b2f17 (patch) (side-by-side diff)
treec1c95e39fa0634a881ffbeba190653dc7ee6201c /libopie
parent37397a824a807195ba440117a6bac0043ea788a1 (diff)
downloadopie-226ddd19ef0adeb279c3a864e24cbfcf556b2f17.zip
opie-226ddd19ef0adeb279c3a864e24cbfcf556b2f17.tar.gz
opie-226ddd19ef0adeb279c3a864e24cbfcf556b2f17.tar.bz2
- read ( fd, buffer, 4 ); return 5 (!!) for /proc/hal/light_sensor
so we better try to read 5 bytes ... - small "off by one" fix for the lcd brightness resolution
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp14
1 files changed, 7 insertions, 7 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 6ea4d45..2b7e927 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -645,91 +645,91 @@ bool iPAQ::setSoftSuspend ( bool soft )
}
bool iPAQ::setDisplayBrightness ( int bright )
{
bool res = false;
int fd;
if ( bright > 255 )
bright = 255;
if ( bright < 0 )
bright = 0;
// 128 is the maximum if you want a decent lifetime for the LCD
if ( bright > 1 )
bright = (int) ( 0.5 + ( ::pow ( 2, double( bright ) / 255.0 ) - 1 ) * 128.0 ); // logarithmic
// bright = ( bright + 1 ) / 2;
if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) {
FLITE_IN bl;
bl. mode = 1;
bl. pwr = bright ? 1 : 0;
bl. brightness = bright;
res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 );
::close ( fd );
}
return res;
}
int iPAQ::displayBrightnessResolution ( ) const
{
- return 255; // really 128, but logarithmic control is smoother this way
+ return 256; // really 128, but logarithmic control is smoother this way
}
bool iPAQ::hasLightSensor ( ) const
{
return true;
}
-
+#include <errno.h>
+#include <string.h>
int iPAQ::readLightSensor ( )
{
int fd;
int val = -1;
if (( fd = ::open ( "/proc/hal/light_sensor", O_RDONLY )) >= 0 ) {
- char buffer [5];
+ char buffer [8];
- if ( ::read ( fd, buffer, 4 ) == 4 ) {
+ if ( ::read ( fd, buffer, 5 ) == 5 )
char *endptr;
buffer [4] = 0;
val = ::strtol ( buffer + 2, &endptr, 16 );
if ( *endptr != 0 )
val = -1;
- }
-
+ }
::close ( fd );
}
return val;
}
/**************************************************
*
* Zaurus
*
**************************************************/
void Zaurus::init ( )
{
d-> m_modelstr = "Zaurus SL5000";
d-> m_model = Model_Zaurus_SL5000;
d-> m_vendorstr = "Sharp";
d-> m_vendor = Vendor_Sharp;
QFile f ( "/proc/filesystems" );
if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) {
d-> m_systemstr = "OpenZaurus";
d-> m_system = System_OpenZaurus;
f. close ( );
f. setName ( "/etc/oz_version" );
if ( f. open ( IO_ReadOnly )) {
@@ -917,42 +917,42 @@ bool Zaurus::setSoftSuspend ( bool soft )
::close ( fd );
}
else
perror ( "/dev/apm_bios or /dev/misc/apm_bios" );
return res;
}
bool Zaurus::setDisplayBrightness ( int bright )
{
bool res = false;
int fd;
if ( bright > 255 )
bright = 255;
if ( bright < 0 )
bright = 0;
if (( fd = ::open ( "/dev/fl", O_WRONLY )) >= 0 ) {
int bl = ( bright * 4 + 127 ) / 255; // only 4 steps on zaurus
if ( bright && !bl )
bl = 1;
res = ( ::ioctl ( fd, FL_IOCTL_STEP_CONTRAST, bl ) == 0 );
::close ( fd );
}
return res;
}
int Zaurus::displayBrightnessResolution ( ) const
{
- return 4;
+ return 5;
}
//QValueList <int> Zaurus::keyList ( ) const
//{
// QValueList <int> vl;
// vl << HardKey_Datebook << HardKey_Contacts << HardKey_Mail << HardKey_Menu << HardKey_Home << HardKey_Suspend << HardKey_Backlight;
// return vl;
//}