summaryrefslogtreecommitdiff
path: root/libopie/odevice.cpp
Side-by-side diff
Diffstat (limited to 'libopie/odevice.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/odevice.cpp48
1 files changed, 20 insertions, 28 deletions
diff --git a/libopie/odevice.cpp b/libopie/odevice.cpp
index d952edf..61c24f4 100644
--- a/libopie/odevice.cpp
+++ b/libopie/odevice.cpp
@@ -6,88 +6,85 @@
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/
#include <qfile.h>
#include <qtextstream.h>
+#include <qpe/sound.h>
+#include <qpe/resource.h>
#include "odevice.h"
class ODeviceData {
public:
QString m_vendorstr;
OVendor m_vendor;
QString m_modelstr;
OModel m_model;
QString m_systemstr;
OSystem m_system;
OLedState m_leds [4]; // just for convenience ...
};
class ODeviceIPAQ : public ODevice {
protected:
virtual void init ( );
public:
virtual void alarmSound ( );
- virtual void keySound ( );
- virtual void touchSound ( );
virtual uint hasLeds ( ) const;
virtual OLedState led ( uint which ) const;
virtual bool setLed ( uint which, OLedState st );
};
class ODeviceZaurus : public ODevice {
protected:
virtual void init ( );
public:
virtual void alarmSound ( );
virtual void keySound ( );
virtual void touchSound ( );
virtual uint hasLeds ( ) const;
virtual OLedState led ( uint which ) const;
virtual bool setLed ( uint which, OLedState st );
protected:
virtual void buzzer ( int snd );
};
-
-
-
ODevice *ODevice::inst ( )
{
static ODevice *dev = 0;
if ( !dev ) {
if ( QFile::exists ( "/proc/hal/model" ))
dev = new ODeviceIPAQ ( );
else if ( QFile::exists ( "/dev/sharp_buz" ) || QFile::exists ( "/dev/sharp_led" ))
dev = new ODeviceZaurus ( );
else
dev = new ODevice ( );
dev-> init ( );
}
return dev;
}
@@ -132,40 +129,58 @@ OModel ODevice::model ( )
{
return d-> m_model;
}
QString ODevice::systemString ( )
{
return d-> m_systemstr;
}
OSystem ODevice::system ( )
{
return d-> m_system;
}
void ODevice::alarmSound ( )
{
+#ifndef QT_NO_SOUND
+ static Sound snd ( "alarm" );
+
+ if ( snd. isFinished ( ))
+ snd. play ( );
+#endif
}
void ODevice::keySound ( )
{
+#ifndef QT_NO_SOUND
+ static Sound snd ( "keysound" );
+
+ if ( snd. isFinished ( ))
+ snd. play ( );
+#endif
}
void ODevice::touchSound ( )
{
+#ifndef QT_NO_SOUND
+ static Sound snd ( "touchsound" );
+
+ if ( snd. isFinished ( ))
+ snd. play ( );
+#endif
}
uint ODevice::hasLeds ( ) const
{
return 0;
}
OLedState ODevice::led ( uint /*which*/ ) const
{
return OLED_Off;
}
bool ODevice::setLed ( uint /*which*/, OLedState /*st*/ )
{
return false;
}
@@ -202,35 +217,33 @@ void ODeviceIPAQ::init ( )
f. close ( );
}
if ( QFile::exists ( "/etc/familiar-version" )) {
d-> m_systemstr = "Familiar";
d-> m_system = OSYSTEM_Familiar;
}
d-> m_leds [0] = OLED_Off;
}
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/soundcard.h>
#include <qapplication.h>
-#include <qpe/resource.h>
#include <qpe/config.h>
-#include <qpe/sound.h>
//#include <linux/h3600_ts.h> // including kernel headers is evil ...
typedef struct h3600_ts_led {
unsigned char OffOnBlink; /* 0=off 1=on 2=Blink */
unsigned char TotalTime; /* Units of 5 seconds */
unsigned char OnTime; /* units of 100m/s */
unsigned char OffTime; /* units of 100m/s */
} LED_IN;
// #define IOC_H3600_TS_MAGIC 'f'
// #define LED_ON _IOW(IOC_H3600_TS_MAGIC, 5, struct h3600_ts_led)
#define LED_ON (( 1<<30 ) | ( 'f'<<8 ) | ( 5 ) | ( sizeof(struct h3600_ts_led)<<16 )) // _IOW only defined in kernel headers :(
@@ -262,53 +275,32 @@ void ODeviceIPAQ::alarmSound ( )
}
}
}
snd. play ( );
while ( !snd. isFinished ( ))
qApp-> processEvents ( );
if ( fd >= 0 ) {
if ( vol_reset )
::ioctl ( fd, MIXER_WRITE( 0 ), &vol );
::close ( fd );
}
#endif
}
-void ODeviceIPAQ::touchSound ( )
-{
-#ifndef QT_NO_SOUND
- static Sound snd ( "touchsound" );
-
- if ( snd. isFinished ( ))
- snd. play ( );
-#endif
-}
-
-void ODeviceIPAQ::keySound ( )
-{
-#ifndef QT_NO_SOUND
- static Sound snd ( "keysound" );
-
- if ( snd. isFinished ( ))
- snd. play ( );
-#endif
-}
-
-
uint ODeviceIPAQ::hasLeds ( ) const
{
return 1;
}
OLedState ODeviceIPAQ::led ( uint which ) const
{
if ( which == 0 )
return d-> m_leds [0];
else
return OLED_Off;
}
bool ODeviceIPAQ::setLed ( uint which, OLedState st )
{
static int fd = ::open ( "/dev/touchscreen/0", O_RDWR|O_NONBLOCK );