return FALSE;
}
-/*
- * Temporary solutions for pair with random address:
- * can't set privacy when advertising, scaning or using static random address
- * We will do futher work here
- */
- if (p_cb->privacy_mode == BTM_PRIVACY_NONE
- && random_cb->own_addr_type == BLE_ADDR_RANDOM) {
- BTM_TRACE_ERROR("Have set random adress, can't set privacy ");
- if (random_cb && random_cb->set_local_privacy_cback){
- (*random_cb->set_local_privacy_cback)(BTM_SET_PRIVACY_FAIL);
- random_cb->set_local_privacy_cback = NULL;
- }
- return FALSE;
- }
if (!(p_cb->inq_var.state == BTM_BLE_STOP_SCAN || p_cb->inq_var.state == BTM_BLE_STOP_ADV || p_cb->inq_var.state == BTM_BLE_IDLE)) {
BTM_TRACE_ERROR("Advertising or scaning now, can't set privacy ");
if (random_cb && random_cb->set_local_privacy_cback){
uint8_t addr_resolution = 0;
#endif /* defined(GAP_INCLUDED) && GAP_INCLUDED == TRUE && GATTS_INCLUDED == TRUE */
if (!privacy_mode) { /* if privacy disabled, always use public address */
+ p_cb->addr_mgnt_cb.exist_addr_bit &= (~BTM_BLE_GAP_ADDR_BIT_RESOLVABLE);
+ memset(p_cb->addr_mgnt_cb.resolvale_addr, 0, BD_ADDR_LEN);
p_cb->addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
p_cb->privacy_mode = BTM_PRIVACY_NONE;
if (random_cb && random_cb->set_local_privacy_cback){
}
} else { /* privacy is turned on*/
/* always set host random address, used when privacy 1.1 or priavcy 1.2 is disabled */
- p_cb->addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
btm_gen_resolvable_private_addr((void *)btm_gen_resolve_paddr_low);
if (BTM_BleMaxMultiAdvInstanceCount() > 0) {
return BTM_ILLEGAL_VALUE;
}
-/*
- * Temporary solutions for pair with random address:
- * can't set advertising with BLE_ADDR_PUBLIC when having set random adress or in privacy mode
- * We will do futher work here
- */
- if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM && own_bda_type == BLE_ADDR_PUBLIC) {
- BTM_TRACE_ERROR ("own_addr_type is BLE_ADDR_RANDOM but use BLE_ADDR_PUBLIC\n");
- if(adv_cb) {
- (* adv_cb)(HCI_ERR_ESP_VENDOR_FAIL);
+ if(own_bda_type == BLE_ADDR_RANDOM) {
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RANDOM) == BTM_BLE_GAP_ADDR_BIT_RANDOM) {
+ //close privacy
+ #if BLE_PRIVACY_SPT == TRUE
+ if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) {
+ BTM_BleConfigPrivacy(FALSE, NULL);
+ }
+ #endif
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, BD_ADDR_LEN);
+ // set address to controller
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr);
+
+ } else if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) == BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) {
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr);
+ }else {
+ BTM_TRACE_ERROR ("No random address yet, please set random address and try\n");
+ if(adv_cb) {
+ (* adv_cb)(HCI_ERR_ESP_VENDOR_FAIL);
+ }
+ return BTM_ILLEGAL_VALUE;
}
- return BTM_ILLEGAL_VALUE;
+ } else if(own_bda_type == BLE_ADDR_PUBLIC_ID || own_bda_type == BLE_ADDR_RANDOM_ID) {
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) == BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) {
+ own_bda_type = BLE_ADDR_RANDOM;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr);
+ } else {
+ #if BLE_PRIVACY_SPT == TRUE
+ if(btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) {
+ BTM_TRACE_ERROR ("Error state\n");
+ if(adv_cb) {
+ (* adv_cb)(HCI_ERR_ESP_VENDOR_FAIL);
+ }
+ return BTM_ILLEGAL_VALUE;
+ }
+ #endif
+ if(own_bda_type == BLE_ADDR_PUBLIC_ID) {
+ own_bda_type = BLE_ADDR_PUBLIC;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
+ } else { //own_bda_type == BLE_ADDR_RANDOM_ID
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RANDOM) == BTM_BLE_GAP_ADDR_BIT_RANDOM) {
+ own_bda_type = BLE_ADDR_RANDOM;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr);
+ } else {
+ BTM_TRACE_ERROR ("No RPA and no random address yet, please set RPA or random address and try\n");
+ if(adv_cb) {
+ (* adv_cb)(HCI_ERR_ESP_VENDOR_FAIL);
+ }
+ return BTM_ILLEGAL_VALUE;
+ }
+ }
+ }
+ } else {
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
}
if (!BTM_BLE_ISVALID_PARAM(adv_int_min, BTM_BLE_ADV_INT_MIN, BTM_BLE_ADV_INT_MAX) ||
return;
}
-/*
- * Temporary solutions for pair with random address:
- * can't set scan with BLE_ADDR_PUBLIC when having set random adress or in privacy mode
- * We will do futher work here
- */
- if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM && addr_type_own == BLE_ADDR_PUBLIC) {
- BTM_TRACE_ERROR ("own_addr_type is BLE_ADDR_RANDOM but use BLE_ADDR_PUBLIC\n");
- if (scan_setup_status_cback != NULL) {
- scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE);
+ if(addr_type_own == BLE_ADDR_RANDOM) {
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RANDOM) == BTM_BLE_GAP_ADDR_BIT_RANDOM) {
+ //close privacy
+ #if BLE_PRIVACY_SPT == TRUE
+ if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) {
+ BTM_BleConfigPrivacy(FALSE, NULL);
+ }
+ #endif
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, BD_ADDR_LEN);
+ // set address to controller
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr);
+
+ } else if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) == BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) {
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr);
+ }else {
+ if (scan_setup_status_cback != NULL) {
+ scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE);
+ }
+ BTM_TRACE_ERROR ("No random address yet, please set random address and try\n");
+ return;
}
- return;
+ } else if(addr_type_own == BLE_ADDR_PUBLIC_ID || addr_type_own == BLE_ADDR_RANDOM_ID) {
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) == BTM_BLE_GAP_ADDR_BIT_RESOLVABLE) {
+ addr_type_own = BLE_ADDR_RANDOM;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.resolvale_addr);
+ } else {
+ #if BLE_PRIVACY_SPT == TRUE
+ if(btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) {
+ BTM_TRACE_ERROR ("Error state\n");
+ if (scan_setup_status_cback != NULL) {
+ scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE);
+ }
+ return;
+ }
+ #endif
+ if(addr_type_own == BLE_ADDR_PUBLIC_ID) {
+ addr_type_own = BLE_ADDR_PUBLIC;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
+ } else {
+ //own_bda_type == BLE_ADDR_RANDOM_ID
+ if((btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit & BTM_BLE_GAP_ADDR_BIT_RANDOM) == BTM_BLE_GAP_ADDR_BIT_RANDOM) {
+ addr_type_own = BLE_ADDR_RANDOM;
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, BD_ADDR_LEN);
+ btsnd_hcic_ble_set_random_addr(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr);
+ } else {
+ BTM_TRACE_ERROR ("No RPA and no random address yet, please set RPA or random address and try\n");
+ if (scan_setup_status_cback != NULL) {
+ scan_setup_status_cback(client_if, BTM_ILLEGAL_VALUE);
+ }
+ return;
+ }
+ }
+ }
+ } else {
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
}
/* If not supporting extended scan support, use the older range for checking */
if (rand_addr == NULL)
return BTM_SET_STATIC_RAND_ADDR_FAIL;
-/*
- * Temporary solutions for pair with random address:
- * can't set rand address when advertising, scaning or in privacy mode
- * We will do futher work here
- */
-#if BLE_PRIVACY_SPT == TRUE
- if (btm_cb.ble_ctr_cb.privacy_mode != BTM_PRIVACY_NONE) {
- BTM_TRACE_ERROR("privacy_mode is not BTM_PRIVACY_NONE ");
- return BTM_SET_STATIC_RAND_ADDR_FAIL;
- }
-
-#endif
if (!(btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_STOP_SCAN || btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_STOP_ADV || btm_cb.ble_ctr_cb.inq_var.state == BTM_BLE_IDLE)) {
BTM_TRACE_ERROR("Advertising or scaning now, can't set randaddress %d", btm_cb.ble_ctr_cb.inq_var.state);
return BTM_SET_STATIC_RAND_ADDR_FAIL;
}
memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.private_addr, rand_addr, BD_ADDR_LEN);
- btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_RANDOM;
+ memcpy(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, rand_addr, BD_ADDR_LEN);
//send the set random address to the controller
if(btsnd_hcic_ble_set_random_addr(rand_addr)) {
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit |= BTM_BLE_GAP_ADDR_BIT_RANDOM;
return BTM_SUCCESS;
} else {
return BTM_SET_STATIC_RAND_ADDR_FAIL;
}
}
+/*******************************************************************************
+**
+** Function BTM_BleClearRandAddress
+**
+** Description This function is called to clear the LE random address.
+**
+** Parameters: None.
+**
+** Returns void
+**
+*******************************************************************************/
+void BTM_BleClearRandAddress(void)
+{
+ tBTM_BLE_CB *p_cb = &btm_cb.ble_ctr_cb;
+ if (btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type == BLE_ADDR_RANDOM && (!(p_cb->inq_var.state == BTM_BLE_STOP_SCAN || p_cb->inq_var.state == BTM_BLE_STOP_ADV || p_cb->inq_var.state == BTM_BLE_IDLE))) {
+ BTM_TRACE_ERROR("Advertising or scaning now, can't restore public address ");
+ return;
+ }
+ memset(btm_cb.ble_ctr_cb.addr_mgnt_cb.static_rand_addr, 0, BD_ADDR_LEN);
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.exist_addr_bit &= (~BTM_BLE_GAP_ADDR_BIT_RANDOM);
+ btm_cb.ble_ctr_cb.addr_mgnt_cb.own_addr_type = BLE_ADDR_PUBLIC;
+}
/*******************************************************************************
**
** Function BTM_BleGetCurrentAddress
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[2-5] bleadv -D -z start
- - P SSC[2-5] C +BLEADV:Start,OK
- - SSC SSC[2-5] gatts -S -z load -p 0xA2
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[2-5] bleadv -D -z start
- - P SSC[2-5] C +BLEADV:Start,OK
- - SSC SSC[2-5] gatts -S -z load -p 0xA2
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC1 gatts -S -z load -p 0xA2
- - R SSC1 C +GATTS:StartService,OK,A002
- - LOOP 4 2 "[2,3,4,5]" "[2,3,4,5]"
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC1 gatts -S -z load -p 0xA2
- - R SSC1 C +GATTS:StartService,OK,A002
- - SSC SSC[2-5] gattc -F -r <dut1_bt_mac>
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[1-3] gatts -S -z load -p 0xA2
- - R SSC[1-3] C +GATTS:StartService,OK,A002
- - LOOP 2 2 "[4,5]" "[4,5]"
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[1-3] gatts -S -z load -p 0xA2
- - R SSC[1-3] C +GATTS:StartService,OK,A002
- - LOOP 2 2 "[4,5]" "[4,5]"
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
- - SSC SSC[1-2] blesmp -B -z clear
- - - R SSC[1-2] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
- - SSC SSC[1-2] blesmp -B -z clear
- - - R SSC[1-2] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC1 C +BLE:'
- - SSC SSC1 bleconn -D -z all
- - 'R SSC1 C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
force restore cmd set:
- ''
- - SSC SSC1 reboot
- []
- - SSC SSC1 bleconn -D -z all
- - 'R SSC1 C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC1 gatts -S -z delete
- - 'R SSC1 C +GATTS:'
- - SSC SSC1 gattc -U -z all
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC2 C +GATTS:StartService,OK,A000
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC2 C +GATTS:StartService,OK,A002
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 bleadv -L -c 0 -t 3
- - R SSC2 C +BLEADV:SetAdv,OK
- - SSC SSC2 bleadv -D -z start
- - 'R SSC[1-5] C +BLE:'
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
+ - - SSC SSC[1-5] blesmp -B -z clear
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- ["P SSC[2-5] C +GATTS:StartService,OK,A000"]
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC1 gattc -F -r <dut2_bt_mac>
- - R SSC1 C +GATTC:OK
- - SSC SSC1 ram
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
- - SSC SSC[1-2] blesmp -B -z clear
- - - R SSC[1-2] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 gatts -S -z load -p 0xA2
- - R SSC2 C +GATTS:StartService,OK,A002
- - SSC SSC2 bleadv -L -c 0 -t 3
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
- - SSC SSC[1-2] blesmp -B -z clear
- - - R SSC[1-2] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC2 gatts -S -z load -p 0xA2
- - R SSC2 C +GATTS:StartService,OK,A002
- - SSC SSC2 bleadv -L -c 0 -t 3
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
- - SSC SSC[1-5] blesmp -B -z clear
- - - R SSC[1-5] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[2-5] gatts -S -z load -p 0xA0
- - R SSC[2-5] C +GATTS:StartService,OK,A000
- - SSC SSC[2-5] bleadv -L -c 0 -t 3
- - SSC SSC[1-5] bleconn -D -z all
- - 'R SSC[1-5] C +BLECONN:'
- - SSC SSC[1-5] blesmp -B -z clear
- - - R SSC[1-5] C +BLESMP:ClearBond,Succes
+ - - R SSC[1-5] C +BLESMP:ClearBond,Success
- - SSC SSC[1-5] gatts -S -z delete
- - 'R SSC[1-5] C +GATTS:'
- - SSC SSC[1-5] gattc -U -z all
- - R SSC[1-5] C +GATTC:OK
- - SSC SSC[1-5] bleadv -D -z stop
- - R SSC[1-5] C +BLEADV:OK
+ - - SSC SSC[1-5] ble -S -z public
+ - - R SSC[1-5] C +BLE:OK
- - SSC SSC[2-5] gatts -S -z load -p 0xA0
- - R SSC[2-5] C +GATTS:StartService,OK,A000
- - SSC SSC[2-5] bleadv -L -c 0 -t 3
- - 'R SSC[1-2] C +BLE:'
- - SSC SSC[1-2] bleconn -D -z all
- - 'R SSC[1-2] C +BLECONN:'
+ - - SSC SSC[1-2] blesmp -B -z clear
+ - - R SSC[1-2] C +BLESMP:ClearBond,Success
- - SSC SSC[1-2] gatts -S -z delete
- - 'R SSC[1-2] C +GATTS:'
- - SSC SSC[1-2] gattc -U -z all
- - R SSC[1-2] C +GATTC:OK
- - SSC SSC[1-2] bleadv -D -z stop
- - R SSC[1-2] C +BLEADV:OK
+ - - SSC SSC[1-2] ble -S -z public
+ - - R SSC[1-2] C +BLE:OK
- - SSC SSC1 ram
- - R SSC1 A <heap_size>:(\d+)
- tag: T3_1