diff --git a/adafruit_ble/advertising/__init__.py b/adafruit_ble/advertising/__init__.py index 1c6920a..27cde40 100644 --- a/adafruit_ble/advertising/__init__.py +++ b/adafruit_ble/advertising/__init__.py @@ -143,6 +143,8 @@ def __init__(self, *, advertising_data_type): self._adt = advertising_data_type def __get__(self, obj, cls): + if obj is None: + return self if self._adt not in obj.data_dict: return None return str(obj.data_dict[self._adt], "utf-8") @@ -157,6 +159,8 @@ def __init__(self, struct_format, *, advertising_data_type): self._adt = advertising_data_type def __get__(self, obj, cls): + if obj is None: + return self if self._adt not in obj.data_dict: return None return struct.unpack(self._format, obj.data_dict[self._adt])[0] @@ -174,6 +178,8 @@ def __init__(self, cls, attribute_name, *, advertising_data_type, **kwargs): self._kwargs = kwargs def __get__(self, obj, cls): + if obj is None: + return self # Return None if our object is immutable and the data is not present. if not obj.mutable and self._adt not in obj.data_dict: return None diff --git a/adafruit_ble/advertising/standard.py b/adafruit_ble/advertising/standard.py index 62dbe5b..ec4aad0 100644 --- a/adafruit_ble/advertising/standard.py +++ b/adafruit_ble/advertising/standard.py @@ -224,6 +224,8 @@ def __init__(self, key, value_format, field_names=None): self.field_names = field_names def __get__(self, obj, cls): + if obj is None: + return self if self._key not in obj.manufacturer_data.data: return None packed = obj.manufacturer_data.data[self._key]