Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BLE remove address from API to cancel connect #13462

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 0 additions & 19 deletions connectivity/FEATURE_BLE/include/ble/Gap.h
Original file line number Diff line number Diff line change
Expand Up @@ -1002,30 +1002,11 @@ class Gap {
/** 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
Expand Down
11 changes: 1 addition & 10 deletions connectivity/FEATURE_BLE/include/ble/internal/PalGap.h
Original file line number Diff line number Diff line change
Expand Up @@ -1298,22 +1298,13 @@ class PalGap {
/**
* 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,7 @@ class PalGap : public interface::PalGap {
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();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,11 +209,6 @@ class Gap :
const ConnectionParameters &connectionParams
);

ble_error_t cancelConnect(
peer_address_type_t peerAddressType,
const address_t &peerAddress
);

ble_error_t cancelConnect();
#endif // BLE_ROLE_CENTRAL

Expand Down Expand Up @@ -601,10 +596,6 @@ class Gap :
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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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(),
Expand Down Expand Up @@ -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
)
ble_error_t Gap::cancelConnect()
{
return _pal_gap.cancel_connection_creation(peerAddressType, peerAddress);
return _pal_gap.cancel_connection_creation();
}

ble_error_t Gap::readPhy(ble::connection_handle_t connection)
Expand Down