summaryrefslogtreecommitdiff
authorchicken <chicken>2004-11-05 10:34:02 (UTC)
committer chicken <chicken>2004-11-05 10:34:02 (UTC)
commitaea18d994988507f6153552698cbb67054715a92 (patch) (side-by-side diff)
tree704b7ec91f59e432910343a6d3efc73b90fae613
parent586ba5bb2842d80911ea22bf47eaa2f1b39362e1 (diff)
downloadopie-aea18d994988507f6153552698cbb67054715a92.zip
opie-aea18d994988507f6153552698cbb67054715a92.tar.gz
opie-aea18d994988507f6153552698cbb67054715a92.tar.bz2
correct simpad cs3 readout
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice_simpad.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libopie2/opiecore/device/odevice_simpad.cpp b/libopie2/opiecore/device/odevice_simpad.cpp
index 2e54216..d6c2c80 100644
--- a/libopie2/opiecore/device/odevice_simpad.cpp
+++ b/libopie2/opiecore/device/odevice_simpad.cpp
@@ -169,129 +169,129 @@ void SIMpad::initButtons()
ODeviceButton b;
if (( sb->model & d->m_model ) == d->m_model ) {
b. setKeycode ( sb->code );
b. setUserText ( QObject::tr ( "Button", sb->utext ));
b. setPixmap ( Resource::loadPixmap ( sb->pix ));
b. setFactoryPresetPressedAction ( OQCopMessage ( makeChannel ( sb->fpressedservice ), sb->fpressedaction ));
b. setFactoryPresetHeldAction ( OQCopMessage ( makeChannel ( sb->fheldservice ), sb->fheldaction ));
d->m_buttons->append ( b );
}
}
reloadButtonMapping();
}
// SIMpad boardcontrol register CS3
#define SIMPAD_BOARDCONTROL "/proc/cs3"
#define SIMPAD_VCC_5V_EN 0x0001 // For 5V PCMCIA
#define SIMPAD_VCC_3V_EN 0x0002 // FOR 3.3V PCMCIA
#define SIMPAD_EN1 0x0004 // This is only for EPROM's
#define SIMPAD_EN0 0x0008 // Both should be enable for 3.3V or 5V
#define SIMPAD_DISPLAY_ON 0x0010
#define SIMPAD_PCMCIA_BUFF_DIS 0x0020
#define SIMPAD_MQ_RESET 0x0040
#define SIMPAD_PCMCIA_RESET 0x0080
#define SIMPAD_DECT_POWER_ON 0x0100
#define SIMPAD_IRDA_SD 0x0200 // Shutdown for powersave
#define SIMPAD_RS232_ON 0x0400
#define SIMPAD_SD_MEDIAQ 0x0800 // Shutdown for powersave
#define SIMPAD_LED2_ON 0x1000
#define SIMPAD_IRDA_MODE 0x2000 // Fast/Slow IrDA mode
#define SIMPAD_ENABLE_5V 0x4000 // Enable 5V circuit
#define SIMPAD_RESET_SIMCARD 0x8000
//SIMpad touchscreen backlight strength control
#define SIMPAD_BACKLIGHT_CONTROL "/proc/driver/mq200/backlight"
/*
* The SIMpad exposes ChipSelect3 to userspace
* via a proc filesystem file. Using this register
* one can toggle power of serial, irda, dect circuits
* change the video driver and display status and
* many more things.
* To not lose the current setting we read the current
* cs3 setting and toggle the necessary bits and then
* write it.
*/
static bool setCS3Bit( bool bitset, int bit ) {
QFile file( SIMPAD_BOARDCONTROL );
if ( !file.open( IO_ReadOnly ) )
return false;
unsigned int val = 0;
bool ok = false;
QTextStream stream( &file );
/*
* Use QFile and QTextStream for parsing to be more
* robust
*/
while ( !stream.atEnd() ) {
QString line = stream.readLine();
if ( line.startsWith( "Chipselect3 : " ) ) {
- val = line.mid( 15 ).toUInt( 0, 16 );
+ val = line.mid( 14 ).toUInt( 0, 16 );
ok = true;
break;
}
}
if ( !ok )
return false;
file.close();
/*
* change the value
*/
val = bitset ? (val | bit) : (val & ~bit);
/*
* write it back
*/
int cs3_fd = ::open( SIMPAD_BOARDCONTROL, O_WRONLY );
if ( cs3_fd < 0 )
return false;
char line[32];
::snprintf(line, sizeof(line), "0x%04x\n", val);
::write(cs3_fd, line, strlen(line));
::close(cs3_fd);
return true;
}
QValueList <OLed> SIMpad::ledList() const
{
QValueList <OLed> vl;
vl << Led_Power; //FIXME which LED is LED2 ? The green one or the amber one?
//vl << Led_Mail; //TODO find out if LED1 is accessible anyway
return vl;
}
QValueList <OLedState> SIMpad::ledStateList ( OLed l ) const
{
QValueList <OLedState> vl;
if ( l == Led_Power ) //FIXME which LED is LED2 ? The green one or the amber one?
vl << Led_Off << Led_On;
//else if ( l == Led_Mail ) //TODO find out if LED1 is accessible anyway
//vl << Led_Off;
return vl;
}
OLedState SIMpad::ledState ( OLed l ) const
{
switch ( l ) {
case Led_Power:
return m_leds [0];
//case Led_Mail:
// return m_leds [1];
default:
return Led_Off;
}
}
bool SIMpad::setLedState ( OLed l, OLedState st )
{