summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index 2234333..e07f9da 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -143,149 +143,157 @@ void Manager::slotSDPOut(OProcess* proc, char* ch, int len)
QMap<QString, QString>::Iterator it;
it = m_out.find(proc->name() );
QString string;
if ( it != m_out.end() ) {
string = it.data();
}
string.append( str );
m_out.replace( proc->name(), string );
}
void Manager::slotSDPExited( OProcess* proc)
{
qWarning("proc name %s", proc->name() );
Services::ValueList list;
if (proc->normalExit() ) {
QMap<QString, QString>::Iterator it = m_out.find( proc->name() );
if ( it != m_out.end() ) {
qWarning("found process" );
list = parseSDPOutput( it.data() );
m_out.remove( it );
}
}
emit foundServices( proc->name(), list );
delete proc;
}
Services::ValueList Manager::parseSDPOutput( const QString& out ) {
Services::ValueList list;
qWarning("parsing output" );
Parser parser( out );
list = parser.services();
return list;
}
void Manager::slotHCIExited(OProcess* proc ) {
qWarning("process exited");
RemoteDevice::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() ) {
qWarning("slotHCIOut ");
string = it.data();
}
string.append( str );
m_devices.replace( proc->name(), string );
}
RemoteDevice::ValueList Manager::parseHCIOutput(const QString& output ) {
qWarning("parseHCI %s", output.latin1() );
RemoteDevice::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() );
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() );
RemoteDevice rem( mac , str.stripWhiteSpace() );
list.append( rem );
}
}
return list;
}
////// hcitool cc and hcitool con
/**
* Create it on the stack as don't care
* so we don't need to care for it
* cause hcitool gets reparented
*/
void Manager::connectTo( const QString& mac) {
OProcess proc;
proc << "hcitool";
proc << "cc";
- proc << "mac";
+ proc << mac;
proc.start(OProcess::DontCare); // the lib does not care at this point
}
void Manager::searchConnections() {
qWarning("searching connections?");
OProcess* proc = new OProcess();
m_hcitoolCon = QString::null;
connect(proc, SIGNAL(processExited(OProcess*) ),
this, SLOT(slotConnectionExited( OProcess*) ) );
connect(proc, SIGNAL(receivedStdout(OProcess*, char*, int) ),
this, SLOT(slotConnectionOutput(OProcess*, char*, int) ) );
*proc << "hcitool";
*proc << "con";
if (!proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
Connection::ValueList list;
emit connections( list );
delete proc;
}
}
-void Manager::slotConnectionExited( OProcess* proc ) {
+void Manager::slotConnectionExited( OProcess* /*proc*/ ) {
qWarning("exited");
Connection::ValueList list;
list = parseConnections( m_hcitoolCon );
emit connections(list );
}
void Manager::slotConnectionOutput(OProcess* proc, char* cha, int len) {
QCString str(cha, len );
m_hcitoolCon.append( str );
delete proc;
}
Connection::ValueList Manager::parseConnections( const QString& out ) {
Connection::ValueList list2;
QStringList list = QStringList::split('\n', out );
QStringList::Iterator it;
for (it = list.begin(); it != list.end(); ++it ) {
QString row = (*it).stripWhiteSpace();
QStringList value = QStringList::split(' ', row );
qWarning("0: %s", value[0].latin1() );
qWarning("1: %s", value[1].latin1() );
qWarning("2: %s", value[2].latin1() );
qWarning("3: %s", value[3].latin1() );
qWarning("4: %s", value[4].latin1() );
qWarning("5: %s", value[5].latin1() );
qWarning("6: %s", value[6].latin1() );
qWarning("7: %s", value[7].latin1() );
qWarning("8: %s", value[8].latin1() );
+ Connection con;
+ con.setDirection( value[0] == QString::fromLatin1("<") ? Outgoing : Incoming );
+ con.setConnectionMode( value[1] );
+ con.setMac( value[2] );
+ con.setHandle( value[4].toInt() );
+ con.setState( value[6].toInt() );
+ con.setLinkMode( value[8] == QString::fromLatin1("MASTER") ? Master : Client );
+ list2.append( con );
}
return list2;
}