Bez. des ursprünglichen Problems dieses Themas hätte ich eine Idee:
Dabei wird der Fortschritt weiterhin nur im EEPROM und nicht auf der RFID oder der SD Karte gespeichert.
Bisher ist es (wenn ich es richtig verstanden habe) so:
- für jeden (1-99) Ordner wird ein eigener Fortschritt (1 Titelnummer = 1 Byte) gespeichert (=99Bytes).
Das scheitert, wie geschrieben, für alle Spezialmodi - wobei der Hörbuch Modus der einzige ist, der sich den Fortschritt merkt - die anderen interessiert das ja nicht.
Lösung:
- Nummer für aktuellen Titel zum Speichern des Fortschritts (wie bisher)
- zur Identifikation:
- Nummern für Ordner + Starttitel + Endtitel zur Identifikation
- Alternativ kann man auch die RFID/UUID der Karte nutzen
- Aber das erfordert
- mehr Speicher: 8? Bytes für die UUID statt 3 Bytes (Ordner, Start, Ende)
- das Auflegen der Karte zu Beginn bzw. zusätzliche Speichern der letzten Musikkarten UUID
- Aber das erfordert
Problem:
- Da ein Ordner mehrere Spezial-Modi Konfigurationen enthalten kann, d.h. die Anzahl an Konfigurationen für einen Ordner nicht definiert ist (bisher galt 1 Konfiguration pro Ordner), muss die Ordner-Nummer ebenfalls gespeichert werden (bisher war die Ordner-Nummer = Index-Position des Bytes).
Folgen:
- Statt 1 braucht die neue Variante also 4 Bytes pro Datensatz.
- Mit der UUID Alternative wären es 9 Bytes
- Außerdem sind nicht nur 99, sondern realistisch (10 Titel pro Album) bis zu ~25 * 99 = 2475 Kombinationen zu speichern.
- Mit der UUID Alternative wären es so viele wie Karten im Umlauf sind (i.d.R. <1000?)
- Statt 99 Bytes braucht die neue Variante also 2475 * 4 = 9900 Bytes
- Die UUID Alternative 9 * 1000 = 9000 Bytes
Da ich nicht weiß, wie viel Speicher der EEPROM hergibt, gibt es 2 Varianten:
Variante A
- Man nutzt die o.g. Variante und braucht 9900 bzw. 9000 Bytes im EEPROM
Vairante B
- Man speichert den Fortschritt nicht für alle Ordner (oder alle/1000 UUIDs) sondern nur die letzten 10 oder 20.
- Realistisch betrachtet fängt man doch keine 10 oder 20 Alben gleichzeitig an
- Und erinnert sich obendrein noch für jeden, was bisher passiert ist
- Damit man noch weiß, welches der letzte Datensatz war, braucht es noch 1 Byte für einen Index
- Damit nutzt man 20 * 4 + 1 = 81 Bytes
- Die UUID Alternative wäre bei 20 * 9 + 1 = 181 Bytes
Mir persönlich gefällt Variante B besser, weil
- ich nicht den Fortschritt für jede Konfiguration brauche
- ich habe keine 100+ Hörbücher und würde mich auch nicht an jeden Fortschritt erinnern
- ich nicht für jede Konfiguration den Speicher im EEPROM dafür vorhalten muss
- Es gibt ja auch Ordner die keine Hörbücher enthalten und daher nie einen Fortschritt speichern müssen
just my 2 cents