author | sandman <sandman> | 2002-09-30 21:09:13 (UTC) |
---|---|---|
committer | sandman <sandman> | 2002-09-30 21:09:13 (UTC) |
commit | 3ff016b281a3c059e6ecb728c60fd6847756f291 (patch) (side-by-side diff) | |
tree | 6d7b341ef586552b1a2154af047b41fb567b59d9 | |
parent | 5158385997be6b64cab623674f9e9e1835f94fc6 (diff) | |
download | opie-3ff016b281a3c059e6ecb728c60fd6847756f291.zip opie-3ff016b281a3c059e6ecb728c60fd6847756f291.tar.gz opie-3ff016b281a3c059e6ecb728c60fd6847756f291.tar.bz2 |
- partly rearranged for better bc in the future
- led handling rewritten
- cleanups
- another try at fixing the OZ suspend "glitches"
-rw-r--r-- | libopie/odevice.cpp | 409 | ||||
-rw-r--r-- | libopie/odevice.h | 121 |
2 files changed, 356 insertions, 174 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index 3bc1e0c..c84312e 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp @@ -37,4 +37,7 @@ #include "odevice.h" +#include <qwindowsystem_qws.h> + + // _IO and friends are only defined in kernel headers ... @@ -46,7 +49,10 @@ #define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size)) +using namespace Opie; class ODeviceData { public: + bool m_qwsserver; + QString m_vendorstr; OVendor m_vendor; @@ -59,14 +65,13 @@ public: QString m_sysverstr; - - OLedState m_leds [4]; // just for convenience ... }; -class ODeviceIPAQ : public ODevice { + +class iPAQ : public QObject, public ODevice, public QWSServer::KeyboardFilter { protected: virtual void init ( ); public: - virtual bool setPowerButtonHandler ( PowerButtonHandler h ); + virtual bool setSoftSuspend ( bool soft ); virtual bool setDisplayBrightness ( int b ); @@ -74,16 +79,27 @@ public: virtual void alarmSound ( ); - - virtual uint hasLeds ( ) const; - virtual OLedState led ( uint which ) const; - virtual bool setLed ( uint which, OLedState st ); + + 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 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 ODeviceZaurus : public ODevice { +class Zaurus : public ODevice { protected: virtual void init ( ); public: - virtual bool setPowerButtonHandler ( PowerButtonHandler h ); + virtual bool setSoftSuspend ( bool soft ); virtual bool setDisplayBrightness ( int b ); @@ -94,10 +110,15 @@ public: virtual void touchSound ( ); - virtual uint hasLeds ( ) const; - virtual OLedState led ( uint which ) const; - virtual bool setLed ( uint which, OLedState st ); + 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 QValueList <int> keyList ( ) const; protected: virtual void buzzer ( int snd ); + + OLedState m_leds [1]; }; @@ -105,4 +126,7 @@ protected: + + + ODevice *ODevice::inst ( ) { @@ -111,7 +135,7 @@ ODevice *ODevice::inst ( ) if ( !dev ) { if ( QFile::exists ( "/proc/hal/model" )) - dev = new ODeviceIPAQ ( ); + dev = new iPAQ ( ); else if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" )) - dev = new ODeviceZaurus ( ); + dev = new Zaurus ( ); else dev = new ODevice ( ); @@ -134,10 +158,12 @@ ODevice::ODevice ( ) d = new ODeviceData; + d-> m_qwsserver = qApp ? ( qApp-> type ( ) == QApplication::GuiServer ) : false; + d-> m_modelstr = "Unknown"; - d-> m_model = OMODEL_Unknown; + d-> m_model = Model_Unknown; d-> m_vendorstr = "Unkown"; - d-> m_vendor = OVENDOR_Unknown; + d-> m_vendor = Vendor_Unknown; d-> m_systemstr = "Unkown"; - d-> m_system = OSYSTEM_Unknown; + d-> m_system = System_Unknown; d-> m_sysverstr = "0.0"; } @@ -152,5 +178,5 @@ ODevice::~ODevice ( ) } -bool ODevice::setPowerButtonHandler ( ODevice::PowerButtonHandler ) +bool ODevice::setSoftSuspend ( bool /*soft*/ ) { return false; @@ -164,5 +190,8 @@ bool ODevice::setPowerButtonHandler ( ODevice::PowerButtonHandler ) bool ODevice::suspend ( ) { - if ( d-> m_model == OMODEL_Unknown ) // better don't suspend in qvfb / on unkown devices + if ( !d-> m_qwsserver ) // only qwsserver is allowed to suspend + return false; + + if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices return false; @@ -174,5 +203,5 @@ bool ODevice::suspend ( ) struct timeval tvs, tvn; - ::signal ( SIGTSTP, SIG_IGN ); // we don't want to be stopped +// ::signal ( SIGTSTP, SIG_IGN ); // we don't want to be stopped ::gettimeofday ( &tvs, 0 ); @@ -180,7 +209,8 @@ bool ODevice::suspend ( ) res = ( ::ioctl ( fd, APM_IOC_SUSPEND, 0 ) == 0 ); // tell the kernel to "start" suspending + ::close ( fd ); if ( res ) { - ::kill ( -::getpid ( ), SIGTSTP ); // stop everthing in our process group +// ::kill ( -::getpid ( ), SIGTSTP ); // stop everthing in our process group do { // wait at most 1.5 sec: either suspend didn't work or the device resumed @@ -189,9 +219,8 @@ bool ODevice::suspend ( ) } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 ); - ::kill ( -::getpid ( ), SIGCONT ); // continue everything in our process group +// ::kill ( -::getpid ( ), SIGCONT ); // continue everything in our process group } - ::close ( fd ); - ::signal ( SIGTSTP, SIG_DFL ); +// ::signal ( SIGTSTP, SIG_DFL ); } @@ -212,5 +241,5 @@ bool ODevice::suspend ( ) bool ODevice::setDisplayStatus ( bool on ) { - if ( d-> m_model == OMODEL_Unknown ) + if ( d-> m_model == Model_Unknown ) return false; @@ -235,35 +264,35 @@ int ODevice::displayBrightnessResolution ( ) const } -QString ODevice::vendorString ( ) +QString ODevice::vendorString ( ) const { return d-> m_vendorstr; } -OVendor ODevice::vendor ( ) +OVendor ODevice::vendor ( ) const { return d-> m_vendor; } -QString ODevice::modelString ( ) +QString ODevice::modelString ( ) const { return d-> m_modelstr; } -OModel ODevice::model ( ) +OModel ODevice::model ( ) const { return d-> m_model; } -QString ODevice::systemString ( ) +QString ODevice::systemString ( ) const { return d-> m_systemstr; } -OSystem ODevice::system ( ) +OSystem ODevice::system ( ) const { return d-> m_system; } -QString ODevice::systemVersionString ( ) +QString ODevice::systemVersionString ( ) const { return d-> m_sysverstr; @@ -307,15 +336,21 @@ void ODevice::touchSound ( ) } -uint ODevice::hasLeds ( ) const + +QValueList <OLed> ODevice::ledList ( ) const +{ + return QValueList <OLed> ( ); +} + +QValueList <OLedState> ODevice::ledStateList ( OLed /*which*/ ) const { - return 0; + return QValueList <OLedState> ( ); } -OLedState ODevice::led ( uint /*which*/ ) const +OLedState ODevice::ledState ( OLed /*which*/ ) const { - return OLED_Off; + return Led_Off; } -bool ODevice::setLed ( uint /*which*/, OLedState /*st*/ ) +bool ODevice::setLedState ( OLed /*which*/, OLedState /*st*/ ) { return false; @@ -324,4 +359,10 @@ bool ODevice::setLed ( uint /*which*/, OLedState /*st*/ ) +//QValueList <int> ODevice::keyList ( ) const +//{ +// return QValueList <int> ( ); +//} + + /************************************************** @@ -331,8 +372,8 @@ bool ODevice::setLed ( uint /*which*/, OLedState /*st*/ ) **************************************************/ -void ODeviceIPAQ::init ( ) +void iPAQ::init ( ) { d-> m_vendorstr = "HP"; - d-> m_vendor = OVENDOR_HP; + d-> m_vendor = Vendor_HP; QFile f ( "/proc/hal/model" ); @@ -344,13 +385,13 @@ void ODeviceIPAQ::init ( ) if ( d-> m_modelstr == "H3100" ) - d-> m_model = OMODEL_iPAQ_H31xx; + d-> m_model = Model_iPAQ_H31xx; else if ( d-> m_modelstr == "H3600" ) - d-> m_model = OMODEL_iPAQ_H36xx; + d-> m_model = Model_iPAQ_H36xx; else if ( d-> m_modelstr == "H3700" ) - d-> m_model = OMODEL_iPAQ_H37xx; + d-> m_model = Model_iPAQ_H37xx; else if ( d-> m_modelstr == "H3800" ) - d-> m_model = OMODEL_iPAQ_H38xx; + d-> m_model = Model_iPAQ_H38xx; else - d-> m_model = OMODEL_Unknown; + d-> m_model = Model_Unknown; f. close ( ); @@ -360,5 +401,5 @@ void ODeviceIPAQ::init ( ) if ( f. open ( IO_ReadOnly )) { d-> m_systemstr = "Familiar"; - d-> m_system = OSYSTEM_Familiar; + d-> m_system = System_Familiar; QTextStream ts ( &f ); @@ -368,5 +409,10 @@ void ODeviceIPAQ::init ( ) } - d-> m_leds [0] = OLED_Off; + m_leds [0] = m_leds [1] = Led_Off; + + m_power_timer = 0; + + if ( d-> m_qwsserver ) + QWSServer::setKeyboardFilter ( this ); } @@ -390,5 +436,141 @@ typedef struct { -void ODeviceIPAQ::alarmSound ( ) + +QValueList <OLed> iPAQ::ledList ( ) const +{ + QValueList <OLed> vl; + vl << Led_Power; + + if ( d-> m_model == Model_iPAQ_H38xx ) + vl << Led_BlueTooth; + return vl; +} + +QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const +{ + QValueList <OLedState> vl; + + if ( l == Led_Power ) + vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; + else if ( l == Led_BlueTooth && d-> m_model == Model_iPAQ_H38xx ) + vl << Led_Off; // << Led_On << ??? + + return vl; +} + +OLedState iPAQ::ledState ( OLed l ) const +{ + switch ( l ) { + case Led_Power: + return m_leds [0]; + case Led_BlueTooth: + return m_leds [1]; + default: + return Led_Off; + } +} + +bool iPAQ::setLedState ( OLed l, OLedState st ) +{ + static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); + + if ( l == Led_Power ) { + if ( fd >= 0 ) { + LED_IN leds; + ::memset ( &leds, 0, sizeof( leds )); + leds. TotalTime = 0; + leds. OnTime = 0; + leds. OffTime = 1; + leds. OffOnBlink = 2; + + switch ( st ) { + case Led_Off : leds. OffOnBlink = 0; break; + case Led_On : leds. OffOnBlink = 1; break; + case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; + case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; + } + + if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { + m_leds [0] = st; + return true; + } + } + } + return false; +} + + +//QValueList <int> iPAQ::keyList ( ) const +//{ +// QValueList <int> vl; +// vl << HardKey_Datebook << HardKey_Contacts << ( model ( ) == Model_iPAQ_H38xx ? HardKey_Mail : HardKey_Menu ) << HardKey_Home << HardKey_Record << HardKey_Suspend << HardKey_Backlight; +// return vl; +//} + +bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) +{ + int newkeycode = keycode; + + + // simple susbstitutions + switch ( d-> m_model ) { + case Model_iPAQ_H38xx: + // H38xx has no "Q" key anymore - this is now the Mail key + if ( keycode == HardKey_Menu ) + newkeycode = HardKey_Mail; + //nobreak + + case Model_iPAQ_H31xx: + // Rotate cursor keys 180° + switch ( keycode ) { + case Key_Left : newkeycode = Key_Right; break; + case Key_Right: newkeycode = Key_Left; break; + case Key_Up : newkeycode = Key_Down; break; + case Key_Down : newkeycode = Key_Up; break; + } + break; + + case Model_iPAQ_H36xx: + case Model_iPAQ_H37xx: + // map Power Button short/long press to F34/F35 + if ( keycode == Key_SysReq ) { + if ( isPress ) { + if ( m_power_timer ) + killTimer ( m_power_timer ); + m_power_timer = startTimer ( 500 ); + } + else if ( m_power_timer ) { + killTimer ( m_power_timer ); + m_power_timer = 0; + QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false ); + QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false ); + } + newkeycode = Key_unknown; + } + break; + + default: + break; + } + + if ( newkeycode != keycode ) { + if ( newkeycode != Key_unknown ) + QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); + return true; + } + else + return false; +} + +void iPAQ::timerEvent ( QTimerEvent * ) +{ + killTimer ( m_power_timer ); + m_power_timer = 0; + QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); + QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); +} + + +void iPAQ::alarmSound ( ) { #if defined( QT_QWS_IPAQ ) // IPAQ @@ -433,47 +615,6 @@ void ODeviceIPAQ::alarmSound ( ) } -uint ODeviceIPAQ::hasLeds ( ) const -{ - return 1; -} - -OLedState ODeviceIPAQ::led ( uint which ) const -{ - if ( which == 0 ) - return d-> m_leds [0]; - else - return OLED_Off; -} -bool ODeviceIPAQ::setLed ( uint which, OLedState st ) -{ - static int fd = ::open ( "/dev/touchscreen/0", O_RDWR|O_NONBLOCK ); - - if ( which == 0 ) { - if ( fd >= 0 ) { - LED_IN leds; - ::memset ( &leds, 0, sizeof( leds )); - leds. TotalTime = 0; - leds. OnTime = 0; - leds. OffTime = 1; - leds. OffOnBlink = 2; - - switch ( st ) { - case OLED_Off : leds. OffOnBlink = 0; break; - case OLED_On : leds. OffOnBlink = 1; break; - case OLED_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; - case OLED_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; - } - - if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { - d-> m_leds [0] = st; - return true; - } - } - } - return false; -} - -bool ODeviceIPAQ::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) +bool iPAQ::setSoftSuspend ( bool soft ) { bool res = false; @@ -481,5 +622,5 @@ bool ODeviceIPAQ::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) { - if ( ::write ( fd, p == KERNEL ? "0" : "1", 1 ) == 1 ) + if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 ) res = true; else @@ -495,5 +636,5 @@ bool ODeviceIPAQ::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) -bool ODeviceIPAQ::setDisplayBrightness ( int bright ) +bool iPAQ::setDisplayBrightness ( int bright ) { bool res = false; @@ -522,5 +663,5 @@ bool ODeviceIPAQ::setDisplayBrightness ( int bright ) } -int ODeviceIPAQ::displayBrightnessResolution ( ) const +int iPAQ::displayBrightnessResolution ( ) const { return 255; // really 128, but logarithmic control is smoother this way @@ -536,10 +677,10 @@ int ODeviceIPAQ::displayBrightnessResolution ( ) const -void ODeviceZaurus::init ( ) +void Zaurus::init ( ) { d-> m_modelstr = "Zaurus SL5000"; - d-> m_model = OMODEL_Zaurus_SL5000; + d-> m_model = Model_Zaurus_SL5000; d-> m_vendorstr = "Sharp"; - d-> m_vendor = OVENDOR_Sharp; + d-> m_vendor = Vendor_Sharp; QFile f ( "/proc/filesystems" ); @@ -547,5 +688,5 @@ void ODeviceZaurus::init ( ) if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) { d-> m_systemstr = "OpenZaurus"; - d-> m_system = OSYSTEM_OpenZaurus; + d-> m_system = System_OpenZaurus; f. close ( ); @@ -560,9 +701,9 @@ void ODeviceZaurus::init ( ) else { d-> m_systemstr = "Zaurus"; - d-> m_system = OSYSTEM_Zaurus; + d-> m_system = System_Zaurus; } - d-> m_leds [0] = OLED_Off; + m_leds [0] = Led_Off; } @@ -634,5 +775,5 @@ typedef struct sharp_led_status { -void ODeviceZaurus::buzzer ( int sound ) +void Zaurus::buzzer ( int sound ) { static int fd = ::open ( "/dev/sharp_buz", O_RDWR|O_NONBLOCK ); @@ -643,15 +784,15 @@ void ODeviceZaurus::buzzer ( int sound ) -void ODeviceZaurus::alarmSound ( ) +void Zaurus::alarmSound ( ) { buzzer ( SHARP_BUZ_SCHEDULE_ALARM ); } -void ODeviceZaurus::touchSound ( ) +void Zaurus::touchSound ( ) { buzzer ( SHARP_BUZ_TOUCHSOUND ); } -void ODeviceZaurus::keySound ( ) +void Zaurus::keySound ( ) { buzzer ( SHARP_BUZ_KEYSOUND ); @@ -659,36 +800,48 @@ void ODeviceZaurus::keySound ( ) -uint ODeviceZaurus::hasLeds ( ) const +QValueList <OLed> Zaurus::ledList ( ) const +{ + QValueList <OLed> vl; + vl << Led_Mail; + return vl; +} + +QValueList <OLedState> Zaurus::ledStateList ( OLed l ) const { - return 1; + QValueList <OLedState> vl; + + if ( l == Led_Mail ) + vl << Led_Off << Led_On << Led_BlinkSlow; + return vl; } -OLedState ODeviceZaurus::led ( uint which ) const +OLedState Zaurus::ledState ( OLed which ) const { - if ( which == 0 ) - return d-> m_leds [0]; + if ( which == Led_Mail ) + return m_leds [0]; else - return OLED_Off; + return Led_Off; } -bool ODeviceZaurus::setLed ( uint which, OLedState st ) +bool Zaurus::setLedState ( OLed which, OLedState st ) { static int fd = ::open ( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); - if ( which == 0 ) { + if ( which == Led_Mail ) { if ( fd >= 0 ) { struct sharp_led_status leds; ::memset ( &leds, 0, sizeof( leds )); leds. which = SHARP_LED_MAIL_EXISTS; + bool ok = true; switch ( st ) { - case OLED_Off : leds. status = LED_MAIL_NO_UNREAD_MAIL; break; - case OLED_On : leds. status = LED_MAIL_NEWMAIL_EXISTS; break; - case OLED_BlinkSlow: - case OLED_BlinkFast: leds. status = LED_MAIL_UNREAD_MAIL_EX; break; + case Led_Off : leds. status = LED_MAIL_NO_UNREAD_MAIL; break; + case Led_On : leds. status = LED_MAIL_NEWMAIL_EXISTS; break; + case Led_BlinkSlow: leds. status = LED_MAIL_UNREAD_MAIL_EX; break; + default : ok = false; } - if ( ::ioctl ( fd, SHARP_LED_SETSTATUS, &leds ) >= 0 ) { - d-> m_leds [0] = st; + if ( ok && ( ::ioctl ( fd, SHARP_LED_SETSTATUS, &leds ) >= 0 )) { + m_leds [0] = st; return true; } @@ -698,5 +851,5 @@ bool ODeviceZaurus::setLed ( uint which, OLedState st ) } -bool ODeviceZaurus::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) +bool Zaurus::setSoftSuspend ( bool soft ) { bool res = false; @@ -709,10 +862,10 @@ bool ODeviceZaurus::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) if ( sources >= 0 ) { - if ( p == KERNEL ) - sources |= APM_EVT_POWER_BUTTON; - else + if ( soft ) sources &= ~APM_EVT_POWER_BUTTON; + else + sources |= APM_EVT_POWER_BUTTON; - if ( ::ioctl ( fd, APM_IOCSEVTSRC, sources & ~APM_EVT_POWER_BUTTON ) >= 0 ) // set new event sources + if ( ::ioctl ( fd, APM_IOCSEVTSRC, sources ) >= 0 ) // set new event sources res = true; else @@ -731,5 +884,5 @@ bool ODeviceZaurus::setPowerButtonHandler ( ODevice::PowerButtonHandler p ) -bool ODeviceZaurus::setDisplayBrightness ( int bright ) +bool Zaurus::setDisplayBrightness ( int bright ) { bool res = false; @@ -752,6 +905,14 @@ bool ODeviceZaurus::setDisplayBrightness ( int bright ) -int ODeviceZaurus::displayBrightnessResolution ( ) const +int Zaurus::displayBrightnessResolution ( ) const { return 4; } + +//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; +//} + diff --git a/libopie/odevice.h b/libopie/odevice.h index 2f676ff..38f3787 100644 --- a/libopie/odevice.h +++ b/libopie/odevice.h @@ -22,39 +22,58 @@ #include <qstring.h> - +#include <qnamespace.h> class ODeviceData; +namespace Opie { + enum OModel { - OMODEL_Unknown, + Model_Unknown, - OMODEL_iPAQ_H31xx, - OMODEL_iPAQ_H36xx, - OMODEL_iPAQ_H37xx, - OMODEL_iPAQ_H38xx, + Model_iPAQ_H31xx, + Model_iPAQ_H36xx, + Model_iPAQ_H37xx, + Model_iPAQ_H38xx, - OMODEL_Zaurus_SL5000 + Model_Zaurus_SL5000 }; enum OVendor { - OVENDOR_Unknown, + Vendor_Unknown, - OVENDOR_HP, - OVENDOR_Sharp + Vendor_HP, + Vendor_Sharp }; enum OSystem { - OSYSTEM_Unknown, + System_Unknown, - OSYSTEM_Familiar, - OSYSTEM_Zaurus, - OSYSTEM_OpenZaurus + System_Familiar, + System_Zaurus, + System_OpenZaurus }; enum OLedState { - OLED_Off, - OLED_On, - OLED_BlinkSlow, - OLED_BlinkFast + Led_Off, + Led_On, + Led_BlinkSlow, + Led_BlinkFast +}; + +enum OLed { + Led_Mail, + Led_Power, + Led_BlueTooth +}; + +enum OHardKey { + HardKey_Datebook = Qt::Key_F9, + HardKey_Contacts = Qt::Key_F10, + HardKey_Menu = Qt::Key_F11, + HardKey_Home = Qt::Key_F12, + HardKey_Mail = Qt::Key_F14, + HardKey_Record = Qt::Key_F24, + HardKey_Suspend = Qt::Key_F34, + HardKey_Backlight = Qt::Key_F35, }; @@ -62,33 +81,42 @@ enum OLedState { class ODevice { +private: + ODevice ( const ODevice & ); + +protected: + ODevice ( ); + virtual void init ( ); + + ODeviceData *d; + public: + virtual ~ODevice ( ); + static ODevice *inst ( ); -// system - enum PowerButtonHandler { - KERNEL, - OPIE - }; - virtual bool setPowerButtonHandler ( PowerButtonHandler h ); - virtual bool suspend ( ); - virtual bool setDisplayStatus ( bool on ); - virtual bool setDisplayBrightness ( int brightness ); - virtual int displayBrightnessResolution ( ) const; - // information - QString modelString ( ); - OModel model ( ); + QString modelString ( ) const; + OModel model ( ) const; - QString vendorString ( ); - OVendor vendor ( ); + QString vendorString ( ) const; + OVendor vendor ( ) const; + + QString systemString ( ) const; + OSystem system ( ) const; + + QString systemVersionString ( ) const; - QString systemString ( ); - OSystem system ( ); +// system - QString systemVersionString ( ); + virtual bool setSoftSuspend ( bool on ); + virtual bool suspend ( ); + virtual bool setDisplayStatus ( bool on ); + virtual bool setDisplayBrightness ( int brightness ); + virtual int displayBrightnessResolution ( ) const; + // input / output @@ -97,21 +125,14 @@ public: virtual void touchSound ( ); - virtual uint hasLeds ( ) const; - virtual OLedState led ( uint which ) const; - virtual bool setLed ( uint which, OLedState st ); - - virtual ~ODevice ( ); + 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 ); -protected: - ODevice ( ); - virtual void init ( ); - - ODeviceData *d; - -private: - ODevice ( const ODevice & ); + //virtual QValueList <int> keyList ( ) const; }; -#endif +} +#endif |