Bluetooth: mgmt: Add address type parameter to Discovering event
authorJohan Hedberg <johan.hedberg@intel.com>
Mon, 20 Feb 2012 21:30:44 +0000 (23:30 +0200)
committerJohan Hedberg <johan.hedberg@intel.com>
Mon, 20 Feb 2012 22:32:16 +0000 (00:32 +0200)
This patch adds an address type parameter to the Discovering event. The
value matches that given to Start/Stop Discovery.

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/mgmt.h
net/bluetooth/hci_core.c
net/bluetooth/mgmt.c

index 870a3deab6ea97e44fa39ccbbd0a9cccce28b01d..1dbadbe14785349b2236a5e6ac97f0f26b65d588 100644 (file)
@@ -402,6 +402,10 @@ struct mgmt_ev_device_found {
 } __packed;
 
 #define MGMT_EV_DISCOVERING            0x0013
+struct mgmt_ev_discovering {
+       __u8 type;
+       __u8 discovering;
+} __packed;
 
 #define MGMT_EV_DEVICE_BLOCKED         0x0014
 struct mgmt_ev_device_blocked {
index cc52e037440e9de5d9c29b43ec2601f0e0e0fff7..a7439aeb1f9bb2fb13ec9df9dad0255b9069f515 100644 (file)
@@ -363,10 +363,9 @@ void hci_discovery_set_state(struct hci_dev *hdev, int state)
 
        switch (state) {
        case DISCOVERY_STOPPED:
-               hdev->discovery.type = 0;
-
                if (hdev->discovery.state != DISCOVERY_STARTING)
                        mgmt_discovering(hdev, 0);
+               hdev->discovery.type = 0;
                break;
        case DISCOVERY_STARTING:
                break;
index 3db8525b02934522fea42e27ec106681ae5356de..86148b182891df5e6abcd7e434be63395c6b3001 100644 (file)
@@ -3392,6 +3392,7 @@ int mgmt_stop_discovery_failed(struct hci_dev *hdev, u8 status)
 
 int mgmt_discovering(struct hci_dev *hdev, u8 discovering)
 {
+       struct mgmt_ev_discovering ev;
        struct pending_cmd *cmd;
 
        BT_DBG("%s discovering %u", hdev->name, discovering);
@@ -3409,8 +3410,11 @@ int mgmt_discovering(struct hci_dev *hdev, u8 discovering)
                mgmt_pending_remove(cmd);
        }
 
-       return mgmt_event(MGMT_EV_DISCOVERING, hdev, &discovering,
-                                               sizeof(discovering), NULL);
+       memset(&ev, 0, sizeof(ev));
+       ev.type = hdev->discovery.type;
+       ev.discovering = discovering;
+
+       return mgmt_event(MGMT_EV_DISCOVERING, hdev, &ev, sizeof(ev), NULL);
 }
 
 int mgmt_device_blocked(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 type)