Skip to content

Latest commit

 

History

History
184 lines (129 loc) · 8.37 KB

CHANGELOG.md

File metadata and controls

184 lines (129 loc) · 8.37 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

Changed

  • Breaking Change: VolumeManager now uses interior-mutability (with a RefCell) and so most methods are now &self. This also makes it easier to open multiple File, Directory or Volume objects at once.
  • Breaking Change: The VolumeManager, File, Directory and Volume no longer implement Send or `Sync.
  • VolumeManager uses an interior block cache of 512 bytes, increasing its size by about 520 bytes but hugely reducing stack space required at run-time.
  • Breaking Change: The VolumeManager::device method now takes a callback rather than giving you a reference to the underlying BlockDevice
  • Breaking Change: Error:LockError variant added.
  • Breaking Change: SearchId was renamed to Handle

Added

  • File now implements the embedded-io Read, Write and Seek traits.
  • New iterate_dir_lfn method on VolumeManager and Directory - provides decoded Long File Names as Option<&str>

Removed

  • Breaking Change: Removed the reason: &str argument from BlockDevice

Version 0.8.0 - 2024-07-12

Changed

  • Fixed a bug when seeking backwards through files.
  • Updated to heapless-0.8 and embedded-hal-bus-0.2.
  • No longer panics if the close fails when a Volume is dropped - the failure is instead ignored.

Added

  • File now has a flush() method.
  • File now has a close() method.

Removed

  • Breaking Change: Removed CS type-param on SdCard - now we use the SpiDevice chip-select (closing #126)
  • Breaking Change: Removed the 74 clock cycle 'init' sequence - now applications must do this

Version 0.7.0 - 2024-02-04

Changed

  • Breaking Change: Volume, Directory and File are now smart! They hold references to the thing they were made from, and will clean themselves up when dropped. The trade-off is you can can't open multiple volumes, directories or files at the same time.
  • Breaking Change: Renamed the old types to RawVolume, RawDirectory and RawFile
  • Breaking Change: Renamed Error::FileNotFound to Error::NotFound
  • Fixed long-standing bug that caused an integer overflow when a FAT32 directory was longer than one cluster (#74)
  • You can now open directories multiple times without error
  • Updated to embedded-hal 1.0

Added

  • RawVolume, RawDirectory and RawFile types (like the old Volume, Directory and File types)
  • New method make_dir_in_dir
  • Empty strings and "." convert to ShortFileName::this_dir()
  • New API change_dir which changes a directory to point to some child directory (or the parent) without opening a new directory.
  • Updated 'shell' example to support mkdir, tree and relative/absolute paths

Removed

  • None

Version 0.6.0 - 2023-10-20

Changed

  • Writing to a file no longer flushes file metadata to the Directory Entry. Instead closing a file now flushes file metadata to the Directory Entry. Requires mutable access to the Volume (#94).
  • Files now have the correct length when modified, not appended (#72).
  • Calling SdCard::get_card_type will now perform card initialisation (#87 and #90).
  • Removed warning about unused arguments.
  • Types are now documented at the top level (#86).
  • Renamed Cluster to ClusterId and stopped you adding two together

Added

  • New examples, append_file, create_file, delete_file, list_dir, shell
  • New test cases tests/directories.rs, tests/read_file.rs

Removed

  • Breaking Change: Controller alias for VolumeManager removed.
  • Breaking Change: VolumeManager::open_dir_entry removed, as it was unsafe to the user to randomly pick a starting cluster.
  • Old examples create_test, test_mount, write_test, delete_test

Version 0.5.0 - 2023-05-20

Changed

  • Breaking Change: Renamed Controller to VolumeManager, to better describe what it does.
  • Breaking Change: Renamed SdMmcSpi to SdCard
  • Breaking Change: AcquireOpts now has use_crc (which makes it ask for CRCs to be enabled) instead of require_crc (which simply allowed the enable-CRC command to fail)
  • Breaking Change: SdCard::new now requires an object that implements the embedded-hal DelayUs trait
  • Breaking Change: Renamed card_size_bytes to num_bytes, to match num_blocks
  • More robust card intialisation procedure, with added retries
  • Supports building with neither defmt nor log logging

Added

  • Added mark_card_as_init method, if you know the card is initialised and want to skip the initialisation step

Removed

  • Breaking Change: Removed BlockSpi type - card initialisation now handled as an internal state variable

Version 0.4.0 - 2023-01-18

Changed

  • Optionally use [defmt] s/defmt) for logging. Controlled by defmt-log feature flag.
  • Breaking Change: Use SPI blocking traits instead to ease SPI peripheral sharing. See: #28
  • Added Controller::has_open_handles and Controller::free methods.
  • Breaking Change: Changed interface to enforce correct SD state at compile time.
  • Breaking Change: Added custom error type for File operations.
  • Fix env_logger pulling in the std feature in log in library builds.
  • Raise the minimum supported Rust version to 1.56.0.
  • Code tidy-ups and more documentation.
  • Add MAX_DIRS and MAX_FILES generics to Controller to allow an arbitrary numbers of concurrent open directories and files.
  • Add new constructor method Controller::new_with_limits(block_device: D, timesource: T) -> Controller<D, T, MAX_DIRS, MAX_FILES> to create a Controller with custom limits.

Version 0.3.0 - 2019-12-16

Changed

  • Updated to v2 embedded-hal traits.
  • Added open support for all modes.
  • Added write support for files.
  • Added Info_Sector tracking for FAT32.
  • Change directory iteration to look in all the directory's clusters.
  • Added write_test and create_test.
  • De-duplicated FAT16 and FAT32 code (#10)

Version 0.2.1 - 2019-02-19

Changed

  • Added readme=README.md to Cargo.toml

Version 0.2.0 - 2019-01-24

Changed

  • Reduce delay waiting for response. Big speed improvements.

Version 0.1.1 - 2018-12-23

Changed

  • Can read blocks from an SD Card using an embedded_hal::SPI device and a embedded_hal::OutputPin for Chip Select.
  • Can read partition tables and open a FAT32 or FAT16 formatted partition.
  • Can open and iterate the root directory of a FAT16 formatted partition.