Skip to content

Releases: rust-embedded-community/embedded-sdmmc-rs

v0.10.0

Choose a tag to compare

@thejpster thejpster released this 10 Aug 10:35
10edd5a

Summary

  • A new library, embedded-sdmmc-types was created, holding the BlockDevice traits, and some SD/MMC functions and types.
  • Improvements to SD Card CSD parsing
  • You can now open files using their Long File Name, not just their 8.3 file name.
  • You can delete (empty) directories

Pull Requests

  • Fix missing type parameter in VolumeManager::device by @fko-kuptec in #196
  • Remove the create-dir feature from the todo list by @kasper64 in #198
  • Fix stack overflow when receiver is typed as embedded_io trait by @tmpfs in #201
  • Update to defmt 1.0.1, embedded-hal-bus 0.3.0, env_logger 0.11.8, heapless 0.9.1, and hex-literal 1.0.0. by @ColinFinck in #204
  • Implement core::error::Error for all error types by @michael-p in #180
  • docs: adds esp32 example by @zpg6 in #205
  • Implement Ord and PartialOrd for ShortFileName. by @de-vri-es in #208
  • Fix CI - bump MSRV to 1.87 by @thejpster in #211
  • Update to edition 2024 by @jannic in #213
  • Support directory deletion by @estebank in #210
  • Allow close_volume() to complete even if updating the info sector fails by @henryshunt in #214
  • Documentation updates by @thejpster in #216
  • Support opening files by long file name by @thejpster in #217
  • Reduce LfnBuffer size from 24 to 16 bytes on 32-bits sys. by @Conaclos in #218
  • Switch to ControlFlow, plus other small fixes by @thejpster in #219
  • Improve CSD parsing by @robamu in #222
  • Restructuring, CID support by @robamu in #224
  • bump embedded-io to v0.7 and introduce thiserror by @robamu in #223
  • add some useful derives by @robamu in #225
  • add an API to check existence of directory entry. by @robamu in #227
  • Downgraded one log level from warn! to trace! ... by @ardave in #230
  • Fix has_open_handles() boolean logic by @hansmrtn in #233
  • improvements for SD card module by @robamu in #226
  • CSD structure now has Copy and Clone derives by @robamu in #231
  • add justfile by @robamu in #229
  • Fix FAT32 directory iteration not stopping on ControlFlow::Break by @hansmrtn in #234
  • use enums instead of constants for CMD and ACMD by @robamu in #228
  • Fix lifetime of returned dierctories and files by @Conaclos in #235
  • IUse Self where it makes the return type easier to read/parse by @Conaclos in #236
  • Fix SPI communication after #222 broke it by @shilga in #237
  • CSD unchecked constructor by @robamu in #239
  • Add contributions notice by @thejpster in #241
  • start adding argument and response module by @robamu in #232
  • add link to Z7 SD card driver by @robamu in #244
  • extend SD mock by @robamu in #243
  • Decode CSD based on CSD_STRUCTURE, not card_type by @fdomke in #248
  • src/sdcard/spi.rs: Wait for idle gap after escape by @fdomke in #249
  • new embedded-sdmmc-types crate by @robamu in #245
  • prepare embedded-sdmmc-v0.10.0 and embedded-sdmmc-types-v0.1.0 by @robamu in #251
  • Release embedded-sdmmc 0.10.0 and embedded-sdmmc-types 0.1.0 by @thejpster in #252

New Contributors

Full Changelog: v0.9.0...v0.10.0

v0.9.0

Choose a tag to compare

@thejpster thejpster released this 14 Jun 21:29
a536359

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
  • 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 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

Pull Requests

New Contributors

Full Changelog: v0.8.2...v0.9.0

v0.8.2

Choose a tag to compare

@thejpster thejpster released this 07 Jun 21:58
ea8cd4c

What's Changed

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

Choose a tag to compare

@thejpster thejpster released this 03 Nov 14:35
bbb7374

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

Choose a tag to compare

@thejpster thejpster released this 12 Jul 16:24
8a2bf64

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

New Contributors

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

Choose a tag to compare

@thejpster thejpster released this 09 Feb 10:42
2f8303a

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

New Contributors

Full Changelog: v0.6.0...v0.7.0

v0.6.0

Choose a tag to compare

@thejpster thejpster released this 20 Oct 15:59
d362a6a

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 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

v0.5.0

Choose a tag to compare

@thejpster thejpster released this 22 May 18:26

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 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