summaryrefslogtreecommitdiffstats
path: root/stack/include
diff options
context:
space:
mode:
authorGanesh Ganapathi Batta <ganeshg@broadcom.com>2014-04-16 16:50:09 -0700
committerMatthew Xie <mattx@google.com>2014-05-06 01:14:25 -0700
commit7fa4fba6f59f97df00aff07dbe8fb21b114b3c2c (patch)
tree2f1168601e9861a9277b65464a20cd9294279d16 /stack/include
parent3b8b972a8151c081905f3c1273e5d6cdd3401354 (diff)
downloadandroid_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.h4
-rw-r--r--stack/include/btm_api.h350
-rw-r--r--stack/include/btm_ble_api.h115
-rw-r--r--stack/include/btu.h11
-rw-r--r--stack/include/gap_api.h11
-rw-r--r--stack/include/gatt_api.h125
-rw-r--r--stack/include/hcidefs.h305
-rw-r--r--stack/include/hcimsgs.h16
-rw-r--r--stack/include/l2c_api.h23
-rw-r--r--stack/include/smp_api.h6
-rw-r--r--stack/include/uipc_msg.h318
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 */
+