summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/btobex.cpp2
-rw-r--r--core/obex/obex.cpp3
-rw-r--r--core/obex/obex.h3
-rw-r--r--core/obex/obexserver.cpp24
-rw-r--r--core/obex/obexserver.h4
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