Merge pull request #101 from dhalbert/5.x-no-timeout

advertising timeout not available on 5.x
This commit is contained in:
Dan Halbert 2020-08-23 10:23:29 -04:00 committed by GitHub
commit 20f21e71b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 40 additions and 18 deletions

View file

@ -174,6 +174,8 @@ class BLERadio:
:param float interval: advertising interval, in seconds
:param int timeout: advertising timeout in seconds.
If None, no timeout.
``timeout`` is not available in CircuitPython 5.x and must be `None`.
"""
advertisement_bytes = bytes(advertisement)
scan_response_bytes = b""
@ -183,13 +185,28 @@ class BLERadio:
scan_response.tx_power = self.tx_power
if scan_response:
scan_response_bytes = bytes(scan_response)
self._adapter.start_advertising(
advertisement_bytes,
scan_response=scan_response_bytes,
connectable=advertisement.connectable,
interval=interval,
timeout=0 if timeout is None else timeout,
)
# Remove after 5.x is no longer supported.
if (
sys.implementation.name == "circuitpython"
and sys.implementation.version[0] <= 5
):
if timeout is not None:
raise NotImplementedError("timeout not available for CircuitPython 5.x")
self._adapter.start_advertising(
advertisement_bytes,
scan_response=scan_response_bytes,
connectable=advertisement.connectable,
interval=interval,
)
else:
self._adapter.start_advertising(
advertisement_bytes,
scan_response=scan_response_bytes,
connectable=advertisement.connectable,
interval=interval,
timeout=0 if timeout is None else timeout,
)
def stop_advertising(self):
"""Stops advertising."""

View file

@ -2,11 +2,13 @@
import board
import neopixel
from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket
ble = BLERadio()
uart_service = UARTService()

View file

@ -10,13 +10,14 @@ import board
import busio
import digitalio
import adafruit_lis3dh
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
import neopixel
from adafruit_bluefruit_connect.color_packet import ColorPacket
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
def scale(value):
"""Scale an value from (acceleration range) to 0-255 (RGB range)"""

View file

@ -6,14 +6,14 @@ and updates a Circuit Playground to show the history of the received packets.
import board
import neopixel
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
# Only the packet classes that are imported will be known to Packet.
from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket
from adafruit_ble import BLERadio
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.nordic import UARTService
NUM_PIXELS = 10
np = neopixel.NeoPixel(board.NEOPIXEL, NUM_PIXELS, brightness=0.1)
next_pixel = 0

View file

@ -6,13 +6,15 @@ This example acts as a keyboard to peer devices.
import sys
import time
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
import adafruit_ble
from adafruit_ble.advertising import Advertisement
from adafruit_ble.advertising.standard import ProvideServicesAdvertisement
from adafruit_ble.services.standard.hid import HIDService
from adafruit_ble.services.standard.device_info import DeviceInfoService
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
# Use default HID descriptor
hid = HIDService()