summaryrefslogtreecommitdiff
authorzecke <zecke>2002-06-15 21:37:42 (UTC)
committer zecke <zecke>2002-06-15 21:37:42 (UTC)
commit9d02762b3d2e07f6db24c21621a5d577ea6acda7 (patch) (unidiff)
treed3a6ffb032a55991e4ef989f911f000090e29b09
parent6f9b901d1f8db793a0e4a42f99f14f802e96f62e (diff)
downloadopie-9d02762b3d2e07f6db24c21621a5d577ea6acda7.zip
opie-9d02762b3d2e07f6db24c21621a5d577ea6acda7.tar.gz
opie-9d02762b3d2e07f6db24c21621a5d577ea6acda7.tar.bz2
Manager should work now
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc64
-rw-r--r--noncore/net/opietooth/lib/manager.h7
2 files changed, 69 insertions, 2 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index eeeab19..d65dbd4 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -30,49 +30,60 @@ Manager::~Manager(){
30} 30}
31void Manager::setDevice( const QString& dev ){ 31void Manager::setDevice( const QString& dev ){
32 m_device = dev; 32 m_device = dev;
33} 33}
34void Manager::setDevice( Device* dev ){ 34void Manager::setDevice( Device* dev ){
35 35
36} 36}
37void Manager::isConnected( const QString& device ){ 37void Manager::isConnected( const QString& device ){
38 OProcess* l2ping = new OProcess(); 38 OProcess* l2ping = new OProcess();
39 l2ping->setName( device.latin1() ); 39 l2ping->setName( device.latin1() );
40 *l2ping << "l2ping" << "-c1" << device; 40 *l2ping << "l2ping" << "-c1" << device;
41 connect(l2ping, SIGNAL(processExited(OProcess* ) ), 41 connect(l2ping, SIGNAL(processExited(OProcess* ) ),
42 this, SLOT(slotProcessExited(OProcess*) ) ); 42 this, SLOT(slotProcessExited(OProcess*) ) );
43 if (!l2ping->start() ) { 43 if (!l2ping->start() ) {
44 emit connected( device, false ); 44 emit connected( device, false );
45 delete l2ping; 45 delete l2ping;
46 } 46 }
47 47
48} 48}
49void Manager::isConnected( Device* dev ){ 49void Manager::isConnected( Device* dev ){
50 50
51 51
52} 52}
53void Manager::searchDevices( const QString& device ){ 53void Manager::searchDevices( const QString& device ){
54 54 OProcess* hcitool = new OProcess();
55 hcitool->setName( device.latin1() );
56 *hcitool << "hcitool" << "scan";
57 connect( hcitool, SIGNAL(processExited(OProcess*) ) ,
58 this, SLOT(slotHCIExited(OProcess* ) ) );
59 connect( hcitool, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
60 this, SLOT(slotHCIOut(OProcess*, char*, int ) ) );
61 if (!hcitool->start() ) {
62 RemoteDevices::ValueList list;
63 emit foundDevices( device, list );
64 delete hcitool;
65 }
55} 66}
56 67
57void Manager::searchDevices(Device* d ){ 68void Manager::searchDevices(Device* d ){
58 69
59 70
60} 71}
61void Manager::addService(const QString& name ){ 72void Manager::addService(const QString& name ){
62 OProcess proc; 73 OProcess proc;
63 proc << "sdptool" << "add" << name; 74 proc << "sdptool" << "add" << name;
64 bool bo = true; 75 bool bo = true;
65 if (!proc.start(OProcess::DontCare ) ) 76 if (!proc.start(OProcess::DontCare ) )
66 bo = false; 77 bo = false;
67 emit addedService( name, bo ); 78 emit addedService( name, bo );
68} 79}
69void Manager::addServices(const QStringList& list){ 80void Manager::addServices(const QStringList& list){
70 QStringList::ConstIterator it; 81 QStringList::ConstIterator it;
71 for (it = list.begin(); it != list.end(); ++it ) 82 for (it = list.begin(); it != list.end(); ++it )
72 addService( (*it) ); 83 addService( (*it) );
73} 84}
74void Manager::removeService( const QString& name ){ 85void Manager::removeService( const QString& name ){
75 OProcess prc; 86 OProcess prc;
76 prc << "sdptool" << "del" << name; 87 prc << "sdptool" << "del" << name;
77 bool bo = true; 88 bool bo = true;
78 if (!prc.start(OProcess::DontCare ) ) 89 if (!prc.start(OProcess::DontCare ) )
@@ -109,26 +120,77 @@ QString Manager::toMac( const QString &device ){
109} 120}
110void Manager::slotProcessExited(OProcess* proc ) { 121void Manager::slotProcessExited(OProcess* proc ) {
111 bool conn= false; 122 bool conn= false;
112 if (proc->normalExit() && proc->exitStatus() == 0 ) 123 if (proc->normalExit() && proc->exitStatus() == 0 )
113 conn = true; 124 conn = true;
114 125
115 QString name = QString::fromLatin1(proc->name() ); 126 QString name = QString::fromLatin1(proc->name() );
116 emit connected( name, conn ); 127 emit connected( name, conn );
117 delete proc; 128 delete proc;
118} 129}
119void Manager::slotSDPOut(OProcess* proc, char* ch, int len) 130void Manager::slotSDPOut(OProcess* proc, char* ch, int len)
120{ 131{
121 QCString str(ch, len+1 ); 132 QCString str(ch, len+1 );
122 QMap<QString, QString>::Iterator it; 133 QMap<QString, QString>::Iterator it;
123 it = m_out.find(proc->name() ); 134 it = m_out.find(proc->name() );
124 if ( it != m_out.end() ) { 135 if ( it != m_out.end() ) {
125 QString string = it.data(); 136 QString string = it.data();
126 string.append( str ); 137 string.append( str );
127 m_out.replace( proc->name(), string ); 138 m_out.replace( proc->name(), string );
128 } 139 }
129 140
130} 141}
131void Manager::slotSDPExited( OProcess* proc) 142void Manager::slotSDPExited( OProcess* proc)
132{ 143{
144 Services::ValueList list;
145 if (proc->normalExit() ) {
146 QMap<QString, QString>::Iterator it = m_out.find( proc->name() );
147 if ( it != m_out.end() ) {
148 list = parseSDPOutput( it.data() );
149 m_out.remove( it );
150 }
151 }
152 emit foundServices( proc->name(), list );
153 delete proc;
154}
155Services::ValueList Manager::parseSDPOutput( const QString& out ) {
156 Services::ValueList list;
157 return list;
158}
159
160void Manager::slotHCIExited(OProcess* proc ) {
161 RemoteDevices::ValueList list;
162 if (proc->normalExit() ) {
163 QMap<QString, QString>::Iterator it = m_devices.find(proc->name() );
164 if (it != m_devices.end() ) {
165 list = parseHCIOutput( it.data() );
166 m_devices.remove( it );
167 }
168 }
169 emit foundDevices( proc->name(), list );
133 delete proc; 170 delete proc;
134} 171}
172void Manager::slotHCIOut(OProcess* proc, char* ch, int len) {
173 QCString str( ch, len+1 );
174 QMap<QString, QString>::Iterator it;
175 it = m_devices.find( proc->name() );
176 if (it != m_devices.end() ) {
177 QString string = it.data();
178 string.append( str );
179 m_devices.replace( proc->name(), string );
180 }
181}
182RemoteDevices::ValueList Manager::parseHCIOutput(const QString& output ) {
183 RemoteDevices::ValueList list;
184 QStringList strList = QStringList::split('\n', output );
185 QStringList::Iterator it;
186 QString str;
187 for ( it = strList.begin(); it != strList.end(); ++it ) {
188 str = (*it).stripWhiteSpace();
189 qWarning("OpieTooth %s", str.latin1() );
190 QStringList split = QStringList::split(" ", str );
191 qWarning("Left:%s Right:%s", split[0].latin1() , split[1].latin1() );
192 RemoteDevices rem( split[0].latin1() , split[1].latin1() );
193 list.append( rem );
194 }
195 return list;
196}
diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h
index 03375c5..95e4306 100644
--- a/noncore/net/opietooth/lib/manager.h
+++ b/noncore/net/opietooth/lib/manager.h
@@ -89,38 +89,43 @@ Q_OBJECT
89 * Removes a list from the sdpd 89 * Removes a list from the sdpd
90 */ 90 */
91 void removeServices(const QStringList& ); 91 void removeServices(const QStringList& );
92 92
93 /** 93 /**
94 * search for services on a remote device 94 * search for services on a remote device
95 * 95 *
96 */ 96 */
97 void searchServices( const QString& remDevice ); 97 void searchServices( const QString& remDevice );
98 /** 98 /**
99 * search for services on a remote device 99 * search for services on a remote device
100 */ 100 */
101 void searchServices( const RemoteDevices& ); 101 void searchServices( const RemoteDevices& );
102 /*static*/ QString toDevice( const QString& mac ); 102 /*static*/ QString toDevice( const QString& mac );
103 /*static*/ QString toMac( const QString &device ); 103 /*static*/ QString toMac( const QString &device );
104 104
105 signals: 105 signals:
106 // device either mac or dev name 106 // device either mac or dev name
107 // the first device is the device which you access 107 // the first device is the device which you access
108 void connected( const QString& device, bool connected ); 108 void connected( const QString& device, bool connected );
109 void addedService( const QString& service, bool added ); 109 void addedService( const QString& service, bool added );
110 void removedService( const QString& service, bool removed ); 110 void removedService( const QString& service, bool removed );
111 void foundServices( const QString& device, Services::ValueList ); 111 void foundServices( const QString& device, Services::ValueList );
112 void foundDevices( const QString& device, RemoteDevices::ValueList ); 112 void foundDevices( const QString& device, RemoteDevices::ValueList );
113 void foundNothing( const QString& device ); 113
114private slots: 114private slots:
115 void slotProcessExited(OProcess* ); 115 void slotProcessExited(OProcess* );
116 void slotSDPExited(OProcess*); 116 void slotSDPExited(OProcess*);
117 void slotSDPOut(OProcess*, char*, int); 117 void slotSDPOut(OProcess*, char*, int);
118 void slotHCIExited(OProcess* );
119 void slotHCIOut(OProcess*, char*, int );
118 private: 120 private:
121 Services::ValueList parseSDPOutput( const QString& );
122 RemoteDevices::ValueList parseHCIOutput( const QString& );
119 OProcess *m_hcitool; 123 OProcess *m_hcitool;
120 OProcess *m_sdp; // not only one 124 OProcess *m_sdp; // not only one
121 QString m_device; 125 QString m_device;
122 QMap<QString, QString> m_out; 126 QMap<QString, QString> m_out;
127 QMap<QString, QString> m_devices;
123 }; 128 };
124}; 129};
125 130
126#endif 131#endif