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.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
index f4c44462e..3d23f9e48 100644
--- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
+++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
@@ -39,7 +39,23 @@ char ErrorMsg[100];
int FileLength = 0;
int FileReceivedLength = 0;
static char g_cCwdBuf[50] = "/";
+uint32_t WrittenBytes = 0;
+/*ErrorCode FileError_to_ErrorCode[FILE_ERRORS_MAX+1] = {ERROR_CODE__NONE,ERROR_CODE__JOB_UNSPECIFIED_ERROR,ERROR_CODE__JOB_THREAD_BREAK,ERROR_CODE__JOB_WINDER_DANCER_FAIL,
+ ERROR_CODE__JOB_POOLER_DANCER_FAIL,ERROR_CODE__JOB_FEEDER_DANCER_FAIL,ERROR_CODE__JOB_OUT_OF_DYE,ERROR_CODE__JOB_OTHER_ALARM,
+ ERROR_CODE__JOB_TEMPERATURE_ALARM,ERROR_CODE__JOB_LS_ALARM,ERROR_CODE__JOB_PRESSURE_ALARM,ERROR_CODE__JOB_CURRENT_ALARM,ERROR_CODE__JOB_MOTOR_ALARM};
+*/
+
+ErrorCode getErrorCode(FRESULT Fresult)
+{
+ switch (Fresult)
+ {
+ case FR_OK:
+ retrun ERROR_CODE_NONE;
+ default:
+ return ERROR_CODE__FILE_LENGTH_OUT_OF_RANGE;
+ }
+}
bool isDirectory(FileAttribute FileAtt)
{
if (FileAtt&&FILE_ATTRIBUTE__Directory)
@@ -58,9 +74,11 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer)
FileUploadRequest* request = file_upload_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
FileUploadResponse response = FILE_UPLOAD_RESPONSE__INIT;
+
+ WrittenBytes=0;
FileHandle = malloc(sizeof(FIL));
if (FileHandle == 0)
- Fresult == FR_DENIED;
+ Fresult = FR_DENIED;
else
{
Fresult = f_open(FileHandle,request->filename,FA_READ | FA_WRITE | FA_OPEN_ALWAYS );
@@ -96,7 +114,6 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
{
uint32_t status = OK;
FRESULT Fresult = FR_OK;
- uint32_t WrittenBytes = 0;
MessageContainer responseContainer;
@@ -123,7 +140,6 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
}
else
{
- int FileLength = 0;
FileReceivedLength += WrittenBytes;
if (FileReceivedLength == FileLength)
{
@@ -235,7 +251,7 @@ uint32_t CreateRequestFunc(MessageContainer* requestContainer)
{
FileHandle = malloc(sizeof(FIL));
if (FileHandle == 0)
- Fresult == FR_DENIED;
+ Fresult = FR_DENIED;
else
{
Fresult = f_open(FileHandle,request->path,FA_CREATE_NEW);
@@ -286,6 +302,14 @@ uint32_t DeleteRequestFunc(MessageContainer* requestContainer)
int NumOfFiles = 0;
FRESULT Fresult = FR_OK;
+ Fresult |= f_opendir(&dir, g_cCwdBuf);
+ if(Fresult != FR_OK)
+ {
+ return(Fresult);
+ }
+
+ fno = my_malloc(sizeof(FILINFO));
+ memset (fno,0,sizeof(FILINFO));
Fresult = f_stat(request->path,fno);
if (Fresult == FR_OK)
{
@@ -331,6 +355,7 @@ uint32_t DeleteRequestFunc(MessageContainer* requestContainer)
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
size_t container_size = message_container__pack(&responseContainer, container_buffer);
my_free(responseContainer.data.data);
+ my_free(fno);
delete_request__free_unpacked(request,NULL);
SendChars(container_buffer, container_size);
@@ -405,8 +430,10 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
memset (fno,0,sizeof(fno));
FileInfo **FilesInfo = (FileInfo**)my_malloc(sizeof(FileInfo *)*(MAX_NUM_OF_FILES));
FileInfo Data[MAX_NUM_OF_FILES];
+ memset(fno,0,sizeof(fno));
fno[0] = my_malloc(sizeof(FILINFO));
memset (fno[0],0,sizeof(FILINFO));
+
Fresult = f_stat(request->path,fno[0]);
if (Fresult == FR_OK)
{