📄 fat_top.c
字号:
/*
************************************************************************
Module: fat_top.c
Description: In order to facilitates,file system packet routine
History:
1.0 2006.1.6 Chanjl Create the Module
copyright (C) Wuxi Intech Technology Co, .Ltd., 2005
************************************************************************
*/
#include "fat.h"
#include "fat_h.h"
/*F**************************************************************************
* NAME: fat_save_file_info
*----------------------------------------------------------------------------
* PARAMS: None
* return:
* OK : Success
* KO : Fail
*----------------------------------------------------------------------------
* PURPOSE:
* Save Current Directory information to fat_fsave.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
void fat_save_file_info(byte selMode)
{
#if COMPILE_FILE_SAVE_INFO == TRUE
if(fat_fsave_read_handle)
{
return;
}
if(selMode == SEARCH_FILE)
{
if((fat_global_id & FILE_DIR) != FILE_DIR)
{
fat_fsave[fat_fsave_index].index = fat_dir_list_index;
fat_fsave[fat_fsave_index].file = 1;
}
}
else if(selMode == GOTO_PARENT)
{
if(fat_fsave_index > 0)
{
fat_fsave_index--;
}
}
else if(selMode == GOTO_CHILD)
{
fat_fsave[fat_fsave_index].index = fat_dir_list_index;
fat_fsave[fat_fsave_index].file = 0;
fat_fsave_index++;
}
#else
selMode = selMode;
#endif //COMPILE_FILE_SAVE_INFO
}
#if COMPILE_FILE_SAVE_INFO == TRUE
/*F**************************************************************************
* NAME: fat_search_file
*----------------------------------------------------------------------------
* PARAMS:
* index : index of the search file
* return:
* OK : Success
* KO : Fail
*----------------------------------------------------------------------------
* PURPOSE:
* search file in current directory
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
byte fat_search_file(word index)
{
Byte min;
if ((dir_is_root == FALSE)&&((fat_global_id & FILE_DIR) == FILE_DIR))
min = 2;
else
min = 0;
if(index < min)
return KO;
fat_dir_list_index = index;
fat_scan_dir(FALSE);
fat_save_file_info(SEARCH_FILE);
if (fat_dir_seek(((Uint32)fat_dir_all_count) * DIR_SIZE) == OK)
{ /* go to previous file */
fat_get_dir_entry(&fat_cache.current);/* update current file info */
return OK;
}
else
return KO;
}
/*F**************************************************************************
* NAME: fat_search_save_file
*----------------------------------------------------------------------------
* PARAMS: None
* return:
* OK : Success
* KO : Fail
*----------------------------------------------------------------------------
* PURPOSE:
* Search the appointed file in memory
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
byte fat_search_save_file(void)
{
byte i;
fat_fsave_read_handle = 1;
for(i=0;i<MAX_SUBDIR_DEPTH;i++)
{
if(fat_fsave[i].file == 0)
{//is dir
if(fat_get_dir(FILE_DIR) == KO)
{
fat_fsave_read_handle = 0;
return KO;
}
if(fat_search_file(fat_fsave[i].index) == KO)
{
fat_fsave_read_handle = 0;
return KO;
}
if(fat_goto_subdir() == KO)
{
fat_fsave_read_handle = 0;
return KO;
}
}
else
{
if(fat_get_dir(fat_fsave_type) == KO)
{
fat_fsave_read_handle = 0;
return KO;
}
if(fat_search_file(fat_fsave[i].index) == KO)
{
fat_fsave_read_handle = 0;
return KO;
}
fat_fsave_read_handle = 0;
return OK;
}
}
fat_fsave_read_handle = 0;
return KO;
}
#endif //COMPILE_FILE_SAVE_INFO
INT8U Media_u8ReadOpen(INT32U addr)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_read_open(addr);
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
Media32_OpenAddr = addr;
}
}
INT8U Media_u8ReadSector(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_read_sector(1);
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if (SD_MMC_CARD_EXIST == TRUE)&&(COMPILE_SD_MMC_SINGLE_READ == TRUE)
mSysSeltSDMMCCard();
if(bMediaToDspFlag == 0)
{
CardMediaReadSingle(Media32_OpenAddr,0);
}
else
{
bMediaToDspFlag = 0;
CardMediaReadSingle(Media32_OpenAddr,2);
}
Media32_OpenAddr++;
#endif //#if SD_MMC_CARD_EXIST == TRUE
}
return TRUE;
}
INT8U Media_u8ReadClose(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_read_close();
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if SD_MMC_CARD_EXIST == TRUE
mSysSeltSDMMCCard();
#endif
}
return TRUE;
}
#ifndef DISK_COMPILE_READ_ONLY
INT8U Media_u8WriteOpen(INT32U addr,INT32U count)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_write_open(addr,count);
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if SD_MMC_CARD_EXIST == TRUE
mSysSeltSDMMCCard();
Media32_OpenAddr = addr;
#endif
}
return TRUE;
}
INT8U Media_u8WriteSector(INT8U u8Selt)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_write_sector(u8Selt);
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if (SD_MMC_CARD_EXIST == TRUE)&&(COMPILE_SD_MMC_SINGLE_WRITE == TRUE)
mSysSeltSDMMCCard();
if(u8Selt == 2)
{
cmd24_WriteSingleBlock_cb(Media32_OpenAddr,0);
}
else
{
CardMediaWriteSingle(Media32_OpenAddr,0);
}
Media32_OpenAddr++;
#endif
}
}
/*
INT8U Media_u8WriteSectorCB(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_write_sector(2);
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if (SD_MMC_CARD_EXIST == TRUE)&&(COMPILE_SD_MMC_SINGLE_WRITE == TRUE)
mSysSeltSDMMCCard();
CardMediaWriteSingle(Media32_OpenAddr,0);
Media32_OpenAddr++;
#endif
}
}
*/
INT8U Media_u8WriteClose(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_write_close();
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if SD_MMC_CARD_EXIST == TRUE
mSysSeltSDMMCCard();
#endif
}
}
/*
INT8U Media_u8Init(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
disk_init();
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
}
}
*/
INT8U Media_u8Close(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
// return disk_close();
disk_close();
return TRUE;
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if SD_MMC_CARD_EXIST == TRUE
mSysSeltSDMMCCard();
#endif
}
return TRUE;
}
#if COMPILE_FAT_FORMAT == TRUE
INT8U Media_u8Format(void)
{
if(gl_u8CurMediaType == CUR_MEDIA_FLASH)
{
mSysSeltFlash();
return disk_format();
}
else if(gl_u8CurMediaType == CUR_MEDIA_SDMMC)
{
#if SD_MMC_CARD_EXIST == TRUE
mSysSeltSDMMCCard();
#endif
}
return TRUE;
}
#endif //COMPILE_FAT_FORMAT
#endif //DISK_COMPILE_READ_ONLY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -