Releases: rust-embedded-community/embedded-sdmmc-rs
v0.9.0
Changed
- Breaking Change:
VolumeManagernow uses interior-mutability (with aRefCell) and so most methods are now&self. This also makes it easier to open multipleFile,DirectoryorVolumeobjects at once. - Breaking Change: The
VolumeManager,File,DirectoryandVolumeno longer implementSendorSync. VolumeManageruses 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::devicemethod now takes a callback rather than giving you a reference to the underlyingBlockDevice - Breaking Change:
Error:LockErrorvariant added. - Breaking Change:
SearchIdwas renamed toHandle - Fixed writing at block start mid-file (previously overwrote subsequent file data with zeros up to the end of the block)
Added
Filenow implements theembedded-ioRead,WriteandSeektraits.- New
iterate_dir_lfnmethod onVolumeManagerandDirectory- provides decoded Long File Names asOption<&str>
Removed
- Breaking Change: Removed the
reason: &strargument fromBlockDevice
Pull Requests
- Implement embedded-io traits for File. by @qwandor in #140
- Rename SearchId to Handle. by @thejpster in #149
- Better volume label support by @thejpster in #144
- Use chunks_exact and remove 'reason' from BlockDevice API by @thejpster in #147
- Use a RefCell to provide interior mutability for VolumeManager. by @thejpster in #143
- Better trace logs. by @thejpster in #151
- Add a universal block cache by @thejpster in #148
- Create a VolumeManager type alias by @thejpster in #152
- Add LFN support when iterating directories by @jonathanpallant in #157
- Write to the second FAT by @thejpster in #160
- Remove stacked block by @thejpster in #159
- Move FAT-specific code in make_dir_in_dir (and fix .. entries) by @thejpster in #158
- Add support for partition id 04h by @Graicc in #165
- Set rust-version to 1.76 & add matrix for building and testing for MSRV by @elpiel in #167
- docs: README write to file example; reminder to run
file.flush()by @zpg6 in #174 - docs: adds same snippet of writing to files to
lib.rsfor crate doc by @zpg6 in #175 - Clean up imports and help text for examples. by @thejpster in #177
- fix bad typing in defmt debug by @ValouBambou in #183
- Update develop by @thejpster in #190
- fix seek and write to block start zeros rest of block after written data (#188) by @yanshay in #189
- Release v0.9.0 by @thejpster in #192
New Contributors
- @qwandor made their first contribution in #140
- @Graicc made their first contribution in #165
- @zpg6 made their first contribution in #174
- @ValouBambou made their first contribution in #183
- @yanshay made their first contribution in #189
Full Changelog: v0.8.2...v0.9.0
v0.8.2
What's Changed
- Fix #188 by backporting #189 by @thejpster in #191
Location
This branch was cut from release-v0.8.0 as it was a backport to Release v0.8.0 after a bunch of unreleased changes had hit the develop branch.
Full Changelog: v0.8.1...v0.8.2
v0.8.1
Known Issues
- Modifying existing files (as opposed to appending to a file) will cause data corruption unless you only write multiples of 512 bytes and only at offsets that are a multiple of 512 bytes (#188)
What's Changed
- Backport some fixes to 0.8 branch by @thejpster in #164
- Second FAT is now updated, if it is present
- When creating a directory
..now points at the root directory correctly - The info block containing the free cluster count is now updated when unmounting a FAT32 volume.
Location
This branch was cut from release-v0.8.0 as it was a backport to Release v0.8.0 after a bunch of unreleased changes had hit the develop branch.
Full Changelog: v0.8.0...v0.8.1
v0.8.0
Known Issues
- Modifying existing files (as opposed to appending to a file) will cause data corruption unless you only write multiples of 512 bytes and only at offsets that are a multiple of 512 bytes (#188)
What's Changed
- Upgrade to heapless ^0.8 by @bsodmike in #120
- Adds flush API by @peterkrull in #121
- Always closing (and more) by @peterkrull in #123
- Slightly refactor FatVolume::iterate_dir by @orsinium in #127
- Fix warnings by @thejpster in #134
- Fix seeking by @thejpster in #133
- Use SpiDevice to control the chip select. by @thejpster in #136
- Minor clean-ups of docs. by @thejpster in #138
- Release/v0.8.0 by @thejpster in #137
New Contributors
- @bsodmike made their first contribution in #120
- @peterkrull made their first contribution in #121
- @orsinium made their first contribution in #127
Full Changelog: v0.7.0...v0.8.0 or see https://github.com/rust-embedded-community/embedded-sdmmc-rs/blob/v0.8.0/CHANGELOG.md
v0.7.0
So many new things!
The highlights here are the smart handles, which can close files on drop - with the limitation that you can only open one file at a time. There are raw types with the old behaviour if you prefer those. The shell demo was also updated to support changing directory, and might serve as an example if you want to write your own MS-DOS style shell for your embedded application.
Thank you to everyone who helped out with this big release!
Known Issues
- Modifying existing files (as opposed to appending to a file) will cause data corruption unless you only write multiples of 512 bytes and only at offsets that are a multiple of 512 bytes (#188)
What's Changed
- Backport release into develop by @thejpster in #105
- Smart Handles by @thejpster in #103
- Linked no-std examples by @Nereuxofficial in #108
- Fix struct reference in documentation by @yanorei32 in #109
- Fix issue 74 by @thejpster in #110
- Support making directories by @thejpster in #111
- Update embedded hal to 1.0.0 by @AnyTimeTraveler in #106
- Enhanced shell example by @thejpster in #112
- Release/v0.7.0 by @thejpster in #116
New Contributors
- @Nereuxofficial made their first contribution in #108
- @yanorei32 made their first contribution in #109
- @AnyTimeTraveler made their first contribution in #106
Full Changelog: v0.6.0...v0.7.0
v0.6.0
Known Issues
- Modifying existing files (as opposed to appending to a file) will cause data corruption unless you only write multiples of 512 bytes and only at offsets that are a multiple of 512 bytes (#188)
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_typewill now perform card initialisation (#87 and #90). - Removed warning about unused arguments.
- Types are now documented at the top level (#86).
- Renamed
ClustertoClusterIdand 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:
Controlleralias forVolumeManagerremoved. - Breaking Change:
VolumeManager::open_dir_entryremoved, as it was unsafe to the user to randomly pick a starting cluster. - Old examples
create_test,test_mount,write_test,delete_test
v0.5.0
Known Issues
- Modifying existing files (as opposed to appending to a file) will cause data corruption unless you only write multiples of 512 bytes and only at offsets that are a multiple of 512 bytes (#188)
Changes
- Breaking Change: Renamed
ControllertoVolumeManager, to better describe what it does. - Breaking Change: Renamed
SdMmcSpitoSdCard - Breaking Change:
AcquireOptsnow hasuse_crc(which makes it ask for CRCs to be enabled) instead ofrequire_crc(which simply allowed the enable-CRC command to fail) - Breaking Change:
SdCard::newnow requires an object that implements the embedded-halDelayUstrait - Breaking Change: Renamed
card_size_bytestonum_bytes, to matchnum_blocks - More robust card intialisation procedure, with added retries
- Supports building with neither
defmtnorloglogging
Added
- Added
mark_card_as_initmethod, if you know the card is initialised and want to skip the initialisation step
Removed
- Breaking Change: Removed
BlockSpitype - card initialisation now handled as an internal state variable