-rw-r--r-- | libopie/odevice.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp index 5038cc9..e24e043 100644 --- a/libopie/odevice.cpp +++ b/libopie/odevice.cpp | |||
@@ -1946,208 +1946,208 @@ bool Zaurus::setSoftSuspend ( bool soft ) | |||
1946 | bool Zaurus::setDisplayBrightness ( int bright ) | 1946 | bool Zaurus::setDisplayBrightness ( int bright ) |
1947 | { | 1947 | { |
1948 | // FIXME The C7x0 have a proc-interface (/proc/drivers/corgi-bl) which | 1948 | // FIXME The C7x0 have a proc-interface (/proc/drivers/corgi-bl) which |
1949 | // is nice to use. Currently it exposes 16+1 levels. Implement this! | 1949 | // is nice to use. Currently it exposes 16+1 levels. Implement this! |
1950 | // (or wait for kergoth unifying the interfaces in the OpenZaurus kernel.) | 1950 | // (or wait for kergoth unifying the interfaces in the OpenZaurus kernel.) |
1951 | bool res = false; | 1951 | bool res = false; |
1952 | int fd; | 1952 | int fd; |
1953 | 1953 | ||
1954 | if ( bright > 255 ) | 1954 | if ( bright > 255 ) |
1955 | bright = 255; | 1955 | bright = 255; |
1956 | if ( bright < 0 ) | 1956 | if ( bright < 0 ) |
1957 | bright = 0; | 1957 | bright = 0; |
1958 | 1958 | ||
1959 | if (m_embedix) { | 1959 | if (m_embedix) { |
1960 | if (( fd = ::open ( "/dev/fl", O_WRONLY )) >= 0 ) { | 1960 | if (( fd = ::open ( "/dev/fl", O_WRONLY )) >= 0 ) { |
1961 | int bl = ( bright * 4 + 127 ) / 255; // only 4 steps on zaurus | 1961 | int bl = ( bright * 4 + 127 ) / 255; // only 4 steps on zaurus |
1962 | if ( bright && !bl ) | 1962 | if ( bright && !bl ) |
1963 | bl = 1; | 1963 | bl = 1; |
1964 | res = ( ::ioctl ( fd, FL_IOCTL_STEP_CONTRAST, bl ) == 0 ); | 1964 | res = ( ::ioctl ( fd, FL_IOCTL_STEP_CONTRAST, bl ) == 0 ); |
1965 | ::close ( fd ); | 1965 | ::close ( fd ); |
1966 | } | 1966 | } |
1967 | } else { | 1967 | } else { |
1968 | #define FB_BACKLIGHT_SET_BRIGHTNESS _IOW('F', 1, u_int) /* set brightness */ | 1968 | #define FB_BACKLIGHT_SET_BRIGHTNESS _IOW('F', 1, u_int) /* set brightness */ |
1969 | if (( fd = ::open ( "/dev/fb0", O_WRONLY )) >= 0 ) { | 1969 | if (( fd = ::open ( "/dev/fb0", O_WRONLY )) >= 0 ) { |
1970 | res = ( ::ioctl ( fd , FB_BACKLIGHT_SET_BRIGHTNESS, bright ) == 0 ); | 1970 | res = ( ::ioctl ( fd , FB_BACKLIGHT_SET_BRIGHTNESS, bright ) == 0 ); |
1971 | ::close ( fd ); | 1971 | ::close ( fd ); |
1972 | } | 1972 | } |
1973 | } | 1973 | } |
1974 | return res; | 1974 | return res; |
1975 | } | 1975 | } |
1976 | 1976 | ||
1977 | bool Zaurus::suspend ( ) | 1977 | bool Zaurus::suspend ( ) |
1978 | { | 1978 | { |
1979 | qDebug("ODevice::suspend"); | 1979 | qDebug("ODevice::suspend"); |
1980 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend | 1980 | if ( !isQWS( ) ) // only qwsserver is allowed to suspend |
1981 | return false; | 1981 | return false; |
1982 | 1982 | ||
1983 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices | 1983 | if ( d-> m_model == Model_Unknown ) // better don't suspend in qvfb / on unkown devices |
1984 | return false; | 1984 | return false; |
1985 | 1985 | ||
1986 | bool res = false; | 1986 | bool res = false; |
1987 | 1987 | ||
1988 | struct timeval tvs, tvn; | 1988 | struct timeval tvs, tvn; |
1989 | ::gettimeofday ( &tvs, 0 ); | 1989 | ::gettimeofday ( &tvs, 0 ); |
1990 | 1990 | ||
1991 | ::sync ( ); // flush fs caches | 1991 | ::sync ( ); // flush fs caches |
1992 | res = ( ::system ( "apm --suspend" ) == 0 ); | 1992 | res = ( ::system ( "apm --suspend" ) == 0 ); |
1993 | 1993 | ||
1994 | // This is needed because the iPAQ apm implementation is asynchronous and we | 1994 | // This is needed because the iPAQ apm implementation is asynchronous and we |
1995 | // can not be sure when exactly the device is really suspended | 1995 | // can not be sure when exactly the device is really suspended |
1996 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. | 1996 | // This can be deleted as soon as a stable familiar with a synchronous apm implementation exists. |
1997 | 1997 | ||
1998 | if ( res ) { | 1998 | if ( res ) { |
1999 | do { // Yes, wait 15 seconds. This APM bug sucks big time. | 1999 | do { // Yes, wait 15 seconds. This APM bug sucks big time. |
2000 | ::usleep ( 200 * 1000 ); | 2000 | ::usleep ( 200 * 1000 ); |
2001 | ::gettimeofday ( &tvn, 0 ); | 2001 | ::gettimeofday ( &tvn, 0 ); |
2002 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 15000 ); | 2002 | } while ((( tvn. tv_sec - tvs. tv_sec ) * 1000 + ( tvn. tv_usec - tvs. tv_usec ) / 1000 ) < 15000 ); |
2003 | } | 2003 | } |
2004 | 2004 | ||
2005 | QCopEnvelope ( "QPE/Rotation", "rotateDefault()" ); | 2005 | QCopEnvelope ( "QPE/Rotation", "rotateDefault()" ); |
2006 | return res; | 2006 | return res; |
2007 | } | 2007 | } |
2008 | 2008 | ||
2009 | 2009 | ||
2010 | Transformation Zaurus::rotation ( ) const | 2010 | Transformation Zaurus::rotation ( ) const |
2011 | { | 2011 | { |
2012 | Transformation rot; | 2012 | Transformation rot; |
2013 | int handle = 0; | 2013 | int handle = 0; |
2014 | int retval = 0; | 2014 | int retval = 0; |
2015 | 2015 | ||
2016 | switch ( d-> m_model ) { | 2016 | switch ( d-> m_model ) { |
2017 | case Model_Zaurus_SLC7x0: | 2017 | case Model_Zaurus_SLC7x0: |
2018 | handle = ::open("/dev/apm_bios", O_RDWR|O_NONBLOCK); | 2018 | handle = ::open("/dev/apm_bios", O_RDWR|O_NONBLOCK); |
2019 | if (handle == -1) { | 2019 | if (handle == -1) { |
2020 | return Rot270; | 2020 | return Rot270; |
2021 | } else { | 2021 | } else { |
2022 | retval = ::ioctl(handle, SHARP_IOCTL_GET_ROTATION); | 2022 | retval = ::ioctl(handle, SHARP_IOCTL_GET_ROTATION); |
2023 | ::close (handle); | 2023 | ::close (handle); |
2024 | 2024 | ||
2025 | if (retval == 2 ) | 2025 | if (retval == 2 ) |
2026 | rot = Rot0; | 2026 | rot = Rot0; |
2027 | else | 2027 | else |
2028 | rot = Rot270; | 2028 | rot = Rot270; |
2029 | } | 2029 | } |
2030 | break; | 2030 | break; |
2031 | case Model_Zaurus_SLA300: | 2031 | case Model_Zaurus_SLA300: |
2032 | case Model_Zaurus_SLB600: | 2032 | case Model_Zaurus_SLB600: |
2033 | case Model_Zaurus_SL5500: | 2033 | case Model_Zaurus_SL5500: |
2034 | case Model_Zaurus_SL5000: | 2034 | case Model_Zaurus_SL5000: |
2035 | default: | 2035 | default: |
2036 | rot = d-> m_rotation; | 2036 | rot = d-> m_rotation; |
2037 | break; | 2037 | break; |
2038 | } | 2038 | } |
2039 | 2039 | ||
2040 | return rot; | 2040 | return rot; |
2041 | } | 2041 | } |
2042 | ODirection Zaurus::direction ( ) const | 2042 | ODirection Zaurus::direction ( ) const |
2043 | { | 2043 | { |
2044 | ODirection dir; | 2044 | ODirection dir; |
2045 | int handle = 0; | 2045 | int handle = 0; |
2046 | int retval = 0; | 2046 | int retval = 0; |
2047 | switch ( d-> m_model ) { | 2047 | switch ( d-> m_model ) { |
2048 | case Model_Zaurus_SLC7x0: | 2048 | case Model_Zaurus_SLC7x0: |
2049 | handle = ::open("/dev/apm_bios", O_RDWR|O_NONBLOCK); | 2049 | handle = ::open("/dev/apm_bios", O_RDWR|O_NONBLOCK); |
2050 | if (handle == -1) { | 2050 | if (handle == -1) { |
2051 | dir = Rot270; | 2051 | dir = CW; |
2052 | } else { | 2052 | } else { |
2053 | retval = ::ioctl(handle, SHARP_IOCTL_GET_ROTATION); | 2053 | retval = ::ioctl(handle, SHARP_IOCTL_GET_ROTATION); |
2054 | ::close (handle); | 2054 | ::close (handle); |
2055 | if (retval == 2 ) | 2055 | if (retval == 2 ) |
2056 | dir = CCW; | 2056 | dir = CCW; |
2057 | else | 2057 | else |
2058 | dir = CW; | 2058 | dir = CW; |
2059 | } | 2059 | } |
2060 | break; | 2060 | break; |
2061 | case Model_Zaurus_SLA300: | 2061 | case Model_Zaurus_SLA300: |
2062 | case Model_Zaurus_SLB600: | 2062 | case Model_Zaurus_SLB600: |
2063 | case Model_Zaurus_SL5500: | 2063 | case Model_Zaurus_SL5500: |
2064 | case Model_Zaurus_SL5000: | 2064 | case Model_Zaurus_SL5000: |
2065 | default: | 2065 | default: |
2066 | dir = d-> m_direction; | 2066 | dir = d-> m_direction; |
2067 | break; | 2067 | break; |
2068 | } | 2068 | } |
2069 | return dir; | 2069 | return dir; |
2070 | 2070 | ||
2071 | } | 2071 | } |
2072 | 2072 | ||
2073 | int Zaurus::displayBrightnessResolution ( ) const | 2073 | int Zaurus::displayBrightnessResolution ( ) const |
2074 | { | 2074 | { |
2075 | if (m_embedix) | 2075 | if (m_embedix) |
2076 | return 5; | 2076 | return 5; |
2077 | else | 2077 | else |
2078 | return 256; | 2078 | return 256; |
2079 | } | 2079 | } |
2080 | 2080 | ||
2081 | /************************************************** | 2081 | /************************************************** |
2082 | * | 2082 | * |
2083 | * SIMpad | 2083 | * SIMpad |
2084 | * | 2084 | * |
2085 | **************************************************/ | 2085 | **************************************************/ |
2086 | 2086 | ||
2087 | void SIMpad::init ( ) | 2087 | void SIMpad::init ( ) |
2088 | { | 2088 | { |
2089 | d-> m_vendorstr = "SIEMENS"; | 2089 | d-> m_vendorstr = "SIEMENS"; |
2090 | d-> m_vendor = Vendor_SIEMENS; | 2090 | d-> m_vendor = Vendor_SIEMENS; |
2091 | 2091 | ||
2092 | QFile f ( "/proc/hal/model" ); | 2092 | QFile f ( "/proc/hal/model" ); |
2093 | 2093 | ||
2094 | //TODO Implement model checking | 2094 | //TODO Implement model checking |
2095 | //FIXME For now we assume an SL4 | 2095 | //FIXME For now we assume an SL4 |
2096 | 2096 | ||
2097 | d-> m_modelstr = "SL4"; | 2097 | d-> m_modelstr = "SL4"; |
2098 | d-> m_model = Model_SIMpad_SL4; | 2098 | d-> m_model = Model_SIMpad_SL4; |
2099 | 2099 | ||
2100 | switch ( d-> m_model ) { | 2100 | switch ( d-> m_model ) { |
2101 | default: | 2101 | default: |
2102 | d-> m_rotation = Rot0; | 2102 | d-> m_rotation = Rot0; |
2103 | d-> m_direction = CCW; | 2103 | d-> m_direction = CCW; |
2104 | d-> m_holdtime = 1000; // 1000ms | 2104 | d-> m_holdtime = 1000; // 1000ms |
2105 | 2105 | ||
2106 | break; | 2106 | break; |
2107 | } | 2107 | } |
2108 | 2108 | ||
2109 | f. setName ( "/etc/familiar-version" ); | 2109 | f. setName ( "/etc/familiar-version" ); |
2110 | if ( f. open ( IO_ReadOnly )) { | 2110 | if ( f. open ( IO_ReadOnly )) { |
2111 | d-> m_systemstr = "Familiar"; | 2111 | d-> m_systemstr = "Familiar"; |
2112 | d-> m_system = System_Familiar; | 2112 | d-> m_system = System_Familiar; |
2113 | 2113 | ||
2114 | QTextStream ts ( &f ); | 2114 | QTextStream ts ( &f ); |
2115 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); | 2115 | d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); |
2116 | 2116 | ||
2117 | f. close ( ); | 2117 | f. close ( ); |
2118 | } else { | 2118 | } else { |
2119 | f. setName ( "/etc/oz_version" ); | 2119 | f. setName ( "/etc/oz_version" ); |
2120 | 2120 | ||
2121 | if ( f. open ( IO_ReadOnly )) { | 2121 | if ( f. open ( IO_ReadOnly )) { |
2122 | d-> m_systemstr = "OpenEmbedded/SIMpad"; | 2122 | d-> m_systemstr = "OpenEmbedded/SIMpad"; |
2123 | d-> m_system = System_OpenZaurus; | 2123 | d-> m_system = System_OpenZaurus; |
2124 | 2124 | ||
2125 | QTextStream ts ( &f ); | 2125 | QTextStream ts ( &f ); |
2126 | ts.setDevice ( &f ); | 2126 | ts.setDevice ( &f ); |
2127 | d-> m_sysverstr = ts. readLine ( ); | 2127 | d-> m_sysverstr = ts. readLine ( ); |
2128 | f. close ( ); | 2128 | f. close ( ); |
2129 | } | 2129 | } |
2130 | } | 2130 | } |
2131 | 2131 | ||
2132 | m_leds [0] = m_leds [1] = Led_Off; | 2132 | m_leds [0] = m_leds [1] = Led_Off; |
2133 | 2133 | ||
2134 | m_power_timer = 0; | 2134 | m_power_timer = 0; |
2135 | 2135 | ||
2136 | } | 2136 | } |
2137 | 2137 | ||
2138 | void SIMpad::initButtons ( ) | 2138 | void SIMpad::initButtons ( ) |
2139 | { | 2139 | { |
2140 | if ( d-> m_buttons ) | 2140 | if ( d-> m_buttons ) |
2141 | return; | 2141 | return; |
2142 | 2142 | ||
2143 | if ( isQWS( ) ) | 2143 | if ( isQWS( ) ) |
2144 | QWSServer::setKeyboardFilter ( this ); | 2144 | QWSServer::setKeyboardFilter ( this ); |
2145 | 2145 | ||
2146 | d-> m_buttons = new QValueList <ODeviceButton>; | 2146 | d-> m_buttons = new QValueList <ODeviceButton>; |
2147 | 2147 | ||
2148 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { | 2148 | for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { |
2149 | s_button *sb = simpad_buttons + i; | 2149 | s_button *sb = simpad_buttons + i; |
2150 | ODeviceButton b; | 2150 | ODeviceButton b; |
2151 | 2151 | ||
2152 | if (( sb-> model & d-> m_model ) == d-> m_model ) { | 2152 | if (( sb-> model & d-> m_model ) == d-> m_model ) { |
2153 | b. setKeycode ( sb-> code ); | 2153 | b. setKeycode ( sb-> code ); |