forked from auracaster/bumble_mirror
Fix typo when parsing device-config's gatt server
* 'permission' instead of 'permissions' * Also added a more user friendly error message when Attribute.string_to_permissions fails ``` TypeError: Attribute::permissions error: Expected a string containing any of the keys, seperated by commas: READABLE,WRITEABLE,READ_REQUIRES_ENCRYPTION,WRITE_REQUIRES_ENCRYPTION,READ_REQUIRES_AUTHENTICATION,WRITE_REQUIRES_AUTHENTICATION,READ_REQUIRES_AUTHORIZATION,WRITE_REQUIRES_AUTHORIZATION Got: 1 ``` ``` Exception: Error parsing Device Config's GATT Services. The key 'permission' must be renamed to 'permissions' ```
This commit is contained in:
@@ -739,11 +739,16 @@ class Attribute(EventEmitter):
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def string_to_permissions(permissions_str: str):
|
def string_to_permissions(permissions_str: str):
|
||||||
|
try:
|
||||||
return functools.reduce(
|
return functools.reduce(
|
||||||
lambda x, y: x | get_dict_key_by_value(Attribute.PERMISSION_NAMES, y),
|
lambda x, y: x | get_dict_key_by_value(Attribute.PERMISSION_NAMES, y),
|
||||||
permissions_str.split(","),
|
permissions_str.split(","),
|
||||||
0,
|
0,
|
||||||
)
|
)
|
||||||
|
except TypeError:
|
||||||
|
raise TypeError(
|
||||||
|
f"Attribute::permissions error:\nExpected a string containing any of the keys, seperated by commas: {','.join(Attribute.PERMISSION_NAMES.values())}\nGot: {permissions_str}"
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, attribute_type, permissions, value=b''):
|
def __init__(self, attribute_type, permissions, value=b''):
|
||||||
EventEmitter.__init__(self)
|
EventEmitter.__init__(self)
|
||||||
|
|||||||
@@ -1000,9 +1000,14 @@ class Device(CompositeEventEmitter):
|
|||||||
for characteristic in service.get("characteristics", []):
|
for characteristic in service.get("characteristics", []):
|
||||||
descriptors = []
|
descriptors = []
|
||||||
for descriptor in characteristic.get("descriptors", []):
|
for descriptor in characteristic.get("descriptors", []):
|
||||||
|
# Leave this check until 5/25/2023
|
||||||
|
if descriptor.get("permission", False):
|
||||||
|
raise Exception(
|
||||||
|
"Error parsing Device Config's GATT Services. The key 'permission' must be renamed to 'permissions'"
|
||||||
|
)
|
||||||
new_descriptor = Descriptor(
|
new_descriptor = Descriptor(
|
||||||
attribute_type=descriptor["descriptor_type"],
|
attribute_type=descriptor["descriptor_type"],
|
||||||
permissions=descriptor["permission"],
|
permissions=descriptor["permissions"],
|
||||||
)
|
)
|
||||||
descriptors.append(new_descriptor)
|
descriptors.append(new_descriptor)
|
||||||
new_characteristic = Characteristic(
|
new_characteristic = Characteristic(
|
||||||
|
|||||||
Reference in New Issue
Block a user