<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://doc.seolizer.de/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://doc.seolizer.de/feed.php">
        <title>SEOLizer Dokumentation - lyx_-_programmiersprache:units:hardware</title>
        <description></description>
        <link>https://doc.seolizer.de/</link>
        <image rdf:resource="https://doc.seolizer.de/_media/wiki:dokuwiki.svg" />
       <dc:date>2026-09-20T08:39:24+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ai?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_dbus?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ext?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gattc?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gatts?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_l2cap?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_rfcomm?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_types?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth?rev=1787148757&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_barriers?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ext?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ioctl?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_mmio?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_pin?rev=1788880062&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_syscalls?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_util?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio?rev=1785676844&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:rpi4?rev=1786868625&amp;do=diff"/>
                <rdf:li rdf:resource="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:usb?rev=1788880062&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://doc.seolizer.de/_media/wiki:dokuwiki.svg">
        <title>SEOLizer Dokumentation</title>
        <link>https://doc.seolizer.de/</link>
        <url>https://doc.seolizer.de/_media/wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ai?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_ai</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ai?rev=1786868625&amp;do=diff</link>
        <description>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.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_dbus?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_dbus</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_dbus?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_dbus

Die Anbindung an BlueZ, den Bluetooth-Dienst von Linux, über dessen D-Bus-Schnittstelle. Alles, was den Adapter selbst betrifft — Geräte suchen, koppeln, verbinden —, läuft hierüber und nicht über Sockets.

BlueZOpenConnection</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ext?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_ext</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_ext?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_ext

BLE-Scannen mit Auswertung: Umgebungsgeräte finden und ihre Werbedaten zerlegen.

Ein BLE-Gerät sendet in kurzen Abständen Advertising-Pakete mit Adresse, Sendestärke (RSSI) und einer Nutzlast aus typisierten Feldern — Name, angebotene Dienste, Herstellerdaten. Die</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gattc?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_gattc</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gattc?rev=1786868625&amp;do=diff</link>
        <description>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</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gatts?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_gatts</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_gatts?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_gatts

Die Server-Seite: das eigene Programm tritt als BLE-Gerät auf und stellt Charakteristiken bereit, die andere lesen, beschreiben und abonnieren können.

Eine Charakteristik wird über ihren Eintrag in einem Definitionspuffer beschrieben — UUID, Eigenschaften (lesbar, schreibbar, benachrichtigend) und ein Zeiger auf den aktuellen Wert. Die</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_l2cap?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_l2cap</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_l2cap?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_l2cap

L2CAP liegt unter RFCOMM und ist bei Bluetooth Low Energy der Träger des ATT-Protokolls — der Sprache, in der GATT-Clients und -Server miteinander reden.

