diff options
author | Johan Hedberg <johan.hedberg@nokia.com> | 2010-12-29 17:18:33 -0500 |
---|---|---|
committer | Gustavo F. Padovan <padovan@profusion.mobi> | 2011-02-07 22:40:05 -0500 |
commit | 9fbcbb455dd01abfad4f314b618ac51d566114cb (patch) | |
tree | d82d36ff143611df2a41f4249432420d649d3576 /net/bluetooth/hci_event.c | |
parent | 73f22f62388795c0f6b4f3f97bda7a64f9681aac (diff) |
Bluetooth: Add set_connectable management command
This patch adds a set_connectable command as well as a corresponding
event to the management interface. It's mainly useful for setting an
adapter as connectable from a non-initialized state as well as setting
an already initialized adapter as non-connectable (mostly useful for
qualification purposes).
Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'net/bluetooth/hci_event.c')
-rw-r--r-- | net/bluetooth/hci_event.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c index f55004af0558..a8a38f17ef78 100644 --- a/net/bluetooth/hci_event.c +++ b/net/bluetooth/hci_event.c | |||
@@ -274,18 +274,24 @@ static void hci_cc_write_scan_enable(struct hci_dev *hdev, struct sk_buff *skb) | |||
274 | 274 | ||
275 | if (!status) { | 275 | if (!status) { |
276 | __u8 param = *((__u8 *) sent); | 276 | __u8 param = *((__u8 *) sent); |
277 | int old_pscan, old_iscan; | ||
277 | 278 | ||
278 | clear_bit(HCI_PSCAN, &hdev->flags); | 279 | old_pscan = test_and_clear_bit(HCI_PSCAN, &hdev->flags); |
279 | clear_bit(HCI_ISCAN, &hdev->flags); | 280 | old_iscan = test_and_clear_bit(HCI_ISCAN, &hdev->flags); |
280 | 281 | ||
281 | if (param & SCAN_INQUIRY) { | 282 | if (param & SCAN_INQUIRY) { |
282 | set_bit(HCI_ISCAN, &hdev->flags); | 283 | set_bit(HCI_ISCAN, &hdev->flags); |
283 | mgmt_discoverable(hdev->id, 1); | 284 | if (!old_iscan) |
284 | } else | 285 | mgmt_discoverable(hdev->id, 1); |
286 | } else if (old_iscan) | ||
285 | mgmt_discoverable(hdev->id, 0); | 287 | mgmt_discoverable(hdev->id, 0); |
286 | 288 | ||
287 | if (param & SCAN_PAGE) | 289 | if (param & SCAN_PAGE) { |
288 | set_bit(HCI_PSCAN, &hdev->flags); | 290 | set_bit(HCI_PSCAN, &hdev->flags); |
291 | if (!old_pscan) | ||
292 | mgmt_connectable(hdev->id, 1); | ||
293 | } else if (old_pscan) | ||
294 | mgmt_connectable(hdev->id, 0); | ||
289 | } | 295 | } |
290 | 296 | ||
291 | hci_req_complete(hdev, HCI_OP_WRITE_SCAN_ENABLE, status); | 297 | hci_req_complete(hdev, HCI_OP_WRITE_SCAN_ENABLE, status); |