From 18dbcd22a0435edeb9d9a115f807149dcdd6dd36 Mon Sep 17 00:00:00 2001 From: Oliver Ruiz Dorantes Date: Tue, 1 Jul 2008 19:15:15 +0000 Subject: [PATCH] Handle the command status sent before the arrival of a remote name request. Avoid unhandled event in the bluetooth_server by Mika Lindqvist git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26196 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/bluetooth/RemoteDevice.cpp | 9 ++++++--- src/servers/bluetooth/LocalDeviceImpl.cpp | 5 +++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/kits/bluetooth/RemoteDevice.cpp b/src/kits/bluetooth/RemoteDevice.cpp index 08f9063841..2349853ac2 100644 --- a/src/kits/bluetooth/RemoteDevice.cpp +++ b/src/kits/bluetooth/RemoteDevice.cpp @@ -64,15 +64,18 @@ RemoteDevice::GetFriendlyName(bool alwaysAsk) remoteNameCommand = buildRemoteNameRequest(fBdaddr, fPageRepetitionMode, fClockOffset, &size); // Fill correctily request.AddData("raw command", B_ANY_TYPE, remoteNameCommand, size); + + request.AddInt16("eventExpected", HCI_EVENT_CMD_STATUS); + request.AddInt16("opcodeExpected", PACK_OPCODE(OGF_LINK_CONTROL, OCF_REMOTE_NAME_REQUEST)); + + request.AddInt16("eventExpected", HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE); - request.AddInt16("eventExpected", HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE); - //request.AddInt16("opcodeExpected", PACK_OPCODE(OGF_LINK_CONTROL, OCF_REMOTE_NAME_REQUEST)); if (btsm->SendMessage(&request, &reply) == B_OK) { BString name; int8 status; - + if (reply.FindInt8("status", &status) == B_OK && reply.FindString("friendlyname", &name) == B_OK ) { return name; diff --git a/src/servers/bluetooth/LocalDeviceImpl.cpp b/src/servers/bluetooth/LocalDeviceImpl.cpp index b9ce662167..a5c46314c0 100644 --- a/src/servers/bluetooth/LocalDeviceImpl.cpp +++ b/src/servers/bluetooth/LocalDeviceImpl.cpp @@ -368,6 +368,11 @@ LocalDeviceImpl::CommandStatus(struct hci_ev_cmd_status* event, BMessage* reques } break; + case PACK_OPCODE(OGF_LINK_CONTROL, OCF_REMOTE_NAME_REQUEST): + { + ClearWantedEvent(request, HCI_EVENT_CMD_STATUS, PACK_OPCODE(OGF_LINK_CONTROL, OCF_REMOTE_NAME_REQUEST)); + } + break; default: Output::Instance()->Post("Command Status not handled\n", BLACKBOARD_KIT); break;