Merge pull request #13462 from paul-szczepanek-arm/cancel-connect-no-address

BLE remove address from API to cancel connect
pull/13501/head
Martin Kojtal 2020-08-25 08:46:14 +01:00 committed by GitHub
commit d6e93b182c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 10 additions and 68 deletions

View File

@ -1002,30 +1002,11 @@ public:
/** Cancel the connection attempt. This is not guaranteed to succeed. As a result
* onConnectionComplete in the event handler will be called. Check the success parameter
* to see if the connection was created.
* @depreacted This version has a defective API. You must provide the address of the peer.
* Please use the cancelConnect that takes peer address as parameters.
* This call will attempt to cancel the most recently requested connection.
*
* @return BLE_ERROR_NONE if the connection attempt has been requested to be cancelled.
* Returns BLE_ERROR_OPERATION_NOT_PERMITTED if no ongoing connection for last used address found.
*/
MBED_DEPRECATED_SINCE("mbed-os-6.3.0", "Defective API. Please use the cancelConnect that takes peer address as parameters.")
ble_error_t cancelConnect();
/** Cancel the connection attempt. This is not guaranteed to succeed. As a result
* onConnectionComplete in the event handler will be called. Check the success parameter
* to see if the connection was created.
*
* @param peerAddressType Address type you want to cancel connection process for.
* @param peerAddress Address you want to cancel connection process for.
*
* @return BLE_ERROR_NONE if the connection attempt has been requested to be cancelled.
* Returns BLE_ERROR_OPERATION_NOT_PERMITTED if no ongoing connection for address found.
*/
ble_error_t cancelConnect(
peer_address_type_t peerAddressType,
const address_t &peerAddress
);
#endif // BLE_ROLE_CENTRAL
#if BLE_FEATURE_CONNECTABLE

View File

@ -1298,22 +1298,13 @@ public:
/**
* Cancel the ongoing connection creation process.
*
* @param peer_address_type Type of address used by the advertiser. Not used
* if initiator_policy use the whitelist.
*
* @param Address used by the advertiser in its advertising packets. Not
* used if initiator_policy use the whitelist.
*
* @return BLE_ERROR_NONE if the request has been successfully sent or the
* appropriate error otherwise.
*
* @note: See Bluetooth 5 Vol 2 PartE: 7.8.13 LE create connection cancel
* command.
*/
virtual ble_error_t cancel_connection_creation(
peer_address_type_t peerAddressType,
const ble::address_t &peerAddress
) = 0;
virtual ble_error_t cancel_connection_creation() = 0;
/**
* Return the number of total whitelist entries that can be stored in the

View File

@ -97,10 +97,7 @@ public:
uint16_t maximum_connection_event_length
);
ble_error_t cancel_connection_creation(
peer_address_type_t peerAddressType,
const ble::address_t &peerAddress
);
ble_error_t cancel_connection_creation();
uint8_t read_white_list_capacity();

View File

@ -322,25 +322,23 @@ ble_error_t PalGap::create_connection(
}
ble_error_t PalGap::cancel_connection_creation(
peer_address_type_t peerAddressType,
const ble::address_t &peerAddress
)
ble_error_t PalGap::cancel_connection_creation()
{
ble_error_t error = BLE_ERROR_OPERATION_NOT_PERMITTED;
for (uint8_t connection_id = 0; connection_id < DM_CONN_MAX; connection_id++) {
if (dmConnCb.ccb[connection_id].inUse &&
dmConnCb.ccb[connection_id].state == DM_CONN_SM_ST_CONNECTING &&
BdaCmp(dmConnCb.ccb[connection_id].peerAddr, peerAddress.data())) {
dmConnCb.ccb[connection_id].state == DM_CONN_SM_ST_CONNECTING) {
DmConnClose(
DM_CLIENT_ID_APP,
/* connection handle */ connection_id + 1 /* connection IDs start at 1 */,
/* reason - invalid (use success) */ 0x00
);
return BLE_ERROR_NONE;
}
error = BLE_ERROR_NONE;
}
return BLE_ERROR_OPERATION_NOT_PERMITTED;
return error;
}

View File

@ -209,11 +209,6 @@ public:
const ConnectionParameters &connectionParams
);
ble_error_t cancelConnect(
peer_address_type_t peerAddressType,
const address_t &peerAddress
);
ble_error_t cancelConnect();
#endif // BLE_ROLE_CENTRAL
@ -601,10 +596,6 @@ private:
BitArray<BLE_GAP_MAX_ADVERTISING_SETS> _set_is_connectable;
bool _user_manage_connection_parameter_requests : 1;
/* these need be removed when the deprecated cancelConnect() is removed */
peer_address_type_t _last_used_peer_address_type = peer_address_type_t::ANONYMOUS;
ble::address_t _last_used_peer_address;
};
} // namespace ble

View File

@ -507,9 +507,6 @@ ble_error_t Gap::connect(
return BLE_ERROR_INVALID_PARAM;
}
_last_used_peer_address_type = peerAddressType;
_last_used_peer_address = peerAddress;
// ensure scan is stopped.
_pal_gap.scan_enable(false, false);
@ -541,9 +538,6 @@ ble_error_t Gap::connect(
adjusted_address_type = peer_address_type_t::RANDOM;
}
_last_used_peer_address_type = adjusted_address_type;
_last_used_peer_address = peerAddress;
return _pal_gap.extended_create_connection(
connectionParams.getFilter(),
connectionParams.getOwnAddressType(),
@ -631,20 +625,10 @@ ble_error_t Gap::rejectConnectionParametersUpdate(
);
}
ble_error_t Gap::cancelConnect()
{
if (_last_used_peer_address_type != peer_address_type_t::ANONYMOUS) {
return cancelConnect(_last_used_peer_address_type, _last_used_peer_address);
}
return BLE_ERROR_OPERATION_NOT_PERMITTED;
}
ble_error_t Gap::cancelConnect(
peer_address_type_t peerAddressType,
const ble::address_t &peerAddress
)
{
return _pal_gap.cancel_connection_creation(peerAddressType, peerAddress);
return _pal_gap.cancel_connection_creation();
}
ble_error_t Gap::readPhy(ble::connection_handle_t connection)