⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3_filelist.c

📁 dm270 source code
💻 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 + -