author | llornkcor <llornkcor> | 2006-04-23 20:19:27 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2006-04-23 20:19:27 (UTC) |
commit | 226ccbb7d87a54411d640432f0ac19cbd942aa01 (patch) (side-by-side diff) | |
tree | 6d343d37cc3e9c2c4b9a8148a8f7cb32d110c322 /libopie2/opiecore | |
parent | fce7a143353e2bdd41d878c6f0a1224e0f2a158e (diff) | |
download | opie-226ccbb7d87a54411d640432f0ac19cbd942aa01.zip opie-226ccbb7d87a54411d640432f0ac19cbd942aa01.tar.gz opie-226ccbb7d87a54411d640432f0ac19cbd942aa01.tar.bz2 |
add support for HTC Universal device
-rw-r--r-- | libopie2/opiecore/device/device.pro | 6 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice.cpp | 3 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice.h | 9 | ||||
-rw-r--r-- | libopie2/opiecore/device/odevice_htc.h | 154 |
4 files changed, 168 insertions, 4 deletions
diff --git a/libopie2/opiecore/device/device.pro b/libopie2/opiecore/device/device.pro index 8469398..0954733 100644 --- a/libopie2/opiecore/device/device.pro +++ b/libopie2/opiecore/device/device.pro @@ -1,26 +1,28 @@ HEADERS += device/odevice.h \ device/odevicebutton.h \ device/odevice_abstractmobiledevice.h \ device/odevice_beagle.h \ device/odevice_ipaq.h \ device/odevice_jornada.h \ device/odevice_ramses.h \ device/odevice_simpad.h \ device/odevice_zaurus.h \ device/odevice_genuineintel.h \ device/odevice_yopy.h \ - device/odevice_mypal.h + device/odevice_mypal.h \ + device/odevice_htc.h SOURCES += device/odevice.cpp \ device/odevicebutton.cpp \ device/odevice_abstractmobiledevice.cpp \ device/odevice_beagle.cpp \ device/odevice_ipaq.cpp \ device/odevice_jornada.cpp\ device/odevice_ramses.cpp \ device/odevice_simpad.cpp \ device/odevice_zaurus.cpp \ device/odevice_genuineintel.cpp \ device/odevice_yopy.cpp \ - device/odevice_mypal.cpp + device/odevice_mypal.cpp \ + device/odevice_htc.cpp diff --git a/libopie2/opiecore/device/odevice.cpp b/libopie2/opiecore/device/odevice.cpp index 7b99eb4..c6e031f 100644 --- a/libopie2/opiecore/device/odevice.cpp +++ b/libopie2/opiecore/device/odevice.cpp @@ -16,48 +16,49 @@ =_ + =;=|` 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_beagle.h" #include "odevice_ipaq.h" #include "odevice_mypal.h" #include "odevice_jornada.h" #include "odevice_ramses.h" #include "odevice_simpad.h" #include "odevice_yopy.h" #include "odevice_zaurus.h" #include "odevice_genuineintel.h" +#include "odevice_htc.h" /* QT */ #include <qapplication.h> #include <qfile.h> #include <qtextstream.h> #include <qwindowsystem_qws.h> /* OPIE */ #include <qpe/config.h> #include <qpe/sound.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/sound.h> #include <opie2/okeyfilter.h> #include <opie2/oresource.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> @@ -123,48 +124,50 @@ ODevice *ODevice::inst() static ODevice *dev = 0; QString cpu_info; if ( !dev ) { QFile f( PATH_PROC_CPUINFO ); if ( f.open( IO_ReadOnly ) ) { QTextStream s( &f ); while ( !s.atEnd() ) { QString line; line = s.readLine(); if ( line.startsWith( "Hardware" ) ) { qDebug( "ODevice() - found '%s'", (const char*) line ); cpu_info = line; if ( line.contains( "sharp", false ) ) dev = new Internal::Zaurus(); else if ( line.contains( "ipaq", false ) ) dev = new Internal::iPAQ(); else if ( line.contains( "mypal", false ) ) dev = new Internal::MyPal(); else if ( line.contains( "simpad", false ) ) dev = new Internal::SIMpad(); else if ( line.contains( "jornada", false ) ) dev = new Internal::Jornada(); else if ( line.contains( "ramses", false ) ) dev = new Internal::Ramses(); else if ( line.contains( "Tradesquare.NL", false ) ) dev = new Internal::Beagle(); + else if ( line.contains( "HTC", false ) ) dev = new Internal::HTC(); + else qWarning( "ODevice() - unknown hardware - using default." ); break; } else if ( line.startsWith( "vendor_id" ) ) { qDebug( "ODevice() - found '%s'", (const char*) line ); cpu_info = line; if( line.contains( "genuineintel", false ) ) { dev = new Internal::GenuineIntel(); 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() { diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h index c70d2af..0c78277 100644 --- a/libopie2/opiecore/device/odevice.h +++ b/libopie2/opiecore/device/odevice.h @@ -99,65 +99,70 @@ enum OModel { Model_Ramses_All = ( Model_Ramses | 0xffff ), Model_Ramses_MNCI = ( Model_Ramses | 0x0001 ), Model_Ramses_MNCIRX = ( Model_Ramses | 0x0002 ), Model_Yopy = ( 5 << 16 ), Model_Yopy_All = ( Model_Yopy | 0xffff ), Model_Yopy_3000 = ( Model_Yopy | 0x0001 ), Model_Yopy_3500 = ( Model_Yopy | 0x0002 ), Model_Yopy_3700 = ( Model_Yopy | 0x0003 ), Model_Beagle = ( 6 << 16 ), Model_Beagle_All = ( Model_Beagle | 0xffff ), Model_Beagle_PA100 = ( Model_Beagle | 0x0001 ), Model_GenuineIntel = ( 7 << 16 ), Model_MyPal = ( 8 << 16 ), Model_MyPal_All = ( Model_MyPal | 0xffff ), Model_MyPal_620 = ( Model_MyPal | 0x0001 ), Model_MyPal_716 = ( Model_MyPal | 0x0002 ), - Model_MyPal_730 = ( Model_MyPal | 0x0003 ) + Model_MyPal_730 = ( Model_MyPal | 0x0003 ), + + Model_HTC = ( 9 << 16 ), + Model_HTC_All = ( Model_HTC | 0xffff ), + Model_HTC_Universal = ( Model_HTC | 0x0001 ) }; /** * The vendor of the device */ enum OVendor { Vendor_Unknown, Vendor_HP, Vendor_Sharp, Vendor_SIEMENS, Vendor_MundN, Vendor_GMate, Vendor_MasterIA, Vendor_GenuineIntel, - Vendor_Asus + Vendor_Asus, + Vendor_HTC }; /** * The System used */ enum OSystem { System_Unknown, System_Familiar, System_Zaurus, System_OpenZaurus, System_Linupy, System_OpenEmbedded, System_PC }; typedef struct { OSystem system; char* sysstr; char* sysvfile; } ODistribution; extern ODistribution distributions[]; diff --git a/libopie2/opiecore/device/odevice_htc.h b/libopie2/opiecore/device/odevice_htc.h new file mode 100644 index 0000000..5b707c8 --- a/dev/null +++ b/libopie2/opiecore/device/odevice_htc.h @@ -0,0 +1,154 @@ +/* + This file is part of the Opie Project + Copyright (C) 2002-2005 The Opie Team <opie-devel@handhelds.org> + =. Copyright (C) 2002-2005 Michael 'Mickey' Lauer <mickey@Vanille.de> + .=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; version 2 of the License. + ._= =} : + .%`+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_HTC +#define ODEVICE_HTC + +#include "odevice_abstractmobiledevice.h" + +/* QT */ +#include <qfile.h> +#include <qwindowsystem_qws.h> + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) +#endif + +// _IO and friends are only defined in kernel headers ... +#define OD_IOC(dir,type,number,size) (( dir << 30 ) | ( type << 8 ) | ( number ) | ( size << 16 )) +#define OD_IO(type,number) OD_IOC(0,type,number,0) +#define OD_IOW(type,number,size) OD_IOC(1,type,number,sizeof(size)) +#define OD_IOR(type,number,size) OD_IOC(2,type,number,sizeof(size)) +#define OD_IORW(type,number,size) OD_IOC(3,type,number,sizeof(size)) + +// Audio +#define SHARP_DEV_IOCTL_COMMAND_START 0x5680 + +#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) +#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) + +#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ +#define SHARP_BUZ_KEYSOUND 2 /* key sound */ +#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ + +#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) +#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) +#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) +#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) +#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) + +// LED +#define SHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) +#define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) +#define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ + +#define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ +#define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ +#define LED_MAIL_UNREAD_MAIL_EX 2 /* for SHARP_LED_MAIL_EXISTS */ + +// Rotation and Power Management +#define SHARP_IOCTL_GET_ROTATION 0x413c + +#define APM_IOCGEVTSRC OD_IOR( 'A', 203, int ) +#define APM_IOCSEVTSRC OD_IORW( 'A', 204, int ) +#define APM_EVT_POWER_BUTTON (1 << 0) + +// Brightness Embedix +#define SHARP_FL_IOCTL_DEVICE "/dev/sharp_fl" +#define SHARP_FL_IOCTL_ON 1 +#define SHARP_FL_IOCTL_OFF 2 +#define SHARP_FL_IOCTL_STEP_CONTRAST 100 +#define SHARP_FL_IOCTL_GET_STEP_CONTRAST 101 +#define SHARP_FL_IOCTL_GET_STEP 102 + +// Vesa Standard +#define FB_BLANK_UNBLANK 0 +#define FB_BLANK_POWERDOWN 4 + +namespace Opie { +namespace Core { +namespace Internal { + +class HTC : public OAbstractMobileDevice, public QWSServer::KeyboardFilter +{ + Q_OBJECT + + protected: + virtual void init(const QString&); + virtual void initButtons(); + void initHingeSensor(); + + protected slots: + void hingeSensorTriggered(); + void systemMessage( const QCString &msg, const QByteArray & ); + + public: + virtual bool setDisplayBrightness( int b ); + virtual bool setDisplayStatus( bool on ); + virtual int displayBrightnessResolution() const; + + virtual void playAlarmSound(); + virtual void playKeySound(); + virtual void playTouchSound(); + + 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 bool hasHingeSensor() const; + virtual OHingeStatus readHingeSensor() const; + + virtual Transformation rotation() const; + virtual ODirection direction() const; + virtual bool suspend(); + + protected: + virtual void buzzer( int snd ); + virtual bool filter( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); + + QString m_backlightdev; + OLedState m_leds[1]; + bool m_embedix; + QFile m_hinge; +}; + +struct htc_button { + Qt::Key code; + char *utext; + char *pix; + char *fpressedservice; + char *fpressedaction; + char *fheldservice; + char *fheldaction; +}; +} +} +} +#endif |