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
This commit is contained in:
Oliver Ruiz Dorantes
2008-02-25 20:40:44 +00:00
parent 3b260549b4
commit 7bdc499516
+21 -9
View File
@@ -14,6 +14,9 @@
#include "bluetoothserver_p.h" #include "bluetoothserver_p.h"
/* TODO: remove me */
#include <stdio.h>
namespace Bluetooth { namespace Bluetooth {
BMessenger* LocalDevice::sfMessenger = NULL; BMessenger* LocalDevice::sfMessenger = NULL;
@@ -22,7 +25,7 @@ status_t
LocalDevice::SRetrieveBluetoothMessenger(void) LocalDevice::SRetrieveBluetoothMessenger(void)
{ {
if (sfMessenger == NULL || !sfMessenger->IsValid() ) if (sfMessenger == NULL || !sfMessenger->IsValid() )
sfMessenger = new BMessenger(); sfMessenger = new BMessenger(BLUETOOTH_SIGNATURE);
return (sfMessenger != NULL)?B_OK:B_ERROR; return (sfMessenger != NULL)?B_OK:B_ERROR;
} }
@@ -30,7 +33,7 @@ LocalDevice::SRetrieveBluetoothMessenger(void)
status_t LocalDevice::RetrieveBluetoothMessenger(void) status_t LocalDevice::RetrieveBluetoothMessenger(void)
{ {
if (fMessenger == NULL || !fMessenger->IsValid()) if (fMessenger == NULL || !fMessenger->IsValid())
fMessenger = new BMessenger(); fMessenger = new BMessenger(BLUETOOTH_SIGNATURE);
return (fMessenger != NULL)?B_OK:B_ERROR; return (fMessenger != NULL)?B_OK:B_ERROR;
} }
@@ -44,8 +47,9 @@ LocalDevice::RequestLocalDeviceID(BMessage* request)
if (sfMessenger->SendMessage(request, &reply) == B_OK && if (sfMessenger->SendMessage(request, &reply) == B_OK &&
reply.FindInt32("hci_id", &hid) == B_OK ){ reply.FindInt32("hci_id", &hid) == B_OK ){
if (hid > 0) if (hid >= 0) {
return new LocalDevice(hid); return new LocalDevice(hid);
}
} }
return NULL; return NULL;
@@ -192,19 +196,27 @@ LocalDevice::GetBluetoothAddress()
if (RetrieveBluetoothMessenger() != B_OK) if (RetrieveBluetoothMessenger() != B_OK)
return bdaddrUtils::NullAddress(); return bdaddrUtils::NullAddress();
bdaddr_t bdaddr; const bdaddr_t* bdaddr;
BMessage request(BT_MSG_GET_ADDRESS); BMessage request(BT_MSG_GET_ADDRESS);
BMessage reply; BMessage reply;
ssize_t size; ssize_t size;
/* ADD ID */ /* ADD ID */
request.AddInt32("hci_id", hid); request.AddInt32("hci_id", hid);
if (fMessenger->SendMessage(&request, &reply) == B_OK && if (fMessenger->SendMessage(&request, &reply) == B_OK) {
reply.FindData("bdaddr", B_ANY_TYPE, 0, (const void**)&bdaddr, &size) == B_OK ){
return bdaddr;
}
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(); return bdaddrUtils::NullAddress();
} }