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
| 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