summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opierec/device.cpp
authorllornkcor <llornkcor>2003-12-25 21:52:44 (UTC)
committer llornkcor <llornkcor>2003-12-25 21:52:44 (UTC)
commitf2805565b0d7edd2e72445f6d56e43eadcdac72d (patch) (side-by-side diff)
treeb9a74aec0c5616ae1976198c1f83945b697ed3d2 /noncore/multimedia/opierec/device.cpp
parent34a7e0451c95e8a19735610553dba064b68823d9 (diff)
downloadopie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.zip
opie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.tar.gz
opie-f2805565b0d7edd2e72445f6d56e43eadcdac72d.tar.bz2
uhhh.. helps to commit to correct branch
Diffstat (limited to 'noncore/multimedia/opierec/device.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opierec/device.cpp59
1 files changed, 41 insertions, 18 deletions
diff --git a/noncore/multimedia/opierec/device.cpp b/noncore/multimedia/opierec/device.cpp
index 11071d8..ce49e96 100644
--- a/noncore/multimedia/opierec/device.cpp
+++ b/noncore/multimedia/opierec/device.cpp
@@ -1,13 +1,13 @@
// device.cpp
#include "device.h"
#include <qpe/config.h>
#include <qpe/qcopenvelope_qws.h>
-#include <qpe/custom.h>
+
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/soundcard.h>
@@ -23,25 +23,27 @@
Device::Device( QObject * parent, const char * dsp, const char * mixr, bool record )
: QObject( parent)
{
dspstr = (char *)dsp;
mixstr = (char *)mixr;
-
+
devForm=-1;
devCh=-1;
devRate=-1;
if( !record){ //playing
qDebug("setting up DSP for playing");
flags = O_WRONLY;
} else { //recording
qDebug("setting up DSP for recording");
flags = O_RDWR;
// flags = O_RDONLY;
- selectMicInput();
+
+// selectMicInput();
+
}
}
bool Device::openDsp() {
if( openDevice( flags) == -1) {
perror("<<<<<<<<<<<<<<ioctl(\"Open device\")");
@@ -91,12 +93,13 @@ void Device::changedOutVolume(int vol) {
perror("ioctl(\"MIXER_IN_WRITE\")");
Config cfg("qpe");
cfg.setGroup("Volume");
cfg.writeEntry("VolumePercent", QString::number( vol ));
QCopEnvelope( "QPE/System", "volumeChange(bool)" ) << false;
+ qWarning("changing output vol %d", vol);
}
::close(fd);
}
void Device::changedInVolume(int vol ) {
int level = (vol << 8) + vol;
@@ -105,31 +108,32 @@ void Device::changedInVolume(int vol ) {
if(ioctl(fd, MIXER_WRITE(SOUND_MIXER_MIC), &level) == -1)
perror("ioctl(\"MIXER_IN_WRITE\")");
Config cfg("qpe");
cfg.setGroup("Volume");
cfg.writeEntry("Mic", QString::number(vol ));
QCopEnvelope( "QPE/System", "micChange(bool)" ) << false;
+ qWarning("changing input volume %d", vol);
}
::close(fd);
}
bool Device::selectMicInput() {
-/*
+
int md=0;
int info=MIXER_WRITE(SOUND_MIXER_MIC);
md = ::open( "/dev/mixer", O_RDWR );
if ( md == -1)
perror("open(\"/dev/mixer\")");
else {
if( ioctl( md, SOUND_MIXER_WRITE_RECSRC, &info) == -1)
perror("ioctl(\"SOUND_MIXER_WRITE_RECSRC\")");
::close(md);
return false;
}
::close(md);
-*/
+
return true;
}
int Device::openDevice( int flags) {
/* pid_t pid;
int status;
@@ -142,24 +146,28 @@ exit(1);
switch (pid = fork()) {
case -1:
perror("The fork failed!");
break;
case 0: {
*/
- if (( sd = ::open( dspstr, flags)) == -1) {
+qDebug("Opening %s",dspstr);
+ if (( sd = ::open( dspstr, flags)) == -1) {
perror("open(\"/dev/dsp\")");
QString errorMsg="Could not open audio device\n /dev/dsp\n"
+(QString)strerror(errno);
- qDebug(errorMsg);
+ qDebug("XXXXXXXXXXXXXXXXXXXXXXX "+errorMsg);
return -1;
}
+qDebug("Opening mixer");
int mixerHandle=0;
- /* Set the input dsp device and its input gain the weird Zaurus way */
- if (( mixerHandle = open("/dev/mixer1",O_RDWR))<0) {
- perror("open(\"/dev/mixer1\")");
+ if (( mixerHandle = open("/dev/mixer",O_RDWR))<0) {
+ perror("open(\"/dev/mixer\")");
+ QString errorMsg="Could not open audio device\n /dev/dsp\n"
+ +(QString)strerror(errno);
+ qDebug("XXXXXXXXXXXXXXXXXXXXXX "+errorMsg);
}
if(ioctl(sd,SNDCTL_DSP_RESET,0)<0){
perror("ioctl RESET");
}
// sprintf(message, "%d", sd);
@@ -196,22 +204,22 @@ exit(1);
s = t.readLine();
// }
*/
// bool ok;
// sd = s.toInt(&ok, 10);
// qDebug("<<<<<<<<<<<<<>>>>>>>>>>>>"+s);
-
+
// f2.close();
// }
::close(mixerHandle );
- qDebug("open device %s", dspstr);
- qDebug("success! %d",sd);
+// qDebug("open device %s", dspstr);
+// qDebug("success! %d",sd);
return sd;
}
-bool Device::closeDevice( bool b) {
+bool Device::closeDevice( bool) {
// if(b) {//close now
// if (ioctl( sd, SNDCTL_DSP_RESET, 0) == -1) {
// perror("ioctl(\"SNDCTL_DSP_RESET\")");
// }
// } else { //let play
// if (ioctl( sd, SNDCTL_DSP_SYNC, 0) == -1) {
@@ -219,13 +227,13 @@ bool Device::closeDevice( bool b) {
// }
// }
::close( sd); //close sound device
// sdfd=0;
// sd=0;
- qDebug("closed dsp");
+// qDebug("closed dsp");
return true;
}
bool Device::setDeviceFormat( int form) {
qDebug("set device res %d %d", form, sd);
if (ioctl( sd, SNDCTL_DSP_SETFMT, &form)==-1) { //set format
@@ -287,13 +295,13 @@ int Device::getDeviceRate() {
return dRate;
}
int Device::getDeviceBits() {
int dBits=0;
-#if !defined(OPIE_NO_SOUND_PCM_READ_BITS) // zaurus doesnt have this
+#ifndef QT_QWS_EBX // zaurus doesnt have this
if (ioctl( sd, SOUND_PCM_READ_BITS, &dBits) == -1) {
perror("ioctl(\"SNDCTL_PCM_READ_BITS\")");
}
#endif
return dBits;
}
@@ -305,17 +313,18 @@ int Device::getDeviceChannels() {
}
return dCh;
}
int Device::getDeviceFragSize() {
int frag_size;
-
+
if (ioctl( sd, SNDCTL_DSP_GETBLKSIZE, &frag_size) == -1) {
qDebug("no fragsize");
- } else
+ } else {
qDebug("driver says frag size is %d", frag_size);
+ }
return frag_size;
}
bool Device::setFragSize(int frag) {
if (ioctl(sd, SNDCTL_DSP_SETFRAGMENT, &frag)) {
perror("ioctl(\"SNDCTL_DSP_SETFRAGMENT\")");
@@ -330,6 +339,20 @@ bool Device::reset() {
if (ioctl( sd, SNDCTL_DSP_RESET, 0) == -1) {
perror("ioctl(\"SNDCTL_DSP_RESET\")");
return false;
}
return true;
}
+
+int Device::devRead(int soundDescriptor, short *buf, int size) {
+ int number = 0;
+ number = ::read( soundDescriptor, (char *)buf, size);
+ return number;
+}
+
+int Device::devWrite(int soundDescriptor, short * buf, int size) {
+ int bytesWritten = 0;
+ bytesWritten = ::write( soundDescriptor, buf, size);
+ return bytesWritten;
+}
+
+