zmodem2 provides a ZMODEM file transmission protocol implementation driven by
the caller, who owns all I/O. It is based on prior work of Aleksei Arbuzov in
the zmodem crate.
This crate is fully no_std compatible and heapless.
Create a Sender or Receiver, then loop on poll() and act on the returned
Action:
Action::WriteWire(bytes)— write the bytes to the transport, then callwire_written(n)with the number of bytes accepted.Action::ReadFile { offset, max_len }(sender) — read the requested file bytes and provide them withsubmit_file(data).Action::WriteFile(bytes)(receiver) — persist the bytes, then callfile_written(n).Action::Event(event)— handle a protocolEvent(file/session lifecycle).Action::Idle— feed incoming transport bytes withsubmit_wire(bytes), or calltimeout()if none arrive.
The sender offers files with start_file(FileInfo) and ends the session with
finish(). Either side can abort().
- Git: https://codeberg.org/jarkko/zmodem2.git
- Commits follow the Conventional Commits specification.
- New commits must include a
Signed-off-bytrailer. - Versioning scheme uses Semantic Versioning.