summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/device.cc12
-rw-r--r--noncore/net/opietooth/lib/device.h9
2 files changed, 13 insertions, 8 deletions
diff --git a/noncore/net/opietooth/lib/device.cc b/noncore/net/opietooth/lib/device.cc
index 5edfc03..bae1c47 100644
--- a/noncore/net/opietooth/lib/device.cc
+++ b/noncore/net/opietooth/lib/device.cc
@@ -10,54 +10,56 @@ using namespace OpieTooth;
namespace {
int parsePid( const QCString& par ){
int id=0;
QString string( par );
QStringList list = QStringList::split( '\n', string );
for( QStringList::Iterator it = list.begin(); it != list.end(); ++it ){
qWarning("parsePID: %s", (*it).latin1() );
if( !(*it).startsWith("CSR") ){
id = (*it).toInt();
break;
}
}
return id;
}
}
-Device::Device(const QString &device, const QString &mode )
- : QObject(0, "device" ) {
+Device::Device(const QString &device, const QString &mode, const QString &speed )
+ : QObject(0, "device") {
+
qWarning("OpieTooth::Device create" );
m_hci = 0;
m_process = 0;
m_attached = false;
m_device = device;
m_mode = mode;
+ m_speed = speed;
attach();
}
Device::~Device(){
detach();
}
void Device::attach(){
- qWarning("attaching %s %s", m_device.latin1(), m_mode.latin1() );
+ qWarning("attaching %s %s %s", m_device.latin1(), m_mode.latin1(), m_speed.latin1() );
if(m_process == 0 ){
m_output.resize(0);
qWarning("new process to create" );
m_process = new OProcess();
*m_process << "hciattach";
*m_process << "-p";
- *m_process << m_device << m_mode;
+ *m_process << m_device << m_mode << m_speed;
connect(m_process, SIGNAL( processExited(OProcess*) ),
this, SLOT( slotExited(OProcess* ) ) );
connect(m_process, SIGNAL( receivedStdout(OProcess*, char*, int) ),
this, SLOT(slotStdOut(OProcess*,char*,int ) ) );
connect(m_process, SIGNAL(receivedStderr(OProcess*, char*, int ) ),
this, SLOT(slotStdErr(OProcess*,char*,int) ) );
if(!m_process->start(OProcess::NotifyOnExit, OProcess::AllOutput ) ){
qWarning("Could not start" );
delete m_process;
m_process = 0;
}
};
}
void Device::detach(){
delete m_hci;
delete m_process;
@@ -121,29 +123,29 @@ void Device::slotExited( OProcess* proc)
emit device("hci0", true );
}else{
qWarning( "failed" );
emit device("hci0", false );
m_attached = false;
}
}// normal exit
delete m_hci;
m_hci = 0;
}
}
void Device::slotStdOut(OProcess* proc, char* chars, int len)
{
qWarning("std out" );
if( len <1 ){
qWarning( "len < 1 " );
- return;
+ return;
}
if(proc == m_process ){
QCString string( chars, len+1 ); // \0 == +1
qWarning("output: %s", string.data() );
m_output.append( string.data() );
}
}
void Device::slotStdErr(OProcess* proc, char* chars, int len)
{
qWarning("std err" );
slotStdOut( proc, chars, len );
}
diff --git a/noncore/net/opietooth/lib/device.h b/noncore/net/opietooth/lib/device.h
index c0e2658..ce7fccc 100644
--- a/noncore/net/opietooth/lib/device.h
+++ b/noncore/net/opietooth/lib/device.h
@@ -1,46 +1,48 @@
#ifndef OpieToothDevice_H
#define OpieToothDevice_H
#include <qobject.h>
#include <qstring.h>
#include <qvaluelist.h>
#include <sys/types.h>
class OProcess;
namespace OpieTooth {
/**
- * Device takes care of attaching serial
+ * Device takes care of attaching serial
* devices to the blueZ stack.
* After attaching it hciconfig ups it
*/
class Device : public QObject {
- Q_OBJECT
+
+ Q_OBJECT
public:
/**
* Brings up an device.
* Usage example: new Device(/dev/ttySB0, csr)
*
* @param &device QString the device name
* @param &mode QString the mode
+ * @param &speed QString the speed of the device, can be left blank
*/
- Device(const QString &device, const QString& mode);
+ Device(const QString &device, const QString& mode, const QString& speed);
/**
* unloads the device
*/
~Device();
/**
* attach the device
*/
void attach();
/**
* detach the device
*/
void detach();
@@ -64,22 +66,23 @@ namespace OpieTooth {
* @return up bool, if the device is up or not.
*/
void device(const QString& device, bool up );
private slots:
virtual void slotExited( OProcess* );
virtual void slotStdOut(OProcess*, char*, int );
virtual void slotStdErr(OProcess*, char*, int );
private:
class Private;
Private *d;
QString m_device;
bool m_attached:1;
OProcess* m_hci;
OProcess* m_process;
QString m_devId;
QString m_mode;
+ QString m_speed;
pid_t pid;
QCString m_output;
};
};
#endif