author | zecke <zecke> | 2002-06-15 20:06:04 (UTC) |
---|---|---|
committer | zecke <zecke> | 2002-06-15 20:06:04 (UTC) |
commit | b15f8a613d83a2f3957fef515e20981f636b908b (patch) (side-by-side diff) | |
tree | 6d2e6743ceb4c3cb299944efc4b2925e5f40412d | |
parent | ef75752efaef84e4b7350f9768f3cb3c4fd744af (diff) | |
download | opie-b15f8a613d83a2f3957fef515e20981f636b908b.zip opie-b15f8a613d83a2f3957fef515e20981f636b908b.tar.gz opie-b15f8a613d83a2f3957fef515e20981f636b908b.tar.bz2 |
isCOnnected, add and remove Service + first bits of service browsing done
-rw-r--r-- | noncore/net/opietooth/lib/device.cc | 30 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/device.h | 12 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/lib.pro | 5 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.cc | 99 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.h | 29 |
5 files changed, 127 insertions, 48 deletions
diff --git a/noncore/net/opietooth/lib/device.cc b/noncore/net/opietooth/lib/device.cc index e3d7f3b..5234996 100644 --- a/noncore/net/opietooth/lib/device.cc +++ b/noncore/net/opietooth/lib/device.cc @@ -2,5 +2,5 @@ #include <signal.h> -#include "kprocess.h" +#include <opie/oprocess.h> #include "device.h" @@ -41,15 +41,15 @@ void Device::attach(){ m_output.resize(0); qWarning("new process to create" ); - m_process = new KProcess(); + m_process = new OProcess(); *m_process << "hciattach"; *m_process << "-p"; *m_process << m_device << m_mode; - connect(m_process, SIGNAL( processExited(KProcess*) ), - this, SLOT( slotExited(KProcess* ) ) ); - connect(m_process, SIGNAL( receivedStdout(KProcess*, char*, int) ), - this, SLOT(slotStdOut(KProcess*,char*,int ) ) ); - connect(m_process, SIGNAL(receivedStderr(KProcess*, char*, int ) ), - this, SLOT(slotStdErr(KProcess*,char*,int) ) ); - if(!m_process->start(KProcess::NotifyOnExit, KProcess::AllOutput ) ){ + connect(m_process, SIGNAL( processExited(OProcess*) ), + this, SLOT( slotExited(OProcess* ) ) ); + connect(m_process, SIGNAL( receivedStdout(OProcess*, char*, int) ), + this, SLOT(slotStdOut(OProcess*,char*,int ) ) ); + connect(m_process, SIGNAL(receivedStderr(OProcess*, char*, int ) ), + this, SLOT(slotStdErr(OProcess*,char*,int) ) ); + if(!m_process->start(OProcess::NotifyOnExit, OProcess::AllOutput ) ){ qWarning("Could not start" ); delete m_process; @@ -75,5 +75,5 @@ QString Device::devName()const { return QString::fromLatin1("hci0"); }; -void Device::slotExited( KProcess* proc) +void Device::slotExited( OProcess* proc) { qWarning("prcess exited" ); @@ -89,9 +89,9 @@ void Device::slotExited( KProcess* proc) // and call hciconfig hci0 up // FIXME hardcoded to hci0 now :( - m_hci = new KProcess( ); + m_hci = new OProcess( ); *m_hci << "hciconfig"; *m_hci << "hci0 up"; - connect(m_hci, SIGNAL( processExited(KProcess*) ), - this, SLOT( slotExited(KProcess* ) ) ); + connect(m_hci, SIGNAL( processExited(OProcess*) ), + this, SLOT( slotExited(OProcess* ) ) ); if(!m_hci->start() ){ qWarning("could not start" ); @@ -126,5 +126,5 @@ void Device::slotExited( KProcess* proc) } } -void Device::slotStdOut(KProcess* proc, char* chars, int len) +void Device::slotStdOut(OProcess* proc, char* chars, int len) { qWarning("std out" ); @@ -137,5 +137,5 @@ void Device::slotStdOut(KProcess* proc, char* chars, int len) } } -void Device::slotStdErr(KProcess*, char*, int ) +void Device::slotStdErr(OProcess*, char*, int ) { qWarning("std err" ); diff --git a/noncore/net/opietooth/lib/device.h b/noncore/net/opietooth/lib/device.h index 8498b14..c0e2658 100644 --- a/noncore/net/opietooth/lib/device.h +++ b/noncore/net/opietooth/lib/device.h @@ -9,5 +9,5 @@ #include <sys/types.h> -class KProcess; +class OProcess; namespace OpieTooth { /** @@ -66,7 +66,7 @@ namespace OpieTooth { void device(const QString& device, bool up ); private slots: - virtual void slotExited( KProcess* ); - virtual void slotStdOut(KProcess*, char*, int ); - virtual void slotStdErr(KProcess*, char*, int ); + virtual void slotExited( OProcess* ); + virtual void slotStdOut(OProcess*, char*, int ); + virtual void slotStdErr(OProcess*, char*, int ); private: class Private; @@ -74,6 +74,6 @@ namespace OpieTooth { QString m_device; bool m_attached:1; - KProcess* m_hci; - KProcess* m_process; + OProcess* m_hci; + OProcess* m_process; QString m_devId; QString m_mode; diff --git a/noncore/net/opietooth/lib/lib.pro b/noncore/net/opietooth/lib/lib.pro index a70c7ab..f2cde06 100644 --- a/noncore/net/opietooth/lib/lib.pro +++ b/noncore/net/opietooth/lib/lib.pro @@ -1,8 +1,9 @@ TEMPLATE = lib CONFIG += qte warn_on release -HEADERS = kprocctrl.h kprocess.h device.h manager.h remotedevice.h services.h -SOURCES = kprocctrl.cpp kprocess.cpp device.cc manager.cc remotedevice.cc services.cc +HEADERS = device.h manager.h remotedevice.h services.h +SOURCES = device.cc manager.cc remotedevice.cc services.cc TARGET = opietooth INCLUDEPATH += $(OPIEDIR)/include DESTDIR = $(QTDIR)/lib$(PROJMAK) +LIBS = -lopie #VERSION = 0.0.0 diff --git a/noncore/net/opietooth/lib/manager.cc b/noncore/net/opietooth/lib/manager.cc index 882af81..eeeab19 100644 --- a/noncore/net/opietooth/lib/manager.cc +++ b/noncore/net/opietooth/lib/manager.cc @@ -1,2 +1,3 @@ +#include <opie/oprocess.h> #include "manager.h" @@ -5,24 +6,29 @@ using namespace OpieTooth; -Manager::Manager( const QString& ) +Manager::Manager( const QString& dev ) : QObject() { - + m_device = dev; + m_hcitool = 0; + m_sdp = 0; } Manager::Manager( Device* dev ) : QObject() { - + m_hcitool = 0; + m_sdp = 0; } Manager::Manager() : QObject() { - + m_hcitool = 0; + m_sdp = 0; } Manager::~Manager(){ - + delete m_hcitool; + delete m_sdp; } void Manager::setDevice( const QString& dev ){ - + m_device = dev; } void Manager::setDevice( Device* dev ){ @@ -30,4 +36,13 @@ void Manager::setDevice( Device* dev ){ } void Manager::isConnected( const QString& device ){ + OProcess* l2ping = new OProcess(); + l2ping->setName( device.latin1() ); + *l2ping << "l2ping" << "-c1" << device; + connect(l2ping, SIGNAL(processExited(OProcess* ) ), + this, SLOT(slotProcessExited(OProcess*) ) ); + if (!l2ping->start() ) { + emit connected( device, false ); + delete l2ping; + } } @@ -45,25 +60,75 @@ void Manager::searchDevices(Device* d ){ } void Manager::addService(const QString& name ){ - -} -void Manager::addServices(const QStringList& ){ - + OProcess proc; + proc << "sdptool" << "add" << name; + bool bo = true; + if (!proc.start(OProcess::DontCare ) ) + bo = false; + emit addedService( name, bo ); +} +void Manager::addServices(const QStringList& list){ + QStringList::ConstIterator it; + for (it = list.begin(); it != list.end(); ++it ) + addService( (*it) ); } void Manager::removeService( const QString& name ){ - -} -void Manager::removeServices( const QStringList& ){ - + OProcess prc; + prc << "sdptool" << "del" << name; + bool bo = true; + if (!prc.start(OProcess::DontCare ) ) + bo = false; + emit removedService( name, bo ); +} +void Manager::removeServices( const QStringList& list){ + QStringList::ConstIterator it; + for (it = list.begin(); it != list.end(); ++it ) + removeService( (*it) ); } void Manager::searchServices( const QString& remDevice ){ + OProcess *m_sdp =new OProcess(); + *m_sdp << "sdptool" << "browse" << remDevice; + m_sdp->setName( remDevice.latin1() ); + connect(m_sdp, SIGNAL(processExited(OProcess*) ), + this, SLOT(slotSDPExited(OProcess* ) ) ); + connect(m_sdp, SIGNAL(receivedStdout(OProcess*, char*, int ) ), + this, SLOT(slotSDPOut(OProcess*, char*, int) ) ); + if (!m_sdp->start() ) { + delete m_sdp; + Services::ValueList list; + emit foundServices( remDevice, list ); + } +} +void Manager::searchServices( const RemoteDevices& dev){ + searchServices( dev.mac() ); +} +QString Manager::toDevice( const QString& mac ){ } -void Manager::searchServices( const RemoteDevices& ){ +QString Manager::toMac( const QString &device ){ } -QString Manager::toDevice( const QString& mac ){ +void Manager::slotProcessExited(OProcess* proc ) { + bool conn= false; + if (proc->normalExit() && proc->exitStatus() == 0 ) + conn = true; + QString name = QString::fromLatin1(proc->name() ); + emit connected( name, conn ); + delete proc; } -QString Manager::toMac( const QString &device ){ +void Manager::slotSDPOut(OProcess* proc, char* ch, int len) +{ + QCString str(ch, len+1 ); + QMap<QString, QString>::Iterator it; + it = m_out.find(proc->name() ); + if ( it != m_out.end() ) { + QString string = it.data(); + string.append( str ); + m_out.replace( proc->name(), string ); + } } +void Manager::slotSDPExited( OProcess* proc) +{ + delete proc; +} diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h index 6c5e27f..03375c5 100644 --- a/noncore/net/opietooth/lib/manager.h +++ b/noncore/net/opietooth/lib/manager.h @@ -5,4 +5,5 @@ #include <qobject.h> #include <qstring.h> +#include <qmap.h> #include <qvaluelist.h> @@ -10,4 +11,5 @@ #include "services.h" +class OProcess; namespace OpieTooth { class Device; @@ -15,5 +17,5 @@ namespace OpieTooth { * with Manager you can control the things you * could do from command line in a OO and asynchronus - * way. + * way. */ class Manager : public QObject { @@ -28,5 +30,5 @@ Q_OBJECT * @param dev The Device to be managed * We don't care of Device so you need to delete it - */ + */ Manager( Device* dev ); /** @@ -49,5 +51,6 @@ Q_OBJECT * If device is empty it will take the currently managed * device and see if it's up - * for Remote devices it will ping and see + * for Remote devices it will ping and see. + * @param either mac or hciX */ void isConnected(const QString& device= QString::null ); @@ -57,6 +60,6 @@ Q_OBJECT void isConnected(Device *dev ); - /** this search for devices reachable from the - * currently managed device + /** this searchs for devices reachable from the + * currently managed device * or from device if @param device is not empty */ @@ -90,5 +93,5 @@ Q_OBJECT /** * search for services on a remote device - * + * */ void searchServices( const QString& remDevice ); @@ -104,8 +107,18 @@ Q_OBJECT // the first device is the device which you access void connected( const QString& device, bool connected ); - void addedService( const QString& device, const QString& service, bool added ); - void removedService( const QString& device, const QString& service, bool removed ); + void addedService( const QString& service, bool added ); + void removedService( const QString& service, bool removed ); void foundServices( const QString& device, Services::ValueList ); void foundDevices( const QString& device, RemoteDevices::ValueList ); + void foundNothing( const QString& device ); +private slots: + void slotProcessExited(OProcess* ); + void slotSDPExited(OProcess*); + void slotSDPOut(OProcess*, char*, int); + private: + OProcess *m_hcitool; + OProcess *m_sdp; // not only one + QString m_device; + QMap<QString, QString> m_out; }; }; |