-rw-r--r-- | core/obex/btobex.cpp | 2 | ||||
-rw-r--r-- | core/obex/obex.cpp | 3 | ||||
-rw-r--r-- | core/obex/obex.h | 3 | ||||
-rw-r--r-- | core/obex/obexserver.cpp | 24 | ||||
-rw-r--r-- | core/obex/obexserver.h | 4 |
5 files changed, 21 insertions, 15 deletions
diff --git a/core/obex/btobex.cpp b/core/obex/btobex.cpp index 212a084..4e078b0 100644 --- a/core/obex/btobex.cpp +++ b/core/obex/btobex.cpp @@ -52,33 +52,33 @@ using namespace OpieTooth; BtObex::BtObex( QObject *parent, const char* name ) : ObexBase(parent, name ) { m_rec = 0; m_send=0; btManager = NULL; }; BtObex::~BtObex() { delete btManager; delete m_rec; delete m_send; } void BtObex::receive() { ObexBase::receive(); - m_rec = new ObexServer(); + m_rec = new ObexServer(OBEX_TRANS_BLUETOOTH); odebug << "BT OBEX do receive" << oendl; // TODO mbhaynie: No idea if this actually works -- maybe opd is better. // connect to the necessary slots connect(m_rec, SIGNAL(processExited(Opie::Core::OProcess*) ), this, SLOT(slotExited(Opie::Core::OProcess*) ) ); connect(m_rec, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ), this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) ); if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { emit done( false ); delete m_rec; m_rec = 0; } } diff --git a/core/obex/obex.cpp b/core/obex/obex.cpp index 95c561a..e4a3c31 100644 --- a/core/obex/obex.cpp +++ b/core/obex/obex.cpp @@ -44,34 +44,33 @@ using namespace OpieObex; using namespace Opie::Core; /* TRANSLATOR OpieObex::Obex */ Obex::Obex( QObject *parent, const char* name ) : ObexBase(parent, name ) { m_rec = 0; m_send=0; }; Obex::~Obex() { delete m_rec; delete m_send; } void Obex::receive() { ObexBase::receive(); - m_rec = new OProcess(); - *m_rec << "irobex_palm3"; + m_rec = new ObexServer(OBEX_TRANS_IRDA); // connect to the necessary slots connect(m_rec, SIGNAL(processExited(Opie::Core::OProcess*) ), this, SLOT(slotExited(Opie::Core::OProcess*) ) ); connect(m_rec, SIGNAL(receivedStdout(Opie::Core::OProcess*, char*, int ) ), this, SLOT(slotStdOut(Opie::Core::OProcess*, char*, int) ) ); if(!m_rec->start(OProcess::NotifyOnExit, OProcess::AllOutput) ) { emit done( false ); delete m_rec; m_rec = 0; } } // if currently receiving stop it send receive void Obex::send(const QString& fileName, const QString& addr) { diff --git a/core/obex/obex.h b/core/obex/obex.h index 36ff29a..b948ce4 100644 --- a/core/obex/obex.h +++ b/core/obex/obex.h @@ -21,32 +21,33 @@ -_. . . )=. = Library General Public License along with -- :-= this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* * The Infrared OBEX handling class declaration */ #ifndef OpieObex_H #define OpieObex_H #include "obexbase.h" #include <qobject.h> +#include "obexserver.h" namespace Opie {namespace Core {class OProcess;}} class QCopChannel; namespace OpieObex { class Obex : public ObexBase { Q_OBJECT public: /** * Obex c'tor look */ Obex( QObject *parent, const char* name); /** * d'tor */ ~Obex(); @@ -71,33 +72,33 @@ namespace OpieObex { void error( int ); /** * The current try to receive data */ void currentTry(unsigned int); /** * signal sent The file got beamed to the remote location */ void sent(bool); void done(bool); private: uint m_count; QString m_file; QString m_outp; Opie::Core::OProcess *m_send; - Opie::Core::OProcess *m_rec; + ObexServer* m_rec; //The OBEX server bool m_receive : 1; void shutDownReceive(); private slots: /** * send over palm obex */ //void send(const QString&); // the process exited void slotExited(Opie::Core::OProcess* proc) ; void slotStdOut(Opie::Core::OProcess*, char*, int); virtual void slotError(); diff --git a/core/obex/obexserver.cpp b/core/obex/obexserver.cpp index 95196de..25d8224 100644 --- a/core/obex/obexserver.cpp +++ b/core/obex/obexserver.cpp @@ -35,35 +35,36 @@ #include <opie2/odebug.h> #include <sys/types.h> #include <sys/wait.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> #include <fcntl.h> #include <qapplication.h> #include <opie2/oprocctrl.h> #include <qstring.h> #include <qfile.h> using namespace Opie::Core; using namespace Opie::Core::Internal; using namespace OpieObex; -ObexServer::ObexServer() : +ObexServer::ObexServer(int trans) : OProcess(tr("ObexServer"), 0, "ObexServer") { + transport = trans; m_obex = NULL; } ObexServer::~ObexServer() { stop(); } /** * Function handles the file received * @param name the file name * @param data the file data * @param data_len the data length * @return 0 on success -1 on error */ static int file_received(uint8_t* name, const uint8_t* data, size_t data_len) @@ -316,45 +317,48 @@ sdp_session_t* ObexServer::addOpushSvc(uint8_t chan, const char* name) errout: sdp_data_free(channel); sdp_list_free(proto[0], 0); sdp_list_free(proto[1], 0); sdp_list_free(proto[2], 0); sdp_list_free(apseq, 0); sdp_list_free(aproto, 0); return lsession; } int ObexServer::initObex(void) { int channel = 10; //Channel on which we do listen if (m_obex) return 0; - m_obex = ::OBEX_Init(OBEX_TRANS_BLUETOOTH, obex_event, 0); + m_obex = ::OBEX_Init(transport, obex_event, 0); if (!m_obex) { printf("OBEX initialization error %d\n", errno); return -1; } - ::BtOBEX_ServerRegister(m_obex, NULL, channel); - m_session = addOpushSvc(channel, "OBEX push service"); - if (!m_session) { - printf("OBEX registration error %d\n", errno); - ::OBEX_Cleanup(m_obex); - m_obex = NULL; - return -1; - } + if (transport == OBEX_TRANS_BLUETOOTH) { + ::BtOBEX_ServerRegister(m_obex, NULL, channel); + m_session = addOpushSvc(channel, "OBEX push service"); + if (!m_session) { + printf("OBEX registration error %d\n", errno); + ::OBEX_Cleanup(m_obex); + m_obex = NULL; + return -1; + } + } else if (transport == OBEX_TRANS_IRDA) + ::IrOBEX_ServerRegister(m_obex, "OBEX"); return 0; } bool ObexServer::start(RunMode runmode, Communication comm) { if ( runs ) { return false; // cannot start a process that is already running // or if no executable has been assigned } run_mode = runmode; status = 0; if ( !setupCommunication( comm ) ) qWarning( "Could not setup Communication!" ); diff --git a/core/obex/obexserver.h b/core/obex/obexserver.h index 8567105..28577e2 100644 --- a/core/obex/obexserver.h +++ b/core/obex/obexserver.h @@ -40,37 +40,39 @@ #include <openobex/obex.h> namespace Opie { namespace Core { class OProcess; namespace Internal { class OProcessController; } } }; namespace Opie {namespace Core {class OProcess;}} namespace OpieObex { class ObexServer : public Opie::Core::OProcess { Q_OBJECT + private: + int transport; //The OBEX transport type public: /** * ObexServer constructor */ - ObexServer(); + ObexServer(int trans); /** * */ ~ObexServer(); //Function starts the server process virtual bool start( RunMode runmode = NotifyOnExit, Communication comm = NoCommunication ); //Stop the server process int stop(); protected: //variables obex_t* m_obex; //Obex server handler sdp_session_t* m_session; //SDP session handler; protected: //functions //Funtion initializes obex server return 0 on success and -1 on error int initObex(void); //Function registers an OBEX push service |