summaryrefslogtreecommitdiff
path: root/libopie2
authormickeyl <mickeyl>2005-07-11 14:05:50 (UTC)
committer mickeyl <mickeyl>2005-07-11 14:05:50 (UTC)
commitde58c11168d02f5e52624e68529c9e2eac7978f6 (patch) (unidiff)
tree8fdaf84de66d55259344ee1708cf753f5162e2b8 /libopie2
parent4a7503c5e64101a5fadcf8003e66bf447d796f95 (diff)
downloadopie-de58c11168d02f5e52624e68529c9e2eac7978f6.zip
opie-de58c11168d02f5e52624e68529c9e2eac7978f6.tar.gz
opie-de58c11168d02f5e52624e68529c9e2eac7978f6.tar.bz2
don't link to libbluez since this would taint LGPL
Diffstat (limited to 'libopie2') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiebluez/obluetooth.cpp13
-rw-r--r--libopie2/opiebluez/obluetooth.h2
-rw-r--r--libopie2/opiebluez/opiebluez.pro6
3 files changed, 6 insertions, 15 deletions
diff --git a/libopie2/opiebluez/obluetooth.cpp b/libopie2/opiebluez/obluetooth.cpp
index a161f86..fbc4f0a 100644
--- a/libopie2/opiebluez/obluetooth.cpp
+++ b/libopie2/opiebluez/obluetooth.cpp
@@ -1,161 +1,156 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de> 3 Copyright (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6           .>+-= 6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can 7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under 8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software 10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; version 2 of the license. 11 - .   .-<_>     .<> Foundation; version 2 of the license.
12     ._= =}       : 12     ._= =}       :
13    .%`+i>       _;_. 13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that 14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of 16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more 19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details. 20++=   -.     .`     .: details.
21 :     =  ...= . :.=- 21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU 22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with 23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB. 24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30#include "obluetooth.h" 30#include "obluetooth.h"
31 31
32/* OPIE */ 32/* OPIE */
33#include <opie2/odebug.h> 33#include <opie2/odebug.h>
34using namespace Opie::Core; 34using namespace Opie::Core;
35 35
36/* STD */ 36/* STD */
37#include <bluetooth/bluetooth.h> 37#include <bluetooth/bluetooth.h>
38#include <bluetooth/hci.h> 38#include <bluetooth/hci.h>
39#include <bluetooth/hci_lib.h> 39#include <bluetooth/hci_lib.h>
40#include <errno.h> 40#include <errno.h>
41#include <stdlib.h> 41#include <stdlib.h>
42#include <string.h> 42#include <string.h>
43#include <sys/ioctl.h> 43#include <sys/ioctl.h>
44#include <sys/types.h> 44#include <sys/types.h>
45#include <sys/socket.h> 45#include <sys/socket.h>
46 46
47namespace Opie { 47namespace Opie {
48namespace Shower { 48namespace Bluez {
49 49
50/*====================================================================================== 50/*======================================================================================
51 * OBluetooth 51 * OBluetooth
52 *======================================================================================*/ 52 *======================================================================================*/
53 53
54OBluetooth* OBluetooth::_instance = 0; 54OBluetooth* OBluetooth::_instance = 0;
55 55
56OBluetooth::OBluetooth() 56OBluetooth::OBluetooth()
57{ 57{
58 synchronize(); 58 synchronize();
59} 59}
60 60
61OBluetooth* OBluetooth::instance() 61OBluetooth* OBluetooth::instance()
62{ 62{
63 if ( !_instance ) _instance = new OBluetooth(); 63 if ( !_instance ) _instance = new OBluetooth();
64 return _instance; 64 return _instance;
65} 65}
66 66
67OBluetooth::InterfaceIterator OBluetooth::iterator() const 67OBluetooth::InterfaceIterator OBluetooth::iterator() const
68{ 68{
69 return OBluetooth::InterfaceIterator( _interfaces ); 69 return OBluetooth::InterfaceIterator( _interfaces );
70} 70}
71 71
72int OBluetooth::count() const 72int OBluetooth::count() const
73{ 73{
74 return _interfaces.count(); 74 return _interfaces.count();
75} 75}
76 76
77OBluetoothInterface* OBluetooth::interface( const QString& iface ) const 77OBluetoothInterface* OBluetooth::interface( const QString& iface ) const
78{ 78{
79 return _interfaces[iface]; 79 return _interfaces[iface];
80} 80}
81 81
82void OBluetooth::synchronize() 82void OBluetooth::synchronize()
83{ 83{
84 odebug << "OBluetooth::synchronize() - gathering available HCI devices" << oendl; 84 odebug << "OBluetooth::synchronize() - gathering available HCI devices" << oendl;
85 _interfaces.clear(); 85 _interfaces.clear();
86 86
87 _fd = ::socket( AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI ); 87 _fd = ::socket( AF_BLUETOOTH, SOCK_RAW, BTPROTO_HCI );
88 if ( _fd == -1 ) 88 if ( _fd == -1 )
89 { 89 {
90 owarn << "OBluetooth::synchronize() - can't open HCI control socket (" << strerror( errno ) << ")" << oendl; 90 owarn << "OBluetooth::synchronize() - can't open HCI control socket (" << strerror( errno ) << ")" << oendl;
91 return; 91 return;
92 } 92 }
93 93
94 struct hci_dev_list_req *dl; 94 struct hci_dev_list_req *dl;
95 struct hci_dev_req *dr; 95 struct hci_dev_req *dr;
96 struct hci_dev_info di; 96 struct hci_dev_info di;
97 97
98 if (!(dl = (struct hci_dev_list_req*)malloc(HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t)))) 98 if (!(dl = (struct hci_dev_list_req*)malloc(HCI_MAX_DEV * sizeof(struct hci_dev_req) + sizeof(uint16_t))))
99 { 99 {
100 ofatal << "OBluetooth::synchronize() - can't allocate memory for HCI request" << oendl; 100 ofatal << "OBluetooth::synchronize() - can't allocate memory for HCI request" << oendl;
101 return; 101 return;
102 } 102 }
103 103
104 dl->dev_num = HCI_MAX_DEV; 104 dl->dev_num = HCI_MAX_DEV;
105 dr = dl->dev_req; 105 dr = dl->dev_req;
106 106
107 if (ioctl( _fd, HCIGETDEVLIST, (void *) dl) == -1) 107 if (ioctl( _fd, HCIGETDEVLIST, (void *) dl) == -1)
108 { 108 {
109 owarn << "OBluetooth::synchronize() - can't complete HCIGETDEVLIST (" << strerror( errno ) << ")" << oendl; 109 owarn << "OBluetooth::synchronize() - can't complete HCIGETDEVLIST (" << strerror( errno ) << ")" << oendl;
110 return; 110 return;
111 } 111 }
112 112
113 for ( int i = 0; i < dl->dev_num; ++i ) 113 for ( int i = 0; i < dl->dev_num; ++i )
114 { 114 {
115 di.dev_id = ( dr + i )->dev_id; 115 di.dev_id = ( dr + i )->dev_id;
116 if ( ioctl( _fd, HCIGETDEVINFO, (void *) &di) < 0 ) 116 if ( ioctl( _fd, HCIGETDEVINFO, (void *) &di) < 0 )
117 continue; 117 continue;
118 if ( hci_test_bit(HCI_RAW, &di.flags) && !bacmp(&di.bdaddr, BDADDR_ANY))
119 {
120 int dd = hci_open_dev(di.dev_id);
121 hci_read_bd_addr(dd, &di.bdaddr, 1000);
122 hci_close_dev(dd);
123 }
124 odebug << "OBluetooth::synchronize() - found device #" << di.dev_id << oendl; 118 odebug << "OBluetooth::synchronize() - found device #" << di.dev_id << oendl;
125 _interfaces.insert( di.name, new OBluetoothInterface( this, di.name, (void*) &di ) ); 119 _interfaces.insert( di.name, new OBluetoothInterface( this, di.name, (void*) &di ) );
126 } 120 }
127} 121}
128 122
129/*====================================================================================== 123/*======================================================================================
130 * OBluetoothInterface 124 * OBluetoothInterface
131 *======================================================================================*/ 125 *======================================================================================*/
132 126
133class OBluetoothInterface::Private 127class OBluetoothInterface::Private
134{ 128{
135 public: 129 public:
136 Private( struct hci_dev_info* di ) 130 Private( struct hci_dev_info* di )
137 { 131 {
138 ::memcpy( &devinfo, di, sizeof(struct hci_dev_info) ); 132 ::memcpy( &devinfo, di, sizeof(struct hci_dev_info) );
139 } 133 }
140 struct hci_dev_info devinfo; 134 struct hci_dev_info devinfo;
141}; 135};
142 136
143OBluetoothInterface::OBluetoothInterface( QObject* parent, const char* name, void* devinfo ) 137OBluetoothInterface::OBluetoothInterface( QObject* parent, const char* name, void* devinfo )
144{ 138{
145 d = new OBluetoothInterface::Private( (struct hci_dev_info*) devinfo ); 139 d = new OBluetoothInterface::Private( (struct hci_dev_info*) devinfo );
146} 140}
147 141
148OBluetoothInterface::~OBluetoothInterface() 142OBluetoothInterface::~OBluetoothInterface()
149{ 143{
150} 144}
151 145
152QString OBluetoothInterface::macAddress() const 146QString OBluetoothInterface::macAddress() const
153{ 147{
154 char addr[18]; 148 char addr[18];
155 ba2str( &d->devinfo.bdaddr, addr); 149 //ba2str( &d->devinfo.bdaddr, addr);
156 return addr; 150 //return addr;
151 return "BLA";
157} 152}
158 153
159} 154}
160} 155}
161 156
diff --git a/libopie2/opiebluez/obluetooth.h b/libopie2/opiebluez/obluetooth.h
index 30fdd18..10c8c49 100644
--- a/libopie2/opiebluez/obluetooth.h
+++ b/libopie2/opiebluez/obluetooth.h
@@ -1,141 +1,141 @@
1/* 1/*
2 This file is part of the Opie Project 2 This file is part of the Opie Project
3 Copyright (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de> 3 Copyright (C) 2005 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org> 4 =. Copyright (C) The Opie Team <opie-devel@handhelds.org>
5 .=l. 5 .=l.
6           .>+-= 6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can 7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under 8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software 10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; version 2 of the License. 11 - .   .-<_>     .<> Foundation; version 2 of the License.
12     ._= =}       : 12     ._= =}       :
13    .%`+i>       _;_. 13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that 14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of 16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more 19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details. 20++=   -.     .`     .: details.
21 :     =  ...= . :.=- 21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU 22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with 23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB. 24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation, 25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330, 26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA. 27 Boston, MA 02111-1307, USA.
28*/ 28*/
29 29
30#ifndef OBLUETOOTH_H 30#ifndef OBLUETOOTH_H
31#define OBLUETOOTH_H 31#define OBLUETOOTH_H
32 32
33#include <qobject.h> 33#include <qobject.h>
34#include <qdict.h> 34#include <qdict.h>
35 35
36namespace Opie { 36namespace Opie {
37namespace Shower { 37namespace Bluez {
38 38
39class OBluetoothInterface; 39class OBluetoothInterface;
40 40
41/** 41/**
42 * @brief A container class for all bluetooth interfaces 42 * @brief A container class for all bluetooth interfaces
43 * 43 *
44 * This class provides access to all available bluetooth interfaces of your computer. 44 * This class provides access to all available bluetooth interfaces of your computer.
45 * 45 *
46 * @author Michael 'Mickey' Lauer <mickey@vanille.de> 46 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
47 */ 47 */
48class OBluetooth : public QObject 48class OBluetooth : public QObject
49{ 49{
50 Q_OBJECT 50 Q_OBJECT
51 51
52 public: 52 public:
53 typedef QDict<OBluetoothInterface> InterfaceMap; 53 typedef QDict<OBluetoothInterface> InterfaceMap;
54 typedef QDictIterator<OBluetoothInterface> InterfaceIterator; 54 typedef QDictIterator<OBluetoothInterface> InterfaceIterator;
55 55
56 public: 56 public:
57 /** 57 /**
58 * @returns the number of available interfaces 58 * @returns the number of available interfaces
59 */ 59 */
60 int count() const; 60 int count() const;
61 /** 61 /**
62 * @returns a pointer to the (one and only) @ref OBluetooth instance. 62 * @returns a pointer to the (one and only) @ref OBluetooth instance.
63 */ 63 */
64 static OBluetooth* instance(); 64 static OBluetooth* instance();
65 /** 65 /**
66 * @returns an iterator usable for iterating through all network interfaces. 66 * @returns an iterator usable for iterating through all network interfaces.
67 */ 67 */
68 InterfaceIterator iterator() const; 68 InterfaceIterator iterator() const;
69 /** 69 /**
70 * @returns true, if the @a interface is present. 70 * @returns true, if the @a interface is present.
71 */ 71 */
72 bool isPresent( const char* interface ) const; 72 bool isPresent( const char* interface ) const;
73 /** 73 /**
74 * @returns true, if the @a interface supports the wireless extension protocol. 74 * @returns true, if the @a interface supports the wireless extension protocol.
75 */ 75 */
76 bool isWirelessInterface( const char* interface ) const; 76 bool isWirelessInterface( const char* interface ) const;
77 /** 77 /**
78 * @returns a pointer to the @ref OBluetoothInterface object for the specified @a interface or 0, if not found. 78 * @returns a pointer to the @ref OBluetoothInterface object for the specified @a interface or 0, if not found.
79 * @see OBluetoothInterface 79 * @see OBluetoothInterface
80 */ 80 */
81 OBluetoothInterface* interface( const QString& interface ) const; 81 OBluetoothInterface* interface( const QString& interface ) const;
82 /** 82 /**
83 * @internal Rebuild the internal interface database 83 * @internal Rebuild the internal interface database
84 * @note Sometimes it might be useful to call this from client code, 84 * @note Sometimes it might be useful to call this from client code,
85 * e.g. after issuing a cardctl insert 85 * e.g. after issuing a cardctl insert
86 */ 86 */
87 void synchronize(); 87 void synchronize();
88 88
89 protected: 89 protected:
90 OBluetooth(); 90 OBluetooth();
91 91
92 private: 92 private:
93 static OBluetooth* _instance; 93 static OBluetooth* _instance;
94 InterfaceMap _interfaces; 94 InterfaceMap _interfaces;
95 class OBluetoothPrivate; 95 class OBluetoothPrivate;
96 OBluetoothPrivate *d; 96 OBluetoothPrivate *d;
97 int _fd; 97 int _fd;
98}; 98};
99 99
100/*====================================================================================== 100/*======================================================================================
101 * OBluetoothInterface 101 * OBluetoothInterface
102 *======================================================================================*/ 102 *======================================================================================*/
103 103
104/** 104/**
105 * @brief An bluetooth interface wrapper. 105 * @brief An bluetooth interface wrapper.
106 * 106 *
107 * This class provides a wrapper for an infrared interface. All the cumbersome details of 107 * This class provides a wrapper for an infrared interface. All the cumbersome details of
108 * Linux ioctls are hidden under a convenient high-level interface. 108 * Linux ioctls are hidden under a convenient high-level interface.
109 * @warning Most of the setting methods contained in this class require the appropriate 109 * @warning Most of the setting methods contained in this class require the appropriate
110 * process permissions to work. 110 * process permissions to work.
111 * 111 *
112 * @author Michael 'Mickey' Lauer <mickey@vanille.de> 112 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
113 */ 113 */
114class OBluetoothInterface : public QObject 114class OBluetoothInterface : public QObject
115{ 115{
116 public: 116 public:
117 /** 117 /**
118 * Constructor. Normally you don't create @ref OBluetoothInterface objects yourself, 118 * Constructor. Normally you don't create @ref OBluetoothInterface objects yourself,
119 * but access them via @ref OBluetooth::interface(). 119 * but access them via @ref OBluetooth::interface().
120 */ 120 */
121 OBluetoothInterface( QObject* parent, const char* name, void* devinfo ); 121 OBluetoothInterface( QObject* parent, const char* name, void* devinfo );
122 /** 122 /**
123 * Destructor. 123 * Destructor.
124 */ 124 */
125 virtual ~OBluetoothInterface(); 125 virtual ~OBluetoothInterface();
126 /** 126 /**
127 * @return the MAC address of the interfaces 127 * @return the MAC address of the interfaces
128 */ 128 */
129 QString macAddress() const; 129 QString macAddress() const;
130 130
131 private: 131 private:
132 class Private; 132 class Private;
133 Private *d; 133 Private *d;
134}; 134};
135 135
136 136
137 137
138} 138}
139} 139}
140#endif 140#endif
141 141
diff --git a/libopie2/opiebluez/opiebluez.pro b/libopie2/opiebluez/opiebluez.pro
index 6a37dee..8a52928 100644
--- a/libopie2/opiebluez/opiebluez.pro
+++ b/libopie2/opiebluez/opiebluez.pro
@@ -1,27 +1,23 @@
1TEMPLATE = lib 1TEMPLATE = lib
2CONFIG += qt warn_on 2CONFIG += qt warn_on
3DESTDIR = $(OPIEDIR)/lib 3DESTDIR = $(OPIEDIR)/lib
4HEADERS = obluetooth.h \ 4HEADERS = obluetooth.h \
5SOURCES = obluetooth.cpp \ 5SOURCES = obluetooth.cpp \
6INTERFACES = 6INTERFACES =
7TARGET = opiebluez2 7TARGET = opiebluez2
8VERSION = 0.0.0 8VERSION = 0.0.0
9INCLUDEPATH += $(OPIEDIR)/include 9INCLUDEPATH += $(OPIEDIR)/include
10DEPENDPATH += $(OPIEDIR)/include 10DEPENDPATH += $(OPIEDIR)/include
11LIBS += -lopiecore2 -lbluetooth 11LIBS += -lopiecore2
12 12
13!contains( platform, x11 ) { 13!contains( platform, x11 ) {
14 include( $(OPIEDIR)/include.pro ) 14 include( $(OPIEDIR)/include.pro )
15} 15}
16 16
17contains( platform, x11 ) { 17contains( platform, x11 ) {
18 LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib 18 LIBS += -L$(OPIEDIR)/lib -Wl,-rpath,$(OPIEDIR)/lib
19} 19}
20 20
21!isEmpty( LIBBLUEZ_INC_DIR ) { 21!isEmpty( LIBBLUEZ_INC_DIR ) {
22 INCLUDEPATH = $$LIBBLUEZ_INC_DIR $$INCLUDEPATH 22 INCLUDEPATH = $$LIBBLUEZ_INC_DIR $$INCLUDEPATH
23} 23}
24!isEmpty( LIBBLUEZ_LIB_DIR ) {
25 LIBS = -L$$LIBBLUEZ_LIB_DIR $$LIBS
26}
27