summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/lib/manager.cc
Unidiff
Diffstat (limited to 'noncore/net/opietooth/lib/manager.cc') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/lib/manager.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc
index 177c94e..23506b3 100644
--- a/noncore/net/opietooth/lib/manager.cc
+++ b/noncore/net/opietooth/lib/manager.cc
@@ -85,103 +85,110 @@ void Manager::addService(const QString& name ){
85 emit addedService( name, bo ); 85 emit addedService( name, bo );
86} 86}
87void Manager::addServices(const QStringList& list){ 87void Manager::addServices(const QStringList& list){
88 QStringList::ConstIterator it; 88 QStringList::ConstIterator it;
89 for (it = list.begin(); it != list.end(); ++it ) 89 for (it = list.begin(); it != list.end(); ++it )
90 addService( (*it) ); 90 addService( (*it) );
91} 91}
92void Manager::removeService( const QString& name ){ 92void Manager::removeService( const QString& name ){
93 OProcess prc; 93 OProcess prc;
94 prc << "sdptool" << "del" << name; 94 prc << "sdptool" << "del" << name;
95 bool bo = true; 95 bool bo = true;
96 if (!prc.start(OProcess::DontCare ) ) 96 if (!prc.start(OProcess::DontCare ) )
97 bo = false; 97 bo = false;
98 emit removedService( name, bo ); 98 emit removedService( name, bo );
99} 99}
100void Manager::removeServices( const QStringList& list){ 100void Manager::removeServices( const QStringList& list){
101 QStringList::ConstIterator it; 101 QStringList::ConstIterator it;
102 for (it = list.begin(); it != list.end(); ++it ) 102 for (it = list.begin(); it != list.end(); ++it )
103 removeService( (*it) ); 103 removeService( (*it) );
104} 104}
105void Manager::searchServices( const QString& remDevice ){ 105void Manager::searchServices( const QString& remDevice ){
106 OProcess *m_sdp =new OProcess(); 106 OProcess *m_sdp =new OProcess();
107 *m_sdp << "sdptool" << "browse" << remDevice; 107 *m_sdp << "sdptool" << "browse" << remDevice;
108 m_sdp->setName( remDevice.latin1() ); 108 m_sdp->setName( remDevice.latin1() );
109 qWarning("search Services for %s", remDevice.latin1() );
109 connect(m_sdp, SIGNAL(processExited(OProcess*) ), 110 connect(m_sdp, SIGNAL(processExited(OProcess*) ),
110 this, SLOT(slotSDPExited(OProcess* ) ) ); 111 this, SLOT(slotSDPExited(OProcess* ) ) );
111 connect(m_sdp, SIGNAL(receivedStdout(OProcess*, char*, int ) ), 112 connect(m_sdp, SIGNAL(receivedStdout(OProcess*, char*, int ) ),
112 this, SLOT(slotSDPOut(OProcess*, char*, int) ) ); 113 this, SLOT(slotSDPOut(OProcess*, char*, int) ) );
113 if (!m_sdp->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { 114 if (!m_sdp->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) {
115 qWarning("could not start sdptool" );
114 delete m_sdp; 116 delete m_sdp;
115 Services::ValueList list; 117 Services::ValueList list;
116 emit foundServices( remDevice, list ); 118 emit foundServices( remDevice, list );
117 } 119 }
118} 120}
119void Manager::searchServices( const RemoteDevice& dev){ 121void Manager::searchServices( const RemoteDevice& dev){
120 searchServices( dev.mac() ); 122 searchServices( dev.mac() );
121} 123}
122QString Manager::toDevice( const QString& /*mac*/ ){ 124QString Manager::toDevice( const QString& /*mac*/ ){
123 return QString::null; 125 return QString::null;
124} 126}
125QString Manager::toMac( const QString &/*device*/ ){ 127QString Manager::toMac( const QString &/*device*/ ){
126 return QString::null; 128 return QString::null;
127} 129}
128void Manager::slotProcessExited(OProcess* proc ) { 130void Manager::slotProcessExited(OProcess* proc ) {
129 bool conn= false; 131 bool conn= false;
130 if (proc->normalExit() && proc->exitStatus() == 0 ) 132 if (proc->normalExit() && proc->exitStatus() == 0 )
131 conn = true; 133 conn = true;
132 134
133 QString name = QString::fromLatin1(proc->name() ); 135 QString name = QString::fromLatin1(proc->name() );
134 emit available( name, conn ); 136 emit available( name, conn );
135 delete proc; 137 delete proc;
136} 138}
137void Manager::slotSDPOut(OProcess* proc, char* ch, int len) 139void Manager::slotSDPOut(OProcess* proc, char* ch, int len)
138{ 140{
139 QCString str(ch, len+1 ); 141 QCString str(ch, len+1 );
142 qWarning("SDP:%s", str.data() );
140 QMap<QString, QString>::Iterator it; 143 QMap<QString, QString>::Iterator it;
141 it = m_out.find(proc->name() ); 144 it = m_out.find(proc->name() );
145 QString string;
142 if ( it != m_out.end() ) { 146 if ( it != m_out.end() ) {
143 QString string = it.data(); 147 string = it.data();
144 string.append( str );
145 m_out.replace( proc->name(), string );
146 } 148 }
149 string.append( str );
150 m_out.replace( proc->name(), string );
147 151
148} 152}
149void Manager::slotSDPExited( OProcess* proc) 153void Manager::slotSDPExited( OProcess* proc)
150{ 154{
155 qWarning("proc name %s", proc->name() );
151 Services::ValueList list; 156 Services::ValueList list;
152 if (proc->normalExit() ) { 157 if (proc->normalExit() ) {
153 QMap<QString, QString>::Iterator it = m_out.find( proc->name() ); 158 QMap<QString, QString>::Iterator it = m_out.find( proc->name() );
154 if ( it != m_out.end() ) { 159 if ( it != m_out.end() ) {
160 qWarning("found process" );
155 list = parseSDPOutput( it.data() ); 161 list = parseSDPOutput( it.data() );
156 m_out.remove( it ); 162 m_out.remove( it );
157 } 163 }
158 } 164 }
159 emit foundServices( proc->name(), list ); 165 emit foundServices( proc->name(), list );
160 delete proc; 166 delete proc;
161} 167}
162Services::ValueList Manager::parseSDPOutput( const QString& out ) { 168Services::ValueList Manager::parseSDPOutput( const QString& out ) {
163 Services::ValueList list; 169 Services::ValueList list;
170 qWarning("parsing output" );
164 Parser parser( out ); 171 Parser parser( out );
165 list = parser.services(); 172 list = parser.services();
166 return list; 173 return list;
167} 174}
168 175
169void Manager::slotHCIExited(OProcess* proc ) { 176void Manager::slotHCIExited(OProcess* proc ) {
170 qWarning("process exited"); 177 qWarning("process exited");
171 RemoteDevice::ValueList list; 178 RemoteDevice::ValueList list;
172 if (proc->normalExit() ) { 179 if (proc->normalExit() ) {
173 qWarning("normalExit %s", proc->name() ); 180 qWarning("normalExit %s", proc->name() );
174 QMap<QString, QString>::Iterator it = m_devices.find(proc->name() ); 181 QMap<QString, QString>::Iterator it = m_devices.find(proc->name() );
175 if (it != m_devices.end() ) { 182 if (it != m_devices.end() ) {
176 qWarning("!= end ;)"); 183 qWarning("!= end ;)");
177 list = parseHCIOutput( it.data() ); 184 list = parseHCIOutput( it.data() );
178 m_devices.remove( it ); 185 m_devices.remove( it );
179 } 186 }
180 } 187 }
181 emit foundDevices( proc->name(), list ); 188 emit foundDevices( proc->name(), list );
182 delete proc; 189 delete proc;
183} 190}
184void Manager::slotHCIOut(OProcess* proc, char* ch, int len) { 191void Manager::slotHCIOut(OProcess* proc, char* ch, int len) {
185 QCString str( ch, len+1 ); 192 QCString str( ch, len+1 );
186 qWarning("hci: %s", str.data() ); 193 qWarning("hci: %s", str.data() );
187 QMap<QString, QString>::Iterator it; 194 QMap<QString, QString>::Iterator it;