Skip to content
Snippets Groups Projects

App now has a basic structure and BLE support

Merged plw1g21 requested to merge app-bluetooth-connection into main
3 files
+ 117
0
Compare changes
  • Side-by-side
  • Inline
Files
3
+ 47
0
import ubluetooth
import struct
import time
class BLEAdvertising:
def __init__(self):
self.ble = ubluetooth.BLE()
self.ble.active(True)
self.ble.irq(self.ble_irq)
self.register_services()
self.advertising_payload = self.generate_advertising_payload("RPi Pico")
self.ble.gap_advertise(100_000, self.advertising_payload)
def ble_irq(self, event, data):
if event == 1:
print("Device connected")
elif event == 2:
print("Device disconnected")
self.ble.gap_advertise(100_000, self.advertising_payload)
elif event == 3:
conn_handle, attr_handle = data
value = self.ble.gatts_read(self.rx_handle)
print("Received message:", value.decode('utf-8'))
def generate_advertising_payload(self, name):
name_bytes = bytes(name, 'utf-8')
payload = bytearray()
payload.extend(struct.pack('BB', 0x02, 0x01))
payload.append(0x06)
payload.extend(struct.pack('BB', len(name_bytes) + 1, 0x09))
payload.extend(name_bytes)
return payload
def register_services(self):
UART_SERVICE_UUID = ubluetooth.UUID("6E400001-B5A3-F393-E0A9-E50E24DCCA9E")
UART_TX_UUID = ubluetooth.UUID("6E400003-B5A3-F393-E0A9-E50E24DCCA9E")
UART_RX_UUID = ubluetooth.UUID("6E400002-B5A3-F393-E0A9-E50E24DCCA9E")
self.rx_char = (UART_RX_UUID, ubluetooth.FLAG_WRITE)
self.tx_char = (UART_TX_UUID, ubluetooth.FLAG_NOTIFY)
UART_SERVICE = (UART_SERVICE_UUID, (self.tx_char, self.rx_char))
self.services = (UART_SERVICE,)
((self.tx_handle, self.rx_handle),) = self.ble.gatts_register_services(self.services)
ble_adv = BLEAdvertising()
while True:
time.sleep(1)
Loading