- changed title to Integration of FatFS with ChocoOS
- edited description
Integration of FatFS with ChocoOS
Issue #234
new
General Description
To use SD/MMC cards (or other storages) it is required to port FatFS with the system to allow for using FAT. Description of FatFS library can be found here: http://elm-chan.org/fsw/ff/00index_e.html
Here is the link to FatFS from dnx-rtos: FatFS
The library has to be ported to the ChocoOS file system interface
Trello link: https://trello.com/c/sCm2zIfQ
File System Definition
- Name - "fatfs"
Architecture
Interface
Here is an interface required to be implemented:
struct Context_t
{
oC_ObjectControl_t ObjectControl;
FATFS FatFsContext;
};
struct File_t
{
oC_ObjectControl_t ObjectControl;
FIL FatFsFile;
};
struct Dir_t
{
oC_ObjectControl_t ObjectControl;
DIR FatFsDir;
};
extern const oC_FileSystem_Registration_t FatFs;
// Initializes file system
extern oC_ErrorCode_t oC_FatFs_init ( oC_FatFs_Context_t * outContext , oC_Storage_t Storage );
// destroys file system
extern oC_ErrorCode_t oC_FatFs_deinit ( oC_FatFs_Context_t Context );
// opens file
extern oC_ErrorCode_t oC_FatFs_fopen ( oC_FatFs_Context_t Context , oC_File_t * outFile , const char * Path , oC_FileSystem_ModeFlags_t Mode , oC_FileSystem_FileAttributes_t Attributes );
// closes file
extern oC_ErrorCode_t oC_FatFs_fclose ( oC_FatFs_Context_t Context , oC_File_t File );
// reads bytes from the file
extern oC_ErrorCode_t oC_FatFs_fread ( oC_FatFs_Context_t Context , oC_File_t File , void * outBuffer , uint32_t * Size );
// writes byte to the file
extern oC_ErrorCode_t oC_FatFs_fwrite ( oC_FatFs_Context_t Context , oC_File_t File , const void * Buffer , uint32_t * Size );
// sets offset in the file
extern oC_ErrorCode_t oC_FatFs_lseek ( oC_FatFs_Context_t Context , oC_File_t File , uint32_t Offset );
// performs special request to the file
extern oC_ErrorCode_t oC_FatFs_ioctl ( oC_FatFs_Context_t Context , oC_File_t File , oC_Ioctl_Command_t Command , void * Pointer);
// see `sync` from posix
extern oC_ErrorCode_t oC_FatFs_sync ( oC_FatFs_Context_t Context , oC_File_t File );
// reads 1 char from file
extern oC_ErrorCode_t oC_FatFs_getc ( oC_FatFs_Context_t Context , char * outCharacter , oC_File_t File );
// puts 1 char to file
extern oC_ErrorCode_t oC_FatFs_putc ( oC_FatFs_Context_t Context , char Character , oC_File_t File );
// reads offset in file
extern int32_t oC_FatFs_tell ( oC_FatFs_Context_t Context , oC_File_t File );
// returns true if this is end of file
extern bool oC_FatFs_eof ( oC_FatFs_Context_t Context , oC_File_t File );
// returns file size
extern uint32_t oC_FatFs_size ( oC_FatFs_Context_t Context , oC_File_t File );
// opens directory
extern oC_ErrorCode_t oC_FatFs_opendir ( oC_DevFs_Context_t Context , oC_Dir_t * outDir , const char * Path );
// closes directory
extern oC_ErrorCode_t oC_FatFs_closedir ( oC_DevFs_Context_t Context , oC_Dir_t Dir );
// reads next file information from the directory (each execution returns info about next file)
extern oC_ErrorCode_t oC_FatFs_readdir ( oC_DevFs_Context_t Context , oC_Dir_t Dir , oC_FileInfo_t * outFileInfo );
// Returns info about the given file
extern oC_ErrorCode_t oC_FatFs_stat ( oC_DevFs_Context_t Context , const char * Path , oC_FileInfo_t * outFileInfo);
// deletes a file
extern oC_ErrorCode_t oC_FatFs_unlink ( oC_DevFs_Context_t Context , const char * Path);
// changes name of a file
extern oC_ErrorCode_t oC_FatFs_rename ( oC_DevFs_Context_t Context , const char * OldName , const char * NewName);
// changes attributes of the file
extern oC_ErrorCode_t oC_FatFs_chmod ( oC_DevFs_Context_t Context , const char * Path, oC_FileSystem_FileAttributes_t Attributes , oC_FileSystem_FileAttributes_t Mask);
// sets timestamp of file
extern oC_ErrorCode_t oC_FatFs_utime ( oC_DevFs_Context_t Context , const char * Path , oC_Timestamp_t Timestamp );
// creates new directory
extern oC_ErrorCode_t oC_FatFs_mkdir ( oC_DevFs_Context_t Context , const char * Path);
// returns true if directory exists
extern bool oC_FatFs_DirExists ( oC_DevFs_Context_t Context , const char * Path);
Comments (9)
-
reporter -
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
- Log in to comment