1f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/*
2f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   BlueZ - Bluetooth protocol stack for Linux
3f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   Copyright (C) 2000-2001 Qualcomm Incorporated
4f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
5f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
6f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
7f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   This program is free software; you can redistribute it and/or modify
8f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   it under the terms of the GNU General Public License version 2 as
9f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   published by the Free Software Foundation;
10f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
11f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
20f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann   SOFTWARE IS DISCLAIMED.
23f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann*/
24f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
25f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#ifndef __HCI_SOCK_H
26f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define __HCI_SOCK_H
27f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
28f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Socket options */
29f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_DATA_DIR	1
30f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FILTER	2
31f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_TIME_STAMP	3
32f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
33f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* CMSG flags */
34f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CMSG_DIR	0x0001
35f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CMSG_TSTAMP	0x0002
36f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
37f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct sockaddr_hci {
38f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	sa_family_t    hci_family;
39f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	unsigned short hci_dev;
40f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	unsigned short hci_channel;
41f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
42f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_DEV_NONE	0xffff
43f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
44f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_RAW		0
45f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_USER	1
46f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_MONITOR	2
47f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_CHANNEL_CONTROL	3
48f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
49f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_filter {
50f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	unsigned long type_mask;
51f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	unsigned long event_mask[2];
52f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__le16 opcode;
53f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
54f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
55f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_ufilter {
56f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32  type_mask;
57f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32  event_mask[2];
58f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__le16 opcode;
59f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
60f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
61f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_TYPE_BITS	31
62f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_EVENT_BITS	63
63f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_OGF_BITS	63
64f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCI_FLT_OCF_BITS	127
65f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
66f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Ioctl defines */
67f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVUP	_IOW('H', 201, int)
68f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVDOWN	_IOW('H', 202, int)
69f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVRESET	_IOW('H', 203, int)
70f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIDEVRESTAT	_IOW('H', 204, int)
71f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
72f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETDEVLIST	_IOR('H', 210, int)
73f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETDEVINFO	_IOR('H', 211, int)
74f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETCONNLIST	_IOR('H', 212, int)
75f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETCONNINFO	_IOR('H', 213, int)
76f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIGETAUTHINFO	_IOR('H', 215, int)
77f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
78f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETRAW	_IOW('H', 220, int)
79f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETSCAN	_IOW('H', 221, int)
80f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETAUTH	_IOW('H', 222, int)
81f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETENCRYPT	_IOW('H', 223, int)
82f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETPTYPE	_IOW('H', 224, int)
83f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETLINKPOL	_IOW('H', 225, int)
84f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETLINKMODE	_IOW('H', 226, int)
85f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETACLMTU	_IOW('H', 227, int)
86f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCISETSCOMTU	_IOW('H', 228, int)
87f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
88f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIBLOCKADDR	_IOW('H', 230, int)
89f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIUNBLOCKADDR	_IOW('H', 231, int)
90f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
91f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define HCIINQUIRY	_IOR('H', 240, int)
92f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
93f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann/* Ioctl requests structures */
94f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_stats {
95f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 err_rx;
96f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 err_tx;
97f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 cmd_tx;
98f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 evt_rx;
99f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 acl_tx;
100f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 acl_rx;
101f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 sco_tx;
102f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 sco_rx;
103f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 byte_rx;
104f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 byte_tx;
105f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
106f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
107f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_info {
108f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 dev_id;
109f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	char  name[8];
110f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
111f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	bdaddr_t bdaddr;
112f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
113f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 flags;
114f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8  type;
115f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
116f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8  features[8];
117f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
118f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 pkt_type;
119f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 link_policy;
120f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32 link_mode;
121f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
122f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 acl_mtu;
123f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 acl_pkts;
124f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 sco_mtu;
125f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 sco_pkts;
126f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
127f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	struct hci_dev_stats stat;
128f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
129f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
130f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_info {
131f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16    handle;
132f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	bdaddr_t bdaddr;
133f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8     type;
134f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8     out;
135f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16    state;
136f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32    link_mode;
137f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
138f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
139f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_req {
140f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16  dev_id;
141f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u32  dev_opt;
142f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
143f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
144f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_dev_list_req {
145f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16  dev_num;
146f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	struct hci_dev_req dev_req[0];	/* hci_dev_req structures */
147f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
148f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
149f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_list_req {
150f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16  dev_id;
151f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16  conn_num;
152f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	struct hci_conn_info conn_info[0];
153f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
154f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
155f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_conn_info_req {
156f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	bdaddr_t bdaddr;
157f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8     type;
158f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	struct   hci_conn_info conn_info[0];
159f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
160f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
161f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_auth_info_req {
162f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	bdaddr_t bdaddr;
163f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8     type;
164f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
165f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
166f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmannstruct hci_inquiry_req {
167f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 dev_id;
168f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u16 flags;
169f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8  lap[3];
170f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8  length;
171f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann	__u8  num_rsp;
172f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann};
173f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#define IREQ_CACHE_FLUSH 0x0001
174f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann
175f49daa8190ebf25eae907048266b590a9cdccb95Marcel Holtmann#endif /* __HCI_SOCK_H */
176