summaryrefslogtreecommitdiff
path: root/libopie2/opiebluez/obluetooth.cpp
Unidiff
Diffstat (limited to 'libopie2/opiebluez/obluetooth.cpp') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiebluez/obluetooth.cpp13
1 files changed, 4 insertions, 9 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
@@ -24,49 +24,49 @@
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
@@ -94,68 +94,63 @@ void OBluetooth::synchronize()
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