diff options
| author | Avi Levkovich <avi@twine-s.com> | 2019-01-24 17:29:39 +0200 |
|---|---|---|
| committer | Avi Levkovich <avi@twine-s.com> | 2019-01-24 17:29:39 +0200 |
| commit | 5af9cb60feeda4b1dd781c3358418798d828d086 (patch) | |
| tree | 10d76fda2812077022d4ba459652f16fd08daafa /Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | |
| parent | d1807ee5a17bada69c8062d7e218c006fe654a24 (diff) | |
| parent | 6f56066c9d7bca42857792a43063b7eb5a9f47ef (diff) | |
| download | Tango-5af9cb60feeda4b1dd781c3358418798d828d086.tar.gz Tango-5af9cb60feeda4b1dd781c3358418798d828d086.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | 100 |
1 files changed, 96 insertions, 4 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 0b19f2454..3d4404f99 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -76,7 +76,7 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) FileUploadResponse response = FILE_UPLOAD_RESPONSE__INIT; WrittenBytes=0; - FileHandle = malloc(sizeof(FIL)); + FileHandle = my_malloc(sizeof(FIL)); if (FileHandle == 0) Fresult = FR_DENIED; else @@ -245,7 +245,7 @@ uint32_t CreateRequestFunc(MessageContainer* requestContainer) } else { - FileHandle = malloc(sizeof(FIL)); + FileHandle = my_malloc(sizeof(FIL)); if (FileHandle == 0) Fresult = FR_DENIED; else @@ -516,7 +516,7 @@ uint32_t FileDownloadRequestFunc(MessageContainer* requestContainer) FileDownloadResponse response = FILE_DOWNLOAD_RESPONSE__INIT; WrittenBytes=0; - FileHandle = malloc(sizeof(FIL)); + FileHandle = my_malloc(sizeof(FIL)); if (FileHandle == 0) Fresult = FR_DENIED; else @@ -558,7 +558,7 @@ uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer) ReceivedFileHandle = FileHandle; char *Buffer = 0; - Buffer = malloc (2000); + Buffer = my_malloc (2000); if (Buffer != NULL) { Fresult = f_read(ReceivedFileHandle,response.buffer.data,2000,&WrittenBytes ); @@ -604,3 +604,95 @@ uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer) return OK; } +FRESULT FileWrite(void * buffer, uint16_t size,char *path) +{ + FRESULT Fresult = FR_OK; + FIL *FileHandle = 0; //the system supports a single active file + uint32_t Bytes = 0; + + if (buffer) + { + FileHandle = my_malloc(sizeof(FIL)); + if (FileHandle == 0) + Fresult = FR_DENIED; + else + { + Fresult = f_open(FileHandle,path,FA_WRITE | FA_OPEN_ALWAYS); + if (Fresult == FR_OK) + { + Fresult = f_write(FileHandle,buffer,size,&Bytes ); + if(Fresult != FR_OK) + { + LOG_ERROR (Fresult,"fread error"); + } + f_close(FileHandle); + } + else + { + LOG_ERROR (Fresult,"fopen error"); + } + my_free(FileHandle); + } + } + return Fresult; +} +FRESULT FileRead(char *path, uint32_t *Size, void **Buffer) +{ + FRESULT Fresult = FR_OK; + FIL *FileHandle = 0; //the system supports a single active file + FILINFO* fno = 0; + void* buffer = NULL; + uint32_t Bytes = 0; + uint32_t status = 0; + + fno = my_malloc(sizeof(FILINFO)); + if (fno == 0) + return ERROR; + memset (fno,0,sizeof(FILINFO)); + Fresult = f_stat(path,fno); + if (Fresult == FR_OK) + { + buffer = my_malloc (fno->fsize); + if (buffer) + { + FileHandle = my_malloc(sizeof(FIL)); + if (FileHandle == 0) + Fresult = FR_DENIED; + else + { + Fresult = f_open(FileHandle,path,FA_READ); + if (Fresult == FR_OK) + { + Fresult = f_read(FileHandle,buffer,fno->fsize,&Bytes ); + if(Fresult == FR_OK) + { + *Buffer = buffer; + *Size = (uint32_t)fno->fsize; + } + else + { + LOG_ERROR (Fresult,"fread error"); + my_free (buffer); + } + f_close(FileHandle); + } + else + { + LOG_ERROR (Fresult,"fopen error"); + my_free (buffer); + } + my_free(FileHandle); + } + } + else + { + LOG_ERROR (Fresult,"malloc error"); + } + } + else + { + LOG_ERROR (Fresult,"f_stat error"); + } + my_free(fno); + return Fresult; +} |
