aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c42
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;
+}