From 450af18a140e413047ade312747db673f7314385 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Fri, 10 Dec 2021 15:16:58 -0500 Subject: [PATCH 1/3] Add type hints --- adafruit_ble_broadcastnet.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/adafruit_ble_broadcastnet.py b/adafruit_ble_broadcastnet.py index efc2fbd..9cec6c7 100644 --- a/adafruit_ble_broadcastnet.py +++ b/adafruit_ble_broadcastnet.py @@ -20,6 +20,12 @@ from adafruit_ble.advertising import Advertisement, LazyObjectField from adafruit_ble.advertising.standard import ManufacturerData, ManufacturerDataField +try: + from typing import Optional + from _bleio import ScanEntry +except ImportError: + pass + __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_BLE_BroadcastNet.git" @@ -27,7 +33,7 @@ _sequence_number = 0 # pylint: disable=invalid-name -def broadcast(measurement, *, broadcast_time=0.1, extended=False): +def broadcast(measurement: 'AdafruitSensorMeasurement', *, broadcast_time: float = 0.1, extended: bool = False) -> None: """Broadcasts the given measurement for the given broadcast time. If extended is False and the measurement would be too long, it will be split into multiple measurements for transmission. """ @@ -149,13 +155,13 @@ class AdafruitSensorMeasurement(Advertisement): """Battery voltage in millivolts. Saves two bytes over voltage and is more readable in bare packets.""" - def __init__(self, *, entry=None, sequence_number=0): + def __init__(self, *, entry: Optional[ScanEntry] = None, sequence_number: int = 0) -> None: super().__init__(entry=entry) if entry: return self.sequence_number = sequence_number - def __str__(self): + def __str__(self) -> str: parts = [] for attr in dir(self.__class__): attribute_instance = getattr(self.__class__, attr) @@ -165,7 +171,7 @@ def __str__(self): parts.append("{}={}".format(attr, str(value))) return "<{} {} >".format(self.__class__.__name__, " ".join(parts)) - def split(self, max_packet_size=31): + def split(self, max_packet_size: int = 31) -> 'AdafruitSensorMeasurement': """Split the measurement into multiple measurements with the given max_packet_size. Yields each submeasurement.""" current_size = 8 # baseline for mfg data and sequence number From 04efe5166ac6ee650df6e12e2e085b251cab10f9 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Fri, 10 Dec 2021 15:17:36 -0500 Subject: [PATCH 2/3] Explain in broadcast docstring that broadcast time is N*broadcast_time if split up --- adafruit_ble_broadcastnet.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/adafruit_ble_broadcastnet.py b/adafruit_ble_broadcastnet.py index 9cec6c7..68a232e 100644 --- a/adafruit_ble_broadcastnet.py +++ b/adafruit_ble_broadcastnet.py @@ -35,7 +35,8 @@ def broadcast(measurement: 'AdafruitSensorMeasurement', *, broadcast_time: float = 0.1, extended: bool = False) -> None: """Broadcasts the given measurement for the given broadcast time. If extended is False and the - measurement would be too long, it will be split into multiple measurements for transmission. + measurement would be too long, it will be split into multiple measurements for transmission, + each with the given broadcast time. """ global _sequence_number # pylint: disable=global-statement,invalid-name for submeasurement in measurement.split(252 if extended else 31): From fcb180f7aef56b4c8a88df5d547a1cfdbdd5f171 Mon Sep 17 00:00:00 2001 From: Alec Delaney Date: Fri, 10 Dec 2021 15:18:54 -0500 Subject: [PATCH 3/3] Reformatted per pre-commit --- adafruit_ble_broadcastnet.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/adafruit_ble_broadcastnet.py b/adafruit_ble_broadcastnet.py index 68a232e..2c7f7e9 100644 --- a/adafruit_ble_broadcastnet.py +++ b/adafruit_ble_broadcastnet.py @@ -33,7 +33,12 @@ _sequence_number = 0 # pylint: disable=invalid-name -def broadcast(measurement: 'AdafruitSensorMeasurement', *, broadcast_time: float = 0.1, extended: bool = False) -> None: +def broadcast( + measurement: "AdafruitSensorMeasurement", + *, + broadcast_time: float = 0.1, + extended: bool = False +) -> None: """Broadcasts the given measurement for the given broadcast time. If extended is False and the measurement would be too long, it will be split into multiple measurements for transmission, each with the given broadcast time. @@ -156,7 +161,9 @@ class AdafruitSensorMeasurement(Advertisement): """Battery voltage in millivolts. Saves two bytes over voltage and is more readable in bare packets.""" - def __init__(self, *, entry: Optional[ScanEntry] = None, sequence_number: int = 0) -> None: + def __init__( + self, *, entry: Optional[ScanEntry] = None, sequence_number: int = 0 + ) -> None: super().__init__(entry=entry) if entry: return @@ -172,7 +179,7 @@ def __str__(self) -> str: parts.append("{}={}".format(attr, str(value))) return "<{} {} >".format(self.__class__.__name__, " ".join(parts)) - def split(self, max_packet_size: int = 31) -> 'AdafruitSensorMeasurement': + def split(self, max_packet_size: int = 31) -> "AdafruitSensorMeasurement": """Split the measurement into multiple measurements with the given max_packet_size. Yields each submeasurement.""" current_size = 8 # baseline for mfg data and sequence number