From 05538cca177a09a2d97c35700c6dd19a1bf5f7f0 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 4 Nov 2018 18:43:56 +0200 Subject: improve file system (still bugged). usb reconnect, reduce memory usage --- Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 6324c904e..de4f0937a 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -386,12 +386,14 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) #define MAX_NUM_OF_FILES 10 DIR dir; - FILINFO* fno[MAX_NUM_OF_FILES] = {0,0,0,0,0,0,0,0,0,0}; + FILINFO* fno[MAX_NUM_OF_FILES]; int NumOfFiles = 0; FRESULT Fresult = FR_OK; FileInfo **FilesInfo = (FileInfo**)malloc(sizeof(FileInfo *)*(MAX_NUM_OF_FILES)); FileInfo Data[MAX_NUM_OF_FILES]; + fno[0] = malloc(sizeof(FILINFO)); + memset (fno[0],0,sizeof(FILINFO)); Fresult = f_stat(request->path,fno[0]); if (Fresult == FR_OK) { @@ -404,6 +406,8 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) { for (NumOfFiles = 1;NumOfFiles < MAX_NUM_OF_FILES;NumOfFiles++) { + fno[NumOfFiles] = malloc(sizeof(FILINFO)); + memset (fno[NumOfFiles],0,sizeof(FILINFO)); Fresult = f_readdir(&dir, &fno[NumOfFiles]); /* Read a directory item */ if (Fresult == FR_OK) { @@ -445,6 +449,10 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) size_t container_size = message_container__pack(&responseContainer, container_buffer); free(responseContainer.data.data); SendChars(container_buffer, container_size); - + for (NumOfFiles = 0;NumOfFiles < MAX_NUM_OF_FILES;NumOfFiles++) + { + if (fno[NumOfFiles]) + free (fno[NumOfFiles]); + } return OK; } -- cgit v1.3.1