1 /******************************************************************************
3 * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
19 ******************************************************************************/
20 #ifndef __RTL8723A_BT_COEXIST_H__
21 #define __RTL8723A_BT_COEXIST_H__
23 #include <drv_types.h>
24 #include "odm_precomp.h"
28 #define __BT_HANDLEPACKET_C__ 1
29 #define __BT_HCI_C__ 1
30 #define __HALBTC87231ANT_C__ 1
31 #define __HALBTC87232ANT_C__ 1
32 #define __HALBTC8723_C__ 1
33 #define __HALBTCCSR1ANT_C__ 1
34 #define __HALBTCCSR2ANT_C__ 1
35 #define __HALBTCOEXIST_C__ 1
38 #ifdef __BT_C__ // COMMON/BT.h
40 // HEADER/PlatformDef.h
41 typedef enum _RT_MEDIA_STATUS {
42 RT_MEDIA_DISCONNECT = 0,
46 // ===== Below this line is sync from SD7 driver COMMON/BT.h =====
48 #define BT_TMP_BUF_SIZE 100
50 void BT_SignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
51 void BT_WifiScanNotify(PADAPTER padapter, u8 scanType);
52 void BT_WifiAssociateNotify(PADAPTER padapter, u8 action);
53 void BT_WifiMediaStatusNotify(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
54 void BT_SpecialPacketNotify(PADAPTER padapter);
55 void BT_HaltProcess(PADAPTER padapter);
56 void BT_LpsLeave(PADAPTER padapter);
59 #define BT_HsConnectionEstablished(Adapter) _FALSE
60 // ===== End of sync from SD7 driver COMMON/BT.h =====
63 #ifdef __BT_HCI_C__ // COMMON/bt_hci.h
65 // HEADER/SecurityType.h
66 #define TKIP_ENC_KEY_POS 32 //(KEK_LEN+KEK_LEN)
67 #define MAXRSNIELEN 256
73 // Ref: BssDscr in 8185 code. [def. in BssDscr.h]
75 typedef struct _BSS_QOS
77 // Part 0. Ref. 8185 QoS code (From Emily)
79 u8 bdWMMIEBuf[MAX_WMMELE_LENGTH];
82 QOS_ELE_SUBTYPE EleSubType;
84 // Part 2. EDCA Parameter (perAC)
89 u8 QBssLoad[QBSS_LOAD_SIZE];
94 // COMMON/Protocol802_11.h
95 //----------------------------------------------------------------------------
96 // 802.11 Management frame Status Code field
97 //----------------------------------------------------------------------------
98 typedef struct _OCTET_STRING{
101 } OCTET_STRING, *POCTET_STRING;
104 //======================================================================================
106 //======================================================================================
109 AESCCMP_BLK_SIZE = 16, // # octets in an AES block
110 AESCCMP_MAX_PACKET = 4*512, // largest packet size
111 AESCCMP_N_RESERVED = 0, // reserved nonce octet value
112 AESCCMP_A_DATA = 0x40, // the Adata bit in the flags
113 AESCCMP_M_SHIFT = 3, // how much to shift the 3-bit M field
114 AESCCMP_L_SHIFT = 0, // how much to shift the 3-bit L field
115 AESCCMP_L_SIZE = 2, // size of the l(m) length field (in octets)
116 AESCCMP_OFFSET_SC = 22,
117 AESCCMP_OFFSET_DURATION = 4,
118 AESCCMP_OFFSET_A2 = 10,
119 AESCCMP_OFFSET_A4 = 24,
120 AESCCMP_QC_TID_MASK = 0x0f,
121 AESCCMP_BLK_SIZE_TOTAL = 16*16, // Added by Annie for CKIP AES MIC BSOD, 2006-08-17.
122 // 16*8 < 4*60 Resove to 16*16
129 #define PTK_LEN_TKIP 64
131 #define KEY_NONCE_LEN 32
135 typedef struct _CHNL_TXPOWER_TRIPLE
140 } CHNL_TXPOWER_TRIPLE, *PCHNL_TXPOWER_TRIPLE;
143 // ===== Below this line is sync from SD7 driver COMMON/bt_hci.h =====
146 #define SENDTXMEHTOD 2
148 #define SENDTXMEHTOD 1 // 0=workitem, 1= SendDirectily, 2=thread
151 //=============================================
152 // The following is for BT 3.0 + HS HCI COMMAND ERRORS CODES
153 //=============================================
155 #define Max80211PALPDUSize 1492
156 #define Max80211AMPASSOCLen 672
157 #define MinGUserPrio 4
158 #define MaxGUserPrio 7
159 #define BEUserPrio0 0
160 #define BEUserPrio1 3
161 #define Max80211BeaconPeriod 2000
162 #define ShortRangeModePowerMax 4
164 #define BT_Default_Chnl 10
165 #define ACLDataHeaderLen 4
167 #define BTTotalDataBlockNum 0x100
168 #define BTLocalBufNum 0x200
169 #define BTMaxDataBlockLen 0x800
170 #define BTTOTALBANDWIDTH 0x7530
171 #define BTMAXBANDGUBANDWIDTH 0x4e20
172 #define TmpLocalBufSize 0x100
173 #define BTSynDataPacketLength 0xff
174 //=============================================
176 #define BTMaxAuthCount 5
177 #define BTMaxAsocCount 5
179 #define MAX_LOGICAL_LINK_NUM 2 //temporarily define
180 #define MAX_BT_ASOC_ENTRY_NUM 2 //temporarily define
182 #define INVALID_PL_HANDLE 0xff
183 #define INVALID_ENTRY_NUM 0xff
184 //=============================================
186 #define CAM_BT_START_INDEX (HALF_CAM_ENTRY - 4) // MAX_BT_ASOC_ENTRY_NUM : 4 !!!
187 #define BT_HWCAM_STAR CAM_BT_START_INDEX // We used HALF_CAM_ENTRY ~ HALF_CAM_ENTRY -MAX_BT_ASOC_ENTRY_NUM
189 typedef enum _HCI_STATUS
191 HCI_STATUS_SUCCESS =0x00, //Success
192 HCI_STATUS_UNKNOW_HCI_CMD =0x01, //Unknown HCI Command
193 HCI_STATUS_UNKNOW_CONNECT_ID =0X02, //Unknown Connection Identifier
194 HCI_STATUS_HW_FAIL =0X03, //Hardware Failure
195 HCI_STATUS_PAGE_TIMEOUT =0X04, //Page Timeout
196 HCI_STATUS_AUTH_FAIL =0X05, //Authentication Failure
197 HCI_STATUS_PIN_OR_KEY_MISSING =0X06, //PIN or Key Missing
198 HCI_STATUS_MEM_CAP_EXCEED =0X07, //Memory Capacity Exceeded
199 HCI_STATUS_CONNECT_TIMEOUT =0X08, //Connection Timeout
200 HCI_STATUS_CONNECT_LIMIT =0X09, //Connection Limit Exceeded
201 HCI_STATUS_SYN_CONNECT_LIMIT =0X0a, //Synchronous Connection Limit To A Device Exceeded
202 HCI_STATUS_ACL_CONNECT_EXISTS =0X0b, //ACL Connection Already Exists
203 HCI_STATUS_CMD_DISALLOW =0X0c, //Command Disallowed
204 HCI_STATUS_CONNECT_RJT_LIMIT_RESOURCE =0X0d, //Connection Rejected due to Limited Resources
205 HCI_STATUS_CONNECT_RJT_SEC_REASON =0X0e, //Connection Rejected Due To Security Reasons
206 HCI_STATUS_CONNECT_RJT_UNACCEPT_BD_ADDR =0X0f, //Connection Rejected due to Unacceptable BD_ADDR
207 HCI_STATUS_CONNECT_ACCEPT_TIMEOUT =0X10, //Connection Accept Timeout Exceeded
208 HCI_STATUS_UNSUPPORT_FEATURE_PARA_VALUE =0X11, //Unsupported Feature or Parameter Value
209 HCI_STATUS_INVALID_HCI_CMD_PARA_VALUE =0X12, //Invalid HCI Command Parameters
210 HCI_STATUS_REMOTE_USER_TERMINATE_CONNECT =0X13, //Remote User Terminated Connection
211 HCI_STATUS_REMOTE_DEV_TERMINATE_LOW_RESOURCE =0X14, //Remote Device Terminated Connection due to Low Resources
212 HCI_STATUS_REMOTE_DEV_TERMINATE_CONNECT_POWER_OFF =0X15, //Remote Device Terminated Connection due to Power Off
213 HCI_STATUS_CONNECT_TERMINATE_LOCAL_HOST =0X16, //Connection Terminated By Local Host
214 HCI_STATUS_REPEATE_ATTEMPT =0X17, //Repeated Attempts
215 HCI_STATUS_PAIR_NOT_ALLOW =0X18, //Pairing Not Allowed
216 HCI_STATUS_UNKNOW_LMP_PDU =0X19, //Unknown LMP PDU
217 HCI_STATUS_UNSUPPORT_REMOTE_LMP_FEATURE =0X1a, //Unsupported Remote Feature / Unsupported LMP Feature
218 HCI_STATUS_SOC_OFFSET_REJECT =0X1b, //SCO Offset Rejected
219 HCI_STATUS_SOC_INTERVAL_REJECT =0X1c, //SCO Interval Rejected
220 HCI_STATUS_SOC_AIR_MODE_REJECT =0X1d,//SCO Air Mode Rejected
221 HCI_STATUS_INVALID_LMP_PARA =0X1e, //Invalid LMP Parameters
222 HCI_STATUS_UNSPECIFIC_ERROR =0X1f, //Unspecified Error
223 HCI_STATUS_UNSUPPORT_LMP_PARA_VALUE =0X20, //Unsupported LMP Parameter Value
224 HCI_STATUS_ROLE_CHANGE_NOT_ALLOW =0X21, //Role Change Not Allowed
225 HCI_STATUS_LMP_RESPONSE_TIMEOUT =0X22, //LMP Response Timeout
226 HCI_STATUS_LMP_ERROR_TRANSACTION_COLLISION =0X23, //LMP Error Transaction Collision
227 HCI_STATUS_LMP_PDU_NOT_ALLOW =0X24, //LMP PDU Not Allowed
228 HCI_STATUS_ENCRYPTION_MODE_NOT_ALLOW =0X25, //Encryption Mode Not Acceptable
229 HCI_STATUS_LINK_KEY_CAN_NOT_CHANGE =0X26, //Link Key Can Not be Changed
230 HCI_STATUS_REQUEST_QOS_NOT_SUPPORT =0X27, //Requested QoS Not Supported
231 HCI_STATUS_INSTANT_PASSED =0X28, //Instant Passed
232 HCI_STATUS_PAIRING_UNIT_KEY_NOT_SUPPORT =0X29, //Pairing With Unit Key Not Supported
233 HCI_STATUS_DIFFERENT_TRANSACTION_COLLISION =0X2a, //Different Transaction Collision
234 HCI_STATUS_RESERVE_1 =0X2b, //Reserved
235 HCI_STATUS_QOS_UNACCEPT_PARA =0X2c, //QoS Unacceptable Parameter
236 HCI_STATUS_QOS_REJECT =0X2d, //QoS Rejected
237 HCI_STATUS_CHNL_CLASSIFICATION_NOT_SUPPORT =0X2e, //Channel Classification Not Supported
238 HCI_STATUS_INSUFFICIENT_SECURITY =0X2f, //Insufficient Security
239 HCI_STATUS_PARA_OUT_OF_RANGE =0x30, //Parameter Out Of Mandatory Range
240 HCI_STATUS_RESERVE_2 =0X31, //Reserved
241 HCI_STATUS_ROLE_SWITCH_PENDING =0X32, //Role Switch Pending
242 HCI_STATUS_RESERVE_3 =0X33, //Reserved
243 HCI_STATUS_RESERVE_SOLT_VIOLATION =0X34, //Reserved Slot Violation
244 HCI_STATUS_ROLE_SWITCH_FAIL =0X35, //Role Switch Failed
245 HCI_STATUS_EXTEND_INQUIRY_RSP_TOO_LARGE =0X36, //Extended Inquiry Response Too Large
246 HCI_STATUS_SEC_SIMPLE_PAIRING_NOT_SUPPORT =0X37, //Secure Simple Pairing Not Supported By Host.
247 HCI_STATUS_HOST_BUSY_PAIRING =0X38, //Host Busy - Pairing
248 HCI_STATUS_CONNECT_REJ_NOT_SUIT_CHNL_FOUND =0X39, //Connection Rejected due to No Suitable Channel Found
249 HCI_STATUS_CONTROLLER_BUSY =0X3a //CONTROLLER BUSY
250 } HCI_STATUS,*PHCI_STATUS;
252 //=============================================
253 // The following is for BT 3.0 + HS HCI COMMAND
254 //=============================================
256 //bit 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
261 #define OGF_LINK_CONTROL_COMMANDS 0x01
262 typedef enum _LINK_CONTROL_COMMANDS
265 HCI_INQUIRY_CANCEL =0x0002,
266 HCI_PERIODIC_INQUIRY_MODE =0x0003,
267 HCI_EXIT_PERIODIC_INQUIRY_MODE =0x0004,
268 HCI_CREATE_CONNECTION =0x0005,
269 HCI_DISCONNECT =0x0006,
270 HCI_CREATE_CONNECTION_CANCEL =0x0008,
271 HCI_ACCEPT_CONNECTIONREQUEST =0x0009,
272 HCI_REJECT_CONNECTION_REQUEST =0x000a,
273 HCI_LINK_KEY_REQUEST_REPLY =0x000b,
274 HCI_LINK_KEY_REQUEST_NEGATIVE_REPLY =0x000c,
275 HCI_PIN_CODE_REQUEST_REPLY =0x000d,
276 HCI_PIN_CODE_REQUEST_NEGATIVE_REPLY =0x000e,
277 HCI_CHANGE_CONNECTION_PACKET_TYPE =0x000f,
278 HCI_AUTHENTICATION_REQUESTED =0x0011,
279 HCI_SET_CONNECTION_ENCRYPTION =0x0013,
280 HCI_CHANGE_CONNECTION_LINK_KEY =0x0015,
281 HCI_MASTER_LINK_KEY =0x0017,
282 HCI_REMOTE_NAME_REQUEST =0x0019,
283 HCI_REMOTE_NAME_REQUEST_CANCEL =0x001a,
284 HCI_READ_REMOTE_SUPPORTED_FEATURES =0x001b,
285 HCI_READ_REMOTE_EXTENDED_FEATURES =0x001c,
286 HCI_READ_REMOTE_VERSION_INFORMATION =0x001d,
287 HCI_READ_CLOCK_OFFSET =0x001f,
288 HCI_READ_LMP_HANDLE =0x0020,
289 HCI_SETUP_SYNCHRONOUS_CONNECTION =0x0028,
290 HCI_ACCEPT_SYNCHRONOUS_CONNECTION_REQUEST =0x0029,
291 HCI_REJECT_SYNCHRONOUS_CONNECTION_REQUEST =0x002a,
292 HCI_IO_CAPABILITY_REQUEST_REPLY =0x002b,
293 HCI_USER_CONFIRMATION_REQUEST_REPLY =0x002c,
294 HCI_USER_CONFIRMATION_REQUEST_NEGATIVE_REPLY =0x002d,
295 HCI_USER_PASSKEY_REQUEST_REPLY =0x002e,
296 HCI_USER_PASSKEY_REQUESTNEGATIVE_REPLY =0x002f,
297 HCI_REMOTE_OOB_DATA_REQUEST_REPLY =0x0030,
298 HCI_REMOTE_OOB_DATA_REQUEST_NEGATIVE_REPLY =0x0033,
299 HCI_IO_CAPABILITY_REQUEST_NEGATIVE_REPLY =0x0034,
300 HCI_CREATE_PHYSICAL_LINK =0x0035,
301 HCI_ACCEPT_PHYSICAL_LINK =0x0036,
302 HCI_DISCONNECT_PHYSICAL_LINK =0x0037,
303 HCI_CREATE_LOGICAL_LINK =0x0038,
304 HCI_ACCEPT_LOGICAL_LINK =0x0039,
305 HCI_DISCONNECT_LOGICAL_LINK =0x003a,
306 HCI_LOGICAL_LINK_CANCEL =0x003b,
307 HCI_FLOW_SPEC_MODIFY =0x003c
308 } LINK_CONTROL_COMMANDS,*PLINK_CONTROL_COMMANDS;
311 #define OGF_HOLD_MODE_COMMAND 0x02
312 typedef enum _HOLD_MODE_COMMAND
314 HCI_HOLD_MODE =0x0001,
315 HCI_SNIFF_MODE =0x0002,
316 HCI_EXIT_SNIFF_MODE =0x0003,
317 HCI_PARK_STATE =0x0005,
318 HCI_EXIT_PARK_STATE =0x0006,
319 HCI_QOS_SETUP =0x0007,
320 HCI_ROLE_DISCOVERY =0x0009,
321 HCI_SWITCH_ROLE =0x000b,
322 HCI_READ_LINK_POLICY_SETTINGS =0x000c,
323 HCI_WRITE_LINK_POLICY_SETTINGS =0x000d,
324 HCI_READ_DEFAULT_LINK_POLICY_SETTINGS =0x000e,
325 HCI_WRITE_DEFAULT_LINK_POLICY_SETTINGS =0x000f,
326 HCI_FLOW_SPECIFICATION =0x0010,
327 HCI_SNIFF_SUBRATING =0x0011
328 } HOLD_MODE_COMMAND,*PHOLD_MODE_COMMAND;
331 #define OGF_SET_EVENT_MASK_COMMAND 0x03
332 typedef enum _SET_EVENT_MASK_COMMAND
334 HCI_SET_EVENT_MASK =0x0001,
336 HCI_SET_EVENT_FILTER =0x0005,
338 HCI_READ_PIN_TYPE =0x0009,
339 HCI_WRITE_PIN_TYPE =0x000a,
340 HCI_CREATE_NEW_UNIT_KEY =0x000b,
341 HCI_READ_STORED_LINK_KEY =0x000d,
342 HCI_WRITE_STORED_LINK_KEY =0x0011,
343 HCI_DELETE_STORED_LINK_KEY =0x0012,
344 HCI_WRITE_LOCAL_NAME =0x0013,
345 HCI_READ_LOCAL_NAME =0x0014,
346 HCI_READ_CONNECTION_ACCEPT_TIMEOUT =0x0015,
347 HCI_WRITE_CONNECTION_ACCEPT_TIMEOUT =0x0016,
348 HCI_READ_PAGE_TIMEOUT =0x0017,
349 HCI_WRITE_PAGE_TIMEOUT =0x0018,
350 HCI_READ_SCAN_ENABLE =0x0019,
351 HCI_WRITE_SCAN_ENABLE =0x001a,
352 HCI_READ_PAGE_SCAN_ACTIVITY =0x001b,
353 HCI_WRITE_PAGE_SCAN_ACTIVITY =0x001c,
354 HCI_READ_INQUIRY_SCAN_ACTIVITY =0x001d,
355 HCI_WRITE_INQUIRY_SCAN_ACTIVITY =0x001e,
356 HCI_READ_AUTHENTICATION_ENABLE =0x001f,
357 HCI_WRITE_AUTHENTICATION_ENABLE =0x0020,
358 HCI_READ_CLASS_OF_DEVICE =0x0023,
359 HCI_WRITE_CLASS_OF_DEVICE =0x0024,
360 HCI_READ_VOICE_SETTING =0x0025,
361 HCI_WRITE_VOICE_SETTING =0x0026,
362 HCI_READ_AUTOMATIC_FLUSH_TIMEOUT =0x0027,
363 HCI_WRITE_AUTOMATIC_FLUSH_TIMEOUT =0x0028,
364 HCI_READ_NUM_BROADCAST_RETRANSMISSIONS =0x0029,
365 HCI_WRITE_NUM_BROADCAST_RETRANSMISSIONS =0x002a,
366 HCI_READ_HOLD_MODE_ACTIVITY =0x002b,
367 HCI_WRITE_HOLD_MODE_ACTIVITY =0x002c,
368 HCI_READ_SYNCHRONOUS_FLOW_CONTROL_ENABLE =0x002e,
369 HCI_WRITE_SYNCHRONOUS_FLOW_CONTROL_ENABLE =0x002f,
370 HCI_SET_CONTROLLER_TO_HOST_FLOW_CONTROL =0x0031,
371 HCI_HOST_BUFFER_SIZE =0x0033,
372 HCI_HOST_NUMBER_OF_COMPLETED_PACKETS =0x0035,
373 HCI_READ_LINK_SUPERVISION_TIMEOUT =0x0036,
374 HCI_WRITE_LINK_SUPERVISION_TIMEOUT =0x0037,
375 HCI_READ_NUMBER_OF_SUPPORTED_IAC =0x0038,
376 HCI_READ_CURRENT_IAC_LAP =0x0039,
377 HCI_WRITE_CURRENT_IAC_LAP =0x003a,
378 HCI_READ_PAGE_SCAN_MODE =0x003d,
379 HCI_WRITE_PAGE_SCAN_MODE =0x003e,
380 HCI_SET_AFH_HOST_CHANNEL_CLASSIFICATION =0x003f,
381 HCI_READ_INQUIRY_SCAN_TYPE =0x0042,
382 HCI_WRITE_INQUIRY_SCAN_TYPE =0x0043,
383 HCI_READ_INQUIRY_MODE =0x0044,
384 HCI_WRITE_INQUIRY_MODE =0x0045,
385 HCI_READ_PAGE_SCAN_TYPE =0x0046,
386 HCI_WRITE_PAGE_SCAN_TYPE =0x0047,
387 HCI_READ_AFH_CHANNEL_ASSESSMENT_MODE =0x0048,
388 HCI_WRITE_AFH_CHANNEL_ASSESSMENT_MODE =0x0049,
389 HCI_READ_EXTENDED_INQUIRY_RESPONSE =0x0051,
390 HCI_WRITE_EXTENDED_INQUIRY_RESPONSE =0x0052,
391 HCI_REFRESH_ENCRYPTION_KEY =0x0053,
392 HCI_READ_SIMPLE_PAIRING_MODE =0x0055,
393 HCI_WRITE_SIMPLE_PAIRING_MODE =0x0056,
394 HCI_READ_LOCAL_OOB_DATA =0x0057,
395 HCI_READ_INQUIRY_RESPONSE_TRANSMIT_POWER_LEVEL =0x0058,
396 HCI_WRITE_INQUIRY_TRANSMIT_POWER_LEVEL =0x0059,
397 HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING =0x005a,
398 HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING =0x005b,
399 HCI_ENHANCED_FLUSH =0x005f,
400 HCI_SEND_KEYPRESS_NOTIFICATION =0x0060,
401 HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT =0x0061,
402 HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT =0x0062,
403 HCI_SET_EVENT_MASK_PAGE_2 =0x0063,
404 HCI_READ_LOCATION_DATA =0x0064,
405 HCI_WRITE_LOCATION_DATA =0x0065,
406 HCI_READ_FLOW_CONTROL_MODE =0x0066,
407 HCI_WRITE_FLOW_CONTROL_MODE =0x0067,
408 HCI_READ_ENHANCE_TRANSMIT_POWER_LEVEL =0x0068,
409 HCI_READ_BEST_EFFORT_FLUSH_TIMEOUT =0x0069,
410 HCI_WRITE_BEST_EFFORT_FLUSH_TIMEOUT =0x006a,
411 HCI_SHORT_RANGE_MODE =0x006b
412 }SET_EVENT_MASK_COMMAND,*PSET_EVENT_MASK_COMMAND;
415 #define OGF_INFORMATIONAL_PARAMETERS 0x04
416 typedef enum _INFORMATIONAL_PARAMETERS
418 HCI_READ_LOCAL_VERSION_INFORMATION =0x0001,
419 HCI_READ_LOCAL_SUPPORTED_COMMANDS =0x0002,
420 HCI_READ_LOCAL_SUPPORTED_FEATURES =0x0003,
421 HCI_READ_LOCAL_EXTENDED_FEATURES =0x0004,
422 HCI_READ_BUFFER_SIZE =0x0005,
423 HCI_READ_BD_ADDR =0x0009,
424 HCI_READ_DATA_BLOCK_SIZE =0x000a
425 } INFORMATIONAL_PARAMETERS,*PINFORMATIONAL_PARAMETERS;
428 #define OGF_STATUS_PARAMETERS 0x05
429 typedef enum _STATUS_PARAMETERS
431 HCI_READ_FAILED_CONTACT_COUNTER =0x0001,
432 HCI_RESET_FAILED_CONTACT_COUNTER =0x0002,
433 HCI_READ_LINK_QUALITY =0x0003,
434 HCI_READ_RSSI =0x0005,
435 HCI_READ_AFH_CHANNEL_MAP =0x0006,
436 HCI_READ_CLOCK =0x0007,
437 HCI_READ_ENCRYPTION_KEY_SIZE =0x0008,
438 HCI_READ_LOCAL_AMP_INFO =0x0009,
439 HCI_READ_LOCAL_AMP_ASSOC =0x000a,
440 HCI_WRITE_REMOTE_AMP_ASSOC =0x000b
441 } STATUS_PARAMETERS,*PSTATUS_PARAMETERS;
444 #define OGF_TESTING_COMMANDS 0x06
445 typedef enum _TESTING_COMMANDS
447 HCI_READ_LOOPBACK_MODE =0x0001,
448 HCI_WRITE_LOOPBACK_MODE =0x0002,
449 HCI_ENABLE_DEVICE_UNDER_TEST_MODE =0x0003,
450 HCI_WRITE_SIMPLE_PAIRING_DEBUG_MODE =0x0004,
451 HCI_ENABLE_AMP_RECEIVER_REPORTS =0x0007,
452 HCI_AMP_TEST_END =0x0008,
453 HCI_AMP_TEST_COMMAND =0x0009
454 } TESTING_COMMANDS,*PTESTING_COMMANDS;
457 #define OGF_EXTENSION 0X3f
458 typedef enum _HCI_EXTENSION_COMMANDS
460 HCI_SET_ACL_LINK_DATA_FLOW_MODE =0x0010,
461 HCI_SET_ACL_LINK_STATUS =0x0020,
462 HCI_SET_SCO_LINK_STATUS =0x0030,
463 HCI_SET_RSSI_VALUE =0x0040,
464 HCI_SET_CURRENT_BLUETOOTH_STATUS =0x0041,
466 //The following is for RTK8723
467 HCI_EXTENSION_VERSION_NOTIFY =0x0100,
468 HCI_LINK_STATUS_NOTIFY =0x0101,
469 HCI_BT_OPERATION_NOTIFY =0x0102,
470 HCI_ENABLE_WIFI_SCAN_NOTIFY =0x0103,
473 //The following is for IVT
474 HCI_WIFI_CURRENT_CHANNEL =0x0300,
475 HCI_WIFI_CURRENT_BANDWIDTH =0x0301,
476 HCI_WIFI_CONNECTION_STATUS =0x0302,
477 } HCI_EXTENSION_COMMANDS,*PHCI_EXTENSION_COMMANDS;
479 typedef enum _BT_SPEC
484 BT_SPEC_2_0_EDR =0x03,
485 BT_SPEC_2_1_EDR =0x04,
486 BT_SPEC_3_0_HS =0x05,
490 //=============================================
491 // The following is for BT 3.0 + HS EVENTS
492 //=============================================
493 typedef enum _HCI_EVENT
495 HCI_EVENT_INQUIRY_COMPLETE =0x01,
496 HCI_EVENT_INQUIRY_RESULT =0x02,
497 HCI_EVENT_CONNECTION_COMPLETE =0x03,
498 HCI_EVENT_CONNECTION_REQUEST =0x04,
499 HCI_EVENT_DISCONNECTION_COMPLETE =0x05,
500 HCI_EVENT_AUTHENTICATION_COMPLETE =0x06,
501 HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE =0x07,
502 HCI_EVENT_ENCRYPTION_CHANGE =0x08,
503 HCI_EVENT_CHANGE_LINK_KEY_COMPLETE =0x09,
504 HCI_EVENT_MASTER_LINK_KEY_COMPLETE =0x0a,
505 HCI_EVENT_READ_REMOTE_SUPPORT_FEATURES_COMPLETE =0x0b,
506 HCI_EVENT_READ_REMOTE_VER_INFO_COMPLETE =0x0c,
507 HCI_EVENT_QOS_SETUP_COMPLETE =0x0d,
508 HCI_EVENT_COMMAND_COMPLETE =0x0e,
509 HCI_EVENT_COMMAND_STATUS =0x0f,
510 HCI_EVENT_HARDWARE_ERROR =0x10,
511 HCI_EVENT_FLUSH_OCCRUED =0x11,
512 HCI_EVENT_ROLE_CHANGE =0x12,
513 HCI_EVENT_NUMBER_OF_COMPLETE_PACKETS =0x13,
514 HCI_EVENT_MODE_CHANGE =0x14,
515 HCI_EVENT_RETURN_LINK_KEYS =0x15,
516 HCI_EVENT_PIN_CODE_REQUEST =0x16,
517 HCI_EVENT_LINK_KEY_REQUEST =0x17,
518 HCI_EVENT_LINK_KEY_NOTIFICATION =0x18,
519 HCI_EVENT_LOOPBACK_COMMAND =0x19,
520 HCI_EVENT_DATA_BUFFER_OVERFLOW =0x1a,
521 HCI_EVENT_MAX_SLOTS_CHANGE =0x1b,
522 HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE =0x1c,
523 HCI_EVENT_CONNECT_PACKET_TYPE_CHANGE =0x1d,
524 HCI_EVENT_QOS_VIOLATION =0x1e,
525 HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE =0x20,
526 HCI_EVENT_FLOW_SEPC_COMPLETE =0x21,
527 HCI_EVENT_INQUIRY_RESULT_WITH_RSSI =0x22,
528 HCI_EVENT_READ_REMOTE_EXT_FEATURES_COMPLETE =0x23,
529 HCI_EVENT_SYNC_CONNECT_COMPLETE =0x2c,
530 HCI_EVENT_SYNC_CONNECT_CHANGE =0x2d,
531 HCI_EVENT_SNIFFER_SUBRATING =0x2e,
532 HCI_EVENT_EXTENTED_INQUIRY_RESULT =0x2f,
533 HCI_EVENT_ENCRYPTION_KEY_REFLASH_COMPLETE =0x30,
534 HCI_EVENT_IO_CAPIBILITY_COMPLETE =0x31,
535 HCI_EVENT_IO_CAPIBILITY_RESPONSE =0x32,
536 HCI_EVENT_USER_CONFIRMTION_REQUEST =0x33,
537 HCI_EVENT_USER_PASSKEY_REQUEST =0x34,
538 HCI_EVENT_REMOTE_OOB_DATA_REQUEST =0x35,
539 HCI_EVENT_SIMPLE_PAIRING_COMPLETE =0x36,
540 HCI_EVENT_LINK_SUPERVISION_TIMEOUT_CHANGE =0x38,
541 HCI_EVENT_ENHANCED_FLUSH_COMPLETE =0x39,
542 HCI_EVENT_USER_PASSKEY_NOTIFICATION =0x3b,
543 HCI_EVENT_KEYPRESS_NOTIFICATION =0x3c,
544 HCI_EVENT_REMOTE_HOST_SUPPORT_FEATURES_NOTIFICATION =0x3d,
545 HCI_EVENT_PHY_LINK_COMPLETE =0x40,
546 HCI_EVENT_CHANNEL_SELECT =0x41,
547 HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE =0x42,
548 HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING =0x43,
549 HCI_EVENT_PHY_LINK_RECOVER =0x44,
550 HCI_EVENT_LOGICAL_LINK_COMPLETE =0x45,
551 HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE =0x46,
552 HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE =0x47,
553 HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS =0x48,
554 HCI_EVENT_AMP_START_TEST =0x49,
555 HCI_EVENT_AMP_TEST_END =0x4a,
556 HCI_EVENT_AMP_RECEIVER_REPORT =0x4b,
557 HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE =0x4c,
558 HCI_EVENT_AMP_STATUS_CHANGE =0x4d,
559 HCI_EVENT_EXTENSION_RTK =0xfe,
560 HCI_EVENT_EXTENSION_MOTO =0xff,
561 }HCI_EVENT, *PHCI_EVENT;
563 typedef enum _HCI_EXTENSION_EVENT_MOTO
565 HCI_EVENT_GET_BT_RSSI =0x01,
566 } HCI_EXTENSION_EVENT_MOTO, *PHCI_EXTENSION_EVENT_MOTO;
568 typedef enum _HCI_EXTENSION_EVENT_RTK
570 HCI_EVENT_EXT_WIFI_SCAN_NOTIFY =0x01,
571 } HCI_EXTENSION_EVENT_RTK, *PHCI_EXTENSION_EVENT_RTK;
573 typedef enum _HCI_EVENT_MASK_PAGE_2
575 EMP2_HCI_EVENT_PHY_LINK_COMPLETE =0x0000000000000001,
576 EMP2_HCI_EVENT_CHANNEL_SELECT =0x0000000000000002,
577 EMP2_HCI_EVENT_DISCONNECT_PHY_LINK_COMPLETE =0x0000000000000004,
578 EMP2_HCI_EVENT_PHY_LINK_LOSS_EARLY_WARNING =0x0000000000000008,
579 EMP2_HCI_EVENT_PHY_LINK_RECOVER =0x0000000000000010,
580 EMP2_HCI_EVENT_LOGICAL_LINK_COMPLETE =0x0000000000000020,
581 EMP2_HCI_EVENT_DISCONNECT_LOGICAL_LINK_COMPLETE =0x0000000000000040,
582 EMP2_HCI_EVENT_FLOW_SPEC_MODIFY_COMPLETE =0x0000000000000080,
583 EMP2_HCI_EVENT_NUM_OF_COMPLETE_DATA_BLOCKS =0x0000000000000100,
584 EMP2_HCI_EVENT_AMP_START_TEST =0x0000000000000200,
585 EMP2_HCI_EVENT_AMP_TEST_END =0x0000000000000400,
586 EMP2_HCI_EVENT_AMP_RECEIVER_REPORT =0x0000000000000800,
587 EMP2_HCI_EVENT_SHORT_RANGE_MODE_CHANGE_COMPLETE =0x0000000000001000,
588 EMP2_HCI_EVENT_AMP_STATUS_CHANGE =0x0000000000002000,
589 } HCI_EVENT_MASK_PAGE_2, *PHCI_EVENT_MASK_PAGE_2;
591 typedef enum _HCI_STATE_MACHINE
593 HCI_STATE_STARTING =0x01,
594 HCI_STATE_CONNECTING =0x02,
595 HCI_STATE_AUTHENTICATING =0x04,
596 HCI_STATE_CONNECTED =0x08,
597 HCI_STATE_DISCONNECTING =0x10,
598 HCI_STATE_DISCONNECTED =0x20
599 } HCI_STATE_MACHINE, *PHCI_STATE_MACHINE;
601 typedef enum _AMP_ASSOC_STRUCTURE_TYPE
604 AMP_PREFERRED_CHANNEL_LIST =0x02,
605 AMP_CONNECTED_CHANNEL =0x03,
606 AMP_80211_PAL_CAP_LIST =0x04,
607 AMP_80211_PAL_VISION =0x05,
608 AMP_RESERVED_FOR_TESTING =0x33
609 } AMP_ASSOC_STRUCTURE_TYPE, *PAMP_ASSOC_STRUCTURE_TYPE;
611 typedef enum _AMP_BTAP_TYPE
616 } AMP_BTAP_TYPE, *PAMP_BTAP_TYPE;
618 typedef enum _HCI_STATE_WITH_CMD
620 STATE_CMD_CREATE_PHY_LINK,
621 STATE_CMD_ACCEPT_PHY_LINK,
622 STATE_CMD_DISCONNECT_PHY_LINK,
623 STATE_CMD_CONNECT_ACCEPT_TIMEOUT,
624 STATE_CMD_MAC_START_COMPLETE,
625 STATE_CMD_MAC_START_FAILED,
626 STATE_CMD_MAC_CONNECT_COMPLETE,
627 STATE_CMD_MAC_CONNECT_FAILED,
628 STATE_CMD_MAC_DISCONNECT_INDICATE,
629 STATE_CMD_MAC_CONNECT_CANCEL_INDICATE,
630 STATE_CMD_4WAY_FAILED,
631 STATE_CMD_4WAY_SUCCESSED,
632 STATE_CMD_ENTER_STATE,
633 STATE_CMD_NO_SUCH_CMD,
634 } HCI_STATE_WITH_CMD, *PHCI_STATE_WITH_CMD;
636 typedef enum _HCI_SERVICE_TYPE
641 } HCI_SERVICE_TYPE, *PHCI_SERVICE_TYPE;
643 typedef enum _HCI_TRAFFIC_MODE
645 TRAFFIC_MODE_BEST_EFFORT =0x00,
646 TRAFFIC_MODE_GUARANTEED_LATENCY =0x01,
647 TRAFFIC_MODE_GUARANTEED_BANDWIDTH =0x02,
648 TRAFFIC_MODE_GUARANTEED_LATENCY_AND_BANDWIDTH =0x03
649 } HCI_TRAFFIC_MODE, *PHCI_TRAFFIC_MODE;
651 #define HCIOPCODE(_OCF, _OGF) (_OGF<<10|_OCF)
652 #define HCIOPCODELOW(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)&0x00ff)
653 #define HCIOPCODEHIGHT(_OCF, _OGF) (u8)(HCIOPCODE(_OCF, _OGF)>>8)
655 #define TWOBYTE_HIGHTBYTE(_DATA) (u8)(_DATA>>8)
656 #define TWOBYTE_LOWBYTE(_DATA) (u8)(_DATA)
658 typedef enum _AMP_STATUS
660 AMP_STATUS_AVA_PHY_PWR_DWN = 0x0,
661 AMP_STATUS_BT_USE_ONLY = 0x1,
662 AMP_STATUS_NO_CAPACITY_FOR_BT = 0x2,
663 AMP_STATUS_LOW_CAPACITY_FOR_BT = 0x3,
664 AMP_STATUS_MEDIUM_CAPACITY_FOR_BT = 0x4,
665 AMP_STATUS_HIGH_CAPACITY_FOR_BT = 0x5,
666 AMP_STATUS_FULL_CAPACITY_FOR_BT = 0x6
667 } AMP_STATUS, *PAMP_STATUS;
678 typedef enum _BT_CONNECT_TYPE
680 BT_CONNECT_AUTH_REQ =0x00,
681 BT_CONNECT_AUTH_RSP =0x01,
682 BT_CONNECT_ASOC_REQ =0x02,
683 BT_CONNECT_ASOC_RSP =0x03,
685 } BT_CONNECT_TYPE, *PBT_CONNECT_TYPE;
687 typedef enum _BT_LL_SERVICE_TYPE
691 } BT_LL_SERVICE_TYPE;
693 typedef enum _BT_LL_FLOWSPEC
695 BT_TX_BE_FS, //TX best effort flowspec
696 BT_RX_BE_FS, //RX best effort flowspec
697 BT_TX_GU_FS, //TX guaranteed latency flowspec
698 BT_RX_GU_FS, //RX guaranteed latency flowspec
699 BT_TX_BE_AGG_FS, //TX aggregated best effort flowspec
700 BT_RX_BE_AGG_FS, //RX aggregated best effort flowspec
701 BT_TX_GU_BW_FS, //TX guaranteed bandwidth flowspec
702 BT_RX_GU_BW_FS, //RX guaranteed bandwidth flowspec
703 BT_TX_GU_LARGE_FS, //TX guaranteed latency flowspec, for testing only
704 BT_RX_GU_LARGE_FS, //RX guaranteed latency flowspec, for testing only
707 typedef enum _BT_TRAFFIC_MODE
709 BT_MOTOR_EXT_BE = 0x00, //Best Effort. Default. for HCRP, PAN, SDP, RFCOMM-based profiles like FTP,OPP, SPP, DUN, etc.
710 BT_MOTOR_EXT_GUL = 0x01, //Guaranteed Latency. This type of traffic is used e.g. for HID and AVRCP.
711 BT_MOTOR_EXT_GUB = 0X02, //Guaranteed Bandwidth.
712 BT_MOTOR_EXT_GULB = 0X03 //Guaranteed Latency and Bandwidth. for A2DP and VDP.
715 typedef enum _BT_TRAFFIC_MODE_PROFILE
722 } BT_TRAFFIC_MODE_PROFILE;
724 typedef enum _BT_LINK_ROLE
730 typedef enum _BT_STATE_WPA_AUTH
732 STATE_WPA_AUTH_UNINITIALIZED,
733 STATE_WPA_AUTH_WAIT_PACKET_1, // Join
734 STATE_WPA_AUTH_WAIT_PACKET_2, // Creat
735 STATE_WPA_AUTH_WAIT_PACKET_3,
736 STATE_WPA_AUTH_WAIT_PACKET_4,
737 STATE_WPA_AUTH_SUCCESSED
738 } BT_STATE_WPA_AUTH, *PBT_STATE_WPA_AUTH;
740 #define BT_WPA_AUTH_TIMEOUT_PERIOD 1000
741 #define BTMaxWPAAuthReTransmitCoun 5
743 #define MAX_AMP_ASSOC_FRAG_LEN 248
744 #define TOTAL_ALLOCIATE_ASSOC_LEN 1000
746 typedef struct _HCI_FLOW_SPEC
751 u32 SDUInterArrivalTime;
754 } HCI_FLOW_SPEC, *PHCI_FLOW_SPEC;
756 typedef struct _HCI_LOG_LINK_CMD_DATA
761 HCI_FLOW_SPEC Tx_Flow_Spec;
762 HCI_FLOW_SPEC Rx_Flow_Spec;
764 u32 BestEffortFlushTimeout;
766 u8 bLLCompleteEventIsSet;
768 u8 bLLCancelCMDIsSetandComplete;
769 } HCI_LOG_LINK_CMD_DATA, *PHCI_LOG_LINK_CMD_DATA;
771 typedef struct _HCI_PHY_LINK_CMD_DATA
773 //Physical_Link_Handle
776 u16 LinkSuperversionTimeout;
778 //u16 SuperTimeOutCnt;
780 //Dedicated_AMP_Key_Length
782 //Dedicated_AMP_Key_Type
785 u8 BtAMPKey[PMK_LEN];
786 } HCI_PHY_LINK_CMD_DATA, *PHCI_PHY_LINK_CMD_DATA;
788 typedef struct _AMP_ASSOC_STRUCTURE
796 } AMP_ASSOC_STRUCTURE, *PAMP_ASSOC_STRUCTURE;
798 typedef struct _AMP_PREF_CHNL_REGULATORY
803 } AMP_PREF_CHNL_REGULATORY, *PAMP_PREF_CHNL_REGULATORY;
805 typedef struct _AMP_ASSOC_CMD_DATA
807 //Physical_Link_Handle
812 u16 MaxRemoteASSOCLen;
813 //AMP_ASSOC_Remaining_Length
816 void *AMPAssocfragment;
817 } AMP_ASSOC_CMD_DATA, *PAMP_ASSOC_CMD_DATA;
819 typedef struct _HCI_LINK_INFO
822 u8 IncomingTrafficMode;
823 u8 OutgoingTrafficMode;
829 } HCI_LINK_INFO, *PHCI_LINK_INFO;
831 typedef struct _HCI_EXT_CONFIG
833 HCI_LINK_INFO linkInfo[MAX_BT_ASOC_ENTRY_NUM];
835 u16 CurrentConnectHandle;
836 u8 CurrentIncomingTrafficMode;
837 u8 CurrentOutgoingTrafficMode;
850 u8 bEnableWifiScanNotify;
852 u8 bHoldForBtOperation;
855 }HCI_EXT_CONFIG, *PHCI_EXT_CONFIG;
857 typedef struct _HCI_ACL_PACKET_DATA
859 u16 ACLDataPacketLen;
860 u8 SyncDataPacketLen;
861 u16 TotalNumACLDataPackets;
862 u16 TotalSyncNumDataPackets;
863 } HCI_ACL_PACKET_DATA, *PHCI_ACL_PACKET_DATA;
865 typedef struct _HCI_PHY_LINK_BSS_INFO
867 u16 bdCap; // capability information
869 // Qos related. Added by Annie, 2005-11-01.
870 // BSS_QOS BssQos; // not implement yet
872 } HCI_PHY_LINK_BSS_INFO, *PHCI_PHY_LINK_BSS_INFO;
874 typedef struct _PACKET_IRP_HCICMD_DATA
880 } PACKET_IRP_HCICMD_DATA, *PPACKET_IRP_HCICMD_DATA;
882 typedef struct _BT_ASOC_ENTRY
888 HCI_PHY_LINK_CMD_DATA PhyLinkCmdData;
890 HCI_LOG_LINK_CMD_DATA LogLinkCmdData[MAX_LOGICAL_LINK_NUM];
892 HCI_ACL_PACKET_DATA ACLPacketsData;
894 AMP_ASSOC_CMD_DATA AmpAsocCmdData;
898 HCI_STATUS PhyLinkDisconnectReason;
900 u8 bSendSupervisionPacket;
901 //u8 CurrentSuervisionPacketSendNum;
902 //u8 LastSuervisionPacketSendNum;
904 //Is Creator or Joiner
905 AMP_BTAP_TYPE AMPRole;
912 u8 bNeedPhysLinkCompleteEvent;
914 HCI_STATUS PhysLinkCompleteStatus;
916 u8 BTRemoteMACAddr[6];
920 u8 SyncDataPacketLen;
922 u16 TotalSyncNumDataPackets;
923 u16 TotalNumACLDataPackets;
927 u8 PTK[PTK_LEN_TKIP];
929 u8 ANonce[KEY_NONCE_LEN];
930 u8 SNonce[KEY_NONCE_LEN];
931 u64 KeyReplayCounter;
932 u8 WPAAuthReplayCount;
933 u8 AESKeyBuf[AESCCMP_BLK_SIZE_TOTAL];
935 BT_STATE_WPA_AUTH BTWPAAuthState;
936 s32 UndecoratedSmoothedPWDB;
938 // Add for HW security !!
939 u8 HwCAMIndex; // Cam index
943 }BT_ASOC_ENTRY, *PBT_ASOC_ENTRY;
945 typedef struct _BT_TRAFFIC_STATISTICS
950 u32 TxPktCntInPeriod;
951 u32 RxPktCntInPeriod;
952 u64 TxPktLenInPeriod;
953 u64 RxPktLenInPeriod;
954 } BT_TRAFFIC_STATISTICS, *PBT_TRAFFIC_STATISTICS;
956 typedef struct _BT_MGNT
958 u8 bBTConnectInProgress;
959 u8 bLogLinkInProgress;
960 u8 bPhyLinkInProgress;
961 u8 bPhyLinkInProgressStartLL;
962 u8 BtCurrentPhyLinkhandle;
963 u16 BtCurrentLogLinkhandle;
964 u8 CurrentConnectEntryNum;
965 u8 DisconnectEntryNum;
966 u8 CurrentBTConnectionCnt;
967 BT_CONNECT_TYPE BTCurrentConnectType;
968 BT_CONNECT_TYPE BTReceiveConnectPkt;
971 u8 bStartSendSupervisionPkt;
973 u8 BTNeedAMPStatusChg;
974 u8 JoinerNeedSendAuth;
975 HCI_PHY_LINK_BSS_INFO bssDesc;
976 HCI_EXT_CONFIG ExtConfig;
977 u8 bNeedNotifyAMPNoCap;
984 } BT_MGNT, *PBT_MGNT;
986 typedef struct _BT_HCI_DBG_INFO
989 u32 hciCmdCntUnknown;
990 u32 hciCmdCntCreatePhyLink;
991 u32 hciCmdCntAcceptPhyLink;
992 u32 hciCmdCntDisconnectPhyLink;
993 u32 hciCmdPhyLinkStatus;
994 u32 hciCmdCntCreateLogLink;
995 u32 hciCmdCntAcceptLogLink;
996 u32 hciCmdCntDisconnectLogLink;
997 u32 hciCmdCntReadLocalAmpAssoc;
998 u32 hciCmdCntWriteRemoteAmpAssoc;
999 u32 hciCmdCntSetAclLinkStatus;
1000 u32 hciCmdCntSetScoLinkStatus;
1001 u32 hciCmdCntExtensionVersionNotify;
1002 u32 hciCmdCntLinkStatusNotify;
1003 } BT_HCI_DBG_INFO, *PBT_HCI_DBG_INFO;
1005 typedef struct _BT_IRP_DBG_INFO
1010 u32 irpIoCtrlHciCmd;
1011 u32 irpIoCtrlHciEvent;
1012 u32 irpIoCtrlHciTxData;
1013 u32 irpIoCtrlHciRxData;
1014 u32 irpIoCtrlUnknown;
1016 u32 irpIoCtrlHciTxData1s;
1017 } BT_IRP_DBG_INFO, *PBT_IRP_DBG_INFO;
1019 typedef struct _BT_PACKET_DBG_INFO
1023 u32 btPktRxProbReqFail;
1028 u32 btPktRxAuthButDrop;
1029 u32 btPktTxAssocReq;
1030 u32 btPktRxAssocReq;
1031 u32 btPktRxAssocReqButDrop;
1032 u32 btPktTxAssocRsp;
1033 u32 btPktRxAssocRsp;
1034 u32 btPktTxDisassoc;
1035 u32 btPktRxDisassoc;
1045 u32 btPktTxLinkSuperReq;
1046 u32 btPktRxLinkSuperReq;
1047 u32 btPktTxLinkSuperRsp;
1048 u32 btPktRxLinkSuperRsp;
1051 } BT_PACKET_DBG_INFO, *PBT_PACKET_DBG_INFO;
1053 typedef struct _BT_DBG
1057 BT_HCI_DBG_INFO dbgHciInfo;
1058 BT_IRP_DBG_INFO dbgIrpInfo;
1059 BT_PACKET_DBG_INFO dbgBtPkt;
1062 typedef struct _BT_HCI_INFO
1064 //802.11 Pal version specifier
1067 u16 BTPalsubversion;
1069 //Connected channel list
1070 u16 BTConnectChnlListLen;
1071 u8 BTConnectChnllist[64];
1073 //Fail contact counter
1074 u16 FailContactCount;
1078 u64 BTEventMaskPage2;
1081 u16 ConnAcceptTimeout;
1082 u16 LogicalAcceptTimeout;
1085 u8 LocationDomainAware;
1087 u8 LocationDomainOptions;
1092 //Preferred channel list
1093 u16 BtPreChnlListLen;
1094 u8 BTPreChnllist[64];
1096 u16 enFlush_LLH; //enhanced flush handle
1097 u16 FLTO_LLH; //enhanced flush handle
1099 //==========================================
1100 //Test command only.
1105 u8 TestReportInterval;
1109 u16 TestNumOfErrFrame;
1111 u16 TestNumOfErrBits;
1112 //==========================================
1113 } BT_HCI_INFO, *PBT_HCI_INFO;
1115 typedef struct _BT_TRAFFIC
1117 // Add for check replay data
1118 u8 LastRxUniFragNum;
1119 u16 LastRxUniSeqNum;
1121 //s32 EntryMaxUndecoratedSmoothedPWDB;
1122 //s32 EntryMinUndecoratedSmoothedPWDB;
1124 BT_TRAFFIC_STATISTICS Bt30TrafficStatistics;
1125 } BT_TRAFFIC, *PBT_TRAFFIC;
1127 #define RT_WORK_ITEM struct work_struct
1128 #define RT_THREAD _thread_hdl_
1130 typedef struct _BT_SECURITY
1133 // May need to remove to BTSecInfo ...
1134 //BT_STATE_WPA_AUTH BTWPAAuthState;
1136 RT_TIMER BTWPAAuthTimer;
1138 u8 RSNIEBuf[MAXRSNIELEN];
1140 u8 bUsedHwEncrypt; // It is define by OS version !!
1141 } BT_SECURITY, *PBT_SECURITY;
1143 typedef struct _BT30Info
1146 BT_ASOC_ENTRY BtAsocEntry[MAX_BT_ASOC_ENTRY_NUM];
1149 BT_HCI_INFO BtHciInfo;
1150 BT_TRAFFIC BtTraffic;
1154 RT_WORK_ITEM HCICmdWorkItem;
1155 RT_TIMER BTHCICmdTimer;
1157 #if (SENDTXMEHTOD==0)
1158 RT_WORK_ITEM HCISendACLDataWorkItem;
1159 RT_TIMER BTHCISendAclDataTimer;
1160 #elif(SENDTXMEHTOD==2)
1161 RT_THREAD BTTxThread;
1163 RT_WORK_ITEM BTPsDisableWorkItem;
1164 RT_WORK_ITEM BTConnectWorkItem;
1165 RT_TIMER BTHCIDiscardAclDataTimer;
1166 RT_TIMER BTHCIJoinTimeoutTimer;
1167 RT_TIMER BTTestSendPacketTimer;
1168 RT_TIMER BTSupervisionPktTimer;
1169 RT_TIMER BTDisconnectPhyLinkTimer;
1170 RT_TIMER BTBeaconTimer;
1173 RT_TIMER BTPsDisableTimer;
1174 RT_TIMER BTAuthTimeoutTimer;
1175 RT_TIMER BTAsocTimeoutTimer;
1178 }BT30Info, *PBT30Info;
1180 typedef struct _PACKET_IRP_ACL_DATA
1187 } PACKET_IRP_ACL_DATA, *PPACKET_IRP_ACL_DATA;
1189 typedef struct _PACKET_IRP_HCIEVENT_DATA
1194 } PACKET_IRP_HCIEVENT_DATA, *PPACKET_IRP_HCIEVENT_DATA;
1196 typedef struct _COMMON_TRIPLE
1201 } COMMON_TRIPLE, *PCOMMON_TRIPLE;
1203 #define COUNTRY_STR_LEN 3 // country string len=3
1207 typedef enum _HCI_WIFI_CONNECT_STATUS
1209 HCI_WIFI_NOT_CONNECTED =0x0,
1210 HCI_WIFI_CONNECTED =0x1,
1211 HCI_WIFI_CONNECT_IN_PROGRESS =0x2,
1212 } HCI_WIFI_CONNECT_STATUS, *PHCI_WIFI_CONNECT_STATUS;
1214 typedef enum _HCI_EXT_BT_OPERATION
1216 HCI_BT_OP_NONE = 0x0,
1217 HCI_BT_OP_INQUIRY_START = 0x1,
1218 HCI_BT_OP_INQUIRY_FINISH = 0x2,
1219 HCI_BT_OP_PAGING_START = 0x3,
1220 HCI_BT_OP_PAGING_SUCCESS = 0x4,
1221 HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
1222 HCI_BT_OP_PAIRING_START = 0x6,
1223 HCI_BT_OP_PAIRING_FINISH = 0x7,
1224 HCI_BT_OP_BT_DEV_ENABLE = 0x8,
1225 HCI_BT_OP_BT_DEV_DISABLE = 0x9,
1227 } HCI_EXT_BT_OPERATION, *PHCI_EXT_BT_OPERATION;
1229 //======================================
1230 // Function proto type
1231 //======================================
1232 typedef struct _BTData_ENTRY
1234 struct list_head List;
1236 } BTData_ENTRY, *PBTData_ENTRY;
1238 #define BTHCI_SM_WITH_INFO(_Adapter, _StateToEnter, _StateCmd, _EntryNum) \
1240 RTPRINT(FIOCTL, IOCTL_STATE, ("[BT state change] caused by ""%s"", line=%d\n", __FUNCTION__, __LINE__)); \
1241 BTHCI_StateMachine(_Adapter, _StateToEnter, _StateCmd, _EntryNum);\
1244 void BTHCI_EventParse(PADAPTER padapter, void *pEvntData, u32 dataLen);
1245 #define BT_EventParse BTHCI_EventParse
1246 u8 BTHCI_HsConnectionEstablished(PADAPTER padapter);
1247 void BTHCI_UpdateBTProfileRTKToMoto(PADAPTER padapter);
1248 void BTHCI_WifiScanNotify(PADAPTER padapter, u8 scanType);
1249 void BTHCI_StateMachine(PADAPTER padapter, u8 StateToEnter, HCI_STATE_WITH_CMD StateCmd, u8 EntryNum);
1250 void BTHCI_DisconnectPeer(PADAPTER padapter, u8 EntryNum);
1251 void BTHCI_EventNumOfCompletedDataBlocks(PADAPTER padapter);
1252 void BTHCI_EventAMPStatusChange(PADAPTER padapter, u8 AMP_Status);
1253 void BTHCI_DisconnectAll(PADAPTER padapter);
1254 HCI_STATUS BTHCI_HandleHCICMD(PADAPTER padapter, PPACKET_IRP_HCICMD_DATA pHciCmd);
1256 // ===== End of sync from SD7 driver COMMON/bt_hci.h =====
1257 #endif // __BT_HCI_C__
1259 #ifdef __HALBTC87231ANT_C__ // HAL/BTCoexist/HalBtc87231Ant.h
1260 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h =====
1261 #define GET_BT_INFO(padapter) (&GET_HAL_DATA(padapter)->BtInfo)
1263 #define BTC_FOR_SCAN_START 1
1264 #define BTC_FOR_SCAN_FINISH 0
1266 #define BT_TXRX_CNT_THRES_1 1200
1267 #define BT_TXRX_CNT_THRES_2 1400
1268 #define BT_TXRX_CNT_THRES_3 3000
1269 #define BT_TXRX_CNT_LEVEL_0 0 // < 1200
1270 #define BT_TXRX_CNT_LEVEL_1 1 // >= 1200 && < 1400
1271 #define BT_TXRX_CNT_LEVEL_2 2 // >= 1400
1272 #define BT_TXRX_CNT_LEVEL_3 3 // >= 3000
1274 typedef enum _BT_STATE_1ANT{
1275 BT_INFO_STATE_DISABLED = 0,
1276 BT_INFO_STATE_NO_CONNECTION = 1,
1277 BT_INFO_STATE_CONNECT_IDLE = 2,
1278 BT_INFO_STATE_INQ_OR_PAG = 3,
1279 BT_INFO_STATE_ACL_ONLY_BUSY = 4,
1280 BT_INFO_STATE_SCO_ONLY_BUSY = 5,
1281 BT_INFO_STATE_ACL_SCO_BUSY = 6,
1282 BT_INFO_STATE_ACL_INQ_OR_PAG = 7,
1283 BT_INFO_STATE_MAX = 8
1284 } BT_STATE_1ANT, *PBT_STATE_1ANT;
1286 typedef struct _BTDM_8723A_1ANT
1299 u32 psTdmaMonitorCnt;
1300 u32 psTdmaGlobalCnt;
1302 //DurationAdjust For SCO
1303 u32 psTdmaMonitorCntForSCO;
1304 u8 psTdmaDuAdjTypeForSCO;
1310 } BTDM_8723A_1ANT, *PBTDM_8723A_1ANT;
1312 void BTDM_1AntSignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
1313 void BTDM_1AntForDhcp(PADAPTER padapter);
1314 void BTDM_1AntBtCoexist8723A(PADAPTER padapter);
1316 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87231Ant.h =====
1317 #endif // __HALBTC87231ANT_C__
1319 #ifdef __HALBTC87232ANT_C__ // HAL/BTCoexist/HalBtc87232Ant.h
1320 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h =====
1321 typedef enum _BT_2ANT_BT_STATUS{
1322 BT_2ANT_BT_STATUS_IDLE = 0x0,
1323 BT_2ANT_BT_STATUS_CONNECTED_IDLE = 0x1,
1324 BT_2ANT_BT_STATUS_NON_IDLE = 0x2,
1325 BT_2ANT_BT_STATUS_MAX
1326 }BT_2ANT_BT_STATUS,*PBT_2ANT_BT_STATUS;
1328 typedef enum _BT_2ANT_COEX_ALGO{
1329 BT_2ANT_COEX_ALGO_UNDEFINED = 0x0,
1330 BT_2ANT_COEX_ALGO_SCO = 0x1,
1331 BT_2ANT_COEX_ALGO_HID = 0x2,
1332 BT_2ANT_COEX_ALGO_A2DP = 0x3,
1333 BT_2ANT_COEX_ALGO_PANEDR = 0x4,
1334 BT_2ANT_COEX_ALGO_PANHS = 0x5,
1335 BT_2ANT_COEX_ALGO_PANEDR_A2DP = 0x6,
1336 BT_2ANT_COEX_ALGO_PANEDR_HID = 0x7,
1337 BT_2ANT_COEX_ALGO_HID_A2DP_PANEDR = 0x8,
1338 BT_2ANT_COEX_ALGO_HID_A2DP = 0x9,
1339 BT_2ANT_COEX_ALGO_HID_A2DP_PANHS = 0xA,
1340 BT_2ANT_COEX_ALGO_MAX = 0xB,
1341 }BT_2ANT_COEX_ALGO,*PBT_2ANT_COEX_ALGO;
1343 typedef struct _BTDM_8723A_2ANT
1353 u8 preFwDacSwingLvl;
1354 u8 curFwDacSwingLvl;
1356 u8 bPreRfRxLpfShrink;
1357 u8 bCurRfRxLpfShrink;
1359 u8 bPreLowPenaltyRa;
1360 u8 bCurLowPenaltyRa;
1383 u8 bCurIgnoreWlanAct;
1384 u8 bPreIgnoreWlanAct;
1394 u8 bResetTdmaAdjust;
1398 } BTDM_8723A_2ANT, *PBTDM_8723A_2ANT;
1399 void BTDM_2AntBtCoexist8723A(PADAPTER padapter);
1400 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc87232Ant.h =====
1401 #endif // __HALBTC87232ANT_C__
1403 #ifdef __HALBTC8723_C__ // HAL/BTCoexist/HalBtc8723.h
1404 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtc8723.h =====
1406 #define BT_Q_PKT_OFF 0
1407 #define BT_Q_PKT_ON 1
1409 #define BT_TX_PWR_OFF 0
1410 #define BT_TX_PWR_ON 1
1412 // TDMA mode definition
1415 #define TDMA_NAV_OFF 0
1416 #define TDMA_NAV_ON 1
1417 #define TDMA_DAC_SWING_OFF 0
1418 #define TDMA_DAC_SWING_ON 1
1420 #define BT_RSSI_LEVEL_H 0
1421 #define BT_RSSI_LEVEL_M 1
1422 #define BT_RSSI_LEVEL_L 2
1424 // PTA mode related definition
1425 #define BT_PTA_MODE_OFF 0
1426 #define BT_PTA_MODE_ON 1
1428 // Penalty Tx Rate Adaptive
1429 #define BT_TX_RATE_ADAPTIVE_NORMAL 0
1430 #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
1433 #define BT_RF_RX_LPF_CORNER_RESUME 0
1434 #define BT_RF_RX_LPF_CORNER_SHRINK 1
1436 #define BT_INFO_ACL BIT(0)
1437 #define BT_INFO_SCO BIT(1)
1438 #define BT_INFO_INQ_PAG BIT(2)
1439 #define BT_INFO_ACL_BUSY BIT(3)
1440 #define BT_INFO_SCO_BUSY BIT(4)
1441 #define BT_INFO_HID BIT(5)
1442 #define BT_INFO_A2DP BIT(6)
1443 #define BT_INFO_FTP BIT(7)
1447 typedef struct _BT_COEXIST_8723A
1455 u8 bC2hBtInfoSupport;
1457 u8 c2hBtInfoOriginal;
1458 u8 prec2hBtInfo; // for 1Ant
1459 u8 bC2hBtInquiryPage;
1460 u64 btInqPageStartTime; // for 2Ant
1461 u8 c2hBtProfile; // for 1Ant
1464 u8 bC2hBtInfoReqSent;
1468 // u8 bBtPwrSaveMode;
1469 BTDM_8723A_2ANT btdm2Ant;
1470 BTDM_8723A_1ANT btdm1Ant;
1471 } BT_COEXIST_8723A, *PBT_COEXIST_8723A;
1473 void BTDM_SetFwChnlInfo(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
1474 u8 BTDM_IsWifiConnectionExist(PADAPTER padapter);
1475 void BTDM_SetFw3a(PADAPTER padapter, u8 byte1, u8 byte2, u8 byte3, u8 byte4, u8 byte5);
1476 void BTDM_QueryBtInformation(PADAPTER padapter);
1477 void BTDM_SetSwRfRxLpfCorner(PADAPTER padapter, u8 type);
1478 void BTDM_SetSwPenaltyTxRateAdaptive(PADAPTER padapter, u8 raType);
1479 void BTDM_SetFwDecBtPwr(PADAPTER padapter, u8 bDecBtPwr);
1480 u8 BTDM_BtProfileSupport(PADAPTER padapter);
1481 void BTDM_LpsLeave(PADAPTER padapter);
1482 u8 BTDM_1Ant8723A(PADAPTER padapter);
1483 #define BT_1Ant BTDM_1Ant8723A
1485 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtc8723.h =====
1486 #endif // __HALBTC8723_C__
1488 #ifdef __HALBTCCSR1ANT_C__ // HAL/BTCoexist/HalBtcCsr1Ant.h
1489 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h =====
1492 BT_A2DP_INDEX0 =0, // 32,12; the most critical for BT
1493 BT_A2DP_INDEX1, // 12,24
1494 BT_A2DP_INDEX2, // 0,0
1498 #define BT_A2DP_STATE_NOT_ENTERED 0
1499 #define BT_A2DP_STATE_DETECTING 1
1500 #define BT_A2DP_STATE_DETECTED 2
1502 #define BTDM_ANT_BT_IDLE 0
1503 #define BTDM_ANT_WIFI 1
1504 #define BTDM_ANT_BT 2
1507 void BTDM_SingleAnt(PADAPTER padapter, u8 bSingleAntOn, u8 bInterruptOn, u8 bMultiNAVOn);
1508 void BTDM_CheckBTIdleChange1Ant(PADAPTER padapter);
1510 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr1Ant.h =====
1511 #endif // __HALBTCCSR1ANT_C__
1513 #ifdef __HALBTCCSR2ANT_C__ // HAL/BTCoexist/HalBtcCsr2Ant.h
1514 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h =====
1516 //===========================================
1517 // For old core stack before v251
1518 //===========================================
1519 #define BT_RSSI_STATE_NORMAL_POWER BIT0
1520 #define BT_RSSI_STATE_AMDPU_OFF BIT1
1521 #define BT_RSSI_STATE_SPECIAL_LOW BIT2
1522 #define BT_RSSI_STATE_BG_EDCA_LOW BIT3
1523 #define BT_RSSI_STATE_TXPOWER_LOW BIT4
1525 #define BT_DACSWING_OFF 0
1526 #define BT_DACSWING_M4 1
1527 #define BT_DACSWING_M7 2
1528 #define BT_DACSWING_M10 3
1530 void BTDM_DiminishWiFi(PADAPTER Adapter, u8 bDACOn, u8 bInterruptOn, u8 DACSwingLevel, u8 bNAVOn);
1532 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtcCsr2Ant.h =====
1533 #endif // __HALBTCCSR2ANT_C__
1535 #ifdef __HALBTCOEXIST_C__ // HAL/BTCoexist/HalBtCoexist.h
1538 #define MAX_FW_SUPPORT_MACID_NUM 64
1540 // ===== Below this line is sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h =====
1542 #define FW_VER_BT_REG 62
1543 #define FW_VER_BT_REG1 74
1544 #define REG_BT_ACTIVE 0x444
1545 #define REG_BT_STATE 0x448
1546 #define REG_BT_POLLING1 0x44c
1547 #define REG_BT_POLLING 0x700
1549 #define REG_BT_ACTIVE_OLD 0x488
1550 #define REG_BT_STATE_OLD 0x48c
1551 #define REG_BT_POLLING_OLD 0x490
1553 // The reg define is for 8723
1554 #define REG_HIGH_PRIORITY_TXRX 0x770
1555 #define REG_LOW_PRIORITY_TXRX 0x774
1557 #define BT_FW_COEX_THRESH_TOL 6
1558 #define BT_FW_COEX_THRESH_20 20
1559 #define BT_FW_COEX_THRESH_23 23
1560 #define BT_FW_COEX_THRESH_25 25
1561 #define BT_FW_COEX_THRESH_30 30
1562 #define BT_FW_COEX_THRESH_35 35
1563 #define BT_FW_COEX_THRESH_40 40
1564 #define BT_FW_COEX_THRESH_45 45
1565 #define BT_FW_COEX_THRESH_47 47
1566 #define BT_FW_COEX_THRESH_50 50
1567 #define BT_FW_COEX_THRESH_55 55
1568 #define BT_FW_COEX_THRESH_65 65
1570 #define BT_COEX_STATE_BT30 BIT(0)
1571 #define BT_COEX_STATE_WIFI_HT20 BIT(1)
1572 #define BT_COEX_STATE_WIFI_HT40 BIT(2)
1573 #define BT_COEX_STATE_WIFI_LEGACY BIT(3)
1575 #define BT_COEX_STATE_WIFI_RSSI_LOW BIT(4)
1576 #define BT_COEX_STATE_WIFI_RSSI_MEDIUM BIT(5)
1577 #define BT_COEX_STATE_WIFI_RSSI_HIGH BIT(6)
1578 #define BT_COEX_STATE_DEC_BT_POWER BIT(7)
1580 #define BT_COEX_STATE_WIFI_IDLE BIT(8)
1581 #define BT_COEX_STATE_WIFI_UPLINK BIT(9)
1582 #define BT_COEX_STATE_WIFI_DOWNLINK BIT(10)
1584 #define BT_COEX_STATE_BT_INQ_PAGE BIT(11)
1585 #define BT_COEX_STATE_BT_IDLE BIT(12)
1586 #define BT_COEX_STATE_BT_UPLINK BIT(13)
1587 #define BT_COEX_STATE_BT_DOWNLINK BIT(14)
1588 //===========================================
1589 // Todo: Remove these definitions
1590 #define BT_COEX_STATE_BT_PAN_IDLE BIT(15)
1591 #define BT_COEX_STATE_BT_PAN_UPLINK BIT(16)
1592 #define BT_COEX_STATE_BT_PAN_DOWNLINK BIT(17)
1593 #define BT_COEX_STATE_BT_A2DP_IDLE BIT(18)
1594 //===========================================
1595 #define BT_COEX_STATE_BT_RSSI_LOW BIT(19)
1597 #define BT_COEX_STATE_PROFILE_HID BIT(20)
1598 #define BT_COEX_STATE_PROFILE_A2DP BIT(21)
1599 #define BT_COEX_STATE_PROFILE_PAN BIT(22)
1600 #define BT_COEX_STATE_PROFILE_SCO BIT(23)
1602 #define BT_COEX_STATE_WIFI_RSSI_1_LOW BIT(24)
1603 #define BT_COEX_STATE_WIFI_RSSI_1_MEDIUM BIT(25)
1604 #define BT_COEX_STATE_WIFI_RSSI_1_HIGH BIT(26)
1606 #define BT_COEX_STATE_WIFI_RSSI_BEACON_LOW BIT(27)
1607 #define BT_COEX_STATE_WIFI_RSSI_BEACON_MEDIUM BIT(28)
1608 #define BT_COEX_STATE_WIFI_RSSI_BEACON_HIGH BIT(29)
1611 #define BT_COEX_STATE_BTINFO_COMMON BIT30
1612 #define BT_COEX_STATE_BTINFO_B_HID_SCOESCO BIT31
1613 #define BT_COEX_STATE_BTINFO_B_FTP_A2DP BIT32
1615 #define BT_COEX_STATE_BT_CNT_LEVEL_0 BIT33
1616 #define BT_COEX_STATE_BT_CNT_LEVEL_1 BIT34
1617 #define BT_COEX_STATE_BT_CNT_LEVEL_2 BIT35
1618 #define BT_COEX_STATE_BT_CNT_LEVEL_3 BIT36
1620 #define BT_RSSI_STATE_HIGH 0
1621 #define BT_RSSI_STATE_MEDIUM 1
1622 #define BT_RSSI_STATE_LOW 2
1623 #define BT_RSSI_STATE_STAY_HIGH 3
1624 #define BT_RSSI_STATE_STAY_MEDIUM 4
1625 #define BT_RSSI_STATE_STAY_LOW 5
1629 #define BT_AGCTABLE_OFF 0
1630 #define BT_AGCTABLE_ON 1
1632 #define BT_BB_BACKOFF_OFF 0
1633 #define BT_BB_BACKOFF_ON 1
1635 #define BT_FW_NAV_OFF 0
1636 #define BT_FW_NAV_ON 1
1639 #define BT_COEX_MECH_NONE 0
1640 #define BT_COEX_MECH_SCO 1
1641 #define BT_COEX_MECH_HID 2
1642 #define BT_COEX_MECH_A2DP 3
1643 #define BT_COEX_MECH_PAN 4
1644 #define BT_COEX_MECH_HID_A2DP 5
1645 #define BT_COEX_MECH_HID_PAN 6
1646 #define BT_COEX_MECH_PAN_A2DP 7
1647 #define BT_COEX_MECH_HID_SCO_ESCO 8
1648 #define BT_COEX_MECH_FTP_A2DP 9
1649 #define BT_COEX_MECH_COMMON 10
1650 #define BT_COEX_MECH_MAX 11
1651 //===========================================
1653 //===========================================
1654 #define BT_DBG_PROFILE_NONE 0
1655 #define BT_DBG_PROFILE_SCO 1
1656 #define BT_DBG_PROFILE_HID 2
1657 #define BT_DBG_PROFILE_A2DP 3
1658 #define BT_DBG_PROFILE_PAN 4
1659 #define BT_DBG_PROFILE_HID_A2DP 5
1660 #define BT_DBG_PROFILE_HID_PAN 6
1661 #define BT_DBG_PROFILE_PAN_A2DP 7
1662 #define BT_DBG_PROFILE_MAX 9
1663 //===========================================
1665 typedef struct _BT_COEXIST_STR
1667 u8 BluetoothCoexist;
1670 u8 BT_Ant_isolation; //0:good, 1:bad
1671 u8 BT_RadioSharedType;
1675 u32 BtRfRegOrigin1E;
1676 u32 BtRfRegOrigin1F;
1678 u8 bBTTrafficModeSet;
1679 u8 bBTNonTrafficModeSet;
1680 BT_TRAFFIC_STATISTICS BT21TrafficStatistics;
1685 u8 preRssiStateBeacon;
1686 u8 bFWCoexistAllOff;
1687 u8 bSWCoexistAllOff;
1688 u8 bHWCoexistAllOff;
1701 u8 bEDCAInitialized;
1703 u8 b8723aAgcTableOn;
1705 BT_COEXIST_8723A halCoex8723;
1709 u8 bNeedToRoamForBtDisableEnable;
1711 }BT_COEXIST_STR, *PBT_COEXIST_STR;
1714 void BTDM_CheckAntSelMode(PADAPTER padapter);
1715 void BTDM_FwC2hBtRssi(PADAPTER padapter, u8 *tmpBuf);
1716 #define BT_FwC2hBtRssi BTDM_FwC2hBtRssi
1717 void BTDM_FwC2hBtInfo(PADAPTER padapter, u8 *tmpBuf, u8 length);
1718 #define BT_FwC2hBtInfo BTDM_FwC2hBtInfo
1719 void BTDM_DisplayBtCoexInfo(PADAPTER padapter);
1720 #define BT_DisplayBtCoexInfo BTDM_DisplayBtCoexInfo
1721 void BTDM_RejectAPAggregatedPacket(PADAPTER padapter, u8 bReject);
1722 u8 BTDM_IsHT40(PADAPTER padapter);
1723 u8 BTDM_Legacy(PADAPTER padapter);
1724 void BTDM_CheckWiFiState(PADAPTER padapter);
1725 s32 BTDM_GetRxSS(PADAPTER padapter);
1726 u8 BTDM_CheckCoexBcnRssiState(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1727 u8 BTDM_CheckCoexRSSIState1(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1728 u8 BTDM_CheckCoexRSSIState(PADAPTER padapter, u8 levelNum, u8 RssiThresh, u8 RssiThresh1);
1729 u8 BTDM_DisableEDCATurbo(PADAPTER padapter);
1730 #define BT_DisableEDCATurbo BTDM_DisableEDCATurbo
1731 void BTDM_Balance(PADAPTER padapter, u8 bBalanceOn, u8 ms0, u8 ms1);
1732 void BTDM_AGCTable(PADAPTER padapter, u8 type);
1733 void BTDM_BBBackOffLevel(PADAPTER padapter, u8 type);
1734 void BTDM_FWCoexAllOff(PADAPTER padapter);
1735 void BTDM_SWCoexAllOff(PADAPTER padapter);
1736 void BTDM_HWCoexAllOff(PADAPTER padapter);
1737 void BTDM_CoexAllOff(PADAPTER padapter);
1738 void BTDM_TurnOffBtCoexistBeforeEnterIPS(PADAPTER padapter);
1739 void BTDM_SignalCompensation(PADAPTER padapter, u8 *rssi_wifi, u8 *rssi_bt);
1740 void BTDM_Coexist(PADAPTER padapter);
1741 #define BT_CoexistMechanism BTDM_Coexist
1742 void BTDM_UpdateCoexState(PADAPTER padapter);
1743 u8 BTDM_IsSameCoexistState(PADAPTER padapter);
1744 void BTDM_PWDBMonitor(PADAPTER padapter);
1745 u8 BTDM_IsBTBusy(PADAPTER padapter);
1746 #define BT_IsBtBusy BTDM_IsBTBusy
1747 u8 BTDM_IsWifiBusy(PADAPTER padapter);
1748 u8 BTDM_IsCoexistStateChanged(PADAPTER padapter);
1749 u8 BTDM_IsWifiUplink(PADAPTER padapter);
1750 u8 BTDM_IsWifiDownlink(PADAPTER padapter);
1751 u8 BTDM_IsBTHSMode(PADAPTER padapter);
1752 u8 BTDM_IsBTUplink(PADAPTER padapter);
1753 u8 BTDM_IsBTDownlink(PADAPTER padapter);
1754 void BTDM_AdjustForBtOperation(PADAPTER padapter);
1755 void BTDM_ForHalt(PADAPTER padapter);
1756 void BTDM_WifiScanNotify(PADAPTER padapter, u8 scanType);
1757 void BTDM_WifiAssociateNotify(PADAPTER padapter, u8 action);
1758 void BTDM_MediaStatusNotify(PADAPTER padapter, RT_MEDIA_STATUS mstatus);
1759 void BTDM_ForDhcp(PADAPTER padapter);
1760 void BTDM_ResetActionProfileState(PADAPTER padapter);
1761 void BTDM_SetBtCoexCurrAntNum(PADAPTER padapter, u8 antNum);
1762 #define BT_SetBtCoexCurrAntNum BTDM_SetBtCoexCurrAntNum
1763 u8 BTDM_IsActionSCO(PADAPTER padapter);
1764 u8 BTDM_IsActionHID(PADAPTER padapter);
1765 u8 BTDM_IsActionA2DP(PADAPTER padapter);
1766 u8 BTDM_IsActionPAN(PADAPTER padapter);
1767 u8 BTDM_IsActionHIDA2DP(PADAPTER padapter);
1768 u8 BTDM_IsActionHIDPAN(PADAPTER padapter);
1769 u8 BTDM_IsActionPANA2DP(PADAPTER padapter);
1770 u8 BTDM_IsBtDisabled(PADAPTER padapter);
1771 #define BT_IsBtDisabled BTDM_IsBtDisabled
1772 u32 BTDM_BtTxRxCounterH(PADAPTER padapter);
1773 u32 BTDM_BtTxRxCounterL(PADAPTER padapter);
1775 // ===== End of sync from SD7 driver HAL/BTCoexist/HalBtCoexist.h =====
1776 #endif // __HALBTCOEXIST_C__
1778 #ifdef __HALBT_C__ // HAL/HalBT.h
1779 // ===== Below this line is sync from SD7 driver HAL/HalBT.h =====
1781 #define RTS_CTS_NO_LEN_LIMIT 0
1783 u8 HALBT_GetPGAntNum(PADAPTER padapter);
1784 #define BT_GetPGAntNum HALBT_GetPGAntNum
1785 void HALBT_SetKey(PADAPTER padapter, u8 EntryNum);
1786 void HALBT_RemoveKey(PADAPTER padapter, u8 EntryNum);
1787 void HALBT_InitBTVars8723A(PADAPTER padapter);
1788 #define HALBT_InitHalVars HALBT_InitBTVars8723A
1789 #define BT_InitHalVars HALBT_InitHalVars
1790 u8 HALBT_IsBTExist(PADAPTER padapter);
1791 #define BT_IsBtExist HALBT_IsBTExist
1792 u8 HALBT_BTChipType(PADAPTER padapter);
1793 void HALBT_InitHwConfig(PADAPTER padapter);
1794 #define BT_InitHwConfig HALBT_InitHwConfig
1795 void HALBT_SetRtsCtsNoLenLimit(PADAPTER padapter);
1797 // ===== End of sync from SD7 driver HAL/HalBT.c =====
1798 #endif // __HALBT_C__
1800 #define _bt_dbg_off_ 0
1801 #define _bt_dbg_on_ 1
1803 extern u32 BTCoexDbgLevel;
1807 #endif // __RTL8723A_BT_COEXIST_H__