summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp107
1 files changed, 73 insertions, 34 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 61c24f4..dea24a8 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -1,17 +1,17 @@
1/* This file is part of the OPIE libraries 1/* This file is part of the OPIE libraries
2 Copyright (C) 2002 Robert Griebl (sandman@handhelds.org) 2 Copyright (C) 2002 Robert Griebl (sandman@handhelds.org)
3 3
4 This library is free software; you can redistribute it and/or 4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public 5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either 6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version. 7 version 2 of the License, or (at your option) any later version.
8 8
9 This library is distributed in the hope that it will be useful, 9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details. 12 Library General Public License for more details.
13 13
14 You should have received a copy of the GNU Library General Public License 14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to 15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 16 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 Boston, MA 02111-1307, USA. 17 Boston, MA 02111-1307, USA.
@@ -52,16 +52,16 @@ public:
52 virtual bool setLed ( uint which, OLedState st ); 52 virtual bool setLed ( uint which, OLedState st );
53}; 53};
54 54
55class ODeviceZaurus : public ODevice { 55class ODeviceZaurus : public ODevice {
56protected: 56protected:
57 virtual void init ( ); 57 virtual void init ( );
58 58
59 public: 59 public:
60 virtual void alarmSound ( ); 60 virtual void alarmSound ( );
61 virtual void keySound ( ); 61 virtual void keySound ( );
62 virtual void touchSound ( ); 62 virtual void touchSound ( );
63 63
64 virtual uint hasLeds ( ) const; 64 virtual uint hasLeds ( ) const;
65 virtual OLedState led ( uint which ) const; 65 virtual OLedState led ( uint which ) const;
66 virtual bool setLed ( uint which, OLedState st ); 66 virtual bool setLed ( uint which, OLedState st );
67 67
@@ -91,15 +91,15 @@ ODevice *ODevice::inst ( )
91 91
92ODevice::ODevice ( ) 92ODevice::ODevice ( )
93{ 93{
94 d = new ODeviceData; 94 d = new ODeviceData;
95 95
96 d-> m_modelstr = "Unknown"; 96 d-> m_modelstr = "Unknown";
97 d-> m_model = OMODEL_Unknown; 97 d-> m_model = OMODEL_Unknown;
98 d-> m_vendorstr = "Unkown"; 98 d-> m_vendorstr = "Unkown";
99 d-> m_vendor = OVENDOR_Unknown; 99 d-> m_vendor = OVENDOR_Unknown;
100 d-> m_systemstr = "Unkown"; 100 d-> m_systemstr = "Unkown";
101 d-> m_system = OSYSTEM_Unknown; 101 d-> m_system = OSYSTEM_Unknown;
102} 102}
103 103
104void ODevice::init ( ) 104void ODevice::init ( )
105{ 105{
@@ -141,33 +141,42 @@ OSystem ODevice::system ( )
141} 141}
142 142
143void ODevice::alarmSound ( ) 143void ODevice::alarmSound ( )
144{ 144{
145#ifndef QT_QWS_EBX
145#ifndef QT_NO_SOUND 146#ifndef QT_NO_SOUND
146 static Sound snd ( "alarm" ); 147 static Sound snd ( "alarm" );
147 148
148 if ( snd. isFinished ( )) 149 if ( snd. isFinished ( ))
149 snd. play ( ); 150 snd. play ( );
150#endif 151#endif
152#endif
151} 153}
152 154
153void ODevice::keySound ( ) 155void ODevice::keySound ( )
154{ 156{
157#ifndef QT_QWS_EBX
155#ifndef QT_NO_SOUND 158#ifndef QT_NO_SOUND
156 static Sound snd ( "keysound" ); 159 static Sound snd ( "keysound" );
157 160
158 if ( snd. isFinished ( )) 161 if ( snd. isFinished ( ))
159 snd. play ( ); 162 snd. play ( );
160#endif 163#endif
164#endif
161} 165}
162 166
163void ODevice::touchSound ( ) 167void ODevice::touchSound ( )
164{ 168{
169
170#ifndef QT_QWS_EBX
165#ifndef QT_NO_SOUND 171#ifndef QT_NO_SOUND
166 static Sound snd ( "touchsound" ); 172 static Sound snd ( "touchsound" );
167 173qDebug("touchSound");
168 if ( snd. isFinished ( )) 174 if ( snd. isFinished ( )) {
169 snd. play ( ); 175 snd. play ( );
176 qDebug("sound should play");
177 }
178#endif
170#endif 179#endif
171} 180}
172 181
173uint ODevice::hasLeds ( ) const 182uint ODevice::hasLeds ( ) const
@@ -193,17 +202,17 @@ bool ODevice::setLed ( uint /*which*/, OLedState /*st*/ )
193 202
194void ODeviceIPAQ::init ( ) 203void ODeviceIPAQ::init ( )
195{ 204{
196 d-> m_vendorstr = "HP"; 205 d-> m_vendorstr = "HP";
197 d-> m_vendor = OVENDOR_HP; 206 d-> m_vendor = OVENDOR_HP;
198 207
199 QFile f ( "/proc/hal/model" ); 208 QFile f ( "/proc/hal/model" );
200 209
201 if ( f. open ( IO_ReadOnly )) { 210 if ( f. open ( IO_ReadOnly )) {
202 QTextStream ts ( &f ); 211 QTextStream ts ( &f );
203 212
204 d-> m_modelstr = "H" + ts. readLine ( ); 213 d-> m_modelstr = "H" + ts. readLine ( );
205 214
206 if ( d-> m_modelstr == "H3100" ) 215 if ( d-> m_modelstr == "H3100" )
207 d-> m_model = OMODEL_iPAQ_H31xx; 216 d-> m_model = OMODEL_iPAQ_H31xx;
208 else if ( d-> m_modelstr == "H3600" ) 217 else if ( d-> m_modelstr == "H3600" )
209 d-> m_model = OMODEL_iPAQ_H36xx; 218 d-> m_model = OMODEL_iPAQ_H36xx;
@@ -212,17 +221,17 @@ void ODeviceIPAQ::init ( )
212 else if ( d-> m_modelstr == "H3800" ) 221 else if ( d-> m_modelstr == "H3800" )
213 d-> m_model = OMODEL_iPAQ_H38xx; 222 d-> m_model = OMODEL_iPAQ_H38xx;
214 else 223 else
215 d-> m_model = OMODEL_Unknown; 224 d-> m_model = OMODEL_Unknown;
216 225
217 f. close ( ); 226 f. close ( );
218 } 227 }
219 228
220 if ( QFile::exists ( "/etc/familiar-version" )) { 229 if ( QFile::exists ( "/etc/familiar-version" )) {
221 d-> m_systemstr = "Familiar"; 230 d-> m_systemstr = "Familiar";
222 d-> m_system = OSYSTEM_Familiar; 231 d-> m_system = OSYSTEM_Familiar;
223 } 232 }
224 233
225 d-> m_leds [0] = OLED_Off; 234 d-> m_leds [0] = OLED_Off;
226} 235}
227 236
228#include <unistd.h> 237#include <unistd.h>
@@ -231,9 +240,9 @@ void ODeviceIPAQ::init ( )
231#include <linux/soundcard.h> 240#include <linux/soundcard.h>
232#include <qapplication.h> 241#include <qapplication.h>
233#include <qpe/config.h> 242#include <qpe/config.h>
234 243
235//#include <linux/h3600_ts.h> // including kernel headers is evil ... 244//#include <linux/h3600_ts.h> // including kernel headers is evil ...
236 245
237typedef struct h3600_ts_led { 246typedef struct h3600_ts_led {
238 unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ 247 unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */
239 unsigned char TotalTime; /* Units of 5 seconds */ 248 unsigned char TotalTime; /* Units of 5 seconds */
@@ -241,15 +250,16 @@ typedef struct h3600_ts_led {
241 unsigned char OffTime; /* units of 100m/s */ 250 unsigned char OffTime; /* units of 100m/s */
242} LED_IN; 251} LED_IN;
243 252
244 253
245// #define IOC_H3600_TS_MAGIC 'f' 254// #define IOC_H3600_TS_MAGIC 'f'
246// #define LED_ON _IOW(IOC_H3600_TS_MAGIC, 5, struct h3600_ts_led) 255// #define LED_ON _IOW(IOC_H3600_TS_MAGIC, 5, struct h3600_ts_led)
247#define LED_ON (( 1<<30 ) | ( 'f'<<8 ) | ( 5 ) | ( sizeof(struct h3600_ts_led)<<16 )) // _IOW only defined in kernel headers :( 256#define LED_ON (( 1<<30 ) | ( 'f'<<8 ) | ( 5 ) | ( sizeof(struct h3600_ts_led)<<16 )) // _IOW only defined in kernel headers :(
248 257
249 258
250void ODeviceIPAQ::alarmSound ( ) 259void ODeviceIPAQ::alarmSound ( )
251{ 260{
261#if defined( QT_QWS_IPAQ ) // IPAQ
252#ifndef QT_NO_SOUND 262#ifndef QT_NO_SOUND
253 static Sound snd ( "alarm" ); 263 static Sound snd ( "alarm" );
254 int fd; 264 int fd;
255 int vol; 265 int vol;
@@ -265,11 +275,11 @@ void ODeviceIPAQ::alarmSound ( )
265 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); 275 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 );
266 if ( volalarm < 0 ) 276 if ( volalarm < 0 )
267 volalarm = 0; 277 volalarm = 0;
268 else if ( volalarm > 100 ) 278 else if ( volalarm > 100 )
269 volalarm = 100; 279 volalarm = 100;
270 volalarm |= ( volalarm << 8 ); 280 volalarm |= ( volalarm << 8 );
271 281
272 if (( volalarm & 0xff ) > ( vol & 0xff )) { 282 if (( volalarm & 0xff ) > ( vol & 0xff )) {
273 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 ) 283 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 )
274 vol_reset = true; 284 vol_reset = true;
275 } 285 }
@@ -285,8 +295,9 @@ void ODeviceIPAQ::alarmSound ( )
285 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); 295 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol );
286 ::close ( fd ); 296 ::close ( fd );
287 } 297 }
288#endif 298#endif
299#endif
289} 300}
290 301
291uint ODeviceIPAQ::hasLeds ( ) const 302uint ODeviceIPAQ::hasLeds ( ) const
292{ 303{
@@ -297,31 +308,31 @@ OLedState ODeviceIPAQ::led ( uint which ) const
297{ 308{
298 if ( which == 0 ) 309 if ( which == 0 )
299 return d-> m_leds [0]; 310 return d-> m_leds [0];
300 else 311 else
301 return OLED_Off; 312 return OLED_Off;
302} 313}
303 314
304bool ODeviceIPAQ::setLed ( uint which, OLedState st ) 315bool ODeviceIPAQ::setLed ( uint which, OLedState st )
305{ 316{
306 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR|O_NONBLOCK ); 317 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR|O_NONBLOCK );
307 318
308 if ( which == 0 ) { 319 if ( which == 0 ) {
309 if ( fd >= 0 ) { 320 if ( fd >= 0 ) {
310 struct h3600_ts_led leds; 321 struct h3600_ts_led leds;
311 ::memset ( &leds, 0, sizeof( leds )); 322 ::memset ( &leds, 0, sizeof( leds ));
312 leds. TotalTime = 0; 323 leds. TotalTime = 0;
313 leds. OnTime = 0; 324 leds. OnTime = 0;
314 leds. OffTime = 1; 325 leds. OffTime = 1;
315 leds. OffOnBlink = 2; 326 leds. OffOnBlink = 2;
316 327
317 switch ( st ) { 328 switch ( st ) {
318 case OLED_Off : leds. OffOnBlink = 0; break; 329 case OLED_Off : leds. OffOnBlink = 0; break;
319 case OLED_On : leds. OffOnBlink = 1; break; 330 case OLED_On : leds. OffOnBlink = 1; break;
320 case OLED_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; 331 case OLED_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break;
321 case OLED_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; 332 case OLED_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break;
322 } 333 }
323 334
324 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { 335 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) {
325 d-> m_leds [0] = st; 336 d-> m_leds [0] = st;
326 return true; 337 return true;
327 } 338 }
@@ -336,25 +347,25 @@ bool ODeviceIPAQ::setLed ( uint which, OLedState st )
336 347
337 348
338 349
339 350
340//#if defined( QT_QWS_CUSTOM ) // Zaurus 351//#if defined( QT_QWS_EBX ) // Zaurus
341 352
342void ODeviceZaurus::init ( ) 353void ODeviceZaurus::init ( )
343 { 354{
344 d-> m_modelstr = "Zaurus SL5000"; 355 d-> m_modelstr = "Zaurus SL5000";
345 d-> m_model = OMODEL_Zaurus_SL5000; 356 d-> m_model = OMODEL_Zaurus_SL5000;
346 d-> m_vendorstr = "Sharp"; 357 d-> m_vendorstr = "Sharp";
347 d-> m_vendor = OVENDOR_Sharp; 358 d-> m_vendor = OVENDOR_Sharp;
348 359
349 QFile f ( "/proc/filesystems" ); 360 QFile f ( "/proc/filesystems" );
350 361
351 if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) { 362 if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) {
352 d-> m_systemstr = "OpenZaurus"; 363 d-> m_systemstr = "OpenZaurus";
353 d-> m_system = OSYSTEM_OpenZaurus; 364 d-> m_system = OSYSTEM_OpenZaurus;
354 365
355 f. close ( ); 366 f. close ( );
356 } 367 }
357 else { 368 else {
358 d-> m_systemstr = "Zaurus"; 369 d-> m_systemstr = "Zaurus";
359 d-> m_system = OSYSTEM_Zaurus; 370 d-> m_system = OSYSTEM_Zaurus;
360 } 371 }
@@ -371,22 +382,50 @@ void ODeviceZaurus::init ( )
371#define SHARP_DEV_IOCTL_COMMAND_START 0x5680 382#define SHARP_DEV_IOCTL_COMMAND_START 0x5680
372 383
373 #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) 384 #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
374#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) 385#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
375 386
376#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ 387#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
377#define SHARP_BUZ_KEYSOUND 2 /* key sound */ 388#define SHARP_BUZ_KEYSOUND 2 /* key sound */
378#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ 389#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
379 390
391/* --- for SHARP_BUZZER device --- */
392
393 //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
394//#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
395
396#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1)
397#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2)
398#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3)
399#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4)
400#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5)
401
402//#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
403//#define SHARP_BUZ_KEYSOUND 2 /* key sound */
404
405//#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */
406//#define SHARP_PDA_WARNSOUND 4 /* warning occurred */
407//#define SHARP_PDA_ERRORSOUND 5 /* error occurred */
408//#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */
409//#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */
410//#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */
411//#define SHARP_PDA_APPSTART 9 /* application start */
412//#define SHARP_PDA_APPQUIT 10 /* application ends */
413
414//#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
415//#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */
416//#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */
417//#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */
418//
380 419
381 #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) 420 #defineSHARP_LED_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
382#define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1) 421#define SHARP_LED_SETSTATUS (SHARP_LED_IOCTL_START+1)
383 422
384typedef struct sharp_led_status { 423typedef struct sharp_led_status {
385 int which; /* select which LED status is wanted. */ 424 int which; /* select which LED status is wanted. */
386 int status; /* set new led status if you call SHARP_LED_SETSTATUS */ 425 int status; /* set new led status if you call SHARP_LED_SETSTATUS */
387} sharp_led_status; 426} sharp_led_status;
388 427
389#define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */ 428#define SHARP_LED_MAIL_EXISTS 9 /* mail status (exists or not) */
390 429
391#define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */ 430#define LED_MAIL_NO_UNREAD_MAIL 0 /* for SHARP_LED_MAIL_EXISTS */
392#define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */ 431#define LED_MAIL_NEWMAIL_EXISTS 1 /* for SHARP_LED_MAIL_EXISTS */