summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-01-08 23:22:51 (UTC)
committer mickeyl <mickeyl>2004-01-08 23:22:51 (UTC)
commit9fc7d401f1445c5f3d3d74e173dea6de2ea4784a (patch) (unidiff)
tree2c5576c866e8e90a8e5e5efe53e1a5955156b6a5
parentb52dbdb9e992bd891d69601a6425086099e2ea04 (diff)
downloadopie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.zip
opie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.tar.gz
opie-9fc7d401f1445c5f3d3d74e173dea6de2ea4784a.tar.bz2
turn on the light after opening the hinge when 'display off' is configured as hinge action
NOTE: I think there's a bug in the Embedix kernel which either tells a wrong hinge value after suspend or sends out a double (bogus) keycode event on closing the hinge. How to reproduce: 1.) Configure "suspend" as closeHingeAction 2.) Close Display --> Device Suspends 3.) Open Display --> Device does nothing (needs a kernel patch to wake up automatically, but that's another story) 4.) Wakeup Device --> Device sends F14 to rotateApplet, rotateApplet reads hinge code... it's CLOSED(!) - which is wrong 5.) Device resuspends. 6.) Wakeup again --> Device sends F14 (huh, again?) to rotateApplet. rotateApplet reads hinge code... it's OPEN now - which is ok. Ideas?
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/applets/rotateapplet/rotate.cpp25
-rw-r--r--core/applets/rotateapplet/rotate.h0
2 files changed, 21 insertions, 4 deletions
diff --git a/core/applets/rotateapplet/rotate.cpp b/core/applets/rotateapplet/rotate.cpp
index 79098d4..d8081a6 100644
--- a/core/applets/rotateapplet/rotate.cpp
+++ b/core/applets/rotateapplet/rotate.cpp
@@ -38,12 +38,13 @@
38#include <qpe/qpeapplication.h> 38#include <qpe/qpeapplication.h>
39#include <qpe/qcopenvelope_qws.h> 39#include <qpe/qcopenvelope_qws.h>
40#include <qpe/resource.h> 40#include <qpe/resource.h>
41using namespace Opie;
41 42
42/* QT */ 43/* QT */
43#include <qiconset.h> 44#include <qiconset.h>
44#include <qpopupmenu.h> 45#include <qpopupmenu.h>
45 46
46using namespace Opie; 47#include <time.h>
47 48
48RotateApplet::RotateApplet() 49RotateApplet::RotateApplet()
49 :QObject( 0, "RotateApplet" ), ref( 0 ), m_flipped( false ) 50 :QObject( 0, "RotateApplet" ), ref( 0 ), m_flipped( false )
@@ -69,21 +70,37 @@ void RotateApplet::channelReceived( const QCString &msg, const QByteArray & data
69 70
70 if ( ODevice::inst()->hasHingeSensor() ) 71 if ( ODevice::inst()->hasHingeSensor() )
71 { 72 {
73 struct timespec interval;
74 struct timespec remain;
75 interval.tv_sec = 0;
76 interval.tv_nsec = 600;
77 ::nanosleep( &interval, &remain );
72 OHingeStatus status = ODevice::inst()->readHingeSensor(); 78 OHingeStatus status = ODevice::inst()->readHingeSensor();
73 qDebug( "RotateApplet::readHingeSensor = %d", (int) status ); 79 qDebug( "RotateApplet::readHingeSensor = %d", (int) status );
74 if ( status == CASE_CLOSED ) 80
75 {
76 Config cfg( "apm" ); 81 Config cfg( "apm" );
77 cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" ); 82 cfg.setGroup( PowerStatusManager::readStatus().acStatus() == PowerStatus::Online ? "AC" : "Battery" );
78 int action = cfg.readNumEntry( "CloseHingeAction", 0 ); 83 int action = cfg.readNumEntry( "CloseHingeAction", 0 );
84
85 if ( status == CASE_CLOSED )
86 {
79 switch ( action ) 87 switch ( action )
80 { 88 {
81 case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 0 ); break; 89 case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 0 ); break;
82 case 2: /* SUSPEND */ ODevice::inst()->suspend(); break; 90 case 2: /* SUSPEND */ ODevice::inst()->suspend(); break;
83 default: /* IGNORE */ break; 91 default: /* IGNORE */ break;
84 } 92 }
85 qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) );
86 } 93 }
94 else /* status != CASE_CLOSED */
95 {
96 switch ( action )
97 {
98 case 1: /* DISPLAY OFF */ ODevice::inst()->setDisplayBrightness( 127 ); break;
99 case 2: /* SUSPEND */ /* How to wake up the device from kernel? */; break;
100 default: /* IGNORE */ break;
101 }
102 }
103 qDebug( "RotateApplet::switchAction %d performed.", cfg.readNumEntry( "CloseHingeAction", 0 ) );
87 } 104 }
88 105
89 QDataStream stream( data, IO_ReadOnly ); 106 QDataStream stream( data, IO_ReadOnly );
diff --git a/core/applets/rotateapplet/rotate.h b/core/applets/rotateapplet/rotate.h
index 572b82a..4403c7d 100644
--- a/core/applets/rotateapplet/rotate.h
+++ b/core/applets/rotateapplet/rotate.h