summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/device
authormickeyl <mickeyl>2005-02-06 22:53:53 (UTC)
committer mickeyl <mickeyl>2005-02-06 22:53:53 (UTC)
commitab32151cd8e85deb354bab04e25efb1f3f399dee (patch) (side-by-side diff)
tree66ab72d210bbc50c0e535986c61ca23f68efbfd1 /libopie2/opiecore/device
parentec33239c6edd9927fe2f82953fa48dec47d19567 (diff)
downloadopie-ab32151cd8e85deb354bab04e25efb1f3f399dee.zip
opie-ab32151cd8e85deb354bab04e25efb1f3f399dee.tar.gz
opie-ab32151cd8e85deb354bab04e25efb1f3f399dee.tar.bz2
make autorotate also work on kernel 2.6
Diffstat (limited to 'libopie2/opiecore/device') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice.cpp62
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp22
2 files changed, 22 insertions, 62 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp
index 3d69614..2c5190c 100644
--- a/libopie2/opiecore/device/odevice.cpp
+++ b/libopie2/opiecore/device/odevice.cpp
@@ -262,130 +262,91 @@ ODevice::~ODevice()
* This method will try to suspend the device
* It only works if the user is the QWS Server and the apm application
* is installed.
* It tries to suspend and then waits some time cause some distributions
* do have asynchronus apm implementations.
* This method will either fail and return false or it'll suspend the
* device and return once the device got woken up
*
* @return if the device got suspended
*/
bool ODevice::suspend()
{
- if ( !isQWS( ) ) // 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;
-
- bool res = false;
- ODevice::sendSuspendmsg();
-
- struct timeval tvs, tvn;
- ::gettimeofday ( &tvs, 0 );
-
- ::sync(); // flush fs caches
- res = ( ::system ( "apm --suspend" ) == 0 );
-
- // This is needed because the iPAQ apm implementation is asynchronous and we
- // can not be sure when exactly the device is really suspended
- // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists.
-
- if ( res ) {
- do { // wait at most 1.5 sec: either suspend didn't work or the device resumed
- ::usleep ( 200 * 1000 );
- ::gettimeofday ( &tvn, 0 );
- } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 1500 );
- }
-
- return res;
+ return false; // default implementation == unknown device or qvfb
}
//#include <linux/fb.h> better not rely on kernel headers in userspace ...
#define FBIOBLANK OD_IO( 'F', 0x11 ) // 0x4611
/* VESA Blanking Levels */
#define VESA_NO_BLANKING 0
#define VESA_VSYNC_SUSPEND 1
#define VESA_HSYNC_SUSPEND 2
#define VESA_POWERDOWN 3
/**
* This sets the display on or off
*/
bool ODevice::setDisplayStatus ( bool on )
{
- qDebug("ODevice::setDisplayStatus(%d)", on);
-
- if ( d->m_model == Model_Unknown )
- return false;
-
- bool res = false;
- int fd;
-
-#ifdef QT_QWS_DEVFS
- if (( fd = ::open ( "/dev/fb/0", O_RDWR )) >= 0 ) {
-#else
- if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) {
-#endif
- res = ( ::ioctl ( fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN ) == 0 );
- ::close ( fd );
- }
- return res;
+ qDebug( "ODevice::setDisplayStatus( %d ) - please override me.", on );
+ return false; // don't do anything for unknown models
}
/**
* This sets the display brightness
*
* @param b The brightness to be set on a scale from 0 to 255
* @return success or failure
*/
bool ODevice::setDisplayBrightness ( int b)
{
- Q_UNUSED( b )
+ qDebug( "ODevice::setDisplayBrightness( %d ) - please override me.", b );
return false;
}
/**
*
- * @return Returns the number of steppings on the brightness slider
- * in the Light-'n-Power settings. Values smaller zero and bigger
+ * @returns the number of steppings on the brightness slider
+ * in the Light-'n-Power settings. Values smaller than zero and bigger
* than 255 do not make sense.
*
* \sa QSlider::setLineStep
* \sa QSlider::setPageStep
*/
int ODevice::displayBrightnessResolution() const
{
+ qDebug( "ODevice::displayBrightnessResolution() - please override me." );
return 16;
}
/**
* This sets the display contrast
* @param p The contrast to be set on a scale from 0 to 255
-* @return success or failure
+* @returns success or failure
*/
bool ODevice::setDisplayContrast ( int p)
{
- Q_UNUSED( p )
+ qDebug( "ODevice::setDisplayContrast( %d ) - please override me.", p );
return false;
}
/**
-* @return return the max value for the brightness settings slider
+* @returns the maximum value for the contrast settings slider
* or 0 if the device doesn't support setting of a contrast
*/
int ODevice::displayContrastResolution() const
{
+ qDebug( "ODevice::displayBrightnessResolution() - please override me." );
return 0;
}
/**
* This returns the vendor as string
* @return Vendor as QString
*/
QString ODevice::vendorString() const
{
return d->m_vendorstr;
}
@@ -670,25 +631,24 @@ void ODevice::reloadButtonMapping()
if ( cfg. hasGroup ( group )) {
cfg. setGroup ( group );
pch = cfg. readEntry ( "PressedActionChannel" ). latin1();
pm = cfg. readEntry ( "PressedActionMessage" ). latin1();
// pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" ));
hch = cfg. readEntry ( "HeldActionChannel" ). latin1();
hm = cfg. readEntry ( "HeldActionMessage" ). latin1();
// hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" ));
}
b. setPressedAction ( OQCopMessage ( pch, pm, pdata ));
-
b. setHeldAction ( OQCopMessage ( hch, hm, hdata ));
}
}
void ODevice::remapPressedAction ( int button, const OQCopMessage &action )
{
initButtons();
QString mb_chan;
if ( button >= (int) d->m_buttons->count())
return;
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index 7377965..82e127e 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -93,36 +93,36 @@ struct z_button z_buttons_c700 [] = {
"devicebuttons/z_home",
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
{ Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
"devicebuttons/z_menu",
"QPE/TaskBar", "toggleMenu()",
"QPE/TaskBar", "toggleStartMenu()" },
{ Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
"devicebuttons/z_mail",
"opiemail", "raise()",
"opiemail", "newMail()" },
- { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Display Rotate"),
- "devicebuttons/z_hinge",
+ { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Hinge1"),
+ "devicebuttons/z_hinge1",
"QPE/Rotation", "rotateDefault()",
- "QPE/Dummy", "doNothing()" },
- { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Display Rotate"),
- "devicebuttons/z_hinge",
+ "QPE/Rotation", "rotateDefault()" },
+ { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Hinge2"),
+ "devicebuttons/z_hinge2",
"QPE/Rotation", "rotateDefault()",
- "QPE/Dummy", "doNothing()" },
- { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Display Rotate"),
- "devicebuttons/z_hinge",
+ "QPE/Rotation", "rotateDefault()" },
+ { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Hinge3"),
+ "devicebuttons/z_hinge3",
"QPE/Rotation", "rotateDefault()",
- "QPE/Dummy", "doNothing()" },
+ "QPE/Rotation", "rotateDefault()" },
};
// FIXME This gets unnecessary complicated. We should think about splitting the Zaurus
// class up into individual classes. We need three classes
//
// Zaurus-Collie (SA-model w/ 320x240 lcd, for SL5500 and SL5000)
// Zaurus-Poodle (PXA-model w/ 320x240 lcd, for SL5600)
// Zaurus-Corgi (PXA-model w/ 640x480 lcd, for C700, C750, C760, C860, C3000)
// Zaurus-Tosa (PXA-model w/ 480x640 lcd, for SL6000)
//
// Only question right now is: Do we really need to do it? Because as soon
// as the OpenZaurus kernel is ready, there will be a unified interface for all
@@ -479,25 +479,25 @@ bool Zaurus::setDisplayStatus( bool on )
::close( fd );
}
}
return res;
}
bool Zaurus::suspend()
{
qDebug("ODevice::suspend");
if ( !isQWS( ) ) // only qwsserver is allowed to suspend
return false;
- if ( d->m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices
+ if ( d->m_model == Model_Unknown ) // better don't suspend on unknown devices
return false;
bool res = false;
ODevice::sendSuspendmsg();
struct timeval tvs, tvn;
::gettimeofday ( &tvs, 0 );
::sync(); // flush fs caches
res = ( ::system ( "apm --suspend" ) == 0 );
// This is needed because the apm implementation is asynchronous and we
@@ -525,25 +525,25 @@ Transformation Zaurus::rotation() const
{
OHingeStatus hs = readHingeSensor();
qDebug( "Zaurus::rotation() - hinge sensor = %d", (int) hs );
if ( m_embedix )
{
if ( hs == CASE_PORTRAIT ) rot = Rot0;
else if ( hs == CASE_UNKNOWN ) rot = Rot0;
else rot = Rot270;
}
else
{
- if ( hs == CASE_PORTRAIT ) rot = Rot270;
+ if ( hs == CASE_PORTRAIT ) rot = Rot90;
else if ( hs == CASE_UNKNOWN ) rot = Rot0;
else rot = Rot0;
}
}
break;
case Model_Zaurus_SL6000:
case Model_Zaurus_SLB600:
case Model_Zaurus_SLA300:
case Model_Zaurus_SL5500:
case Model_Zaurus_SL5000:
default:
rot = d->m_rotation;