-rw-r--r-- | noncore/net/opietooth/lib/manager.cc | 65 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.h | 18 |
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 | */ | ||
235 | void 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 | |||
244 | void 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 | } | ||
262 | void Manager::slotConnectionExited( OProcess* proc ) { | ||
263 | qWarning("exited"); | ||
264 | Connection::ValueList list; | ||
265 | list = parseConnections( m_hcitoolCon ); | ||
266 | emit connections(list ); | ||
267 | } | ||
268 | void Manager::slotConnectionOutput(OProcess* proc, char* cha, int len) { | ||
269 | QCString str(cha, len ); | ||
270 | m_hcitoolCon.append( str ); | ||
271 | delete proc; | ||
272 | } | ||
273 | Connection::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; |