author | mickeyl <mickeyl> | 2003-05-23 13:28:27 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-23 13:28:27 (UTC) |
commit | f6d7ed30f034b318d77f36f81b0aa4588cea63fb (patch) (unidiff) | |
tree | 8083be660da5876e555686475dd8f5f8a024d7bf | |
parent | cbacd38e4b8e0e706fa43cd3e88041217c6fdaf9 (diff) | |
download | opie-f6d7ed30f034b318d77f36f81b0aa4588cea63fb.zip opie-f6d7ed30f034b318d77f36f81b0aa4588cea63fb.tar.gz opie-f6d7ed30f034b318d77f36f81b0aa4588cea63fb.tar.bz2 |
more handling of SIMpad specifica
-rw-r--r-- | libopie/odevice.cpp | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index 103104f..02f13b5 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp | |||
@@ -130,25 +130,27 @@ protected: | |||
130 | virtual void buzzer ( int snd ); | 130 | virtual void buzzer ( int snd ); |
131 | 131 | ||
132 | OLedState m_leds [1]; | 132 | OLedState m_leds [1]; |
133 | }; | 133 | }; |
134 | 134 | ||
135 | class SIMpad : public ODevice, public QWSServer::KeyboardFilter { | 135 | class SIMpad : public ODevice, public QWSServer::KeyboardFilter { |
136 | protected: | 136 | protected: |
137 | virtual void init ( ); | 137 | virtual void init ( ); |
138 | virtual void initButtons ( ); | 138 | virtual void initButtons ( ); |
139 | 139 | ||
140 | public: | 140 | public: |
141 | virtual bool setSoftSuspend ( bool soft ); | 141 | virtual bool setSoftSuspend ( bool soft ); |
142 | virtual bool suspend(); | ||
142 | 143 | ||
144 | virtual bool setDisplayStatus( bool on ); | ||
143 | virtual bool setDisplayBrightness ( int b ); | 145 | virtual bool setDisplayBrightness ( int b ); |
144 | virtual int displayBrightnessResolution ( ) const; | 146 | virtual int displayBrightnessResolution ( ) const; |
145 | 147 | ||
146 | virtual void alarmSound ( ); | 148 | virtual void alarmSound ( ); |
147 | 149 | ||
148 | virtual QValueList <OLed> ledList ( ) const; | 150 | virtual QValueList <OLed> ledList ( ) const; |
149 | virtual QValueList <OLedState> ledStateList ( OLed led ) const; | 151 | virtual QValueList <OLedState> ledStateList ( OLed led ) const; |
150 | virtual OLedState ledState ( OLed led ) const; | 152 | virtual OLedState ledState ( OLed led ) const; |
151 | virtual bool setLedState ( OLed led, OLedState st ); | 153 | virtual bool setLedState ( OLed led, OLedState st ); |
152 | 154 | ||
153 | protected: | 155 | protected: |
154 | virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); | 156 | virtual bool filter ( int unicode, int keycode, int modifiers, bool isPress, bool autoRepeat ); |
@@ -1706,33 +1708,69 @@ void SIMpad::alarmSound ( ) | |||
1706 | while ( !snd. isFinished ( )) | 1708 | while ( !snd. isFinished ( )) |
1707 | qApp-> processEvents ( ); | 1709 | qApp-> processEvents ( ); |
1708 | 1710 | ||
1709 | if ( fd >= 0 ) { | 1711 | if ( fd >= 0 ) { |
1710 | if ( vol_reset ) | 1712 | if ( vol_reset ) |
1711 | ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); | 1713 | ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); |
1712 | ::close ( fd ); | 1714 | ::close ( fd ); |
1713 | } | 1715 | } |
1714 | #endif | 1716 | #endif |
1715 | } | 1717 | } |
1716 | 1718 | ||
1717 | 1719 | ||
1720 | bool SIMpad::suspend ( ) // Must override because SIMpad does NOT have apm | ||
1721 | { | ||
1722 | qDebug( "ODevice for SIMpad: suspend()" ); | ||
1723 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend | ||
1724 | return false; | ||
1725 | |||
1726 | bool res = false; | ||
1727 | |||
1728 | struct timeval tvs, tvn; | ||
1729 | ::gettimeofday ( &tvs, 0 ); | ||
1730 | |||
1731 | ::sync ( ); // flush fs caches | ||
1732 | res = ( ::system ( "echo > /proc/sys/pm/suspend" ) == 0 ); //TODO make better :) | ||
1733 | |||
1734 | return res; | ||
1735 | } | ||
1736 | |||
1737 | |||
1718 | bool SIMpad::setSoftSuspend ( bool soft ) | 1738 | bool SIMpad::setSoftSuspend ( bool soft ) |
1719 | { | 1739 | { |
1720 | //TODO | 1740 | qDebug( "ODevice for SIMpad: UNHANDLED setSoftSuspend(%s)", soft? "on" : "off" ); |
1721 | return false; | 1741 | return false; |
1722 | } | 1742 | } |
1723 | 1743 | ||
1724 | 1744 | ||
1745 | bool SIMpad::setDisplayStatus ( bool on ) | ||
1746 | { | ||
1747 | qDebug( "ODevice for SIMpad: setDisplayStatus(%s)", on? "on" : "off" ); | ||
1748 | |||
1749 | bool res = false; | ||
1750 | int fd; | ||
1751 | |||
1752 | QString cmdline = QString().sprintf( "echo %s > /proc/cs3", on ? "0xd41a" : "0xd40a" ); //TODO make better :) | ||
1753 | |||
1754 | if (( fd = ::open ( "/dev/fb0", O_RDWR )) >= 0 ) { | ||
1755 | res = ( ::system( (const char*) cmdline ) == 0 ); | ||
1756 | ::close ( fd ); | ||
1757 | } | ||
1758 | return res; | ||
1759 | } | ||
1760 | |||
1761 | |||
1725 | bool SIMpad::setDisplayBrightness ( int bright ) | 1762 | bool SIMpad::setDisplayBrightness ( int bright ) |
1726 | { | 1763 | { |
1764 | qDebug( "ODevice for SIMpad: setDisplayBrightness( %d )", bright ); | ||
1727 | bool res = false; | 1765 | bool res = false; |
1728 | int fd; | 1766 | int fd; |
1729 | 1767 | ||
1730 | if ( bright > 255 ) | 1768 | if ( bright > 255 ) |
1731 | bright = 255; | 1769 | bright = 255; |
1732 | if ( bright < 0 ) | 1770 | if ( bright < 0 ) |
1733 | bright = 0; | 1771 | bright = 0; |
1734 | 1772 | ||
1735 | if (( fd = ::open ( SIMPAD_BACKLIGHT_CONTROL, O_WRONLY )) >= 0 ) { | 1773 | if (( fd = ::open ( SIMPAD_BACKLIGHT_CONTROL, O_WRONLY )) >= 0 ) { |
1736 | int value = 255 - bright; | 1774 | int value = 255 - bright; |
1737 | const int mask = SIMPAD_BACKLIGHT_MASK; | 1775 | const int mask = SIMPAD_BACKLIGHT_MASK; |
1738 | value = value << 8; | 1776 | value = value << 8; |