summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-06-12 16:54:50 (UTC)
committer mickeyl <mickeyl>2004-06-12 16:54:50 (UTC)
commitb1235df3628d178891eeefed630a22da46b25952 (patch) (side-by-side diff)
treec88a3cb04adcc9fe214ff08e3c0b96b21e3c4f0a
parent7a62e8e3601ee98f5f06261c361fe8132334cd56 (diff)
downloadopie-b1235df3628d178891eeefed630a22da46b25952.zip
opie-b1235df3628d178891eeefed630a22da46b25952.tar.gz
opie-b1235df3628d178891eeefed630a22da46b25952.tar.bz2
- refactor the distribution detection code
- add detection of OpenEmbedded and generic linux distributions - simplify the zaurus model detection code
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice.cpp65
-rw-r--r--libopie2/opiecore/device/odevice.h64
-rw-r--r--libopie2/opiecore/device/odevice_ipaq.cpp25
-rw-r--r--libopie2/opiecore/device/odevice_jornada.cpp19
-rw-r--r--libopie2/opiecore/device/odevice_ramses.cpp12
-rw-r--r--libopie2/opiecore/device/odevice_simpad.cpp65
-rw-r--r--libopie2/opiecore/device/odevice_yopy.cpp11
-rw-r--r--libopie2/opiecore/device/odevice_zaurus.cpp69
8 files changed, 141 insertions, 189 deletions
diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp
index cef7f63..5b73e59 100644
--- a/libopie2/opiecore/device/odevice.cpp
+++ b/libopie2/opiecore/device/odevice.cpp
@@ -1,56 +1,56 @@
/*
- This file is part of the Opie Project
- Copyright (C) The Opie Team <opie-devel@handhelds.org>
+                 This file is part of the Opie Project
+              Copyright (C) The Opie Team <opie-devel@handhelds.org>
=.
.=l.
- .>+-=
-_;:, .> :=|. This program is free software; you can
-.> <`_, > . <= redistribute it and/or modify it under
-:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
-.="- .-=="i, .._ License as published by the Free Software
-- . .-<_> .<> Foundation; either version 2 of the License,
- ._= =} : or (at your option) any later version.
- .%`+i> _;_.
- .i_,=:_. -<s. This program is distributed in the hope that
- + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
- : .. .:, . . . without even the implied warranty of
- =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
- _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
-..}^=.= = ; Library General Public License for more
-++= -. .` .: details.
-: = ...= . :.=-
--. .:....=;==+<; You should have received a copy of the GNU
- -_. . . )=. = Library General Public License along with
- -- :-=` this library; see the file COPYING.LIB.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "odevice_ipaq.h"
#include "odevice_jornada.h"
#include "odevice_ramses.h"
#include "odevice_simpad.h"
#include "odevice_yopy.h"
#include "odevice_zaurus.h"
/* QT */
#include <qapplication.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qwindowsystem_qws.h>
/* OPIE */
#include <qpe/config.h>
#include <qpe/resource.h>
#include <qpe/sound.h>
#include <qpe/qcopenvelope_qws.h>
/* STD */
#include <fcntl.h>
#include <math.h>
#include <stdlib.h>
#include <signal.h>
#include <sys/ioctl.h>
#include <sys/time.h>
#include <unistd.h>
@@ -114,67 +114,88 @@ ODevice *ODevice::inst()
else qWarning( "ODevice() - unknown hardware - using default." );
break;
}
}
}
else
{
qWarning( "ODevice() - can't open '%s' - unknown hardware - using default.", PATH_PROC_CPUINFO );
}
if ( !dev ) dev = new ODevice();
dev->init(cpu_info);
}
return dev;
}
ODevice::ODevice()
{
d = new ODeviceData;
d->m_modelstr = "Unknown";
d->m_model = Model_Unknown;
d->m_vendorstr = "Unknown";
d->m_vendor = Vendor_Unknown;
d->m_systemstr = "Unknown";
d->m_system = System_Unknown;
d->m_sysverstr = "0.0";
d->m_rotation = Rot0;
d->m_direction = CW;
d->m_holdtime = 1000; // 1000ms
d->m_buttons = 0;
d->m_cpu_frequencies = new QStrList;
+
+ // New distribution detection code first checks for legacy distributions,
+ // identified by /etc/familiar-version or /etc/oz_version.
+ // Then check for OpenEmbedded and lastly, read /etc/issue
+
+ for ( unsigned int i = 0; i < sizeof distributions; ++i )
+ {
+ if ( QFile::exists( distributions[i].sysvfile ) )
+ {
+ d->m_systemstr = distributions[i].sysstr;
+ d->m_system = distributions[i].system;
+ d->m_sysverstr = "<Unknown>";
+ QFile f( distributions[i].sysvfile );
+ if ( f.open( IO_ReadOnly ) )
+ {
+ QTextStream ts( &f );
+ d->m_sysverstr = ts.readLine();
+ }
+ break;
+ }
+ }
}
-void ODevice::systemMessage ( const QCString &msg, const QByteArray & )
+void ODevice::systemMessage( const QCString &msg, const QByteArray & )
{
if ( msg == "deviceButtonMappingChanged()" ) {
reloadButtonMapping();
}
}
void ODevice::init(const QString&)
{
}
/**
* This method initialises the button mapping
*/
void ODevice::initButtons()
{
if ( d->m_buttons )
return;
qDebug ( "init Buttons" );
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( default_buttons ) / sizeof( default_button )); i++ ) {
default_button *db = default_buttons + i;
ODeviceButton b;
b. setKeycode ( db->code );
b. setUserText ( QObject::tr ( "Button", db->utext ));
b. setPixmap ( Resource::loadPixmap ( db->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( db->fpressedservice ), db->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( db->fheldservice ), db->fheldaction ));
d->m_buttons->append ( b );
}
reloadButtonMapping();
diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h
index aaebde3..474d792 100644
--- a/libopie2/opiecore/device/odevice.h
+++ b/libopie2/opiecore/device/odevice.h
@@ -1,56 +1,56 @@
/*
- This file is part of the Opie Project
- Copyright (C) The Opie Team <opie-devel@handhelds.org>
+                 This file is part of the Opie Project
+              Copyright (C) The Opie Team <opie-devel@handhelds.org>
=.
.=l.
- .>+-=
-_;:, .> :=|. This program is free software; you can
-.> <`_, > . <= redistribute it and/or modify it under
-:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
-.="- .-=="i, .._ License as published by the Free Software
-- . .-<_> .<> Foundation; either version 2 of the License,
- ._= =} : or (at your option) any later version.
- .%`+i> _;_.
- .i_,=:_. -<s. This program is distributed in the hope that
- + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
- : .. .:, . . . without even the implied warranty of
- =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
- _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
-..}^=.= = ; Library General Public License for more
-++= -. .` .: details.
-: = ...= . :.=-
--. .:....=;==+<; You should have received a copy of the GNU
- -_. . . )=. = Library General Public License along with
- -- :-=` this library; see the file COPYING.LIB.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#ifndef ODEVICE_H_
#define ODEVICE_H_
/* OPIE */
#include <opie2/odevicebutton.h>
#include <qpe/qpeapplication.h> /* for Transformation enum.. */
/* QT */
#include <qnamespace.h>
#include <qobject.h>
#include <qstring.h>
#include <qstrlist.h>
namespace Opie{
namespace Core{
class ODeviceData;
/**
* The available devices
*/
enum OModel {
Model_Unknown, // = 0
Model_Series_Mask = 0xff000000,
Model_iPAQ = ( 1 << 24 ),
@@ -65,89 +65,111 @@ enum OModel {
Model_Jornada = ( 6 << 24 ),
Model_Jornada_56x = ( Model_Jornada | 0x000001 ),
Model_Zaurus = ( 2 << 24 ),
Model_Zaurus_SL5000 = ( Model_Zaurus | 0x000001 ),
Model_Zaurus_SL5500 = ( Model_Zaurus | 0x000002 ),
Model_Zaurus_SLA300 = ( Model_Zaurus | 0x000003 ),
Model_Zaurus_SLB600 = ( Model_Zaurus | 0x000004 ),
Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x000005 ),
Model_SIMpad = ( 3 << 24 ),
Model_SIMpad_All = ( Model_SIMpad | 0xffffff ),
Model_SIMpad_CL4 = ( Model_SIMpad | 0x000001 ),
Model_SIMpad_SL4 = ( Model_SIMpad | 0x000002 ),
Model_SIMpad_SLC = ( Model_SIMpad | 0x000004 ),
Model_SIMpad_TSinus = ( Model_SIMpad | 0x000008 ),
Model_Ramses = ( 4 << 24 ),
Model_Ramses_All = ( Model_Ramses | 0xffffff ),
Model_Ramses_MNCI = ( Model_Ramses | 0x000001 ),
Model_Yopy = ( 5 << 24 ),
Model_Yopy_All = ( Model_Yopy | 0xffffff ),
Model_Yopy_3000 = ( Model_Yopy | 0x000001 ),
Model_Yopy_3500 = ( Model_Yopy | 0x000002 ),
Model_Yopy_3700 = ( Model_Yopy | 0x000003 ),
+ Model_Beagle = ( 6 << 24 ),
+
+ Model_Beagle_All = ( Model_Beagle | 0xffffff ),
+ Model_Beagle_PA100 = ( Model_Beagle | 0x000001 ),
+
};
/**
* The vendor of the device
*/
enum OVendor {
Vendor_Unknown,
Vendor_HP,
Vendor_Sharp,
Vendor_SIEMENS,
Vendor_MundN,
Vendor_GMate,
+ Vendor_MasterIA,
};
/**
* The System used
*/
enum OSystem {
System_Unknown,
System_Familiar,
System_Zaurus,
System_OpenZaurus,
System_Linupy,
+ System_OpenEmbedded,
+};
+
+typedef struct {
+ OSystem system;
+ char* sysstr;
+ char* sysvfile;
+} ODistribution;
+
+static ODistribution distributions[] =
+{
+ { System_Familiar, "FamiliarLinux", "/etc/familiar-version" },
+ { System_OpenZaurus, "OpenZaurus", "/etc/oz_version" },
+ { System_OpenEmbedded, "OpenEmbedded", "/etc/oe-version" },
+ { System_Unknown, "Linux", "/etc/issue" },
+
};
enum OLedState {
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_F13,
HardKey_Record = Qt::Key_F24,
HardKey_Suspend = Qt::Key_F34,
HardKey_Backlight = Qt::Key_F35,
HardKey_Action = Qt::Key_F10,
HardKey_OK = Qt::Key_F11,
HardKey_End = Qt::Key_F12,
};
enum ODirection {
CW = 0,
CCW = 1,
diff --git a/libopie2/opiecore/device/odevice_ipaq.cpp b/libopie2/opiecore/device/odevice_ipaq.cpp
index efe35e7..16c0538 100644
--- a/libopie2/opiecore/device/odevice_ipaq.cpp
+++ b/libopie2/opiecore/device/odevice_ipaq.cpp
@@ -109,107 +109,82 @@ struct i_button ipaq_buttons [] = {
"buttonsettings", "raise()" },
{ Model_iPAQ_H31xx | Model_iPAQ_H36xx | Model_iPAQ_H37xx | Model_iPAQ_H38xx | Model_iPAQ_H39xx | Model_iPAQ_H5xxx,
Qt::Key_F24, QT_TRANSLATE_NOOP("Button", "Record Button"),
"devicebuttons/ipaq_record",
"QPE/VMemo", "toggleRecord()",
"sound", "raise()" },
};
void iPAQ::init(const QString& model)
{
d->m_vendorstr = "HP";
d->m_vendor = Vendor_HP;
d->m_modelstr = model.mid(model.findRev('H'));
if ( d->m_modelstr == "H3100" )
d->m_model = Model_iPAQ_H31xx;
else if ( d->m_modelstr == "H3600" )
d->m_model = Model_iPAQ_H36xx;
else if ( d->m_modelstr == "H3700" )
d->m_model = Model_iPAQ_H37xx;
else if ( d->m_modelstr == "H3800" )
d->m_model = Model_iPAQ_H38xx;
else if ( d->m_modelstr == "H3900" )
d->m_model = Model_iPAQ_H39xx;
else if ( d->m_modelstr == "H5400" )
d->m_model = Model_iPAQ_H5xxx;
else if ( d->m_modelstr == "H2200" )
d->m_model = Model_iPAQ_H22xx;
else
d->m_model = Model_Unknown;
-
-
switch ( d->m_model ) {
case Model_iPAQ_H31xx:
case Model_iPAQ_H38xx:
d->m_rotation = Rot90;
break;
case Model_iPAQ_H5xxx:
case Model_iPAQ_H22xx:
d->m_rotation = Rot0;
break;
case Model_iPAQ_H36xx:
case Model_iPAQ_H37xx:
case Model_iPAQ_H39xx:
default:
d->m_rotation = Rot270;
break;
}
- QFile f( "/etc/familiar-version" );
- if ( f. open ( IO_ReadOnly )) {
- d->m_systemstr = "Familiar";
- d->m_system = System_Familiar;
-
- QTextStream ts ( &f );
- d->m_sysverstr = ts. readLine(). mid ( 10 );
-
- f. close();
- } else {
- f. setName ( "/etc/oz_version" );
-
- if ( f. open ( IO_ReadOnly )) {
- d->m_systemstr = "OpenEmbedded/iPaq";
- d->m_system = System_Familiar;
-
- QTextStream ts ( &f );
- ts.setDevice ( &f );
- d->m_sysverstr = ts. readLine();
- f. close();
- }
- }
-
m_leds [0] = m_leds [1] = Led_Off;
m_power_timer = 0;
}
void iPAQ::initButtons()
{
if ( d->m_buttons )
return;
if ( isQWS( ) )
QWSServer::setKeyboardFilter ( this );
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) {
i_button *ib = ipaq_buttons + i;
ODeviceButton b;
if (( ib->model & d->m_model ) == d->m_model ) {
b. setKeycode ( ib->code );
b. setUserText ( QObject::tr ( "Button", ib->utext ));
b. setPixmap ( Resource::loadPixmap ( ib->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction ));
d->m_buttons->append ( b );
}
}
reloadButtonMapping();
diff --git a/libopie2/opiecore/device/odevice_jornada.cpp b/libopie2/opiecore/device/odevice_jornada.cpp
index 1f69326..5d32901 100644
--- a/libopie2/opiecore/device/odevice_jornada.cpp
+++ b/libopie2/opiecore/device/odevice_jornada.cpp
@@ -85,135 +85,124 @@ struct j_button jornada56x_buttons [] = {
Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
"devicebuttons/jornada56x_calendar",
"datebook", "nextView()",
"today", "raise()" },
{ Model_Jornada_56x,
Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
"devicebuttons/jornada56x_contact",
"addressbook", "raise()",
"addressbook", "beamBusinessCard()" },
{ Model_Jornada_56x,
Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Todo Button"),
"devicebuttons/jornada56x_todo",
"todolist", "raise()",
"todolist", "create()" },
{ Model_Jornada_56x,
Qt::Key_F8, QT_TRANSLATE_NOOP("Button", "Home Button"),
"devicebuttons/jornada56x_home",
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
{ Model_Jornada_56x,
Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Record Button"),
"devicebuttons/jornada56x_record",
"QPE/VMemo", "toggleRecord()",
"sound", "raise()" },
};
void Jornada::init(const QString&)
{
d->m_vendorstr = "HP";
d->m_vendor = Vendor_HP;
d->m_modelstr = "Jornada 56x";
d->m_model = Model_Jornada_56x;
- d->m_systemstr = "Familiar";
- d->m_system = System_Familiar;
d->m_rotation = Rot0;
-
- QFile f ( "/etc/familiar-version" );
- f.setName ( "/etc/familiar-version" );
- if ( f.open ( IO_ReadOnly )) {
-
- QTextStream ts ( &f );
- d->m_sysverstr = ts.readLine().mid( 10 );
-
- f. close();
- }
+ //Distribution detecting code is now in base class
}
void Jornada::initButtons()
{
if ( d->m_buttons )
return;
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( jornada56x_buttons ) / sizeof( j_button )); i++ ) {
j_button *ib = jornada56x_buttons + i;
ODeviceButton b;
if (( ib->model & d->m_model ) == d->m_model ) {
b. setKeycode ( ib->code );
b. setUserText ( QObject::tr ( "Button", ib->utext ));
b. setPixmap ( Resource::loadPixmap ( ib->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib->fpressedservice ), ib->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib->fheldservice ), ib->fheldaction ));
d->m_buttons->append ( b );
}
}
reloadButtonMapping();
QCopChannel *sysch = new QCopChannel ( "QPE/System", this );
connect ( sysch, SIGNAL( received(const QCString&,const QByteArray&)), this, SLOT( systemMessage(const QCString&,const QByteArray&)));
}
int Jornada::displayBrightnessResolution() const
{
return 255;
}
bool Jornada::setDisplayBrightness( int bright )
{
bool res = false;
if ( bright > 255 )
bright = 255;
if ( bright < 0 )
bright = 0;
QString cmdline;
int value = 255 - bright;
if ( !bright )
cmdline = QString().sprintf( "echo 4 > /sys/class/backlight/sa1100fb/power");
else
cmdline = QString().sprintf( "echo 0 > /sys/class/backlight/sa1100fb/power; echo %d > /sys/class/backlight/sa1100fb/brightness", value );
-
+
res = ( ::system( (const char*) cmdline ) == 0 );
-
+
return res;
}
bool Jornada::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
return false;
bool res = false;
ODevice::sendSuspendmsg();
struct timeval tvs;
::gettimeofday ( &tvs, 0 );
::sync(); // flush fs caches
res = ( ::system ( "apm --suspend" ) == 0 );
return res;
}
bool Jornada::setDisplayStatus ( bool on )
{
bool res = false;
-
+
QString cmdline = QString().sprintf( "echo %d > /sys/class/lcd/sa1100fb/power; echo %d > /sys/class/backlight/sa1100fb/power", on ? "0" : "4", on? "0" : "4" );
res = ( ::system( (const char*) cmdline ) == 0 );
return res;
}
diff --git a/libopie2/opiecore/device/odevice_ramses.cpp b/libopie2/opiecore/device/odevice_ramses.cpp
index 32467f1..7db2af1 100644
--- a/libopie2/opiecore/device/odevice_ramses.cpp
+++ b/libopie2/opiecore/device/odevice_ramses.cpp
@@ -53,75 +53,65 @@
#include <linux/soundcard.h>
#endif
using namespace Opie::Core;
using namespace Opie::Core::Internal;
struct r_button ramses_buttons [] = {
{ Model_Ramses_MNCI,
Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
"devicebuttons/z_menu",
"QPE/TaskBar", "toggleMenu()",
"QPE/TaskBar", "toggleStartMenu()" },
{ Model_Ramses_MNCI,
Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
"devicebuttons/ipaq_home",
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
};
void Ramses::init(const QString&)
{
d->m_vendorstr = "M und N";
d->m_vendor = Vendor_MundN;
QFile f("/proc/sys/board/ramses");
d->m_modelstr = "Ramses";
d->m_model = Model_Ramses_MNCI;
d->m_rotation = Rot0;
d->m_holdtime = 1000;
- f.setName("/etc/oz_version");
-
- if (f.open(IO_ReadOnly)) {
- d->m_systemstr = "OpenEmbedded/Ramses";
- d->m_system = System_OpenZaurus;
-
- QTextStream ts(&f);
- ts.setDevice(&f);
- d->m_sysverstr = ts.readLine();
- f.close();
- }
+ // Distribution detection code now in the base class
m_power_timer = 0;
#ifdef QT_QWS_ALLOW_OVERCLOCK
#warning *** Overclocking enabled - this may fry your hardware - you have been warned ***
#define OC(x...) x
#else
#define OC(x...)
#endif
// This table is true for a Intel XScale PXA 255
d->m_cpu_frequencies->append("99000"); // mem= 99, run= 99, turbo= 99, PXbus= 50
OC(d->m_cpu_frequencies->append("118000"); ) // mem=118, run=118, turbo=118, PXbus= 59 OC'd mem
d->m_cpu_frequencies->append("199100"); // mem= 99, run=199, turbo=199, PXbus= 99
OC(d->m_cpu_frequencies->append("236000"); ) // mem=118, run=236, turbo=236, PXbus=118 OC'd mem
d->m_cpu_frequencies->append("298600"); // mem= 99, run=199, turbo=298, PXbus= 99
OC(d->m_cpu_frequencies->append("354000"); ) // mem=118, run=236, turbo=354, PXbus=118 OC'd mem
d->m_cpu_frequencies->append("398099"); // mem= 99, run=199, turbo=398, PXbus= 99
d->m_cpu_frequencies->append("398100"); // mem= 99, run=398, turbo=398, PXbus=196
OC(d->m_cpu_frequencies->append("471000"); ) // mem=118, run=471, turbo=471, PXbus=236 OC'd mem/core/bus
}
bool Ramses::filter(int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat)
{
Q_UNUSED( keycode );
Q_UNUSED( modifiers );
Q_UNUSED( isPress );
Q_UNUSED( autoRepeat );
return false;
}
diff --git a/libopie2/opiecore/device/odevice_simpad.cpp b/libopie2/opiecore/device/odevice_simpad.cpp
index 6630763..6d4624b 100644
--- a/libopie2/opiecore/device/odevice_simpad.cpp
+++ b/libopie2/opiecore/device/odevice_simpad.cpp
@@ -1,56 +1,56 @@
/*
- This file is part of the Opie Project
- Copyright (C) The Opie Team <opie-devel@handhelds.org>
+                 This file is part of the Opie Project
+              Copyright (C) The Opie Team <opie-devel@handhelds.org>
=.
.=l.
- .>+-=
-_;:, .> :=|. This program is free software; you can
-.> <`_, > . <= redistribute it and/or modify it under
-:`=1 )Y*s>-.-- : the terms of the GNU Library General Public
-.="- .-=="i, .._ License as published by the Free Software
-- . .-<_> .<> Foundation; either version 2 of the License,
- ._= =} : or (at your option) any later version.
- .%`+i> _;_.
- .i_,=:_. -<s. This program is distributed in the hope that
- + . -:. = it will be useful, but WITHOUT ANY WARRANTY;
- : .. .:, . . . without even the implied warranty of
- =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
- _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
-..}^=.= = ; Library General Public License for more
-++= -. .` .: details.
-: = ...= . :.=-
--. .:....=;==+<; You should have received a copy of the GNU
- -_. . . )=. = Library General Public License along with
- -- :-=` this library; see the file COPYING.LIB.
+           .>+-=
+ _;:,     .>    :=|. This program is free software; you can
+.> <`_,   >  .   <= redistribute it and/or modify it under
+:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
+.="- .-=="i,     .._ License as published by the Free Software
+ - .   .-<_>     .<> Foundation; either version 2 of the License,
+     ._= =}       : or (at your option) any later version.
+    .%`+i>       _;_.
+    .i_,=:_.      -<s. This program is distributed in the hope that
+     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
+    : ..    .:,     . . . without even the implied warranty of
+    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
+  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
+..}^=.=       =       ; Library General Public License for more
+++=   -.     .`     .: details.
+ :     =  ...= . :.=-
+ -.   .:....=;==+<; You should have received a copy of the GNU
+  -_. . .   )=.  = Library General Public License along with
+    --        :-=` this library; see the file COPYING.LIB.
If not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include "odevice_simpad.h"
/* QT */
#include <qapplication.h>
#include <qfile.h>
#include <qtextstream.h>
#include <qwindowsystem_qws.h>
/* OPIE */
#include <qpe/config.h>
#include <qpe/resource.h>
#include <qpe/sound.h>
#include <qpe/qcopenvelope_qws.h>
/* STD */
#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;
@@ -105,86 +105,65 @@ struct s_button simpad_buttons [] = {
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
{ Model_SIMpad_CL4 | Model_SIMpad_SL4 | Model_SIMpad_SLC | Model_SIMpad_TSinus,
Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Lower+Upper"),
"devicebuttons/simpad_upper_lower",
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
*/
};
void SIMpad::init(const QString&)
{
d->m_vendorstr = "SIEMENS";
d->m_vendor = Vendor_SIEMENS;
QFile f ( "/proc/hal/model" );
//TODO Implement model checking
//FIXME For now we assume an SL4
d->m_modelstr = "SL4";
d->m_model = Model_SIMpad_SL4;
switch ( d->m_model ) {
default:
d->m_rotation = Rot0;
d->m_direction = CCW;
d->m_holdtime = 1000; // 1000ms
break;
}
- f. setName ( "/etc/familiar-version" );
- if ( f. open ( IO_ReadOnly )) {
- d->m_systemstr = "Familiar";
- d->m_system = System_Familiar;
-
- QTextStream ts ( &f );
- d->m_sysverstr = ts. readLine(). mid ( 10 );
-
- f. close();
- } else {
- f. setName ( "/etc/oz_version" );
-
- if ( f. open ( IO_ReadOnly )) {
- d->m_systemstr = "OpenEmbedded/SIMpad";
- d->m_system = System_OpenZaurus;
-
- QTextStream ts ( &f );
- ts.setDevice ( &f );
- d->m_sysverstr = ts. readLine();
- f. close();
- }
- }
+ //Distribution detecting code is now in base class
m_leds [0] = m_leds [1] = Led_Off;
m_power_timer = 0;
}
void SIMpad::initButtons()
{
if ( d->m_buttons )
return;
if ( isQWS( ) )
QWSServer::setKeyboardFilter ( this );
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) {
s_button *sb = simpad_buttons + i;
ODeviceButton b;
if (( sb->model & d->m_model ) == d->m_model ) {
b. setKeycode ( sb->code );
b. setUserText ( QObject::tr ( "Button", sb->utext ));
b. setPixmap ( Resource::loadPixmap ( sb->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb->fpressedservice ), sb->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb->fheldservice ), sb->fheldaction ));
d->m_buttons->append ( b );
}
}
reloadButtonMapping();
diff --git a/libopie2/opiecore/device/odevice_yopy.cpp b/libopie2/opiecore/device/odevice_yopy.cpp
index 493ed25..223aa76 100644
--- a/libopie2/opiecore/device/odevice_yopy.cpp
+++ b/libopie2/opiecore/device/odevice_yopy.cpp
@@ -49,76 +49,67 @@ _;:,     .>    :=|. This program is free software; you can
#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 yopy_button yopy_buttons [] = {
{ Qt::Key_F10, QT_TRANSLATE_NOOP( "Button", "Action Button" ),
"devicebuttons/yopy_action",
"datebook", "nextView()",
"today", "raise()" },
{ Qt::Key_F11, QT_TRANSLATE_NOOP( "Button", "OK Button" ),
"devicebuttons/yopy_ok",
"addressbook", "raise()",
"addressbook", "beamBusinessCard()" },
{ Qt::Key_F12, QT_TRANSLATE_NOOP( "Button", "End Button" ),
"devicebuttons/yopy_end",
"QPE/Launcher", "home()",
"buttonsettings", "raise()" },
};
void Yopy::init(const QString&)
{
d->m_vendorstr = "G.Mate";
d->m_vendor = Vendor_GMate;
d->m_modelstr = "Yopy3700";
d->m_model = Model_Yopy_3700;
d->m_rotation = Rot0;
-
d->m_systemstr = "Linupy";
d->m_system = System_Linupy;
-
- QFile f ( "/etc/issue" );
- if ( f. open ( IO_ReadOnly ) )
- {
- QTextStream ts ( &f );
- ts.readLine();
- d->m_sysverstr = ts. readLine();
- f. close();
- }
+ // Distribution detection code now in the base class
}
void Yopy::initButtons()
{
if ( d->m_buttons )
return ;
d->m_buttons = new QValueList <ODeviceButton>;
for ( uint i = 0; i < ( sizeof( yopy_buttons ) / sizeof( yopy_button ) ); i++ )
{
yopy_button *ib = yopy_buttons + i;
ODeviceButton b;
b. setKeycode ( ib->code );
b. setUserText ( QObject::tr ( "Button", ib->utext ) );
b. setPixmap ( Resource::loadPixmap ( ib->pix ) );
b. setFactoryPresetPressedAction
( OQCopMessage( makeChannel( ib->fpressedservice ), ib->fpressedaction ) );
b. setFactoryPresetHeldAction
( OQCopMessage( makeChannel( ib->fheldservice ), ib->fheldaction ) );
d->m_buttons->append ( b );
}
reloadButtonMapping();
QCopChannel *sysch = new QCopChannel( "QPE/System", this );
connect( sysch, SIGNAL( received(const QCString&,const QByteArray&) ),
this, SLOT( systemMessage(const QCString&,const QByteArray&) ) );
diff --git a/libopie2/opiecore/device/odevice_zaurus.cpp b/libopie2/opiecore/device/odevice_zaurus.cpp
index e8b813e..6ac3157 100644
--- a/libopie2/opiecore/device/odevice_zaurus.cpp
+++ b/libopie2/opiecore/device/odevice_zaurus.cpp
@@ -86,145 +86,130 @@ struct z_button z_buttons_c700 [] = {
"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_F14, QT_TRANSLATE_NOOP("Button", "Display Rotate"),
"devicebuttons/z_hinge",
"QPE/Rotation", "rotateDefault()",
"QPE/Dummy", "doNothing()" },
};
// 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, and C860)
//
// 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
// Zaurus models (concerning apm, backlight, buttons, etc.)
//
// Comments? - mickeyl.
-void Zaurus::init(const QString&)
+void Zaurus::init(const QString& cpu_info)
{
- d->m_vendorstr = "Sharp";
- d->m_vendor = Vendor_Sharp;
- m_embedix = true; // Not openzaurus means: It has an embedix kernel !
-
- // QFile f ( "/proc/filesystems" );
- QString model;
-
- // It isn't a good idea to check the system configuration to
- // detect the distribution !
- // Otherwise it may happen that any other distribution is detected as openzaurus, just
- // because it uses a jffs2 filesystem..
- // (eilers)
- // if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read(). find ( "\tjffs2\n" ) >= 0 )) {
- QFile f ("/etc/oz_version");
- if ( f.exists() ){
+ // generic distribution code already scanned /etc/issue at that point -
+ // embedix releases contain "Embedix <version> | Linux for Embedded Devices"
+ if ( d->m_sysverstr.contains( "embedix", false ) )
+ {
+ d->m_vendorstr = "Sharp";
+ d->m_vendor = Vendor_Sharp;
+ d->m_systemstr = "Zaurus";
+ d->m_system = System_Zaurus;
+ m_embedix = true;
+ }
+ else
+ {
d->m_vendorstr = "OpenZaurus Team";
d->m_systemstr = "OpenZaurus";
d->m_system = System_OpenZaurus;
+ // sysver already gathered
- if ( f. open ( IO_ReadOnly )) {
- QTextStream ts ( &f );
- d->m_sysverstr = ts. readLine();//. mid ( 10 );
- f. close();
- }
-
- // Openzaurus sometimes uses the embedix kernel!
- // => Check whether this is an embedix kernel
+ // Openzaurus sometimes uses the embedix kernel, check if this is one
FILE *uname = popen("uname -r", "r");
+ QFile f;
QString line;
if ( f.open(IO_ReadOnly, uname) ) {
QTextStream ts ( &f );
line = ts. readLine();
int loc = line. find ( "embedix" );
if ( loc != -1 )
m_embedix = true;
else
m_embedix = false;
- f. close();
+ f.close();
}
pclose(uname);
}
- else {
- d->m_systemstr = "Zaurus";
- d->m_system = System_Zaurus;
- }
- f. setName ( "/proc/cpuinfo" );
- if ( f. open ( IO_ReadOnly ) ) {
- QTextStream ts ( &f );
- QString line;
- while( line = ts. readLine() ) {
- if ( line. left ( 8 ) == "Hardware" )
- break;
- }
- int loc = line. find ( ":" );
- if ( loc != -1 )
- model = line. mid ( loc + 2 ). simplifyWhiteSpace( );
- }
+ // check the Zaurus model
+ QString model;
+ int loc = cpu_info.find( ":" );
+ if ( loc != -1 )
+ model = cpu_info.mid( loc+2 ).simplifyWhiteSpace();
+ else
+ model = cpu_info;
if ( model == "SHARP Corgi" ) {
d->m_model = Model_Zaurus_SLC7x0;
d->m_modelstr = "Zaurus SL-C700";
} else if ( model == "SHARP Shepherd" ) {
d->m_model = Model_Zaurus_SLC7x0;
d->m_modelstr = "Zaurus SL-C750";
} else if ( model == "SHARP Husky" ) {
d->m_model = Model_Zaurus_SLC7x0;
d->m_modelstr = "Zaurus SL-C760";
} else if ( model == "SHARP Poodle" ) {
d->m_model = Model_Zaurus_SLB600;
d->m_modelstr = "Zaurus SL-B500 or SL-5600";
} else if ( model == "Sharp-Collie" || model == "Collie" ) {
d->m_model = Model_Zaurus_SL5500;
d->m_modelstr = "Zaurus SL-5500 or SL-5000d";
} else {
d->m_model = Model_Zaurus_SL5500;
- d->m_modelstr = "Zaurus (Model unknown)";
+ d->m_modelstr = "Unkown Zaurus";
}
+ // set initial rotation
+
bool flipstate = false;
switch ( d->m_model ) {
case Model_Zaurus_SLA300:
d->m_rotation = Rot0;
break;
case Model_Zaurus_SLC7x0:
d->m_rotation = rotation();
d->m_direction = direction();
break;
case Model_Zaurus_SLB600:
case Model_Zaurus_SL5500:
case Model_Zaurus_SL5000:
default:
d->m_rotation = Rot270;
break;
}
m_leds [0] = Led_Off;
}
void Zaurus::initButtons()
{
if ( d->m_buttons )
return;
d->m_buttons = new QValueList <ODeviceButton>;
struct z_button * pz_buttons;
int buttoncount;
switch ( d->m_model ) {
case Model_Zaurus_SLC7x0:
pz_buttons = z_buttons_c700;
buttoncount = ARRAY_SIZE(z_buttons_c700);