aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorMikel Astiz <mikel.astiz@bmw-carit.de>2012-08-09 03:52:30 -0400
committerGustavo Padovan <gustavo.padovan@collabora.co.uk>2012-08-21 13:54:40 -0400
commitf0d6a0ea330617454032d6e2ed48759858a44427 (patch)
treed11edf124abaef7d14f39fb9d0678376800fac72 /include/net
parentfa1bd91809d58b3c183611556219fafd93c08625 (diff)
Bluetooth: mgmt: Add device disconnect reason
MGMT_EV_DEVICE_DISCONNECTED will now expose the disconnection reason to userland, distinguishing four possible values: 0x00 Reason not known or unspecified 0x01 Connection timeout 0x02 Connection terminated by local host 0x03 Connection terminated by remote host Note that the local/remote distinction just determines which side terminated the low-level connection, regardless of the disconnection of the higher-level profiles. This can sometimes be misleading and thus must be used with care. For example, some hardware combinations would report a locally initiated disconnection even if the user turned Bluetooth off in the remote side. Signed-off-by: Mikel Astiz <mikel.astiz@bmw-carit.de> Acked-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/bluetooth/hci_core.h2
-rw-r--r--include/net/bluetooth/mgmt.h9
2 files changed, 10 insertions, 1 deletions
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 7267dafd7159..1bbc1091748c 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -1002,7 +1002,7 @@ int mgmt_device_connected(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
1002 u8 addr_type, u32 flags, u8 *name, u8 name_len, 1002 u8 addr_type, u32 flags, u8 *name, u8 name_len,
1003 u8 *dev_class); 1003 u8 *dev_class);
1004int mgmt_device_disconnected(struct hci_dev *hdev, bdaddr_t *bdaddr, 1004int mgmt_device_disconnected(struct hci_dev *hdev, bdaddr_t *bdaddr,
1005 u8 link_type, u8 addr_type); 1005 u8 link_type, u8 addr_type, u8 reason);
1006int mgmt_disconnect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, 1006int mgmt_disconnect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr,
1007 u8 link_type, u8 addr_type, u8 status); 1007 u8 link_type, u8 addr_type, u8 status);
1008int mgmt_connect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type, 1008int mgmt_connect_failed(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type,
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 4348ee8bda69..1b48effcd973 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -405,7 +405,16 @@ struct mgmt_ev_device_connected {
405 __u8 eir[0]; 405 __u8 eir[0];
406} __packed; 406} __packed;
407 407
408#define MGMT_DEV_DISCONN_UNKNOWN 0x00
409#define MGMT_DEV_DISCONN_TIMEOUT 0x01
410#define MGMT_DEV_DISCONN_LOCAL_HOST 0x02
411#define MGMT_DEV_DISCONN_REMOTE 0x03
412
408#define MGMT_EV_DEVICE_DISCONNECTED 0x000C 413#define MGMT_EV_DEVICE_DISCONNECTED 0x000C
414struct mgmt_ev_device_disconnected {
415 struct mgmt_addr_info addr;
416 __u8 reason;
417} __packed;
409 418
410#define MGMT_EV_CONNECT_FAILED 0x000D 419#define MGMT_EV_CONNECT_FAILED 0x000D
411struct mgmt_ev_connect_failed { 420struct mgmt_ev_connect_failed {