summaryrefslogtreecommitdiff
authorzecke <zecke>2006-05-14 14:34:43 (UTC)
committer zecke <zecke>2006-05-14 14:34:43 (UTC)
commit273ffc42b3f0ce593e0d20874a7f224328416445 (patch) (unidiff)
tree04203fc463a711de981fc40ba390fcec8838d1eb
parent89efebff8f5a00089f02397aa0778dd0dbbacdbb (diff)
downloadopie-273ffc42b3f0ce593e0d20874a7f224328416445.zip
opie-273ffc42b3f0ce593e0d20874a7f224328416445.tar.gz
opie-273ffc42b3f0ce593e0d20874a7f224328416445.tar.bz2
core/obex: Patch from Dmitry Korovkin to use opietooth's OBEX implementation
for sending
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/btobex.cpp87
-rw-r--r--core/obex/btobex.h14
2 files changed, 57 insertions, 44 deletions
diff --git a/core/obex/btobex.cpp b/core/obex/btobex.cpp
index 886f3dc..a5bfe5f 100644
--- a/core/obex/btobex.cpp
+++ b/core/obex/btobex.cpp
@@ -2,4 +2,4 @@
2#include "btobex.h" 2#include "btobex.h"
3#include <opietooth/manager.h> 3#include <manager.h>
4#include <opietooth/services.h> 4#include <services.h>
5 5
@@ -67,2 +67,10 @@ void BtObex::send( const QString& fileName, const QString& bdaddr) {
67 m_bdaddr = bdaddr; 67 m_bdaddr = bdaddr;
68 if (m_send != 0) {
69 if (m_send->isSending())
70 return;
71 else {
72 delete m_send;
73 m_send = 0;
74 }
75 }
68 if (m_rec != 0 ) { 76 if (m_rec != 0 ) {
@@ -127,2 +135,4 @@ void BtObex::slotFoundServices(const QString&, Services::ValueList svcList)
127void BtObex::sendNow(){ 135void BtObex::sendNow(){
136 QString m_dst = "";
137 int result; //function call result
128 if ( m_count >= 25 ) { // could not send 138 if ( m_count >= 25 ) { // could not send
@@ -133,19 +143,17 @@ void BtObex::sendNow(){
133 // OProcess inititialisation 143 // OProcess inititialisation
134 m_send = new OProcess(0, "ussp-push"); 144 m_send = new ObexPush();
135 m_send->setWorkingDirectory( QFileInfo(m_file).dirPath(true) );
136
137 // ussp-push --timeo 30 <btaddr:port> file file
138 *m_send << "ussp-push" << "--timeo 30";
139 *m_send << m_bdaddr + "@" + QString::number(m_port);
140 *m_send << QFile::encodeName(QFileInfo(m_file).fileName());
141 *m_send << QFile::encodeName(QFileInfo(m_file).fileName());
142 m_send->setUseShell(true);
143
144 // connect to slots Exited and and StdOut 145 // connect to slots Exited and and StdOut
145 connect(m_send, SIGNAL(processExited(Opie::Core::OProcess*) ), 146 connect(m_send, SIGNAL(sendComplete(int)),
146 this, SLOT(slotExited(Opie::Core::OProcess*)) ); 147 this, SLOT(slotPushComplete(int)) );
147 connect(m_send, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int)), 148 connect(m_send, SIGNAL(sendError(int)),
148 this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) ); 149 this, SLOT(slotPushError(int)) );
150 connect(m_send, SIGNAL(status(QCString&)),
151 this, SLOT(slotPushStatus(QCString&) ) );
152
153 ::sleep(4);
149 // now start it 154 // now start it
150 if (!m_send->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { 155 result = m_send->send(m_bdaddr, m_port, m_file, m_dst);
156 if (result > 0) //Sending process is actually running
157 return;
158 else if (result < 0) {
151 m_count = 25; 159 m_count = 25;
@@ -165,5 +173,2 @@ void BtObex::slotExited(OProcess* proc ){
165 received(); 173 received();
166 else if ( proc == m_send )
167 sendEnd();
168
169} 174}
@@ -177,2 +182,25 @@ void BtObex::slotStdOut(OProcess* proc, char* buf, int len){
177 182
183void BtObex::slotPushComplete(int result) {
184 if (result == 0) {
185 delete m_send;
186 m_send=0;
187 emit sent(true);
188 } else { // it failed maybe the other side wasn't ready
189 // let's try it again
190 delete m_send;
191 m_send = 0;
192 sendNow();
193 }
194}
195
196void BtObex::slotPushError(int) {
197 emit error( -1 );
198 delete m_send;
199 m_send = 0;
200}
201
202void BtObex::slotPushStatus(QCString& str) {
203 odebug << str << oendl;
204}
205
178void BtObex::received() { 206void BtObex::received() {
@@ -191,21 +219,2 @@ void BtObex::received() {
191 219
192void BtObex::sendEnd() {
193 if (m_send->normalExit() ) {
194 if ( m_send->exitStatus() == 0 ) {
195 delete m_send;
196 m_send=0;
197 emit sent(true);
198 }else if (m_send->exitStatus() != 0 ) { // it failed maybe the other side wasn't ready
199 // let's try it again
200 delete m_send;
201 m_send = 0;
202 sendNow();
203 }
204 }else {
205 emit error( -1 );
206 delete m_send;
207 m_send = 0;
208 }
209}
210
211// This probably doesn't do anything useful for bt. 220// This probably doesn't do anything useful for bt.
diff --git a/core/obex/btobex.h b/core/obex/btobex.h
index ba50064..9c1ab70 100644
--- a/core/obex/btobex.h
+++ b/core/obex/btobex.h
@@ -6,4 +6,5 @@
6#include <qobject.h> 6#include <qobject.h>
7#include <opietooth/services.h> 7#include <services.h>
8#include <opietooth/manager.h> 8#include <manager.h>
9#include <obexpush.h>
9 10
@@ -61,3 +62,3 @@ namespace OpieObex {
61 int m_port; 62 int m_port;
62 Opie::Core::OProcess *m_send; 63 ObexPush* m_send;
63 Opie::Core::OProcess *m_rec; 64 Opie::Core::OProcess *m_rec;
@@ -69,2 +70,7 @@ private slots:
69 70
71 // Push process slots
72 void slotPushStatus(QCString&);
73 void slotPushComplete(int);
74 void slotPushError(int);
75
70 // the process exited 76 // the process exited
@@ -79,4 +85,2 @@ private slots:
79 void received(); 85 void received();
80 void sendEnd();
81
82 }; 86 };