updated the required hidds. sam440-ppc target is booting again.
[AROS.git] / compiler / include / bluetooth / hci.h
blobb11b44d828f2029214cf8e5900d23f7136c89db2
1 #ifndef BLUETOOTH_HCI_H
2 #define BLUETOOTH_HCI_H
3 /*
4 ** $VER: hci.h 1.4 (16.08.02)
5 **
6 ** Bluetooth HCI definitions include file
7 **
8 ** (C) Copyright 2005 Chris Hodges
9 ** All Rights Reserved
12 #if defined(__GNUC__)
13 # pragma pack(1)
14 #endif
16 /* BT HCI Command */
17 struct BTHCICommand
19 UWORD bhc_CmdOpcode; /* Opcode (OGF+OCF) little endian */
20 UBYTE bhc_ParamLength; /* length of parameters to follow */
21 UBYTE bhc_Param[255]; /* actual parameters */
24 /* BT HCI Event */
25 struct BTHCIEvent
27 UBYTE bhe_EventType; /* event type according to BT specs */
28 UBYTE bhe_PayloadLength; /* length of the event payload in bytes */
29 UBYTE bhe_Payload[255]; /* actual payload */
32 /* BT ACL Data Packet */
33 struct BTHCIACLData
35 UWORD bha_ConnHandle; /* Connection Handle and Packet Boundary / Broadcast Flag (LE) */
36 UWORD bha_DataLength; /* length of the data frame (LE) */
37 UBYTE bha_Data[0]; /* The data itself */
40 #define ACLHF_PB_MASK 0x3000 /* Mask for both flags */
41 #define ACLHF_PB_CONT 0x1000 /* Continuing fragment packet of higher layer message */
42 #define ACLHF_PB_FIRST 0x2000 /* first packet of higher layer message */
44 #define ACLHF_BF_MASK 0xc000 /* Mask for both flags */
45 #define ACLHF_BF_NONE 0x0000 /* No Broadcast */
46 #define ACLHF_BF_ASB 0x4000 /* Active Slave Broadcast */
47 #define ACLHF_BF_PSB 0x8000 /* Parked Slave Broadcast */
49 /* BT HCI Command Completion Event */
50 struct HCICommandCompleteEvent
52 UBYTE cce_NumHCICmdPkt; /* number of HCI command packets allowed to be sent */
53 UBYTE cce_CmdOpcodeLB; /* command opcode caused this event (LowByte) */
54 UBYTE cce_CmdOpcodeHB; /* command opcode caused this event (HighByte) */
55 UBYTE cce_Param[252]; /* return parameters */
58 /* BT HCI Command Status Event */
59 struct HCICommandStatusEvent
61 UBYTE cse_Status; /* error code */
62 UBYTE cse_NumHCICmdPkt; /* number of HCI command packets allowed to be sent */
63 UBYTE cse_CmdOpcodeLB; /* command opcode caused this event (LowByte) */
64 UBYTE cse_CmdOpcodeHB; /* command opcode caused this event (HighByte) */
67 /* /// "HCI Commands, Events and Errors" */
69 /* Commands and Events */
71 #define OGF_LCC 0x01 // Link Control Commands
72 #define OGF_LPC 0x02 // Link Policy Commands
73 #define OGF_CBC 0x03 // Controller & Baseband Commands
74 #define OGF_INP 0x04 // Informational Parameters
75 #define OGF_STP 0x05 // Status Parameters
76 #define OGF_TST 0x06 // Testing Commands
78 #define OGFOCF(x,y) ((x)<<10|y)
80 /* HCI Link Control Commands */
81 #define HCICMD_INQUIRY OGFOCF(OGF_LCC, 0x01)
82 #define HCICMD_INQUIRY_CANCEL OGFOCF(OGF_LCC, 0x02)
83 #define HCICMD_PERIODIC_INQUIRY_MODE OGFOCF(OGF_LCC, 0x03)
84 #define HCICMD_EXIT_PERIODIC_INQUIRY_MODE OGFOCF(OGF_LCC, 0x04)
85 #define HCICMD_CREATE_CONN OGFOCF(OGF_LCC, 0x05)
86 #define HCICMD_DISCONNECT OGFOCF(OGF_LCC, 0x06)
87 #define HCICMD_ADD_SCO_CONN OGFOCF(OGF_LCC, 0x07) // deprecated!
88 #define HCICMD_CREATE_CONN_CANCEL OGFOCF(OGF_LCC, 0x08) // >= V1.2
89 #define HCICMD_ACCEPT_CONN_REQ OGFOCF(OGF_LCC, 0x09)
90 #define HCICMD_REJECT_CONN_REQ OGFOCF(OGF_LCC, 0x0a)
91 #define HCICMD_LINK_KEY_REQ_REPLY OGFOCF(OGF_LCC, 0x0b)
92 #define HCICMD_LINK_KEY_REQ_NEG_REPLY OGFOCF(OGF_LCC, 0x0c)
93 #define HCICMD_PIN_CODE_REQ_REPLY OGFOCF(OGF_LCC, 0x0d)
94 #define HCICMD_PIN_CODE_REQ_NEG_REPLY OGFOCF(OGF_LCC, 0x0e)
95 #define HCICMD_CHANGE_CONN_PKT_TYPE OGFOCF(OGF_LCC, 0x0f)
96 #define HCICMD_AUTH_REQ OGFOCF(OGF_LCC, 0x11)
97 #define HCICMD_SET_CONN_ENCRYPTION OGFOCF(OGF_LCC, 0x13)
98 #define HCICMD_CHANGE_CONN_LINK_KEY OGFOCF(OGF_LCC, 0x15)
99 #define HCICMD_MASTER_LINK_KEY OGFOCF(OGF_LCC, 0x17)
100 #define HCICMD_REMOTE_NAME_REQ OGFOCF(OGF_LCC, 0x19)
101 #define HCICMD_REMOTE_NAME_REQ_CANCEL OGFOCF(OGF_LCC, 0x1a) // >= V1.2
102 #define HCICMD_READ_REMOTE_SUPP_FEAT OGFOCF(OGF_LCC, 0x1b)
103 #define HCICMD_READ_REMOTE_EXTENDED_FEAT OGFOCF(OGF_LCC, 0x1c) // >= V1.2
104 #define HCICMD_READ_REMOTE_VERSION_INFO OGFOCF(OGF_LCC, 0x1d)
105 #define HCICMD_READ_CLOCK_OFFSET OGFOCF(OGF_LCC, 0x1f)
106 #define HCICMD_READ_LMP_HANDLE OGFOCF(OGF_LCC, 0x20) // >= V1.2
107 #define HCICMD_SETUP_SYNC_CONN OGFOCF(OGF_LCC, 0x28) // >= V1.2
108 #define HCICMD_ACCEPT_SYNC_CONN_REQ OGFOCF(OGF_LCC, 0x29) // >= V1.2
109 #define HCICMD_REJECT_SYNC_CONN_REQ OGFOCF(OGF_LCC, 0x2a) // >= V1.2
111 /* HCI Link Policy Commands */
112 #define HCICMD_HOLD_MODE OGFOCF(OGF_LPC, 0x01)
113 #define HCICMD_SNIFF_MODE OGFOCF(OGF_LPC, 0x03)
114 #define HCICMD_EXIT_SNIFF_MODE OGFOCF(OGF_LPC, 0x04)
115 #define HCICMD_PARK_STATE OGFOCF(OGF_LPC, 0x05)
116 #define HCICMD_EXIT_PARK_STATE OGFOCF(OGF_LPC, 0x06)
117 #define HCICMD_QOS_SETUP OGFOCF(OGF_LPC, 0x07)
118 #define HCICMD_ROLE_DISCOVERY OGFOCF(OGF_LPC, 0x09)
119 #define HCICMD_SWITCH_ROLE OGFOCF(OGF_LPC, 0x0b)
120 #define HCICMD_READ_LINK_POLICY_SET OGFOCF(OGF_LPC, 0x0c)
121 #define HCICMD_WRITE_LINK_POLICY_SET OGFOCF(OGF_LPC, 0x0d)
122 #define HCICMD_READ_DEF_LINK_POLICY_SET OGFOCF(OGF_LPC, 0x0e) // >= V1.2
123 #define HCICMD_WRITE_DEF_LINK_POLICY_SET OGFOCF(OGF_LPC, 0x0f) // >= V1.2
124 #define HCICMD_FLOW_SPECIFICATION OGFOCF(OGF_LPC, 0x10) // >= V1.2
126 /* HCI Controller & Baseband Commands */
127 #define HCICMD_SET_EVENT_MASK OGFOCF(OGF_CBC, 0x01)
128 #define HCICMD_RESET OGFOCF(OGF_CBC, 0x03)
129 #define HCICMD_SET_EVENT_FILTER OGFOCF(OGF_CBC, 0x05)
130 #define HCICMD_FLUSH OGFOCF(OGF_CBC, 0x08)
131 #define HCICMD_READ_PIN_TYPE OGFOCF(OGF_CBC, 0x09)
132 #define HCICMD_WRITE_PIN_TYPE OGFOCF(OGF_CBC, 0x0a)
133 #define HCICMD_CREATE_NEW_UNIT_KEY OGFOCF(OGF_CBC, 0x0b)
134 #define HCICMD_READ_STORED_LINK_KEY OGFOCF(OGF_CBC, 0x0d)
135 #define HCICMD_WRITE_STORED_LINK_KEY OGFOCF(OGF_CBC, 0x11)
136 #define HCICMD_DELETE_STORED_LINK_KEY OGFOCF(OGF_CBC, 0x12)
137 #define HCICMD_WRITE_LOCAL_NAME OGFOCF(OGF_CBC, 0x13)
138 #define HCICMD_READ_LOCAL_NAME OGFOCF(OGF_CBC, 0x14)
139 #define HCICMD_READ_CONN_ACCEPT_TIMEOUT OGFOCF(OGF_CBC, 0x15)
140 #define HCICMD_WRITE_CONN_ACCEPT_TIMEOUT OGFOCF(OGF_CBC, 0x16)
141 #define HCICMD_READ_PAGE_TIMEOUT OGFOCF(OGF_CBC, 0x17)
142 #define HCICMD_WRITE_PAGE_TIMEOUT OGFOCF(OGF_CBC, 0x18)
143 #define HCICMD_READ_SCAN_ENABLE OGFOCF(OGF_CBC, 0x19)
144 #define HCICMD_WRITE_SCAN_ENABLE OGFOCF(OGF_CBC, 0x1a)
145 #define HCICMD_READ_PAGE_SCAN_ACT OGFOCF(OGF_CBC, 0x1b)
146 #define HCICMD_WRITE_PAGE_SCAN_ACT OGFOCF(OGF_CBC, 0x1c)
147 #define HCICMD_READ_INQUIRY_SCAN_ACT OGFOCF(OGF_CBC, 0x1d)
148 #define HCICMD_WRITE_INQUIRY_SCAN_ACT OGFOCF(OGF_CBC, 0x1e)
149 #define HCICMD_READ_AUTH_ENABLE OGFOCF(OGF_CBC, 0x1f)
150 #define HCICMD_WRITE_AUTH_ENABLE OGFOCF(OGF_CBC, 0x20)
151 #define HCICMD_READ_ENCRYPTION_MODE OGFOCF(OGF_CBC, 0x21)
152 #define HCICMD_WRITE_ENCRYPTION_MODE OGFOCF(OGF_CBC, 0x22)
153 #define HCICMD_READ_CLASS_OF_DEVICE OGFOCF(OGF_CBC, 0x23)
154 #define HCICMD_WRITE_CLASS_OF_DEVICE OGFOCF(OGF_CBC, 0x24)
155 #define HCICMD_READ_VOICE_SETTING OGFOCF(OGF_CBC, 0x25)
156 #define HCICMD_WRITE_VOICE_SETTING OGFOCF(OGF_CBC, 0x26)
157 #define HCICMD_READ_AUTO_FLUSH_TIMEOUT OGFOCF(OGF_CBC, 0x27)
158 #define HCICMD_WRITE_AUTO_FLUSH_TIMEOUT OGFOCF(OGF_CBC, 0x28)
159 #define HCICMD_READ_NUM_BROADCAST_RETRANS OGFOCF(OGF_CBC, 0x29)
160 #define HCICMD_WRITE_NUM_BROADCAST_RETRANS OGFOCF(OGF_CBC, 0x2a)
161 #define HCICMD_READ_HOLD_MODE_ACT OGFOCF(OGF_CBC, 0x2b)
162 #define HCICMD_WRITE_HOLD_MODE_ACT OGFOCF(OGF_CBC, 0x2c)
163 #define HCICMD_READ_TRANSMIT_POWER_LEVEL OGFOCF(OGF_CBC, 0x2d)
164 #define HCICMD_READ_SYNC_FLOW_CTRL_ENABLE OGFOCF(OGF_CBC, 0x2e)
165 #define HCICMD_WRITE_SYNC_FLOW_CTRL_ENABLE OGFOCF(OGF_CBC, 0x2f)
166 #define HCICMD_SET_CTRL2HOST_FLOW_CONTROL OGFOCF(OGF_CBC, 0x31)
167 #define HCICMD_HOST_BUFFER_SIZE OGFOCF(OGF_CBC, 0x33)
168 #define HCICMD_HOST_NUM_OF_CMPL_PKTS OGFOCF(OGF_CBC, 0x35)
169 #define HCICMD_READ_LINK_SV_TIMEOUT OGFOCF(OGF_CBC, 0x36)
170 #define HCICMD_WRITE_LINK_SV_TIMEOUT OGFOCF(OGF_CBC, 0x37)
171 #define HCICMD_READ_NUM_OF_SUPP_IAC OGFOCF(OGF_CBC, 0x38)
172 #define HCICMD_READ_CURRENT_IAC_LAP OGFOCF(OGF_CBC, 0x39)
173 #define HCICMD_WRITE_CURRENT_IAC_LAP OGFOCF(OGF_CBC, 0x3a)
174 #define HCICMD_READ_PAGE_SCAN_PERIOD_MODE OGFOCF(OGF_CBC, 0x3b) // deprecated!
175 #define HCICMD_WRITE_PAGE_SCAN_PERIOD_MODE OGFOCF(OGF_CBC, 0x3c) // deprecated!
176 #define HCICMD_READ_PAGE_SCAN_MODE OGFOCF(OGF_CBC, 0x3d) // deprecated!
177 #define HCICMD_WRITE_PAGE_SCAN_MODE OGFOCF(OGF_CBC, 0x3e) // deprecated!
178 #define HCICMD_SET_AFH_HOST_CHANNEL_CLASS OGFOCF(OGF_CBC, 0x3f) // >= V1.2
179 #define HCICMD_READ_INQUIRY_SCAN_TYPE OGFOCF(OGF_CBC, 0x42) // >= V1.2
180 #define HCICMD_WRITE_INQUIRY_SCAN_TYPE OGFOCF(OGF_CBC, 0x43) // >= V1.2
181 #define HCICMD_READ_INQUIRY_MODE OGFOCF(OGF_CBC, 0x44) // >= V1.2
182 #define HCICMD_WRITE_INQUIRY_MODE OGFOCF(OGF_CBC, 0x45) // >= V1.2
183 #define HCICMD_READ_PAGE_SCAN_TYPE OGFOCF(OGF_CBC, 0x46) // >= V1.2
184 #define HCICMD_WRITE_PAGE_SCAN_TYPE OGFOCF(OGF_CBC, 0x47) // >= V1.2
185 #define HCICMD_READ_AFH_CHAN_ASSESS_MODE OGFOCF(OGF_CBC, 0x48) // >= V1.2
186 #define HCICMD_WRITE_AFH_CHAN_ASSESS_MODE OGFOCF(OGF_CBC, 0x49) // >= V1.2
188 /* HCI Informational Parameters */
189 #define HCICMD_READ_LOCAL_VERSION_INFO OGFOCF(OGF_INP, 0x01)
190 #define HCICMD_READ_LOCAL_SUPP_COMMANDS OGFOCF(OGF_INP, 0x02) // >= V1.2
191 #define HCICMD_READ_LOCAL_SUPP_FEAT OGFOCF(OGF_INP, 0x03)
192 #define HCICMD_READ_LOCAL_EXTENDED_FEAT OGFOCF(OGF_INP, 0x04) // >= V1.2
193 #define HCICMD_READ_BUFFER_SIZE OGFOCF(OGF_INP, 0x05)
194 #define HCICMD_READ_COUNTRY_CODE OGFOCF(OGF_INP, 0x07) // deprecated!
195 #define HCICMD_READ_BD_ADDR OGFOCF(OGF_INP, 0x09)
197 /* HCI Status Parameters */
198 #define HCICMD_READ_FAILED_CONTACT_COUNT OGFOCF(OGF_STP, 0x01)
199 #define HCICMD_RESET_FAILED_CONTACT_COUNT OGFOCF(OGF_STP, 0x02)
200 #define HCICMD_READ_LINK_QUALITY OGFOCF(OGF_STP, 0x03)
201 #define HCICMD_READ_RSSI OGFOCF(OGF_STP, 0x05)
202 #define HCICMD_READ_AFH_CHANNEL_MAP OGFOCF(OGF_STP, 0x06) // >= V1.2
203 #define HCICMD_READ_CLOCK OGFOCF(OGF_STP, 0x07) // >= V1.2
205 /* HCI Testing Commands */
206 #define HCICMD_READ_LOOPBACK_MODE OGFOCF(OGF_TST, 0x01)
207 #define HCICMD_WRITE_LOOPBACK_MODE OGFOCF(OGF_TST, 0x02)
208 #define HCICMD_ENABLE_DEVICE_TEST_MODE OGFOCF(OGF_TST, 0x03)
210 /* HCI Events */
211 #define HCIEVT_INQUIRY_CMPL 0x01
212 #define HCIEVT_INQUIRY_RES 0x02
213 #define HCIEVT_CONN_CMPL 0x03
214 #define HCIEVT_CONN_REQ 0x04
215 #define HCIEVT_DISCONN_CMPL 0x05
216 #define HCIEVT_AUTH_CMPL 0x06
217 #define HCIEVT_REMOTE_NAME_REQ_CMPL 0x07
218 #define HCIEVT_ENCRYPTION_CHG 0x08
219 #define HCIEVT_CHANGE_CONN_LINK_KEY_CMPL 0x09
220 #define HCIEVT_MASTER_LINK_KEY_CMPL 0x0a
221 #define HCIEVT_READ_REMOTE_SUPP_FEAT_CMPL 0x0b
222 #define HCIEVT_READ_REMOTE_VERS_INFO_CMPL 0x0c
223 #define HCIEVT_QOS_SETUP_CMPL 0x0d
224 #define HCIEVT_CMD_CMPL 0x0e
225 #define HCIEVT_CMD_STATUS 0x0f
226 #define HCIEVT_HARDWARE_ERROR 0x10
227 #define HCIEVT_FLUSH_OCCURRED 0x11
228 #define HCIEVT_ROLE_CHG 0x12
229 #define HCIEVT_NUM_OF_CMPL_PACKETS 0x13
230 #define HCIEVT_MODE_CHG 0x14
231 #define HCIEVT_RETURN_LINK_KEYS 0x15
232 #define HCIEVT_PIN_CODE_REQ 0x16
233 #define HCIEVT_LINK_KEY_REQ 0x17
234 #define HCIEVT_LINK_KEY_NOTIFICATION 0x18
235 #define HCIEVT_LOOPBACK_CMD 0x19
236 #define HCIEVT_DATA_BUFFER_OVERFLOW 0x1a
237 #define HCIEVT_MAX_SLOTS_CHG 0x1b
238 #define HCIEVT_READ_CLOCK_OFFSET_CMPL 0x1c
239 #define HCIEVT_CONN_PKT_TYPE_CHG 0x1d
240 #define HCIEVT_QOS_VIOLATION 0x1e
241 #define HCIEVT_PAGE_SCAN_REP_MODE_CHG 0x20
242 #define HCIEVT_HCI_FLOW_SPEC_CMPL 0x21 // >= V1.2
243 #define HCIEVT_INQUIRY_RES_WITH_RSSI 0x22 // >= V1.2
244 #define HCIEVT_READ_REMOTE_EXT_FEAT_CMPL 0x23 // >= V1.2
245 #define HCIEVT_SYNC_CONN_CMPL 0x2c // >= V1.2
246 #define HCIEVT_SYNC_CONN_CHG 0x2d // >= V1.2
248 /* HCI Error codes from the BT 1.2 Spec Vol 2 Part D Nov 2003 */
249 #define HCIERR_SUCCESS 0x00
250 #define HCIERR_UNKNOWN_HCI_CMD 0x01
251 #define HCIERR_UNKNOWN_CONN_ID 0x02
252 #define HCIERR_HARDWARE_FAILURE 0x03
253 #define HCIERR_PAGE_TIMEOUT 0x04
254 #define HCIERR_AUTH_FAILURE 0x05
255 #define HCIERR_PIN_MISSING 0x06
256 #define HCIERR_MEMORY_CAPACITY_EXCEEDED 0x07
257 #define HCIERR_CONN_TIMEOUT 0x08
258 #define HCIERR_CONN_LIMIT_EXCEEDED 0x09
259 #define HCIERR_SYNC_CONN_LIMIT_EXCEEDED 0x0A
260 #define HCIERR_ACL_CONN_ALREADY_EXISTS 0x0B
261 #define HCIERR_CMD_DISALLOWED 0x0C
262 #define HCIERR_CONN_REJECTED_LIMITED_RESOURCES 0x0D
263 #define HCIERR_CONN_REJECTED_SECURITY_REASONS 0x0E
264 #define HCIERR_CONN_REJECTED_UNACCEPTABLE_BD_ADDR 0x0F
265 #define HCIERR_CONN_ACCEPT_TIMEOUT_EXCEEDED 0x10
266 #define HCIERR_UNSUPP_FEATURE_OR_PARM_VALUE 0x11
267 #define HCIERR_INVALID_HCI_COMMAND_PARMS 0x12
268 #define HCIERR_REMOTE_USER_TERM_CONN 0x13
269 #define HCIERR_REMOTE_DEVICE_TERM_CONN_LOW_RES 0x14
270 #define HCIERR_REMOTE_DEVICE_TERM_CONN_POWER_OFF 0x15
271 #define HCIERR_CONN_TERM_BY_LOCAL_HOST 0x16
272 #define HCIERR_REPEATED_ATTEMPTS 0x17
273 #define HCIERR_PAIRING_NOT_ALLOWED 0x18
274 #define HCIERR_UNKNOWN_LMP_PDU 0x19
275 #define HCIERR_UNSUPP_REMOTE_FEATURE 0x1A
276 #define HCIERR_SCO_OFFSET_REJECTED 0x1B
277 #define HCIERR_SCO_INTERVAL_REJECTED 0x1C
278 #define HCIERR_SCO_AIR_MODE_REJECTED 0x1D
279 #define HCIERR_INVALID_LMP_PARMS 0x1E
280 #define HCIERR_UNSPECIFIED_ERROR 0x1F
281 #define HCIERR_UNSUPP_LMP_PARM_VALUE 0x20
282 #define HCIERR_ROLE_CHANGE_NOT_ALLOWED 0x21
283 #define HCIERR_LMP_RESPONSE_TIMEOUT 0x22
284 #define HCIERR_LMP_ERROR_TRANSACTION_COLLISION 0x23
285 #define HCIERR_LMP_PDU_NOT_ALLOWED 0x24
286 #define HCIERR_ENCRYPTION_MODE_NOT_ACCEPTABLE 0x25
287 #define HCIERR_LINK_KEY_CAN_NOT_BE_CHANGED 0x26
288 #define HCIERR_REQUESTED_QOS_NOT_SUPP 0x27
289 #define HCIERR_INSTANT_PASSED 0x28
290 #define HCIERR_PAIRING_WITH_UNIT_KEY_NOT_SUPP 0x29
291 #define HCIERR_DIFFERENT_TRANSACTION_COLLISION 0x2A
292 #define HCIERR_QOS_UNACCEPTABLE_PARM 0x2C
293 #define HCIERR_QOS_REJECTED 0x2D
294 #define HCIERR_CHANNEL_CLASSIFICATION_NOT_SUPP 0x2E
295 #define HCIERR_INSUFFICIENT_SECURITY 0x2F
296 #define HCIERR_PARM_OUT_OF_MANDATORY_RANGE 0x30
297 #define HCIERR_ROLE_SWITCH_PENDING 0x32
298 #define HCIERR_RESERVED_SLOT_VIOLATION 0x34
299 #define HCIERR_ROLE_SWITCH_FAILED 0x35
301 /* \\\ */
303 /* various stuff */
304 #define BT_CONNHANDLE_MASK 0x0fff
306 #define BD_ADDR_SIZE 6
308 typedef struct BD_ADDR
310 UBYTE bd_Addr[BD_ADDR_SIZE];
311 } BD_ADDR;
313 #define BT_LINK_KEY_SIZE 16
314 typedef struct BT_LINK_KEY
316 UBYTE lk_LinkKey[BT_LINK_KEY_SIZE];
317 } BT_LINK_KEY;
319 /* Link Types */
320 #define LINKTYPE_SCO 0x00
321 #define LINKTYPE_ACL 0x01
323 /* Encryption Modes */
324 #define ENCMODE_NONE 0x00
325 #define ENCMODE_ALL 0x01
327 /* Packet types (see Page 134 (300) of BT Spec 2.0) */
329 /* for all types */
330 #define BTPT_NULL 0x00 /* no payload, 126 bits */
331 #define BTPT_POLL 0x01 /* no payload, ack required */
332 #define BTPT_FHS 0x02 /* 144 bits + 16 bit CRC, payload 240 bits */
333 #define BTPT_DM1 0x03 /* standard , 1- 18 bytes info, 2/3 FEC, 16 bit CRC */
334 #define BTPT_AUX1 0x09 /* ACL only, 1- 30 bytes info, no FEC, no CRC */
336 /* for 1 MBit/s */
337 #define BTPT_DH1 0x04 /* ACL only, 1- 28 bytes info, no FEC, 16 bit CRC */
338 #define BTPT_DM3 0x0a /* ACL only, 2-123 bytes info, 2/3 FEC, 16 bit CRC */
339 #define BTPT_DH3 0x0b /* ACL only, 2-185 bytes info, no FEC, 16 bit CRC */
340 #define BTPT_DM5 0x0e /* ACL only, 2-226 bytes info, 2/3 FEC, 16 bit CRC */
341 #define BTPT_DH5 0x0f /* ACL only, 2-341 bytes info, no FEC, 16 bit CRC */
342 #define BTPT_HV1 0x05 /* SCO only, 10 bytes info, 1/3 FEC, no CRC, payload 240 bits */
343 #define BTPT_HV2 0x06 /* SCO only, 20 bytes info, 2/3 FEC, no CRC, payload 240 bits */
344 #define BTPT_HV3 0x07 /* SCO only, 30 bytes info, no FEC, no CRC, payload 240 bits */
345 #define BTPT_DV 0x08 /* SCO only, 1- 10 bytes data, 2/3 FEC, 16 bit CRC, 80 bits voice, 150 bits data */
346 #define BTPT_EV3 0x07 /* eSCO only, 1- 30 bytes info, no FEC, 16 bit CRC */
347 #define BTPT_EV4 0x0c /* eSCO only, 1-120 bytes info, 2/3 FEC, 16 bit CRC */
348 #define BTPT_EV5 0x0d /* eSCO only, 1-180 bytes info, no FEC, 16 bit CRC */
350 /* for 2-3 MBit/s */
351 #define BTPT_2_DH1 0x04 /* ACL only, 2- 56 bytes info, no FEC, 16 bit CRC */
352 #define BTPT_3_DH1 0x08 /* ACL only, 2- 85 bytes info, no FEC, 16 bit CRC */
353 #define BTPT_2_DH3 0x0a /* ACL only, 2-369 bytes info, no FEC, 16 bit CRC */
354 #define BTPT_3_DH3 0x0b /* ACL only, 2-554 bytes info, no FEC, 16 bit CRC */
355 #define BTPT_2_DH5 0x0e /* ACL only, 2-681 bytes info, no FEC, 16 bit CRC */
356 #define BTPT_3_DH5 0x0f /* ACL only, 2-1023 bytes info,no FEC, 16 bit CRC */
357 #define BTPT_2_EV3 0x06 /* eSCO only, 1- 60 bytes info, no FEC, 16 bit CRC */
358 #define BTPT_3_EV3 0x07 /* eSCO only, 1- 90 bytes info, no FEC, 16 bit CRC */
359 #define BTPT_2_EV5 0x0c /* eSCO only, 1-360 bytes info, no FEC, 16 bit CRC */
360 #define BTPT_3_EV5 0x0d /* eSCO only, 1-540 bytes info, no FEC, 16 bit CRC */
362 /* currently, even with EDR, the maximum packet size for ACL packets is 1023 bytes (plus 4 bytes ACL header) */
363 #define MAX_ACL_IN_BUFFER_SIZE 1028
365 /* Packet Type Flags */
366 #define BTPTF_NOT_2_DH1 0x0002
367 #define BTPTF_NOT_3_DH1 0x0004
368 #define BTPTF_DM1 0x0008
369 #define BTPTF_DH1 0x0010
370 #define BTPTF_HV1 0x0020 // SCO
371 #define BTPTF_HV2 0x0040 // SCO
372 #define BTPTF_HV3 0x0080 // SCO
373 #define BTPTF_NOT_2_DH3 0x0100
374 #define BTPTF_NOT_3_DH3 0x0200
375 #define BTPTF_DM3 0x0400
376 #define BTPTF_DH3 0x0800
377 #define BTPTF_NOT_2_DH5 0x1000
378 #define BTPTF_NOT_3_DH5 0x2000
379 #define BTPTF_DM5 0x4000
380 #define BTPTF_DH5 0x8000
382 #define BTPTF_ALL_ACL (BTPTF_NOT_2_DH1|BTPTF_NOT_3_DH1|BTPTF_DM1|BTPTF_DH1|BTPTF_NOT_2_DH3|BTPTF_NOT_3_DH3|BTPTF_DM3|BTPTF_DH3|BTPTF_NOT_2_DH5|BTPTF_NOT_3_DH5|BTPTF_DM5|BTPTF_DH5)
383 #define BTPTF_ALL_SCO (BTPTF_HV1|BTPTF_HV2|BTPTF_HV3)
384 #define BTPTF_1_SLOT (BTPTF_NOT_2_DH1|BTPTF_NOT_3_DH1|BTPTF_DM1|BTPTF_DH1|BTPTF_HV1|BTPTF_HV2|BTPTF_HV3)
385 #define BTPTF_3_SLOTS (BTPTF_NOT_2_DH3|BTPTF_NOT_3_DH3|BTPTF_DM3|BTPTF_DH3)
386 #define BTPTF_5_SLOTS (BTPTF_NOT_2_DH5|BTPTF_NOT_3_DH5|BTPTF_DM5|BTPTF_DH5)
387 #define BTPTF_EDR_MASK (BTPTF_NOT_2_DH1|BTPTF_NOT_3_DH1|BTPTF_NOT_2_DH3|BTPTF_NOT_3_DH3|BTPTF_NOT_2_DH5|BTPTF_NOT_3_DH5)
388 #define BTPTF_NOT_MASK (BTPTF_NOT_2_DH1|BTPTF_NOT_3_DH1|BTPTF_NOT_2_DH3|BTPTF_NOT_3_DH3|BTPTF_NOT_2_DH5|BTPTF_NOT_3_DH5)
390 /* Link Policy Settings */
391 #define BTLPF_ROLE_SWITCH 0x0001
392 #define BTLPF_HOLD_MODE 0x0002
393 #define BTLPF_SNIFF_MODE 0x0004
394 #define BTLPF_PARK_STATE 0x0008
396 /* QoS stuff */
397 #define BTQOSST_NO_TRAFFIC 0x00
398 #define BTQOSST_BEST_EFFORT 0x01
399 #define BTQOSST_GUARANTEED 0x02
401 /* Supported features for LMP */
402 #define LMPF_3_SLOT_PACKETS 0x00
403 #define LMPF_5_SLOT_PACKETS 0x01
404 #define LMPF_ENCRYPTION 0x02
405 #define LMPF_SLOT_OFFSET 0x03
406 #define LMPF_TIMING_ACCURACY 0x04
407 #define LMPF_ROLE_SWITCH 0x05
408 #define LMPF_HOLD_MODE 0x06
409 #define LMPF_SNIFF_MODE 0x07
410 #define LMPF_PARK_STATE 0x08
411 #define LMPF_POWER_CTRL_REQ 0x09
412 #define LMPF_CQDDR 0x0a
413 #define LMPF_SCO_LINK 0x0b
414 #define LMPF_HV2_PACKETS 0x0c
415 #define LMPF_HV3_PACKETS 0x0d
416 #define LMPF_ULAW_SCO_DATA 0x0e
417 #define LMPF_ALAW_SCO_DATA 0x0f
418 #define LMPF_CVSD_SCO_DATA 0x10
419 #define LMPF_PAIRING_PARAM_NEG 0x11
420 #define LMPF_POWER_CTRL 0x12
421 #define LMPF_TRANS_SCO_DATA 0x13
422 #define LMPF_FLOW_CTRL_LAG_LSB 0x14
423 #define LMPF_FLOW_CTRL_LAG_MB 0x15
424 #define LMPF_FLOW_CTRL_LAG_MSB 0x16
425 #define LMPF_BCAST_ENCRYPTION 0x17 // possibly V1.1
426 #define LMPF_EDR_ACL_2MBPS 0x19 // >= V2.0
427 #define LMPF_EDR_ACL_3MBPS 0x1a // >= V2.0
428 #define LMPF_ENH_INQ_SCAN 0x1b
429 #define LMPF_ILACE_INQ_SCAN 0x1c
430 #define LMPF_ILACE_PAGE_SCAN 0x1d
431 #define LMPF_RSSI_WITH_INQUIRY 0x1e
432 #define LMPF_EV3_PACKETS 0x1f
433 #define LMPF_EV4_PACKETS 0x20
434 #define LMPF_EV5_PACKETS 0x21
435 #define LMPF_AFH_CAP_SLAVE 0x23
436 #define LMPF_AFH_CLASS_SLAVE 0x24
437 #define LMPF_3_SLOT_EDR_ACL 0x27 // >= V2.0
438 #define LMPF_5_SLOT_EDR_ACL 0x28 // >= V2.0
439 #define LMPF_AFH_CAP_MASTER 0x2b
440 #define LMPF_AFH_CLASS_MASTER 0x2c
441 #define LMPF_EDR_ESCO_2MBPS 0x2d
442 #define LMPF_EDR_ESCO_3MBPS 0x2e
443 #define LMPF_3_SLOT_EDR_ESCO 0x2f
444 #define LMPF_EXT_FEATURES 0x3f
446 #if defined(__GNUC__)
447 # pragma pack()
448 #endif
450 #endif /* BLUETOOTH_HCI_H */