aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-04-02 15:16:32 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-04-02 15:16:32 +0300
commit3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85 (patch)
treea0e69764fe4eca3fc445f44e1f963a2a72e4327f /Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
parent3713f74d0d811b869af5522a576e36f7e6a0ed2e (diff)
downloadTango-3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85.tar.gz
Tango-3f6aecd92ceca69ffa5fc07ea0bbe93fd4097c85.zip
Embedded SW Release note - Version 1.3.8.2
File upload: prevent on job, reduce priority (watchdog) Report: packages filters introduced, please feel free to use them. robustness in communication improved large number of segments and gradient support - initial at the end of job the screw does not return back rockers - adjust values before and after loading the cart
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
index d57d3b14b..3357cfc06 100644
--- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
+++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c
@@ -55,6 +55,7 @@ int32_t FileSentLength = 0;
static char g_cCwdBuf[50] = "/";
uint32_t WrittenBytes = 0;
uint32_t ReadBytes = 0;
+Task_Handle CommRxTaskHandle;
ErrorCode getErrorCode(FRESULT Fresult)
@@ -81,27 +82,34 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer)
FileUploadResponse response = FILE_UPLOAD_RESPONSE__INIT;
WrittenBytes=0;
- UploadFileHandle = my_malloc(sizeof(FIL));
- if (UploadFileHandle == 0)
+ if (JobIsActive())
Fresult = FR_DENIED;
else
{
- Fresult = f_open(UploadFileHandle,request->path,FA_READ | FA_WRITE |FA_OPEN_ALWAYS| FA_CREATE_ALWAYS);
- if (Fresult == FR_OK)
- {
- FileLength = request->length;
- response.has_maxchunklength = true;
- response.maxchunklength = MAX_CHUNK_LENGTH;
- strcpy(FileHandleChar, "1234");
- response.uploadid = FileHandleChar; //supporting only single file at each time.
- }
+ UploadFileHandle = my_malloc(sizeof(FIL));
+ if (UploadFileHandle == 0)
+ Fresult = FR_DENIED;
else
{
- free (UploadFileHandle);
- UploadFileHandle = 0;
- }
+ Fresult = f_open(UploadFileHandle,request->path,FA_READ | FA_WRITE | FA_OPEN_ALWAYS | FA_CREATE_ALWAYS);
+ if (Fresult == FR_OK)
+ {
+ FileLength = request->length;
+ response.has_maxchunklength = true;
+ response.maxchunklength = MAX_CHUNK_LENGTH;
+ strcpy(FileHandleChar, "1234");
+ response.uploadid = FileHandleChar; //supporting only single file at each time.
+ }
+ else
+ {
+ free (UploadFileHandle);
+ UploadFileHandle = 0;
+ }
+ }
}
+ CommRxTaskHandle = Task_self();
+ Task_setPri(CommRxTaskHandle, 4);
responseContainer = createContainer(MESSAGE_TYPE__FileUploadResponse, requestContainer->token, false, &response, &file_upload_response__pack, &file_upload_response__get_packed_size);
@@ -123,6 +131,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
{
//uint32_t status = OK;
FRESULT Fresult = FR_OK;
+ bool FileDone = false;
MessageContainer responseContainer;
@@ -142,6 +151,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
if(Fresult != FR_OK)
{
LOG_ERROR (Fresult,"f_write error");
+ FileDone = true;
}
else
{
@@ -152,6 +162,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
f_close(ReceivedFileHandle);
free (UploadFileHandle);
FileReceivedLength = 0;
+ FileDone = true;
}
else
{
@@ -161,6 +172,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
f_close(ReceivedFileHandle);
free (UploadFileHandle);
FileReceivedLength = 0;
+ FileDone = true;
}
}
}
@@ -185,6 +197,8 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer)
file_chunk_upload_request__free_unpacked(request,NULL);
my_free(responseContainer.data.data);
SendChars(container_buffer, container_size);
+ if (FileDone == true)
+ Task_setPri(CommRxTaskHandle, 9);
return OK;
}
@@ -504,7 +518,7 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
#define MAX_NUM_OF_FILES 10
DIR dir;
FILINFO* fno[MAX_NUM_OF_FILES];
- char FullPath[MAX_NUM_OF_FILES][50];
+ char FullPath[MAX_NUM_OF_FILES][100];
int i,NumOfFiles = 0;
FRESULT Fresult = FR_OK;
@@ -580,11 +594,14 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer)
}
responseContainer.continuous = false;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
- size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ if (container_buffer)
+ {
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ SendChars(container_buffer, container_size);
+ }
my_free(responseContainer.data.data);
my_free(FilesInfo);
get_files_request__free_unpacked(request,NULL);
- SendChars(container_buffer, container_size);
for (i = 0;i < NumOfFiles;i++)
{
if (fno[i])