hdmi_hal_async/lib.rs
1//! Async hardware abstraction traits for the HDMI stack.
2//!
3//! `hdmi-hal-async` is the async companion to `hdmi-hal`, following the same split as
4//! `embedded-hal` / `embedded-hal-async`. It mirrors each trait in `hdmi-hal` with
5//! `async fn` methods and otherwise identical signatures. It is a traits-only crate:
6//! no implementations live here.
7//!
8//! Each trait also has a `Send` twin, [`phy::SendHdmiPhy`] and [`scdc::SendScdcTransport`],
9//! for code that spawns link training on a multi-threaded executor: the same methods,
10//! returning futures that are `Send`. Every twin implementation is an implementation of the
11//! plain trait as well.
12
13#![no_std]
14#![forbid(unsafe_code)]
15// async fn in traits does not guarantee Send on the returned futures. This is intentional
16// for the plain traits: they serve single-threaded embedded executors (e.g. Embassy), where
17// Send is not required, the same decision embedded-hal-async made. The Send twins
18// (SendHdmiPhy, SendScdcTransport) are for multi-threaded executors.
19#![allow(async_fn_in_trait)]
20
21/// PHY control trait.
22pub mod phy;
23
24/// SCDC register transport trait.
25pub mod scdc;
26
27pub use hdmi_hal::phy::{
28 EqParams, FrlOutput, LaneEqParams, LanePatterns, LtpPattern, TxFfeLevel, TxFfeRestrictions,
29};
30
31/// The FRL rate, as `HdmiPhy::set_frl_rate` takes it; re-exported so that implementations
32/// name the same type this crate does.
33pub use hdmi_hal::HdmiForumFrl;