std.hardware.bluetooth_ai

Typsichere Charakteristiken. Diese Unit dreht die übliche Fehlerquelle von GATT um: Statt zur Laufzeit festzustellen, dass eine Charakteristik gar nicht beschreibbar ist, entscheidet das der Compiler.

Eine Charakteristik trägt Eigenschaften — lesbar, beschreibbar, benachrichtigend. MakeReadableChar, MakeWritableChar, MakeNotifiableChar und die Kombinationen MakeRWChar/MakeRWNChar verpacken sie in je einen eigenen Typ. Auf einem ReadableChar gibt es nur Read, auf einem WritableChar nur Write — ein falscher Aufruf übersetzt gar nicht erst.

Der Preis ist ein Umweg beim Anlegen: Man erzeugt den passenden Typ einmal aus dem Discovery-Ergebnis und reicht ihn danach herum. Der Gewinn ist, dass jede Verwechslung beim Übersetzen auffällt statt im Feld.

std.hardware.bluetooth — Übersicht · Bluetooth-Guide · Standard Library


Schnittstelle

Signatur
MakeReadableChar(charBuf: int64, idx: int64): ReadableChar
MakeWritableChar(charBuf: int64, idx: int64): WritableChar
MakeNotifiableChar(charBuf: int64, idx: int64, cccdHandle: int64): NotifiableChar
MakeRWChar(charBuf: int64, idx: int64): RWChar
MakeRWNChar(charBuf: int64, idx: int64, cccdHandle: int64): RWNChar
ReadableCharRead(char: ReadableChar, fd: int64, buf: int64, bufLen: int64): int64
RWCharRead(char: RWChar, fd: int64, buf: int64, bufLen: int64): int64
RWNCharRead(char: RWNChar, fd: int64, buf: int64, bufLen: int64): int64
WritableCharWrite(char: WritableChar, fd: int64, data: int64, dataLen: int64): int64
RWCharWrite(char: RWChar, fd: int64, data: int64, dataLen: int64): int64
RWNCharWrite(char: RWNChar, fd: int64, data: int64, dataLen: int64): int64
NotifiableCharSubscribe(char: NotifiableChar, fd: int64): int64
NotifiableCharUnsubscribe(char: NotifiableChar, fd: int64): int64
NotifiableCharRecv(char: NotifiableChar, fd: int64, dataBuf: int64, bufLen: int64): int64
RWNCharSubscribe(char: RWNChar, fd: int64): int64
RWNCharRecv(char: RWNChar, fd: int64, dataBuf: int64, bufLen: int64): int64
BleEventStreamCreate(fd: int64, charHandle: int64, cccdHandle: int64): BleEventStream
BleEventStreamOpen(stream: BleEventStream): int64
BleEventStreamNext(stream: BleEventStream, dataBuf: int64, bufLen: int64): int64
BleEventStreamClose(stream: BleEventStream)
HeartRateSensorCreate(fd: int64, hrHandle: int64, cccdHandle: int64, bodyHandle: int64): HeartRateSensor
HeartRateSensorRead(sensor: HeartRateSensor, flagsOut: int64, bpmOut: int64): int64
HeartRateSensorSubscribe(sensor: HeartRateSensor): BleEventStream
HeartRateSensorRecvNotification(sensor: HeartRateSensor, flagsOut: int64, bpmOut: int64): int64
BatteryMonitorCreate(fd: int64, levelHandle: int64): BatteryMonitor
BatteryMonitorRead(monitor: BatteryMonitor): int64
HRProfileValidate(charBuf: int64, charCount: int64): int64
GattServiceUUIDsUnique(svcBuf: int64, svcCount: int64): int64
GattCharPropsCheck(props: int64, propRequired: int64): int64

Quelle: std/hardware/bluetooth_ai.lyx · geprüft mit lyxc 1.0.17E · Stand 2026-08-12