diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 70ade69..374676d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/pycqa/pylint - rev: v2.17.4 + rev: v3.3.1 hooks: - id: pylint name: pylint (library code) diff --git a/.pylintrc b/.pylintrc index f945e92..82b04fe 100644 --- a/.pylintrc +++ b/.pylintrc @@ -361,7 +361,8 @@ valid-metaclass-classmethod-first-arg=mcs [DESIGN] # Maximum number of arguments for function / method -max-args=5 +# Changed for this library, Adafruit_CircuitPython_BLE +max-args=9 # Maximum number of attributes for a class (see R0902). # max-attributes=7 diff --git a/adafruit_ble/characteristics/stream.py b/adafruit_ble/characteristics/stream.py index 5053971..1582e9d 100755 --- a/adafruit_ble/characteristics/stream.py +++ b/adafruit_ble/characteristics/stream.py @@ -66,7 +66,11 @@ def __init__( self._timeout = timeout self._buffer_size = buffer_size super().__init__( - uuid=uuid, properties=properties, read_perm=read_perm, write_perm=write_perm + uuid=uuid, + properties=properties, + read_perm=read_perm, + write_perm=write_perm, + max_length=buffer_size, ) def bind( @@ -104,6 +108,7 @@ def __init__( properties=properties, read_perm=Attribute.NO_ACCESS, write_perm=write_perm, + max_length=buffer_size, ) def bind( diff --git a/adafruit_ble/services/nordic.py b/adafruit_ble/services/nordic.py index d4db39b..f71e761 100755 --- a/adafruit_ble/services/nordic.py +++ b/adafruit_ble/services/nordic.py @@ -43,12 +43,14 @@ class UARTService(Service): _server_tx = StreamOut( uuid=VendorUUID("6E400003-B5A3-F393-E0A9-E50E24DCCA9E"), timeout=1.0, - buffer_size=64, + # 512 is the largest negotiated MTU-3 value for all CircuitPython ports. + buffer_size=512, ) _server_rx = StreamIn( uuid=VendorUUID("6E400002-B5A3-F393-E0A9-E50E24DCCA9E"), timeout=1.0, - buffer_size=64, + # 512 is the largest negotiated MTU-3 value for all CircuitPython ports. + buffer_size=512, ) def __init__(self, service: Optional[_bleio.Service] = None) -> None: diff --git a/adafruit_ble/services/standard/device_info.py b/adafruit_ble/services/standard/device_info.py index 0ebd8ac..ebed6a7 100644 --- a/adafruit_ble/services/standard/device_info.py +++ b/adafruit_ble/services/standard/device_info.py @@ -17,10 +17,11 @@ from .. import Service from ...uuid import StandardUUID +from ...characteristics import StructCharacteristic from ...characteristics.string import FixedStringCharacteristic try: - from typing import Optional, TYPE_CHECKING + from typing import Iterable, Optional, TYPE_CHECKING if TYPE_CHECKING: import _bleio @@ -42,6 +43,7 @@ class DeviceInfoService(Service): hardware_revision = FixedStringCharacteristic(uuid=StandardUUID(0x2A27)) software_revision = FixedStringCharacteristic(uuid=StandardUUID(0x2A28)) manufacturer = FixedStringCharacteristic(uuid=StandardUUID(0x2A29)) + pnp_id = StructCharacteristic(" None: if not service: @@ -68,6 +71,10 @@ def __init__( pass if firmware_revision is None: firmware_revision = getattr(os.uname(), "version", None) + if pnp_id is None: + # These values are not necessarily valid according to the spec, + # but they work on Android and iOS. + pnp_id = (0x00, 0x0000, 0x0000, 0x0000) super().__init__( manufacturer=manufacturer, software_revision=software_revision, @@ -75,5 +82,6 @@ def __init__( serial_number=serial_number, firmware_revision=firmware_revision, hardware_revision=hardware_revision, + pnp_id=pnp_id, service=service, )