summaryrefslogtreecommitdiff
path: root/libopie
Unidiff
Diffstat (limited to 'libopie') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index 8624016..13b4330 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -1995,586 +1995,597 @@ void SIMpad::init ( )
1995 QTextStream ts ( &f ); 1995 QTextStream ts ( &f );
1996 d-> m_sysverstr = ts. readLine ( ). mid ( 10 ); 1996 d-> m_sysverstr = ts. readLine ( ). mid ( 10 );
1997 1997
1998 f. close ( ); 1998 f. close ( );
1999 } else { 1999 } else {
2000 f. setName ( "/etc/oz_version" ); 2000 f. setName ( "/etc/oz_version" );
2001 2001
2002 if ( f. open ( IO_ReadOnly )) { 2002 if ( f. open ( IO_ReadOnly )) {
2003 d-> m_systemstr = "OpenEmbedded/SIMpad"; 2003 d-> m_systemstr = "OpenEmbedded/SIMpad";
2004 d-> m_system = System_OpenZaurus; 2004 d-> m_system = System_OpenZaurus;
2005 2005
2006 QTextStream ts ( &f ); 2006 QTextStream ts ( &f );
2007 ts.setDevice ( &f ); 2007 ts.setDevice ( &f );
2008 d-> m_sysverstr = ts. readLine ( ); 2008 d-> m_sysverstr = ts. readLine ( );
2009 f. close ( ); 2009 f. close ( );
2010 } 2010 }
2011 } 2011 }
2012 2012
2013 m_leds [0] = m_leds [1] = Led_Off; 2013 m_leds [0] = m_leds [1] = Led_Off;
2014 2014
2015 m_power_timer = 0; 2015 m_power_timer = 0;
2016 2016
2017} 2017}
2018 2018
2019void SIMpad::initButtons ( ) 2019void SIMpad::initButtons ( )
2020{ 2020{
2021 if ( d-> m_buttons ) 2021 if ( d-> m_buttons )
2022 return; 2022 return;
2023 2023
2024 if ( isQWS( ) ) 2024 if ( isQWS( ) )
2025 QWSServer::setKeyboardFilter ( this ); 2025 QWSServer::setKeyboardFilter ( this );
2026 2026
2027 d-> m_buttons = new QValueList <ODeviceButton>; 2027 d-> m_buttons = new QValueList <ODeviceButton>;
2028 2028
2029 for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) { 2029 for ( uint i = 0; i < ( sizeof( simpad_buttons ) / sizeof( s_button )); i++ ) {
2030 s_button *sb = simpad_buttons + i; 2030 s_button *sb = simpad_buttons + i;
2031 ODeviceButton b; 2031 ODeviceButton b;
2032 2032
2033 if (( sb-> model & d-> m_model ) == d-> m_model ) { 2033 if (( sb-> model & d-> m_model ) == d-> m_model ) {
2034 b. setKeycode ( sb-> code ); 2034 b. setKeycode ( sb-> code );
2035 b. setUserText ( QObject::tr ( "Button", sb-> utext )); 2035 b. setUserText ( QObject::tr ( "Button", sb-> utext ));
2036 b. setPixmap ( Resource::loadPixmap ( sb-> pix )); 2036 b. setPixmap ( Resource::loadPixmap ( sb-> pix ));
2037 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb-> fpressedservice ), sb-> fpressedaction )); 2037 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb-> fpressedservice ), sb-> fpressedaction ));
2038 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb-> fheldservice ), sb-> fheldaction )); 2038 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb-> fheldservice ), sb-> fheldaction ));
2039 2039
2040 d-> m_buttons-> append ( b ); 2040 d-> m_buttons-> append ( b );
2041 } 2041 }
2042 } 2042 }
2043 reloadButtonMapping ( ); 2043 reloadButtonMapping ( );
2044 2044
2045 QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); 2045 QCopChannel *sysch = new QCopChannel ( "QPE/System", this );
2046 connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); 2046 connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & )));
2047} 2047}
2048 2048
2049// SIMpad boardcontrol register CS3 2049// SIMpad boardcontrol register CS3
2050#define SIMPAD_BOARDCONTROL "/proc/cs3" 2050#define SIMPAD_BOARDCONTROL "/proc/cs3"
2051#define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA 2051#define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA
2052#define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA 2052#define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA
2053#define SIMPAD_EN1 0x0004 // This is only for EPROM's 2053#define SIMPAD_EN1 0x0004 // This is only for EPROM's
2054#define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V 2054#define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V
2055#define SIMPAD_DISPLAY_ON 0x0010 2055#define SIMPAD_DISPLAY_ON 0x0010
2056#define SIMPAD_PCMCIA_BUFF_DIS 0x0020 2056#define SIMPAD_PCMCIA_BUFF_DIS 0x0020
2057#define SIMPAD_MQ_RESET 0x0040 2057#define SIMPAD_MQ_RESET 0x0040
2058#define SIMPAD_PCMCIA_RESET 0x0080 2058#define SIMPAD_PCMCIA_RESET 0x0080
2059#define SIMPAD_DECT_POWER_ON 0x0100 2059#define SIMPAD_DECT_POWER_ON 0x0100
2060#define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave 2060#define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave
2061#define SIMPAD_RS232_ON 0x0400 2061#define SIMPAD_RS232_ON 0x0400
2062#define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave 2062#define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave
2063#define SIMPAD_LED2_ON 0x1000 2063#define SIMPAD_LED2_ON 0x1000
2064#define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode 2064#define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode
2065#define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit 2065#define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit
2066#define SIMPAD_RESET_SIMCARD 0x8000 2066#define SIMPAD_RESET_SIMCARD 0x8000
2067 2067
2068//SIMpad touchscreen backlight strength control 2068//SIMpad touchscreen backlight strength control
2069#define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL" 2069#define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/registers/PWM_CONTROL"
2070#define SIMPAD_BACKLIGHT_MASK 0x00a10044 2070#define SIMPAD_BACKLIGHT_MASK 0x00a10044
2071 2071
2072QValueList <OLed> SIMpad::ledList ( ) const 2072QValueList <OLed> SIMpad::ledList ( ) const
2073{ 2073{
2074 QValueList <OLed> vl; 2074 QValueList <OLed> vl;
2075 vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one? 2075 vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one?
2076 //vl << Led_Mail; //TODO find out if LED1 is accessible anyway 2076 //vl << Led_Mail; //TODO find out if LED1 is accessible anyway
2077 return vl; 2077 return vl;
2078} 2078}
2079 2079
2080QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const 2080QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const
2081{ 2081{
2082 QValueList <OLedState> vl; 2082 QValueList <OLedState> vl;
2083 2083
2084 if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one? 2084 if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one?
2085 vl << Led_Off << Led_On; 2085 vl << Led_Off << Led_On;
2086 //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway 2086 //else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway
2087 //vl << Led_Off; 2087 //vl << Led_Off;
2088 return vl; 2088 return vl;
2089} 2089}
2090 2090
2091OLedState SIMpad::ledState ( OLed l ) const 2091OLedState SIMpad::ledState ( OLed l ) const
2092{ 2092{
2093 switch ( l ) { 2093 switch ( l ) {
2094 case Led_Power: 2094 case Led_Power:
2095 return m_leds [0]; 2095 return m_leds [0];
2096 //case Led_Mail: 2096 //case Led_Mail:
2097 //return m_leds [1]; 2097 //return m_leds [1];
2098 default: 2098 default:
2099 return Led_Off; 2099 return Led_Off;
2100 } 2100 }
2101} 2101}
2102 2102
2103bool SIMpad::setLedState ( OLed l, OLedState st ) 2103bool SIMpad::setLedState ( OLed l, OLedState st )
2104{ 2104{
2105 static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK ); 2105 static int fd = ::open ( SIMPAD_BOARDCONTROL, O_RDWR | O_NONBLOCK );
2106 2106
2107 if ( l == Led_Power ) { 2107 if ( l == Led_Power ) {
2108 if ( fd >= 0 ) { 2108 if ( fd >= 0 ) {
2109 LED_IN leds; 2109 LED_IN leds;
2110 ::memset ( &leds, 0, sizeof( leds )); 2110 ::memset ( &leds, 0, sizeof( leds ));
2111 leds. TotalTime = 0; 2111 leds. TotalTime = 0;
2112 leds. OnTime = 0; 2112 leds. OnTime = 0;
2113 leds. OffTime = 1; 2113 leds. OffTime = 1;
2114 leds. OffOnBlink = 2; 2114 leds. OffOnBlink = 2;
2115 2115
2116 switch ( st ) { 2116 switch ( st ) {
2117 case Led_Off : leds. OffOnBlink = 0; break; 2117 case Led_Off : leds. OffOnBlink = 0; break;
2118 case Led_On : leds. OffOnBlink = 1; break; 2118 case Led_On : leds. OffOnBlink = 1; break;
2119 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break; 2119 case Led_BlinkSlow: leds. OnTime = 10; leds. OffTime = 10; break;
2120 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break; 2120 case Led_BlinkFast: leds. OnTime = 5; leds. OffTime = 5; break;
2121 } 2121 }
2122 2122
2123 { 2123 {
2124 /*TODO Implement this like that: 2124 /*TODO Implement this like that:
2125 read from cs3 2125 read from cs3
2126 && with SIMPAD_LED2_ON 2126 && with SIMPAD_LED2_ON
2127 write to cs3 */ 2127 write to cs3 */
2128 m_leds [0] = st; 2128 m_leds [0] = st;
2129 return true; 2129 return true;
2130 } 2130 }
2131 } 2131 }
2132 } 2132 }
2133 return false; 2133 return false;
2134} 2134}
2135 2135
2136 2136
2137bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat ) 2137bool SIMpad::filter ( int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat )
2138{ 2138{
2139 //TODO 2139 //TODO
2140 return false; 2140 return false;
2141} 2141}
2142 2142
2143void SIMpad::timerEvent ( QTimerEvent * ) 2143void SIMpad::timerEvent ( QTimerEvent * )
2144{ 2144{
2145 killTimer ( m_power_timer ); 2145 killTimer ( m_power_timer );
2146 m_power_timer = 0; 2146 m_power_timer = 0;
2147 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false ); 2147 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, true, false );
2148 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false ); 2148 QWSServer::sendKeyEvent ( -1, HardKey_Backlight, 0, false, false );
2149} 2149}
2150 2150
2151 2151
2152void SIMpad::alarmSound ( ) 2152void SIMpad::alarmSound ( )
2153{ 2153{
2154#ifndef QT_NO_SOUND 2154#ifndef QT_NO_SOUND
2155 static Sound snd ( "alarm" ); 2155 static Sound snd ( "alarm" );
2156 int fd; 2156 int fd;
2157 int vol; 2157 int vol;
2158 bool vol_reset = false; 2158 bool vol_reset = false;
2159 2159
2160 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) { 2160 if (( fd = ::open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) {
2161 if ( ::ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) { 2161 if ( ::ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) {
2162 Config cfg ( "qpe" ); 2162 Config cfg ( "qpe" );
2163 cfg. setGroup ( "Volume" ); 2163 cfg. setGroup ( "Volume" );
2164 2164
2165 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); 2165 int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 );
2166 if ( volalarm < 0 ) 2166 if ( volalarm < 0 )
2167 volalarm = 0; 2167 volalarm = 0;
2168 else if ( volalarm > 100 ) 2168 else if ( volalarm > 100 )
2169 volalarm = 100; 2169 volalarm = 100;
2170 volalarm |= ( volalarm << 8 ); 2170 volalarm |= ( volalarm << 8 );
2171 2171
2172 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 ) 2172 if ( ::ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 )
2173 vol_reset = true; 2173 vol_reset = true;
2174 } 2174 }
2175 } 2175 }
2176 2176
2177 snd. play ( ); 2177 snd. play ( );
2178 while ( !snd. isFinished ( )) 2178 while ( !snd. isFinished ( ))
2179 qApp-> processEvents ( ); 2179 qApp-> processEvents ( );
2180 2180
2181 if ( fd >= 0 ) { 2181 if ( fd >= 0 ) {
2182 if ( vol_reset ) 2182 if ( vol_reset )
2183 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); 2183 ::ioctl ( fd, MIXER_WRITE( 0 ), &vol );
2184 ::close ( fd ); 2184 ::close ( fd );
2185 } 2185 }
2186#endif 2186#endif
2187} 2187}
2188 2188
2189 2189
2190bool SIMpad::suspend ( ) // Must override because SIMpad does NOT have apm 2190bool SIMpad::suspend ( ) // Must override because SIMpad does NOT have apm
2191{ 2191{
2192 qDebug( "ODevice for SIMpad: suspend()" ); 2192 qDebug( "ODevice for SIMpad: suspend()" );
2193 if ( !isQWS( ) ) // only qwsserver is allowed to suspend 2193 if ( !isQWS( ) ) // only qwsserver is allowed to suspend
2194 return false; 2194 return false;
2195 2195
2196 bool res = false; 2196 bool res = false;
2197 2197
2198 struct timeval tvs, tvn; 2198 struct timeval tvs, tvn;
2199 ::gettimeofday ( &tvs, 0 ); 2199 ::gettimeofday ( &tvs, 0 );
2200 2200
2201 ::sync ( ); // flush fs caches 2201 ::sync ( ); // flush fs caches
2202 res = ( ::system ( "cat /dev/fb/0 >/tmp/.buffer; echo > /proc/sys/pm/suspend; cat /tmp/.buffer >/dev/fb/0" ) == 0 ); //TODO make better :) 2202 res = ( ::system ( "cat /dev/fb/0 >/tmp/.buffer; echo > /proc/sys/pm/suspend; cat /tmp/.buffer >/dev/fb/0" ) == 0 ); //TODO make better :)
2203 2203
2204 return res; 2204 return res;
2205} 2205}
2206 2206
2207 2207
2208bool SIMpad::setSoftSuspend ( bool soft ) 2208bool SIMpad::setSoftSuspend ( bool soft )
2209{ 2209{
2210 qDebug( "ODevice for SIMpad: UNHANDLED setSoftSuspend(%s)", soft? "on" : "off" ); 2210 qDebug( "ODevice for SIMpad: UNHANDLED setSoftSuspend(%s)", soft? "on" : "off" );
2211 return false; 2211 return false;
2212} 2212}
2213 2213
2214 2214
2215bool SIMpad::setDisplayStatus ( bool on ) 2215bool SIMpad::setDisplayStatus ( bool on )
2216{ 2216{
2217 qDebug( "ODevice for SIMpad: setDisplayStatus(%s)", on? "on" : "off" ); 2217 qDebug( "ODevice for SIMpad: setDisplayStatus(%s)", on? "on" : "off" );
2218 2218
2219 bool res = false; 2219 bool res = false;
2220 int fd; 2220 int fd;
2221 2221
2222 QString cmdline = QString().sprintf( "echo %s > /proc/cs3", on ? "0xd41a" : "0xd40a" ); //TODO make better :) 2222 QString cmdline = QString().sprintf( "echo %s > /proc/cs3", on ? "0xd41a" : "0xd40a" ); //TODO make better :)
2223 2223
2224 res = ( ::system( (const char*) cmdline ) == 0 ); 2224 res = ( ::system( (const char*) cmdline ) == 0 );
2225 2225
2226 return res; 2226 return res;
2227} 2227}
2228 2228
2229 2229
2230bool SIMpad::setDisplayBrightness ( int bright ) 2230bool SIMpad::setDisplayBrightness ( int bright )
2231{ 2231{
2232 qDebug( "ODevice for SIMpad: setDisplayBrightness( %d )", bright ); 2232 qDebug( "ODevice for SIMpad: setDisplayBrightness( %d )", bright );
2233 bool res = false; 2233 bool res = false;
2234 int fd; 2234 int fd;
2235 2235
2236 if ( bright > 255 ) 2236 if ( bright > 255 )
2237 bright = 255; 2237 bright = 255;
2238 if ( bright < 1 ) 2238 if ( bright < 1 )
2239 bright = 0; 2239 bright = 0;
2240 2240
2241 if (( fd = ::open ( SIMPAD_BACKLIGHT_CONTROL, O_WRONLY )) >= 0 ) { 2241 if (( fd = ::open ( SIMPAD_BACKLIGHT_CONTROL, O_WRONLY )) >= 0 ) {
2242 int value = 255 - bright; 2242 int value = 255 - bright;
2243 const int mask = SIMPAD_BACKLIGHT_MASK; 2243 const int mask = SIMPAD_BACKLIGHT_MASK;
2244 value = value << 8; 2244 value = value << 8;
2245 value += mask; 2245 value += mask;
2246 char writeCommand[100]; 2246 char writeCommand[100];
2247 const int count = sprintf( writeCommand, "0x%x\n", value ); 2247 const int count = sprintf( writeCommand, "0x%x\n", value );
2248 res = ( ::write ( fd, writeCommand, count ) != -1 ); 2248 res = ( ::write ( fd, writeCommand, count ) != -1 );
2249 ::close ( fd ); 2249 ::close ( fd );
2250 } 2250 }
2251 return res; 2251 return res;
2252} 2252}
2253 2253
2254 2254
2255int SIMpad::displayBrightnessResolution ( ) const 2255int SIMpad::displayBrightnessResolution ( ) const
2256{ 2256{
2257 return 255; // All SIMpad models share the same display 2257 return 255; // All SIMpad models share the same display
2258} 2258}
2259 2259
2260/************************************************** 2260/**************************************************
2261 * 2261 *
2262 * Ramses 2262 * Ramses
2263 * 2263 *
2264 **************************************************/ 2264 **************************************************/
2265 2265
2266void Ramses::init() 2266void Ramses::init()
2267{ 2267{
2268 d->m_vendorstr = "M und N"; 2268 d->m_vendorstr = "M und N";
2269 d->m_vendor = Vendor_MundN; 2269 d->m_vendor = Vendor_MundN;
2270 2270
2271 QFile f("/proc/sys/board/ramses"); 2271 QFile f("/proc/sys/board/ramses");
2272 2272
2273 d->m_modelstr = "Ramses"; 2273 d->m_modelstr = "Ramses";
2274 d->m_model = Model_Ramses_MNCI; 2274 d->m_model = Model_Ramses_MNCI;
2275 2275
2276 d->m_rotation = Rot0; 2276 d->m_rotation = Rot0;
2277 d->m_holdtime = 1000; 2277 d->m_holdtime = 1000;
2278 2278
2279 f.setName("/etc/oz_version"); 2279 f.setName("/etc/oz_version");
2280 2280
2281 if (f.open(IO_ReadOnly)) { 2281 if (f.open(IO_ReadOnly)) {
2282 d->m_systemstr = "OpenEmbedded/Ramses"; 2282 d->m_systemstr = "OpenEmbedded/Ramses";
2283 d->m_system = System_OpenZaurus; 2283 d->m_system = System_OpenZaurus;
2284 2284
2285 QTextStream ts(&f); 2285 QTextStream ts(&f);
2286 ts.setDevice(&f); 2286 ts.setDevice(&f);
2287 d->m_sysverstr = ts.readLine(); 2287 d->m_sysverstr = ts.readLine();
2288 f.close(); 2288 f.close();
2289 } 2289 }
2290 2290
2291 m_power_timer = 0; 2291 m_power_timer = 0;
2292 2292
2293#ifdef QT_QWS_ALLOW_OVERCLOCK 2293#ifdef QT_QWS_ALLOW_OVERCLOCK
2294#warning *** Overclocking enabled - this may fry your hardware - you have been warned *** 2294#warning *** Overclocking enabled - this may fry your hardware - you have been warned ***
2295#define OC(x...) x 2295#define OC(x...) x
2296#else 2296#else
2297#define OC(x...) 2297#define OC(x...)
2298#endif 2298#endif
2299 2299
2300 2300
2301 // This table is true for a Intel XScale PXA 255 2301 // This table is true for a Intel XScale PXA 255
2302 2302
2303 d->m_cpu_frequencies->append("99000"); // mem= 99, run= 99, turbo= 99, PXbus= 50 2303 d->m_cpu_frequencies->append("99000"); // mem= 99, run= 99, turbo= 99, PXbus= 50
2304 OC(d->m_cpu_frequencies->append("118000"); ) // mem=118, run=118, turbo=118, PXbus= 59 OC'd mem 2304 OC(d->m_cpu_frequencies->append("118000"); ) // mem=118, run=118, turbo=118, PXbus= 59 OC'd mem
2305 d->m_cpu_frequencies->append("199100"); // mem= 99, run=199, turbo=199, PXbus= 99 2305 d->m_cpu_frequencies->append("199100"); // mem= 99, run=199, turbo=199, PXbus= 99
2306 OC(d->m_cpu_frequencies->append("236000"); ) // mem=118, run=236, turbo=236, PXbus=118 OC'd mem 2306 OC(d->m_cpu_frequencies->append("236000"); ) // mem=118, run=236, turbo=236, PXbus=118 OC'd mem
2307 d->m_cpu_frequencies->append("298600"); // mem= 99, run=199, turbo=298, PXbus= 99 2307 d->m_cpu_frequencies->append("298600"); // mem= 99, run=199, turbo=298, PXbus= 99
2308 OC(d->m_cpu_frequencies->append("354000"); ) // mem=118, run=236, turbo=354, PXbus=118 OC'd mem 2308 OC(d->m_cpu_frequencies->append("354000"); ) // mem=118, run=236, turbo=354, PXbus=118 OC'd mem
2309 d->m_cpu_frequencies->append("398099"); // mem= 99, run=199, turbo=398, PXbus= 99 2309 d->m_cpu_frequencies->append("398099"); // mem= 99, run=199, turbo=398, PXbus= 99
2310 d->m_cpu_frequencies->append("398100"); // mem= 99, run=398, turbo=398, PXbus=196 2310 d->m_cpu_frequencies->append("398100"); // mem= 99, run=398, turbo=398, PXbus=196
2311 OC(d->m_cpu_frequencies->append("471000"); ) // mem=118, run=471, turbo=471, PXbus=236 OC'd mem/core/bus 2311 OC(d->m_cpu_frequencies->append("471000"); ) // mem=118, run=471, turbo=471, PXbus=236 OC'd mem/core/bus
2312 2312
2313} 2313}
2314 2314
2315bool Ramses::filter(int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat) 2315bool Ramses::filter(int /*unicode*/, int keycode, int modifiers, bool isPress, bool autoRepeat)
2316{ 2316{
2317 Q_UNUSED( keycode ); 2317 Q_UNUSED( keycode );
2318 Q_UNUSED( modifiers ); 2318 Q_UNUSED( modifiers );
2319 Q_UNUSED( isPress ); 2319 Q_UNUSED( isPress );
2320 Q_UNUSED( autoRepeat ); 2320 Q_UNUSED( autoRepeat );
2321 return false; 2321 return false;
2322} 2322}
2323 2323
2324void Ramses::timerEvent(QTimerEvent *) 2324void Ramses::timerEvent(QTimerEvent *)
2325{ 2325{
2326 killTimer(m_power_timer); 2326 killTimer(m_power_timer);
2327 m_power_timer = 0; 2327 m_power_timer = 0;
2328 QWSServer::sendKeyEvent(-1, HardKey_Backlight, 0, true, false); 2328 QWSServer::sendKeyEvent(-1, HardKey_Backlight, 0, true, false);
2329 QWSServer::sendKeyEvent(-1, HardKey_Backlight, 0, false, false); 2329 QWSServer::sendKeyEvent(-1, HardKey_Backlight, 0, false, false);
2330} 2330}
2331 2331
2332 2332
2333bool Ramses::setSoftSuspend(bool soft) 2333bool Ramses::setSoftSuspend(bool soft)
2334{ 2334{
2335 qDebug("Ramses::setSoftSuspend(%d)", soft); 2335 qDebug("Ramses::setSoftSuspend(%d)", soft);
2336#if 0 2336#if 0
2337 bool res = false; 2337 bool res = false;
2338 int fd; 2338 int fd;
2339 2339
2340 if (((fd = ::open("/dev/apm_bios", O_RDWR)) >= 0) || 2340 if (((fd = ::open("/dev/apm_bios", O_RDWR)) >= 0) ||
2341 ((fd = ::open("/dev/misc/apm_bios",O_RDWR)) >= 0)) { 2341 ((fd = ::open("/dev/misc/apm_bios",O_RDWR)) >= 0)) {
2342 2342
2343 int sources = ::ioctl(fd, APM_IOCGEVTSRC, 0); // get current event sources 2343 int sources = ::ioctl(fd, APM_IOCGEVTSRC, 0); // get current event sources
2344 2344
2345 if (sources >= 0) { 2345 if (sources >= 0) {
2346 if (soft) 2346 if (soft)
2347 sources &= ~APM_EVT_POWER_BUTTON; 2347 sources &= ~APM_EVT_POWER_BUTTON;
2348 else 2348 else
2349 sources |= APM_EVT_POWER_BUTTON; 2349 sources |= APM_EVT_POWER_BUTTON;
2350 2350
2351 if (::ioctl(fd, APM_IOCSEVTSRC, sources) >= 0) // set new event sources 2351 if (::ioctl(fd, APM_IOCSEVTSRC, sources) >= 0) // set new event sources
2352 res = true; 2352 res = true;
2353 else 2353 else
2354 perror("APM_IOCGEVTSRC"); 2354 perror("APM_IOCGEVTSRC");
2355 } 2355 }
2356 else 2356 else
2357 perror("APM_IOCGEVTSRC"); 2357 perror("APM_IOCGEVTSRC");
2358 2358
2359 ::close(fd); 2359 ::close(fd);
2360 } 2360 }
2361 else 2361 else
2362 perror("/dev/apm_bios or /dev/misc/apm_bios"); 2362 perror("/dev/apm_bios or /dev/misc/apm_bios");
2363 2363
2364 return res; 2364 return res;
2365#else 2365#else
2366 return true; 2366 return true;
2367#endif 2367#endif
2368} 2368}
2369 2369
2370bool Ramses::suspend ( ) 2370bool Ramses::suspend ( )
2371{ 2371{
2372 qDebug("Ramses::suspend"); 2372 qDebug("Ramses::suspend");
2373 return false; 2373 return false;
2374} 2374}
2375 2375
2376/** 2376/**
2377 * This sets the display on or off 2377 * This sets the display on or off
2378 */ 2378 */
2379bool Ramses::setDisplayStatus(bool on) 2379bool Ramses::setDisplayStatus(bool on)
2380{ 2380{
2381 qDebug("Ramses::setDisplayStatus(%d)", on); 2381 qDebug("Ramses::setDisplayStatus(%d)", on);
2382#if 0 2382#if 0
2383 bool res = false; 2383 bool res = false;
2384 int fd; 2384 int fd;
2385 2385
2386 if ((fd = ::open ("/dev/fb/0", O_RDWR)) >= 0) { 2386 if ((fd = ::open ("/dev/fb/0", O_RDWR)) >= 0) {
2387 res = (::ioctl(fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN) == 0); 2387 res = (::ioctl(fd, FBIOBLANK, on ? VESA_NO_BLANKING : VESA_POWERDOWN) == 0);
2388 ::close(fd); 2388 ::close(fd);
2389 } 2389 }
2390 return res; 2390 return res;
2391#else 2391#else
2392 return true; 2392 return true;
2393#endif 2393#endif
2394} 2394}
2395 2395
2396 2396
2397/* 2397/*
2398 * We get something between 0..255 into us 2398 * We get something between 0..255 into us
2399*/ 2399*/
2400bool Ramses::setDisplayBrightness(int bright) 2400bool Ramses::setDisplayBrightness(int bright)
2401{ 2401{
2402 qDebug("Ramses::setDisplayBrightness(%d)", bright); 2402 qDebug("Ramses::setDisplayBrightness(%d)", bright);
2403 bool res = false; 2403 bool res = false;
2404 int fd; 2404 int fd;
2405 2405
2406 // pwm1 brighness: 20 steps 500..0 (dunkel->hell) 2406 // pwm1 brighness: 20 steps 500..0 (dunkel->hell)
2407 2407
2408 if (bright > 255 ) 2408 if (bright > 255 )
2409 bright = 255; 2409 bright = 255;
2410 if (bright < 0) 2410 if (bright < 0)
2411 bright = 0; 2411 bright = 0;
2412 2412
2413 // Turn backlight completely off 2413 // Turn backlight completely off
2414 if ((fd = ::open("/proc/sys/board/lcd_backlight", O_WRONLY)) >= 0) { 2414 if ((fd = ::open("/proc/sys/board/lcd_backlight", O_WRONLY)) >= 0) {
2415 char writeCommand[10]; 2415 char writeCommand[10];
2416 const int count = sprintf(writeCommand, "%d\n", bright ? 1 : 0); 2416 const int count = sprintf(writeCommand, "%d\n", bright ? 1 : 0);
2417 res = (::write(fd, writeCommand, count) != -1); 2417 res = (::write(fd, writeCommand, count) != -1);
2418 ::close(fd); 2418 ::close(fd);
2419 } 2419 }
2420 2420
2421 // scale backlight brightness to hardware 2421 // scale backlight brightness to hardware
2422 bright = 500-(bright * 500 / 255); 2422 bright = 500-(bright * 500 / 255);
2423 if ((fd = ::open("/proc/sys/board/pwm1", O_WRONLY)) >= 0) { 2423 if ((fd = ::open("/proc/sys/board/pwm1", O_WRONLY)) >= 0) {
2424 qDebug(" %d -> pwm1", bright); 2424 qDebug(" %d -> pwm1", bright);
2425 char writeCommand[100]; 2425 char writeCommand[100];
2426 const int count = sprintf(writeCommand, "%d\n", bright); 2426 const int count = sprintf(writeCommand, "%d\n", bright);
2427 res = (::write(fd, writeCommand, count) != -1); 2427 res = (::write(fd, writeCommand, count) != -1);
2428 ::close(fd); 2428 ::close(fd);
2429 } 2429 }
2430 return res; 2430 return res;
2431} 2431}
2432 2432
2433 2433
2434int Ramses::displayBrightnessResolution() const 2434int Ramses::displayBrightnessResolution() const
2435{ 2435{
2436 return 32; 2436 return 32;
2437} 2437}
2438 2438
2439bool Ramses::setDisplayContrast(int contr) 2439bool Ramses::setDisplayContrast(int contr)
2440{ 2440{
2441 qDebug("Ramses::setDisplayContrast(%d)", contr); 2441 qDebug("Ramses::setDisplayContrast(%d)", contr);
2442 bool res = false; 2442 bool res = false;
2443 int fd; 2443 int fd;
2444 2444
2445 // pwm0 contrast: 20 steps 79..90 (dunkel->hell) 2445 // pwm0 contrast: 20 steps 79..90 (dunkel->hell)
2446 2446
2447 if (contr > 255 ) 2447 if (contr > 255 )
2448 contr = 255; 2448 contr = 255;
2449 if (contr < 0) 2449 if (contr < 0)
2450 contr = 0; 2450 contr = 0;
2451 contr = 90 - (contr * 20 / 255); 2451 contr = 90 - (contr * 20 / 255);
2452 2452
2453 if ((fd = ::open("/proc/sys/board/pwm0", O_WRONLY)) >= 0) { 2453 if ((fd = ::open("/proc/sys/board/pwm0", O_WRONLY)) >= 0) {
2454 qDebug(" %d -> pwm0", contr); 2454 qDebug(" %d -> pwm0", contr);
2455 char writeCommand[100]; 2455 char writeCommand[100];
2456 const int count = sprintf(writeCommand, "%d\n", contr); 2456 const int count = sprintf(writeCommand, "%d\n", contr);
2457 res = (::write(fd, writeCommand, count) != -1); 2457 res = (::write(fd, writeCommand, count) != -1);
2458 res = true; 2458 res = true;
2459 ::close(fd); 2459 ::close(fd);
2460 } 2460 }
2461 return res; 2461 return res;
2462} 2462}
2463 2463
2464 2464
2465int Ramses::displayContrastResolution() const 2465int Ramses::displayContrastResolution() const
2466{ 2466{
2467 return 20; 2467 return 20;
2468} 2468}
2469 2469
2470 2470
2471/************************************************** 2471/**************************************************
2472 * * 2472 * *
2473 * Jornada * 2473 * Jornada *
2474 * * 2474 * *
2475 **************************************************/ 2475 **************************************************/
2476 2476
2477 2477
2478bool Jornada::isJornada ( ) 2478bool Jornada::isJornada ( )
2479{ 2479{
2480 QFile f( "/proc/cpuinfo" ); 2480 QFile f( "/proc/cpuinfo" );
2481 if ( f. open ( IO_ReadOnly ) ) { 2481 if ( f. open ( IO_ReadOnly ) ) {
2482 QTextStream ts ( &f ); 2482 QTextStream ts ( &f );
2483 QString line; 2483 QString line;
2484 while( line = ts. readLine ( ) ) { 2484 while( line = ts. readLine ( ) ) {
2485 if ( line. left ( 8 ) == "Hardware" ) { 2485 if ( line. left ( 8 ) == "Hardware" ) {
2486 int loc = line. find ( ":" ); 2486 int loc = line. find ( ":" );
2487 if ( loc != -1 ) { 2487 if ( loc != -1 ) {
2488 QString model = 2488 QString model =
2489 line. mid ( loc + 2 ). simplifyWhiteSpace( ); 2489 line. mid ( loc + 2 ). simplifyWhiteSpace( );
2490 return ( model == "HP Jornada 56x" ); 2490 return ( model == "HP Jornada 56x" );
2491 } 2491 }
2492 } 2492 }
2493 } 2493 }
2494 } 2494 }
2495 return false; 2495 return false;
2496} 2496}
2497 2497
2498void Jornada::init ( ) 2498void Jornada::init ( )
2499{ 2499{
2500 d-> m_vendorstr = "HP"; 2500 d-> m_vendorstr = "HP";
2501 d-> m_vendor = Vendor_HP; 2501 d-> m_vendor = Vendor_HP;
2502 d-> m_modelstr = "Jornada 56x"; 2502 d-> m_modelstr = "Jornada 56x";
2503 d-> m_model = Model_Jornada_56x; 2503 d-> m_model = Model_Jornada_56x;
2504 d-> m_systemstr = "Familiar"; 2504 d-> m_systemstr = "Familiar";
2505 d-> m_system = System_Familiar; 2505 d-> m_system = System_Familiar;
2506 d-> m_rotation = Rot0; 2506 d-> m_rotation = Rot0;
2507
2508 QFile f ( "/etc/familiar-version" );
2509 f. setName ( "/etc/familiar-version" );
2510 if ( f. open ( IO_ReadOnly )) {
2511
2512 QTextStream ts ( &f );
2513 d-> m_sysverstr = ts. readLine ( ). mid ( 10 );
2514
2515 f. close ( );
2516 }
2507} 2517}
2508 2518
2519
2509void Jornada::initButtons ( ) 2520void Jornada::initButtons ( )
2510{ 2521{
2511 if ( d-> m_buttons ) 2522 if ( d-> m_buttons )
2512 return; 2523 return;
2513 2524
2514 // Simulation uses iPAQ 3660 device buttons 2525 // Simulation uses iPAQ 3660 device buttons
2515 2526
2516 qDebug ( "init Buttons" ); 2527 qDebug ( "init Buttons" );
2517 d-> m_buttons = new QValueList <ODeviceButton>; 2528 d-> m_buttons = new QValueList <ODeviceButton>;
2518 2529
2519 for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) { 2530 for ( uint i = 0; i < ( sizeof( ipaq_buttons ) / sizeof( i_button )); i++ ) {
2520 i_button *ib = ipaq_buttons + i; 2531 i_button *ib = ipaq_buttons + i;
2521 ODeviceButton b; 2532 ODeviceButton b;
2522 2533
2523 if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) { 2534 if (( ib-> model & Model_iPAQ_H36xx ) == Model_iPAQ_H36xx ) {
2524 b. setKeycode ( ib-> code ); 2535 b. setKeycode ( ib-> code );
2525 b. setUserText ( QObject::tr ( "Button", ib-> utext )); 2536 b. setUserText ( QObject::tr ( "Button", ib-> utext ));
2526 b. setPixmap ( Resource::loadPixmap ( ib-> pix )); 2537 b. setPixmap ( Resource::loadPixmap ( ib-> pix ));
2527 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction )); 2538 b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( ib-> fpressedservice ), ib-> fpressedaction ));
2528 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction )); 2539 b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( ib-> fheldservice ), ib-> fheldaction ));
2529 d-> m_buttons-> append ( b ); 2540 d-> m_buttons-> append ( b );
2530 } 2541 }
2531 } 2542 }
2532 reloadButtonMapping ( ); 2543 reloadButtonMapping ( );
2533 2544
2534 QCopChannel *sysch = new QCopChannel ( "QPE/System", this ); 2545 QCopChannel *sysch = new QCopChannel ( "QPE/System", this );
2535 connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & ))); 2546 connect ( sysch, SIGNAL( received( const QCString &, const QByteArray & )), this, SLOT( systemMessage ( const QCString &, const QByteArray & )));
2536} 2547}
2537 2548
2538int Jornada::displayBrightnessResolution ( ) const 2549int Jornada::displayBrightnessResolution ( ) const
2539{ 2550{
2540} 2551}
2541 2552
2542bool Jornada::setDisplayBrightness ( int bright ) 2553bool Jornada::setDisplayBrightness ( int bright )
2543{ 2554{
2544 bool res = false; 2555 bool res = false;
2545 int fd; 2556 int fd;
2546 2557
2547 if ( bright > 255 ) 2558 if ( bright > 255 )
2548 bright = 255; 2559 bright = 255;
2549 if ( bright < 0 ) 2560 if ( bright < 0 )
2550 bright = 0; 2561 bright = 0;
2551 2562
2552 if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) { 2563 if (( fd = ::open ( "/dev/touchscreen/0", O_WRONLY )) >= 0 ) {
2553 FLITE_IN bl; 2564 FLITE_IN bl;
2554 bl. mode = 1; 2565 bl. mode = 1;
2555 bl. pwr = bright ? 1 : 0; 2566 bl. pwr = bright ? 1 : 0;
2556 bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255; 2567 bl. brightness = ( bright * ( displayBrightnessResolution ( ) - 1 ) + 127 ) / 255;
2557 res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 ); 2568 res = ( ::ioctl ( fd, FLITE_ON, &bl ) == 0 );
2558 ::close ( fd ); 2569 ::close ( fd );
2559 } 2570 }
2560 return res; 2571 return res;
2561} 2572}
2562 2573
2563bool Jornada::setSoftSuspend ( bool soft ) 2574bool Jornada::setSoftSuspend ( bool soft )
2564{ 2575{
2565 bool res = false; 2576 bool res = false;
2566 int fd; 2577 int fd;
2567 2578
2568 if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) { 2579 if (( fd = ::open ( "/proc/sys/ts/suspend_button_mode", O_WRONLY )) >= 0 ) {
2569 if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 ) 2580 if ( ::write ( fd, soft ? "1" : "0", 1 ) == 1 )
2570 res = true; 2581 res = true;
2571 else 2582 else
2572 ::perror ( "write to /proc/sys/ts/suspend_button_mode" ); 2583 ::perror ( "write to /proc/sys/ts/suspend_button_mode" );
2573 2584
2574 ::close ( fd ); 2585 ::close ( fd );
2575 } 2586 }
2576 else 2587 else
2577 ::perror ( "/proc/sys/ts/suspend_button_mode" ); 2588 ::perror ( "/proc/sys/ts/suspend_button_mode" );
2578 2589
2579 return res; 2590 return res;
2580} 2591}