Frage zu externem Code

OP #1291868
Lesenswert?

hallo

Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen, 
was hinter diesem Funktionsaufruf steckt.
1
fopenc(ps.file_index,'r', "*       MP3", &fp);

Die zugehörigen Dateien sind angehängt.

Es geht darum, dass ich MP3s von der SD-Karte lesen will, nur klappt das 
noch nicht.

Dankeschön
Angehängte Dateien:
#1291871
Lesenswert?

Johannes Hofmann schrieb:
> hallo
>
> Ich habe einen fertigen Code für einen MP3-Player und würde gern wissen,
> was hinter diesem Funktionsaufruf steckt.
>
>
1
fopenc(ps.file_index,'r', "*       MP3", &fp);
>

Es wird diese Funktion aus fat.c aufgerufen
1
// only the 'r' mode is supported so far
2
bool fopenc(u08 count, u08 mode, u08 *mask, FILE *stream){
3
  if(mode=='r'){
4
    u08 ret;
5
    ret = fio_dir_ctl(FIO_FILENUM, stream, NULL, mask, count);
6
    stream->file_offset = 0;
7
    /*
8
    USART_sendhex(stream->file_current_sectorh>>8);
9
    USART_sendhex(stream->file_current_sectorh);
10
    USART_sendhex(stream->file_current_sectorl>>8);
11
    USART_sendhex(stream->file_current_sectorl);
12
    */
13
    return ret;
14
  };
15
  return false;
16
};

so gut wie alle Parameter werden an fio_dir_ctl weitergereicht.
Wenn du also wissen willst, wies weitergeht, dann suchst du dir diese 
Funktion und siehst nach, was damit gemacht wird.
OP #1291897
Lesenswert?

Hab ich ja schon gemacht und dort wird das "*      MP3" an die Funktion 
fio_cmp_names weitergeleitet.
Doch ich versteh nicht, was dort damit geschieht, und wieso der Autor 
der Funktion diese Maske übergibt. Auch würde ich gern wissen, ob dort 
nur Dateinamen mit 8 Zeichen berücksichtigt werden und was ich tun 
müsste, damit auch Mp3s mit vielen Zeichen im Dateinamen geöffnet werden 
können.

Danke
#1292006
Lesenswert?

Johannes Hofmann schrieb:
> Hab ich ja schon gemacht und dort wird das "*      MP3" an die Funktion
> fio_cmp_names weitergeleitet.
> Doch ich versteh nicht, was dort damit geschieht, und wieso der Autor
> der Funktion diese Maske übergibt.

Welchen Teil des Funktionskommentares ...
1
// compares a 11 byte block from the fat table with a 8 byte name and 3 byte extension. 
2
// '*' is supported as a wildcard

... verstehst du nicht?

OK. Die Vergleichsfunktion ist ein bischen sehr einfach gestrickt und 
auch die Wildcardbehandlung ist ein wenig sehr simpel und stark 
vereinfachend aber im Grunde ist die Funktion simpel.

> Auch würde ich gern wissen, ob dort
> nur Dateinamen mit 8 Zeichen berücksichtigt werden und was ich tun
> müsste, damit auch Mp3s mit vielen Zeichen im Dateinamen geöffnet werden
> können.

Ähm. Das Dateisystem ist FAT. Da gibt es nur 8+3
Gast #1292025
Lesenswert?

> Ähm. Das Dateisystem ist FAT. Da gibt es nur 8+3
Stimmt eigendlich schon, wenn du aber unter windows ein laufwerk mit FAT 
bespielst, kannst du da auch lange dateinamen draufpacken
Da wird ein wenig getrickst und mehrere Verzeichniseinträge für eine 
Datei erzeugt.
Die Tricks muss das auslesende Gerät natürlich kennen.
OP #1292252
Lesenswert?

Achso, ich dachte immer FAT und FAT32 sind grob dassselbe. Aber die 
Länge der möglichen Dateinahmen ist natürlich schon was Diffizileres.

Kennt ihr da evtl. ne fertig implementierte Routine für ne SD-Karte?
Ich werd auch gleich mal bei Google schauen, aber da Google auch nicht 
alles auf den ersten 5 Seiten präsentiert, frag ich hier gleich mal mit.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren