summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc37
1 files changed, 27 insertions, 10 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index d65dbd4..40c1f0a 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -1,22 +1,23 @@
#include <opie/oprocess.h>
#include "manager.h"
using namespace OpieTooth;
Manager::Manager( const QString& dev )
: QObject()
{
+ qWarning("created");
m_device = dev;
m_hcitool = 0;
m_sdp = 0;
}
Manager::Manager( Device* dev )
: QObject()
{
m_hcitool = 0;
m_sdp = 0;
}
Manager::Manager()
: QObject()
@@ -42,32 +43,34 @@ void Manager::isConnected( const QString& device ){
this, SLOT(slotProcessExited(OProcess*) ) );
if (!l2ping->start() ) {
emit connected( device, false );
delete l2ping;
}
}
void Manager::isConnected( Device* dev ){
}
void Manager::searchDevices( const QString& device ){
+ qWarning("search devices");
OProcess* hcitool = new OProcess();
- hcitool->setName( device.latin1() );
+ hcitool->setName( device.isEmpty() ? "hci0" : device.latin1() );
*hcitool << "hcitool" << "scan";
connect( hcitool, SIGNAL(processExited(OProcess*) ) ,
this, SLOT(slotHCIExited(OProcess* ) ) );
connect( hcitool, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
this, SLOT(slotHCIOut(OProcess*, char*, int ) ) );
- if (!hcitool->start() ) {
+ if (!hcitool->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
+ qWarning("could not start");
RemoteDevices::ValueList list;
emit foundDevices( device, list );
delete hcitool;
}
}
void Manager::searchDevices(Device* d ){
}
void Manager::addService(const QString& name ){
OProcess proc;
@@ -94,25 +97,25 @@ void Manager::removeServices( const QStringList& list){
QStringList::ConstIterator it;
for (it = list.begin(); it != list.end(); ++it )
removeService( (*it) );
}
void Manager::searchServices( const QString& remDevice ){
OProcess *m_sdp =new OProcess();
*m_sdp << "sdptool" << "browse" << remDevice;
m_sdp->setName( remDevice.latin1() );
connect(m_sdp, SIGNAL(processExited(OProcess*) ),
this, SLOT(slotSDPExited(OProcess* ) ) );
connect(m_sdp, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
this, SLOT(slotSDPOut(OProcess*, char*, int) ) );
- if (!m_sdp->start() ) {
+ if (!m_sdp->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
delete m_sdp;
Services::ValueList list;
emit foundServices( remDevice, list );
}
}
void Manager::searchServices( const RemoteDevices& dev){
searchServices( dev.mac() );
}
QString Manager::toDevice( const QString& mac ){
}
QString Manager::toMac( const QString &device ){
@@ -149,48 +152,62 @@ void Manager::slotSDPExited( OProcess* proc)
m_out.remove( it );
}
}
emit foundServices( proc->name(), list );
delete proc;
}
Services::ValueList Manager::parseSDPOutput( const QString& out ) {
Services::ValueList list;
return list;
}
void Manager::slotHCIExited(OProcess* proc ) {
+ qWarning("process exited");
RemoteDevices::ValueList list;
if (proc->normalExit() ) {
+ qWarning("normalExit %s", proc->name() );
QMap<QString, QString>::Iterator it = m_devices.find(proc->name() );
if (it != m_devices.end() ) {
+ qWarning("!= end ;)");
list = parseHCIOutput( it.data() );
m_devices.remove( it );
}
}
emit foundDevices( proc->name(), list );
delete proc;
}
void Manager::slotHCIOut(OProcess* proc, char* ch, int len) {
QCString str( ch, len+1 );
+ qWarning("hci: %s", str.data() );
QMap<QString, QString>::Iterator it;
it = m_devices.find( proc->name() );
+ qWarning("proc->name %s", proc->name() );
+ QString string;
if (it != m_devices.end() ) {
- QString string = it.data();
- string.append( str );
- m_devices.replace( proc->name(), string );
+ qWarning("slotHCIOut ");
+ string = it.data();
}
+ string.append( str );
+
+ m_devices.replace( proc->name(), string );
}
RemoteDevices::ValueList Manager::parseHCIOutput(const QString& output ) {
+ qWarning("parseHCI %s", output.latin1() );
RemoteDevices::ValueList list;
QStringList strList = QStringList::split('\n', output );
QStringList::Iterator it;
QString str;
for ( it = strList.begin(); it != strList.end(); ++it ) {
str = (*it).stripWhiteSpace();
qWarning("OpieTooth %s", str.latin1() );
- QStringList split = QStringList::split(" ", str );
- qWarning("Left:%s Right:%s", split[0].latin1() , split[1].latin1() );
- RemoteDevices rem( split[0].latin1() , split[1].latin1() );
- list.append( rem );
+ int pos = str.findRev(':' );
+ if ( pos > 0 ) {
+ QString mac = str.left(17 );
+ str.remove( 0, 17 );
+ qWarning("mac %s", mac.latin1() );
+ qWarning("rest:%s", str.latin1() );
+ RemoteDevices rem( mac , str.stripWhiteSpace() );
+ list.append( rem );
+ }
}
return list;
}