-rw-r--r-- | noncore/net/opietooth/lib/connection.cpp | 90 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/connection.h | 150 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/lib.pro | 4 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/manager.h | 19 |
4 files changed, 260 insertions, 3 deletions
diff --git a/noncore/net/opietooth/lib/connection.cpp b/noncore/net/opietooth/lib/connection.cpp new file mode 100644 index 0000000..1f9baaf --- a/dev/null +++ b/noncore/net/opietooth/lib/connection.cpp @@ -0,0 +1,90 @@ + +#include "connection.h" + +using namespace OpieTooth; + +Connection::Connection() { + m_direction = Incoming; + m_handle = -1; + m_state = -1; + m_linkMode = -1; +}; + +Connection::Connection( const Connection& con1 ) { + (*this) = con1; +} + + +Connection::Connection( bool in, + const QString& conType, + const QString& mac, + int handle, + int state, + int linkMode ) { + m_direction = in; + m_contype = conType; + m_mac = mac; + m_handle = handle; + m_state = state; + m_linkMode = linkMode; + +} + +void Connection::setDirection( bool incoming ) { + m_direction = incoming; +} + +bool Connection::direction() const { + return m_direction; +} + +void Connection::setConnectionMode( const QString& conType ) { + m_contype = conType; +} + +QString Connection::connectionMode() const { + return m_contype; +} + +void Connection::setMac( const QString& mac ) { + m_mac = mac; +} + +QString Connection::mac() const{ + return m_mac; +} + +void Connection::setHandle( int handle ) { + m_handle = handle; +} + +int Connection::handle() const{ + return m_handle; +} + +void Connection::setState( int state ) { + m_state = state; +} + +int Connection::state()const { + return m_state; +} + +void Connection::setLinkMode( int linkMode ) { + m_linkMode = linkMode; +} + +int Connection::linkMode()const{ + return m_linkMode; +} + +Connection &Connection::operator=( const Connection& con1 ) { + m_direction = con1.m_direction; + m_contype = con1.m_contype; + m_mac = con1.m_mac; + m_handle = con1.m_handle; + m_state = con1.m_state; + m_linkMode = con1.m_linkMode; + + return (*this); +} diff --git a/noncore/net/opietooth/lib/connection.h b/noncore/net/opietooth/lib/connection.h new file mode 100644 index 0000000..37090ce --- a/dev/null +++ b/noncore/net/opietooth/lib/connection.h @@ -0,0 +1,150 @@ + +#ifndef OpieTooth_Connection_H +#define OpieTooth_Connection_H + +#include <qstring.h> +#include <qvaluelist.h> + +namespace OpieTooth { + + enum LinkDirection { Incoming= true, Outgoing = false }; + enum LinkMode { Master =0, Client }; + + + /** + * The Connection class stores + * the output of hcitool con + * in a OO way + */ + + class Connection { + public: + /** + * typedef for a list of + * Connections + */ + typedef QValueList<Connection> ValueList; + + /** + * Copy c'tor. + */ + Connection( const Connection& ); + + /** + * Main c'tor + * Basicly it holds all values + * a blueZ connections can have + * @param in If the connection is either incoming or outgoing + * @param conType Either ACL or SCO for connection type + * @param mac The BD Address( mac ) of the peer + * @param handle the blueZ handle + * @param state the State of the connection + * @param linkMode the linkmode of the connection MASTER or not + * + * < ACL 00:02:C7:09:2B:53 handle 1 state 1 lm MASTER + * + */ + Connection( bool in, + const QString& conType, + const QString& mac, + int handle, + int state, + int linkMode ); + + /** + * C'tor for compability with QValueList + * QValueList needs this c'tor. + */ + Connection(); + + /** + * Set if the connection is incoming or + * outgoing + * @param in Whether or not the connection is ingoing or not. + * for param use either Incoming or Outgoing + * + */ + void setDirection( bool incoming = Incoming ); + + /** + * direction() will return Incoming( true ) + * if the direction is incomoning or Outgoing( false) + * if outgoing + */ + bool direction() const; + + /** + * sets the ConnectionMode + * @param comMode I know that SCO and ACL exists so far + */ + void setConnectionMode( const QString& comMode ); + + /** + * linkMode returns the linkMode + * MASTER for example + */ + QString connectionMode() const; + + /** + * The Bluetooth Address or mac + * is set by this function + * @param mac the BluetoothAddress( mac) + */ + void setMac( const QString& mac); + + /** + * returns the mac + */ + QString mac() const; + + + /** + * Set the handle of the bt connection + */ + void setHandle(int handle ); + + /** + * @return the handle of the connection + */ + int handle() const; + + /** + * sets the state + */ + void setState( int state ); + + /** + * return the state + */ + int state() const; + + /** + * Sets the link mode of the Connection + */ + void setLinkMode( int linkMode = Master ); + + /** + * returns the linkMode + */ + int linkMode()const; + + /** + * copy c'tor + */ + Connection &operator=( const Connection& ); + + private: + class ConnectionPrivate; + ConnectionPrivate *d; + bool m_direction : 1; + QString m_contype; + QString m_mac; + int m_handle; + int m_state; + int m_linkMode; + + }; +}; + + +#endif diff --git a/noncore/net/opietooth/lib/lib.pro b/noncore/net/opietooth/lib/lib.pro index ecf2e6c..dde6c2a 100644 --- a/noncore/net/opietooth/lib/lib.pro +++ b/noncore/net/opietooth/lib/lib.pro @@ -1,8 +1,8 @@ TEMPLATE = lib CONFIG += qte warn_on release -HEADERS = parser.h device.h manager.h remotedevice.h services.h -SOURCES = parser.cc device.cc manager.cc remotedevice.cc services.cc +HEADERS = connection.h parser.h device.h manager.h remotedevice.h services.h +SOURCES = connection.cpp parser.cc device.cc manager.cc remotedevice.cc services.cc TARGET = opietooth INCLUDEPATH += $(OPIEDIR)/include . DESTDIR = $(QTDIR)/lib$(PROJMAK) LIBS += -lopie diff --git a/noncore/net/opietooth/lib/manager.h b/noncore/net/opietooth/lib/manager.h index 415ec72..2589e9b 100644 --- a/noncore/net/opietooth/lib/manager.h +++ b/noncore/net/opietooth/lib/manager.h @@ -13,9 +13,9 @@ class OProcess; namespace OpieTooth { class Device; /** Manager manages a blueZ device (hci0 for example) - * with Manager you can control the things you + * without Manager you can control the things you * could do from command line in a OO and asynchronus * way. */ class Manager : public QObject { @@ -25,27 +25,32 @@ Q_OBJECT * @param device is the device to use. Either a mac or blueZ device name * */ Manager( const QString &device ); + /** c'tor * @param dev The Device to be managed * We don't care of Device so you need to delete it */ Manager( Device* dev ); + /** * c'tor */ Manager(); + ~Manager(); /** Set the manager to control a new device * @param device the new device to control (hci0 ) */ void setDevice( const QString& device ); + /** * Convience functions for setting a new device */ void setDevice( Device *dev ); + /** * Wether or not a device is connected. The function * is asynchron * If device is empty it will take the currently managed @@ -53,8 +58,9 @@ Q_OBJECT * for Remote devices it will ping and see. * @param either mac or hciX */ void isAvailable(const QString& device= QString::null ); + /** * same as above */ void isAvailable(Device *dev ); @@ -74,18 +80,21 @@ Q_OBJECT * to the sdpd daemon * It will start the daemon if necessary */ void addService(const QString &name ); + /** * This will add the services @param names * to the sdpd daemon * It will start the daemon if necessary */ void addServices( const QStringList& names ); + /** * This removes a service from the sdps */ void removeService(const QString &name ); + /** * Removes a list from the sdpd */ void removeServices(const QStringList& ); @@ -94,8 +103,9 @@ Q_OBJECT * search for services on a remote device * */ void searchServices( const QString& remDevice ); + /** * search for services on a remote device */ void searchServices( const RemoteDevice& ); @@ -109,23 +119,30 @@ Q_OBJECT 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, RemoteDevice::ValueList ); + void connections( Connection::ValueList ); private slots: void slotProcessExited(OProcess* ); + void slotSDPExited(OProcess*); void slotSDPOut(OProcess*, char*, int); + void slotHCIExited(OProcess* ); void slotHCIOut(OProcess*, char*, int ); + + void slotConnectionExited(OProcess* ); + void slotConnectionOutput(OProcess*, char*, int ); private: Services::ValueList parseSDPOutput( const QString& ); RemoteDevice::ValueList parseHCIOutput( const QString& ); OProcess *m_hcitool; OProcess *m_sdp; // not only one QString m_device; QMap<QString, QString> m_out; QMap<QString, QString> m_devices; + QString m_hcitoolCon; }; }; #endif |