summaryrefslogtreecommitdiff
path: root/libopie/odevice.cpp
Unidiff
Diffstat (limited to 'libopie/odevice.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index a3c30cb..0e620ba 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -497,513 +497,513 @@ void ODevice::reloadButtonMapping ( )
497 QCString pch, hch; 497 QCString pch, hch;
498 QCString pm, hm; 498 QCString pm, hm;
499 QByteArray pdata, hdata; 499 QByteArray pdata, hdata;
500 500
501 if ( cfg. hasGroup ( group )) { 501 if ( cfg. hasGroup ( group )) {
502 cfg. setGroup ( group ); 502 cfg. setGroup ( group );
503 pch = cfg. readEntry ( "PressedActionChannel" ). latin1 ( ); 503 pch = cfg. readEntry ( "PressedActionChannel" ). latin1 ( );
504 pm = cfg. readEntry ( "PressedActionMessage" ). latin1 ( ); 504 pm = cfg. readEntry ( "PressedActionMessage" ). latin1 ( );
505 // pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" )); 505 // pdata = decodeBase64 ( buttonFile. readEntry ( "PressedActionArgs" ));
506 506
507 hch = cfg. readEntry ( "HeldActionChannel" ). latin1 ( ); 507 hch = cfg. readEntry ( "HeldActionChannel" ). latin1 ( );
508 hm = cfg. readEntry ( "HeldActionMessage" ). latin1 ( ); 508 hm = cfg. readEntry ( "HeldActionMessage" ). latin1 ( );
509 // hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" )); 509 // hdata = decodeBase64 ( buttonFile. readEntry ( "HeldActionArgs" ));
510 } 510 }
511 511
512 b. setPressedAction ( OQCopMessage ( pch, pm, pdata )); 512 b. setPressedAction ( OQCopMessage ( pch, pm, pdata ));
513 b. setHeldAction ( OQCopMessage ( hch, hm, hdata )); 513 b. setHeldAction ( OQCopMessage ( hch, hm, hdata ));
514 } 514 }
515} 515}
516 516
517void ODevice::remapPressedAction ( int button, const OQCopMessage &action ) 517void ODevice::remapPressedAction ( int button, const OQCopMessage &action )
518{ 518{
519 if ( button >= (int) d-> m_buttons. count ( )) 519 if ( button >= (int) d-> m_buttons. count ( ))
520 return; 520 return;
521 521
522 ODeviceButton &b = d-> m_buttons [button]; 522 ODeviceButton &b = d-> m_buttons [button];
523 b. setPressedAction ( action ); 523 b. setPressedAction ( action );
524 524
525 Config buttonFile ( "ButtonSettings" ); 525 Config buttonFile ( "ButtonSettings" );
526 buttonFile. setGroup ( "Button" + QString::number ( button )); 526 buttonFile. setGroup ( "Button" + QString::number ( button ));
527 buttonFile. writeEntry ( "PressedActionChannel", (const char*) b. pressedAction ( ). channel ( )); 527 buttonFile. writeEntry ( "PressedActionChannel", (const char*) b. pressedAction ( ). channel ( ));
528 buttonFile. writeEntry ( "PressedActionMessage", (const char*) b. pressedAction ( ). message ( )); 528 buttonFile. writeEntry ( "PressedActionMessage", (const char*) b. pressedAction ( ). message ( ));
529 529
530 //buttonFile. writeEntry ( "PressedActionArgs", encodeBase64 ( b. pressedAction ( ). data ( ))); 530 //buttonFile. writeEntry ( "PressedActionArgs", encodeBase64 ( b. pressedAction ( ). data ( )));
531 531
532 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); 532 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" );
533} 533}
534 534
535void ODevice::remapHeldAction ( int button, const OQCopMessage &action ) 535void ODevice::remapHeldAction ( int button, const OQCopMessage &action )
536{ 536{
537 if ( button >= (int) d-> m_buttons. count ( )) 537 if ( button >= (int) d-> m_buttons. count ( ))
538 return; 538 return;
539 539
540 ODeviceButton &b = d-> m_buttons [button]; 540 ODeviceButton &b = d-> m_buttons [button];
541 b. setHeldAction ( action ); 541 b. setHeldAction ( action );
542 542
543 Config buttonFile ( "ButtonSettings" ); 543 Config buttonFile ( "ButtonSettings" );
544 buttonFile. setGroup ( "Button" + QString::number ( button )); 544 buttonFile. setGroup ( "Button" + QString::number ( button ));
545 buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction ( ). channel ( )); 545 buttonFile. writeEntry ( "HeldActionChannel", (const char *) b. heldAction ( ). channel ( ));
546 buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction ( ). message ( )); 546 buttonFile. writeEntry ( "HeldActionMessage", (const char *) b. heldAction ( ). message ( ));
547 547
548 //buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction ( ). data ( ))); 548 //buttonFile. writeEntry ( "HeldActionArgs", decodeBase64 ( b. heldAction ( ). data ( )));
549 549
550 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" ); 550 QCopEnvelope ( "QPE/System", "deviceButtonMappingChanged()" );
551} 551}
552 552
553 553
554 554
555 555
556/************************************************** 556/**************************************************
557 * 557 *
558 * iPAQ 558 * iPAQ
559 * 559 *
560 **************************************************/ 560 **************************************************/
561 561
562void iPAQ::init ( ) 562void iPAQ::init ( )
563{ 563{
564 d-> m_vendorstr = "HP"; 564 d-> m_vendorstr = "HP";
565 d-> m_vendor = Vendor_HP; 565 d-> m_vendor = Vendor_HP;
566 566
567 QFile f ( "/proc/hal/model" ); 567 QFile f ( "/proc/hal/model" );
568 568
569 if ( f. open ( IO_ReadOnly )) { 569 if ( f. open ( IO_ReadOnly )) {
570 QTextStream ts ( &f ); 570 QTextStream ts ( &f );
571 571
572 d-> m_modelstr = "H" + ts. readLine ( ); 572 d-> m_modelstr = "H" + ts. readLine ( );
573 573
574 if ( d-> m_modelstr == "H3100" ) 574 if ( d-> m_modelstr == "H3100" )
575 d-> m_model = Model_iPAQ_H31xx; 575 d-> m_model = Model_iPAQ_H31xx;
576 else if ( d-> m_modelstr == "H3600" ) 576 else if ( d-> m_modelstr == "H3600" )
577 d-> m_model = Model_iPAQ_H36xx; 577 d-> m_model = Model_iPAQ_H36xx;
578 else if ( d-> m_modelstr == "H3700" ) 578 else if ( d-> m_modelstr == "H3700" )
579 d-> m_model = Model_iPAQ_H37xx; 579 d-> m_model = Model_iPAQ_H37xx;
580 else if ( d-> m_modelstr == "H3800" ) 580 else if ( d-> m_modelstr == "H3800" )
581 d-> m_model = Model_iPAQ_H38xx; 581 d-> m_model = Model_iPAQ_H38xx;
582 else if ( d-> m_modelstr == "H3900" ) 582 else if ( d-> m_modelstr == "H3900" )
583 d-> m_model = Model_iPAQ_H39xx; 583 d-> m_model = Model_iPAQ_H39xx;
584 else 584 else
585 d-> m_model = Model_Unknown; 585 d-> m_model = Model_Unknown;
586 586
587 f. close ( ); 587 f. close ( );
588 } 588 }
589 589
590 f. setName ( "/etc/familiar-version" ); 590 f. setName ( "/etc/familiar-version" );
591 if ( f. open ( IO_ReadOnly )) { 591 if ( f. open ( IO_ReadOnly )) {
592 d-> m_systemstr = "Familiar"; 592 d-> m_systemstr = "Familiar";
593 d-> m_system = System_Familiar; 593 d-> m_system = System_Familiar;
594 594
595 QTextStream ts ( &f ); 595 QTextStream ts ( &f );
596 d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); 596 d-> m_sysverstr = ts. readLine ( ). mid ( 10 );
597 597
598 f. close ( ); 598 f. close ( );
599 } 599 }
600 600
601 m_leds [0] = m_leds [1] = Led_Off; 601 m_leds [0] = m_leds [1] = Led_Off;
602 602
603 m_power_timer = 0; 603 m_power_timer = 0;
604 604
605 for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { 605 for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) {
606 i_button *ib = ipaq_buttons + i; 606 i_button *ib = ipaq_buttons + i;
607 ODeviceButton b; 607 ODeviceButton b;
608 608
609 if (( ib-> model & d-> m_model ) == d-> m_model ) { 609 if (( ib-> model & d-> m_model ) == d-> m_model ) {
610 b. setKeycode ( ib-> code ); 610 b. setKeycode ( ib-> code );
611 b. setUserText ( qApp-> translate ( "Button", ib-> utext )); 611 b. setUserText ( qApp-> translate ( "Button", ib-> utext ));
612 b. setPixmap ( Resource::loadPixmap ( ib-> pix )); 612 b. setPixmap ( Resource::loadPixmap ( ib-> pix ));
613 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); 613 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction ));
614 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); 614 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction ));
615 615
616 d-> m_buttons. append ( b ); 616 d-> m_buttons. append ( b );
617 } 617 }
618 } 618 }
619 reloadButtonMapping ( ); 619 reloadButtonMapping ( );
620 620
621 if ( d-> m_qwsserver ) 621 if ( d-> m_qwsserver )
622 QWSServer::setKeyboardFilter ( this ); 622 QWSServer::setKeyboardFilter ( this );
623} 623}
624 624
625//#include <linux/h3600_ts.h> // including kernel headers is evil ... 625//#include <linux/h3600_ts.h> // including kernel headers is evil ...
626 626
627typedef struct { 627typedef struct {
628 unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */ 628 unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */
629 unsigned char TotalTime; /* Units of 5 seconds */ 629 unsigned char TotalTime; /* Units of 5 seconds */
630 unsigned char OnTime; /* units of 100m/s */ 630 unsigned char OnTime; /* units of 100m/s */
631 unsigned char OffTime; /* units of 100m/s */ 631 unsigned char OffTime; /* units of 100m/s */
632} LED_IN; 632} LED_IN;
633 633
634typedef struct { 634typedef struct {
635 unsigned char mode; 635 unsigned char mode;
636 unsigned char pwr; 636 unsigned char pwr;
637 unsigned char brightness; 637 unsigned char brightness;
638} FLITE_IN; 638} FLITE_IN;
639 639
640#define LED_ON OD_IOW( 'f', 5, LED_IN ) 640#define LED_ON OD_IOW( 'f', 5, LED_IN )
641#define FLITE_ON OD_IOW( 'f', 7, FLITE_IN ) 641#define FLITE_ON OD_IOW( 'f', 7, FLITE_IN )
642 642
643 643
644 644
645QValueList <OLed> iPAQ::ledList ( ) const 645QValueList <OLed> iPAQ::ledList ( ) const
646{ 646{
647 QValueList <OLed> vl; 647 QValueList <OLed> vl;
648 vl << Led_Power; 648 vl << Led_Power;
649 649
650 if ( d-> m_model == Model_iPAQ_H38xx ) 650 if ( d-> m_model == Model_iPAQ_H38xx )
651 vl << Led_BlueTooth; 651 vl << Led_BlueTooth;
652 return vl; 652 return vl;
653} 653}
654 654
655QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const 655QValueList <OLedState> iPAQ::ledStateList ( OLed l ) const
656{ 656{
657 QValueList <OLedState> vl; 657 QValueList <OLedState> vl;
658 658
659 if ( l == Led_Power ) 659 if ( l == Led_Power )
660 vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast; 660 vl << Led_Off << Led_On << Led_BlinkSlow << Led_BlinkFast;
661 else if ( l == Led_BlueTooth && d-> m_model == Model_iPAQ_H38xx ) 661 else if ( l == Led_BlueTooth && d-> m_model == Model_iPAQ_H38xx )
662 vl << Led_Off; // << Led_On << ??? 662 vl << Led_Off; // << Led_On << ???
663 663
664 return vl; 664 return vl;
665} 665}
666 666
667OLedState iPAQ::ledState ( OLed l ) const 667OLedState iPAQ::ledState ( OLed l ) const
668 { 668 {
669 switch ( l ) { 669 switch ( l ) {
670 case Led_Power: 670 case Led_Power:
671 return m_leds [0]; 671 return m_leds [0];
672 case Led_BlueTooth: 672 case Led_BlueTooth:
673 return m_leds [1]; 673 return m_leds [1];
674 default: 674 default:
675 return Led_Off; 675 return Led_Off;
676 } 676 }
677} 677}
678 678
679bool iPAQ::setLedState ( OLed l, OLedState st ) 679bool iPAQ::setLedState ( OLed l, OLedState st )
680{ 680{
681 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK ); 681 static int fd = ::open ( "/dev/touchscreen/0", O_RDWR | O_NONBLOCK );
682 682
683 if ( l == Led_Power ) { 683 if ( l == Led_Power ) {
684 if ( fd >= 0 ) { 684 if ( fd >= 0 ) {
685 LED_IN leds; 685 LED_IN leds;
686 ::memset ( &leds, 0, sizeof( leds )); 686 ::memset ( &leds, 0, sizeof( leds ));
687 leds. TotalTime = 0; 687 leds. TotalTime = 0;
688 leds. OnTime = 0; 688 leds. OnTime = 0;
689 leds. OffTime = 1; 689 leds. OffTime = 1;
690 leds. OffOnBlink = 2; 690 leds. OffOnBlink = 2;
691 691
692 switch ( st ) { 692 switch ( st ) {
693 case Led_Off : leds. OffOnBlink = 0; break; 693 case Led_Off : leds. OffOnBlink = 0; break;
694 case Led_On : leds. OffOnBlink = 1; break; 694 case Led_On : leds. OffOnBlink = 1; break;
695 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; 695 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break;
696 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; 696 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break;
697 } 697 }
698 698
699 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) { 699 if ( ::ioctl ( fd, LED_ON, &leds ) >= 0 ) {
700 m_leds [0] = st; 700 m_leds [0] = st;
701 return true; 701 return true;
702 } 702 }
703 } 703 }
704 } 704 }
705 return false; 705 return false;
706} 706}
707 707
708 708
709bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 709bool iPAQ::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
710{ 710{
711 int newkeycode = keycode; 711 int newkeycode = keycode;
712 712
713 switch ( keycode ) { 713 switch ( keycode ) {
714 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key 714 // H38xx/H39xx have no "Q" key anymore - this is now the Mail key
715 case HardKey_Menu: { 715 case HardKey_Menu: {
716 if (( d-> m_model == Model_iPAQ_H38xx ) || 716 if (( d-> m_model == Model_iPAQ_H38xx ) ||
717 ( d-> m_model == Model_iPAQ_H39xx )) { 717 ( d-> m_model == Model_iPAQ_H39xx )) {
718 newkeycode = HardKey_Mail; 718 newkeycode = HardKey_Mail;
719 } 719 }
720 break; 720 break;
721 } 721 }
722 722
723 // Rotate cursor keys 180° 723 // Rotate cursor keys 180°
724 case Key_Left : 724 case Key_Left :
725 case Key_Right: 725 case Key_Right:
726 case Key_Up : 726 case Key_Up :
727 case Key_Down : { 727 case Key_Down : {
728 if (( d-> m_model == Model_iPAQ_H31xx ) || 728 if (( d-> m_model == Model_iPAQ_H31xx ) ||
729 ( d-> m_model == Model_iPAQ_H38xx )) { 729 ( d-> m_model == Model_iPAQ_H38xx )) {
730 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4; 730 newkeycode = Key_Left + ( keycode - Key_Left + 2 ) % 4;
731 } 731 }
732 break; 732 break;
733 } 733 }
734 734
735 // map Power Button short/long press to F34/F35 735 // map Power Button short/long press to F34/F35
736 case Key_SysReq: { 736 case Key_SysReq: {
737 if ( isPress ) { 737 if ( isPress ) {
738 if ( m_power_timer ) 738 if ( m_power_timer )
739 killTimer ( m_power_timer ); 739 killTimer ( m_power_timer );
740 m_power_timer = startTimer ( 500 ); 740 m_power_timer = startTimer ( 500 );
741 } 741 }
742 else if ( m_power_timer ) { 742 else if ( m_power_timer ) {
743 killTimer ( m_power_timer ); 743 killTimer ( m_power_timer );
744 m_power_timer = 0; 744 m_power_timer = 0;
745 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false ); 745 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, true, false );
746 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false ); 746 QWSServer::sendKeyEvent ( -1, HardKey_Suspend, 0, false, false );
747 } 747 }
748 newkeycode = Key_unknown; 748 newkeycode = Key_unknown;
749 break; 749 break;
750 } 750 }
751 } 751 }
752 752
753 kif ( newkeycode != keycode ) { 753 if ( newkeycode != keycode ) {
754 if ( newkeycode != Key_unknown ) 754 if ( newkeycode != Key_unknown )
755 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat ); 755 QWSServer::sendKeyEvent ( -1, newkeycode, modifiers, isPress, autoRepeat );
756 return true; 756 return true;
757 } 757 }
758 else 758 else
759 return false; 759 return false;
760} 760}
761 761
762void iPAQ::timerEvent ( QTimerEvent * ) 762void iPAQ::timerEvent ( QTimerEvent * )
763{ 763{
764 killTimer ( m_power_timer ); 764 killTimer ( m_power_timer );
765 m_power_timer = 0; 765 m_power_timer = 0;
766 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); 766 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false );
767 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); 767 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false );
768} 768}
769 769
770 770
771void iPAQ::alarmSound ( ) 771void iPAQ::alarmSound ( )
772{ 772{
773#ifndef QT_NO_SOUND 773#ifndef QT_NO_SOUND
774 static Sound snd ( "alarm" ); 774 static Sound snd ( "alarm" );
775 int fd; 775 int fd;
776 int vol; 776 int vol;
777 bool vol_reset = false; 777 bool vol_reset = false;
778 778
779 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) { 779 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) {
780 if ( ::ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) { 780 if ( ::ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) {
781 Config cfg ( "qpe" ); 781 Config cfg ( "qpe" );
782 cfg. setGroup ( "Volume" ); 782 cfg. setGroup ( "Volume" );
783 783
784 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); 784 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 );
785 if ( volalarm < 0 ) 785 if ( volalarm < 0 )
786 volalarm = 0; 786 volalarm = 0;
787 else if ( volalarm > 100 ) 787 else if ( volalarm > 100 )
788 volalarm = 100; 788 volalarm = 100;
789 volalarm |= ( volalarm << 8 ); 789 volalarm |= ( volalarm << 8 );
790 790
791 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 ) 791 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 )
792 vol_reset = true; 792 vol_reset = true;
793 } 793 }
794 } 794 }
795 795
796 snd. play ( ); 796 snd. play ( );
797 while ( !snd. isFinished ( )) 797 while ( !snd. isFinished ( ))
798 qApp-> processEvents ( ); 798 qApp-> processEvents ( );
799 799
800 if ( fd >= 0 ) { 800 if ( fd >= 0 ) {
801 if ( vol_reset ) 801 if ( vol_reset )
802 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); 802 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol );
803 ::close ( fd ); 803 ::close ( fd );
804 } 804 }
805#endif 805#endif
806} 806}
807 807
808 808
809bool iPAQ::setSoftSuspend ( bool soft ) 809bool iPAQ::setSoftSuspend ( bool soft )
810{ 810{
811 bool res = false; 811 bool res = false;
812 int fd; 812 int fd;
813 813
814 if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) { 814 if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) {
815 if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 ) 815 if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 )
816 res = true; 816 res = true;
817 else 817 else
818 ::perror ( "write to /proc/sys/ts/suspend_button_mode" ); 818 ::perror ( "write to /proc/sys/ts/suspend_button_mode" );
819 819
820 ::close ( fd ); 820 ::close ( fd );
821 } 821 }
822 else 822 else
823 ::perror ( "/proc/sys/ts/suspend_button_mode" ); 823 ::perror ( "/proc/sys/ts/suspend_button_mode" );
824 824
825 return res; 825 return res;
826} 826}
827 827
828 828
829bool iPAQ::setDisplayBrightness ( int bright ) 829bool iPAQ::setDisplayBrightness ( int bright )
830{ 830{
831 bool res = false; 831 bool res = false;
832 int fd; 832 int fd;
833 833
834 if ( bright > 255 ) 834 if ( bright > 255 )
835 bright = 255; 835 bright = 255;
836 if ( bright < 0 ) 836 if ( bright < 0 )
837 bright = 0; 837 bright = 0;
838 838
839 if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) { 839 if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) {
840 FLITE_IN bl; 840 FLITE_IN bl;
841 bl. mode = 1; 841 bl. mode = 1;
842 bl. pwr = bright ? 1 : 0; 842 bl. pwr = bright ? 1 : 0;
843 bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255; 843 bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255;
844 res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 ); 844 res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 );
845 ::close ( fd ); 845 ::close ( fd );
846 } 846 }
847 return res; 847 return res;
848} 848}
849 849
850int iPAQ::displayBrightnessResolution ( ) const 850int iPAQ::displayBrightnessResolution ( ) const
851{ 851{
852 switch ( model ( )) { 852 switch ( model ( )) {
853 case Model_iPAQ_H31xx: 853 case Model_iPAQ_H31xx:
854 case Model_iPAQ_H36xx: 854 case Model_iPAQ_H36xx:
855 case Model_iPAQ_H37xx: 855 case Model_iPAQ_H37xx:
856 return 128; // really 256, but >128 could damage the LCD 856 return 128; // really 256, but >128 could damage the LCD
857 857
858 case Model_iPAQ_H38xx: 858 case Model_iPAQ_H38xx:
859 case Model_iPAQ_H39xx: 859 case Model_iPAQ_H39xx:
860 return 64; 860 return 64;
861 861
862 default: 862 default:
863 return 2; 863 return 2;
864 } 864 }
865} 865}
866 866
867 867
868bool iPAQ::hasLightSensor ( ) const 868bool iPAQ::hasLightSensor ( ) const
869{ 869{
870 return true; 870 return true;
871} 871}
872 872
873int iPAQ::readLightSensor ( ) 873int iPAQ::readLightSensor ( )
874{ 874{
875 int fd; 875 int fd;
876 int val = -1; 876 int val = -1;
877 877
878 if (( fd = ::open ( "/proc/hal/light_sensor", O_RDONLY )) >= 0 ) { 878 if (( fd = ::open ( "/proc/hal/light_sensor", O_RDONLY )) >= 0 ) {
879 char buffer [8]; 879 char buffer [8];
880 880
881 if ( ::read ( fd, buffer, 5 ) == 5 ) { 881 if ( ::read ( fd, buffer, 5 ) == 5 ) {
882 char *endptr; 882 char *endptr;
883 883
884 buffer [4] = 0; 884 buffer [4] = 0;
885 val = ::strtol ( buffer + 2, &endptr, 16 ); 885 val = ::strtol ( buffer + 2, &endptr, 16 );
886 886
887 if ( *endptr != 0 ) 887 if ( *endptr != 0 )
888 val = -1; 888 val = -1;
889 } 889 }
890 ::close ( fd ); 890 ::close ( fd );
891 } 891 }
892 892
893 return val; 893 return val;
894} 894}
895 895
896int iPAQ::lightSensorResolution ( ) const 896int iPAQ::lightSensorResolution ( ) const
897{ 897{
898 return 256; 898 return 256;
899} 899}
900 900
901/************************************************** 901/**************************************************
902 * 902 *
903 * Zaurus 903 * Zaurus
904 * 904 *
905 **************************************************/ 905 **************************************************/
906 906
907 907
908 908
909void Zaurus::init ( ) 909void Zaurus::init ( )
910{ 910{
911 d-> m_vendorstr = "Sharp"; 911 d-> m_vendorstr = "Sharp";
912 d-> m_vendor = Vendor_Sharp; 912 d-> m_vendor = Vendor_Sharp;
913 913
914 QFile f ( "/proc/filesystems" ); 914 QFile f ( "/proc/filesystems" );
915 915
916 if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) { 916 if ( f. open ( IO_ReadOnly ) && ( QTextStream ( &f ). read ( ). find ( "\tjffs2\n" ) >= 0 )) {
917 d-> m_vendorstr = "OpenZaurus Team"; 917 d-> m_vendorstr = "OpenZaurus Team";
918 d-> m_systemstr = "OpenZaurus"; 918 d-> m_systemstr = "OpenZaurus";
919 d-> m_system = System_OpenZaurus; 919 d-> m_system = System_OpenZaurus;
920 920
921 f. close ( ); 921 f. close ( );
922 922
923 f. setName ( "/etc/oz_version" ); 923 f. setName ( "/etc/oz_version" );
924 if ( f. open ( IO_ReadOnly )) { 924 if ( f. open ( IO_ReadOnly )) {
925 QTextStream ts ( &f ); 925 QTextStream ts ( &f );
926 d-> m_sysverstr = ts. readLine ( );//. mid ( 10 ); 926 d-> m_sysverstr = ts. readLine ( );//. mid ( 10 );
927 f. close ( ); 927 f. close ( );
928 } 928 }
929 } 929 }
930 else { 930 else {
931 d-> m_systemstr = "Zaurus"; 931 d-> m_systemstr = "Zaurus";
932 d-> m_system = System_Zaurus; 932 d-> m_system = System_Zaurus;
933 } 933 }
934 934
935 f. setName ( "/proc/deviceinfo/product" ); 935 f. setName ( "/proc/deviceinfo/product" );
936 if ( f. open ( IO_ReadOnly ) ) { 936 if ( f. open ( IO_ReadOnly ) ) {
937 QTextStream ts ( &f ); 937 QTextStream ts ( &f );
938 QString model = ts. readLine ( ); 938 QString model = ts. readLine ( );
939 f. close ( ); 939 f. close ( );
940 if ( model == "SL-5000D" ) { 940 if ( model == "SL-5000D" ) {
941 d-> m_model = Model_Zaurus_SL5000; 941 d-> m_model = Model_Zaurus_SL5000;
942 d-> m_modelstr = "Zaurus SL-5000D"; 942 d-> m_modelstr = "Zaurus SL-5000D";
943 } else if ( model == "SL-5500" ) { 943 } else if ( model == "SL-5500" ) {
944 d-> m_model = Model_Zaurus_SL5500; 944 d-> m_model = Model_Zaurus_SL5500;
945 d-> m_modelstr = "Zaurus SL-5500"; 945 d-> m_modelstr = "Zaurus SL-5500";
946 } 946 }
947 } 947 }
948 else { 948 else {
949 d-> m_model = Model_Zaurus_SL5000; 949 d-> m_model = Model_Zaurus_SL5000;
950 d-> m_modelstr = "Zaurus SL-5000D (unverified)"; 950 d-> m_modelstr = "Zaurus SL-5000D (unverified)";
951 } 951 }
952 952
953 for ( uint i = 0; i < ( sizeof( z_buttons ) / sizeof( z_button )); i++ ) { 953 for ( uint i = 0; i < ( sizeof( z_buttons ) / sizeof( z_button )); i++ ) {
954 z_button *zb = z_buttons + i; 954 z_button *zb = z_buttons + i;
955 ODeviceButton b; 955 ODeviceButton b;
956 956
957 b. setKeycode ( zb-> code ); 957 b. setKeycode ( zb-> code );
958 b. setUserText ( qApp-> translate ( "Button", zb-> utext )); 958 b. setUserText ( qApp-> translate ( "Button", zb-> utext ));
959 b. setPixmap ( Resource::loadPixmap ( zb-> pix )); 959 b. setPixmap ( Resource::loadPixmap ( zb-> pix ));
960 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), zb-> fpressedaction )); 960 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( zb-> fpressedservice ), zb-> fpressedaction ));
961 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), zb-> fheldaction )); 961 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( zb-> fheldservice ), zb-> fheldaction ));
962 962
963 d-> m_buttons. append ( b ); 963 d-> m_buttons. append ( b );
964 } 964 }
965 reloadButtonMapping ( ); 965 reloadButtonMapping ( );
966 966
967 m_leds [0] = Led_Off; 967 m_leds [0] = Led_Off;
968} 968}
969 969
970#include <unistd.h> 970#include <unistd.h>
971#include <fcntl.h> 971#include <fcntl.h>
972#include <sys/ioctl.h> 972#include <sys/ioctl.h>
973 973
974//#include <asm/sharp_char.h> // including kernel headers is evil ... 974//#include <asm/sharp_char.h> // including kernel headers is evil ...
975 975
976#define SHARP_DEV_IOCTL_COMMAND_START 0x5680 976#define SHARP_DEV_IOCTL_COMMAND_START 0x5680
977 977
978 #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) 978 #defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
979#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) 979#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
980 980
981#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ 981#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
982#define SHARP_BUZ_KEYSOUND 2 /* key sound */ 982#define SHARP_BUZ_KEYSOUND 2 /* key sound */
983#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ 983#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
984 984
985/* --- for SHARP_BUZZER device --- */ 985/* --- for SHARP_BUZZER device --- */
986 986
987 //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START) 987 //#defineSHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
988//#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START) 988//#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
989 989
990#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1) 990#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1)
991#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2) 991#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2)
992#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3) 992#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3)
993#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4) 993#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4)
994#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5) 994#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5)
995 995
996//#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */ 996//#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
997//#define SHARP_BUZ_KEYSOUND 2 /* key sound */ 997//#define SHARP_BUZ_KEYSOUND 2 /* key sound */
998 998
999//#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */ 999//#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */
1000//#define SHARP_PDA_WARNSOUND 4 /* warning occurred */ 1000//#define SHARP_PDA_WARNSOUND 4 /* warning occurred */
1001//#define SHARP_PDA_ERRORSOUND 5 /* error occurred */ 1001//#define SHARP_PDA_ERRORSOUND 5 /* error occurred */
1002//#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */ 1002//#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */
1003//#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */ 1003//#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */
1004//#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */ 1004//#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */
1005//#define SHARP_PDA_APPSTART 9 /* application start */ 1005//#define SHARP_PDA_APPSTART 9 /* application start */
1006//#define SHARP_PDA_APPQUIT 10 /* application ends */ 1006//#define SHARP_PDA_APPQUIT 10 /* application ends */
1007 1007
1008//#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */ 1008//#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
1009//#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */ 1009//#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */