Skip to content

Commit 8e0d39b

Browse files
committed
Get RGB central and periph demo working
1 parent 8291ee9 commit 8e0d39b

File tree

3 files changed

+54
-34
lines changed

3 files changed

+54
-34
lines changed

adafruit_ble/advertising/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def encode_data(data_dict, *, key_encoding="B"):
9090
return data
9191

9292
class AdvertisingDataField:
93-
"""Top level class for any descriptor classes that live in Advertisement or it's subclasses."""
93+
"""Top level class for any descriptor classes that live in Advertisement or its subclasses."""
9494

9595
class AdvertisingFlag:
9696
"""A single bit flag within an AdvertisingFlags object."""

examples/ble_demo_central.py

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,57 @@
77

88
import board
99
from analogio import AnalogIn
10-
11-
# This hasn't been updated.
12-
13-
#from adafruit_bluefruit_connect.packet import Packet
14-
# Only the packet classes that are imported will be known to Packet.
15-
from adafruit_bluefruit_connect.color_packet import ColorPacket
16-
1710
import adafruit_ble
11+
from adafruit_ble import SmartAdapter
12+
from adafruit_ble.advertising.standard import ProvideServiceAdvertisement
1813
from adafruit_ble.services.nordic import UARTService
19-
from adafruit_ble.scanner import Scanner
14+
15+
from adafruit_bluefruit_connect.color_packet import ColorPacket
2016

2117
def scale(value):
2218
"""Scale an value from 0-65535 (AnalogIn range) to 0-255 (RGB range)"""
2319
return int(value / 65535 * 255)
2420

25-
scanner = Scanner()
21+
adapter = SmartAdapter()
22+
adafruit_ble.recognize_services(UARTService)
2623

2724
a3 = AnalogIn(board.A3)
2825
a4 = AnalogIn(board.A4)
2926
a5 = AnalogIn(board.A5)
3027

28+
uart_connection = None
29+
# See if any existing connections are providing UARTService.
30+
if adapter.connected:
31+
for conn in adapter.connections:
32+
if hasattr(conn, "uart"):
33+
uart_connection = conn
34+
break
35+
3136
while True:
32-
for peer in scanner.scan(UARTService):
33-
peer.connect()
34-
35-
r = scale(a3.value)
36-
g = scale(a4.value)
37-
b = scale(a5.value)
38-
39-
color = (r, g, b)
40-
print(color)
41-
color_packet = ColorPacket(color)
42-
for peer in adafruit_ble.peers:
43-
if not hasattr(peer, "uart"):
44-
continue
37+
if not uart_connection:
38+
print("Scanning...")
39+
for adv in adapter.start_scan((ProvideServiceAdvertisement,), timeout=5):
40+
if UARTService in adv.services:
41+
print("found a UARTService advertisement")
42+
uart_connection = adapter.connect(adv)
43+
break
44+
# Stop scanning whether or not we are connected.
45+
adapter.stop_scan()
46+
47+
while uart_connection and uart_connection.connected:
48+
r = scale(a3.value)
49+
g = scale(a4.value)
50+
b = scale(a5.value)
51+
52+
color = (r, g, b)
53+
print(color)
54+
color_packet = ColorPacket(color)
4555
try:
46-
peer.uart.write(color_packet.to_bytes())
56+
uart_connection.uart.write(color_packet.to_bytes())
4757
except OSError:
48-
pass
49-
time.sleep(0.3)
58+
try:
59+
uart_connection.disconnect()
60+
except:
61+
pass
62+
uart_connection = None
63+
time.sleep(0.3)

examples/ble_demo_periph.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
import board
77
import neopixel
88

9-
import adafruit_ble
9+
from adafruit_ble import SmartAdapter
10+
from adafruit_ble.advertising.standard import ProvideServiceAdvertisement
1011
from adafruit_ble.services.nordic import UARTService
11-
from adafruit_bluefruit_connect.packet import Packet
12+
1213
# Only the packet classes that are imported will be known to Packet.
14+
from adafruit_bluefruit_connect.packet import Packet
1315
from adafruit_bluefruit_connect.color_packet import ColorPacket
1416

15-
# This hasn't been updated.
16-
1717
NUM_PIXELS = 32
1818
np = neopixel.NeoPixel(board.D10, NUM_PIXELS, brightness=0.1)
1919
next_pixel = 0
@@ -22,11 +22,17 @@ def mod(i):
2222
"""Wrap i to modulus NUM_PIXELS."""
2323
return i % NUM_PIXELS
2424

25-
adafruit_ble.add_local_service(UARTService)
26-
adafruit_ble.advertise(UARTService)
25+
26+
adapter = SmartAdapter()
27+
uart = UARTService()
28+
advertisement = ProvideServiceAdvertisement(uart)
29+
2730
while True:
28-
for peer in adafruit_ble.peers:
29-
packet = Packet.from_stream(peer.local.uart)
31+
adapter.start_advertising(advertisement)
32+
while not adapter.connected:
33+
pass
34+
while adapter.connected:
35+
packet = Packet.from_stream(uart)
3036
if isinstance(packet, ColorPacket):
3137
print(packet.color)
3238
np[next_pixel] = packet.color

0 commit comments

Comments
 (0)