Diffstat (limited to 'libopie2/opiebluez/obluetooth.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opiebluez/obluetooth.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libopie2/opiebluez/obluetooth.cpp b/libopie2/opiebluez/obluetooth.cpp index c99a822..e0ba0ec 100644 --- a/libopie2/opiebluez/obluetooth.cpp +++ b/libopie2/opiebluez/obluetooth.cpp @@ -16,51 +16,53 @@ : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. .` .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = 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. */ #include "obluetooth.h" /* OPIE */ #include <opie2/odebug.h> using namespace Opie::Core; /* STD */ #include <bluetooth/bluetooth.h> #include <bluetooth/hci.h> #include <bluetooth/hci_lib.h> +#include <assert.h> #include <errno.h> #include <stdlib.h> #include <string.h> +#include <unistd.h> #include <sys/ioctl.h> #include <sys/types.h> #include <sys/socket.h> namespace Opie { namespace Bluez { /*====================================================================================== * OBluetooth *======================================================================================*/ OBluetooth* OBluetooth::_instance = 0; OBluetooth::OBluetooth() { synchronize(); } OBluetooth* OBluetooth::instance() { if ( !_instance ) _instance = new OBluetooth(); return _instance; } @@ -168,27 +170,82 @@ QString OBluetoothInterface::macAddress() const d->devinfo.bdaddr.b[0] ); } bool OBluetoothInterface::setUp( bool b ) { int cmd = b ? HCIDEVUP : HCIDEVDOWN; int result = ::ioctl( d->ctlfd, cmd, d->devinfo.dev_id ); if ( result == -1 && errno != EALREADY ) { owarn << "OBluetoothInterface::setUp( " << b << " ) - couldn't change interface state (" << strerror( errno ) << ")" << oendl; return false; } else { d->reloadInfo(); return true; } } bool OBluetoothInterface::isUp() const { return hci_test_bit( HCI_UP, &d->devinfo.flags ); } +OBluetoothInterface::DeviceIterator OBluetoothInterface::neighbourhood() +{ + _devices.clear(); + struct hci_inquiry_req* ir; + int nrsp = 255; + + char* mybuffer = static_cast<char*>( malloc( sizeof( *ir ) + ( sizeof( inquiry_info ) * (nrsp) ) ) ); + assert( mybuffer ); + + ir = (struct hci_inquiry_req*) mybuffer; + memset( ir, 0, sizeof( *ir ) + ( sizeof( inquiry_info ) * (nrsp) ) ); + + ir->dev_id = d->devinfo.dev_id; + ir->num_rsp = nrsp; + ir->length = 8; + ir->flags = 0; + ir->lap[0] = 0x33; + ir->lap[1] = 0x8b; + ir->lap[2] = 0x9e; + + int result = ::ioctl( d->ctlfd, HCIINQUIRY, mybuffer ); + if ( result == -1 ) + { + owarn << "OBluetoothInterface::neighbourhood() - can't issue HCIINQUIRY (" << strerror( errno ) << ")" << oendl; + return DeviceIterator( _devices ); + } + + for( int i = 0; i < ir->num_rsp; ++i ) + { + odebug << "found a device" << oendl; + } + + return DeviceIterator( _devices ); } + + +/*====================================================================================== + * OBluetoothDevice + *======================================================================================*/ + +OBluetoothDevice::OBluetoothDevice( QObject* parent, const char* name ) + :QObject( parent, name ) +{ + odebug << "OBluetoothDevice::OBluetoothDevice() - '" << name << "'" << oendl; +} + +OBluetoothDevice::~OBluetoothDevice() +{ + odebug << "OBluetoothDevice::~OBluetoothDevice()" << oendl; } +QString OBluetoothDevice::macAddress() const +{ + return "N/A"; +} + +} +} |