summaryrefslogtreecommitdiff
path: root/libopie
authorsandman <sandman>2002-10-27 15:52:44 (UTC)
committer sandman <sandman>2002-10-27 15:52:44 (UTC)
commitbf21c882b82bfcdbcdce6b2dc5d863a2a2fb37c7 (patch) (side-by-side diff)
tree6f104afe571f394bea83b94cb0de9242ee742b88 /libopie
parent4ad1fa6d01c9de96d309cd662e658bcb1bb899a5 (diff)
downloadopie-bf21c882b82bfcdbcdce6b2dc5d863a2a2fb37c7.zip
opie-bf21c882b82bfcdbcdce6b2dc5d863a2a2fb37c7.tar.gz
opie-bf21c882b82bfcdbcdce6b2dc5d863a2a2fb37c7.tar.bz2
- new function to check for and read the light sensor
- redone the Model enum, to make it easier to check for "any iPAQ" !! This means every application using this enum has to be recompiled !!
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp42
-rw-r--r--libopie/odevice.h17
2 files changed, 54 insertions, 5 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 58bd663..44fe35f 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -70,32 +70,35 @@ public:
class iPAQ : public QObject, public ODevice, public QWSServer::KeyboardFilter {
protected:
virtual void init ( );
public:
virtual bool setSoftSuspend ( bool soft );
virtual bool setDisplayBrightness ( int b );
virtual int displayBrightnessResolution ( ) const;
virtual void alarmSound ( );
virtual QValueList <OLed> ledList ( ) const;
virtual QValueList <OLedState> ledStateList ( OLed led ) const;
virtual OLedState ledState ( OLed led ) const;
virtual bool setLedState ( OLed led, OLedState st );
+
+ virtual bool hasLightSensor ( ) const;
+ virtual int readLightSensor ( );
//virtual QValueList <int> keyList ( ) const;
protected:
virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat );
virtual void timerEvent ( QTimerEvent *te );
int m_power_timer;
OLedState m_leds [2];
};
class Zaurus : public ODevice {
protected:
virtual void init ( );
@@ -343,32 +346,41 @@ QValueList <OLed> ODevice::ledList ( ) const
QValueList <OLedState> ODevice::ledStateList ( OLed /*which*/ ) const
{
return QValueList <OLedState> ( );
}
OLedState ODevice::ledState ( OLed /*which*/ ) const
{
return Led_Off;
}
bool ODevice::setLedState ( OLed /*which*/, OLedState /*st*/ )
{
return false;
}
+bool ODevice::hasLightSensor ( ) const
+{
+ return false;
+}
+
+int ODevice::readLightSensor ( )
+{
+ return -1;
+}
//QValueList <int> ODevice::keyList ( ) const
//{
// return QValueList <int> ( );
//}
/**************************************************
*
* iPAQ
*
**************************************************/
void iPAQ::init ( )
@@ -653,32 +665,62 @@ bool iPAQ::setDisplayBrightness ( int bright )
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
}
+bool iPAQ::hasLightSensor ( ) const
+{
+ return true;
+}
+
+int iPAQ::readLightSensor ( )
+{
+ int fd;
+ int val = -1;
+
+ if (( fd = ::open ( "/proc/hal/lightsensor", O_RDONLY )) >= 0 ) {
+ char buffer [5];
+
+ if ( ::read ( fd, buffer, 4 ) == 4 ) {
+ 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" );
diff --git a/libopie/odevice.h b/libopie/odevice.h
index 38f3787..be2a9c7 100644
--- a/libopie/odevice.h
+++ b/libopie/odevice.h
@@ -17,38 +17,42 @@
Boston, MA 02111-1307, USA.
*/
#ifndef _LIBOPIE_ODEVICE_H_
#define _LIBOPIE_ODEVICE_H_
#include <qstring.h>
#include <qnamespace.h>
class ODeviceData;
namespace Opie {
enum OModel {
Model_Unknown,
- Model_iPAQ_H31xx,
- Model_iPAQ_H36xx,
- Model_iPAQ_H37xx,
- Model_iPAQ_H38xx,
+ Model_iPAQ = ( 1 << 16 ),
- Model_Zaurus_SL5000
+ Model_iPAQ_H31xx = ( Model_iPAQ | 1 ),
+ Model_iPAQ_H36xx = ( Model_iPAQ | 2 ),
+ Model_iPAQ_H37xx = ( Model_iPAQ | 3 ),
+ Model_iPAQ_H38xx = ( Model_iPAQ | 4 ),
+
+ Model_Zaurus = ( 2 << 16 ),
+
+ Model_Zaurus_SL5000 = ( Model_Zaurus | 1 ),
};
enum OVendor {
Vendor_Unknown,
Vendor_HP,
Vendor_Sharp
};
enum OSystem {
System_Unknown,
System_Familiar,
System_Zaurus,
System_OpenZaurus
};
@@ -116,23 +120,26 @@ public:
virtual bool setDisplayStatus ( bool on );
virtual bool setDisplayBrightness ( int brightness );
virtual int displayBrightnessResolution ( ) const;
// input / output
virtual void alarmSound ( );
virtual void keySound ( );
virtual void touchSound ( );
virtual QValueList <OLed> ledList ( ) const;
virtual QValueList <OLedState> ledStateList ( OLed led ) const;
virtual OLedState ledState ( OLed led ) const;
virtual bool setLedState ( OLed led, OLedState st );
+ virtual bool hasLightSensor ( ) const;
+ virtual int readLightSensor ( );
+
//virtual QValueList <int> keyList ( ) const;
};
}
#endif