Anfängerfrage - Unterschiede Abspielmodi Hörbuch/Hörspiel

Alles klar, danke!
Dann muss ich noch etwas warten, bis ich Deine Erweiterung nutzen kann. Die Android-App kann ich nämlich nicht verwenden :man_shrugging:

Auf die schnelle kannst du folgendes ändern, dann kannst du bis Ordner Nr. 199 scrollen.

An folgender Stelle:

bool setupFolder(folderSettings * theFolder) {
  // Ordner abfragen
  theFolder->folder = voiceMenu(99, 301, 0, true, 0, 0, true);

Die „99“ in „199“

Es ist nicht ganz Intuitiv, aber sollte funktionieren.
Ich würde langfristig eine Auswahl in den Hörbücher Modis einbauen ob man Speicherplatz 1 oder 2 verwenden will.

Leider funktioniert Deine Erweiterung bei mir nur teilweise.
Den Ordner 101 auf der SD-Karte kann ich nun über das Admin-Menü auswählen und ihm auch einen Modus z.B. Hörbuch (Option 5) zuweisen. Lege ich dann aber die so konfigurierte Karte auf spielt der TonUINO nicht den Inhalt von 101 sondern 01 ab?!

Wie hast du denn den Speicherplatz 2 auf der RFID Karte definiert?

Das ist ja auch richtig.
Der DFPlayer akzeptiert nur 99 Ordner.
Die Virtuellen Ordner stellen nur einen weiteren Speicherplatz für Hörbücher zur Verfügung.
Aber erst zusammen mit der Hörbuch von bis Funktion kannst du Ordner sparen, da du zwei Hörbücher pro Ordner inklusive Speicherung nutzen kannst.

@Manu der Hörbuchstand wird im EEPROM unter der Adresse des Ordners abgespeichert.
So hat man pro Ordner eine Speicheradresse.
Ich zähle die Ordner aber jetzt erneut von 101-199 um ein weiteres mal eine Speicheradresse pro Ordner zu bekommen.
Ordner 101-199 spielen aber den Inhalt von Ordner 1-99, mehr geht ja nicht.

Ok, hatte den Funktionsumfang Deiner Erweiterung falsch verstanden.
Danke für Deine Erläuterungen! Jetzt ist mir klar, dass Du die Speicherung des Hörbuch-Fortschritts im EEPROM meinst.
Jetzt frage ich mich allerdings gerade, da ich z.B. drei Teile Jim Knopf zu verwursten habe, ob es möglich wäre, über ein zusätzliches „if“ also ein „else if“ noch die virtuellen Ordner 201 bis 299 zu erschaffen, so dass 3 Speicherstände pro Ordner möglich wären? :thinking:

Das Problem ist, das ich auch die Nummer des virtuellen Ordners auf der RFID Karte ablegen muss. Der Maximal wert für die Ordnernummer ist aber 255.
Man könnte jetzt natürlich sagen, das man die ersten 55 Ordner mit drei Plätzen ausstattet, die Ergänzug ist nicht schwer.

Noch effektiver wäre ein weiteres Byte auf der RFID Karte zu verwenden. Dann muss aber ein Byte des Cookie dran glauben.
In dem Fall könnte man 661 Speicherplätze pro Ordner generieren.
Der Umbaubist aber größer und ich weiß nicht wann der EEPROM aufgibt, wegen Platzmangel.

Oder man verwendet das Byte für die Versionsnummer um mehr Platz für die Speicheradressierung zu bekommen.

oder du verwendest den bisher ungenutzten Bereich der RFID-Karten. Dann sind die Karten weiterhin kompatibel, ohne das MagicCookie oder die Version zu ändern.

Wie groß ist der?
Ich habe mich mit den Tags noch nicht beschäftigt und mich nur an dem bekannten orientiert.

Wir nutzen ja Sektor 1 / Block 4. Das sind 16 Byte. Davon sind noch 7 Byte frei. Generell hat die Karte bei Classic Karten 1KB. Allerdings muss man da das lesen und schreiben entsprechend umbauen/erweitern. Wenn man in den genannten 16 Byte bleibt wäre es einfacher.

Schau mal hier:

Ich meine, es sind 4 Sektoren je 16 Byte.
Davon wird der 4. Sektor genutzt

Diese Info ist nicht mehr 100% aktuell. Aber als Info reicht: Es sind in dem Bereich den wir beackern noch 7 Byte frei.

Hoffe mal, dass diese noch aktuell ist:

Wie gesagt… 7 Byte sind frei.

Mann könnte in einem hinteren byte auch die Nummer des Speicherplatz für den ordner ablegen, anstatt die Ordnernummer immer weiter hoch zu zählen.

Du hast idealerweise daran gedacht, daß die Karte auch mit FWs läuft die diese Erweiterung nicht kennt. Das ist beim einfachen hoch zählen des Ordners ja nun nicht der Fall.

Wäre das nicht dann auch eine sinnvolle Ergänzung in der offiziellen Firmware?
Hörbuch von bis mit erweitertem Speicher.

Habe das jetzt für meine Verhältnisse erstmal ausreichend so realisiert

void PlayFolderMP3 (uint8_t folder, uint8_t track) {
      uint8_t new_folder = 0;
      
      if (folder > 100 && folder < 200) {
        new_folder = folder - 100;}
      else if (folder > 200) {
        new_folder = folder - 200;}
      else {
        new_folder = folder;  }
        
      mp3.playFolderTrack(new_folder,track);
    }

uint8_t getFolderMP3Count (uint8_t folder) {
      uint8_t new_folder = 0;
      
      if (folder > 100 && folder < 200) {
        new_folder = folder - 100;}
      else if (folder > 200) {
        new_folder = folder - 200;}
      else {
        new_folder = folder;  }
        
      return mp3.getFolderTrackCount(new_folder);
    }

Alles andere, was mein „Gehirnfurz“ hier an Ideen ausgelöst, hat übersteigt leider meine Fähigkeiten :exploding_head:
Danke, für Euer Engagemet am ganzen Projekt!

Auf den ersten Blick sieht das gut aus.

Ich habe das Problem mit den weiteren Speicherplätzen gelöst und in meinen Fork eingebaut.
Dazu verwende ich ein weiteres Byte auf dem RFID Tag.
Wie viele Speicherplätze real möglich sind weiß ich nicht.

hier mein Fork:

Mir fehlt die Zeit jede Funktion ausgiebig zu testen, deshalb meldet mir Bitte Fehler.

1 Like