精简项目
删除了不需要的文件,并整理了文件夹
This commit is contained in:
406
PORTING/FATFS/exfuns/exfuns.c
Normal file
406
PORTING/FATFS/exfuns/exfuns.c
Normal file
@@ -0,0 +1,406 @@
|
||||
#include "string.h"
|
||||
#include "exfuns.h"
|
||||
#include "malloc.h"
|
||||
#include "usart.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
||||
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//FATFS <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/1/7
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.1
|
||||
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
||||
//All rights reserved
|
||||
//********************************************************************************
|
||||
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
//V1.1
|
||||
//<2F><><EFBFBD><EFBFBD>exf_copy<70><79><EFBFBD><EFBFBD>,<2C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#define FILE_MAX_TYPE_NUM 7 //<2F><><EFBFBD><EFBFBD>FILE_MAX_TYPE_NUM<55><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define FILE_MAX_SUBT_NUM 4 //<2F><><EFBFBD><EFBFBD>FILE_MAX_SUBT_NUM<55><4D>С<EFBFBD><D0A1>
|
||||
|
||||
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
u8*const FILE_TYPE_TBL[FILE_MAX_TYPE_NUM][FILE_MAX_SUBT_NUM]=
|
||||
{
|
||||
{"BIN"}, //BIN<49>ļ<EFBFBD>
|
||||
{"LRC"}, //LRC<52>ļ<EFBFBD>
|
||||
{"NES","SMS"}, //NES/SMS<4D>ļ<EFBFBD>
|
||||
{"TXT","C","H"}, //<2F>ı<EFBFBD><C4B1>ļ<EFBFBD>
|
||||
{"WAV","MP3","APE","FLAC"},//֧<>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
{"BMP","JPG","JPEG","GIF"},//ͼƬ<CDBC>ļ<EFBFBD>
|
||||
{"AVI"}, //<2F><>Ƶ<EFBFBD>ļ<EFBFBD>
|
||||
};
|
||||
///////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>,ʹ<><CAB9>malloc<6F><63>ʱ<EFBFBD><CAB1>////////////////////////////////////////////
|
||||
FATFS *fs[_VOLUMES];//<2F><EFBFBD><DFBC><EFBFBD><EFBFBD>̹<EFBFBD><CCB9><EFBFBD><EFBFBD><EFBFBD>.
|
||||
FIL *file; //<2F>ļ<EFBFBD>1
|
||||
FIL *ftemp; //<2F>ļ<EFBFBD>2.
|
||||
UINT br,bw; //<2F><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
FILINFO fileinfo; //<2F>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
||||
DIR dir; //Ŀ¼
|
||||
|
||||
u8 *fatbuf; //SD<53><44><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
//Ϊexfuns<6E><73><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ɹ<EFBFBD>
|
||||
//1,ʧ<><CAA7>
|
||||
u8 exfuns_init(void)
|
||||
{
|
||||
u8 i;
|
||||
for(i=0;i<_VOLUMES;i++)
|
||||
{
|
||||
fs[i]=(FATFS*)mymalloc(SRAMEX,sizeof(FATFS)); //Ϊ<><CEAA><EFBFBD><EFBFBD>i<EFBFBD><69><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if(!fs[i])break;
|
||||
}
|
||||
file=(FIL*)mymalloc(SRAMEX,sizeof(FIL)); //Ϊfile<6C><65><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
ftemp=(FIL*)mymalloc(SRAMEX,sizeof(FIL)); //Ϊftemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
fatbuf=(u8*)mymalloc(SRAMEX,512); //Ϊfatbuf<75><66><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if(i==_VOLUMES&&file&&ftemp&&fatbuf)return 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʧ<EFBFBD><CAA7>,<2C><>ʧ<EFBFBD><CAA7>.
|
||||
else return 1;
|
||||
}
|
||||
|
||||
//<2F><>Сд<D0A1><D0B4>ĸתΪ<D7AA><CEAA>д<EFBFBD><D0B4>ĸ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C>ֲ<F2B1A3B3><D6B2><EFBFBD>.
|
||||
u8 char_upper(u8 c)
|
||||
{
|
||||
if(c<'A')return c;//<2F><><EFBFBD><EFBFBD>,<2C><><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>.
|
||||
if(c>='a')return c-0x20;//<2F><>Ϊ<EFBFBD><CEAA>д.
|
||||
else return c;//<2F><>д,<2C><><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//fname:<3A>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0XFF,<2C><>ʾ<EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>С<EFBFBD><D0A1>.
|
||||
u8 f_typetell(u8 *fname)
|
||||
{
|
||||
u8 tbuf[5];
|
||||
u8 *attr='\0';//<2F><><EFBFBD><D7BA>
|
||||
u8 i=0,j;
|
||||
while(i<250)
|
||||
{
|
||||
i++;
|
||||
if(*fname=='\0')break;//ƫ<>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
fname++;
|
||||
}
|
||||
if(i==250)return 0XFF;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>.
|
||||
for(i=0;i<5;i++)//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><D7BA>
|
||||
{
|
||||
fname--;
|
||||
if(*fname=='.')
|
||||
{
|
||||
fname++;
|
||||
attr=fname;
|
||||
break;
|
||||
}
|
||||
}
|
||||
strcpy((char *)tbuf,(const char*)attr);//copy
|
||||
for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);//ȫ<><C8AB><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>д
|
||||
for(i=0;i<FILE_MAX_TYPE_NUM;i++) //<2F><><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
|
||||
{
|
||||
for(j=0;j<FILE_MAX_SUBT_NUM;j++)//<2F><><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>
|
||||
{
|
||||
if(*FILE_TYPE_TBL[i][j]==0)break;//<2F><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD>û<EFBFBD>пɶԱȵij<C8B5>Ա<EFBFBD><D4B1>.
|
||||
if(strcmp((const char *)FILE_TYPE_TBL[i][j],(const char *)tbuf)==0)//<2F>ҵ<EFBFBD><D2B5><EFBFBD>
|
||||
{
|
||||
return (i<<4)|j;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0XFF;//û<>ҵ<EFBFBD>
|
||||
}
|
||||
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//drv:<3A><><EFBFBD>̱<EFBFBD><CCB1><EFBFBD>("0:"/"1:")
|
||||
//total:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λKB<4B><42>
|
||||
//free:ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>λKB<4B><42>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C><><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 exf_getfree(u8 *drv,u32 *total,u32 *free)
|
||||
{
|
||||
FATFS *fs1;
|
||||
u8 res;
|
||||
u32 fre_clust=0, fre_sect=0, tot_sect=0;
|
||||
//<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
res =(u32)f_getfree((const TCHAR*)drv, (DWORD*)&fre_clust, &fs1);
|
||||
if(res==0)
|
||||
{
|
||||
tot_sect=(fs1->n_fatent-2)*fs1->csize; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
fre_sect=fre_clust*fs1->csize; //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#if _MAX_SS!=512 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>512<31>ֽ<EFBFBD>,<2C><>ת<EFBFBD><D7AA>Ϊ512<31>ֽ<EFBFBD>
|
||||
tot_sect*=fs1->ssize/512;
|
||||
fre_sect*=fs1->ssize/512;
|
||||
#endif
|
||||
*total=tot_sect>>1; //<2F><>λΪKB
|
||||
*free=fre_sect>>1; //<2F><>λΪKB
|
||||
}
|
||||
return res;
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//ע<><D7A2><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С<EFBFBD><D0A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>4GB.
|
||||
//<2F><>psrc<72>ļ<EFBFBD>,copy<70><79>pdst.
|
||||
//fcpymsg,<2C><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD>ʵ<EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʾ
|
||||
// pname:<3A>ļ<EFBFBD>/<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// pct:<3A>ٷֱ<D9B7>
|
||||
// mode:
|
||||
// [0]:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
// [1]:<3A><><EFBFBD>°ٷֱ<D9B7>pct
|
||||
// [2]:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
// [3~7]:<3A><><EFBFBD><EFBFBD>
|
||||
//psrc,pdst:Դ<>ļ<EFBFBD><C4BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD>
|
||||
//totsize:<3A>ܴ<EFBFBD>С(<28><>totsizeΪ0<CEAA><30>ʱ<EFBFBD><CAB1>,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//cpdsize:<3A>Ѹ<EFBFBD><D1B8><EFBFBD><EFBFBD>˵Ĵ<CBB5>С.
|
||||
//fwmode:<3A>ļ<EFBFBD>д<EFBFBD><D0B4>ģʽ
|
||||
//0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD>
|
||||
//1:<3A><><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C><><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>,0XFF,ǿ<><C7BF><EFBFBD>˳<EFBFBD>
|
||||
u8 exf_copy(u8(*fcpymsg)(u8*pname,u8 pct,u8 mode),u8 *psrc,u8 *pdst,u32 totsize,u32 cpdsize,u8 fwmode)
|
||||
{
|
||||
u8 res;
|
||||
u16 br=0;
|
||||
u16 bw=0;
|
||||
FIL *fsrc=0;
|
||||
FIL *fdst=0;
|
||||
u8 *fbuf=0;
|
||||
u8 curpct=0;
|
||||
unsigned long long lcpdsize=cpdsize;
|
||||
fsrc=(FIL*)mymalloc(SRAMEX,sizeof(FIL));//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
fdst=(FIL*)mymalloc(SRAMEX,sizeof(FIL));
|
||||
fbuf=(u8*)mymalloc(SRAMEX,8192);
|
||||
if(fsrc==NULL||fdst==NULL||fbuf==NULL)res=100;//ǰ<><C7B0><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>fatfs
|
||||
else
|
||||
{
|
||||
if(fwmode==0)fwmode=FA_CREATE_NEW;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
else fwmode=FA_CREATE_ALWAYS; //<2F><><EFBFBD>Ǵ<EFBFBD><C7B4>ڵ<EFBFBD><DAB5>ļ<EFBFBD>
|
||||
|
||||
res=f_open(fsrc,(const TCHAR*)psrc,FA_READ|FA_OPEN_EXISTING); //<2F><><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD>ļ<EFBFBD>
|
||||
if(res==0)res=f_open(fdst,(const TCHAR*)pdst,FA_WRITE|fwmode); //<2F><>һ<EFBFBD><D2BB><EFBFBD>ɹ<F2BFAAB3>,<2C>ſ<EFBFBD>ʼ<EFBFBD>ڶ<F2BFAAB5><DAB6><EFBFBD>
|
||||
if(res==0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<F2BFAAB3><C9B9><EFBFBD>
|
||||
{
|
||||
if(totsize==0)//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
totsize=fsrc->obj.objsize;
|
||||
lcpdsize=0;
|
||||
curpct=0;
|
||||
}else curpct=(lcpdsize*100)/totsize; //<2F>õ<EFBFBD><C3B5>°ٷֱ<D9B7>
|
||||
fcpymsg(psrc,curpct,0X02); //<2F><><EFBFBD>°ٷֱ<D9B7>
|
||||
while(res==0)//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
{
|
||||
res=f_read(fsrc,fbuf,8192,(UINT*)&br); //Դͷ<D4B4><CDB7><EFBFBD><EFBFBD>512<31>ֽ<EFBFBD>
|
||||
if(res||br==0)break;
|
||||
res=f_write(fdst,fbuf,(UINT)br,(UINT*)&bw); //д<><D0B4>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD>
|
||||
lcpdsize+=bw;
|
||||
if(curpct!=(lcpdsize*100)/totsize)//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>°ٷֱ<D9B7>
|
||||
{
|
||||
curpct=(lcpdsize*100)/totsize;
|
||||
if(fcpymsg(psrc,curpct,0X02))//<2F><><EFBFBD>°ٷֱ<D9B7>
|
||||
{
|
||||
res=0XFF;//ǿ<><C7BF><EFBFBD>˳<EFBFBD>
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(res||bw<br)break;
|
||||
}
|
||||
f_close(fsrc);
|
||||
f_close(fdst);
|
||||
}
|
||||
}
|
||||
myfree(SRAMEX,fsrc);//<2F>ͷ<EFBFBD><CDB7>ڴ<EFBFBD>
|
||||
myfree(SRAMEX,fdst);
|
||||
myfree(SRAMEX,fbuf);
|
||||
return res;
|
||||
}
|
||||
|
||||
//<2F>õ<EFBFBD>·<EFBFBD><C2B7><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,·<><C2B7><EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><C7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD>,<2C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
u8* exf_get_src_dname(u8* dpfn)
|
||||
{
|
||||
u16 temp=0;
|
||||
while(*dpfn!=0)
|
||||
{
|
||||
dpfn++;
|
||||
temp++;
|
||||
}
|
||||
if(temp<4)return 0;
|
||||
while((*dpfn!=0x5c)&&(*dpfn!=0x2f))dpfn--; //<><D7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>"\"<22><><EFBFBD><EFBFBD>"/"<22><>
|
||||
return ++dpfn;
|
||||
}
|
||||
//<2F>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC>д<EFBFBD>С
|
||||
//ע<><D7A2><EFBFBD>ļ<EFBFBD><C4BC>д<EFBFBD>С<EFBFBD><D0A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>4GB.
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ļ<EFBFBD><C4BC>д<EFBFBD>СΪ0,<2C><><EFBFBD>߶<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD>.
|
||||
// <20><><EFBFBD><EFBFBD>,<2C>ļ<EFBFBD><C4BC>д<EFBFBD>С.
|
||||
u32 exf_fdsize(u8 *fdname)
|
||||
{
|
||||
#define MAX_PATHNAME_DEPTH 512+1 //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 res=0;
|
||||
DIR *fddir=0; //Ŀ¼
|
||||
FILINFO *finfo=0; //<2F>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
||||
u8 * pathname=0; //Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
u16 pathlen=0; //Ŀ<><C4BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u32 fdsize=0;
|
||||
|
||||
fddir=(DIR*)mymalloc(SRAMEX,sizeof(DIR));//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
finfo=(FILINFO*)mymalloc(SRAMEX,sizeof(FILINFO));
|
||||
if(fddir==NULL||finfo==NULL)res=100;
|
||||
if(res==0)
|
||||
{
|
||||
pathname=mymalloc(SRAMEX,MAX_PATHNAME_DEPTH);
|
||||
if(pathname==NULL)res=101;
|
||||
if(res==0)
|
||||
{
|
||||
pathname[0]=0;
|
||||
strcat((char*)pathname,(const char*)fdname); //<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
|
||||
res=f_opendir(fddir,(const TCHAR*)fdname); //<2F><><EFBFBD><EFBFBD>ԴĿ¼
|
||||
if(res==0)//<2F><><EFBFBD><EFBFBD>Ŀ¼<C4BF>ɹ<EFBFBD>
|
||||
{
|
||||
while(res==0)//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
||||
{
|
||||
res=f_readdir(fddir,finfo); //<2F><>ȡĿ¼<C4BF>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
|
||||
if(res!=FR_OK||finfo->fname[0]==0)break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ĩβ<C4A9><CEB2>,<2C>˳<EFBFBD>
|
||||
if(finfo->fname[0]=='.')continue; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>Ŀ¼
|
||||
if(finfo->fattrib&0X10)//<2F><><EFBFBD><EFBFBD>Ŀ¼(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,0X20,<2C>鵵<EFBFBD>ļ<EFBFBD>;0X10,<2C><>Ŀ¼;)
|
||||
{
|
||||
pathlen=strlen((const char*)pathname); //<2F>õ<EFBFBD><C3B5><EFBFBD>ǰ·<C7B0><C2B7><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
strcat((char*)pathname,(const char*)"/"); //<2F><>б<EFBFBD><D0B1>
|
||||
strcat((char*)pathname,(const char*)finfo->fname); //Դ·<D4B4><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||
//printf("\r\nsub folder:%s\r\n",pathname); //<2F><>ӡ<EFBFBD><D3A1>Ŀ¼<C4BF><C2BC>
|
||||
fdsize+=exf_fdsize(pathname); //<2F>õ<EFBFBD><C3B5><EFBFBD>Ŀ¼<C4BF><C2BC>С,<2C>ݹ<EFBFBD><DDB9><EFBFBD><EFBFBD><EFBFBD>
|
||||
pathname[pathlen]=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}else fdsize+=finfo->fsize; //<2F><>Ŀ¼,ֱ<>Ӽ<EFBFBD><D3BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD>С
|
||||
|
||||
}
|
||||
}
|
||||
myfree(SRAMEX,pathname);
|
||||
}
|
||||
}
|
||||
myfree(SRAMEX,fddir);
|
||||
myfree(SRAMEX,finfo);
|
||||
if(res)return 0;
|
||||
else return fdsize;
|
||||
}
|
||||
//<2F>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
//ע<><D7A2><EFBFBD>ļ<EFBFBD><C4BC>д<EFBFBD>С<EFBFBD><D0A1>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>4GB.
|
||||
//<2F><>psrc<72>ļ<EFBFBD><C4BC><EFBFBD>,copy<70><79>pdst<73>ļ<EFBFBD><C4BC><EFBFBD>.
|
||||
//pdst:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"X:"/"X:XX"/"X:XX/XX"֮<><D6AE><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD>Ҫʵ<D2AA><CAB5>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC>д<EFBFBD><D0B4><EFBFBD>
|
||||
//fcpymsg,<2C><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,<2C><><EFBFBD><EFBFBD>ʵ<EFBFBD>ֿ<EFBFBD><D6BF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ʾ
|
||||
// pname:<3A>ļ<EFBFBD>/<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// pct:<3A>ٷֱ<D9B7>
|
||||
// mode:
|
||||
// [0]:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
// [1]:<3A><><EFBFBD>°ٷֱ<D9B7>pct
|
||||
// [2]:<3A><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
// [3~7]:<3A><><EFBFBD><EFBFBD>
|
||||
//psrc,pdst:Դ<>ļ<EFBFBD><C4BC>к<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//totsize:<3A>ܴ<EFBFBD>С(<28><>totsizeΪ0<CEAA><30>ʱ<EFBFBD><CAB1>,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//cpdsize:<3A>Ѹ<EFBFBD><D1B8><EFBFBD><EFBFBD>˵Ĵ<CBB5>С.
|
||||
//fwmode:<3A>ļ<EFBFBD>д<EFBFBD><D0B4>ģʽ
|
||||
//0:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD>
|
||||
//1:<3A><><EFBFBD><EFBFBD>ԭ<EFBFBD>е<EFBFBD><D0B5>ļ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:0,<2C>ɹ<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;0XFF,ǿ<><C7BF><EFBFBD>˳<EFBFBD>
|
||||
u8 exf_fdcopy(u8(*fcpymsg)(u8*pname,u8 pct,u8 mode),u8 *psrc,u8 *pdst,u32 *totsize,u32 *cpdsize,u8 fwmode)
|
||||
{
|
||||
#define MAX_PATHNAME_DEPTH 512+1 //<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 res=0;
|
||||
DIR *srcdir=0; //ԴĿ¼
|
||||
DIR *dstdir=0; //ԴĿ¼
|
||||
FILINFO *finfo=0; //<2F>ļ<EFBFBD><C4BC><EFBFBD>Ϣ
|
||||
u8 *fn=0; //<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
|
||||
u8 * dstpathname=0; //Ŀ<><C4BF><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
u8 * srcpathname=0; //Դ<>ļ<EFBFBD><C4BC><EFBFBD>·<EFBFBD><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
|
||||
u16 dstpathlen=0; //Ŀ<><C4BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u16 srcpathlen=0; //Դ·<D4B4><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
srcdir=(DIR*)mymalloc(SRAMEX,sizeof(DIR));//<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
dstdir=(DIR*)mymalloc(SRAMEX,sizeof(DIR));
|
||||
finfo=(FILINFO*)mymalloc(SRAMEX,sizeof(FILINFO));
|
||||
|
||||
if(srcdir==NULL||dstdir==NULL||finfo==NULL)res=100;
|
||||
if(res==0)
|
||||
{
|
||||
dstpathname=mymalloc(SRAMEX,MAX_PATHNAME_DEPTH);
|
||||
srcpathname=mymalloc(SRAMEX,MAX_PATHNAME_DEPTH);
|
||||
if(dstpathname==NULL||srcpathname==NULL)res=101;
|
||||
if(res==0)
|
||||
{
|
||||
dstpathname[0]=0;
|
||||
srcpathname[0]=0;
|
||||
strcat((char*)srcpathname,(const char*)psrc); //<2F><><EFBFBD><EFBFBD>ԭʼԴ<CABC>ļ<EFBFBD>·<EFBFBD><C2B7>
|
||||
strcat((char*)dstpathname,(const char*)pdst); //<2F><><EFBFBD><EFBFBD>ԭʼĿ<CABC><C4BF><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
||||
res=f_opendir(srcdir,(const TCHAR*)psrc); //<2F><><EFBFBD><EFBFBD>ԴĿ¼
|
||||
if(res==0)//<2F><><EFBFBD><EFBFBD>Ŀ¼<C4BF>ɹ<EFBFBD>
|
||||
{
|
||||
strcat((char*)dstpathname,(const char*)"/");//<2F><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
|
||||
fn=exf_get_src_dname(psrc);
|
||||
if(fn==0)//<2F><><EFBFBD>꿽<EFBFBD><EABFBD>
|
||||
{
|
||||
dstpathlen=strlen((const char*)dstpathname);
|
||||
dstpathname[dstpathlen]=psrc[0]; //<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
||||
dstpathname[dstpathlen+1]=0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}else strcat((char*)dstpathname,(const char*)fn);//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
fcpymsg(fn,0,0X04);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
res=f_mkdir((const TCHAR*)dstpathname);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>,<2C>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھʹ<DABE><CDB4><EFBFBD><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD><C4BC><EFBFBD>.
|
||||
if(res==FR_EXIST)res=0;
|
||||
while(res==0)//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD>
|
||||
{
|
||||
res=f_readdir(srcdir,finfo); //<2F><>ȡĿ¼<C4BF>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
|
||||
if(res!=FR_OK||finfo->fname[0]==0)break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ĩβ<C4A9><CEB2>,<2C>˳<EFBFBD>
|
||||
if(finfo->fname[0]=='.')continue; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>Ŀ¼
|
||||
fn=(u8*)finfo->fname; //<2F>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
dstpathlen=strlen((const char*)dstpathname); //<2F>õ<EFBFBD><C3B5><EFBFBD>ǰĿ<C7B0><C4BF>·<EFBFBD><C2B7><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
srcpathlen=strlen((const char*)srcpathname); //<2F>õ<EFBFBD>Դ·<D4B4><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
strcat((char*)srcpathname,(const char*)"/");//Դ·<D4B4><C2B7><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
|
||||
if(finfo->fattrib&0X10)//<2F><><EFBFBD><EFBFBD>Ŀ¼(<28>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>,0X20,<2C>鵵<EFBFBD>ļ<EFBFBD>;0X10,<2C><>Ŀ¼;)
|
||||
{
|
||||
strcat((char*)srcpathname,(const char*)fn); //Դ·<D4B4><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>
|
||||
res=exf_fdcopy(fcpymsg,srcpathname,dstpathname,totsize,cpdsize,fwmode); //<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
}else //<2F><>Ŀ¼
|
||||
{
|
||||
strcat((char*)dstpathname,(const char*)"/");//Ŀ<><C4BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
|
||||
strcat((char*)dstpathname,(const char*)fn); //Ŀ<><C4BF>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
strcat((char*)srcpathname,(const char*)fn); //Դ·<D4B4><C2B7><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
fcpymsg(fn,0,0X01);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
res=exf_copy(fcpymsg,srcpathname,dstpathname,*totsize,*cpdsize,fwmode);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
*cpdsize+=finfo->fsize;//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С
|
||||
}
|
||||
srcpathname[srcpathlen]=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
dstpathname[dstpathlen]=0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
myfree(SRAMEX,dstpathname);
|
||||
myfree(SRAMEX,srcpathname);
|
||||
}
|
||||
}
|
||||
myfree(SRAMEX,srcdir);
|
||||
myfree(SRAMEX,dstdir);
|
||||
myfree(SRAMEX,finfo);
|
||||
return res;
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
66
PORTING/FATFS/exfuns/exfuns.h
Normal file
66
PORTING/FATFS/exfuns/exfuns.h
Normal file
@@ -0,0 +1,66 @@
|
||||
#ifndef __EXFUNS_H
|
||||
#define __EXFUNS_H
|
||||
#include <sys.h>
|
||||
#include "ff.h"
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
||||
//ALIENTEK STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//FATFS <20><>չ<EFBFBD><D5B9><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:2016/1/7
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.1
|
||||
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
||||
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2014-2024
|
||||
//All rights reserved
|
||||
//********************************************************************************
|
||||
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>
|
||||
//V1.1
|
||||
//<2F><><EFBFBD><EFBFBD>exf_copy<70><79><EFBFBD><EFBFBD>,<2C>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
extern FATFS *fs[_VOLUMES];
|
||||
extern FIL *file;
|
||||
extern FIL *ftemp;
|
||||
extern UINT br,bw;
|
||||
extern FILINFO fileinfo;
|
||||
extern DIR dir;
|
||||
extern u8 *fatbuf;//SD<53><44><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
|
||||
//f_typetell<6C><6C><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>
|
||||
//<2F><><EFBFBD>ݱ<EFBFBD>FILE_TYPE_TBL<42><4C><EFBFBD><EFBFBD>.<2E><>exfuns.c<><63><EFBFBD>涨<EFBFBD><E6B6A8>
|
||||
#define T_BIN 0X00 //bin<69>ļ<EFBFBD>
|
||||
#define T_LRC 0X10 //lrc<72>ļ<EFBFBD>
|
||||
|
||||
#define T_NES 0X20 //nes<65>ļ<EFBFBD>
|
||||
#define T_SMS 0X21 //sms<6D>ļ<EFBFBD>
|
||||
|
||||
#define T_TEXT 0X30 //.txt<78>ļ<EFBFBD>
|
||||
#define T_C 0X31 //.c<>ļ<EFBFBD>
|
||||
#define T_H 0X32 //.h<>ļ<EFBFBD>
|
||||
|
||||
#define T_WAV 0X40 //WAV<41>ļ<EFBFBD>
|
||||
#define T_MP3 0X41 //MP3<50>ļ<EFBFBD>
|
||||
#define T_APE 0X42 //APE<50>ļ<EFBFBD>
|
||||
#define T_FLAC 0X43 //FLAC<41>ļ<EFBFBD>
|
||||
|
||||
#define T_BMP 0X50 //bmp<6D>ļ<EFBFBD>
|
||||
#define T_JPG 0X51 //jpg<70>ļ<EFBFBD>
|
||||
#define T_JPEG 0X52 //jpeg<65>ļ<EFBFBD>
|
||||
#define T_GIF 0X53 //gif<69>ļ<EFBFBD>
|
||||
|
||||
#define T_AVI 0X60 //avi<76>ļ<EFBFBD>
|
||||
|
||||
|
||||
u8 exfuns_init(void); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
u8 f_typetell(u8 *fname); //ʶ<><CAB6><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 exf_getfree(u8 *drv,u32 *total,u32 *free); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u32 exf_fdsize(u8 *fdname); //<2F>õ<EFBFBD><C3B5>ļ<EFBFBD><C4BC>д<EFBFBD>С
|
||||
u8* exf_get_src_dname(u8* dpfn);
|
||||
u8 exf_copy(u8(*fcpymsg)(u8*pname,u8 pct,u8 mode),u8 *psrc,u8 *pdst,u32 totsize,u32 cpdsize,u8 fwmode); //<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 exf_fdcopy(u8(*fcpymsg)(u8*pname,u8 pct,u8 mode),u8 *psrc,u8 *pdst,u32 *totsize,u32 *cpdsize,u8 fwmode);//<2F>ļ<EFBFBD><C4BC>и<EFBFBD><D0B8><EFBFBD>
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user