====== 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. [[lyx_-_programmiersprache:units:hardware:bluetooth|std.hardware.bluetooth — Übersicht]] · [[lyx_-_programmiersprache:guides:bluetooth|Bluetooth-Guide]] · [[lyx_-_programmiersprache:units|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