aioble/multitests: Add test for advertising and scanning services.

This tests both encoding and decoding multiple 16-bit and 32-bit services
within the one advertising field.

Signed-off-by: Damien George <damien@micropython.org>
pull/863/head
Damien George 2024-05-25 17:45:42 +10:00
rodzic 46e243c592
commit 63736c182a
2 zmienionych plików z 79 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,71 @@
# Test advertising multiple services, and scanning them.
import sys
# ruff: noqa: E402
sys.path.append("")
import asyncio
import aioble
import bluetooth
TIMEOUT_MS = 5000
_SERVICE_16_A = bluetooth.UUID(0x180F) # Battery Service
_SERVICE_16_B = bluetooth.UUID(0x181A) # Environmental Sensing Service
_SERVICE_32_A = bluetooth.UUID("AB12") # random
_SERVICE_32_B = bluetooth.UUID("CD34") # random
# Acting in peripheral role (advertising).
async def instance0_task():
multitest.globals(BDADDR=aioble.config("mac"))
multitest.next()
# Advertise, and wait for central to connect to us.
print("advertise")
async with await aioble.advertise(
20_000,
name="MPY",
services=[_SERVICE_16_A, _SERVICE_16_B, _SERVICE_32_A, _SERVICE_32_B],
timeout_ms=TIMEOUT_MS,
) as connection:
print("connected")
await connection.disconnected()
print("disconnected")
def instance0():
try:
asyncio.run(instance0_task())
finally:
aioble.stop()
# Acting in central role (scanning).
async def instance1_task():
multitest.next()
wanted_device = aioble.Device(*BDADDR)
# Scan for the wanted device/peripheral and print its advertised services.
async with aioble.scan(5000, interval_us=30000, window_us=30000, active=True) as scanner:
async for result in scanner:
if result.device == wanted_device:
services = list(result.services())
if services:
print(services)
break
# Connect to peripheral and then disconnect.
print("connect")
device = aioble.Device(*BDADDR)
async with await device.connect(timeout_ms=TIMEOUT_MS):
print("disconnect")
def instance1():
try:
asyncio.run(instance1_task())
finally:
aioble.stop()

Wyświetl plik

@ -0,0 +1,8 @@
--- instance0 ---
advertise
connected
disconnected
--- instance1 ---
[UUID(0x180f), UUID(0x181a), UUID(0x32314241), UUID(0x34334443)]
connect
disconnect