Return-Path: From: Hemant Gupta To: Cc: Hemant Gupta Subject: [PATCH v1] mgmtops: Handle Start Discovery Complete in case of failure Date: Tue, 10 Apr 2012 15:43:27 +0530 Message-ID: <1334052807-14320-1-git-send-email-hemant.gupta@stericsson.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-bluetooth-owner@vger.kernel.org List-ID: This patch adds handling of start discovery complete event in cases when discovery fails to get started. --- plugins/mgmtops.c | 33 ++++++++++++++++++++++++++++++++- 1 files changed, 32 insertions(+), 1 deletions(-) diff --git a/plugins/mgmtops.c b/plugins/mgmtops.c index c08117f..9de490d 100644 --- a/plugins/mgmtops.c +++ b/plugins/mgmtops.c @@ -1255,6 +1255,37 @@ static void read_local_oob_data_complete(int sk, uint16_t index, void *buf, oob_read_local_data_complete(adapter, rp->hash, rp->randomizer); } +static void start_discovery_complete(int sk, uint16_t index, uint8_t status, + void *buf, size_t len) +{ + uint8_t *type = buf; + struct btd_adapter *adapter; + + if (len != sizeof(*type)) { + error("start_discovery_complete event size mismatch " + "(%zu != %zu)", len, sizeof(*type)); + return; + } + + DBG("type %u status %u", *type, status); + + if (index > max_index) { + error("Unexpected index %u in start_discovery_complete", + index); + return; + } + + if (!status) + return; + + DBG("hci%u", index); + + adapter = manager_find_adapter_by_id(index); + if (adapter) + /* Start discovery failed, inform upper layers. */ + adapter_set_discovering(adapter, FALSE); +} + static void read_local_oob_data_failed(int sk, uint16_t index) { struct btd_adapter *adapter; @@ -1421,7 +1452,7 @@ static void mgmt_cmd_complete(int sk, uint16_t index, void *buf, size_t len) DBG("set_fast_connectable complete"); break; case MGMT_OP_START_DISCOVERY: - DBG("start_discovery complete"); + start_discovery_complete(sk, index, ev->status, ev->data, len); break; case MGMT_OP_STOP_DISCOVERY: DBG("stop_discovery complete"); -- 1.7.0.4