TI BLE5-Stack API Documentation  1.01.08.00
hci_tl.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Group: WCS, BTS
4  $Target Device: DEVICES $
5 
6  ******************************************************************************
7  $License: TISD 2009 $
8  ******************************************************************************
9  $Release Name: PACKAGE NAME $
10  $Release Date: PACKAGE RELEASE DATE $
11  *****************************************************************************/
12 
21 #ifndef HCI_TL_H
22 #define HCI_TL_H
23 
24 #ifdef __cplusplus
25 extern "C"
26 {
27 #endif
28 
29 /*******************************************************************************
30  * INCLUDES
31  */
32 
33 #include "hci.h"
34 #include "osal.h"
35 #include "hci_data.h"
36 #include "hci_event.h"
37 
39 extern uint8 hciTaskID;
40 extern uint8 hciTestTaskID;
41 extern uint8 hciGapTaskID;
42 extern uint8 hciL2capTaskID;
43 extern uint8 hciSmpTaskID;
45 
46 /*******************************************************************************
47  * MACROS
48  */
49 
52 #define HCI_ASSERT(condition) HAL_ASSERT(condition)
53  // end of HCI
56 
57 /*******************************************************************************
58  * CONSTANTS
59  */
60 
66 
68 // OSAL Task Events
69 #define HCI_TX_PROCESS_EVENT 0x0001
70 #define HCI_TEST_UART_SEND_EVENT 0x0002
71 #define HCI_BDADDR_UPDATED_EVENT 0x4000
72 
73 // OSAL Message Header Events
74 #define HCI_CTRL_TO_HOST_EVENT 0x01
75 #define HCI_HOST_TO_CTRL_CMD_EVENT 0x02
76 #define HCI_HOST_TO_CTRL_DATA_EVENT 0x03
77 
78 #define HCI_BDADDR_LEN 6
79 
80 // Max Allowed HCI Packet
81 #define HCI_MAX_CMD_PKT_SIZE 0xFF
82 #define HCI_MAX_DATA_PKT_SIZE 0xFFFF
83 
84 // Max Data Length in Packet
85 #define HCI_DATA_MAX_DATA_LENGTH 27
86 
87 
93 #define HCI_CMD_MIN_LENGTH 4
94 
101 #define HCI_EVENT_MIN_LENGTH 3
102 
109 #define HCI_EXT_GAP_ADV_EVENT_MIN_LENGTH 9
110 
117 #define HCI_DATA_MIN_LENGTH 5
118 
119 #define HCI_MAX_NUM_CONNECTIONS 0x03
120 
121 #define HCI_TX_DATA_ANY_CONNECTION 0xFF
122 
123 // HCI Packet Types
124 #define HCI_CMD_PACKET 0x01
125 #define HCI_ACL_DATA_PACKET 0x02
126 #define HCI_SCO_DATA_PACKET 0x03
127 #define HCI_EVENT_PACKET 0x04
128 #define HCI_EXTENDED_CMD_PACKET 0x09
129 
130 
131 // States for Command and Data packet parser
132 #define HCI_PARSER_STATE_PKT_TYPE 0
133 #define HCI_CMD_PARSER_STATE_OPCODE 1
134 #define HCI_CMD_PARSER_STATE_LENGTH 2
135 #define HCI_CMD_PARSER_STATE_DATA 3
136 #define HCI_DATA_PARSER_STATE_HANDLE 4
137 #define HCI_DATA_PARSER_STATE_LENGTH 5
138 #define HCI_DATA_PARSER_STATE_DATA 6
139 
140 // HCI Command Subgroup
141 #define HCI_OPCODE_CSG_LINK_LAYER 0
142 #define HCI_OPCODE_CSG_CSG_L2CAP 1
143 #define HCI_OPCODE_CSG_CSG_ATT 2
144 #define HCI_OPCODE_CSG_CSG_GATT 3
145 #define HCI_OPCODE_CSG_CSG_GAP 4
146 #define HCI_OPCODE_CSG_CSG_SM 5
147 #define HCI_OPCODE_CSG_CSG_Reserved 6
148 #define HCI_OPCODE_CSG_CSG_USER_PROFILE 7
149 
150 // Vendor Specific OGF
151 #define VENDOR_SPECIFIC_OGF 0x3F
152 
153 
155 /*
156 ** HCI Command Opcodes
157 */
158 
159 // Link Control Commands
161 #define HCI_DISCONNECT 0x0406
162 #define HCI_READ_REMOTE_VERSION_INFO 0x041D
164 
165 // Controller and Baseband Commands
166 #define HCI_SET_EVENT_MASK 0x0C01
167 #define HCI_RESET 0x0C03
168 #define HCI_READ_TRANSMIT_POWER 0x0C2D
169 #define HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL 0x0C31
171 #define HCI_HOST_BUFFER_SIZE 0x0C33
172 #define HCI_HOST_NUM_COMPLETED_PACKETS 0x0C35
174 #define HCI_SET_EVENT_MASK_PAGE_2 0x0C63
175 #define HCI_READ_AUTH_PAYLOAD_TIMEOUT 0x0C7B
176 #define HCI_WRITE_AUTH_PAYLOAD_TIMEOUT 0x0C7C
177 
178 // Information Parameters
179 #define HCI_READ_LOCAL_VERSION_INFO 0x1001
180 #define HCI_READ_LOCAL_SUPPORTED_COMMANDS 0x1002
181 #define HCI_READ_LOCAL_SUPPORTED_FEATURES 0x1003
182 #define HCI_READ_BDADDR 0x1009
183 
184 // Status Parameters
185 #define HCI_READ_RSSI 0x1405
186 
187 // LE Commands
188 // V4.0
189 #define HCI_LE_SET_EVENT_MASK 0x2001
190 #define HCI_LE_READ_BUFFER_SIZE 0x2002
191 #define HCI_LE_READ_LOCAL_SUPPORTED_FEATURES 0x2003
192 #define HCI_LE_SET_RANDOM_ADDR 0x2005
194 #define HCI_LE_SET_ADV_PARAM 0x2006
195 #define HCI_LE_READ_ADV_CHANNEL_TX_POWER 0x2007
196 #define HCI_LE_SET_ADV_DATA 0x2008
197 #define HCI_LE_SET_SCAN_RSP_DATA 0x2009
198 #define HCI_LE_SET_ADV_ENABLE 0x200A
199 #define HCI_LE_SET_SCAN_PARAM 0x200B
200 #define HCI_LE_SET_SCAN_ENABLE 0x200C
201 #define HCI_LE_CREATE_CONNECTION 0x200D
202 #define HCI_LE_CREATE_CONNECTION_CANCEL 0x200E
203 #define HCI_LE_READ_WHITE_LIST_SIZE 0x200F
205 #define HCI_LE_CLEAR_WHITE_LIST 0x2010
206 #define HCI_LE_ADD_WHITE_LIST 0x2011
207 #define HCI_LE_REMOVE_WHITE_LIST 0x2012
208 #define HCI_LE_CONNECTION_UPDATE 0x2013
210 #define HCI_LE_SET_HOST_CHANNEL_CLASSIFICATION 0x2014
212 #define HCI_LE_READ_CHANNEL_MAP 0x2015
213 #define HCI_LE_READ_REMOTE_USED_FEATURES 0x2016
214 #define HCI_LE_ENCRYPT 0x2017
215 #define HCI_LE_RAND 0x2018
216 #define HCI_LE_START_ENCRYPTION 0x2019
218 #define HCI_LE_LTK_REQ_REPLY 0x201A
219 #define HCI_LE_LTK_REQ_NEG_REPLY 0x201B
220 #define HCI_LE_READ_SUPPORTED_STATES 0x201C
222 #define HCI_LE_RECEIVER_TEST 0x201D
223 #define HCI_LE_TRANSMITTER_TEST 0x201E
224 #define HCI_LE_TEST_END 0x201F
225 // V4.1
226 #define HCI_LE_REMOTE_CONN_PARAM_REQ_REPLY 0x2020
228 #define HCI_LE_REMOTE_CONN_PARAM_REQ_NEG_REPLY 0x2021
229 // V4.2
231 #define HCI_LE_SET_DATA_LENGTH 0x2022
232 #define HCI_LE_READ_SUGGESTED_DEFAULT_DATA_LENGTH 0x2023
233 #define HCI_LE_WRITE_SUGGESTED_DEFAULT_DATA_LENGTH 0x2024
234 #define HCI_LE_READ_LOCAL_P256_PUBLIC_KEY 0x2025
236 #define HCI_LE_GENERATE_DHKEY 0x2026
237 #define HCI_LE_ADD_DEVICE_TO_RESOLVING_LIST 0x2027
239 #define HCI_LE_REMOVE_DEVICE_FROM_RESOLVING_LIST 0x2028
240 #define HCI_LE_CLEAR_RESOLVING_LIST 0x2029
241 #define HCI_LE_READ_RESOLVING_LIST_SIZE 0x202A
242 #define HCI_LE_READ_PEER_RESOLVABLE_ADDRESS 0x202B
243 #define HCI_LE_READ_LOCAL_RESOLVABLE_ADDRESS 0x202C
244 #define HCI_LE_SET_ADDRESS_RESOLUTION_ENABLE 0x202D
246 #define HCI_LE_SET_RESOLVABLE_PRIVATE_ADDRESS_TIMEOUT 0x202E
248 #define HCI_LE_READ_MAX_DATA_LENGTH 0x202F
249 #define HCI_LE_SET_PRIVACY_MODE 0x204E
250 // V5.0
251 #define HCI_LE_READ_PHY 0x2030
252 #define HCI_LE_SET_DEFAULT_PHY 0x2031
253 #define HCI_LE_SET_PHY 0x2032
254 #define HCI_LE_ENHANCED_RECEIVER_TEST 0x2033
255 #define HCI_LE_ENHANCED_TRANSMITTER_TEST 0x2034
256 #define HCI_LE_READ_TX_POWER 0x204B
257 #define HCI_LE_READ_RF_PATH_COMPENSATION 0x204C
258 #define HCI_LE_WRITE_RF_PATH_COMPENSATION 0x204D
259 #define HCI_LE_SET_ADV_SET_RANDOM_ADDRESS 0x2035
261 #define HCI_LE_SET_EXT_ADV_PARAMETERS 0x2036
262 #define HCI_LE_SET_EXT_ADV_DATA 0x2037
263 #define HCI_LE_SET_EXT_SCAN_RESPONSE_DATA 0x2038
264 #define HCI_LE_SET_EXT_ADV_ENABLE 0x2039
265 #define HCI_LE_READ_MAX_ADV_DATA_LENGTH 0x203A
266 #define HCI_LE_READ_NUM_SUPPORTED_ADV_SETS 0x203B
267 #define HCI_LE_REMOVE_ADV_SET 0x203C
268 #define HCI_LE_CLEAR_ADV_SETS 0x203D
269 #define HCI_LE_SET_PERIODIC_ADV_PARAMETERS 0x203E
270 #define HCI_LE_SET_PERIODIC_ADV_DATA 0x203F
271 #define HCI_LE_SET_PERIODIC_ADV_ENABLE 0x2040
272 #define HCI_LE_SET_EXT_SCAN_PARAMETERS 0x2041
273 #define HCI_LE_SET_EXT_SCAN_ENABLE 0x2042
274 #define HCI_LE_EXT_CREATE_CONN 0x2043
275 
277 // LE Vendor Specific LL Extension Commands
279 #define HCI_EXT_SET_RX_GAIN 0xFC00
280 #define HCI_EXT_SET_TX_POWER 0xFC01
281 #define HCI_EXT_ONE_PKT_PER_EVT 0xFC02
282 #define HCI_EXT_CLK_DIVIDE_ON_HALT 0xFC03
284 #define HCI_EXT_DECLARE_NV_USAGE 0xFC04
285 #define HCI_EXT_DECRYPT 0xFC05
287 #define HCI_EXT_SET_LOCAL_SUPPORTED_FEATURES 0xFC06
288 #define HCI_EXT_SET_FAST_TX_RESP_TIME 0xFC07
289 #define HCI_EXT_MODEM_TEST_TX 0xFC08
290 #define HCI_EXT_MODEM_HOP_TEST_TX 0xFC09
291 #define HCI_EXT_MODEM_TEST_RX 0xFC0A
292 #define HCI_EXT_END_MODEM_TEST 0xFC0B
293 #define HCI_EXT_SET_BDADDR 0xFC0C
295 #define HCI_EXT_SET_SCA 0xFC0D
297 #define HCI_EXT_ENABLE_PTM 0xFC0E
298 #define HCI_EXT_SET_FREQ_TUNE 0xFC0F
299 #define HCI_EXT_SAVE_FREQ_TUNE 0xFC10
300 #define HCI_EXT_SET_MAX_DTM_TX_POWER 0xFC11
301 #define HCI_EXT_MAP_PM_IO_PORT 0xFC12
303 #define HCI_EXT_DISCONNECT_IMMED 0xFC13
305 #define HCI_EXT_PER 0xFC14
306 #define HCI_EXT_PER_BY_CHAN 0xFC15
307 #define HCI_EXT_EXTEND_RF_RANGE 0xFC16
309 #define HCI_EXT_HALT_DURING_RF 0xFC19
312 #define HCI_EXT_OVERRIDE_SL 0xFC1A
314 #define HCI_EXT_BUILD_REVISION 0xFC1B
315 #define HCI_EXT_DELAY_SLEEP 0xFC1C
317 #define HCI_EXT_RESET_SYSTEM 0xFC1D
319 #define HCI_EXT_OVERLAPPED_PROCESSING 0xFC1E
321 #define HCI_EXT_NUM_COMPLETED_PKTS_LIMIT 0xFC1F
323 #define HCI_EXT_GET_CONNECTION_INFO 0xFC20
325 #define HCI_EXT_SET_MAX_DATA_LENGTH 0xFC21
327 #define HCI_EXT_SET_DTM_TX_PKT_CNT 0xFC24
328 #define HCI_EXT_READ_RAND_ADDR 0xFC25
330 #define HCI_EXT_ENHANCED_MODEM_TEST_TX 0xFC27
332 #define HCI_EXT_ENHANCED_MODEM_HOP_TEST_TX 0xFC28
333 #define HCI_EXT_ENHANCED_MODEM_TEST_RX 0xFC29
334 
335 #define HCI_EXT_LL_TEST_MODE 0xFC70
337 
338 #define HCI_EXT_LE_SET_EXT_ADV_DATA 0xFC71
339 #define HCI_EXT_LE_SET_EXT_SCAN_RESPONSE_DATA 0xFC72
340 
342 /*
343 ** HCI Event Codes
344 */
345 
346 // BT Events
347 #define HCI_DISCONNECTION_COMPLETE_EVENT_CODE 0x05
348 #define HCI_ENCRYPTION_CHANGE_EVENT_CODE 0x08
349 #define HCI_READ_REMOTE_INFO_COMPLETE_EVENT_CODE 0x0C
350 #define HCI_COMMAND_COMPLETE_EVENT_CODE 0x0E
351 #define HCI_COMMAND_STATUS_EVENT_CODE 0x0F
352 #define HCI_BLE_HARDWARE_ERROR_EVENT_CODE 0x10
353 #define HCI_NUM_OF_COMPLETED_PACKETS_EVENT_CODE 0x13
354 #define HCI_DATA_BUFFER_OVERFLOW_EVENT 0x1A
355 #define HCI_KEY_REFRESH_COMPLETE_EVENT_CODE 0x30
356 #define HCI_APTO_EXPIRED_EVENT_CODE 0x57
357 
358 // LE Event Code (for LE Meta Events)
359 #define HCI_LE_EVENT_CODE 0x3E
360 
361 // LE Meta Event Codes
362 #define HCI_BLE_CONNECTION_COMPLETE_EVENT 0x01
363 #define HCI_BLE_ADV_REPORT_EVENT 0x02
364 #define HCI_BLE_CONN_UPDATE_COMPLETE_EVENT 0x03
365 #define HCI_BLE_READ_REMOTE_FEATURE_COMPLETE_EVENT 0x04
366 #define HCI_BLE_LTK_REQUESTED_EVENT 0x05
367 // V4.1
368 #define HCI_BLE_REMOTE_CONN_PARAM_REQUEST_EVENT 0x06
369 // V4.2
370 #define HCI_BLE_DATA_LENGTH_CHANGE_EVENT 0x07
371 #define HCI_BLE_READ_LOCAL_P256_PUBLIC_KEY_COMPLETE_EVENT 0x08
372 #define HCI_BLE_GENERATE_DHKEY_COMPLETE_EVENT 0x09
373 #define HCI_BLE_ENHANCED_CONNECTION_COMPLETE_EVENT 0x0A
374 #define HCI_BLE_DIRECT_ADVERTISING_REPORT_EVENT 0x0B
375 // V5.0
376 #define HCI_BLE_PHY_UPDATE_COMPLETE_EVENT 0x0C
377 
378 #define HCI_BLE_EXTENDED_ADV_REPORT_EVENT 0x0D
379 #define HCI_BLE_PERIODIC_ADV_SYNCH_ESTABLISHED_EVENT 0x0E
380 #define HCI_BLE_PERIODIC_ADV_REPORT_EVENT 0x0F
381 #define HCI_BLE_PERIODIC_ADV_SYNCH_LOST_EVENT 0x10
382 #define HCI_BLE_SCAN_TIMEOUT_EVENT 0x11
383 #define HCI_BLE_ADV_SET_TERMINATED_EVENT 0x12
384 #define HCI_BLE_SCAN_REQUEST_RECEIVED_EVENT 0x13
385 #define HCI_BLE_CHANNEL_SELECTION_ALGORITHM_EVENT 0x14
386 // VS Meta Event Codes - Texas Instruments Inc specific!
387 #define HCI_BLE_SCAN_REQ_REPORT_EVENT 0x80
388 
389 #define HCI_VE_EVENT_CODE 0xFF
390 
391 // LE Vendor Specific LL Extension Events
392 #define HCI_EXT_SET_RX_GAIN_EVENT 0x0400
393 #define HCI_EXT_SET_TX_POWER_EVENT 0x0401
394 #define HCI_EXT_ONE_PKT_PER_EVT_EVENT 0x0402
395 #define HCI_EXT_CLK_DIVIDE_ON_HALT_EVENT 0x0403
397 #define HCI_EXT_DECLARE_NV_USAGE_EVENT 0x0404
398 #define HCI_EXT_DECRYPT_EVENT 0x0405
400 #define HCI_EXT_SET_LOCAL_SUPPORTED_FEATURES_EVENT 0x0406
401 #define HCI_EXT_SET_FAST_TX_RESP_TIME_EVENT 0x0407
402 #define HCI_EXT_MODEM_TEST_TX_EVENT 0x0408
403 #define HCI_EXT_MODEM_HOP_TEST_TX_EVENT 0x0409
404 #define HCI_EXT_MODEM_TEST_RX_EVENT 0x040A
405 #define HCI_EXT_END_MODEM_TEST_EVENT 0x040B
406 #define HCI_EXT_SET_BDADDR_EVENT 0x040C
408 #define HCI_EXT_SET_SCA_EVENT 0x040D
410 #define HCI_EXT_ENABLE_PTM_EVENT 0x040E
411 #define HCI_EXT_SET_FREQ_TUNE_EVENT 0x040F
412 #define HCI_EXT_SAVE_FREQ_TUNE_EVENT 0x0410
413 #define HCI_EXT_SET_MAX_DTM_TX_POWER_EVENT 0x0411
414 #define HCI_EXT_MAP_PM_IO_PORT_EVENT 0x0412
416 #define HCI_EXT_DISCONNECT_IMMED_EVENT 0x0413
418 #define HCI_EXT_PER_EVENT 0x0414
419 #define HCI_EXT_PER_BY_CHAN_EVENT 0x0415
420 #define HCI_EXT_EXTEND_RF_RANGE_EVENT 0x0416
422 #define HCI_EXT_HALT_DURING_RF_EVENT 0x0419
425 #define HCI_EXT_OVERRIDE_SL_EVENT 0x041A
426 #define HCI_EXT_BUILD_REVISION_EVENT 0x041B
428 #define HCI_EXT_DELAY_SLEEP_EVENT 0x041C
430 #define HCI_EXT_RESET_SYSTEM_EVENT 0x041D
432 #define HCI_EXT_OVERLAPPED_PROCESSING_EVENT 0x041E
434 #define HCI_EXT_NUM_COMPLETED_PKTS_LIMIT_EVENT 0x041F
436 #define HCI_EXT_GET_CONNECTION_INFO_EVENT 0x0420
438 #define HCI_EXT_SET_MAX_DATA_LENGTH_EVENT 0x0421
440 #define HCI_EXT_SET_DTM_TX_PKT_CNT_EVENT 0x0424
441 #define HCI_EXT_READ_RAND_ADDR_EVENT 0x0425
443 #define HCI_EXT_LE_ADV_EVENT 0x0425
445 #define HCI_EXT_LE_SCAN_EVENT 0x0426
446 
447 #define HCI_EXT_ENHANCED_MODEM_TEST_TX_EVENT 0x0427
448 #define HCI_EXT_ENHANCED_MODEM_HOP_TEST_TX_EVENT 0x0428
449 #define HCI_EXT_ENHANCED_MODEM_TEST_RX_EVENT 0x0429
450 
451 #define HCI_EXT_LL_TEST_MODE_EVENT 0x0470
453 
455  // end of HCI_Constants
457 
458 /*******************************************************************************
459  * TYPEDEFS
460  */
461 
462 /*******************************************************************************
463  * LOCAL VARIABLES
464  */
465 
466 /*******************************************************************************
467  * GLOBAL VARIABLES
468  */
469 
470 /*
471 ** HCI OSAL API
472 */
473 
475 
483 extern void HCI_Init( uint8 taskID );
484 
485 
494 extern void HCI_TL_getCmdResponderID( uint8 taskID );
495 
496 
507 extern uint16 HCI_ProcessEvent( uint8 task_id,
508  uint16 events );
509 
510 
512 
513 #ifdef __cplusplus
514 }
515 #endif
516 
517 #endif /* HCI_TL_H */
This API allows the software components in the Z-Stack to be written independently of the specifics o...
HCI layer interface.
© Copyright 1995-2020, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale