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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user