Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 237322
b: refs/heads/master
c: f752054
h: refs/heads/master
v: v3
  • Loading branch information
Johan Hedberg authored and Gustavo F. Padovan committed Feb 8, 2011
1 parent 6dd1c02 commit 7be1d6b
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 55ed8ca10f3530de8edbbf138acb50992bf5005b
refs/heads/master: f7520543ab40341edbc2aeee7fef68218be19a0a
2 changes: 2 additions & 0 deletions trunk/include/net/bluetooth/hci_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,8 @@ int mgmt_powered(u16 index, u8 powered);
int mgmt_discoverable(u16 index, u8 discoverable);
int mgmt_connectable(u16 index, u8 connectable);
int mgmt_new_key(u16 index, struct link_key *key, u8 old_key_type);
int mgmt_connected(u16 index, bdaddr_t *bdaddr);
int mgmt_disconnected(u16 index, bdaddr_t *bdaddr);

/* HCI info for socket */
#define hci_pi(sk) ((struct hci_pinfo *) sk)
Expand Down
12 changes: 12 additions & 0 deletions trunk/include/net/bluetooth/mgmt.h
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,15 @@ struct mgmt_ev_new_key {
struct mgmt_key_info key;
__u8 old_key_type;
} __packed;

#define MGMT_EV_CONNECTED 0x000B
struct mgmt_ev_connected {
__le16 index;
bdaddr_t bdaddr;
} __packed;

#define MGMT_EV_DISCONNECTED 0x000C
struct mgmt_ev_disconnected {
__le16 index;
bdaddr_t bdaddr;
} __packed;
16 changes: 11 additions & 5 deletions trunk/net/bluetooth/hci_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -1137,6 +1137,7 @@ static inline void hci_conn_complete_evt(struct hci_dev *hdev, struct sk_buff *s
conn->state = BT_CONFIG;
hci_conn_hold(conn);
conn->disc_timeout = HCI_DISCONN_TIMEOUT;
mgmt_connected(hdev->id, &ev->bdaddr);
} else
conn->state = BT_CONNECTED;

Expand Down Expand Up @@ -1269,13 +1270,18 @@ static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff
hci_dev_lock(hdev);

conn = hci_conn_hash_lookup_handle(hdev, __le16_to_cpu(ev->handle));
if (conn) {
conn->state = BT_CLOSED;
if (!conn)
goto unlock;

hci_proto_disconn_cfm(conn, ev->reason);
hci_conn_del(conn);
}
conn->state = BT_CLOSED;

if (conn->type == ACL_LINK)
mgmt_disconnected(hdev->id, &conn->dst);

hci_proto_disconn_cfm(conn, ev->reason);
hci_conn_del(conn);

unlock:
hci_dev_unlock(hdev);
}

Expand Down
20 changes: 20 additions & 0 deletions trunk/net/bluetooth/mgmt.c
Original file line number Diff line number Diff line change
Expand Up @@ -1090,3 +1090,23 @@ int mgmt_new_key(u16 index, struct link_key *key, u8 old_key_type)

return mgmt_event(MGMT_EV_NEW_KEY, &ev, sizeof(ev), NULL);
}

int mgmt_connected(u16 index, bdaddr_t *bdaddr)
{
struct mgmt_ev_connected ev;

put_unaligned_le16(index, &ev.index);
bacpy(&ev.bdaddr, bdaddr);

return mgmt_event(MGMT_EV_CONNECTED, &ev, sizeof(ev), NULL);
}

int mgmt_disconnected(u16 index, bdaddr_t *bdaddr)
{
struct mgmt_ev_disconnected ev;

put_unaligned_le16(index, &ev.index);
bacpy(&ev.bdaddr, bdaddr);

return mgmt_event(MGMT_EV_DISCONNECTED, &ev, sizeof(ev), NULL);
}

0 comments on commit 7be1d6b

Please sign in to comment.