Releases: rust-embedded-community/embedded-sdmmc-rs
v0.9.0
Changed
- Breaking Change:
VolumeManager
now uses interior-mutability (with aRefCell
) and so most methods are now&self
. This also makes it easier to open multipleFile
,Directory
orVolume
objects at once. - Breaking Change: The
VolumeManager
,File
,Directory
andVolume
no longer implementSend
orSync
. 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 underlyingBlockDevice
- Breaking Change:
Error:LockError
variant added. - Breaking Change:
SearchId
was renamed toHandle
- Fixed writing at block start mid-file (previously overwrote subsequent file data with zeros up to the end of the block)
Added
File
now implements theembedded-io
Read
,Write
andSeek
traits.- New
iterate_dir_lfn
method onVolumeManager
andDirectory
- provides decoded Long File Names asOption<&str>
Removed
- Breaking Change: Removed the
reason: &str
argument 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.rs
for 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_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
toClusterId
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 forVolumeManager
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
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
Controller
toVolumeManager
, to better describe what it does. - Breaking Change: Renamed
SdMmcSpi
toSdCard
- Breaking Change:
AcquireOpts
now 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::new
now requires an object that implements the embedded-halDelayUs
trait - Breaking Change: Renamed
card_size_bytes
tonum_bytes
, to matchnum_blocks
- More robust card intialisation procedure, with added retries
- Supports building with neither
defmt
norlog
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