summaryrefslogtreecommitdiff
authorsandman <sandman>2002-06-18 12:46:11 (UTC)
committer sandman <sandman>2002-06-18 12:46:11 (UTC)
commit61e2f9e5eb634b17ef480d79bdbcbc3a715990cb (patch) (side-by-side diff)
tree013600ee0ababcc25f37ff98cede8f67cbdc9d2a
parente21322ab34a8df36344eece685e604abe4f83fc6 (diff)
downloadopie-61e2f9e5eb634b17ef480d79bdbcbc3a715990cb.zip
opie-61e2f9e5eb634b17ef480d79bdbcbc3a715990cb.tar.gz
opie-61e2f9e5eb634b17ef480d79bdbcbc3a715990cb.tar.bz2
Moved platform specific things from custom-*.h #defines to virtual methods
in libopie/odevice.{h,cpp} Minor fix in Sound + reformating
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/custom-ipaq.h60
-rw-r--r--library/custom-sharp.h53
-rw-r--r--library/sound.cpp63
3 files changed, 34 insertions, 142 deletions
diff --git a/library/custom-ipaq.h b/library/custom-ipaq.h
index 2886940..553b571 100644
--- a/library/custom-ipaq.h
+++ b/library/custom-ipaq.h
@@ -1,80 +1,20 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
-#include <unistd.h>
-#include <stdio.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <sys/ioctl.h>
-#include <linux/soundcard.h>
-#include <qpe/resource.h>
-#include <qsound.h>
-#include <qpe/sound.h>
-
-
-#ifndef QT_NO_SOUND
-
-#define CUSTOM_SOUND_ALARM \
-{ \
- int fd; \
- int vol; \
- bool vol_reset = false; \
- \
- if ((( fd = open ( "/dev/sound/mixer", O_RDWR )) >= 0 ) || \
- (( fd = open ( "/dev/mixer", O_RDWR )) >= 0 )) { \
- \
- if ( ioctl ( fd, MIXER_READ( 0 ), &vol ) >= 0 ) { \
- Config cfg ( "qpe" ); \
- cfg. setGroup ( "Volume" ); \
- \
- int volalarm = cfg. readNumEntry ( "AlarmPercent", 50 ); \
- if ( volalarm < 0 ) \
- volalarm = 0; \
- else if ( volalarm > 100 ) \
- volalarm = 100; \
- volalarm |= ( volalarm << 8 ); \
- if ( ioctl ( fd, MIXER_WRITE( 0 ), &volalarm ) >= 0 ) \
- vol_reset = true; \
- } \
- } \
- \
- Sound snd ( "alarm" ); \
- snd. play ( ); \
- while ( !snd. isFinished ( )) \
- qApp-> processEvents ( ); \
- \
- if ( fd >= 0 ) { \
- if ( vol_reset ) \
- ::ioctl ( fd, MIXER_WRITE( 0 ), &vol ); \
- ::close ( fd ); \
- } \
-}
-
-#define CUSTOM_SOUND_KEYCLICK { QSound::play ( Resource::findSound ( "keysound" )); }
-#define CUSTOM_SOUND_TOUCH { QSound::play ( Resource::findSound ( "screensound" )); }
-
-#else
-
-#define CUSTOM_SOUND_ALARM { ; }
-#define CUSTOM_SOUND_KEYCLICK { ; }
-#define CUSTOM_SOUND_TOUCH { ; }
-
-
-#endif
diff --git a/library/custom-sharp.h b/library/custom-sharp.h
index 08f8a6f..3dab34f 100644
--- a/library/custom-sharp.h
+++ b/library/custom-sharp.h
@@ -1,143 +1,90 @@
/**********************************************************************
** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
**
** This file is part of the Qtopia Environment.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/
#define QPE_OWNAPM
#define QPE_HAVE_TOGGLELIGHT
#define QPE_NOCIBAUD
#define QPE_STARTMENU
#include <asm/sharp_apm.h>
#ifndef APM_IOC_BATTERY_BACK_CHK
#define APM_IOC_BATTERY_BACK_CHK _IO(APM_IOC_MAGIC, 32)
#endif
#ifndef APM_IOC_BATTERY_MAIN_CHK
#define APM_IOC_BATTERY_MAIN_CHK _IO(APM_IOC_MAGIC, 33)
#endif
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/ioctl.h>
-#define SHARP_DEV_IOCTL_COMMAND_START 0x5680
-
-/* --- for SHARP_BUZZER device --- */
-#define SHARP_BUZZER_IOCTL_START (SHARP_DEV_IOCTL_COMMAND_START)
-#define SHARP_BUZZER_MAKESOUND (SHARP_BUZZER_IOCTL_START)
-#define SHARP_BUZZER_SETVOLUME (SHARP_BUZZER_IOCTL_START+1)
-#define SHARP_BUZZER_GETVOLUME (SHARP_BUZZER_IOCTL_START+2)
-#define SHARP_BUZZER_ISSUPPORTED (SHARP_BUZZER_IOCTL_START+3)
-#define SHARP_BUZZER_SETMUTE (SHARP_BUZZER_IOCTL_START+4)
-#define SHARP_BUZZER_STOPSOUND (SHARP_BUZZER_IOCTL_START+5)
-
-#define SHARP_BUZ_TOUCHSOUND 1 /* touch panel sound */
-#define SHARP_BUZ_KEYSOUND 2 /* key sound */
-#define SHARP_PDA_ILLCLICKSOUND 3 /* illegal click */
-#define SHARP_PDA_WARNSOUND 4 /* warning occurred */
-#define SHARP_PDA_ERRORSOUND 5 /* error occurred */
-#define SHARP_PDA_CRITICALSOUND 6 /* critical error occurred */
-#define SHARP_PDA_SYSSTARTSOUND 7 /* system start */
-#define SHARP_PDA_SYSTEMENDSOUND 8 /* system shutdown */
-#define SHARP_PDA_APPSTART 9 /* application start */
-#define SHARP_PDA_APPQUIT 10 /* application ends */
-#define SHARP_BUZ_SCHEDULE_ALARM 11 /* schedule alarm */
-#define SHARP_BUZ_DAILY_ALARM 12 /* daily alarm */
-#define SHARP_BUZ_GOT_PHONE_CALL 13 /* phone call sound */
-#define SHARP_BUZ_GOT_MAIL 14 /* mail sound */
-
-
-#define CUSTOM_BUZZER( sound ) \
-{ \
- static int fd = open( "/dev/sharp_buz", O_RDWR|O_NONBLOCK ); \
- ioctl( fd, SHARP_BUZZER_MAKESOUND, sound ); \
-}
-
-#define CUSTOM_SOUND_ALARM CUSTOM_BUZZER( SHARP_BUZ_SCHEDULE_ALARM )
-#define CUSTOM_SOUND_KEYCLICK CUSTOM_BUZZER( SHARP_BUZ_KEYSOUND )
-#define CUSTOM_SOUND_TOUCH CUSTOM_BUZZER( SHARP_BUZ_TOUCHSOUND )
-
#include <sys/ioctl.h>
#include <asm/sharp_char.h>
-// a bit awkward, as this value is defined in emailclient.cpp aswell...
-#define LED_MAIL 0
-#define SHARP_LED_MAIL 9
-
-#define CUSTOM_LEDS( led, status ) \
-{ \
- if ( led == LED_MAIL ) \
- led = SHARP_LED_MAIL; \
- static int fd = open( "/dev/sharp_led", O_RDWR|O_NONBLOCK ); \
- sharp_led_status leds; \
- memset(&leds, 0, sizeof(leds)); \
- leds.which = led; \
- leds.status = status; \
- ioctl( fd, SHARP_LED_SETSTATUS, (char*)&leds ); \
-}
-
#define QPE_HAVE_MEMALERTER
#define QPE_MEMALERTER_IMPL \
static void sig_handler(int sig) \
{ \
switch (sig) { \
case SIGHUP: \
memstate = VeryLow; \
break; \
case SIGUSR1: \
memstate = Normal; \
break; \
case SIGUSR2: \
memstate = Low; \
break; \
} \
} \
static void initMemalerter() \
{ \
struct sigaction sa; \
memset(&sa, '\0', sizeof sa); \
sa.sa_handler = sig_handler; \
sa.sa_flags = SA_RESTART; \
if (sigaction(SIGHUP, &sa, NULL) < 0) { \
return; \
} \
if (sigaction(SIGUSR1, &sa, NULL) < 0) { \
return; \
} \
if (sigaction(SIGUSR2, &sa, NULL) < 0) { \
return; \
} \
FILE *fo = fopen("/proc/sys/vm/freepg_signal_proc", "w"); \
\
if (!fo) \
return; \
fprintf(fo, "qpe\n"); \
fclose(fo); \
}
#define QPE_INITIAL_NUMLOCK_STATE \
{ \
bool numLock = FALSE; \
sharp_kbdctl_modifstat st; \
int dev = ::open("/dev/sharp_kbdctl", O_RDWR); \
if( dev >= 0 ) { \
memset(&st, 0, sizeof(st)); \
st.which = 3; \
diff --git a/library/sound.cpp b/library/sound.cpp
index 602fcf0..1ff3b3f 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -57,137 +57,142 @@ static int WAVsoundDuration(const QString& filename)
Q_INT16 blockAlign;
Q_INT16 wBitsPerSample;
} chunkdata;
int total = 0;
while(1) {
// Keep reading chunks...
const int n = sizeof(chunk)-sizeof(chunk.data);
if ( input.readBlock((char*)&chunk,n) != n )
break;
if ( qstrncmp(chunk.id,"data",4) == 0 ) {
total += chunkdata.avgBytesPerSec ?
chunk.size * 1000 / chunkdata.avgBytesPerSec : 0;
//qDebug("%d bytes of PCM (%dms)", chunk.size,chunkdata.avgBytesPerSec ? chunk.size * 1000 / chunkdata.avgBytesPerSec : 0);
input.at(input.at()+chunk.size-4);
} else if ( qstrncmp(chunk.id,"RIFF",4) == 0 ) {
char d[4];
if ( input.readBlock(d,4) != 4 )
return 0;
if ( qstrncmp(d,"WAVE",4) != 0 ) {
// skip
//qDebug("skip %.4s RIFF chunk",d);
if ( chunk.size < 10000000 )
(void)input.at(input.at()+chunk.size-4);
}
} else if ( qstrncmp(chunk.id,"fmt ",4) == 0 ) {
if ( input.readBlock((char*)&chunkdata,sizeof(chunkdata)) != sizeof(chunkdata) )
return 0;
#define WAVE_FORMAT_PCM 1
if ( chunkdata.formatTag != WAVE_FORMAT_PCM ) {
//qDebug("WAV file: UNSUPPORTED FORMAT %d",chunkdata.formatTag);
return 0;
}
} else {
//qDebug("skip %.4s chunk",chunk.id);
// ignored chunk
if ( chunk.size < 10000000 )
(void)input.at(input.at()+chunk.size);
}
}
//qDebug("%dms",total);
return total;
}
class SoundData : public QSound {
public:
- SoundData(const QString& name) :
- QSound(Resource::findSound(name)),
- filename(Resource::findSound(name))
- {
- loopsleft=0;
- }
+ SoundData ( const QString& name ) :
+ QSound ( Resource::findSound ( name )),
+ filename ( Resource::findSound ( name ))
+ {
+ loopsleft=0;
+ ms = WAVsoundDuration(filename);
+ }
- void playLoop(int loopcnt = -1)
- {
- // needs server support
- loopsleft = loopcnt;
+ void playLoop ( int loopcnt = -1 )
+ {
+ // needs server support
+ loopsleft = loopcnt;
- int ms = WAVsoundDuration(filename);
- if ( ms )
- startTimer(ms > 50 ? ms-50 : 0); // 50 for latency
- play();
- }
+ if ( ms )
+ startTimer ( ms > 50 ? ms-50 : 0 ); // 50 for latency
+ play ( );
+ }
void timerEvent ( QTimerEvent *e )
{
- if (loopsleft >= 0) {
- if (--loopsleft <= 0)
- killTimer (e->timerId());
- return;
- }
- play();
- }
+ if ( loopsleft >= 0 ) {
+ if ( --loopsleft <= 0 ) {
+ killTimer ( e-> timerId ( ));
+ loopsleft = 0;
+ return;
+ }
+ }
+ play();
+ }
- bool isFinished ( ) const
- {
- return ( loopsleft == 0 );
- }
+ bool isFinished ( ) const
+ {
+ return ( loopsleft == 0 );
+ }
private:
- QString filename;
- int loopsleft;
+ QString filename;
+ int loopsleft;
+ int ms;
};
+
#endif
Sound::Sound(const QString& name)
{
#ifndef QT_NO_SOUND
d = new SoundData(name);
#endif
}
Sound::~Sound()
{
#ifndef QT_NO_SOUND
delete d;
#endif
}
void Sound::play()
{
#ifndef QT_NO_SOUND
- d->killTimers();
d->playLoop(1);
#endif
}
void Sound::playLoop()
{
#ifndef QT_NO_SOUND
d->killTimers();
d->playLoop();
#endif
}
void Sound::stop()
{
#ifndef QT_NO_SOUND
d->killTimers();
#endif
}
bool Sound::isFinished() const
{
#ifndef QT_NO_SOUND
return d->isFinished();
+#else
+ return true;
#endif
}
void Sound::soundAlarm()
{
#ifndef QT_NO_COP
QCopEnvelope( "QPE/TaskBar", "soundAlarm()" );
#endif
}