diff --git a/bumble/device.py b/bumble/device.py index 6ff5a97..4b3fa43 100644 --- a/bumble/device.py +++ b/bumble/device.py @@ -1211,9 +1211,7 @@ class Device(CompositeEventEmitter): if type(peer_address) is str: try: - peer_address = Address(peer_address) - if transport == BT_BR_EDR_TRANSPORT: - peer_address.address_type = Address.PUBLIC_DEVICE_ADDRESS + peer_address = Address.from_string_for_transport(peer_address, transport) except ValueError: # If the address is not parsable, assume it is a name instead logger.debug('looking for peer by name') diff --git a/bumble/hci.py b/bumble/hci.py index 387f3ff..1527c92 100644 --- a/bumble/hci.py +++ b/bumble/hci.py @@ -1666,6 +1666,14 @@ class Address: def address_type_name(address_type): return name_or_number(Address.ADDRESS_TYPE_NAMES, address_type) + @staticmethod + def from_string_for_transport(string, transport): + if transport == BT_BR_EDR_TRANSPORT: + address_type = Address.PUBLIC_DEVICE_ADDRESS + else: + address_type = Address.RANDOM_DEVICE_ADDRESS + return Address(string, address_type) + @staticmethod def parse_address(data, offset): # Fix the type to a default value. This is used for parsing type-less Classic addresses