📄 mp3_filelist.c
字号:
/*
DM270 ARM Evaluation Software
(c)Texas Instruments 2003
*/
#include <system/armsys270.h>
#include <system/uart270.h>
#include <appl/mp3_play.h>
#include <appl/mp3_filelist.h>
#include <demo/ui.h>
#include <demo/dm270_demo.h>
#include <fileio/fileio.h>
#ifdef MP3_FS_FILE
STATUS MP3_loadFileList(char *devName, char *dirName) {
int curIndex;
STATUS stat;
char name[MAX_FILE_NAME_LEN];
AtaChar unicodeName[MAX_FILE_NAME_LEN];
AtaFile fileInfo, *pCurFile;
pCurFile = &fileInfo;
// name contains drive name, get drive info and switch to root dir
stat = FILE_gotoRootDir( pCurFile, devName );
if(stat!=E_PASS)
return E_DEVICE;
stat = FILE_searchDir( pCurFile, dirName);
if( stat != E_PASS )
return E_DEVICE;
// change to MP3 directory
if( ATA_cd( pCurFile ) != ATA_ERROR_NONE )
return E_DEVICE;
curIndex = -1;
stat = ATA_findFirst( pCurFile );
while( stat == 0 ) {
unicodeToChar(pCurFile->Ext, name);
if( strcmp( name , MP3_EXT ) == 0 ) {
/* copy file name to file list */
curIndex++;
ATA_getLongName(pCurFile, unicodeName, 0, MAX_FILE_NAME_LEN-1);
unicodeToChar(unicodeName, name);
strcpy( Mp3Ctrl.Mp3FileList[curIndex], name );
sprintf( UART_outBuff, "\r\n %d : %s ", curIndex, Mp3Ctrl.Mp3FileList[curIndex]);
UART_sendString( UART0, UART_outBuff );
}
stat = ATA_findNext( pCurFile );
}
if ( curIndex != -1 ) {
Mp3Ctrl.Mp3FileIndex = 0;
Mp3Ctrl.Mp3MaxFileIndex = curIndex;
strcpy( Mp3Ctrl.Mp3DevName, devName );
strcpy( Mp3Ctrl.Mp3DirName, dirName );
return E_PASS;
} else
return E_DEVICE;
}
STATUS MP3_showFileList() {
STATUS stat=E_PASS;
sprintf( UART_outBuff,
"\r\n"
"\r\n"
"\r\n Listing *.MP3 files from path [%s/%s] ... "
"\r\n",
Mp3Ctrl.Mp3DevName, Mp3Ctrl.Mp3DirName
);
UART_sendString( UART0, UART_outBuff );
stat = MP3_loadFileList(Mp3Ctrl.Mp3DevName, Mp3Ctrl.Mp3DirName);
if( stat != E_PASS ) {
sprintf( UART_outBuff,
"\r\n"
"\r\n E_DEVICE !!!"
"\r\n"
"\r\n MP3 files not found."
"\r\n Copy .MP3 files at path [%s/%s] and try again"
"\r\n",
Mp3Ctrl.Mp3DevName, Mp3Ctrl.Mp3DirName
);
} else {
sprintf( UART_outBuff,
"\r\n"
"\r\n Listing Done."
"\r\n"
);
}
UART_sendString( UART0, UART_outBuff );
return stat;
}
STATUS MP3_genFileName( char *fname ) {
if( Mp3Ctrl.Mp3MaxFileIndex == -1 || Mp3Ctrl.Mp3FileIndex == -1)
return E_DEVICE;
if( Mp3Ctrl.Mp3FileIndex > Mp3Ctrl.Mp3MaxFileIndex )
return E_DEVICE;
/* FSC:/MP3/SONG.MP3 */
sprintf( fname, "%s/%s/%s",
Mp3Ctrl.Mp3DevName,
Mp3Ctrl.Mp3DirName,
Mp3Ctrl.Mp3FileList[Mp3Ctrl.Mp3FileIndex]
);
sprintf( UART_outBuff, "\r\n SELECTED MP3 FILE : %s ", fname );
UART_sendString( UART0, UART_outBuff );
return E_PASS;
}
STATUS MP3_firstFile() {
char fname[MAX_FILE_NAME_LEN+20];
if( Mp3Ctrl.Mp3MaxFileIndex == -1 || Mp3Ctrl.Mp3FileIndex == -1) {
sprintf( UART_outBuff, "\r\n E_DEVICE : MP3 files not found in folder [%s/%s]",
Mp3Ctrl.Mp3DevName,
Mp3Ctrl.Mp3DirName
);
UART_sendString( UART0, UART_outBuff );
return E_DEVICE;
}
Mp3Ctrl.Mp3FileIndex =0;
MP3_genFileName( fname );
return E_PASS;
}
STATUS MP3_lastFile() {
char fname[MAX_FILE_NAME_LEN+20];
if( Mp3Ctrl.Mp3MaxFileIndex == -1 || Mp3Ctrl.Mp3FileIndex == -1) {
sprintf( UART_outBuff, "\r\n E_DEVICE : MP3 files not found in folder [%s/%s]",
Mp3Ctrl.Mp3DevName,
Mp3Ctrl.Mp3DirName
);
UART_sendString( UART0, UART_outBuff );
return E_DEVICE;
}
Mp3Ctrl.Mp3FileIndex = Mp3Ctrl.Mp3MaxFileIndex;
MP3_genFileName( fname );
return E_PASS;
}
STATUS MP3_nextFile() {
char fname[MAX_FILE_NAME_LEN+20];
if( Mp3Ctrl.Mp3MaxFileIndex == -1 || Mp3Ctrl.Mp3FileIndex == -1) {
sprintf( UART_outBuff, "\r\n E_DEVICE : MP3 files not found in folder [%s/%s]",
Mp3Ctrl.Mp3DevName,
Mp3Ctrl.Mp3DirName
);
UART_sendString( UART0, UART_outBuff );
return E_DEVICE;
}
Mp3Ctrl.Mp3FileIndex++;
if( Mp3Ctrl.Mp3FileIndex > Mp3Ctrl.Mp3MaxFileIndex )
Mp3Ctrl.Mp3FileIndex = 0;
MP3_genFileName( fname );
return E_PASS;
}
STATUS MP3_prevFile() {
char fname[MAX_FILE_NAME_LEN+20];
if( Mp3Ctrl.Mp3MaxFileIndex == -1 || Mp3Ctrl.Mp3FileIndex == -1) {
sprintf( UART_outBuff, "\r\n E_DEVICE : MP3 files not found in folder [%s/%s]",
Mp3Ctrl.Mp3DevName,
Mp3Ctrl.Mp3DirName
);
UART_sendString( UART0, UART_outBuff );
return E_DEVICE;
}
Mp3Ctrl.Mp3FileIndex--;
if( Mp3Ctrl.Mp3FileIndex < 0 )
Mp3Ctrl.Mp3FileIndex = Mp3Ctrl.Mp3MaxFileIndex;
MP3_genFileName( fname );
return E_PASS;
}
#endif /* MP3_FS_FILE */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -