mirror of
https://github.com/espressif/esp-idf.git
synced 2026-10-02 11:10:54 +03:00
Merge branch 'bugfix/coex_schm' into 'master'
Bugfix/coex schm See merge request espressif/esp-idf!7176
This commit is contained in:
@@ -333,8 +333,8 @@ menu "Bluetooth"
|
||||
|
||||
config BTDM_CTRL_FULL_SCAN_SUPPORTED
|
||||
bool "BLE full scan feature supported"
|
||||
depends on BTDM_CTRL_MODE_BLE_ONLY
|
||||
default n
|
||||
depends on BTDM_CONTROLLER_MODE_BLE_ONLY || BTDM_CONTROLLER_MODE_BTDM
|
||||
default y
|
||||
help
|
||||
The full scan function is mainly used to provide BLE scan performance.
|
||||
This is required for scenes with high scan performance requirements, such as BLE Mesh scenes.
|
||||
|
||||
Submodule components/bt/controller/lib updated: 0a707c811e...e9b76dc715
@@ -41,6 +41,7 @@
|
||||
#if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == TRUE)
|
||||
#include "bta/bta_ar_api.h"
|
||||
#endif
|
||||
#include "bta/bta_api.h"
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants
|
||||
@@ -508,8 +509,21 @@ static void bta_av_proc_stream_evt(UINT8 handle, BD_ADDR bd_addr, UINT8 event, t
|
||||
/* look up application event */
|
||||
if ((p_data == NULL) || (p_data->hdr.err_code == 0)) {
|
||||
p_msg->hdr.event = bta_av_stream_evt_ok[event];
|
||||
if (p_msg->hdr.event == BTA_AV_STR_START_OK_EVT) {
|
||||
BTA_DmCoexEventTrigger(BTA_COEX_EVT_STREAMING_STARTED);
|
||||
} else if (p_msg->hdr.event == BTA_AV_STR_START_FAIL_EVT ||
|
||||
p_msg->hdr.event == BTA_AV_STR_SUSPEND_CFM_EVT ||
|
||||
p_msg->hdr.event == BTA_AV_STR_CLOSE_EVT) {
|
||||
BTA_DmCoexEventTrigger(BTA_COEX_EVT_STREAMING_STOPPED);
|
||||
}
|
||||
} else {
|
||||
p_msg->hdr.event = bta_av_stream_evt_fail[event];
|
||||
if (p_msg->hdr.event == BTA_AV_STR_START_FAIL_EVT ||
|
||||
p_msg->hdr.event == BTA_AV_STR_START_OK_EVT ||
|
||||
p_msg->hdr.event == BTA_AV_STR_SUSPEND_CFM_EVT ||
|
||||
p_msg->hdr.event == BTA_AV_STR_CLOSE_EVT) {
|
||||
BTA_DmCoexEventTrigger(BTA_COEX_EVT_STREAMING_STOPPED);
|
||||
}
|
||||
}
|
||||
|
||||
p_msg->initiator = FALSE;
|
||||
|
||||
@@ -3290,6 +3290,7 @@ static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data)
|
||||
p_msg->transport = p_data->conn.transport;
|
||||
p_msg->handle = p_data->conn.handle;
|
||||
#endif
|
||||
BTA_DmCoexEventTrigger(BTA_COEX_EVT_ACL_CONNECTED);
|
||||
break;
|
||||
case BTM_BL_DISCN_EVT:
|
||||
bdcpy(p_msg->bd_addr, p_data->discn.p_bda);
|
||||
@@ -3297,6 +3298,7 @@ static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data)
|
||||
p_msg->transport = p_data->discn.transport;
|
||||
p_msg->handle = p_data->discn.handle;
|
||||
#endif
|
||||
BTA_DmCoexEventTrigger(BTA_COEX_EVT_ACL_DISCONNECTED);
|
||||
break;
|
||||
case BTM_BL_UPDATE_EVT:
|
||||
p_msg->busy_level = p_data->update.busy_level;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "osi/allocator.h"
|
||||
#include <string.h>
|
||||
|
||||
#include "esp_coexist.h"
|
||||
|
||||
/*****************************************************************************
|
||||
** Constants and types
|
||||
@@ -407,6 +408,37 @@ BOOLEAN bta_dm_sm_execute(BT_HDR *p_msg)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void BTA_DmCoexEventTrigger(uint32_t event)
|
||||
{
|
||||
switch(event) {
|
||||
case BTA_COEX_EVT_SCAN_STARTED:
|
||||
case BTA_COEX_EVT_SCAN_STOPPED:
|
||||
case BTA_COEX_EVT_SNIFF_ENTER:
|
||||
case BTA_COEX_EVT_SNIFF_EXIT:
|
||||
case BTA_COEX_EVT_A2DP_PAUSED_ENTER:
|
||||
case BTA_COEX_EVT_A2DP_PAUSED_EXIT:
|
||||
break;
|
||||
case BTA_COEX_EVT_ACL_CONNECTED:
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_STREAMING);
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_PAUSED);
|
||||
break;
|
||||
case BTA_COEX_EVT_ACL_DISCONNECTED:
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_STREAMING);
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_PAUSED);
|
||||
break;
|
||||
case BTA_COEX_EVT_STREAMING_STARTED:
|
||||
esp_coex_status_bit_set(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_STREAMING);
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_PAUSED);
|
||||
break;
|
||||
case BTA_COEX_EVT_STREAMING_STOPPED:
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_STREAMING);
|
||||
esp_coex_status_bit_clear(ESP_COEX_ST_TYPE_BT, ESP_COEX_BT_ST_A2DP_PAUSED);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
**
|
||||
** Function bta_dm_sm_search_disable
|
||||
|
||||
@@ -2683,9 +2683,23 @@ extern void BTA_VendorInit (void);
|
||||
**
|
||||
*******************************************************************************/
|
||||
extern void BTA_VendorCleanup (void);
|
||||
|
||||
#endif
|
||||
|
||||
enum {
|
||||
BTA_COEX_EVT_SCAN_STARTED = 1,
|
||||
BTA_COEX_EVT_SCAN_STOPPED,
|
||||
BTA_COEX_EVT_ACL_CONNECTED,
|
||||
BTA_COEX_EVT_ACL_DISCONNECTED,
|
||||
BTA_COEX_EVT_STREAMING_STARTED,
|
||||
BTA_COEX_EVT_STREAMING_STOPPED,
|
||||
BTA_COEX_EVT_SNIFF_ENTER,
|
||||
BTA_COEX_EVT_SNIFF_EXIT,
|
||||
BTA_COEX_EVT_A2DP_PAUSED_ENTER,
|
||||
BTA_COEX_EVT_A2DP_PAUSED_EXIT,
|
||||
};
|
||||
|
||||
extern void BTA_DmCoexEventTrigger(uint32_t event);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "osi/fixed_queue.h"
|
||||
|
||||
#define HCI_HOST_TASK_PINNED_TO_CORE (TASK_PINNED_TO_CORE)
|
||||
#define HCI_HOST_TASK_STACK_SIZE (2048 + BT_TASK_EXTRA_STACK_SIZE)
|
||||
#define HCI_HOST_TASK_STACK_SIZE (4096 + BT_TASK_EXTRA_STACK_SIZE)
|
||||
#define HCI_HOST_TASK_PRIO (BT_TASK_MAX_PRIORITIES - 3)
|
||||
#define HCI_HOST_TASK_NAME "hciT"
|
||||
|
||||
@@ -299,7 +299,7 @@ static void event_command_ready(fixed_queue_t *queue)
|
||||
|
||||
wait_entry = fixed_queue_dequeue(queue, FIXED_QUEUE_MAX_TIMEOUT);
|
||||
|
||||
if(wait_entry->opcode == HCI_HOST_NUM_PACKETS_DONE
|
||||
if(wait_entry->opcode == HCI_HOST_NUM_PACKETS_DONE
|
||||
#if (BLE_ADV_REPORT_FLOW_CONTROL == TRUE)
|
||||
|| wait_entry->opcode == HCI_VENDOR_BLE_ADV_REPORT_FLOW_CONTROL
|
||||
#endif
|
||||
|
||||
@@ -105,7 +105,7 @@ typedef UINT8 tBTM_BLE_SFP;
|
||||
#endif
|
||||
|
||||
/* adv parameter boundary values */
|
||||
#define BTM_BLE_ADV_INT_MIN 0x0020
|
||||
#define BTM_BLE_ADV_INT_MIN 0x0010
|
||||
#define BTM_BLE_ADV_INT_MAX 0x4000
|
||||
|
||||
/* Full scan boundary values */
|
||||
@@ -2118,8 +2118,8 @@ tBTM_STATUS BTM_UpdateBleDuplicateExceptionalList(uint8_t subcode, uint32_t type
|
||||
**
|
||||
** Function BTM_GetCurrentConnParams
|
||||
**
|
||||
** Description This function is called to read the current connection parameters
|
||||
** of the device
|
||||
** Description This function is called to read the current connection parameters
|
||||
** of the device
|
||||
**
|
||||
** Returns TRUE or FALSE
|
||||
**
|
||||
|
||||
Reference in New Issue
Block a user