1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#ifndef __HCI_SOCK_H
26#define __HCI_SOCK_H
27
28
29#define HCI_DATA_DIR 1
30#define HCI_FILTER 2
31#define HCI_TIME_STAMP 3
32
33
34#define HCI_CMSG_DIR 0x0001
35#define HCI_CMSG_TSTAMP 0x0002
36
37struct 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#define HCI_CHANNEL_LOGGING 4
49
50struct hci_filter {
51 unsigned long type_mask;
52 unsigned long event_mask[2];
53 __le16 opcode;
54};
55
56struct hci_ufilter {
57 __u32 type_mask;
58 __u32 event_mask[2];
59 __le16 opcode;
60};
61
62#define HCI_FLT_TYPE_BITS 31
63#define HCI_FLT_EVENT_BITS 63
64#define HCI_FLT_OGF_BITS 63
65#define HCI_FLT_OCF_BITS 127
66
67
68#define HCIDEVUP _IOW('H', 201, int)
69#define HCIDEVDOWN _IOW('H', 202, int)
70#define HCIDEVRESET _IOW('H', 203, int)
71#define HCIDEVRESTAT _IOW('H', 204, int)
72
73#define HCIGETDEVLIST _IOR('H', 210, int)
74#define HCIGETDEVINFO _IOR('H', 211, int)
75#define HCIGETCONNLIST _IOR('H', 212, int)
76#define HCIGETCONNINFO _IOR('H', 213, int)
77#define HCIGETAUTHINFO _IOR('H', 215, int)
78
79#define HCISETRAW _IOW('H', 220, int)
80#define HCISETSCAN _IOW('H', 221, int)
81#define HCISETAUTH _IOW('H', 222, int)
82#define HCISETENCRYPT _IOW('H', 223, int)
83#define HCISETPTYPE _IOW('H', 224, int)
84#define HCISETLINKPOL _IOW('H', 225, int)
85#define HCISETLINKMODE _IOW('H', 226, int)
86#define HCISETACLMTU _IOW('H', 227, int)
87#define HCISETSCOMTU _IOW('H', 228, int)
88
89#define HCIBLOCKADDR _IOW('H', 230, int)
90#define HCIUNBLOCKADDR _IOW('H', 231, int)
91
92#define HCIINQUIRY _IOR('H', 240, int)
93
94
95struct hci_dev_stats {
96 __u32 err_rx;
97 __u32 err_tx;
98 __u32 cmd_tx;
99 __u32 evt_rx;
100 __u32 acl_tx;
101 __u32 acl_rx;
102 __u32 sco_tx;
103 __u32 sco_rx;
104 __u32 byte_rx;
105 __u32 byte_tx;
106};
107
108struct hci_dev_info {
109 __u16 dev_id;
110 char name[8];
111
112 bdaddr_t bdaddr;
113
114 __u32 flags;
115 __u8 type;
116
117 __u8 features[8];
118
119 __u32 pkt_type;
120 __u32 link_policy;
121 __u32 link_mode;
122
123 __u16 acl_mtu;
124 __u16 acl_pkts;
125 __u16 sco_mtu;
126 __u16 sco_pkts;
127
128 struct hci_dev_stats stat;
129};
130
131struct hci_conn_info {
132 __u16 handle;
133 bdaddr_t bdaddr;
134 __u8 type;
135 __u8 out;
136 __u16 state;
137 __u32 link_mode;
138};
139
140struct hci_dev_req {
141 __u16 dev_id;
142 __u32 dev_opt;
143};
144
145struct hci_dev_list_req {
146 __u16 dev_num;
147 struct hci_dev_req dev_req[0];
148};
149
150struct hci_conn_list_req {
151 __u16 dev_id;
152 __u16 conn_num;
153 struct hci_conn_info conn_info[0];
154};
155
156struct hci_conn_info_req {
157 bdaddr_t bdaddr;
158 __u8 type;
159 struct hci_conn_info conn_info[0];
160};
161
162struct hci_auth_info_req {
163 bdaddr_t bdaddr;
164 __u8 type;
165};
166
167struct hci_inquiry_req {
168 __u16 dev_id;
169 __u16 flags;
170 __u8 lap[3];
171 __u8 length;
172 __u8 num_rsp;
173};
174#define IREQ_CACHE_FLUSH 0x0001
175
176#endif
177