20260324
This commit is contained in:
147
RTX5_20220316/Driver/FATFS/exfuns/exfuns.c
Normal file
147
RTX5_20220316/Driver/FATFS/exfuns/exfuns.c
Normal file
@ -0,0 +1,147 @@
|
||||
#include "string.h"
|
||||
#include "exfuns.h"
|
||||
#include "fattester.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ս<4B><D5BD>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><DEB8><EFBFBD><EFBFBD><EFBFBD>:2012/9/18
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
||||
//<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>˾ 2009-2019
|
||||
//All rights reserved
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//<2F>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
|
||||
const u8 *FILE_TYPE_TBL[6][13]=
|
||||
{
|
||||
{"BIN"}, //BIN<49>ļ<EFBFBD>
|
||||
{"LRC"}, //LRC<52>ļ<EFBFBD>
|
||||
{"NES"}, //NES<45>ļ<EFBFBD>
|
||||
{"TXT","C","H"}, //<2F>ı<EFBFBD><C4B1>ļ<EFBFBD>
|
||||
{"MP1","MP2","MP3","MP4","M4A","3GP","3G2","OGG","ACC","WMA","WAV","MID","FLAC"},//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
{"BMP","JPG","JPEG","GIF"},//ͼƬ<CDBC>ļ<EFBFBD>
|
||||
};
|
||||
///////////////////////////////<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>,ʹ<><CAB9>malloc<6F><63>ʱ<EFBFBD><CAB1>////////////////////////////////////////////
|
||||
FATFS *fs[2]; //<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)
|
||||
{
|
||||
fs[0]=(FATFS*)mymalloc(SRAMIN,sizeof(FATFS)); //Ϊ<><CEAA><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
fs[1]=(FATFS*)mymalloc(SRAMIN,sizeof(FATFS)); //Ϊ<><CEAA><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
file=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); //Ϊfile<6C><65><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
ftemp=(FIL*)mymalloc(SRAMIN,sizeof(FIL)); //Ϊftemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
fatbuf=(u8*)mymalloc(SRAMIN,512); //Ϊfatbuf<75><66><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if(fs[0]&&fs[1]&&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<6;i++)
|
||||
{
|
||||
for(j=0;j<13;j++)
|
||||
{
|
||||
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;
|
||||
DWORD 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 = f_getfree((const TCHAR*)drv, &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;
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
42
RTX5_20220316/Driver/FATFS/exfuns/exfuns.h
Normal file
42
RTX5_20220316/Driver/FATFS/exfuns/exfuns.h
Normal file
@ -0,0 +1,42 @@
|
||||
#ifndef __EXFUNS_H
|
||||
#define __EXFUNS_H
|
||||
//#include "sys.h"
|
||||
#include "ff.h"
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
extern FATFS *fs[2];
|
||||
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_TEXT 0X30 //.txt<78>ļ<EFBFBD>
|
||||
#define T_C 0X31 //.c<>ļ<EFBFBD>
|
||||
#define T_H 0X32 //.h<>ļ<EFBFBD>
|
||||
#define T_FLAC 0X4C //flac<61>ļ<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>
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
308
RTX5_20220316/Driver/FATFS/exfuns/fattester.c
Normal file
308
RTX5_20220316/Driver/FATFS/exfuns/fattester.c
Normal file
@ -0,0 +1,308 @@
|
||||
#include "fattester.h"
|
||||
#include "mmc_sd.h"
|
||||
#include "usmart.h"
|
||||
#include "usart.h"
|
||||
#include "exfuns.h"
|
||||
#include "malloc.h"
|
||||
#include "ff.h"
|
||||
#include "string.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ս<4B><D5BD>STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//FATFS <20><><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
||||
//<2F><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:2012/9/18
|
||||
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
||||
//<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>˾ 2009-2019
|
||||
//All rights reserved
|
||||
//////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//Ϊ<><CEAA><EFBFBD><EFBFBD>ע<EFBFBD>Ṥ<EFBFBD><E1B9A4><EFBFBD><EFBFBD>
|
||||
//drv:<3A>̷<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_mount(u8 drv)
|
||||
{
|
||||
return f_mount(drv,fs[drv]);
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD>µ<EFBFBD><C2B5>ļ<EFBFBD>
|
||||
//path:·<><C2B7>+<2B>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//mode:<3A><><EFBFBD><EFBFBD>ģʽ
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_open(u8*path,u8 mode)
|
||||
{
|
||||
u8 res;
|
||||
res=f_open(file,(const TCHAR*)path,mode);//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
return res;
|
||||
}
|
||||
//<2F>ر<EFBFBD><D8B1>ļ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_close(void)
|
||||
{
|
||||
f_close(file);
|
||||
return 0;
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//len:<3A><><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_read(u16 len)
|
||||
{
|
||||
u16 i,t;
|
||||
u8 res=0;
|
||||
u16 tlen=0;
|
||||
printf("\r\nRead file data is:\r\n");
|
||||
for(i=0;i<len/512;i++)
|
||||
{
|
||||
res=f_read(file,fatbuf,512,&br);
|
||||
if(res)
|
||||
{
|
||||
printf("Read Error:%d\r\n",res);
|
||||
break;
|
||||
}else
|
||||
{
|
||||
tlen+=br;
|
||||
for(t=0;t<br;t++)printf("%c",fatbuf[t]);
|
||||
}
|
||||
}
|
||||
if(len%512)
|
||||
{
|
||||
res=f_read(file,fatbuf,len%512,&br);
|
||||
if(res) //<2F><><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
printf("\r\nRead Error:%d\r\n",res);
|
||||
}else
|
||||
{
|
||||
tlen+=br;
|
||||
for(t=0;t<br;t++)printf("%c",fatbuf[t]);
|
||||
}
|
||||
}
|
||||
if(tlen)printf("\r\nReaded data len:%d\r\n",tlen);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
printf("Read data over\r\n");
|
||||
return res;
|
||||
}
|
||||
//д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//dat:<3A><><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
//len:д<>볤<EFBFBD><EBB3A4>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_write(u8*dat,u16 len)
|
||||
{
|
||||
u8 res;
|
||||
|
||||
printf("\r\nBegin Write file...\r\n");
|
||||
printf("Write data len:%d\r\n",len);
|
||||
res=f_write(file,dat,len,&bw);
|
||||
if(res)
|
||||
{
|
||||
printf("Write Error:%d\r\n",res);
|
||||
}else printf("Writed data len:%d\r\n",bw);
|
||||
printf("Write data over.\r\n");
|
||||
return res;
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//path:·<><C2B7>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_opendir(u8* path)
|
||||
{
|
||||
return f_opendir(&dir,(const TCHAR*)path);
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_readdir(void)
|
||||
{
|
||||
u8 res;
|
||||
char *fn;
|
||||
#if _USE_LFN
|
||||
fileinfo.lfsize = _MAX_LFN * 2 + 1;
|
||||
fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);
|
||||
#endif
|
||||
res=f_readdir(&dir,&fileinfo);//<2F><>ȡһ<C8A1><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||||
if(res!=FR_OK||fileinfo.fname[0]==0)
|
||||
{
|
||||
myfree(SRAMIN,fileinfo.lfname);
|
||||
return res;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
||||
}
|
||||
#if _USE_LFN
|
||||
fn=*fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
|
||||
#else
|
||||
fn=fileinfo.fname;;
|
||||
#endif
|
||||
printf("\r\n DIR info:\r\n");
|
||||
|
||||
printf("dir.id:%d\r\n",dir.id);
|
||||
printf("dir.index:%d\r\n",dir.index);
|
||||
printf("dir.sclust:%d\r\n",dir.sclust);
|
||||
printf("dir.clust:%d\r\n",dir.clust);
|
||||
printf("dir.sect:%d\r\n",dir.sect);
|
||||
|
||||
printf("\r\n");
|
||||
printf("File Name is:%s\r\n",fn);
|
||||
printf("File Size is:%d\r\n",fileinfo.fsize);
|
||||
printf("File data is:%d\r\n",fileinfo.fdate);
|
||||
printf("File time is:%d\r\n",fileinfo.ftime);
|
||||
printf("File Attr is:%d\r\n",fileinfo.fattrib);
|
||||
printf("\r\n");
|
||||
myfree(SRAMIN,fileinfo.lfname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
//path:·<><C2B7>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_scan_files(u8 * path)
|
||||
{
|
||||
FRESULT res;
|
||||
char *fn; /* This function is assuming non-Unicode cfg. */
|
||||
#if _USE_LFN
|
||||
fileinfo.lfsize = _MAX_LFN * 2 + 1;
|
||||
fileinfo.lfname = mymalloc(SRAMIN,fileinfo.lfsize);
|
||||
#endif
|
||||
|
||||
res = f_opendir(&dir,(const TCHAR*)path); //<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>Ŀ¼
|
||||
if (res == FR_OK)
|
||||
{
|
||||
printf("\r\n");
|
||||
while(1)
|
||||
{
|
||||
res = f_readdir(&dir, &fileinfo); //<2F><>ȡĿ¼<C4BF>µ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD>
|
||||
if (res != FR_OK || fileinfo.fname[0] == 0) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ĩβ<C4A9><CEB2>,<2C>˳<EFBFBD>
|
||||
//if (fileinfo.fname[0] == '.') continue; //<2F><><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>Ŀ¼
|
||||
#if _USE_LFN
|
||||
fn = *fileinfo.lfname ? fileinfo.lfname : fileinfo.fname;
|
||||
#else
|
||||
fn = fileinfo.fname;
|
||||
#endif /* It is a file. */
|
||||
printf("%s/", path);//<2F><>ӡ·<D3A1><C2B7>
|
||||
printf("%s\r\n", fn);//<2F><>ӡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
||||
}
|
||||
}
|
||||
myfree(SRAMIN,fileinfo.lfname);
|
||||
return res;
|
||||
}
|
||||
//<2F><>ʾʣ<CABE><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//drv:<3A>̷<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28>ֽ<EFBFBD>)
|
||||
u32 mf_showfree(u8 *drv)
|
||||
{
|
||||
FATFS *fs1;
|
||||
u8 res;
|
||||
DWORD 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 = f_getfree((const TCHAR*)drv, &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
|
||||
tot_sect*=fs1->ssize/512;
|
||||
fre_sect*=fs1->ssize/512;
|
||||
#endif
|
||||
if(tot_sect<20480)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1>10M
|
||||
{
|
||||
/* Print free space in unit of KB (assuming 512 bytes/sector) */
|
||||
printf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d KB\r\n"
|
||||
"<EFBFBD><EFBFBD><EFBFBD>ÿռ<EFBFBD>:%d KB\r\n",
|
||||
tot_sect>>1,fre_sect>>1);
|
||||
}else
|
||||
{
|
||||
/* Print free space in unit of KB (assuming 512 bytes/sector) */
|
||||
printf("\r\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%d MB\r\n"
|
||||
"<EFBFBD><EFBFBD><EFBFBD>ÿռ<EFBFBD>:%d MB\r\n",
|
||||
tot_sect>>11,fre_sect>>11);
|
||||
}
|
||||
}
|
||||
return fre_sect;
|
||||
}
|
||||
//<2F>ļ<EFBFBD><C4BC><EFBFBD>дָ<D0B4><D6B8>ƫ<EFBFBD><C6AB>
|
||||
//offset:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>.
|
||||
u8 mf_lseek(u32 offset)
|
||||
{
|
||||
return f_lseek(file,offset);
|
||||
}
|
||||
//<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ǰ<EFBFBD><C7B0>дָ<D0B4><D6B8><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>.
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:λ<><CEBB>
|
||||
u32 mf_tell(void)
|
||||
{
|
||||
return f_tell(file);
|
||||
}
|
||||
//<2F><>ȡ<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>С
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:<3A>ļ<EFBFBD><C4BC><EFBFBD>С
|
||||
u32 mf_size(void)
|
||||
{
|
||||
return f_size(file);
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD>Ŀ¼
|
||||
//pname:Ŀ¼·<C2BC><C2B7>+<2B><><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_mkdir(u8*pname)
|
||||
{
|
||||
return f_mkdir((const TCHAR *)pname);
|
||||
}
|
||||
//<2F><>ʽ<EFBFBD><CABD>
|
||||
//drv:<3A>̷<EFBFBD>
|
||||
//mode:ģʽ
|
||||
//au:<3A>ش<EFBFBD>С
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_fmkfs(u8 drv,u8 mode,u16 au)
|
||||
{
|
||||
return f_mkfs(drv,mode,au);//<2F><>ʽ<EFBFBD><CABD>,drv:<3A>̷<EFBFBD>;mode:ģʽ;au:<3A>ش<EFBFBD>С
|
||||
}
|
||||
//ɾ<><C9BE><EFBFBD>ļ<EFBFBD>/Ŀ¼
|
||||
//pname:<3A>ļ<EFBFBD>/Ŀ¼·<C2BC><C2B7>+<2B><><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_unlink(u8 *pname)
|
||||
{
|
||||
return f_unlink((const TCHAR *)pname);
|
||||
}
|
||||
|
||||
//<2F><EFBFBD><DEB8>ļ<EFBFBD>/Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC>ͬ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>ļ<EFBFBD>Ŷ!)
|
||||
//oldname:֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//newname:<3A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_rename(u8 *oldname,u8* newname)
|
||||
{
|
||||
return f_rename((const TCHAR *)oldname,(const TCHAR *)newname);
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡһ<C8A1><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
//size:Ҫ<><D2AA>ȡ<EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
||||
void mf_gets(u16 size)
|
||||
{
|
||||
TCHAR* rbuf;
|
||||
rbuf=f_gets((TCHAR*)fatbuf,size,file);
|
||||
if(*rbuf==0)return ;//û<><C3BB><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
|
||||
else
|
||||
{
|
||||
printf("\r\nThe String Readed Is:%s\r\n",rbuf);
|
||||
}
|
||||
}
|
||||
//<2F><>Ҫ_USE_STRFUNC>=1
|
||||
//дһ<D0B4><D2BB><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
//c:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:ִ<>н<EFBFBD><D0BD><EFBFBD>
|
||||
u8 mf_putc(u8 c)
|
||||
{
|
||||
return f_putc((TCHAR)c,file);
|
||||
}
|
||||
//д<>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
||||
//c:Ҫд<D2AA><D0B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ֵ:д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 mf_puts(u8*c)
|
||||
{
|
||||
return f_puts((TCHAR*)c,file);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
56
RTX5_20220316/Driver/FATFS/exfuns/fattester.h
Normal file
56
RTX5_20220316/Driver/FATFS/exfuns/fattester.h
Normal file
@ -0,0 +1,56 @@
|
||||
#ifndef __FATTESTER_H
|
||||
#define __FATTESTER_H
|
||||
#include "ff.h"
|
||||
#include "sys.h"
|
||||
|
||||
|
||||
u8 mf_mount(u8 drv);
|
||||
u8 mf_open(u8*path,u8 mode);
|
||||
u8 mf_close(void);
|
||||
u8 mf_read(u16 len);
|
||||
u8 mf_write(u8*dat,u16 len);
|
||||
u8 mf_opendir(u8* path);
|
||||
u8 mf_readdir(void);
|
||||
u8 mf_scan_files(u8 * path);
|
||||
u32 mf_showfree(u8 *drv);
|
||||
u8 mf_lseek(u32 offset);
|
||||
u32 mf_tell(void);
|
||||
u32 mf_size(void);
|
||||
u8 mf_mkdir(u8*pname);
|
||||
u8 mf_fmkfs(u8 drv,u8 mode,u16 au);
|
||||
u8 mf_unlink(u8 *pname);
|
||||
u8 mf_rename(u8 *oldname,u8* newname);
|
||||
void mf_gets(u16 size);
|
||||
u8 mf_putc(u8 c);
|
||||
u8 mf_puts(u8*c);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
62
RTX5_20220316/Driver/FATFS/exfuns/mycc936.c
Normal file
62
RTX5_20220316/Driver/FATFS/exfuns/mycc936.c
Normal file
@ -0,0 +1,62 @@
|
||||
#include "ff.h"
|
||||
#include "fontupd.h"
|
||||
//#include "flash.h"
|
||||
|
||||
WCHAR ff_convert ( /* Converted code, 0 means conversion error */
|
||||
WCHAR src, /* Character code to be converted */
|
||||
UINT dir /* 0: Unicode to OEMCP, 1: OEMCP to Unicode */
|
||||
)
|
||||
{
|
||||
WCHAR t[2];
|
||||
WCHAR c;
|
||||
u32 i, li, hi;
|
||||
u16 n;
|
||||
u32 gbk2uni_offset=0;
|
||||
|
||||
if (src < 0x80)c = src;//ASCII,ֱ<>Ӳ<EFBFBD><D3B2><EFBFBD>ת<EFBFBD><D7AA>.
|
||||
else
|
||||
{
|
||||
if(dir) //GBK 2 UNICODE
|
||||
{
|
||||
gbk2uni_offset=ftinfo.ugbksize/2;
|
||||
}else //UNICODE 2 GBK
|
||||
{
|
||||
gbk2uni_offset=0;
|
||||
}
|
||||
//if(UK_FLAG)//<2F><><EFBFBD><EFBFBD>
|
||||
{
|
||||
/* Unicode to OEMCP */
|
||||
hi=ftinfo.ugbksize/2;//<2F>뿪.
|
||||
hi =hi / 4 - 1;
|
||||
li = 0;
|
||||
for (n = 16; n; n--)
|
||||
{
|
||||
i = li + (hi - li) / 2;
|
||||
SPI_Flash_Read((u8*)&t,ftinfo.ugbkaddr+i*4+gbk2uni_offset,4);//<2F><><EFBFBD><EFBFBD>8<EFBFBD><38><EFBFBD>ֽ<EFBFBD>
|
||||
if (src == t[0]) break;
|
||||
if (src > t[0])li = i;
|
||||
else hi = i;
|
||||
}
|
||||
c = n ? t[1] : 0;
|
||||
}
|
||||
//else c=0;
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
WCHAR ff_wtoupper ( /* Upper converted character */
|
||||
WCHAR chr /* Input character */
|
||||
)
|
||||
{
|
||||
static const WCHAR tbl_lower[] = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A, 0xA1, 0x00A2, 0x00A3, 0x00A5, 0x00AC, 0x00AF, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0x0FF, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x148, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x17E, 0x192, 0x3B1, 0x3B2, 0x3B3, 0x3B4, 0x3B5, 0x3B6, 0x3B7, 0x3B8, 0x3B9, 0x3BA, 0x3BB, 0x3BC, 0x3BD, 0x3BE, 0x3BF, 0x3C0, 0x3C1, 0x3C3, 0x3C4, 0x3C5, 0x3C6, 0x3C7, 0x3C8, 0x3C9, 0x3CA, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437, 0x438, 0x439, 0x43A, 0x43B, 0x43C, 0x43D, 0x43E, 0x43F, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44A, 0x44B, 0x44C, 0x44D, 0x44E, 0x44F, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457, 0x458, 0x459, 0x45A, 0x45B, 0x45C, 0x45E, 0x45F, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x217A, 0x217B, 0x217C, 0x217D, 0x217E, 0x217F, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47, 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F, 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0 };
|
||||
static const WCHAR tbl_upper[] = { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A, 0x21, 0xFFE0, 0xFFE1, 0xFFE5, 0xFFE2, 0xFFE3, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD8, 0xD9, 0xDA, 0xDB, 0xDC, 0xDD, 0xDE, 0x178, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x179, 0x17B, 0x17D, 0x191, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39A, 0x39B, 0x39C, 0x39D, 0x39E, 0x39F, 0x3A0, 0x3A1, 0x3A3, 0x3A4, 0x3A5, 0x3A6, 0x3A7, 0x3A8, 0x3A9, 0x3AA, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417, 0x418, 0x419, 0x41A, 0x41B, 0x41C, 0x41D, 0x41E, 0x41F, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42A, 0x42B, 0x42C, 0x42D, 0x42E, 0x42F, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407, 0x408, 0x409, 0x40A, 0x40B, 0x40C, 0x40E, 0x40F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0x216C, 0x216D, 0x216E, 0x216F, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39, 0xFF3A, 0 };
|
||||
int i;
|
||||
|
||||
|
||||
for (i = 0; tbl_lower[i] && chr != tbl_lower[i]; i++) ;
|
||||
|
||||
return tbl_lower[i] ? tbl_upper[i] : chr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user