diff options
author | Ganesh Ganapathi Batta <ganeshg@broadcom.com> | 2014-04-16 16:50:09 -0700 |
---|---|---|
committer | Matthew Xie <mattx@google.com> | 2014-05-06 01:14:25 -0700 |
commit | 7fa4fba6f59f97df00aff07dbe8fb21b114b3c2c (patch) | |
tree | 2f1168601e9861a9277b65464a20cd9294279d16 /stack/include | |
parent | 3b8b972a8151c081905f3c1273e5d6cdd3401354 (diff) | |
download | android_system_bt-7fa4fba6f59f97df00aff07dbe8fb21b114b3c2c.tar.gz android_system_bt-7fa4fba6f59f97df00aff07dbe8fb21b114b3c2c.tar.bz2 android_system_bt-7fa4fba6f59f97df00aff07dbe8fb21b114b3c2c.zip |
Merge BT 4.1 features
The features include:
- LE Peripheral Mode
- Link Layer topology (LE Central & Peripheral Concurrency)
- Dual Mode Topology (Ability to choose LE transport when connecting with
other Dual Mode devices)
- Fast advertising Interval
- Limited Discovery Time Changes
- GAP Authentication and Lost Bond
- Dual Mode Addressing
- Common Profile and Service Error Code
- 32 bit UUIDs
Change-Id: Ic6701da4cf6aaa390ff2c8816b43157f36b7fb42
Conflicts:
stack/btu/btu_hcif.c
Diffstat (limited to 'stack/include')
-rw-r--r-- | stack/include/bt_types.h | 4 | ||||
-rw-r--r-- | stack/include/btm_api.h | 350 | ||||
-rw-r--r-- | stack/include/btm_ble_api.h | 115 | ||||
-rw-r--r-- | stack/include/btu.h | 11 | ||||
-rw-r--r-- | stack/include/gap_api.h | 11 | ||||
-rw-r--r-- | stack/include/gatt_api.h | 125 | ||||
-rw-r--r-- | stack/include/hcidefs.h | 305 | ||||
-rw-r--r-- | stack/include/hcimsgs.h | 16 | ||||
-rw-r--r-- | stack/include/l2c_api.h | 23 | ||||
-rw-r--r-- | stack/include/smp_api.h | 6 | ||||
-rw-r--r-- | stack/include/uipc_msg.h | 318 |
11 files changed, 570 insertions, 714 deletions
diff --git a/stack/include/bt_types.h b/stack/include/bt_types.h index 33fb88435..e7a79372a 100644 --- a/stack/include/bt_types.h +++ b/stack/include/bt_types.h @@ -497,6 +497,10 @@ typedef struct #define BLE_ADDR_TYPE_MASK (BLE_ADDR_RANDOM | BLE_ADDR_PUBLIC) typedef UINT8 tBLE_ADDR_TYPE; +#define BT_TRANSPORT_BR_EDR 1 +#define BT_TRANSPORT_LE 2 +typedef UINT8 tBT_TRANSPORT; + #define BLE_ADDR_IS_STATIC(x) ((x[0] & 0xC0) == 0xC0) typedef struct diff --git a/stack/include/btm_api.h b/stack/include/btm_api.h index f4b17d467..368e70db8 100644 --- a/stack/include/btm_api.h +++ b/stack/include/btm_api.h @@ -200,20 +200,20 @@ typedef UINT8 (tBTM_FILTER_CB) (BD_ADDR bd_addr, DEV_CLASS dc); /* BTM_IsInquiryActive return values (Bit Mask) * Note: These bit masks are associated with the inquiry modes (BTM_*_INQUIRY) */ #define BTM_INQUIRY_INACTIVE 0x0 /* no inquiry in progress */ -#define BTM_GENERAL_INQUIRY_ACTIVE 0x1 /* a general inquiry is in progress */ -#define BTM_LIMITED_INQUIRY_ACTIVE 0x2 /* a limited inquiry is in progress */ +#define BTM_GENERAL_INQUIRY_ACTIVE BTM_GENERAL_INQUIRY /* a general inquiry is in progress */ +#define BTM_LIMITED_INQUIRY_ACTIVE BTM_LIMITED_INQUIRY /* a limited inquiry is in progress */ #define BTM_PERIODIC_INQUIRY_ACTIVE 0x8 /* a periodic inquiry is active */ #define BTM_SSP_INQUIRY_ACTIVE 0x4 /* SSP is active, so inquiry is disallowed (work around for FW bug) */ -#define BTM_LE_GENERAL_INQUIRY_ACTIVE 0x10 /* a general inquiry is in progress */ -#define BTM_LE_LIMITED_INQUIRY_ACTIVE 0x20 /* a limited inquiry is in progress */ -#define BTM_LE_SELECT_CONN_ACTIVE 0x40 /* selection connection is in progress */ -#define BTM_LE_OBSERVE_ACTIVE 0x80 /* selection connection is in progress */ +#define BTM_LE_GENERAL_INQUIRY_ACTIVE BTM_BLE_GENERAL_INQUIRY /* a general inquiry is in progress */ +#define BTM_LE_LIMITED_INQUIRY_ACTIVE BTM_BLE_LIMITED_INQUIRY /* a limited inquiry is in progress */ +#define BTM_LE_SELECT_CONN_ACTIVE 0x40 /* selection connection is in progress */ +#define BTM_LE_OBSERVE_ACTIVE 0x80 /* selection connection is in progress */ /* inquiry activity mask */ -#define BTM_BR_INQ_ACTIVE_MASK (BTM_GENERAL_INQUIRY_ACTIVE|BTM_LIMITED_INQUIRY_ACTIVE|BTM_PERIODIC_INQUIRY_ACTIVE) /* BR/EDR inquiry activity mask */ -#define BTM_LE_SCAN_ACTIVE_MASK 0xF0 /* LE scan activity mask */ -#define BTM_LE_INQ_ACTIVE_MASK (BTM_LE_GENERAL_INQUIRY_ACTIVE|BTM_LE_LIMITED_INQUIRY_ACTIVE) /* LE inquiry activity mask*/ -#define BTM_INQUIRY_ACTIVE_MASK (BTM_BR_INQ_ACTIVE_MASK | BTM_LE_INQ_ACTIVE_MASK) /* inquiry activity mask */ +#define BTM_BR_INQ_ACTIVE_MASK (BTM_GENERAL_INQUIRY_ACTIVE|BTM_LIMITED_INQUIRY_ACTIVE|BTM_PERIODIC_INQUIRY_ACTIVE) /* BR/EDR inquiry activity mask */ +#define BTM_BLE_SCAN_ACTIVE_MASK 0xF0 /* LE scan activity mask */ +#define BTM_BLE_INQ_ACTIVE_MASK (BTM_LE_GENERAL_INQUIRY_ACTIVE|BTM_LE_LIMITED_INQUIRY_ACTIVE) /* LE inquiry activity mask*/ +#define BTM_INQUIRY_ACTIVE_MASK (BTM_BR_INQ_ACTIVE_MASK | BTM_BLE_INQ_ACTIVE_MASK) /* inquiry activity mask */ /* Define scan types */ #define BTM_SCAN_TYPE_STANDARD 0 @@ -659,6 +659,7 @@ typedef struct typedef struct { UINT16 status; + BD_ADDR bd_addr; UINT16 length; BD_NAME remote_bd_name; } tBTM_REMOTE_DEV_NAME; @@ -837,6 +838,10 @@ typedef struct DEV_CLASS_PTR p_dc; /* The device class */ BD_NAME_PTR p_bdn; /* The device name */ UINT8 *p_features; /* pointer to the remote device's features page[0] (supported features page) */ +#if BLE_INCLUDED == TRUE + UINT16 handle; /* connection handle */ + tBT_TRANSPORT transport; /* link is LE or not */ +#endif } tBTM_BL_CONN_DATA; /* the data type associated with BTM_BL_DISCN_EVT */ @@ -844,6 +849,10 @@ typedef struct { tBTM_BL_EVENT event; /* The event reported. */ BD_ADDR_PTR p_bda; /* The address of the disconnected device */ +#if BLE_INCLUDED == TRUE + UINT16 handle; /* disconnected connection handle */ + tBT_TRANSPORT transport; /* link is LE link or not */ +#endif } tBTM_BL_DISCN_DATA; /* Busy-Level shall have the inquiry_paging mask set when @@ -893,10 +902,16 @@ typedef void (tBTM_BL_CHANGE_CB) (tBTM_BL_EVENT_DATA *p_data); ** changes. First param is BD address, second is if added or removed. ** Registered through BTM_AclRegisterForChanges call. */ +#if BLE_INCLUDED == TRUE +typedef void (tBTM_ACL_DB_CHANGE_CB) (BD_ADDR p_bda, DEV_CLASS p_dc, + BD_NAME p_bdn, UINT8 *features, + BOOLEAN is_new, UINT16 handle, + tBT_TRANSPORT transport); +#else typedef void (tBTM_ACL_DB_CHANGE_CB) (BD_ADDR p_bda, DEV_CLASS p_dc, BD_NAME p_bdn, UINT8 *features, BOOLEAN is_new); - +#endif /***************************************************************************** ** SCO CHANNEL MANAGEMENT *****************************************************************************/ @@ -1565,7 +1580,8 @@ typedef void (tBTM_MKEY_CALLBACK) (BD_ADDR bd_addr, UINT8 status, UINT8 key_flag ** optional data passed in by BTM_SetEncryption ** tBTM_STATUS - result of the operation */ -typedef void (tBTM_SEC_CBACK) (BD_ADDR bd_addr, void *p_ref_data, tBTM_STATUS result); +typedef void (tBTM_SEC_CBACK) (BD_ADDR bd_addr, tBT_TRANSPORT trasnport, + void *p_ref_data, tBTM_STATUS result); /* Bond Cancel complete. Parameters are ** Result of the cancel operation @@ -1897,73 +1913,6 @@ typedef struct #define BTM_VSC_NFC_SUPPORTED(x) ((x)[BTM_FEATURE_NFC_OFF] & BTM_FEATURE_NFC_MASK) -/************************ -** Dual-Stack support -*************************/ -/* BTM_SYNC_FAIL_EVT reason codes */ -#define BTM_SYNC_SUCCESS 0 -#define BTM_SYNC_FAIL_BTE_SWITCH_REJECTED 1 -#define BTM_SYNC_FAIL_TRANS_PAUSE 2 -#define BTM_SYNC_FAIL_CORE_SYNC 3 -#define BTM_SYNC_FAIL_BTA_SYNC 4 -#define BTM_SYNC_FAIL_TRANS_RESUME 5 -#define BTM_SYNC_FAIL_RESYNC 6 -#define BTM_SYNC_FAIL_ERROR 7 -#define BTM_SYNC_FAIL_UIPC_OPEN 8 -typedef UINT8 tBTM_SYNC_STATUS; - -/* Direction of sync (used by BTM_SyncStack) */ -#define BTM_SW_BB_TO_MM 0 -#define BTM_SW_TO_BB 1 /* Switch back to baseband stack (from either MM or BTC host) */ -#define BTM_SW_RESYNC 2 -#define BTM_SW_BB_TO_BTC 3 /* Switch from baseband stack to Bluetooth Controller Host stack */ -#define BTM_SW_MM_TO_BB 4 -#define BTM_SW_BTC_TO_BB 5 -typedef UINT8 tBTM_SW_DIR; - -/* Stack synchronization events (returned by tBTM_SYNC_STACK_CBACK callback) */ -#define BTM_SYNC_CPLT_EVT 0 -#define BTM_SYNC_BTA_EVT 1 -#define BTM_RESYNC_CPLT_EVT 2 -#define BTM_UIPC_OPENED_EVT 3 -#define BTM_UIPC_CLOSED_EVT 4 -typedef UINT8 tBTM_SYNC_STACK_EVT; - -/* Synchronization info from BTA/application that will be sent when calling BTE sync request functions */ -typedef struct -{ - tBTM_SW_DIR dir; - UINT16 lcid[BTM_SYNC_INFO_NUM_STR]; - UINT8 avdt_handle[BTM_SYNC_INFO_NUM_STR]; -} tBTM_SYNC_INFO; - -/* Stack synchonization callback function -** Parameters are -** event: stack synchronization event -** status: BTM_SUCCESS if event was successful -*/ -typedef void (*tBTM_SYNC_STACK_CBACK)(tBTM_SYNC_STACK_EVT event, tBTM_SYNC_STATUS status); - - -/* Sync complete callback function. Called by bte layers after synchronization is complete -** so that BTM_SYNC can procede with the next step for switching stack to MM -** -** Parameters are -** status: BTM_SUCCESS if synchronization was successful -*/ -typedef void (*tBTM_SYNC_CPLT_CBACK)(tBTM_STATUS status); - - - -/* IPC event callback function. Called by BTM when an IPC event is received. -** These events are currently sent to DM through the callback function. -** -** Parameters are -** status: BTM_SUCCESS if synchronization was successful -** p_data: Actual message in the IPC -*/ -typedef void (tBTM_IPC_EVT_CBACK)(tBTM_STATUS status, BT_HDR *p_data); - /* MIP evnets, callbacks */ enum { @@ -2659,7 +2608,8 @@ BTM_API extern BOOLEAN BTM_TryAllocateSCN(UINT8 scn); ** *******************************************************************************/ BTM_API extern tBTM_STATUS BTM_ReadRemoteDeviceName (BD_ADDR remote_bda, - tBTM_CMPL_CB *p_cb); + tBTM_CMPL_CB *p_cb, + tBT_TRANSPORT transport); /******************************************************************************* @@ -3187,7 +3137,7 @@ BTM_API extern BOOLEAN BTM_TryAllocateSCN(UINT8 scn); ** Returns TRUE if connection is up, else FALSE. ** *******************************************************************************/ - BTM_API extern BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda); + BTM_API extern BOOLEAN BTM_IsAclConnectionUp (BD_ADDR remote_bda, tBT_TRANSPORT transport); /******************************************************************************* @@ -3273,7 +3223,8 @@ BTM_API extern BOOLEAN BTM_TryAllocateSCN(UINT8 scn); ** BTM_BUSY if command is already in progress ** *******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, tBTM_CMPL_CB *p_cb); + BTM_API extern tBTM_STATUS BTM_ReadTxPower (BD_ADDR remote_bda, + tBT_TRANSPORT transport, tBTM_CMPL_CB *p_cb); /******************************************************************************* ** @@ -3640,7 +3591,8 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ - BTM_API extern BOOLEAN BTM_SecRegisterLinkKeyNotificationCallback (tBTM_LINK_KEY_CALLBACK *p_callback); + BTM_API extern BOOLEAN BTM_SecRegisterLinkKeyNotificationCallback ( + tBTM_LINK_KEY_CALLBACK *p_callback); /******************************************************************************* @@ -3653,7 +3605,8 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ - BTM_API extern BOOLEAN BTM_SecAddRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); + BTM_API extern BOOLEAN BTM_SecAddRmtNameNotifyCallback ( + tBTM_RMT_NAME_CALLBACK *p_callback); /******************************************************************************* @@ -3666,7 +3619,8 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** Returns TRUE if OK, else FALSE ** *******************************************************************************/ - BTM_API extern BOOLEAN BTM_SecDeleteRmtNameNotifyCallback (tBTM_RMT_NAME_CALLBACK *p_callback); + BTM_API extern BOOLEAN BTM_SecDeleteRmtNameNotifyCallback ( + tBTM_RMT_NAME_CALLBACK *p_callback); /******************************************************************************* @@ -3709,6 +3663,22 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); /******************************************************************************* ** +** Function BTM_GetSecurityFlagsByTransport +** +** Description Get security flags for the device on a particular transport +** +** Parameters bd_addr: BD address of remote device +** p_sec_flags : Out parameter to be filled with security flags for the connection +** transport : Physical transport of the connection (BR/EDR or LE) +** +** Returns BOOLEAN TRUE or FALSE is device found +** +*******************************************************************************/ + BTM_API extern BOOLEAN BTM_GetSecurityFlagsByTransport (BD_ADDR bd_addr, + UINT8 * p_sec_flags, tBT_TRANSPORT transport); + +/******************************************************************************* +** ** Function BTM_ReadTrustedMask ** ** Description Get trusted mask for the device @@ -3789,9 +3759,10 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** Returns TRUE if registered OK, else FALSE ** *******************************************************************************/ - BTM_API extern BOOLEAN BTM_SetUCDSecurityLevel (BOOLEAN is_originator, char *p_name, UINT8 service_id, - UINT16 sec_level, UINT16 psm, UINT32 mx_proto_id, - UINT32 mx_chan_id); + BTM_API extern BOOLEAN BTM_SetUCDSecurityLevel (BOOLEAN is_originator, char *p_name, + UINT8 service_id, UINT16 sec_level, + UINT16 psm, UINT32 mx_proto_id, + UINT32 mx_chan_id); /******************************************************************************* ** @@ -3951,10 +3922,37 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** ** Description This function is called to perform bonding with peer device. ** +** Parameters: bd_addr - Address of the device to bond +** pin_len - length in bytes of the PIN Code +** p_pin - pointer to array with the PIN Code +** trusted_mask - bitwise OR of trusted services (array of UINT32) + ** Returns BTM_CMD_STARTED if successfully initiated, otherwise error ** *******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]); + BTM_API extern tBTM_STATUS BTM_SecBond (BD_ADDR bd_addr, + UINT8 pin_len, UINT8 *p_pin, + UINT32 trusted_mask[]); + +/******************************************************************************* +** +** Function BTM_SecBondByTransport +** +** Description This function is called to perform bonding by designated transport +** +** Parameters: bd_addr - Address of the device to bond +** pin_len - length in bytes of the PIN Code +** p_pin - pointer to array with the PIN Code +** trusted_mask - bitwise OR of trusted services (array of UINT32) +** transport : Physical transport to use for bonding (BR/EDR or LE) +** +** Returns BTM_CMD_STARTED if successfully initiated, otherwise error +** +*******************************************************************************/ + BTM_API extern tBTM_STATUS BTM_SecBondByTransport (BD_ADDR bd_addr, + tBT_TRANSPORT transport, + UINT8 pin_len, UINT8 *p_pin, + UINT32 trusted_mask[]); /******************************************************************************* ** @@ -3993,8 +3991,8 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** BTM_MODE_UNSUPPORTED - if security manager not linked in. ** *******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBTM_SEC_CBACK *p_callback, - void *p_ref_data); + BTM_API extern tBTM_STATUS BTM_SetEncryption (BD_ADDR bd_addr, tBT_TRANSPORT transport, + tBTM_SEC_CBACK *p_callback, void *p_ref_data); /******************************************************************************* ** @@ -4079,7 +4077,8 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** r - simple pairing Randomizer C. ** *******************************************************************************/ - BTM_API extern void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r); + BTM_API extern void BTM_RemoteOobDataReply(tBTM_STATUS res, BD_ADDR bd_addr, + BT_OCTET16 c, BT_OCTET16 r); /******************************************************************************* ** @@ -4232,7 +4231,7 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); ** Returns the handle of the connection, or 0xFFFF if none. ** *******************************************************************************/ - BTM_API extern UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda); + BTM_API extern UINT16 BTM_GetHCIConnHandle (BD_ADDR remote_bda, tBT_TRANSPORT transport); /******************************************************************************* @@ -4419,171 +4418,6 @@ BTM_API extern tBTM_STATUS BTM_SetWBSCodec (tBTM_SCO_CODEC_TYPE codec_type); BTM_API extern UINT8 BTM_GetEirUuidList( UINT8 *p_eir, UINT8 uuid_size, UINT8 *p_num_uuid, UINT8 *p_uuid_list, UINT8 max_num_uuid); -/******************************************************************************* -** -** Function BTM_SyncStack -** -** Description For Dual-Stack support. Called to initiate switching to/from -** main stack (running on phone baseband) to mm stack (light -** stack running on multi-media chip) -** -** Parameters sync_dir: BTM_SW_BB_TO_MM: switch from BB to MM stack -** BTM_SW_MM_TO_BB: switch from MM to BB stack -** BTM_SW_RESYNC: resync MM and BB stacks -** -** p_sync_cback: callback function for event notification -** Returns -** -*******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_SyncStack(tBTM_SW_DIR sync_dir, tBTM_SYNC_STACK_CBACK p_sync_cback); - -/******************************************************************************* -** -** Function BTM_SyncBtaRsp -** -** Description For Dual-Stack support. Called to indicate that upper layers -** (e.g. BTA or application) have completed synchronizing bta/app -** specific layers for switching. -** -** Called in response to 'BTM_SYNC_BTA_EVT' -** -** Parameters status: BTM_SUCESS: bta/app successfully synchronized -** otherwise: sync was unsuccessfule. Abort switch. -** -** p_btm_sync_info: information from bta/app that will be needed -** by BTE (avdt and l2cap) for switching. -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_SyncBtaRsp(tBTM_STATUS status, tBTM_SYNC_INFO *p_btm_sync_info); - -/******************************************************************************* -** -** Function BTM_OpenUIPC -** -** Description For Dual-Stack support. Called to open UIPC between -** main stack (running on phone baseband) to embedded light stack -** (running on Multimedia or Bluetooth Controller chip) -** -** Parameters sync_dir: BTM_SW_BB_TO_MM: switch from BB to MM stack -** BTM_SW_BB_TO_BTC:switch from BB to BTC stack -** -** p_sync_callback: callback function for event notification -** Returns -** -*******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_OpenUIPC(tBTM_SW_DIR sync_dir, tBTM_SYNC_STACK_CBACK p_sync_callback); - -/******************************************************************************* -** -** Function BTM_CloseUIPC -** -** Description For Dual-Stack support. Called to close UIPC between -** main stack (running on phone baseband) to embedded light stack -** (running on Multimedia or Bluetooth Controller chip) -** -** Parameters -** p_sync_callback: callback function for event notification -** Returns -** -*******************************************************************************/ - BTM_API extern tBTM_STATUS BTM_CloseUIPC(tBTM_SYNC_STACK_CBACK p_sync_callback); - -/******************************************************************************* -** -** Function BTM_IpcSend -** -** Description For Dual-Stack support. Called to send ipc messages from -** full stack to lite stack and vice-versa. This API is -** typically called by bta layers e.g. bta_av. -** -** -** Parameters len: Length of the buffer in the ipc message -** -** buffer: Pointer to the buffer to be passed in the IPC message -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_IpcSend(UINT16 len, UINT8* buffer); - -/******************************************************************************* -** -** Function BTM_IpcSendBuf -** -** Description For Dual-Stack support. Called to send ipc messages from -** full stack to lite stack and vice-versa. This API is -** typically called by bta layers e.g. bta_av_sync. -** -** -** Parameters p_buf: Pointer to the buffer to be passed in the IPC message -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_IpcSendBuf(BT_HDR* p_buf); - -/******************************************************************************* -** -** Function BTM_RegIpcEvtHandler -** -** Description registers the DM provided handler for IPC events -** -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_RegIpcEvtHandler(tBTM_IPC_EVT_CBACK *p_cback); - -/******************************************************************************* -** -** Function BTM_RegRTIpcEvtHandler -** -** Description registers the RT(Audio Routing) provided handler for IPC events -** -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_RegRTIpcEvtHandler(tBTM_IPC_EVT_CBACK *p_cback); - -/***************************************************************************** -** N2BT -*****************************************************************************/ - -/* Data callback for N2BT */ - typedef void (tBTM_N2BT_DATA_CB) (BD_ADDR bd_addr, UINT16 handle, UINT8 *p_data, UINT16 datalen); - -/******************************************************************************* -** -** Function BTM_N2BtAcquire -** -** Description Put controller into acquisition mode -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_N2BtAcquire(BD_ADDR bd_addr, UINT16 timeout, - UINT8 freq, UINT8 src_addrlen, UINT8 sensor_flags, - UINT8 sensor_type, UINT8 sensor_clk_accuracy, - UINT16 add_rx_window, UINT16 init_crc, - UINT32 ac_low, UINT32 ac_high, UINT16 pkt_hdr, - UINT16 list_dur, UINT16 list_int, - UINT8 oor_missed_pkts, tBTM_VSC_CMPL_CB *p_cb, - tBTM_N2BT_DATA_CB *p_data_cback); - -/******************************************************************************* -** -** Function BTM_N2BtDisconnect -** -** Description Disconnects all N2BT devices -** -** Returns void -** -*******************************************************************************/ - BTM_API extern void BTM_N2BtDisconnect(void); - /***************************************************************************** ** SCO OVER HCI *****************************************************************************/ diff --git a/stack/include/btm_ble_api.h b/stack/include/btm_ble_api.h index 584ce9a0a..0bfaea96a 100644 --- a/stack/include/btm_ble_api.h +++ b/stack/include/btm_ble_api.h @@ -30,12 +30,17 @@ #define CHNL_MAP_LEN 5 typedef UINT8 tBTM_BLE_CHNL_MAP[CHNL_MAP_LEN]; -#define BTM_BLE_CONNECT_EVT 0x00 -#define BTM_BLE_CONNECT_DIR_EVT 0x01 -#define BTM_BLE_DISCOVER_EVT 0x02 -#define BTM_BLE_NON_CONNECT_EVT 0x03 +/* 0x00-0x04 only used for set advertising parameter command */ +#define BTM_BLE_CONNECT_EVT 0x00 /* 0x00-0x04 only used for set advertising + parameter command */ +#define BTM_BLE_CONNECT_DIR_EVT 0x01 /* Connectable directed advertising */ +#define BTM_BLE_DISCOVER_EVT 0x02 /* Scannable undirected advertising */ +#define BTM_BLE_NON_CONNECT_EVT 0x03 /* Non connectable undirected advertising */ +#define BTM_BLE_CONNECT_LO_DUTY_DIR_EVT 0x04 /* Connectable low duty + cycle directed advertising */ + /* 0x00 - 0x05 can be received on adv event type */ #define BTM_BLE_SCAN_RSP_EVT 0x04 -#define BTM_BLE_SCAN_REQ_EVT 0x06 +#define BTM_BLE_SCAN_REQ_EVT 0x05 #define BTM_BLE_UNKNOWN_EVT 0xff #define BTM_BLE_UNKNOWN_EVT 0xff @@ -191,27 +196,33 @@ typedef struct #define BTM_BLE_LIMIT_DISC_FLAG (0x01 << 0) #define BTM_BLE_GEN_DISC_FLAG (0x01 << 1) #define BTM_BLE_BREDR_NOT_SPT (0x01 << 2) +/* 4.1 spec adv flag for simultaneous BR/EDR+LE connection support */ +#define BTM_BLE_DMT_CONTROLLER_SPT (0x01 << 3) +#define BTM_BLE_DMT_HOST_SPT (0x01 << 4) + #define BTM_BLE_NON_LIMIT_DISC_FLAG (0x00 ) /* lowest bit unset */ #define BTM_BLE_ADV_FLAG_MASK (BTM_BLE_LIMIT_DISC_FLAG | BTM_BLE_BREDR_NOT_SPT | BTM_BLE_GEN_DISC_FLAG) #define BTM_BLE_LIMIT_DISC_MASK (BTM_BLE_LIMIT_DISC_FLAG ) -#define BTM_BLE_AD_BIT_DEV_NAME (0x0001 << 0) -#define BTM_BLE_AD_BIT_FLAGS (0x0001 << 1) -#define BTM_BLE_AD_BIT_MANU (0x0001 << 2) -#define BTM_BLE_AD_BIT_TX_PWR (0x0001 << 3) -#define BTM_BLE_AD_BIT_INT_RANGE (0x0001 << 5) -#define BTM_BLE_AD_BIT_SERVICE (0x0001 << 6) -#define BTM_BLE_AD_BIT_SERVICE_SOL (0x0001 << 7) -#define BTM_BLE_AD_BIT_SERVICE_DATA (0x0001 << 8) -#define BTM_BLE_AD_BIT_SIGN_DATA (0x0001 << 9) -#define BTM_BLE_AD_BIT_SERVICE_128SOL (0x0001 << 10) -#define BTM_BLE_AD_BIT_APPEARANCE (0x0001 << 11) -#define BTM_BLE_AD_BIT_PUBLIC_ADDR (0x0001 << 12) -#define BTM_BLE_AD_BIT_RANDOM_ADDR (0x0001 << 13) - -#define BTM_BLE_AD_BIT_PROPRIETARY (0x0001 << 15) - -typedef UINT16 tBTM_BLE_AD_MASK; +#define BTM_BLE_AD_BIT_DEV_NAME (0x00000001 << 0) +#define BTM_BLE_AD_BIT_FLAGS (0x00000001 << 1) +#define BTM_BLE_AD_BIT_MANU (0x00000001 << 2) +#define BTM_BLE_AD_BIT_TX_PWR (0x00000001 << 3) +#define BTM_BLE_AD_BIT_INT_RANGE (0x00000001 << 5) +#define BTM_BLE_AD_BIT_SERVICE (0x00000001 << 6) +#define BTM_BLE_AD_BIT_SERVICE_SOL (0x00000001 << 7) +#define BTM_BLE_AD_BIT_SERVICE_DATA (0x00000001 << 8) +#define BTM_BLE_AD_BIT_SIGN_DATA (0x00000001 << 9) +#define BTM_BLE_AD_BIT_SERVICE_128SOL (0x00000001 << 10) +#define BTM_BLE_AD_BIT_APPEARANCE (0x00000001 << 11) +#define BTM_BLE_AD_BIT_PUBLIC_ADDR (0x00000001 << 12) +#define BTM_BLE_AD_BIT_RANDOM_ADDR (0x00000001 << 13) +#define BTM_BLE_AD_BIT_SERVICE_32 (0x00000001 << 4) +#define BTM_BLE_AD_BIT_SERVICE_32SOL (0x00000001 << 14) + +#define BTM_BLE_AD_BIT_PROPRIETARY (0x00000001 << 15) + +typedef UINT32 tBTM_BLE_AD_MASK; #define BTM_BLE_AD_TYPE_FLAG HCI_EIR_FLAGS_TYPE /* 0x01 */ #define BTM_BLE_AD_TYPE_16SRV_PART HCI_EIR_MORE_16BITS_UUID_TYPE /* 0x02 */ @@ -233,6 +244,11 @@ typedef UINT16 tBTM_BLE_AD_MASK; #define BTM_BLE_AD_TYPE_PUBLIC_TARGET 0x17 #define BTM_BLE_AD_TYPE_RANDOM_TARGET 0x18 #define BTM_BLE_AD_TYPE_APPEARANCE 0x19 +#define BTM_BLE_AD_TYPE_ADV_INT 0x1a +#define BTM_BLE_AD_TYPE_32SOL_SRV_UUID 0x1b +#define BTM_BLE_AD_TYPE_32SERVICE_DATA 0x1c +#define BTM_BLE_AD_TYPE_128SERVICE_DATA 0x1d + #define BTM_BLE_AD_TYPE_MANU HCI_EIR_MANUFACTURER_SPECIFIC_TYPE /* 0xff */ typedef UINT8 tBTM_BLE_AD_TYPE; @@ -252,12 +268,30 @@ typedef struct UINT16 *p_uuid; }tBTM_BLE_SERVICE; +/* Service tag supported in the device */ +typedef struct +{ + UINT8 num_service; + BOOLEAN list_cmpl; + UINT32 *p_uuid; +}tBTM_BLE_32SERVICE; + + typedef struct { UINT8 len; UINT8 *p_val; }tBTM_BLE_MANU; + +typedef struct +{ + tBT_UUID service_uuid; + UINT8 len; + UINT8 *p_val; +}tBTM_BLE_SERVICE_DATA; + + typedef struct { UINT8 adv_type; @@ -273,9 +307,12 @@ typedef struct typedef struct { - tBTM_BLE_MANU manu; /* manufactuer data */ + tBTM_BLE_SERVICE_DATA *p_service_data; + tBTM_BLE_MANU manu; /* manufactuer data */ tBTM_BLE_INT_RANGE int_range; /* slave prefered conn interval range */ tBTM_BLE_SERVICE services; /* services */ + tBTM_BLE_32SERVICE service_32b; /* 32 bits Service UUID */ + tBTM_BLE_32SERVICE sol_service_32b; /* List of 32 bit Service Solicitation UUIDs */ UINT16 appearance; UINT8 flag; tBTM_BLE_PROPRIETARY *p_proprietary; @@ -434,19 +471,6 @@ BTM_API extern tBTM_STATUS BTM_BleWriteScanRsp(tBTM_BLE_AD_MASK data_mask, /******************************************************************************* ** -** Function BTM_BleReset -** -** Description This function is called to reset ULP controller. -** -** Parameters None. -** -** Returns void -** -*******************************************************************************/ -BTM_API extern void BTM_BleReset(void); - -/******************************************************************************* -** ** Function BTM_BleObserve ** ** Description This procedure keep the device listening for advertising @@ -866,25 +890,28 @@ void BTM_BleTestEnd(tBTM_CMPL_CB *p_cmd_cmpl_cback); /******************************************************************************* ** -** Function BTM_IsBleLink +** Function BTM_UseLeLink ** -** Description This function is to check the link type is BLE or BR/EDR. +** Description This function is to select the underneath physical link to use. ** -** Returns TRUE if BLE link; FALSE if BR/EDR. +** Returns TRUE to use LE, FALSE use BR/EDR. ** *******************************************************************************/ -BTM_API extern BOOLEAN BTM_IsBleLink (BD_ADDR bd_addr); +BTM_API extern BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); /******************************************************************************* ** -** Function BTM_UseLeLink +** Function BTM_BleStackEnable ** -** Description This function is to select the underneath physical link to use. +** Description Enable/Disable BLE functionality on stack regarless controller +** capability. ** -** Returns TRUE to use LE, FALSE use BR/EDR. +** Parameters: enable: TRUE to enable, FALSE to disable. +** +** Returns TRUE if added OK, else FALSE ** *******************************************************************************/ -BTM_API extern BOOLEAN BTM_UseLeLink (BD_ADDR bd_addr); +BTM_API extern tBTM_STATUS BTM_BleStackEnable (BOOLEAN enable); #ifdef __cplusplus } diff --git a/stack/include/btu.h b/stack/include/btu.h index 4f0e1622c..805fea79f 100644 --- a/stack/include/btu.h +++ b/stack/include/btu.h @@ -153,10 +153,15 @@ typedef void (*tBTU_EVENT_CALLBACK)(BT_HDR *p_hdr); #define BTU_TTYPE_ATT_WAIT_FOR_APP_RSP 104 #define BTU_TTYPE_ATT_WAIT_FOR_IND_ACK 105 -#define BTU_TTYPE_UCD_TO 106 +#define BTU_TTYPE_L2CAP_END_CONN_UPD 106 + +#define BTU_TTYPE_BLE_GAP_FAST_ADV 107 +#define BTU_TTYPE_BLE_OBSERVE 108 + + +#define BTU_TTYPE_UCD_TO 109 + -/* BTU timer event for TBFC */ -#define BTU_TTYPE_TBFC_RESUME 107 /* Define the BTU_TASK APPL events */ diff --git a/stack/include/gap_api.h b/stack/include/gap_api.h index a17510fc7..645323d2c 100644 --- a/stack/include/gap_api.h +++ b/stack/include/gap_api.h @@ -225,6 +225,9 @@ typedef union typedef void (tGAP_BLE_DEV_NAME_CBACK)(BOOLEAN status, BD_ADDR addr, UINT16 length, char *p_name); typedef void (tGAP_BLE_RECONN_ADDR_CBACK)(BOOLEAN status, BD_ADDR addr, BD_ADDR reconn_bda); +#if BLE_PRIVACY_SPT == TRUE +typedef void (tGAP_BLE_PRIVACY_CBACK)(BOOLEAN status, BD_ADDR addr, BOOLEAN privacy_enabled); +#endif /***************************************************************************** ** External Function Declarations @@ -440,10 +443,16 @@ GAP_API extern UINT16 GAP_SetPairableMode (UINT16 mode, BOOLEAN connect_only_pai ** ** Description This function is called to initiate bonding with peer device ** +** Parameters: bd_addr - Address of the device to bond +** pin_len - length in bytes of the PIN Code +** p_pin - pointer to array with the PIN Code +** trusted_mask - bitwise OR of trusted services (array of UINT32) +** ** Returns tBTM_STATUS - BTM_CMD_STARTED of successfully initiated ** *******************************************************************************/ -GAP_API extern UINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, UINT8 *p_pin, UINT32 trusted_mask[]); +GAP_API extern UINT8 GAP_Bond (BD_ADDR bd_addr, UINT8 pin_len, + UINT8 *p_pin, UINT32 trusted_mask[]); /******************************************************************************* ** diff --git a/stack/include/gatt_api.h b/stack/include/gatt_api.h index f3df8b7ea..9da7d9c04 100644 --- a/stack/include/gatt_api.h +++ b/stack/include/gatt_api.h @@ -25,44 +25,47 @@ ** Constants *****************************************************************************/ /* Success code and error codes */ -#define GATT_SUCCESS 0x0000 -#define GATT_INVALID_HANDLE 0x0001 -#define GATT_READ_NOT_PERMIT 0x0002 -#define GATT_WRITE_NOT_PERMIT 0x0003 -#define GATT_INVALID_PDU 0x0004 -#define GATT_INSUF_AUTHENTICATION 0x0005 -#define GATT_REQ_NOT_SUPPORTED 0x0006 -#define GATT_INVALID_OFFSET 0x0007 -#define GATT_INSUF_AUTHORIZATION 0x0008 -#define GATT_PREPARE_Q_FULL 0x0009 -#define GATT_NOT_FOUND 0x000a -#define GATT_NOT_LONG 0x000b -#define GATT_INSUF_KEY_SIZE 0x000c -#define GATT_INVALID_ATTR_LEN 0x000d -#define GATT_ERR_UNLIKELY 0x000e -#define GATT_INSUF_ENCRYPTION 0x000f -#define GATT_UNSUPPORT_GRP_TYPE 0x0010 -#define GATT_INSUF_RESOURCE 0x0011 - - -#define GATT_ILLEGAL_PARAMETER 0x0087 -#define GATT_NO_RESOURCES 0x0080 -#define GATT_INTERNAL_ERROR 0x0081 -#define GATT_WRONG_STATE 0x0082 -#define GATT_DB_FULL 0x0083 -#define GATT_BUSY 0x0084 -#define GATT_ERROR 0x0085 -#define GATT_CMD_STARTED 0x0086 -#define GATT_PENDING 0x0088 -#define GATT_AUTH_FAIL 0x0089 -#define GATT_MORE 0x008a -#define GATT_INVALID_CFG 0x008b -#define GATT_SERVICE_STARTED 0x008c +#define GATT_SUCCESS 0x00 +#define GATT_INVALID_HANDLE 0x01 +#define GATT_READ_NOT_PERMIT 0x02 +#define GATT_WRITE_NOT_PERMIT 0x03 +#define GATT_INVALID_PDU 0x04 +#define GATT_INSUF_AUTHENTICATION 0x05 +#define GATT_REQ_NOT_SUPPORTED 0x06 +#define GATT_INVALID_OFFSET 0x07 +#define GATT_INSUF_AUTHORIZATION 0x08 +#define GATT_PREPARE_Q_FULL 0x09 +#define GATT_NOT_FOUND 0x0a +#define GATT_NOT_LONG 0x0b +#define GATT_INSUF_KEY_SIZE 0x0c +#define GATT_INVALID_ATTR_LEN 0x0d +#define GATT_ERR_UNLIKELY 0x0e +#define GATT_INSUF_ENCRYPTION 0x0f +#define GATT_UNSUPPORT_GRP_TYPE 0x10 +#define GATT_INSUF_RESOURCE 0x11 + + +#define GATT_ILLEGAL_PARAMETER 0x87 +#define GATT_NO_RESOURCES 0x80 +#define GATT_INTERNAL_ERROR 0x81 +#define GATT_WRONG_STATE 0x82 +#define GATT_DB_FULL 0x83 +#define GATT_BUSY 0x84 +#define GATT_ERROR 0x85 +#define GATT_CMD_STARTED 0x86 +#define GATT_PENDING 0x88 +#define GATT_AUTH_FAIL 0x89 +#define GATT_MORE 0x8a +#define GATT_INVALID_CFG 0x8b +#define GATT_SERVICE_STARTED 0x8c #define GATT_ENCRYPED_MITM GATT_SUCCESS -#define GATT_ENCRYPED_NO_MITM 0x008d -#define GATT_NOT_ENCRYPTED 0x008e - +#define GATT_ENCRYPED_NO_MITM 0x8d +#define GATT_NOT_ENCRYPTED 0x8e + /* 0xE0 ~ 0xFC reserved for future use */ +#define GATT_CCC_CFG_ERR 0xFD /* Client Characteristic Configuration Descriptor Improperly Configured */ +#define GATT_PRC_IN_PROGRESS 0xFE /* Procedure Already in progress */ +#define GATT_OUT_OF_RANGE 0xFF /* Attribute value out of range */ typedef UINT8 tGATT_STATUS; @@ -325,12 +328,9 @@ typedef union } tGATTS_RSP; /* Transports for the primary service */ -enum -{ - GATT_TRANSPORT_LE, - GATT_TRANSPORT_BR_EDR, - GATT_TRANSPORT_LE_BR_EDR -}; +#define GATT_TRANSPORT_LE BT_TRANSPORT_LE +#define GATT_TRANSPORT_BR_EDR BT_TRANSPORT_BR_EDR +#define GATT_TRANSPORT_LE_BR_EDR (BT_TRANSPORT_LE|BT_TRANSPORT_BR_EDR) typedef UINT8 tGATT_TRANSPORT; #define GATT_PREP_WRITE_CANCEL 0x00 @@ -548,26 +548,30 @@ typedef struct typedef UINT8 tGATT_IF; -#define GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP 0 /* start a idle timer for this duration when no application - need to use the link */ +#define GATT_LINK_IDLE_TIMEOUT_WHEN_NO_APP 0 /* start a idle timer for this duration + when no application need to use the link */ #define GATT_LINK_NO_IDLE_TIMEOUT 0xFFFF #define GATT_INVALID_ACL_HANDLE 0xFFFF /* discover result callback function */ -typedef void (tGATT_DISC_RES_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data); +typedef void (tGATT_DISC_RES_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, + tGATT_DISC_RES *p_data); /* discover complete callback function */ typedef void (tGATT_DISC_CMPL_CB) (UINT16 conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status); /* Define a callback function for when read/write/disc/config operation is completed. */ -typedef void (tGATT_CMPL_CBACK) (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, tGATT_CL_COMPLETE *p_data); +typedef void (tGATT_CMPL_CBACK) (UINT16 conn_id, tGATTC_OPTYPE op, tGATT_STATUS status, + tGATT_CL_COMPLETE *p_data); /* Define a callback function when an initialized connection is established. */ -typedef void (tGATT_CONN_CBACK) (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, tGATT_DISCONN_REASON reason); +typedef void (tGATT_CONN_CBACK) (tGATT_IF gatt_if, BD_ADDR bda, UINT16 conn_id, BOOLEAN connected, + tGATT_DISCONN_REASON reason, tBT_TRANSPORT transport); /* attribute request callback for ATT server */ -typedef void (tGATT_REQ_CBACK )(UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE type, tGATTS_DATA *p_data); +typedef void (tGATT_REQ_CBACK )(UINT16 conn_id, UINT32 trans_id, tGATTS_REQ_TYPE type, + tGATTS_DATA *p_data); /* Define a callback function when encryption is established. */ typedef void (tGATT_ENC_CMPL_CB)(tGATT_IF gatt_if, BD_ADDR bda); @@ -639,7 +643,8 @@ typedef struct /* Attibute server handle ranges NV storage callback functions */ typedef void (tGATTS_NV_SAVE_CBACK)(BOOLEAN is_saved, tGATTS_HNDL_RANGE *p_hndl_range); -typedef BOOLEAN (tGATTS_NV_SRV_CHG_CBACK)(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req, tGATTS_SRV_CHG_RSP *p_rsp); +typedef BOOLEAN (tGATTS_NV_SRV_CHG_CBACK)(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req, + tGATTS_SRV_CHG_RSP *p_rsp); typedef struct { @@ -801,7 +806,8 @@ extern "C" ** Returns TRUE if operation succeed, FALSE if handle block was not found. ** *******************************************************************************/ - GATT_API extern BOOLEAN GATTS_DeleteService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, UINT16 svc_inst); + GATT_API extern BOOLEAN GATTS_DeleteService (tGATT_IF gatt_if, tBT_UUID *p_svc_uuid, + UINT16 svc_inst); /******************************************************************************* ** @@ -998,11 +1004,13 @@ extern "C" ** ** Parameter bd_addr: target device bd address. ** idle_tout: timeout value in seconds. +** transport: trasnport option. ** ** Returns void ** *******************************************************************************/ - GATT_API extern void GATT_SetIdleTimeout (BD_ADDR bd_addr, UINT16 idle_tout); + GATT_API extern void GATT_SetIdleTimeout (BD_ADDR bd_addr, UINT16 idle_tout, + tGATT_TRANSPORT transport); /******************************************************************************* @@ -1058,11 +1066,13 @@ extern "C" ** Parameters gatt_if: applicaiton interface ** bd_addr: peer device address. ** is_direct: is a direct conenection or a background auto connection +** transport : Physical transport for GATT connection (BR/EDR or LE) ** ** Returns TRUE if connection started; FALSE if connection start failure. ** *******************************************************************************/ - GATT_API extern BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct); + GATT_API extern BOOLEAN GATT_Connect (tGATT_IF gatt_if, BD_ADDR bd_addr, + BOOLEAN is_direct, tBT_TRANSPORT transport); /******************************************************************************* @@ -1080,7 +1090,8 @@ extern "C" ** Returns TRUE if connection started; FALSE if connection start failure. ** *******************************************************************************/ - GATT_API extern BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, BOOLEAN is_direct); + GATT_API extern BOOLEAN GATT_CancelConnect (tGATT_IF gatt_if, BD_ADDR bd_addr, + BOOLEAN is_direct); /******************************************************************************* ** @@ -1108,11 +1119,13 @@ extern "C" ** Parameters conn_id: connection id (input) ** p_gatt_if: applicaiton interface (output) ** bd_addr: peer device address. (output) +** transport : physical transport of the GATT connection (BR/EDR or LE) ** ** Returns TRUE the ligical link information is found for conn_id ** *******************************************************************************/ - GATT_API extern BOOLEAN GATT_GetConnectionInfor(UINT16 conn_id, tGATT_IF *p_gatt_if, BD_ADDR bd_addr); + GATT_API extern BOOLEAN GATT_GetConnectionInfor(UINT16 conn_id, tGATT_IF *p_gatt_if, + BD_ADDR bd_addr, tBT_TRANSPORT *p_transport); /******************************************************************************* @@ -1125,11 +1138,13 @@ extern "C" ** Parameters gatt_if: applicaiton interface (input) ** bd_addr: peer device address. (input) ** p_conn_id: connection id (output) +** transport : physical transport of the GATT connection (BR/EDR or LE) ** ** Returns TRUE the ligical link is connected ** *******************************************************************************/ - GATT_API extern BOOLEAN GATT_GetConnIdIfConnected(tGATT_IF gatt_if, BD_ADDR bd_addr, UINT16 *p_conn_id); + GATT_API extern BOOLEAN GATT_GetConnIdIfConnected(tGATT_IF gatt_if, BD_ADDR bd_addr, + UINT16 *p_conn_id, tBT_TRANSPORT transport); /******************************************************************************* diff --git a/stack/include/hcidefs.h b/stack/include/hcidefs.h index ad31d52bb..14ae89351 100644 --- a/stack/include/hcidefs.h +++ b/stack/include/hcidefs.h @@ -231,11 +231,11 @@ #define HCI_SET_MWS_PATTERN_CONFIGURATION (0x0073 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) /* ConnectionLess Broadcast */ -#define HCI_SET_RESERVED_LT_ADDR (0x0077 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) -#define HCI_DELETE_RESERVED_LT_ADDR (0x0078 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) -#define HCI_WRITE_CLB_DATA (0x0079 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) -#define HCI_WRITE_SYNC_TRAIN_PARAM (0x007A | HCI_GRP_HOST_CONT_BASEBAND_CMDS) -#define HCI_READ_SYNC_TRAIN_PARAM (0x007B | HCI_GRP_HOST_CONT_BASEBAND_CMDS) +#define HCI_SET_RESERVED_LT_ADDR (0x0074 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) +#define HCI_DELETE_RESERVED_LT_ADDR (0x0075 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) +#define HCI_WRITE_CLB_DATA (0x0076 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) +#define HCI_READ_SYNC_TRAIN_PARAM (0x0077 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) +#define HCI_WRITE_SYNC_TRAIN_PARAM (0x0078 | HCI_GRP_HOST_CONT_BASEBAND_CMDS) #define HCI_CONT_BASEBAND_CMDS_FIRST HCI_SET_EVENT_MASK #define HCI_CONT_BASEBAND_CMDS_LAST HCI_READ_SYNC_TRAIN_PARAM @@ -323,13 +323,17 @@ #define HCI_BLE_LTK_REQ_REPLY (0x001A | HCI_GRP_BLE_CMDS) #define HCI_BLE_LTK_REQ_NEG_REPLY (0x001B | HCI_GRP_BLE_CMDS) #define HCI_BLE_READ_SUPPORTED_STATES (0x001C | HCI_GRP_BLE_CMDS) + /*0x001D, 0x001E and 0x001F are reserved*/ + +#define HCI_BLE_RC_PARAM_REQ_REPLY (0x0020 | HCI_GRP_BLE_CMDS) +#define HCI_BLE_RC_PARAM_REQ_NEG_REPLY (0x0021 | HCI_GRP_BLE_CMDS) + + /* BLE TEST COMMANDS */ #define HCI_BLE_RECEIVER_TEST (0x001D | HCI_GRP_BLE_CMDS) #define HCI_BLE_TRANSMITTER_TEST (0x001E | HCI_GRP_BLE_CMDS) #define HCI_BLE_TEST_END (0x001F | HCI_GRP_BLE_CMDS) -#define HCI_BLE_RESET (0x0020 | HCI_GRP_BLE_CMDS) - /* LE supported states definition */ #define HCI_LE_ADV_STATE 0x00000001 #define HCI_LE_SCAN_STATE 0x00000002 @@ -344,6 +348,214 @@ #define HCI_LE_SCAN_SL_STATE 0x00000400 #define HCI_LE_INIT_MA_STATE 0x00000800 +/* LE Supported States */ +/* Non Connectable Adv state is supported. 0x0000000000000001 */ +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK 0x01 +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF 0 +#define HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK) + +/*Scanneable Connectable Adv state is supported. 0x0000000000000002 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_MASK 0x02 +#define HCI_SUPP_LE_STATESSCAN_ADV_OFF 0 +#define HCI_LE_STATES_SCAN_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATESSCAN_ADV_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_MASK) + +/* Connectable Adv state is supported. 0x0000000000000004 */ +#define HCI_SUPP_LE_STATES_CONN_ADV_MASK 0x04 +#define HCI_SUPP_LE_STATES_CONN_ADV_OFF 0 +#define HCI_LE_STATES_CONN_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_MASK) + +/* Hi duty Cycle Directed Adv state is supported. 0x0000000000000008 */ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK 0x08 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF 0 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK) + +/* Passive Scan state is supported. 0x0000000000000010 */ +#define HCI_SUPP_LE_STATES_PASS_SCAN_MASK 0x10 +#define HCI_SUPP_LE_STATES_PASS_SCAN_OFF 0 +#define HCI_LE_STATES_PASS_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_MASK) + +/* Active Scan state is supported. 0x0000000000000020 */ +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK 0x20 +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF 0 +#define HCI_LE_STATES_ACTIVE_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF] & HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK) + +/* Initiating state is supported. 0x0000000000000040 (or connection state in master role is also supported) */ +#define HCI_SUPP_LE_STATES_INIT_MASK 0x40 +#define HCI_SUPP_LE_STATES_INIT_OFF 0 +#define HCI_LE_STATES_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_INIT_OFF] & HCI_SUPP_LE_STATES_INIT_MASK) + +/*connection state in slave role is also supported. 0x0000000000000080 */ +#define HCI_SUPP_LE_STATES_SLAVE_MASK 0x80 +#define HCI_SUPP_LE_STATES_SLAVE_OFF 0 +#define HCI_LE_STATES_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SLAVE_OFF] & HCI_SUPP_LE_STATES_SLAVE_MASK) + +/* Non Connectable Adv state and Passive Scanning State combination is supported. 0x0000000000000100 */ +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK 0x01 +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF 1 +#define HCI_LE_STATES_NON_CONN_ADV_PASS_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK) + +/*Scannable Adv state and Passive Scanning State combination is supported. 0x0000000000000200 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK 0x02 +#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF 1 +#define HCI_LE_STATES_SCAN_ADV_PASS_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK) + +/*Connectable Adv state and Passive Scanning State combination is supported. 0x0000000000000400 */ +#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK 0x04 +#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF 1 +#define HCI_LE_STATES_CONN_ADV_PASS_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK) + +/*High Duty Cycl Directed ADv and Passive Scanning State combination is supported. 0x0000000000000800 */ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK 0x08 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF 1 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF) + +/*Non Connectable Adv state and Passive Scanning State combination is supported. 0x0000000000001000 */ +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK 0x10 +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF 1 +#define HCI_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK) + +/*Scannable Adv state and Active Scanning State combination is supported. 0x0000000000002000 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK 0x20 +#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF 1 +#define HCI_LE_STATES_SCAN_ADV_ACTIVE_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK) + +/*Connectable Adv state and Active Scanning State combination is supported. 0x0000000000004000 */ +#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK 0x40 +#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF 1 +#define HCI_LE_STATES_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK) + +/*High Duty Cycl Directed ADv and ACtive Scanning State combination is supported. 0x0000000000008000 */ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK 0x80 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF 1 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF) + +/*Non-Connectable Adv state and Initiating State combination is supported. 0x0000000000010000 */ +#define HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK 0x01 +#define HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF 2 +#define HCI_LE_STATES_NON_CONN_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF] & HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK) + +/* Scannable Adv state and Initiating State combination is supported. 0x0000000000020000 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK 0x02 +#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF 2 +#define HCI_LE_STATES_SCAN_ADV_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK) + +/* Non-Connectable Adv state and Master Role combination is supported. 0x0000000000040000 */ +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK 0x04 +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF 2 +#define HCI_LE_STATES_NON_CONN_ADV_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK) + +/*Scannable Adv state and Master Role combination is supported. 0x0000000000040000 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK 0x08 +#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF 2 +#define HCI_LE_STATES_SCAN_ADV_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK) + +/* Non-Connectable Adv and Slave Role combination is supported. 0x000000000100000 */ +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK 0x10 +#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF 2 +#define HCI_LE_STATES_NON_CONN_ADV_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF] & HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK) + +/*Scannable Adv and Slave Role combination is supported. 0x000000000200000 */ +#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK 0x20 +#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF 2 +#define HCI_LE_STATES_SCAN_ADV_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK) + +/*Passive Scan and Initiating State combination is supported. 0x000000000400000 */ +#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK 0x40 +#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF 2 +#define HCI_LE_STATES_PASS_SCAN_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK) + +/*Active Scan and Initiating State combination is supported. 0x000000000800000 */ +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK 0x80 +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF 2 +#define HCI_LE_STATES_ACTIVE_SCAN_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF] & HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK) + +/*Passive Scan and Master Role combination is supported. 0x000000001000000 */ +#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK 0x01 +#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF 3 +#define HCI_LE_STATES_PASS_SCAN_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK) + +/*Active Scan and Master Role combination is supported. 0x000000002000000 */ +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK 0x02 +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF 3 +#define HCI_LE_STATES_ACTIVE_SCAN_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF] & HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK) + +/*Passive Scan and Slave Role combination is supported. 0x000000004000000 */ +#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK 0x04 +#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF 3 +#define HCI_LE_STATES_PASS_SCAN_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK) + +/*Active Scan and Slave Role combination is supported. 0x000000008000000 */ +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK 0x08 +#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF 3 +#define HCI_LE_STATES_ACTIVE_SCAN_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF] & HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK) + +/*Link Layer Topology Added States Combo */ +/*Initiating State and Master Role combination supported. + Master Role and Master Role combination is also supported. 0x0000000010000000 */ +#define HCI_SUPP_LE_STATES_INIT_MASTER_MASK 0x10 +#define HCI_SUPP_LE_STATES_INIT_MASTER_OFF 3 +#define HCI_LE_STATES_INIT_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_OFF] & HCI_SUPP_LE_STATES_INIT_MASTER_MASK) + +/* Connectable Advertising State and Initiating State combination supported. 0x0000000100000000 */ +#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK 0x01 +#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF 4 +#define HCI_LE_STATES_CONN_ADV_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK) + +/* High Duty Cycle Directed Advertising State and Initiating State combination supported. */ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK 0x02 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF 4 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK) + +/* Low Duty Cycle Directed Advertising State and Initiating State combination supported.*/ +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK 0x04 +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF 4 +#define HCI_LE_STATES_LO_DUTY_DIR_ADV_INIT_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF] & HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK) + +/* Connectable Advertising State and Master Role combination supported.*/ +#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK 0x08 +#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF 4 +#define HCI_LE_STATES_CONN_ADV_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK) + +/* High Duty Cycle Directed Advertising State and Master Role combination supported.*/ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK 0x10 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF 4 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK) + +/* Low Duty Cycle Directed Advertising State and Master Role combination supported.*/ +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK 0x20 +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF 4 +#define HCI_LE_STATES_LO_DUTY_DIR_ADV_MASTER_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF] & HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK) + +/* Connectable Advertising State and Slave Role combination supported. */ +#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK 0x40 +#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF 4 +#define HCI_LE_STATES_CONN_ADV_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK) + +/* High Duty Cycle Directed Advertising State and slave Role combination supported.*/ +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK 0x80 +#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF 4 +#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF] & HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK) + +/* Low Duty Cycle Directed Advertising State and slave Role combination supported.*/ +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK 0x01 +#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF 5 +#define HCI_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF] & HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK) + +/* Initiating State and Slave Role combination supported. + Master Role and Slave Role combination also supported. + */ +#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK 0x02 +#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF 5 +#define HCI_LE_STATES_INIT_MASTER_SLAVE_SUPPORTED(x) ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF] & HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK) + +#define HCI_BRCM_ENABLE_WBS_MODIFIED (0x0102 | HCI_GRP_VENDOR_SPECIFIC) + +/* ConnectionLess Broadcast Stream VSC */ +#define HCI_BRCM_SET_CLB_STREAM (0x0111 | HCI_GRP_VENDOR_SPECIFIC) +#define HCI_BRCM_RECEIVE_CLB_STREAM (0x0112 | HCI_GRP_VENDOR_SPECIFIC) +#define HCI_BRCM_WRITE_CLB_STREAM_DATA (0x0113 | HCI_GRP_VENDOR_SPECIFIC) +#define HCI_BRCM_CLB_STREAM_FLUSH (0x0114 | HCI_GRP_VENDOR_SPECIFIC) + /* ** Definitions for HCI Events */ @@ -411,6 +623,7 @@ #define HCI_NUM_COMPL_DATA_BLOCKS_EVT 0x48 #define HCI_SHORT_RANGE_MODE_COMPLETE_EVT 0x4C #define HCI_AMP_STATUS_CHANGE_EVT 0x4D +#define HCI_SET_TRIGGERED_CLOCK_CAPTURE_EVT 0x4E /* ULP HCI Event */ #define HCI_BLE_EVENT 0x03E @@ -420,16 +633,11 @@ #define HCI_BLE_LL_CONN_PARAM_UPD_EVT 0x03 #define HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT 0x04 #define HCI_BLE_LTK_REQ_EVT 0x05 +#define HCI_BLE_RC_PARAM_REQ_EVT 0x06 + +/* Definitions for LE Channel Map */ +#define HCI_BLE_CHNL_MAP_SIZE 5 -/* ConnectionLess Broadcast events */ -#define HCI_SYNC_TRAIN_COMP_EVT 0x4F -#define HCI_SYNC_TRAIN_RECEIVED_EVT 0x50 -#define HCI_CLB_RX_DATA_EVT 0x51 -#define HCI_CLB_RX_TIMEOUT_EVT 0x52 -#define HCI_TRUNCATED_PAGE_COMP_EVT 0x53 -#define HCI_SLAVE_PAGE_RESP_TIMEOUT_EVT 0x54 -#define HCI_CLB_CHANNEL_CHANGE_EVT 0x55 -#define HCI_INQUIRY_RESPONSE_NOTIF 0x56 #define HCI_EVENT_RSP_FIRST HCI_INQUIRY_COMP_EVT #define HCI_EVENT_RSP_LAST HCI_CLB_CHANNEL_CHANGE_EVT @@ -439,6 +647,9 @@ because conflict w/ TCI_EVT and per specification compliant */ +/* the event mask for BLE event mask */ +#define HCI_BLE_EVENT_MASK_DEF "\x00\x00\x00\x00\x00\x00\x00\x3f" + /* @@ -1583,6 +1794,10 @@ typedef struct #define HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF 0 #define HCI_SIMUL_DUMO_HOST_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF] & HCI_EXT_FEATURE_SIMUL_DUMO_HOST_MASK) +#define HCI_EXT_FEATURE_SC_HOST_MASK 0x08 +#define HCI_EXT_FEATURE_SC_HOST_OFF 0 +#define HCI_SC_HOST_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_SC_HOST_OFF] & HCI_EXT_FEATURE_SC_HOST_MASK) + /* ** LMP features encoding - page 2 */ @@ -1606,19 +1821,43 @@ typedef struct #define HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF 0 #define HCI_INQ_RESP_NOTIF_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF] & HCI_EXT_FEATURE_INQ_RESP_NOTIF_MASK) +#define HCI_EXT_FEATURE_SC_CTRLR_MASK 0x01 +#define HCI_EXT_FEATURE_SC_CTRLR_OFF 1 +#define HCI_SC_CTRLR_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_SC_CTRLR_OFF] & HCI_EXT_FEATURE_SC_CTRLR_MASK) + +#define HCI_EXT_FEATURE_PING_MASK 0x02 +#define HCI_EXT_FEATURE_PING_OFF 1 +#define HCI_PING_SUPPORTED(x) ((x)[HCI_EXT_FEATURE_PING_OFF] & HCI_EXT_FEATURE_PING_MASK) + /* ** LE features encoding - page 0 (the only page for now) */ +/* LE Encryption */ #define HCI_LE_FEATURE_LE_ENCRYPTION_MASK 0x01 #define HCI_LE_FEATURE_LE_ENCRYPTION_OFF 0 #define HCI_LE_ENCRYPTION_SUPPORTED(x) ((x)[HCI_LE_FEATURE_LE_ENCRYPTION_OFF] & HCI_LE_FEATURE_LE_ENCRYPTION_MASK) +/* Connection Parameters Request Procedure */ +#define HCI_LE_FEATURE_CONN_PARAM_REQ_MASK 0x02 +#define HCI_LE_FEATURE_CONN_PARAM_REQ_OFF 0 +#define HCI_LE_CONN_PARAM_REQ_SUPPORTED(x) ((x)[HCI_LE_FEATURE_CONN_PARAM_REQ_OFF] & HCI_LE_FEATURE_CONN_PARAM_REQ_MASK) + +/* Extended Reject Indication */ +#define HCI_LE_FEATURE_EXT_REJ_IND_MASK 0x04 +#define HCI_LE_FEATURE_EXT_REJ_IND_OFF 0 +#define HCI_LE_EXT_REJ_IND_SUPPORTED(x) ((x)[HCI_LE_FEATURE_EXT_REJ_IND_OFF] & HCI_LE_FEATURE_EXT_REJ_IND_MASK) + +/* Slave-initiated Features Exchange */ +#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK 0x08 +#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF 0 +#define HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(x) ((x)[HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF] & HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK) /* ** Local Supported Commands encoding */ #define HCI_NUM_SUPP_COMMANDS_BYTES 64 +/* Supported Commands Byte 0 */ #define HCI_SUPP_COMMANDS_INQUIRY_MASK 0x01 #define HCI_SUPP_COMMANDS_INQUIRY_OFF 0 #define HCI_INQUIRY_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_INQUIRY_OFF] & HCI_SUPP_COMMANDS_INQUIRY_MASK) @@ -2398,8 +2637,42 @@ typedef struct #define HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF 32 #define HCI_WRITE_SYNC_TRAIN_PARAM_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF] & HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM) +#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK 0x02 +#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF 32 +#define HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF] & HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK) + +#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK 0x04 +#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF 32 +#define HCI_READ_SECURE_CONNS_SUPPORT_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF] & HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK) + +#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK 0x08 +#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF 32 +#define HCI_WRITE_SECURE_CONNS_SUPPORT_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF] & HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK) + +#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK 0x10 +#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF 32 +#define HCI_READ_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF] & HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK) + +#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK 0x20 +#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF 32 +#define HCI_WRITE_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF] & HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK) + +#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK 0x40 +#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF 32 +#define HCI_READ_LOCAL_OOB_EXTENDED_DATA_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF] & HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK) + +#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK 0x80 +#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF 32 +#define HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF] & HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK) +/* supported LE remote control connection parameter request reply */ +#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK 0x10 +#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF 33 +#define HCI_LE_RC_CONN_PARAM_UPD_RPY_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF] & HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK) +#define HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK 0x20 +#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF 33 +#define HCI_LE_RC_CONN_PARAM_UPD_NEG_RPY_SUPPORTED(x) ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF] & HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK) /* Commands of HCI_GRP_VENDOR_SPECIFIC group for WIDCOMM SW LM Simulator diff --git a/stack/include/hcimsgs.h b/stack/include/hcimsgs.h index 318e74819..3201f75d5 100644 --- a/stack/include/hcimsgs.h +++ b/stack/include/hcimsgs.h @@ -1252,8 +1252,6 @@ HCI_API extern void btsnd_hcie_ext_inquiry_result(void *buffer, UINT8 num_resp, #define HCIC_PARAM_SIZE_BLE_WRITE_ADV_DATA 31 /* ULP HCI command */ -HCI_API extern BOOLEAN btsnd_hcic_ble_reset(void); - HCI_API extern BOOLEAN btsnd_hcic_ble_set_evt_mask (BT_EVENT_MASK event_mask); HCI_API extern BOOLEAN btsnd_hcic_ble_read_buffer_size (void); @@ -1331,6 +1329,20 @@ HCI_API extern BOOLEAN btsnd_hcic_ble_transmitter_test(UINT8 tx_freq, UINT8 test UINT8 payload); HCI_API extern BOOLEAN btsnd_hcic_ble_test_end(void); +#if (defined BLE_LLT_INCLUDED) && (BLE_LLT_INCLUDED == TRUE) + +#define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_REPLY 14 +HCI_API extern BOOLEAN btsnd_hcic_ble_rc_param_req_reply(UINT16 handle, + UINT16 conn_int_min, UINT16 conn_int_max, + UINT16 conn_latency, UINT16 conn_timeout, + UINT16 min_ce_len, UINT16 max_ce_len); + +#define HCIC_PARAM_SIZE_BLE_RC_PARAM_REQ_NEG_REPLY 3 +HCI_API extern BOOLEAN btsnd_hcic_ble_rc_param_req_neg_reply(UINT16 handle, UINT8 reason); + +#endif /* BLE_LLT_INCLUDED */ + + #endif /* BLE_INCLUDED */ #ifdef __cplusplus diff --git a/stack/include/l2c_api.h b/stack/include/l2c_api.h index 0da7f7969..54c7ddbcb 100644 --- a/stack/include/l2c_api.h +++ b/stack/include/l2c_api.h @@ -919,8 +919,9 @@ L2C_API extern BOOLEAN L2CA_UCDSetTxPriority ( BD_ADDR rem_bda, tL2CAP_CHNL_PRIO ** BD Address of remote ** TRUE if channel is connected, FALSE if disconnected ** Reason for connection failure +** transport : physical transport, BR/EDR or LE */ -typedef void (tL2CA_FIXED_CHNL_CB) (BD_ADDR, BOOLEAN, UINT16); +typedef void (tL2CA_FIXED_CHNL_CB) (BD_ADDR, BOOLEAN, UINT16, tBT_TRANSPORT); /* Signalling data received. Parameters are ** BD Address of remote @@ -1128,7 +1129,8 @@ L2C_API extern BOOLEAN L2CA_CancelBleConnectReq (BD_ADDR rem_bda); ** Return value: TRUE if update started ** *******************************************************************************/ -L2C_API extern BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bdRa, UINT16 min_int, UINT16 max_int, UINT16 latency, UINT16 timeout); +L2C_API extern BOOLEAN L2CA_UpdateBleConnParams (BD_ADDR rem_bdRa, UINT16 min_int, + UINT16 max_int, UINT16 latency, UINT16 timeout); /******************************************************************************* ** @@ -1146,18 +1148,6 @@ L2C_API extern BOOLEAN L2CA_EnableUpdateBleConnParams (BD_ADDR rem_bda, BOOLEAN /******************************************************************************* ** -** Function L2CA_HandleConnUpdateEvent -** -** Description This function enables the connection update request from remote -** after a successful connection update response is received. -** -** Returns void -** -*******************************************************************************/ -L2C_API void L2CA_HandleConnUpdateEvent (UINT16 handle, UINT8 status); - -/******************************************************************************* -** ** Function L2CA_GetBleConnRole ** ** Description This function returns the connection role. @@ -1173,10 +1163,13 @@ L2C_API extern UINT8 L2CA_GetBleConnRole (BD_ADDR bd_addr); ** ** Description This function returns the disconnect reason code. ** +** Parameters: BD Address of remote +** Physical transport for the L2CAP connection (BR/EDR or LE) +** ** Returns disconnect reason ** *******************************************************************************/ -L2C_API extern UINT16 L2CA_GetDisconnectReason (BD_ADDR remote_bda); +L2C_API extern UINT16 L2CA_GetDisconnectReason (BD_ADDR remote_bda, tBT_TRANSPORT transport); #endif /* (BLE_INCLUDED == TRUE) */ diff --git a/stack/include/smp_api.h b/stack/include/smp_api.h index 68c9ebff5..e47cce321 100644 --- a/stack/include/smp_api.h +++ b/stack/include/smp_api.h @@ -134,9 +134,9 @@ typedef struct typedef struct { - UINT8 reason; - UINT8 sec_level; - BOOLEAN is_pair_cancel; + tSMP_STATUS reason; + tSMP_SEC_LEVEL sec_level; + BOOLEAN is_pair_cancel; } tSMP_CMPL; typedef union diff --git a/stack/include/uipc_msg.h b/stack/include/uipc_msg.h index 6a9a4ae4e..53cdccfc8 100644 --- a/stack/include/uipc_msg.h +++ b/stack/include/uipc_msg.h @@ -105,231 +105,6 @@ typedef struct t_uipc_log_msg } tUIPC_LOG_MSG; #define UIPC_LOG_MSGLEN (IPC_LOG_MSG_LEN + 4) -/******************************** - - H5 Sync Message - -********************************/ - -/* op_code */ -#define SLIP_SYNC_TO_LITE_REQ 0 -#define SLIP_SYNC_TO_LITE_RESP 1 -#define SLIP_SYNC_TO_FULL_REQ 2 -#define SLIP_SYNC_TO_FULL_RESP 3 -#define SLIP_SYNC_NOTIFY 4 - -/* status */ -#define SLIP_SYNC_SUCCESS 0 -#define SLIP_SYNC_FAILURE 1 - -typedef struct -{ - UINT8 op_code; - UINT8 status; - UINT16 acl_pkt_size; - UINT8 state; - UINT8 lp_state; /* Low Power state */ - UINT8 next_seqno; /* next send seq */ - UINT8 ack; /* next ack seq, expected seq from peer */ - UINT8 sent_ack; /* last sent ack */ - UINT8 sliding_window_size;/* window size */ - BOOLEAN oof_flow_control; /* Out of Frame SW Flow Control */ - BOOLEAN data_integrity_type;/* Level of Data Integrity Check */ - UINT8 rx_state; /* rx state for incoming packet processing */ -} tSLIP_SYNC_INFO; - -/******************************** - - L2CAP Sync Message - -********************************/ - -/* op_code */ -#define L2C_SYNC_TO_LITE_REQ 0 -#define L2C_SYNC_TO_LITE_RESP 1 -#define L2C_REMOVE_TO_LITE_REQ 2 -#define L2C_REMOVE_TO_LITE_RESP 3 -#define L2C_FLUSH_TO_FULL_IND 4 - -/* status */ -#define L2C_SYNC_SUCCESS 0 -#define L2C_SYNC_FAILURE 1 - -typedef struct t_l2c_stream_info -{ - UINT16 local_cid; /* Local CID */ - UINT16 remote_cid; /* Remote CID */ - UINT16 out_mtu; /* Max MTU we will send */ - UINT16 handle; /* The handle used with LM */ - UINT16 link_xmit_quota; /* Num outstanding pkts allowed */ - BOOLEAN is_flushable; /* TRUE if flushable channel */ -} tL2C_STREAM_INFO; - -typedef struct t_l2c_sync_to_lite_req -{ - UINT8 op_code; /* L2C_SYNC_TO_LITE_REQ */ - UINT16 light_xmit_quota; /* Total quota for light stack */ - UINT16 acl_data_size; /* Max ACL data size across HCI transport */ - UINT16 non_flushable_pbf; /* L2CAP_PKT_START_NON_FLUSHABLE if controller supports */ - /* Otherwise, L2CAP_PKT_START */ - UINT8 multi_av_data_cong_start; /* Multi-AV queue size to start congestion */ - UINT8 multi_av_data_cong_end; /* Multi-AV queue size to end congestion */ - UINT8 multi_av_data_cong_discard; /* Multi-AV queue size to discard */ - UINT8 num_stream; - tL2C_STREAM_INFO stream[BTM_SYNC_INFO_NUM_STR]; -} tL2C_SYNC_TO_LITE_REQ; - -typedef struct t_l2c_sync_to_lite_resp_stream -{ - UINT16 lcid; - UINT8 status; -} tL2C_SYNC_TO_LITE_RESP_STREAM; - -typedef struct t_l2c_sync_to_lite_resp -{ - UINT8 op_code; /* L2C_SYNC_TO_LITE_RESP */ - UINT16 light_xmit_unacked; /* unacked packet more than quota in light stack */ - UINT8 num_stream; - tL2C_SYNC_TO_LITE_RESP_STREAM stream[BTM_SYNC_INFO_NUM_STR]; -} tL2C_SYNC_TO_LITE_RESP; - -typedef struct t_l2c_remove_to_lite_req -{ - UINT8 op_code; /* L2C_REMOVE_TO_LITE_REQ */ - UINT16 light_xmit_quota; /* Total quota for light stack */ - UINT8 num_stream; - UINT16 lcid[BTM_SYNC_INFO_NUM_STR]; -} tL2C_REMOVE_TO_LITE_REQ; - -typedef tL2C_SYNC_TO_LITE_RESP tL2C_REMOVE_TO_LITE_RESP; -typedef tL2C_REMOVE_TO_LITE_REQ tL2C_FLUSH_TO_FULL_IND; - -typedef union t_l2c_sync_msg -{ - UINT8 op_code; - tL2C_SYNC_TO_LITE_REQ sync_req; - tL2C_SYNC_TO_LITE_RESP sync_resp; - tL2C_REMOVE_TO_LITE_REQ remove_req; - tL2C_REMOVE_TO_LITE_RESP remove_resp; - tL2C_FLUSH_TO_FULL_IND flush_ind; -} tL2C_SYNC_MSG; - -/******************************** - - AVDTP Sync Message - -********************************/ - -/* op_code */ -#define AVDT_SYNC_TO_LITE_REQ 0 -#define AVDT_SYNC_TO_LITE_RESP 1 -#define AVDT_RESYNC_TO_LITE_REQ 2 -#define AVDT_RESYNC_TO_LITE_RESP 3 -#define AVDT_SYNC_TO_FULL_REQ 4 -#define AVDT_SYNC_TO_FULL_RESP 5 -#define AVDT_REMOVE_TO_LITE_REQ 6 -#define AVDT_REMOVE_TO_LITE_RESP 7 -#define AVDT_SYNC_TO_BTC_LITE_REQ 8 -#define AVDT_SYNC_TO_BTC_LITE_RESP 9 - -/* status */ -#define AVDT_SYNC_SUCCESS 0 -#define AVDT_SYNC_FAILURE 1 - -typedef struct -{ - UINT16 lcid; - UINT32 ssrc; -} tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM; - -typedef struct -{ - UINT8 opcode; /* AVDT_SYNC_TO_BTC_LITE_REQ */ - UINT8 num_stream; - tAVDT_SYNC_TO_BTC_LITE_REQ_STREAM stream[BTM_SYNC_INFO_NUM_STR]; -} tAVDT_SYNC_TO_BTC_LITE_REQ; - -typedef struct -{ - UINT8 opcode; /* AVDT_SYNC_TO_BTC_LITE_RESP */ - UINT8 status; -} tAVDT_SYNC_TO_BTC_LITE_RESP; - -typedef struct t_avdt_scb_sync_info -{ - UINT8 handle; /* SCB handle */ - BD_ADDR peer_addr; /* BD address of peer */ - UINT16 local_cid; /* Local CID */ - UINT16 peer_mtu; /* L2CAP mtu of the peer device */ - UINT8 mux_tsid_media; /* TSID for media transport session */ - UINT16 media_seq; /* media packet sequence number */ -} tAVDT_SCB_SYNC_INFO; - -typedef struct t_avdt_sync_info -{ - UINT8 op_code; - UINT8 status; - - tAVDT_SCB_SYNC_INFO scb_info[BTM_SYNC_INFO_NUM_STR]; - -} tAVDT_SYNC_INFO; - -typedef union t_avdt_sync_msg -{ - UINT8 op_code; - tAVDT_SYNC_INFO sync_info; - tAVDT_SYNC_TO_BTC_LITE_REQ btc_sync_req; - tAVDT_SYNC_TO_BTC_LITE_RESP btc_sync_resp; -} tAVDT_SYNC_MSG; - -/******************************** - - BTA AV Sync Message - -********************************/ - -/* op_code for MM light stack */ -#define BTA_AV_SYNC_TO_LITE_REQ 0 -#define BTA_AV_SYNC_TO_LITE_RESP 1 -#define BTA_AV_STR_START_TO_LITE_REQ 2 -#define BTA_AV_STR_START_TO_LITE_RESP 3 -#define BTA_AV_STR_STOP_TO_LITE_REQ 4 -#define BTA_AV_STR_STOP_TO_LITE_RESP 5 -#define BTA_AV_STR_CLEANUP_TO_LITE_REQ 6 -#define BTA_AV_STR_CLEANUP_TO_LITE_RESP 7 -#define BTA_AV_STR_SUSPEND_TO_LITE_REQ 8 -#define BTA_AV_STR_SUSPEND_TO_LITE_RESP 9 -#define BTA_AV_SYNC_ERROR_RESP 10 - -/* op_code for BTC light stack */ -#define A2DP_START_REQ 11 -#define A2DP_START_RESP 12 -#define A2DP_STOP_REQ 13 -#define A2DP_STOP_RESP 14 -#define A2DP_CLEANUP_REQ 15 -#define A2DP_CLEANUP_RESP 16 -#define A2DP_SUSPEND_REQ 17 -#define A2DP_SUSPEND_RESP 18 - -#define A2DP_JITTER_DONE_IND 41 /* For BTSNK */ - -#define AUDIO_CODEC_CONFIG_REQ 19 -#define AUDIO_CODEC_CONFIG_RESP 20 -#define AUDIO_CODEC_SET_BITRATE_REQ 21 -#define AUDIO_CODEC_FLUSH_REQ 22 -#define AUDIO_ROUTE_CONFIG_REQ 23 -#define AUDIO_ROUTE_CONFIG_RESP 24 -#define AUDIO_MIX_CONFIG_REQ 25 -#define AUDIO_MIX_CONFIG_RESP 26 -#define AUDIO_BURST_FRAMES_IND 27 -#define AUDIO_BURST_END_IND 28 -#define AUDIO_EQ_MODE_CONFIG_REQ 29 -#define AUDIO_SCALE_CONFIG_REQ 30 - -/* For TIVO, only applicable for I2S -> DAC */ -#define AUDIO_SUB_ROUTE_REQ 51 -#define AUDIO_SUB_ROUTE_RESP 52 - typedef struct { UINT8 opcode; /* A2DP_START_REQ */ @@ -789,96 +564,5 @@ typedef struct tMIX_SCALE_CONFIG mix_scale; } tAUDIO_SCALE_CONFIG_REQ; -typedef UINT8 tBTA_AV_DUAL_STACK_EVT; - -typedef struct -{ - UINT8 avdt_handle; /* AVDTP handle */ - UINT8 chnl; /* the channel: audio/video */ - UINT8 codec_type; /* codec type */ - BOOLEAN cong; /* TRUE if AVDTP congested */ - UINT8 hdi; /* the index to SCB[] */ - UINT8 hndl; /* the handle: ((hdi + 1)|chnl) */ - UINT8 l2c_bufs; /* the number of buffers queued to L2CAP */ - UINT16 l2c_cid; /* L2CAP channel ID */ - BD_ADDR peer_addr; /* peer BD address */ -}tBTA_AV_SYNC_INFO; - -typedef struct -{ - tBTA_AV_DUAL_STACK_EVT event; - tBTA_AV_SYNC_INFO sync_info; - UINT16 curr_mtu; /* common mtu shared by all active streams */ - UINT8 multi_av_supported; /* Whether multi-av is supported */ -}tBTA_AV_SYNC_INFO_REQ; /* SYNC_TO_LITE_REQ */ - -/* Dual stack stream events */ -typedef struct -{ - tBTA_AV_DUAL_STACK_EVT event; - UINT8 scb_idx; -}tBTA_AV_SCB_EVT; - -/* data type for the Audio Codec Information*/ -typedef struct -{ - UINT16 bit_rate; /* SBC encoder bit rate in kbps */ - UINT16 bit_rate_busy; /* SBC encoder bit rate in kbps */ - UINT16 bit_rate_swampd; /* SBC encoder bit rate in kbps */ - UINT8 busy_level; /* Busy level indicating the bit-rate to be used */ - UINT8 codec_info[AVDT_CODEC_SIZE]; - UINT8 codec_type; /* Codec type */ -} tBTA_AV_AUDIO_CODEC_SYNC_INFO; - -/* Dual stack stream events */ -typedef struct -{ - tBTA_AV_DUAL_STACK_EVT event; - UINT8 scb_idx; - UINT8 audio_open_cnt; - tBTA_AV_AUDIO_CODEC_SYNC_INFO p_codec_cfg; - UINT8 start_stop_flag; -}tBTA_AV_SCB_REQ; - -typedef struct -{ - tBTA_AV_DUAL_STACK_EVT event; - UINT8 scb_idx; - UINT8 audio_open_cnt; - UINT16 curr_mtu; /* common mtu shared by all active streams */ -}tBTA_AV_SCB_CLEANUP_REQ; - -/* Add request/response structures if needed ... -typedef struct -{ - event; - data; -}tBTA_AV_SYNC_*_REQ/RESP; -*/ - -typedef union -{ - /* MM light stack */ - tBTA_AV_DUAL_STACK_EVT event; - tBTA_AV_SYNC_INFO_REQ sync_info_req; - tBTA_AV_SCB_EVT scb_evt; - tBTA_AV_SCB_REQ scb_req; - tBTA_AV_SCB_CLEANUP_REQ scb_cleanup_req; - - /* BTC light stack */ - UINT8 opcode; - tA2DP_START_REQ btc_start_req; - tA2DP_STOP_REQ btc_stop_req; - tA2DP_CLEANUP_REQ btc_cleanup_req; - tA2DP_SUSPEND_REQ btc_suspend_req; - - tAUDIO_CODEC_CONFIG_REQ codec_config_req; - tAUDIO_CODEC_SET_BITRATE_REQ codec_bitrate_req; - tAUDIO_CODEC_FLUSH_REQ codec_flush_req; - tAUDIO_ROUTE_CONFIG_REQ route_config_req; - tAUDIO_MIX_CONFIG_REQ mix_config_req; - tAUDIO_EQ_MODE_CONFIG_REQ eq_mode_req; - tAUDIO_SCALE_CONFIG_REQ scale_config_req; -}tBTA_DUAL_STACK_MSG; - #endif /* UIPC_MSG_H */ + |