Die Unit hat zwei Hälften: die Verbindungsebene (L2CapConnect</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_rfcomm?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_rfcomm</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_rfcomm?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_rfcomm

RFCOMM ist die serielle Schnittstelle über Bluetooth — ein Datenstrom wie bei TCP, adressiert über Geräteadresse und Kanalnummer (1–30). Damit sprechen Drucker, Barcodescanner, OBD-Adapter und die meisten Geräte des klassischen Bluetooth.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_types?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth_types</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth_types?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.bluetooth_types

Die gemeinsame Grundlage aller Bluetooth-Units: Geräteadressen und Socket-Adressstrukturen.

Eine Bluetooth-Adresse (BD_ADDR) ist 6 Byte lang und wird auf dem Bus in umgekehrter Reihenfolge übertragen — die Schreibweise</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth?rev=1787148757&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-19T14:12:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.bluetooth</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:bluetooth?rev=1787148757&amp;do=diff</link>
        <description>std.hardware.bluetooth

Nativer Bluetooth-Stack für Linux: von rohen AF_BLUETOOTH-Sockets über BlueZ-D-Bus-Steuerung bis zu vollständigen GATT-Client-/Server-Implementierungen für Bluetooth Low Energy (BLE) und Classic Bluetooth (RFCOMM). Alle neun Units implementieren das Protokoll direkt in Lyx — keine externen Bluetooth-Bibliotheken. Verbindungen werden als Dateideskriptoren (</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_barriers?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_barriers</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_barriers?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_barriers

Zwei Speicherbarrieren für ARM64 — der Teil des GPIO-Zugriffs, den man am leichtesten vergisst und der die schwersten Fehler verursacht.

GpioMemBarrier setzt ein DMB SY: alle vorherigen Speicherzugriffe sind abgeschlossen, bevor die folgenden beginnen. Ohne diese Barriere darf die CPU Schreibzugriffe auf verschiedene Peripherieadressen</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ext?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_ext</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ext?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_ext

Drei Erweiterungen, die über einfaches Ein und Aus hinausgehen:

	*  GpioSetAltMode schaltet einen Pin auf eine seiner sechs Alternativfunktionen (ALT0–ALT5) — dort liegen SPI, I²C, UART und PWM des SoC. Die Nummern sind</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ioctl?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_ioctl</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_ioctl?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_ioctl

Der Linux-Weg über die GPIO-Zeichengeräte /dev/gpiochipN und die v2-ioctl-Schnittstelle. Anders als der MMIO-Zugriff ist er nicht an den Raspberry Pi gebunden, läuft mit gewöhnlichen Gruppenrechten und kann etwas, das MMIO nicht kann:</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_mmio?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_mmio</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_mmio?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_mmio

Der direkte Registerzugriff auf den GPIO-Block des BCM2711 (Raspberry Pi 4). Die Unit bildet den Peripheriebereich einmal per mmap in den Prozess ein; danach kostet jedes Setzen oder Lesen eines Pins keinen Syscall mehr, sondern nur einen Speicherzugriff. Das ist der Weg für Bit-Bang-Protokolle und Software-PWM, wo jede Mikrosekunde zählt.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_pin?rev=1788880062&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-08T15:07:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_pin</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_pin?rev=1788880062&amp;do=diff</link>
        <description>std.hardware.gpio_pin

Typsichere Pin-Wrapper. Ein GpioOutputPin kennt nur Write, ein GpioInputPin nur Read — der Compiler weist jeden Versuch ab, einen Eingang zu beschreiben oder einen Ausgang zu lesen. Das ist der Unterschied zwischen einem Fehler beim Übersetzen und einem stillen Fehlverhalten in der Anlage.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_syscalls?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_syscalls</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_syscalls?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_syscalls

Die unterste Ebene: dünne Hüllen um die Syscalls, die der GPIO-Zugriff braucht — open, close, read, ioctl, poll, mmap, munmap. Sie tragen alle das Präfix Gpio, damit sie nicht mit den gleichnamigen Builtins kollidieren.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_util?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio_util</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio_util?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.gpio_util

Zwei Hilfsfunktionen, die sonst überall doppelt entstünden.

GpioDelayMicroseconds wartet über clock_nanosleep auf der monotonen Uhr — genau genug für Bit-Bang-Protokolle (±1–2 µs), und im Gegensatz zu einer Warteschleife ohne Last auf dem Kern.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio?rev=1785676844&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-02T13:20:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.gpio</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:gpio?rev=1785676844&amp;do=diff</link>
        <description>std.hardware.gpio

Nativer GPIO-Stack für Linux/ARM64 (Raspberry Pi 4 / BCM2711): von ARM64-Memory-Barriers und rohen Syscall-Wrappern über zwei komplementäre Zugriffsmodi (MMIO-Direktzugriff ohne Kontextwechsel und Linux GPIO-v2 ioctl) bis zu typsicheren Pin-Wrappern, Edge-Detection und Software-PWM. Alle acht Units arbeiten ohne externe Bibliotheken — nur POSIX-Syscalls und direkte Registerzugriffe.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:rpi4?rev=1786868625&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-08-16T08:23:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.rpi4</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:rpi4?rev=1786868625&amp;do=diff</link>
        <description>std.hardware.rpi4

Nur Konstanten, keine Funktionen — die Hardware-Beschreibung des BCM2711 im Raspberry Pi 4: Basisadressen, Registeroffsets, Pin-Modi und Pull-Codes.

Wer gpio_mmio benutzt, braucht diese Unit meist nicht direkt. Sie wird interessant, sobald man ein Register anspricht, das die höheren Ebenen nicht abdecken — oder ein Register-Layout nachvollziehen will.</description>
    </item>
    <item rdf:about="https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:usb?rev=1788880062&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-09-08T15:07:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>std.hardware.usb</title>
        <link>https://doc.seolizer.de/lyx_-_programmiersprache:units:hardware:usb?rev=1788880062&amp;do=diff</link>
        <description>std.hardware.usb

Der USB-Stack implementiert alle USB-Host-Operationen direkt via Linux usbdevfs-ioctls — kein libusb, keine externen Abhängigkeiten. Alle Transfers (Control, Bulk, Interrupt, Isochronous) sind vollständig in Lyx implementiert.</description>
    </item>
</rdf:RDF>
