Skip to main content

Crate ashlar

Crate ashlar 

Source
Expand description

A display connection stack in Rust — HDMI 2.1 first.

Ashlar takes a display link from raw capability bytes to a trained link: parse what the sink can do, negotiate the best mode the source, sink and cable can all carry, describe it in InfoFrames, and bring up the link over SCDC with FRL training.

Each layer is its own crate and can be used on its own. This crate re-exports them behind one feature per crate, so a single dependency can pull in exactly the layers you need:

[dependencies]
ashlar = { version = "0.1", features = ["piaf", "concordance"] }
FeatureCrateLayer
display-typesdisplay_typesShared display capability vocabulary
piafpiafEDID and DisplayID parsing
concordanceconcordanceHDMI 2.1 mode negotiation
cartouchecartoucheInfoFrame encoding and decoding
culvertculvertTyped SCDC register access
culvert-asyncculvert_asyncAsync companion to culvert
plumbobplumbobFRL link training
plumbob-asyncplumbob_asyncAsync companion to plumbob
hdmi-halhdmi_halScdcTransport and HdmiPhy traits
hdmi-hal-asynchdmi_hal_asyncAsync companion to hdmi-hal
hdmi-hal-i2c-devhdmi_hal_i2c_devLinux userspace backend over /dev/i2c-N

full enables every crate. std (default) and alloc are forwarded to the enabled crates that have them; disable default features for no_std use.

See the Ashlar organisation for the full stack.

Re-exports§

pub use display_types;
pub use piaf;
pub use concordance;
pub use cartouche;
pub use culvert;
pub use culvert_async;
pub use plumbob;
pub use plumbob_async;
pub use hdmi_hal;
pub use hdmi_hal_async;
pub use hdmi_hal_i2c_dev;