1
mirror of https://github.com/DarkFlippers/unleashed-firmware.git synced 2025-12-12 12:42:30 +04:00

[FL-3664] 64k does not enough (#3216)

* Unit tests: add "exists" to furi_record tests
* Unit tests: mu_warn, storage 64k test
* Storage: read/write over 64k
* Unit tests: moar tests for storage r/w for >64k cases
* Apps, libs: replace uint16_t with size_t on storage r/w operations
* Unit tests: better data pattern, subghz: warning if transmission is prohibited

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Sergey Gavrilov
2023-11-15 19:39:27 +03:00
committed by GitHub
parent 98d5718ec9
commit 4b3e8aba29
25 changed files with 188 additions and 81 deletions

View File

@@ -14,7 +14,7 @@ uint32_t crc32_calc_file(File* file, const FileCrcProgressCb progress_cb, void*
uint32_t file_crc = 0;
uint8_t* data_buffer = malloc(CRC_DATA_BUFFER_MAX_LEN);
uint16_t data_buffer_valid_len;
size_t data_buffer_valid_len;
uint32_t file_size = storage_file_size(file);

View File

@@ -5,13 +5,13 @@ bool md5_calc_file(File* file, const char* path, unsigned char output[16], FS_Er
bool result = storage_file_open(file, path, FSAM_READ, FSOM_OPEN_EXISTING);
if(result) {
const uint16_t size_to_read = 512;
const size_t size_to_read = 512;
uint8_t* data = malloc(size_to_read);
md5_context* md5_ctx = malloc(sizeof(md5_context));
md5_starts(md5_ctx);
while(true) {
uint16_t read_size = storage_file_read(file, data, size_to_read);
size_t read_size = storage_file_read(file, data, size_to_read);
if(read_size == 0) break;
md5_update(md5_ctx, data, read_size);
}

View File

@@ -46,7 +46,7 @@ bool saved_struct_save(const char* path, void* data, size_t size, uint8_t magic,
header.flags = 0;
header.timestamp = 0;
uint16_t bytes_count = storage_file_write(file, &header, sizeof(header));
size_t bytes_count = storage_file_write(file, &header, sizeof(header));
bytes_count += storage_file_write(file, data, size);
if(bytes_count != (size + sizeof(header))) {
@@ -79,7 +79,7 @@ bool saved_struct_load(const char* path, void* data, size_t size, uint8_t magic,
}
if(result) {
uint16_t bytes_count = storage_file_read(file, &header, sizeof(SavedStructHeader));
size_t bytes_count = storage_file_read(file, &header, sizeof(SavedStructHeader));
bytes_count += storage_file_read(file, data_read, size);
if(bytes_count != (sizeof(SavedStructHeader) + size)) {
@@ -146,7 +146,7 @@ bool saved_struct_get_payload_size(
break;
}
uint16_t bytes_count = storage_file_read(file, &header, sizeof(SavedStructHeader));
size_t bytes_count = storage_file_read(file, &header, sizeof(SavedStructHeader));
if(bytes_count != sizeof(SavedStructHeader)) {
FURI_LOG_E(TAG, "Failed to read header");
break;

View File

@@ -134,31 +134,11 @@ static size_t file_stream_size(FileStream* stream) {
}
static size_t file_stream_write(FileStream* stream, const uint8_t* data, size_t size) {
// TODO FL-3545: cache
size_t need_to_write = size;
while(need_to_write > 0) {
uint16_t was_written =
storage_file_write(stream->file, data + (size - need_to_write), need_to_write);
need_to_write -= was_written;
if(was_written == 0) break;
}
return size - need_to_write;
return storage_file_write(stream->file, data, size);
}
static size_t file_stream_read(FileStream* stream, uint8_t* data, size_t size) {
// TODO FL-3545: cache
size_t need_to_read = size;
while(need_to_read > 0) {
uint16_t was_read =
storage_file_read(stream->file, data + (size - need_to_read), need_to_read);
need_to_read -= was_read;
if(was_read == 0) break;
}
return size - need_to_read;
return storage_file_read(stream->file, data, size);
}
static bool file_stream_delete_and_insert(