Nabend,
nachdem ich meine Finger an recht billig an einige PN532 RFID Leser bekommen habe, habe ich mir die RFID Treiber angeschaut mit dem Hintergedanken einen Treiber für diesen zu schreiben (erste Tests mit I2C waren vielversprechend, definitiv stärker als meine MFRC522). Einige Dinge könnten am RFID System definitiv verbessert werden:
- Die Einstellungen der Treiber ist tlw. zu spezifisch womit die #ifdef kompiliziert werden (Beispiel
RFID_READER_TYPE_MFRC522_SPI
undRFID_READER_TYPE_MFRC522_I2C
) - Einstellungen sollten nie leise umgestellt werden, wenn inkompatible flags aktiviert werden. Lieber dem User mit einem Fehler sagen, dass das net gehen wird
- Dedizierte Aufgabenteilung zwischen Teiber und RFID „Handler“ (d.h. Treiber stellen nur Events, wie zB „Karte angenähert“ oder „Karte entfernt“ dem Handler zur Verfügung)
- Binäre IDs statt der dezimalen Darstellung verwenden (und in den Augenblicken wenn es notwendig ist, konvertieren)
Natürlich habe ich auch etwas vorbereitet ;). Aktuell habe ich bis jetzt den MFRC522 umgebaut und durchgetestet (ich habe leider kein Zurgiff auf einen PN5180). Ich kann natürlich Trockenübungen an dem Treiber von dem machen, aber ich brauch jemanden als Versuchskaninchen.
dev-branch:
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [=== ] 29.6% (used 97132 bytes from 327680 bytes)
Flash: [=== ] 30.9% (used 2027249 bytes from 6553600 bytes)
neu:
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [=== ] 29.7% (used 97428 bytes from 327680 bytes)
Flash: [=== ] 31.2% (used 2042853 bytes from 6553600 bytes)
Der zusätzliche Verbrauch kommt von dem neuen Treiber von der MFRC522.
Ideen und Meinungen sind gerne willkommen.
P.S.: Man kann das auch einen Schritt weiter treiben und C++ Brainfuckery in Form von CRTP (Curiously Recurring Template Pattern) für statische Vererbung verwenden. Eine funktionale Variante von RFID Treiber habe ich hier mal zusammengebastelt (wobei hier auch nur der MFRC522 ausgetestet ist): GitHub - laszloh/ESPuino at feature/rfid_driver
edit: Hoffentlich ist es nicht falsch rüber gekommen. Was ich gestern Abend vergessen habe zu schreiben, der aktuelle SW Stand ist nicht schlecht. Sie funktioniert, der große Punkt den ich hier sehe, ist die Wartbarkeit und Erweiterbarkeit.