====== std.hardware.bluetooth_gattc ====== Der **GATT-Client**: Dienste und Charakteristiken eines BLE-Geräts finden, Werte lesen und schreiben, Benachrichtigungen abonnieren. Ein BLE-Gerät beschreibt sich selbst über eine Hierarchie aus Diensten (Services), die Charakteristiken enthalten, die wiederum Deskriptoren tragen. Jedes Element hat ein **Handle** — eine 16-Bit-Zahl, über die es angesprochen wird — und eine **UUID**, die sagt, was es bedeutet. Der Ablauf ist deshalb immer: erst ''GattDiscoverServices'', dann innerhalb eines Dienstes ''GattDiscoverChars'', dann mit dem gefundenen Handle lesen oder schreiben. Die ''GattSvc*''- und ''GattChar*''-Funktionen lesen einzelne Felder aus dem Ergebnispuffer der Discovery — der Puffer ist ein Feld fester Satzgröße, die Funktionen sind die Zugriffshilfen darauf. Für **Benachrichtigungen** muss der Client in den CCCD-Deskriptor der Charakteristik schreiben; danach schickt das Gerät von sich aus Aktualisierungen, die mit einer Empfangsfunktion abgeholt werden. [[lyx_-_programmiersprache:units:hardware:bluetooth|std.hardware.bluetooth — Übersicht]] · [[lyx_-_programmiersprache:guides:bluetooth|Bluetooth-Guide]] · [[lyx_-_programmiersprache:units|Standard Library]] ---- ===== Schnittstelle ===== ^ Signatur ^ | ''GattSvcStart(buf: int64, idx: int64): int64'' | | ''GattSvcEnd(buf: int64, idx: int64): int64'' | | ''GattSvcUUID(buf: int64, idx: int64): int64'' | | ''GattCharDecl(buf: int64, idx: int64): int64'' | | ''GattCharValue(buf: int64, idx: int64): int64'' | | ''GattCharUUID(buf: int64, idx: int64): int64'' | | ''GattCharProps(buf: int64, idx: int64): int64'' | | ''GattDiscoverServices(fd: int64, outBuf: int64, maxServices: int64): int64'' | | ''GattDiscoverChars(fd: int64, startHandle: int64, endHandle: int64, outBuf: int64, maxChars: int64): int64'' | | ''GattFindCharByUUID(charBuf: int64, charCount: int64, uuid: int64): int64'' | | ''GattFindServiceByUUID(svcBuf: int64, svcCount: int64, uuid: int64): int64'' | | ''GattReadChar(fd: int64, valueHandle: int64, dataBuf: int64, bufLen: int64): int64'' | | ''GattWriteChar(fd: int64, valueHandle: int64, data: int64, dataLen: int64): int64'' | | ''GattWriteCmd(fd: int64, valueHandle: int64, data: int64, dataLen: int64): int64'' | | ''GattEnableNotification(fd: int64, cccdHandle: int64): int64'' | | ''GattDisableNotification(fd: int64, cccdHandle: int64): int64'' | | ''GattEnableIndication(fd: int64, cccdHandle: int64): int64'' | | ''GattRecvNotification(fd: int64, handleOut: int64, dataBuf: int64, bufLen: int64): int64'' | | ''GattPoll(fd: int64, timeoutMs: int64): int64'' | | ''ReadHeartRate(fd: int64, hrHandle: int64, flagsOut: int64, bpmOut: int64): int64'' | | ''ReadBatteryLevel(fd: int64, battHandle: int64): int64'' | ^ Konstante ^ Wert ^ Bedeutung ^ | ''GATT_UUID_PRIMARY_SERVICE'' | ''0x2800'' | – | | ''GATT_UUID_SECONDARY_SERVICE'' | ''0x2801'' | – | | ''GATT_UUID_CHARACTERISTIC'' | ''0x2803'' | Declaration | | ''GATT_UUID_CCCD'' | ''0x2902'' | Client Char Config | | ''GATT_UUID_SCCD'' | ''0x2903'' | Server Char Config | | ''GATT_UUID_CHAR_FORMAT'' | ''0x2904'' | Presentation Format | | ''GATT_SVC_GENERIC_ACCESS'' | ''0x1800'' | – | | ''GATT_SVC_GENERIC_ATTRIBUTE'' | ''0x1801'' | – | | ''GATT_SVC_HEART_RATE'' | ''0x180D'' | – | | ''GATT_SVC_BATTERY'' | ''0x180F'' | – | | ''GATT_SVC_DEVICE_INFO'' | ''0x180A'' | – | | ''GATT_SVC_CURRENT_TIME'' | ''0x1805'' | – | | ''GATT_UUID_DEVICE_NAME'' | ''0x2A00'' | – | | ''GATT_UUID_APPEARANCE'' | ''0x2A01'' | – | …sowie 16 weitere Konstanten in der Quelldatei ''std/hardware/bluetooth_gattc.lyx''. Quelle: ''std/hardware/bluetooth_gattc.lyx'' · geprüft mit ''lyxc 1.0.17E'' · Stand 2026-08-12