Skip to content

Commit 7d4ea15

Browse files
authored
Merge branch 'Jason2866:release/v5.1' into release/v5.1
2 parents dc63490 + e41cf64 commit 7d4ea15

File tree

48 files changed

+414
-137
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+414
-137
lines changed

components/bt/controller/lib_esp32

components/bt/host/bluedroid/api/include/api/esp_gap_ble_api.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,10 @@ typedef uint8_t esp_ble_gap_adv_type_t;
880880
/// Extend advertising tx power, range: [-127, +126] dBm
881881
#define EXT_ADV_TX_PWR_NO_PREFERENCE (127) /*!< host has no preference for tx power */
882882

883+
884+
/// max number of advertising sets to enable or disable
885+
#define EXT_ADV_NUM_SETS_MAX (10) /*!< max evt instance num */
886+
883887
/**
884888
* @brief ext adv parameters
885889
*/
@@ -1290,72 +1294,86 @@ typedef union {
12901294
*/
12911295
struct ble_ext_adv_set_rand_addr_cmpl_evt_param {
12921296
esp_bt_status_t status; /*!< Indicate extend advertising random address set status */
1297+
uint8_t instance; /*!< extend advertising handle */
12931298
} ext_adv_set_rand_addr; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_SET_RAND_ADDR_COMPLETE_EVT */
12941299
/**
12951300
* @brief ESP_GAP_BLE_EXT_ADV_SET_PARAMS_COMPLETE_EVT
12961301
*/
12971302
struct ble_ext_adv_set_params_cmpl_evt_param {
12981303
esp_bt_status_t status; /*!< Indicate extend advertising parameters set status */
1304+
uint8_t instance; /*!< extend advertising handle */
12991305
} ext_adv_set_params; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_SET_PARAMS_COMPLETE_EVT */
13001306
/**
13011307
* @brief ESP_GAP_BLE_EXT_ADV_DATA_SET_COMPLETE_EVT
13021308
*/
13031309
struct ble_ext_adv_data_set_cmpl_evt_param {
13041310
esp_bt_status_t status; /*!< Indicate extend advertising data set status */
1311+
uint8_t instance; /*!< extend advertising handle */
13051312
} ext_adv_data_set; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_DATA_SET_COMPLETE_EVT */
13061313
/**
13071314
* @brief ESP_GAP_BLE_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT
13081315
*/
13091316
struct ble_ext_adv_scan_rsp_set_cmpl_evt_param {
13101317
esp_bt_status_t status; /*!< Indicate extend advertising scan response data set status */
1318+
uint8_t instance; /*!< extend advertising handle */
13111319
} scan_rsp_set; /*!< Event parameter of ESP_GAP_BLE_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT */
13121320
/**
13131321
* @brief ESP_GAP_BLE_EXT_ADV_START_COMPLETE_EVT
13141322
*/
13151323
struct ble_ext_adv_start_cmpl_evt_param {
13161324
esp_bt_status_t status; /*!< Indicate advertising start operation success status */
1325+
uint8_t instance_num; /*!< extend advertising handle numble*/
1326+
uint8_t instance[EXT_ADV_NUM_SETS_MAX]; /*!< extend advertising handle list*/
13171327
} ext_adv_start; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_START_COMPLETE_EVT */
13181328
/**
13191329
* @brief ESP_GAP_BLE_EXT_ADV_STOP_COMPLETE_EVT
13201330
*/
13211331
struct ble_ext_adv_stop_cmpl_evt_param {
13221332
esp_bt_status_t status; /*!< Indicate advertising stop operation success status */
1333+
uint8_t instance_num; /*!< extend advertising handle numble*/
1334+
uint8_t instance[EXT_ADV_NUM_SETS_MAX]; /*!< extend advertising handle list*/
13231335
} ext_adv_stop; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_STOP_COMPLETE_EVT */
13241336
/**
13251337
* @brief ESP_GAP_BLE_EXT_ADV_SET_REMOVE_COMPLETE_EVT
13261338
*/
13271339
struct ble_ext_adv_set_remove_cmpl_evt_param {
13281340
esp_bt_status_t status; /*!< Indicate advertising stop operation success status */
1341+
uint8_t instance; /*!< extend advertising handle */
13291342
} ext_adv_remove; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_SET_REMOVE_COMPLETE_EVT */
13301343
/**
13311344
* @brief ESP_GAP_BLE_EXT_ADV_SET_CLEAR_COMPLETE_EVT
13321345
*/
13331346
struct ble_ext_adv_set_clear_cmpl_evt_param {
13341347
esp_bt_status_t status; /*!< Indicate advertising stop operation success status */
1348+
uint8_t instance; /*!< extend advertising handle */
13351349
} ext_adv_clear; /*!< Event parameter of ESP_GAP_BLE_EXT_ADV_SET_CLEAR_COMPLETE_EVT */
13361350
/**
13371351
* @brief ESP_GAP_BLE_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT
13381352
*/
13391353
struct ble_periodic_adv_set_params_cmpl_param {
13401354
esp_bt_status_t status; /*!< Indicate periodic advertisingparameters set status */
1355+
uint8_t instance; /*!< extend advertising handle */
13411356
} peroid_adv_set_params; /*!< Event parameter of ESP_GAP_BLE_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT */
13421357
/**
13431358
* @brief ESP_GAP_BLE_PERIODIC_ADV_DATA_SET_COMPLETE_EVT
13441359
*/
13451360
struct ble_periodic_adv_data_set_cmpl_param {
13461361
esp_bt_status_t status; /*!< Indicate periodic advertising data set status */
1362+
uint8_t instance; /*!< extend advertising handle */
13471363
} period_adv_data_set; /*!< Event parameter of ESP_GAP_BLE_PERIODIC_ADV_DATA_SET_COMPLETE_EVT */
13481364
/**
13491365
* @brief ESP_GAP_BLE_PERIODIC_ADV_START_COMPLETE_EVT
13501366
*/
13511367
struct ble_periodic_adv_start_cmpl_param {
13521368
esp_bt_status_t status; /*!< Indicate periodic advertising start status */
1369+
uint8_t instance; /*!< extend advertising handle */
13531370
} period_adv_start; /*!< Event parameter of ESP_GAP_BLE_PERIODIC_ADV_START_COMPLETE_EVT */
13541371
/**
13551372
* @brief ESP_GAP_BLE_PERIODIC_ADV_STOP_COMPLETE_EVT
13561373
*/
13571374
struct ble_periodic_adv_stop_cmpl_param {
13581375
esp_bt_status_t status; /*!< Indicate periodic advertising stop status */
1376+
uint8_t instance; /*!< extend advertising handle */
13591377
} period_adv_stop; /*!< Event parameter of ESP_GAP_BLE_PERIODIC_ADV_STOP_COMPLETE_EVT */
13601378
/**
13611379
* @brief ESP_GAP_BLE_PERIODIC_ADV_CREATE_SYNC_COMPLETE_EVT

components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -982,34 +982,48 @@ static void btc_ble_5_gap_callback(tBTA_DM_BLE_5_GAP_EVENT event,
982982
case BTA_DM_BLE_5_GAP_EXT_ADV_SET_RAND_ADDR_COMPLETE_EVT:
983983
msg.act = ESP_GAP_BLE_EXT_ADV_SET_RAND_ADDR_COMPLETE_EVT;
984984
param.ext_adv_set_rand_addr.status = btc_btm_status_to_esp_status(params->set_ext_rand_addr.status);
985+
param.ext_adv_set_rand_addr.instance = params->set_ext_rand_addr.instance;
985986
break;
986987
case BTA_DM_BLE_5_GAP_EXT_ADV_SET_PARAMS_COMPLETE_EVT: {
987988
msg.act = ESP_GAP_BLE_EXT_ADV_SET_PARAMS_COMPLETE_EVT;
988-
param.ext_adv_set_rand_addr.status = btc_btm_status_to_esp_status(params->set_params.status);
989+
param.ext_adv_set_params.status = btc_btm_status_to_esp_status(params->set_params.status);
990+
param.ext_adv_set_params.instance = params->set_params.instance;
989991
break;
990992
}
991993
case BTA_DM_BLE_5_GAP_EXT_ADV_DATA_SET_COMPLETE_EVT: {
992994
msg.act = ESP_GAP_BLE_EXT_ADV_DATA_SET_COMPLETE_EVT;
993995
param.ext_adv_data_set.status = btc_btm_status_to_esp_status(params->adv_data_set.status);
996+
param.ext_adv_data_set.instance = params->adv_data_set.instance;
994997
break;
995998
}
996999
case BTA_DM_BLE_5_GAP_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT: {
9971000
msg.act = ESP_GAP_BLE_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT;
9981001
param.scan_rsp_set.status = btc_btm_status_to_esp_status(params->scan_rsp_data_set.status);
1002+
param.scan_rsp_set.instance = params->scan_rsp_data_set.instance;
9991003
break;
10001004
}
10011005
case BTA_DM_BLE_5_GAP_EXT_ADV_START_COMPLETE_EVT: {
10021006
msg.act = ESP_GAP_BLE_EXT_ADV_START_COMPLETE_EVT;
10031007
param.ext_adv_start.status = btc_btm_status_to_esp_status(params->adv_start.status);
1008+
for (UINT8 i = 0; i < params->adv_start.instance_num; i++) {
1009+
param.ext_adv_start.instance[i] = params->adv_start.instance[i];
1010+
}
1011+
1012+
param.ext_adv_start.instance_num = params->adv_start.instance_num;
10041013
break;
10051014
}
10061015
case BTA_DM_BLE_5_GAP_EXT_ADV_STOP_COMPLETE_EVT:
10071016
msg.act = ESP_GAP_BLE_EXT_ADV_STOP_COMPLETE_EVT;
10081017
param.ext_adv_stop.status = btc_btm_status_to_esp_status(params->adv_start.status);
1018+
for (UINT8 i = 0; i < params->adv_start.instance_num; i++) {
1019+
param.ext_adv_stop.instance[i] = params->adv_start.instance[i];
1020+
}
1021+
param.ext_adv_stop.instance_num = params->adv_start.instance_num;
10091022
break;
10101023
case BTA_DM_BLE_5_GAP_EXT_ADV_SET_REMOVE_COMPLETE_EVT:
10111024
msg.act = ESP_GAP_BLE_EXT_ADV_SET_REMOVE_COMPLETE_EVT;
10121025
param.ext_adv_remove.status = btc_btm_status_to_esp_status(params->adv_start.status);
1026+
param.ext_adv_remove.instance = params->adv_start.instance[0];
10131027
break;
10141028
case BTA_DM_BLE_5_GAP_EXT_ADV_SET_CLEAR_COMPLETE_EVT:
10151029
msg.act = ESP_GAP_BLE_EXT_ADV_SET_CLEAR_COMPLETE_EVT;
@@ -1018,21 +1032,25 @@ static void btc_ble_5_gap_callback(tBTA_DM_BLE_5_GAP_EVENT event,
10181032
case BTA_DM_BLE_5_GAP_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT: {
10191033
msg.act = ESP_GAP_BLE_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT;
10201034
param.peroid_adv_set_params.status = btc_btm_status_to_esp_status(params->per_adv_set_params.status);
1035+
param.peroid_adv_set_params.instance = params->per_adv_set_params.instance;
10211036
break;
10221037
}
10231038
case BTA_DM_BLE_5_GAP_PERIODIC_ADV_DATA_SET_COMPLETE_EVT: {
10241039
msg.act = ESP_GAP_BLE_PERIODIC_ADV_DATA_SET_COMPLETE_EVT;
10251040
param.period_adv_data_set.status = btc_btm_status_to_esp_status(params->per_adv_data_set.status);
1041+
param.period_adv_data_set.instance = params->per_adv_data_set.instance;
10261042
break;
10271043
}
10281044
case BTA_DM_BLE_5_GAP_PERIODIC_ADV_START_COMPLETE_EVT: {
10291045
msg.act = ESP_GAP_BLE_PERIODIC_ADV_START_COMPLETE_EVT;
10301046
param.period_adv_start.status = btc_btm_status_to_esp_status(params->per_adv_start.status);
1047+
param.period_adv_start.instance = params->per_adv_start.instance;
10311048
break;
10321049
}
10331050
case BTA_DM_BLE_5_GAP_PERIODIC_ADV_STOP_COMPLETE_EVT: {
10341051
msg.act = ESP_GAP_BLE_PERIODIC_ADV_STOP_COMPLETE_EVT;
10351052
param.period_adv_stop.status = btc_btm_status_to_esp_status(params->per_adv_stop.status);
1053+
param.period_adv_stop.instance = params->per_adv_stop.instance;
10361054
break;
10371055
}
10381056
case BTA_DM_BLE_5_GAP_PERIODIC_ADV_CREATE_SYNC_COMPLETE_EVT: {

components/bt/host/bluedroid/stack/btm/btm_ble_5_gap.c

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,8 @@ tBTM_STATUS BTM_BleSetExtendedAdvRandaddr(UINT8 instance, BD_ADDR rand_addr)
340340
}
341341

342342
end:
343-
cb_params.status = status;
344-
343+
cb_params.set_ext_rand_addr.status = status;
344+
cb_params.set_ext_rand_addr.instance = instance;
345345
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_EXT_ADV_SET_RAND_ADDR_COMPLETE_EVT, &cb_params);
346346

347347
return status;
@@ -420,7 +420,8 @@ tBTM_STATUS BTM_BleSetExtendedAdvParams(UINT8 instance, tBTM_BLE_GAP_EXT_ADV_PAR
420420
BTM_UpdateAddrInfor(BLE_ADDR_RANDOM, rand_addr);
421421
}
422422
}
423-
cb_params.status = status;
423+
cb_params.set_params.status = status;
424+
cb_params.set_params.instance = instance;
424425
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_EXT_ADV_SET_PARAMS_COMPLETE_EVT, &cb_params);
425426

426427
return status;
@@ -471,7 +472,14 @@ tBTM_STATUS BTM_BleConfigExtendedAdvDataRaw(BOOLEAN is_scan_rsp, UINT8 instance,
471472
} while (rem_len);
472473

473474
end:
474-
cb_params.status = status;
475+
if (is_scan_rsp) {
476+
cb_params.scan_rsp_data_set.status = status;
477+
cb_params.scan_rsp_data_set.instance = instance;
478+
} else {
479+
cb_params.adv_data_set.status = status;
480+
cb_params.adv_data_set.instance = instance;
481+
}
482+
475483
BTM_ExtBleCallbackTrigger(is_scan_rsp ? BTM_BLE_5_GAP_EXT_SCAN_RSP_DATA_SET_COMPLETE_EVT : BTM_BLE_5_GAP_EXT_ADV_DATA_SET_COMPLETE_EVT, &cb_params);
476484

477485
return status;
@@ -574,7 +582,12 @@ tBTM_STATUS BTM_BleStartExtAdv(BOOLEAN enable, UINT8 num, tBTM_BLE_EXT_ADV *ext_
574582
}
575583
}
576584

577-
cb_params.status = status;
585+
cb_params.adv_start.status = status;
586+
cb_params.adv_start.instance_num = num;
587+
for (uint8_t i = 0; i < num; i++) {
588+
cb_params.adv_start.instance[i] = ext_adv[i].instance;
589+
}
590+
578591
BTM_ExtBleCallbackTrigger(enable ? BTM_BLE_5_GAP_EXT_ADV_START_COMPLETE_EVT : BTM_BLE_5_GAP_EXT_ADV_STOP_COMPLETE_EVT, &cb_params);
579592

580593
return status;
@@ -629,7 +642,9 @@ tBTM_STATUS BTM_BleExtAdvSetRemove(UINT8 instance)
629642

630643
end:
631644

632-
cb_params.status = status;
645+
cb_params.adv_start.status = status;
646+
cb_params.adv_start.instance_num = 1;
647+
cb_params.adv_start.instance[0] = instance;
633648

634649
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_EXT_ADV_SET_REMOVE_COMPLETE_EVT, &cb_params);
635650

@@ -655,7 +670,7 @@ tBTM_STATUS BTM_BleExtAdvSetClear(void)
655670
}
656671
}
657672

658-
cb_params.status = status;
673+
cb_params.adv_start.status = status;
659674

660675
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_EXT_ADV_SET_CLEAR_COMPLETE_EVT, &cb_params);
661676

@@ -693,7 +708,8 @@ tBTM_STATUS BTM_BlePeriodicAdvSetParams(UINT8 instance, tBTM_BLE_Periodic_Adv_Pa
693708

694709
end:
695710

696-
cb_params.status = status;
711+
cb_params.per_adv_set_params.status = status;
712+
cb_params.per_adv_set_params.instance = instance;
697713

698714
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_PERIODIC_ADV_SET_PARAMS_COMPLETE_EVT, &cb_params);
699715

@@ -747,7 +763,9 @@ tBTM_STATUS BTM_BlePeriodicAdvCfgDataRaw(UINT8 instance, UINT16 len, UINT8 *data
747763
} while(rem_len);
748764

749765
end:
750-
cb_params.status = status;
766+
cb_params.per_adv_data_set.status = status;
767+
cb_params.per_adv_data_set.instance = instance;
768+
751769
BTM_ExtBleCallbackTrigger(BTM_BLE_5_GAP_PERIODIC_ADV_DATA_SET_COMPLETE_EVT, &cb_params);
752770

753771
return status;
@@ -771,8 +789,13 @@ tBTM_STATUS BTM_BlePeriodicAdvEnable(UINT8 instance, UINT8 enable)
771789
}
772790

773791
end:
774-
775-
cb_params.status = status;
792+
if (enable) {
793+
cb_params.per_adv_start.status = status;
794+
cb_params.per_adv_start.instance = instance;
795+
} else {
796+
cb_params.per_adv_stop.status = status;
797+
cb_params.per_adv_stop.instance = instance;
798+
}
776799

777800
BTM_ExtBleCallbackTrigger(enable ? BTM_BLE_5_GAP_PERIODIC_ADV_START_COMPLETE_EVT : BTM_BLE_5_GAP_PERIODIC_ADV_STOP_COMPLETE_EVT, &cb_params);
778801

components/bt/host/bluedroid/stack/btm/btm_ble_gap.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,12 @@ void BTM_BleUpdateAdvFilterPolicy(tBTM_BLE_AFP adv_policy)
388388
&p_cb->adv_addr_type);
389389
}
390390

391+
uint8_t null_addr[BD_ADDR_LEN] = {0};
392+
if ((p_cb->evt_type == 0x01 || p_cb->evt_type == 0x04) && memcmp(p_addr_ptr, null_addr, BD_ADDR_LEN) == 0) {
393+
/* directed advertising */
394+
return;
395+
}
396+
391397
btsnd_hcic_ble_write_adv_params ((UINT16)(p_cb->adv_interval_min ? p_cb->adv_interval_min :
392398
BTM_BLE_GAP_ADV_SLOW_INT),
393399
(UINT16)(p_cb->adv_interval_max ? p_cb->adv_interval_max :

components/bt/host/bluedroid/stack/include/stack/btm_ble_api.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,46 +1100,58 @@ typedef struct {
11001100

11011101
typedef struct {
11021102
UINT8 status;
1103+
UINT8 instance;
11031104
} tBTM_BLE_SET_PERF_PHY_CMPL;
11041105

11051106
typedef struct {
11061107
UINT8 status;
1108+
UINT8 instance;
11071109
} tBTM_BLE_EXT_ADV_SET_RAND_ADDR_CMPL;
11081110

11091111
typedef struct {
11101112
UINT8 status;
1113+
UINT8 instance;
11111114
} tBTM_BLE_EXT_ADV_SET_PARAMS_CMPL;
11121115

11131116
typedef struct {
11141117
UINT8 status;
1118+
UINT8 instance;
11151119
} tBTM_BLE_EXT_ADV_DATA_SET_CMPL;
11161120

11171121
typedef struct {
11181122
UINT8 status;
1123+
UINT8 instance;
11191124
} tBTM_BLE_EXT_ADV_SCAN_RSP_DATA_SET_CMPL;
11201125

11211126
typedef struct {
11221127
UINT8 status;
1128+
UINT8 instance_num;
1129+
UINT8 instance[10];
11231130
} tBTM_BLE_EXT_ADV_START_CMPL;
11241131

11251132
typedef struct {
11261133
UINT8 status;
1134+
UINT8 instance;
11271135
} tBTM_BLE_EXT_ADV_STOP_CMPL;
11281136

11291137
typedef struct {
11301138
UINT8 status;
1139+
UINT8 instance;
11311140
} tBTM_BLE_PERIOD_ADV_SET_PARAMS_CMPL;
11321141

11331142
typedef struct {
11341143
UINT8 status;
1144+
UINT8 instance;
11351145
} tBTM_BLE_PERIOD_ADV_DATA_SET_CMPL;
11361146

11371147
typedef struct {
11381148
UINT8 status;
1149+
UINT8 instance;
11391150
} tBTM_BLE_PERIOD_ADV_START_CMPL;
11401151

11411152
typedef struct {
11421153
UINT8 status;
1154+
UINT8 instance;
11431155
} tBTM_BLE_PERIOD_ADV_STOP_CMPL;
11441156

11451157
typedef struct {

0 commit comments

Comments
 (0)