-rw-r--r-- | noncore/net/opietooth/lib/manager.cc | 12 |
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 @@ -207,85 +207,93 @@ 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; } |