summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc65
-rw-r--r--noncore/net/opietooth/lib/manager.h18
2 files changed, 83 insertions, 0 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index 23506b3..2234333 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -224,3 +224,68 @@ RemoteDevice::ValueList Manager::parseHCIOutput(const QString& output ) {
224 } 224 }
225 return list; 225 return list;
226} 226}
227
228////// hcitool cc and hcitool con
229
230/**
231 * Create it on the stack as don't care
232 * so we don't need to care for it
233 * cause hcitool gets reparented
234 */
235void Manager::connectTo( const QString& mac) {
236 OProcess proc;
237 proc << "hcitool";
238 proc << "cc";
239 proc << "mac";
240 proc.start(OProcess::DontCare); // the lib does not care at this point
241}
242
243
244void Manager::searchConnections() {
245 qWarning("searching connections?");
246 OProcess* proc = new OProcess();
247 m_hcitoolCon = QString::null;
248
249 connect(proc, SIGNAL(processExited(OProcess*) ),
250 this, SLOT(slotConnectionExited( OProcess*) ) );
251 connect(proc, SIGNAL(receivedStdout(OProcess*, char*, int) ),
252 this, SLOT(slotConnectionOutput(OProcess*, char*, int) ) );
253 *proc << "hcitool";
254 *proc << "con";
255
256 if (!proc->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
257 Connection::ValueList list;
258 emit connections( list );
259 delete proc;
260 }
261}
262void Manager::slotConnectionExited( OProcess* proc ) {
263 qWarning("exited");
264 Connection::ValueList list;
265 list = parseConnections( m_hcitoolCon );
266 emit connections(list );
267}
268void Manager::slotConnectionOutput(OProcess* proc, char* cha, int len) {
269 QCString str(cha, len );
270 m_hcitoolCon.append( str );
271 delete proc;
272}
273Connection::ValueList Manager::parseConnections( const QString& out ) {
274 Connection::ValueList list2;
275 QStringList list = QStringList::split('\n', out );
276 QStringList::Iterator it;
277 for (it = list.begin(); it != list.end(); ++it ) {
278 QString row = (*it).stripWhiteSpace();
279 QStringList value = QStringList::split(' ', row );
280 qWarning("0: %s", value[0].latin1() );
281 qWarning("1: %s", value[1].latin1() );
282 qWarning("2: %s", value[2].latin1() );
283 qWarning("3: %s", value[3].latin1() );
284 qWarning("4: %s", value[4].latin1() );
285 qWarning("5: %s", value[5].latin1() );
286 qWarning("6: %s", value[6].latin1() );
287 qWarning("7: %s", value[7].latin1() );
288 qWarning("8: %s", value[8].latin1() );
289 }
290 return list2;
291}
diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h
index 2589e9b..b32327c 100644
--- a/noncore/net/opietooth/lib/manager.h
+++ b/noncore/net/opietooth/lib/manager.h
@@ -7,6 +7,7 @@
7#include <qmap.h> 7#include <qmap.h>
8#include <qvaluelist.h> 8#include <qvaluelist.h>
9 9
10#include "connection.h"
10#include "remotedevice.h" 11#include "remotedevice.h"
11#include "services.h" 12#include "services.h"
12 13
@@ -109,8 +110,24 @@ namespace OpieTooth {
109 * search for services on a remote device 110 * search for services on a remote device
110 */ 111 */
111 void searchServices( const RemoteDevice& ); 112 void searchServices( const RemoteDevice& );
113
114 /**
115 * Starts to connect to the device
116 * in @param
117 */
118 void connectTo(const QString& );
119
120 /**
121 * Searches for active connections
122 * the result is emitted with the
123 * connections signal
124 */
125 void searchConnections();
126
127//// not implemented yet
112 /*static*/ QString toDevice( const QString& mac ); 128 /*static*/ QString toDevice( const QString& mac );
113 /*static*/ QString toMac( const QString &device ); 129 /*static*/ QString toMac( const QString &device );
130//// not implemented yet over
114 131
115 signals: 132 signals:
116 // device either mac or dev name 133 // device either mac or dev name
@@ -136,6 +153,7 @@ private slots:
136 private: 153 private:
137 Services::ValueList parseSDPOutput( const QString& ); 154 Services::ValueList parseSDPOutput( const QString& );
138 RemoteDevice::ValueList parseHCIOutput( const QString& ); 155 RemoteDevice::ValueList parseHCIOutput( const QString& );
156 Connection::ValueList parseConnections( const QString& );
139 OProcess *m_hcitool; 157 OProcess *m_hcitool;
140 OProcess *m_sdp; // not only one 158 OProcess *m_sdp; // not only one
141 QString m_device; 159 QString m_device;