#dfu #sans-io #no-std

no-std dfu-core

Sans IO core library (traits and tools) for DFU

9 releases (breaking)

0.7.0 Nov 9, 2024
0.6.0 May 10, 2023
0.5.1 Mar 4, 2023
0.4.2 Jul 31, 2022
0.0.0 May 31, 2021

#135 in Hardware support

Download history 962/week @ 2024-07-29 988/week @ 2024-08-05 1108/week @ 2024-08-12 1219/week @ 2024-08-19 775/week @ 2024-08-26 1095/week @ 2024-09-02 1030/week @ 2024-09-09 1032/week @ 2024-09-16 1004/week @ 2024-09-23 1137/week @ 2024-09-30 1823/week @ 2024-10-07 1337/week @ 2024-10-14 1624/week @ 2024-10-21 1424/week @ 2024-10-28 1575/week @ 2024-11-04 788/week @ 2024-11-11

5,484 downloads per month
Used in 6 crates (3 directly)

MIT/Apache

60KB
1.5K SLoC

Rust Latest Version License Docs.rs LOC Dependency Status

dfu-core

Sans IO core library (traits and tools) for DFU.

Features

  • no_std compatible
  • async and sync compatible
  • write a firmware into a device (DFU download)
  • read a firmware from a device (DFU upload)
  • minimal dependencies
  • uses a state machine to ensure the implementations are correctly done

Traits & Structs

  • trait DfuIo: a trait that can be made into an object that provides the IO to this library logic.
  • struct DfuSansIo: a struct that allows the developer to do the DFU logic using a state machine (can be async or sync).
  • struct DfuSync: a basic sync implementation that uses a DfuIo provided in argument during runtime.
  • type MemoryPage and type mem: primitives representing the memory layout of the device (like char and str).
  • struct MemoryLayout: (requires features std) an allocated representation of the memory layout (like String) that can parse a memory layout from a string.
  • FunctionalDescriptor: can read the extra bytes of a USB functional descriptor to provide information for the DFU logic.

DFU Documentation

This crate has been made based on the following specifications:

License

MIT OR Apache-2.0

Dependencies

~0.4–1MB
~22K SLoC