summaryrefslogtreecommitdiff
path: root/libopie2
authormickeyl <mickeyl>2006-06-09 00:21:31 (UTC)
committer mickeyl <mickeyl>2006-06-09 00:21:31 (UTC)
commitab1422b3e7df8644d6df2519f5ef5b5c831e3965 (patch) (side-by-side diff)
tree8e25b980c4898f3253a8d1f9efb23494ff4033ed /libopie2
parentf469b23ef6f69b379dcb75834c14d19dbc4676d0 (diff)
downloadopie-ab1422b3e7df8644d6df2519f5ef5b5c831e3965.zip
opie-ab1422b3e7df8644d6df2519f5ef5b5c831e3965.tar.gz
opie-ab1422b3e7df8644d6df2519f5ef5b5c831e3965.tar.bz2
add brightness control for motorola ezx
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_motorola_ezx.cpp55
1 files changed, 11 insertions, 44 deletions
diff --git a/libopie2/opiecore/device/odevice_motorola_ezx.cpp b/libopie2/opiecore/device/odevice_motorola_ezx.cpp
index 69256dd..eed81ac 100644
--- a/libopie2/opiecore/device/odevice_motorola_ezx.cpp
+++ b/libopie2/opiecore/device/odevice_motorola_ezx.cpp
@@ -27,299 +27,266 @@
*/
#include "odevice_motorola_ezx.h"
/* OPIE */
#include <opie2/oinputsystem.h>
#include <opie2/oresource.h>
#include <qpe/config.h>
#include <qpe/sound.h>
/* QT */
#include <qapplication.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qwindowsystem_qws.h>
#include <qcopchannel_qws.h>
/* STD */
#include <assert.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>
#include <math.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <unistd.h>
#ifndef QT_NO_SOUND
#include <linux/soundcard.h>
#endif
using namespace Opie::Core;
using namespace Opie::Core::Internal;
struct ezx_button ezx_buttons [] = {
{ Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
"devicebuttons/z_calendar",
"datebook", "nextView()",
"today", "raise()" },
{ Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
"devicebuttons/z_contact",
"addressbook", "raise()",
"addressbook", "beamBusinessCard()" },
{ Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
"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()" },
};
void Motorola_EZX::init(const QString& cpu_info)
{
qDebug( "Motorola_EZX::init()" );
// Set the time to wait until the system is really suspended
// the delta between apm --suspend and sleeping
setAPMTimeOut( 15000 );
d->m_vendorstr = "OpenEZX Team";
d->m_systemstr = "OpenEZX";
d->m_system = System_OpenEZX;
// sysver already gathered
// check the Motorola_EZX model
QString model;
int loc = cpu_info.find( ":" );
if ( loc != -1 )
model = cpu_info.mid( loc+2 ).simplifyWhiteSpace();
else
model = cpu_info;
if ( model == "Motorola Ezx Platform" ) {
d->m_model = Model_Motorola_EZX;
d->m_modelstr = "Motorola_EZX";
} else assert( 0 );
// set path to backlight device in kernel 2.6
m_backlightdev = "/sys/class/backlight/ezx-bl/";
d->m_rotation = Rot0;
//initHingeSensor();
// set default qte driver and led state
d->m_qteDriver = "Transformed";
m_leds[0] = Led_Off;
qDebug( "Motorola_EZX::init() - Using the 2.6 OpenEZX HAL on a %s", (const char*) d->m_modelstr );
}
void Motorola_EZX::initButtons()
{
qDebug( "Motorola_EZX::initButtons()" );
if ( d->m_buttons )
return;
d->m_buttons = new QValueList <ODeviceButton>;
struct ezx_button * ezx_buttons;
int buttoncount;
/*
switch ( d->m_model )
{
case Model_Motorola_EZX_SL6000:
pezx_buttons = ezx_buttons_6000;
buttoncount = ARRAY_SIZE(ezx_buttons_6000);
break;
case Model_Motorola_EZX_SLC3100: // fallthrough
case Model_Motorola_EZX_SLC3000: // fallthrough
case Model_Motorola_EZX_SLC1000: // fallthrough
case Model_Motorola_EZX_SLC7x0:
if ( isQWS( ) )
{
addPreHandler(this);
}
pezx_buttons = ezx_buttons_c700;
buttoncount = ARRAY_SIZE(ezx_buttons_c700);
break;
default:
pezx_buttons = ezx_buttons;
buttoncount = ARRAY_SIZE(ezx_buttons);
break;
}
for ( int i = 0; i < buttoncount; i++ ) {
struct ezx_button *zb = pezx_buttons + i;
ODeviceButton b;
b.setKeycode( zb->code );
b.setUserText( QObject::tr( "Button", zb->utext ));
b.setPixmap( OResource::loadPixmap( zb->pix ));
b.setFactoryPresetPressedAction( OQCopMessage( makeChannel ( zb->fpressedservice ), zb->fpressedaction ));
b.setFactoryPresetHeldAction( OQCopMessage( makeChannel ( zb->fheldservice ), zb->fheldaction ));
d->m_buttons->append( b );
}
*/
reloadButtonMapping();
}
void Motorola_EZX::playAlarmSound()
{
#ifndef QT_NO_SOUND
static Sound snd ( "alarm" );
if(!snd.isFinished())
return;
changeMixerForAlarm(0, "/dev/sound/mixer", &snd );
snd. play();
#endif
}
QValueList <OLed> Motorola_EZX::ledList() const
{
QValueList <OLed> vl;
vl << Led_Mail;
return vl;
}
QValueList <OLedState> Motorola_EZX::ledStateList( OLed l ) const
{
QValueList <OLedState> vl;
if ( l == Led_Mail )
vl << Led_Off << Led_On << Led_BlinkSlow;
return vl;
}
OLedState Motorola_EZX::ledState( OLed which ) const
{
if ( which == Led_Mail )
return m_leds [0];
else
return Led_Off;
}
bool Motorola_EZX::setLedState( OLed which, OLedState st )
{
// Currently not supported
qDebug( "Motorola_EZX::setLedState: ODevice handling not yet implemented" );
return false;
}
int Motorola_EZX::displayBrightnessResolution() const
{
- // Currently not supported
- qDebug( "Motorola_EZX::displayBrightnessResolution: ODevice handling not yet implemented" );
- return 100;
-
-#if 0
int res = 1;
- if (m_embedix)
- {
- int fd = ::open( SHARP_FL_IOCTL_DEVICE, O_RDWR|O_NONBLOCK );
- if ( fd )
- {
- int value = ::ioctl( fd, SHARP_FL_IOCTL_GET_STEP, 0 );
- ::close( fd );
- return value ? value : res;
- }
- }
- else
+ int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
+ if ( fd )
{
- int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
- if ( fd )
- {
- char buf[100];
- if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
- ::close( fd );
- }
+ char buf[100];
+ if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
+ ::close( fd );
}
return res;
-#endif
}
bool Motorola_EZX::setDisplayBrightness( int bright )
{
qDebug( "Motorola_EZX::setDisplayBrightness( %d )", bright );
return false;
-#if 0
bool res = false;
if ( bright > 255 ) bright = 255;
if ( bright < 0 ) bright = 0;
int numberOfSteps = displayBrightnessResolution();
int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
- if ( m_embedix )
- {
- int fd = ::open( SHARP_FL_IOCTL_DEVICE, O_WRONLY|O_NONBLOCK );
- if ( fd )
- {
- res = ( ::ioctl( fd, SHARP_FL_IOCTL_STEP_CONTRAST, val ) == 0 );
- ::close( fd );
- }
- }
- else
+ int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
+ if ( fd )
{
- int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
- if ( fd )
- {
- char buf[100];
- int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
- res = ( ::write( fd, &buf[0], len ) == 0 );
- ::close( fd );
- }
+ char buf[100];
+ int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
+ res = ( ::write( fd, &buf[0], len ) == 0 );
+ ::close( fd );
}
return res;
-#endif
}
bool Motorola_EZX::setDisplayStatus( bool on )
{
bool res = false;
int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK );
if ( fd )
{
char buf[10];
buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
buf[1] = '\0';
res = ( ::write( fd, &buf[0], 2 ) == 0 );
::close( fd );
}
return res;
}
void Motorola_EZX::systemMessage( const QCString &msg, const QByteArray & )
{
if ( msg == "deviceButtonMappingChanged()" ) {
reloadButtonMapping();
}
}
bool Motorola_EZX::suspend() {
if ( !isQWS( ) ) // only qwsserver is allowed to suspend
return false;
bool res = false;
QCopChannel::send( "QPE/System", "aboutToSuspend()" );
struct timeval tvs, tvn;
::gettimeofday ( &tvs, 0 );
::sync(); // flush fs caches
res = ( ::system ( "apm --suspend" ) == 0 );
QCopChannel::send( "QPE/System", "returnFromSuspend()" );
return res;
}