GetAddress and GetFriendlyName does not need a dedicated request in the server side

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28783 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Ruiz Dorantes 2008-12-08 22:45:25 +00:00
parent 4f8e7ecc5a
commit e41b54f56c
1 changed files with 29 additions and 18 deletions

View File

@ -180,29 +180,32 @@ bdaddr_t
LocalDevice::GetBluetoothAddress() LocalDevice::GetBluetoothAddress()
{ {
if (fMessenger == NULL) if (fMessenger == NULL)
return bdaddrUtils::NullAddress(); return bdaddrUtils::LocalAddress();
size_t size;
void* command = buildReadBdAddr(&size);
if (command == NULL)
return bdaddrUtils::LocalAddress();
const bdaddr_t* bdaddr; const bdaddr_t* bdaddr;
BMessage request(BT_MSG_GET_ADDRESS); BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST);
BMessage reply; BMessage reply;
ssize_t size; ssize_t ssize;
/* ADD ID */ /* ADD ID */
request.AddInt32("hci_id", hid); request.AddInt32("hci_id", hid);
request.AddData("raw command", B_ANY_TYPE, command, size);
request.AddInt16("eventExpected", HCI_EVENT_CMD_COMPLETE);
request.AddInt16("opcodeExpected", PACK_OPCODE(OGF_INFORMATIONAL_PARAM, OCF_READ_BD_ADDR));
if (fMessenger->SendMessage(&request, &reply) == B_OK) { if (fMessenger->SendMessage(&request, &reply) == B_OK) {
if (reply.FindData("bdaddr", B_ANY_TYPE, 0, (const void**)&bdaddr, &ssize) == B_OK )
if (reply.FindData("bdaddr", B_ANY_TYPE, 0, (const void**)&bdaddr, &size) == B_OK ){
return *bdaddr; return *bdaddr;
} else {
return bdaddrUtils::NullAddress();
}
} }
return bdaddrUtils::NullAddress(); return bdaddrUtils::LocalAddress();
} }
@ -210,22 +213,30 @@ BString
LocalDevice::GetFriendlyName() LocalDevice::GetFriendlyName()
{ {
if (fMessenger == NULL) if (fMessenger == NULL)
return NULL; return BString("Unknown|Messenger");
size_t size;
void* command = buildReadLocalName(&size);
if (command == NULL)
return BString("Unknown|NoMemory");
BString friendlyname; BString friendlyname;
BMessage request(BT_MSG_GET_FRIENDLY_NAME); BMessage request(BT_MSG_HANDLE_SIMPLE_REQUEST);
BMessage reply; BMessage reply;
/* ADD ID */
request.AddInt32("hci_id", hid); request.AddInt32("hci_id", hid);
request.AddData("raw command", B_ANY_TYPE, command, size);
request.AddInt16("eventExpected", HCI_EVENT_CMD_COMPLETE);
request.AddInt16("opcodeExpected", PACK_OPCODE(OGF_CONTROL_BASEBAND, OCF_READ_LOCAL_NAME));
if (fMessenger->SendMessage(&request, &reply) == B_OK && if (fMessenger->SendMessage(&request, &reply) == B_OK &&
reply.FindString("friendlyname", &friendlyname) == B_OK){ reply.FindString("friendlyname", &friendlyname) == B_OK){
return friendlyname; return friendlyname;
} }
return BString("Unknown"); return BString("Unknown|ServerFailed");
} }