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.c124
1 files changed, 57 insertions, 67 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
index 3a6a6f924..6b7e816c4 100644
--- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
+++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
@@ -41,20 +41,16 @@ 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 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)
{
- switch (Fresult)
- {
- case FR_OK:
- return ERROR_CODE__NONE;
- default:
- return ERROR_CODE__FILE_LENGTH_OUT_OF_RANGE;
- }
+ return FileError_to_ErrorCode[Fresult];
}
bool isDirectory(FileAttribute FileAtt)
{
@@ -97,8 +93,8 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer)
responseContainer = createContainer(MESSAGE_TYPE__FileUploadResponse, requestContainer->token, false, &response, &file_upload_response__pack, &file_upload_response__get_packed_size);
if (Fresult!= FR_OK)
{
- responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -130,10 +126,6 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
//if (ReceivedFileHandle == FileHandle)
//{
Fresult = f_write(ReceivedFileHandle,request->buffer.data,request->buffer.len,&WrittenBytes );
-// FIL *fp, /* Pointer to the file object */
-// const void *buff, /* Pointer to the data to be written */
-// UINT btw, /* Number of bytes to write */
-// UINT *bw /* Pointer to number of bytes written */
if(Fresult != FR_OK)
{
LOG_ERROR (Fresult,"f_write error");
@@ -167,10 +159,10 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
}*/
responseContainer = createContainer(MESSAGE_TYPE__FileChunkUploadResponse, requestContainer->token, false, &response, &file_chunk_upload_response__pack, &file_chunk_upload_response__get_packed_size);
- if (status!= OK)
+ if (Fresult!= OK)
{
- responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -195,8 +187,8 @@ uint32_t ExecuteProcessRequestFunc(MessageContainer* requestContainer)
responseContainer = createContainer(MESSAGE_TYPE__ExecuteProcessResponse, requestContainer->token, false, &response, &execute_process_response__pack, &execute_process_response__get_packed_size);
if (status!= OK)
{
- responseContainer.error = ERROR_CODE__FILE_NOT_FOUND;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = ERROR_CODE__GENERAL_ERROR;//getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -221,8 +213,8 @@ uint32_t KillProcessRequestFunc(MessageContainer* requestContainer)
responseContainer = createContainer(MESSAGE_TYPE__KillProcessResponse, requestContainer->token, false, &response, &kill_process_response__pack, &kill_process_response__get_packed_size);
if (status!= OK)
{
- responseContainer.error = ERROR_CODE__FILE_NOT_FOUND;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = ERROR_CODE__GENERAL_ERROR;//getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -273,10 +265,10 @@ uint32_t CreateRequestFunc(MessageContainer* requestContainer)
free (FileHandle);
responseContainer = createContainer(MESSAGE_TYPE__CreateResponse, requestContainer->token, false, &response, &create_response__pack, &create_response__get_packed_size);
- if (status!= OK)
+ if (Fresult!= OK)
{
- responseContainer.error = ERROR_CODE__FILE_NOT_FOUND;
- responseContainer.errormessage = ErrorMsg;
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -305,51 +297,49 @@ uint32_t DeleteRequestFunc(MessageContainer* requestContainer)
Fresult |= f_opendir(&dir, g_cCwdBuf);
if(Fresult != FR_OK)
{
- return(Fresult);
+ LOG_ERROR (Fresult,"f_write error");
}
-
- fno = my_malloc(sizeof(FILINFO));
- memset (fno,0,sizeof(FILINFO));
- Fresult = f_stat(request->path,fno);
- if (Fresult == FR_OK)
+ else
{
- if (isDirectory(fno->fattrib))
+
+ fno = my_malloc(sizeof(FILINFO));
+ memset (fno,0,sizeof(FILINFO));
+ Fresult = f_stat(request->path,fno);
+ if (Fresult == FR_OK)
{
- //============================
- Fresult = f_opendir(&dir, request->path); /* Open the directory */
- if (Fresult == FR_OK)
- {
- Fresult = f_readdir(&dir, &fno); /* Read a directory item */
+ if (isDirectory(fno->fattrib))
+ {
+ //============================
+ Fresult = f_opendir(&dir, request->path); /* Open the directory */
if (Fresult == FR_OK)
{
- if(fno->fname[0] ==0)
- {
- //no files
- Fresult = f_unlink(request->path);
- }
- else
+ Fresult = f_readdir(&dir, &fno); /* Read a directory item */
+ if (Fresult == FR_OK)
{
- LOG_ERROR (fno,"Directory not empty");
+ if(fno->fname[0] ==0)
+ {
+ //no files
+ Fresult = f_unlink(request->path);
+ }
+ else
+ {
+ LOG_ERROR (fno,"Directory not empty");
+ }
}
}
- }
- }
- else
- {
- Fresult = f_unlink(request->path);
+ }
+ else
+ {
+ Fresult = f_unlink(request->path);
+ }
}
}
- if (Fresult != FR_OK)
- {
- status = ERROR_CODE__FILE_NOT_FOUND;
- usnprintf(ErrorMsg, 100, "File Operation failed error code %d",Fresult);
- }
-
responseContainer = createContainer(MESSAGE_TYPE__DeleteResponse, requestContainer->token, false, &response, &delete_response__pack, &delete_response__get_packed_size);
- if (status!= OK)
+ if (Fresult!= OK)
{
- responseContainer.error = ERROR_CODE__FILE_NOT_FOUND;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ usnprintf(ErrorMsg, 100, "File Operation failed error code %d",Fresult);
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = ErrorMsg;
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -391,10 +381,10 @@ uint32_t GetStorageInfoRequestFunc(MessageContainer* requestContainer)
responseContainer = createContainer(MESSAGE_TYPE__GetStorageInfoResponse, requestContainer->token, false, &response, &get_storage_info_response__pack, &get_storage_info_response__get_packed_size);
- if (status!= OK)
+ if (Fresult!= OK)
{
- responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -490,10 +480,10 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
}
responseContainer = createContainer(MESSAGE_TYPE__GetFilesResponse, requestContainer->token, false, &response, &get_files_response__pack, &get_files_response__get_packed_size);
- if (status!= OK)
+ if (Fresult!= OK)
{
- responseContainer.error = ERROR_CODE__FILE_NOT_FOUND;
- responseContainer.errormessage = "JOb Active or incorrect parameters";
+ responseContainer.error = getErrorCode(Fresult);
+ responseContainer.errormessage = "File operation error";
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -507,5 +497,5 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
if (fno[i])
my_free (fno[i]);
}
- return OK;
+ return Fresult;
}