diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | 124 |
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; } |
