Commit Graph
20 Commits
Author SHA1 Message Date
iceman1001andClaude Opus 5 (1M context) 9a8e179266 fix spiffs downloads >= 64K, and stop losing flash errors
CMD_SPIFFS_DOWNLOAD read the whole file into BigBuf first.  BigBuf_calloc()
takes a uint16_t while the size is a uint32_t, so a 64K file allocated zero
bytes and anything larger wrapped to a short buffer the file was then read
straight past the end of.  rdv40_spiffs_read_stream() opens the file once and
hands out one frame at a time, so the size never reaches the allocator, and the
SPIFFS path now honours start_index.  Verified with an 80K round trip: upload,
download, byte identical.

The same BigBuf_calloc(filesize) wrap was in copy_in_spiffs(); it now copies in
SPIFFS_WRITE_CHUNK_SIZE chunks.

Separately, every flash failure was invisible.  SPIFFS_CHECK_RES() only treats a
negative result as an error and the HAL hooks returned 128/129/130, so SPIFFS
saw success.  The erase path was worst: Flash_Erase4k() only reports that the
command was sent, both Flash_CheckBusy() results were discarded, and
'return (SPIFFS_OK == erased)' yields 1 on failure.  A flash dump from a device
that hit this showed one block written without being erased - its object index
header held '0x14000 & 0x10000', and the filename ANDed away to empty.  Erases
are now read back and retried, and the HAL returns real SPIFFS error codes.

Flash_Write() returned len unconditionally even after a rejected page, which
also defeated the 'res == payload->len' check in CMD_FLASHMEM_WRITE.

Feedback, so none of this is silent again: CMD_SPIFFS_WRITE answers with the
SPIFFS result, the client aborts on the first refusal and names the byte it
stopped at, dl_it() checks the terminator status, and both transfer directions
print inline progress.

Co-Authored-By: Claude Opus 5 (1M context)
2026-09-12 14:58:08 +02:00
Henry Gabryjelski 91be146ecb CodeQL fixes for "Comparison between A of type TypeA and B of wider type TypeB" 2025-01-14 17:54:58 -08:00
Henry Gabryjelski b279df2d46 more const - spiffs 2023-08-08 22:50:34 -07:00
iceman1001 71f96ba1e7 make style 2022-10-16 17:56:12 +02:00
mwalker33 9406ef9fd3 spiffs prep
added define for chuck size
update changelog
2022-09-01 08:15:30 +10:00
iceman1001 79cfa1d8fa adapt SPIFFS from 128kb -> 192kb. Increased GC to fit sector size 4kb. (thanks @mwalker33) 2022-08-28 12:21:21 +02:00
Philippe Teuwen b703bb746b Adapting license headers, WIP 2022-01-06 02:20:38 +01:00
Philippe Teuwen 88308ea727 typos 2021-10-10 01:35:45 +02:00
iceman1001 1b59b38058 fix coverity 314850, and textual changes 2021-04-05 08:47:03 +02:00
iceman1001 ccbfdf9e88 add: mem spiffs wipe 2020-08-08 12:33:12 +02:00
Philippe Teuwen 8160131119 fix standalone warnings 2020-05-11 13:48:57 +02:00
Philippe Teuwen 026707b960 arm: fix prototypes 2020-05-11 13:48:57 +02:00
iceman1001 eb635a2efc cppcheck 2019-12-30 21:37:56 +01:00
cjbrigato 961f98c125 SPIFFS : FIXES FS corruption against high numbero f current losses, high number of files manipulation. FIXES LOG_BLOCK erasing handlers. FIXES Garbage Collector. Overall, SPIFFS should now be WAY MORE resilient to any form of misbehavior. In case of corrupted filesystem (should still be readable !), spamming 'mem spiffs check' from the client will ensure at least 2 new free 4k blocks each tile (if number of LOG_PAGE available is enough) and in the same pass will move/reorganize the LOG_PAGES of contextual blocks. Yiha 2019-08-13 17:39:48 +02:00
Philippe Teuwen d19754567d summer restructuring:
* .h include only the strict minimum for their own parsing
  * this forces all files to include explicitment their needs and not count on far streched dependencies
  * this helps Makefile to rebuild only the minimum
  * according to this rule, most standalone .h are now gone
  * big app.h is gone
  * remove seldom __cplusplus, if c++ happens, everything will have to be done properly anyway
* all unrequired include were removed
* split common/ into common/ (client+arm) and common_arm/ (os+bootloader)
  * bring zlib to common/
  * bring stuff not really/not yet used in common back to armsrc/ or client/
  * bring liblua into client/
  * bring uart into client/
  * move some portions of code around (dbprint, protocols,...)
* rename unused files into *_disabled.[ch] to make it explicit
* rename soft Uarts between 14a, 14b and iclass, so a standalone could use several without clash
* remove PrintAndLogDevice
* move deprecated-hid-flasher from client to tools
* Makefiles
  * treat deps in armsrc/ as in client/
  * client: stop on warning (-Werror), same as for armsrc/

Tested on:

* all standalone modes
* Linux
2019-08-11 21:42:01 +02:00
Philippe Teuwen 7d51f9f266 fix hf_bog standalone mode compilation 2019-07-24 01:04:06 +02:00
Philippe Teuwen 7f57879e45 typo 2019-07-23 21:48:09 +02:00
Philippe Teuwen 544fb30ce6 typos 2019-07-23 21:40:01 +02:00
Philippe Teuwen 9beabaabf5 make style 2019-07-23 21:33:52 +02:00
cjbrigato 5c3676ad81 ADD: Early SPIFFS implementation see #257, UPDATE HF_COLIN accordingly 2019-07-22 22:56:06 +02:00