summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/device/odevice_htc.cpp
Unidiff
Diffstat (limited to 'libopie2/opiecore/device/odevice_htc.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_htc.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/libopie2/opiecore/device/odevice_htc.cpp b/libopie2/opiecore/device/odevice_htc.cpp
index a6ade11..44b33c0 100644
--- a/libopie2/opiecore/device/odevice_htc.cpp
+++ b/libopie2/opiecore/device/odevice_htc.cpp
@@ -62,103 +62,103 @@ using namespace Opie::Core::Internal;
62 62
63struct htc_button htc_buttons [] = { 63struct htc_button htc_buttons [] = {
64 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), 64 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
65 "devicebuttons/z_calendar", 65 "devicebuttons/z_calendar",
66 "datebook", "nextView()", 66 "datebook", "nextView()",
67 "today", "raise()" }, 67 "today", "raise()" },
68 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), 68 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
69 "devicebuttons/z_contact", 69 "devicebuttons/z_contact",
70 "addressbook", "raise()", 70 "addressbook", "raise()",
71 "addressbook", "beamBusinessCard()" }, 71 "addressbook", "beamBusinessCard()" },
72 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), 72 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
73 "devicebuttons/z_home", 73 "devicebuttons/z_home",
74 "QPE/Launcher", "home()", 74 "QPE/Launcher", "home()",
75 "buttonsettings", "raise()" }, 75 "buttonsettings", "raise()" },
76 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), 76 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
77 "devicebuttons/z_menu", 77 "devicebuttons/z_menu",
78 "QPE/TaskBar", "toggleMenu()", 78 "QPE/TaskBar", "toggleMenu()",
79 "QPE/TaskBar", "toggleStartMenu()" }, 79 "QPE/TaskBar", "toggleStartMenu()" },
80 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), 80 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
81 "devicebuttons/z_mail", 81 "devicebuttons/z_mail",
82 "opiemail", "raise()", 82 "opiemail", "raise()",
83 "opiemail", "newMail()" }, 83 "opiemail", "newMail()" },
84}; 84};
85 85
86struct htc_button htc_buttons_universal [] = { 86struct htc_button htc_buttons_universal [] = {
87 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"), 87 { Qt::Key_F9, QT_TRANSLATE_NOOP("Button", "Calendar Button"),
88 "devicebuttons/z_calendar", 88 "devicebuttons/z_calendar",
89 "datebook", "nextView()", 89 "datebook", "nextView()",
90 "today", "raise()" }, 90 "today", "raise()" },
91 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"), 91 { Qt::Key_F10, QT_TRANSLATE_NOOP("Button", "Contacts Button"),
92 "devicebuttons/z_contact", 92 "devicebuttons/z_contact",
93 "addressbook", "raise()", 93 "addressbook", "raise()",
94 "addressbook", "beamBusinessCard()" }, 94 "addressbook", "beamBusinessCard()" },
95 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"), 95 { Qt::Key_F12, QT_TRANSLATE_NOOP("Button", "Home Button"),
96 "devicebuttons/z_home", 96 "devicebuttons/z_home",
97 "QPE/Launcher", "home()", 97 "QPE/Launcher", "home()",
98 "buttonsettings", "raise()" }, 98 "buttonsettings", "raise()" },
99 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"), 99 { Qt::Key_F11, QT_TRANSLATE_NOOP("Button", "Menu Button"),
100 "devicebuttons/z_menu", 100 "devicebuttons/z_menu",
101 "QPE/TaskBar", "toggleMenu()", 101 "QPE/TaskBar", "toggleMenu()",
102 "QPE/TaskBar", "toggleStartMenu()" }, 102 "QPE/TaskBar", "toggleStartMenu()" },
103 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"), 103 { Qt::Key_F13, QT_TRANSLATE_NOOP("Button", "Mail Button"),
104 "devicebuttons/z_mail", 104 "devicebuttons/z_mail",
105 "opiemail", "raise()", 105 "opiemail", "raise()",
106 "opiemail", "newMail()" }, 106 "opiemail", "newMail()" },
107 107
108 { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Hinge1"), 108 { Qt::Key_F15, QT_TRANSLATE_NOOP("Button", "Hinge1"),
109 "devicebuttons/z_hinge1", 109 "devicebuttons/z_hinge1",
110 "QPE/Rotation", "rotateDefault()",0}, 110 "QPE/Rotation", "rotateDefault()",0,0},
111 { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Hinge2"), 111 { Qt::Key_F16, QT_TRANSLATE_NOOP("Button", "Hinge2"),
112 "devicebuttons/z_hinge2", 112 "devicebuttons/z_hinge2",
113 "QPE/Rotation", "rotateDefault()",0}, 113 "QPE/Rotation", "rotateDefault()",0,0},
114 { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Hinge3"), 114 { Qt::Key_F17, QT_TRANSLATE_NOOP("Button", "Hinge3"),
115 "devicebuttons/z_hinge3", 115 "devicebuttons/z_hinge3",
116 "QPE/Rotation", "rotateDefault()",0}, 116 "QPE/Rotation", "rotateDefault()",0,0},
117}; 117};
118 118
119 119
120// 120//
121// HTC-Universal (PXA-model w/ 480x640 3.6" lcd) 121// HTC-Universal (PXA-model w/ 480x640 3.6" lcd)
122// HTC-Alpine (PXA-model w/ 240x320 3.5" lcd) 122// HTC-Alpine (PXA-model w/ 240x320 3.5" lcd)
123// HTC-Apache (PXA-model w/ 240x320 2.8" lcd) 123// HTC-Apache (PXA-model w/ 240x320 2.8" lcd)
124// HTC-Beetles (PXA-model w/ 240x240 3.0" lcd) 124// HTC-Beetles (PXA-model w/ 240x240 3.0" lcd)
125// HTC-Blueangel (PXA-model w/ 240x320 3.5" lcd) 125// HTC-Blueangel (PXA-model w/ 240x320 3.5" lcd)
126// HTC-Himalaya (PXA-model w/ 240x320 3.5" lcd) 126// HTC-Himalaya (PXA-model w/ 240x320 3.5" lcd)
127// HTC-Magician (PXA-model w/ 240x320 2.8" lcd) 127// HTC-Magician (PXA-model w/ 240x320 2.8" lcd)
128 128
129void HTC::init(const QString& cpu_info) 129void HTC::init(const QString& cpu_info)
130{ 130{
131 qDebug( "HTC::init()" ); 131 qDebug( "HTC::init()" );
132 // Set the time to wait until the system is really suspended 132 // Set the time to wait until the system is really suspended
133 // the delta between apm --suspend and sleeping 133 // the delta between apm --suspend and sleeping
134 setAPMTimeOut( 15000 ); 134 setAPMTimeOut( 15000 );
135 135
136 d->m_vendorstr = "Xanadux Team"; 136 d->m_vendorstr = "Xanadux Team";
137 d->m_systemstr = "Familiar"; 137 d->m_systemstr = "Familiar";
138 d->m_system = System_Familiar; 138 d->m_system = System_Familiar;
139 139
140 // check the HTC model 140 // check the HTC model
141 QString model; 141 QString model;
142 int loc = cpu_info.find( ":" ); 142 int loc = cpu_info.find( ":" );
143 if ( loc != -1 ) 143 if ( loc != -1 )
144 model = cpu_info.mid( loc+2 ).simplifyWhiteSpace(); 144 model = cpu_info.mid( loc+2 ).simplifyWhiteSpace();
145 else 145 else
146 model = cpu_info; 146 model = cpu_info;
147 147
148 d->m_model = Model_HTC_Universal; 148 d->m_model = Model_HTC_Universal;
149 d->m_modelstr = "Unknown HTC"; 149 d->m_modelstr = "Unknown HTC";
150 150
151 if ( model == "HTC Universal" ) { 151 if ( model == "HTC Universal" ) {
152 d->m_model = Model_HTC_Universal; 152 d->m_model = Model_HTC_Universal;
153 d->m_modelstr = "HTC Universal"; 153 d->m_modelstr = "HTC Universal";
154 } 154 }
155 if ( model == "HTC Alpine" ) { 155 if ( model == "HTC Alpine" ) {
156 d->m_model = Model_HTC_Alpine; 156 d->m_model = Model_HTC_Alpine;
157 d->m_modelstr = "HTC Alpine"; 157 d->m_modelstr = "HTC Alpine";
158 } 158 }
159 if ( model == "HTC Apache" ) { 159 if ( model == "HTC Apache" ) {
160 d->m_model = Model_HTC_Apache; 160 d->m_model = Model_HTC_Apache;
161 d->m_modelstr = "HTC Apache"; 161 d->m_modelstr = "HTC Apache";
162 } 162 }
163 if ( model == "HTC Beetles" ) { 163 if ( model == "HTC Beetles" ) {
164 d->m_model = Model_HTC_Beetles; 164 d->m_model = Model_HTC_Beetles;
@@ -310,172 +310,174 @@ void HTC::buzzer( int sound )
310 ::close ( fd ); 310 ::close ( fd );
311 } 311 }
312 312
313 } 313 }
314#endif 314#endif
315} 315}
316 316
317 317
318void HTC::playAlarmSound() 318void HTC::playAlarmSound()
319{ 319{
320 buzzer( SHARP_BUZ_SCHEDULE_ALARM ); 320 buzzer( SHARP_BUZ_SCHEDULE_ALARM );
321} 321}
322 322
323void HTC::playTouchSound() 323void HTC::playTouchSound()
324{ 324{
325 buzzer( SHARP_BUZ_TOUCHSOUND ); 325 buzzer( SHARP_BUZ_TOUCHSOUND );
326} 326}
327 327
328void HTC::playKeySound() 328void HTC::playKeySound()
329{ 329{
330 buzzer( SHARP_BUZ_KEYSOUND ); 330 buzzer( SHARP_BUZ_KEYSOUND );
331} 331}
332 332
333 333
334QValueList <OLed> HTC::ledList() const 334QValueList <OLed> HTC::ledList() const
335{ 335{
336 QValueList <OLed> vl; 336 QValueList <OLed> vl;
337 vl << Led_Mail; 337 vl << Led_Mail;
338 return vl; 338 return vl;
339} 339}
340 340
341QValueList <OLedState> HTC::ledStateList( OLed l ) const 341QValueList <OLedState> HTC::ledStateList( OLed l ) const
342{ 342{
343 QValueList <OLedState> vl; 343 QValueList <OLedState> vl;
344 344
345 if ( l == Led_Mail ) 345 if ( l == Led_Mail )
346 vl << Led_Off << Led_On << Led_BlinkSlow; 346 vl << Led_Off << Led_On << Led_BlinkSlow;
347 return vl; 347 return vl;
348} 348}
349 349
350OLedState HTC::ledState( OLed which ) const 350OLedState HTC::ledState( OLed which ) const
351{ 351{
352 if ( which == Led_Mail ) 352 if ( which == Led_Mail )
353 return m_leds [0]; 353 return m_leds [0];
354 else 354 else
355 return Led_Off; 355 return Led_Off;
356} 356}
357 357
358bool HTC::setLedState( OLed which, OLedState st ) 358bool HTC::setLedState( OLed, OLedState )
359{ 359{
360 qDebug( "HTC::setLedState: ODevice handling not yet implemented" ); 360 qDebug( "HTC::setLedState: ODevice handling not yet implemented" );
361 return false; 361 return false;
362} 362}
363 363
364int HTC::displayBrightnessResolution() const 364int HTC::displayBrightnessResolution() const
365{ 365{
366 int res = 1; 366 int res = 1;
367 367
368 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK ); 368 int fd = ::open( m_backlightdev + "max_brightness", O_RDONLY|O_NONBLOCK );
369 369
370 if ( fd ) 370 if ( fd )
371 { 371 {
372 char buf[100]; 372 char buf[100];
373 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res ); 373 if ( ::read( fd, &buf[0], sizeof buf ) ) ::sscanf( &buf[0], "%d", &res );
374 ::close( fd ); 374 ::close( fd );
375 } 375 }
376 376
377 return res; 377 return res;
378} 378}
379 379
380bool HTC::setDisplayBrightness( int bright ) 380bool HTC::setDisplayBrightness( int bright )
381{ 381{
382 382
383 //qDebug( "HTC::setDisplayBrightness( %d )", bright ); 383 //qDebug( "HTC::setDisplayBrightness( %d )", bright );
384 bool res = false; 384 bool res = false;
385 385
386 if ( bright > 255 ) bright = 255; 386 if ( bright > 255 ) bright = 255;
387 if ( bright < 0 ) bright = 0; 387 if ( bright < 0 ) bright = 0;
388 388
389 int numberOfSteps = displayBrightnessResolution(); 389 int numberOfSteps = displayBrightnessResolution();
390 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255; 390 int val = ( bright == 1 ) ? 1 : ( bright * numberOfSteps ) / 255;
391 391
392 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK ); 392 int fd = ::open( m_backlightdev + "brightness", O_WRONLY|O_NONBLOCK );
393 if ( fd ) 393 if ( fd )
394 { 394 {
395 char buf[100]; 395 char buf[100];
396 int len = ::snprintf( &buf[0], sizeof buf, "%d", val ); 396 int len = ::snprintf( &buf[0], sizeof buf, "%d", val );
397 res = ( ::write( fd, &buf[0], len ) == 0 ); 397 res = ( ::write( fd, &buf[0], len ) == 0 );
398 ::close( fd ); 398 ::close( fd );
399 } 399 }
400 return res; 400 return res;
401} 401}
402 402
403bool HTC::setDisplayStatus( bool on ) 403bool HTC::setDisplayStatus( bool on )
404{ 404{
405 405
406 bool res = false; 406 bool res = false;
407 407
408 int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK ); 408 int fd = ::open( m_backlightdev + "power", O_WRONLY|O_NONBLOCK );
409 if ( fd ) 409 if ( fd )
410 { 410 {
411 char buf[10]; 411 char buf[10];
412 buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN; 412 buf[0] = on ? FB_BLANK_UNBLANK : FB_BLANK_POWERDOWN;
413 buf[1] = '\0'; 413 buf[1] = '\0';
414 res = ( ::write( fd, &buf[0], 2 ) == 0 ); 414 res = ( ::write( fd, &buf[0], 2 ) == 0 );
415 ::close( fd ); 415 ::close( fd );
416 } 416 }
417 return res; 417 return res;
418} 418}
419 419
420Transformation HTC::rotation() const 420Transformation HTC::rotation() const
421{ 421{
422 qDebug( "HTC::rotation()" ); 422 qDebug( "HTC::rotation()" );
423 Transformation rot = Rot270; 423 Transformation rot = Rot270;
424 424
425 switch ( d->m_model ) { 425 switch ( d->m_model ) {
426 case Model_HTC_Universal: 426 case Model_HTC_Universal:
427 { 427 {
428 OHingeStatus hs = readHingeSensor(); 428 OHingeStatus hs = readHingeSensor();
429 qDebug( "HTC::rotation() - hinge sensor = %d", (int) hs ); 429 qDebug( "HTC::rotation() - hinge sensor = %d", (int) hs );
430 if ( hs == CASE_PORTRAIT ) rot = Rot0; 430 if ( hs == CASE_PORTRAIT ) rot = Rot0;
431 else if ( hs == CASE_UNKNOWN ) rot = Rot270; 431 else if ( hs == CASE_UNKNOWN ) rot = Rot270;
432 } 432 }
433 break; 433 break;
434 default:
435 break;
434 } 436 }
435 437
436 qDebug( "HTC::rotation() - returning '%d'", rot ); 438 qDebug( "HTC::rotation() - returning '%d'", rot );
437 return rot; 439 return rot;
438} 440}
439ODirection HTC::direction() const 441ODirection HTC::direction() const
440{ 442{
441 ODirection dir; 443 ODirection dir;
442 444
443 switch ( d->m_model ) { 445 switch ( d->m_model ) {
444 case Model_HTC_Universal: { 446 case Model_HTC_Universal: {
445 OHingeStatus hs = readHingeSensor(); 447 OHingeStatus hs = readHingeSensor();
446 if ( hs == CASE_PORTRAIT ) dir = CCW; 448 if ( hs == CASE_PORTRAIT ) dir = CCW;
447 else if ( hs == CASE_UNKNOWN ) dir = CCW; 449 else if ( hs == CASE_UNKNOWN ) dir = CCW;
448 else dir = CW; 450 else dir = CW;
449 } 451 }
450 break; 452 break;
451 default: dir = d->m_direction; 453 default: dir = d->m_direction;
452 break; 454 break;
453 } 455 }
454 return dir; 456 return dir;
455 457
456} 458}
457 459
458bool HTC::hasHingeSensor() const 460bool HTC::hasHingeSensor() const
459{ 461{
460 return d->m_model == Model_HTC_Universal; 462 return d->m_model == Model_HTC_Universal;
461} 463}
462 464
463OHingeStatus HTC::readHingeSensor() const 465OHingeStatus HTC::readHingeSensor() const
464{ 466{
465 /* 467 /*
466 * The HTC Universal keyboard is event source 1 in kernel 2.6. 468 * The HTC Universal keyboard is event source 1 in kernel 2.6.
467 * Hinge status is reported via Input System Switchs 0 and 1 like that: 469 * Hinge status is reported via Input System Switchs 0 and 1 like that:
468 * 470 *
469 * ------------------------- 471 * -------------------------
470 * | SW0 | SW1 | CASE | 472 * | SW0 | SW1 | CASE |
471 * |-----|-----|-----------| 473 * |-----|-----|-----------|
472 * | 0 0 Unknown | 474 * | 0 0 Unknown |
473 * | 1 0 Portrait | 475 * | 1 0 Portrait |
474 * | 0 1 Closed | 476 * | 0 1 Closed |
475 * | 1 1 Landscape | 477 * | 1 1 Landscape |
476 * ------------------------- 478 * -------------------------
477 */ 479 */
478 OInputDevice* keyboard = OInputSystem::instance()->device( "event1" ); 480 OInputDevice* keyboard = OInputSystem::instance()->device( "event1" );
479 bool switch0 = true; 481 bool switch0 = true;
480 bool switch1 = false; 482 bool switch1 = false;
481 if ( keyboard ) 483 if ( keyboard )