From 9406ef9fd3d5997b3c038d3cd0451b626bd49594 Mon Sep 17 00:00:00 2001 From: mwalker33 <51802811+mwalker33@users.noreply.github.com> Date: Thu, 1 Sep 2022 08:15:30 +1000 Subject: [PATCH] spiffs prep added define for chuck size update changelog --- CHANGELOG.md | 2 ++ armsrc/spiffs.c | 28 ++++++++++++++-------------- armsrc/spiffs.h | 2 ++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93c557838..bbb1b0049 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Changed spiffs write/apped to send in 8192 chucks to ensure its eraised (@mwalker) + - Fixed spiffs dump to ensure to fails correctly if no big_buff was allocated (@mwalker) - Change Client Makefile to respect global flags (@blshkv) - Change Makefile, honors global CC values (@blshkv) - Fixed bad memory handling in MifareSim device side (@iceman1001) diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 665fb2cf8..ef7ca3174 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -433,26 +433,26 @@ int rdv40_spiffs_lazy_mount_rollback(int changed) { // statement or some function taking function parameters // TODO : forbid writing to a filename which already exists as lnk ! // TODO : forbid writing to a filename.lnk which already exists without lnk ! -// Note: Writing in 8192 byte chucks helps to ensure "free space" has been erased by GC (Garbage collection) +// Note: Writing in SPIFFS_WRITE_CHUNK_SIZE (8192) byte chucks helps to ensure "free space" has been erased by GC (Garbage collection) int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; - if (size <= 8192) { + if (size <= SPIFFS_WRITE_CHUNK_SIZE) { // write small file write_to_spiffs(filename, src, size); size = 0; } else { // - // write first 8192 bytes + // write first SPIFFS_WRITE_CHUNK_SIZE bytes // need to write the first chuck of data, then append - write_to_spiffs(filename, src, 8192); + write_to_spiffs(filename, src, SPIFFS_WRITE_CHUNK_SIZE); } - // append remaing 8192 byte chuncks - for (idx = 1; idx < (size / 8192); idx++) { - append_to_spiffs(filename, &src[8192 * idx], 8192); + // append remaing SPIFFS_WRITE_CHUNK_SIZE byte chuncks + for (idx = 1; idx < (size / SPIFFS_WRITE_CHUNK_SIZE); idx++) { + append_to_spiffs(filename, &src[SPIFFS_WRITE_CHUNK_SIZE * idx], SPIFFS_WRITE_CHUNK_SIZE); } // append remaing bytes - if (((int64_t)size - (8192 * idx)) > 0) { - append_to_spiffs(filename, &src[8192 * idx], size - (8192 * idx)); + if (((int64_t)size - (SPIFFS_WRITE_CHUNK_SIZE * idx)) > 0) { + append_to_spiffs(filename, &src[SPIFFS_WRITE_CHUNK_SIZE * idx], size - (SPIFFS_WRITE_CHUNK_SIZE * idx)); } ) } @@ -460,13 +460,13 @@ int rdv40_spiffs_write(const char *filename, uint8_t *src, uint32_t size, RDV40S int rdv40_spiffs_append(const char *filename, uint8_t *src, uint32_t size, RDV40SpiFFSSafetyLevel level) { RDV40_SPIFFS_SAFE_FUNCTION( uint32_t idx; - // Append any 8192 byte chunks - for (idx = 0; idx < (size/8192); idx++) { - append_to_spiffs(filename, &src[8192 * idx], 8192); + // Append any SPIFFS_WRITE_CHUNK_SIZE byte chunks + for (idx = 0; idx < (size/SPIFFS_WRITE_CHUNK_SIZE); idx++) { + append_to_spiffs(filename, &src[SPIFFS_WRITE_CHUNK_SIZE * idx], SPIFFS_WRITE_CHUNK_SIZE); } // Append remain bytes - if (((int64_t)size - (8192 * idx)) > 0) { - append_to_spiffs(filename, &src[8192 * idx], size - (8192 * idx)); + if (((int64_t)size - (SPIFFS_WRITE_CHUNK_SIZE * idx)) > 0) { + append_to_spiffs(filename, &src[SPIFFS_WRITE_CHUNK_SIZE * idx], size - (SPIFFS_WRITE_CHUNK_SIZE * idx)); } ) } diff --git a/armsrc/spiffs.h b/armsrc/spiffs.h index c540a023f..6af4fbac8 100644 --- a/armsrc/spiffs.h +++ b/armsrc/spiffs.h @@ -129,6 +129,8 @@ void rdv40_spiffs_safe_wipe(void); #define SPIFFS_ERR_TEST -10100 +// Amount of data to write/append to a file in one go. +#define SPIFFS_WRITE_CHUNK_SIZE 8192 // spiffs file descriptor index type. must be signed typedef s16_t spiffs_file;