From 7bdc4995166fe93866a02c462bba048763ec15b3 Mon Sep 17 00:00:00 2001 From: Oliver Ruiz Dorantes Date: Mon, 25 Feb 2008 20:40:44 +0000 Subject: [PATCH] Collect the messenger from the correct signature. Allow 0 as HCI ID. Drop correctly the BDADDR to userland. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24128 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/bluetooth/LocalDevice.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/kits/bluetooth/LocalDevice.cpp b/src/kits/bluetooth/LocalDevice.cpp index 8b8e13abe4..44053ab6b0 100644 --- a/src/kits/bluetooth/LocalDevice.cpp +++ b/src/kits/bluetooth/LocalDevice.cpp @@ -14,6 +14,9 @@ #include "bluetoothserver_p.h" +/* TODO: remove me */ +#include + namespace Bluetooth { BMessenger* LocalDevice::sfMessenger = NULL; @@ -22,7 +25,7 @@ status_t LocalDevice::SRetrieveBluetoothMessenger(void) { if (sfMessenger == NULL || !sfMessenger->IsValid() ) - sfMessenger = new BMessenger(); + sfMessenger = new BMessenger(BLUETOOTH_SIGNATURE); return (sfMessenger != NULL)?B_OK:B_ERROR; } @@ -30,7 +33,7 @@ LocalDevice::SRetrieveBluetoothMessenger(void) status_t LocalDevice::RetrieveBluetoothMessenger(void) { if (fMessenger == NULL || !fMessenger->IsValid()) - fMessenger = new BMessenger(); + fMessenger = new BMessenger(BLUETOOTH_SIGNATURE); return (fMessenger != NULL)?B_OK:B_ERROR; } @@ -44,8 +47,9 @@ LocalDevice::RequestLocalDeviceID(BMessage* request) if (sfMessenger->SendMessage(request, &reply) == B_OK && reply.FindInt32("hci_id", &hid) == B_OK ){ - if (hid > 0) + if (hid >= 0) { return new LocalDevice(hid); + } } return NULL; @@ -192,19 +196,27 @@ LocalDevice::GetBluetoothAddress() if (RetrieveBluetoothMessenger() != B_OK) return bdaddrUtils::NullAddress(); - bdaddr_t bdaddr; + const bdaddr_t* bdaddr; BMessage request(BT_MSG_GET_ADDRESS); BMessage reply; ssize_t size; /* ADD ID */ request.AddInt32("hci_id", hid); - if (fMessenger->SendMessage(&request, &reply) == B_OK && - reply.FindData("bdaddr", B_ANY_TYPE, 0, (const void**)&bdaddr, &size) == B_OK ){ - - return bdaddr; - } + if (fMessenger->SendMessage(&request, &reply) == B_OK) { + if (reply.FindData("bdaddr", B_ANY_TYPE, 0, (const void**)&bdaddr, &size) == B_OK ){ + + printf("%s: %s size=%ld\n", __FUNCTION__, bdaddrUtils::ToString(*bdaddr), size); + + return *bdaddr; + + } else { + return bdaddrUtils::NullAddress(); + } + + } + return bdaddrUtils::NullAddress(); }