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
@@ -82,8 +82,11 @@ public:
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:
@@ -355,8 +358,17 @@ 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
//{
@@ -665,8 +677,38 @@ 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
*
diff --git a/libopie/odevice.h b/libopie/odevice.h
index 38f3787..be2a9c7 100644
--- a/libopie/odevice.h
+++ b/libopie/odevice.h
@@ -29,14 +29,18 @@ 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,
@@ -128,8 +132,11 @@ public:
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;
};
}