Hi Erik,

vielen Dank schon mal fuer die Antwort!

Nach weiteren zwei Stunden Suche heute und tonnenweise zusaetzlicher 
Debugstatements habe ich den Fehler gefunden:
Es funktioniert, wenn ich entweder in der Datei sd-reader_config.h den Wert

#define USE_DYNAMIC_MEMORY 1

setze oder  in der fat_config.h die statischen Werte erhoehe

#define FAT_FILE_COUNT XX
#define FAT_DIR_COUNT XX

(Die genauen Werte (XX) muss ich noch ermitteln, ich habe sie im Moment 
grosszuegig gewaehlt.)

Drauf gekommen bin ich, als ich testweise ein weiteres Mal 
vfs_sd_try_open_rootnode()
aufgerufen habe (in welchem ja ein vfs_sd_chdir("/") steckt) und das mit
rc != 0 und einer Fehlermeldung zurueckkam.
Das machte mich stutzig, da es nach einem reset ja funktioniert.

Nur kurz, was ich erreichen will in gekuerztem PseudoCode.
(ausimplemtiert funktioniert das jetzt mit den obigen 
Aenderungen auch so)

fileHandle

logger_init (<dirname>, day, month)
{
  vfs_sd_chdir("<dirname>")                     // existiert das Verzeichnis?
  if not success
  {
    vfs_sd_mkdir_recursive( dirname )   // lege es an, wenn nicht
    vfs_sd_rootnode = vfs_sd_chdir("<dirname>")
  }
  fileName = <day>.log
  fileHandle = vfs_sd_open(fileName)
  if not success
  {
    fileHandle = vfs_sd_create(fileName)
  }
  // weitere Tests mit day, month, modification_date etc
  // gekuerzt
}

logger_log(<logText>)
{
  vfs_sd_fseek(fileHandle, 0, SEEK_END);
  vfs_sd_write(fileHandle, <logText>, len);
  sd_raw_sync();
}

logger_close()
{
   ....
}

Nur kurz zum Hintergrund, was ich damit erreichen will:
Im Prinzip soll es eine Art logrotation werden, mit welcher ich Daten pro Tag 
in eine eigene Datei schreibe, welche ich im darauffolgendem Monat wieder 
ueberschreibe. 
Dazu habe ich 
#define FAT_DATETIME_SUPPORT 1
implementiert, aber noch nicht in die Config-Struktur eingebunden.

Damit habe ich immer einen Monat Zeit, die Daten einzusammeln, die Logdateien 
wachsen aber nicht unendlich, selbst wenn ich die Daten nicht einsammel.
Das koennte passieren, wenn ich die Daten in eine einzelne Datei (inklusive 
Zeit- und Datumsstempel) logge.
Das Ueberschreiben nach 1 Monat ist kein Problem.
Das alles ist bislang nur ein Gedankenexperiment, mir hat es aber keine Ruhe 
gelassen, dass ich den Fehler nicht fand.

On Friday 26 June 2015 18:52:42 e...@users.sourceforge.net wrote:
> > Deren Rückgabewert vom Typ struct fat_dir_struct * kann ich auch nirgendwo
> > weiterverwenden.
> 
> Doch, für vfs_sd_open_in().
Ja, die ist aber als static deklariert also fuer mich von aussen nicht 
sichtbar :(

> Dein Denkfehler ist, dass du eine konkrete Implementierung von VFS benutzt
> und nicht das generische VFS-Interface, wie es in core/vfs/vfs.h definiert
Das hatte ich mir noch gar nicht gross angeschaut, da ich explizit auf die SD-
Karte schreiben wollte. Ich werde das mal noch intensiver lesen.
Zwei Fragen vorweg:
Im Moment bin ich ja auf einem Net-IO unterwegs, habe hier aber auch noch ein 
etherrape rumliegen. Letzteres hatte ich neben dem aufgeloetetem DataFlash 
testweise ein SD-Modul angeschlossen.
Auf Anhieb sehe ich bei dem generischen Interface nicht die Moeglichkeit, in 
diesem Setup gezielt auf die SD-Kare zu schreiben.
Ein Unterverzeichnis kann ich damit auch nicht erstellen, oder?

Viele Gruesse
Meinhard

_______________________________________________
Ethersex-devel mailing list
Ethersex-devel@list.zerties.org
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Antwort per Email an