Skip to content

Commit

Permalink
Bluetooth: Add support for management powered event
Browse files Browse the repository at this point in the history
This patch adds support for the powered event that's used to indicate to
userspace when the powered state of a local adapter changes.

Signed-off-by: Johan Hedberg <johan.hedberg@nokia.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Johan Hedberg authored and Gustavo F. Padovan committed Feb 8, 2011
1 parent ab81cbf commit 5add6af
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 0 deletions.
1 change: 1 addition & 0 deletions include/net/bluetooth/hci_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,7 @@ void hci_send_to_sock(struct hci_dev *hdev, struct sk_buff *skb);
int mgmt_control(struct sock *sk, struct msghdr *msg, size_t len);
int mgmt_index_added(u16 index);
int mgmt_index_removed(u16 index);
int mgmt_powered(u16 index, u8 powered);

/* HCI info for socket */
#define hci_pi(sk) ((struct hci_pinfo *) sk)
Expand Down
6 changes: 6 additions & 0 deletions include/net/bluetooth/mgmt.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,9 @@ struct mgmt_ev_index_added {
struct mgmt_ev_index_removed {
__le16 index;
} __packed;

#define MGMT_EV_POWERED 0x0006
struct mgmt_ev_powered {
__le16 index;
__u8 powered;
} __packed;
4 changes: 4 additions & 0 deletions net/bluetooth/hci_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -535,6 +535,8 @@ int hci_dev_open(__u16 dev)
hci_dev_hold(hdev);
set_bit(HCI_UP, &hdev->flags);
hci_notify(hdev, HCI_DEV_UP);
if (!test_bit(HCI_SETUP, &hdev->flags))
mgmt_powered(hdev->id, 1);
} else {
/* Init failed, cleanup */
tasklet_kill(&hdev->rx_task);
Expand Down Expand Up @@ -616,6 +618,8 @@ static int hci_dev_do_close(struct hci_dev *hdev)
* and no tasks are scheduled. */
hdev->close(hdev);

mgmt_powered(hdev->id, 0);

/* Clear flags */
hdev->flags = 0;

Expand Down
10 changes: 10 additions & 0 deletions net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -316,3 +316,13 @@ int mgmt_index_removed(u16 index)

return mgmt_event(MGMT_EV_INDEX_REMOVED, &ev, sizeof(ev));
}

int mgmt_powered(u16 index, u8 powered)
{
struct mgmt_ev_powered ev;

put_unaligned_le16(index, &ev.index);
ev.powered = powered;

return mgmt_event(MGMT_EV_POWERED, &ev, sizeof(ev));
}

0 comments on commit 5add6af

Please sign in to comment.