diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 3d4404f99..49f65a764 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -36,6 +36,14 @@ #include "drivers/Flash_Memory/fatfs/ff.h" #include "third_party/fatfs/src/ffconf.h" + +ErrorCode FileError_to_ErrorCode[FR_INVALID_PARAMETER+1] = {ERROR_CODE__NONE,ERROR_CODE__FILE_REQUEST_DISK_ERR,ERROR_CODE__FILE_REQUEST_INT_ERR,ERROR_CODE__FILE_REQUEST_NOT_READY,ERROR_CODE__FILE_REQUEST_NO_FILE, + ERROR_CODE__FILE_REQUEST_NO_PATH,ERROR_CODE__FILE_REQUEST_INVALID_NAME,ERROR_CODE__FILE_REQUEST_DENIED,ERROR_CODE__FILE_REQUEST_EXIST,ERROR_CODE__FILE_REQUEST_INVALID_OBJECT, + ERROR_CODE__FILE_REQUEST_WRITE_PROTECTED,ERROR_CODE__FILE_REQUEST_INVALID_DRIVE,ERROR_CODE__FILE_REQUEST_NOT_ENABLED,ERROR_CODE__FILE_REQUEST_NO_FILESYSTEM, + ERROR_CODE__FILE_REQUEST_MKFS_ABORTED,ERROR_CODE__FILE_REQUEST_TIMEOUT,ERROR_CODE__FILE_REQUEST_LOCKED,ERROR_CODE__FILE_REQUEST_NOT_ENOUGH_CORE,ERROR_CODE__FILE_REQUEST_TOO_MANY_OPEN_FILES, + ERROR_CODE__FILE_REQUEST_INVALID_PARAMETER}; + + FIL *FileHandle = 0; //the system supports a single active file char FileHandleChar[5]; char ErrorMsg[100]; @@ -45,13 +53,6 @@ int FileReceivedLength = 0; static char g_cCwdBuf[50] = "/"; uint32_t WrittenBytes = 0; -ErrorCode FileError_to_ErrorCode[FR_INVALID_PARAMETER+1] = {ERROR_CODE__NONE,ERROR_CODE__FILE_REQUEST_DISK_ERR,ERROR_CODE__FILE_REQUEST_INT_ERR,ERROR_CODE__FILE_REQUEST_NOT_READY,ERROR_CODE__FILE_REQUEST_NO_FILE, - ERROR_CODE__FILE_REQUEST_NO_PATH,ERROR_CODE__FILE_REQUEST_INVALID_NAME,ERROR_CODE__FILE_REQUEST_DENIED,ERROR_CODE__FILE_REQUEST_EXIST,ERROR_CODE__FILE_REQUEST_INVALID_OBJECT, - ERROR_CODE__FILE_REQUEST_WRITE_PROTECTED,ERROR_CODE__FILE_REQUEST_INVALID_DRIVE,ERROR_CODE__FILE_REQUEST_NOT_ENABLED,ERROR_CODE__FILE_REQUEST_NO_FILESYSTEM, - ERROR_CODE__FILE_REQUEST_MKFS_ABORTED,ERROR_CODE__FILE_REQUEST_TIMEOUT,ERROR_CODE__FILE_REQUEST_LOCKED,ERROR_CODE__FILE_REQUEST_NOT_ENOUGH_CORE,ERROR_CODE__FILE_REQUEST_TOO_MANY_OPEN_FILES, - ERROR_CODE__FILE_REQUEST_INVALID_PARAMETER}; - - ErrorCode getErrorCode(FRESULT Fresult) { return FileError_to_ErrorCode[Fresult]; @@ -696,3 +697,30 @@ FRESULT FileRead(char *path, uint32_t *Size, void **Buffer) my_free(fno); return Fresult; } +FRESULT FileOpen(char *path, uint32_t *Size, FIL *FileHandle) +{ + FRESULT Fresult = FR_OK; + FILINFO* fno = 0; + void* buffer = NULL; + uint32_t Bytes = 0; + uint32_t status = 0; + + fno = my_malloc(sizeof(FILINFO)); + if (fno == 0) + return ERROR; + memset (fno,0,sizeof(FILINFO)); + Fresult = f_stat(path,fno); + *Size = (uint32_t)fno->fsize; + if (Fresult == FR_OK) + { + FileHandle = my_malloc(sizeof(FIL)); + if (FileHandle == 0) + Fresult = FR_DENIED; + } + else + { + LOG_ERROR (Fresult,"f_stat error"); + } + my_free(fno); + return Fresult; +} |
