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