Skip to main content

TrainingEvent

Enum TrainingEvent 

Source
#[non_exhaustive]
pub enum TrainingEvent {
Show 19 variants
#[non_exhaustive]
SourceTestConfigRead { config: SourceTestConfig, },
#[non_exhaustive]
FltReady { after_polls: u32, },
#[non_exhaustive]
FltReadyTimeout { polls: u32, },
#[non_exhaustive]
RateConfigured { rate: HdmiForumFrl, ffe_levels: FfeLevels, },
#[non_exhaustive]
LtpRequested { requests: LtpRequests, },
#[non_exhaustive]
FfeRaised { lane: u8, level: u8, },
#[non_exhaustive]
UndefinedLtpRequest { lane: u8, value: u8, in_use: bool, },
#[non_exhaustive]
TrainingPassed { after_polls: u32, },
#[non_exhaustive]
RateLowered { from: HdmiForumFrl, to: HdmiForumFrl, }, RatesExhausted,
#[non_exhaustive]
TrainingTimeout { polls: u32, }, FrlStartWithRetrain, RetrainRequested,
#[non_exhaustive]
RetrainsExhausted { retrains: u32, },
#[non_exhaustive]
FrlStart { after_polls: u32, },
#[non_exhaustive]
FrlStartTimeout { polls: u32, },
#[non_exhaustive]
NoTimeoutCapReached { polls: u32, }, ExitedToTmds,
#[non_exhaustive]
ExitToTmdsFailed { scdc: bool, phy: bool, },
}
Expand description

A single event in a training attempt, in order from LTS:2 to the terminal state.

Poll counts include the poll that saw the event (after_polls), or count the polls made when a limit ran out (polls), so they can be read against the limits in the trace’s TrainingConfig. A polls is the limit, except in LTS:3 when FLT_no_timeout changes after the new limit has already passed: the state then ends at once, and polls says how many were made.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

#[non_exhaustive]
SourceTestConfigRead

The sink’s Source_Test_Configuration was read (LTS:2 or LTS:3).

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§config: SourceTestConfig

The register as read: all six bits, including those plumbob does not act on.

§

#[non_exhaustive]
FltReady

LTS:2: FLT_ready asserted.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§after_polls: u32

Polls of FLT_ready, including the one that saw it.

§

#[non_exhaustive]
FltReadyTimeout

LTS:2: FLT_ready did not assert.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§polls: u32

Polls made: the limit.

§

#[non_exhaustive]
RateConfigured

LTS:2 or LTS:4: Config_1 written with this rate.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§rate: HdmiForumFrl

The FRL rate.

§ffe_levels: FfeLevels

The FFE levels advertised, limited for the rate.

§

#[non_exhaustive]
LtpRequested

LTS:3: the sink posted new requests (one event per FLT_update, not per poll). The requests that pass training are recorded as TrainingPassed instead.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§requests: LtpRequests

The requests for all four lanes.

§

#[non_exhaustive]
FfeRaised

LTS:3: a lane’s TxFFE level was raised in response to 0xE.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§lane: u8

The lane (0–3).

§level: u8

Its new TxFFE level.

§

#[non_exhaustive]
UndefinedLtpRequest

LTS:3: a lane requested a value the specification leaves undefined (0x9–0xD). A lane in use keeps its pattern and TxFFE level; lane 3 at a 3-lane rate is not in use, and its requests are not acted on whatever their value.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§lane: u8

The lane (0–3).

§value: u8

The value requested.

§in_use: bool

Whether the lane is in use at the current rate.

§

#[non_exhaustive]
TrainingPassed

LTS:3: all active lanes reported 0x0.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§after_polls: u32

Polls of Update_0 in this pass through LTS:3, including the one that saw it.

§

#[non_exhaustive]
RateLowered

LTS:4: the sink requested a lower rate; training continues at to.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§from: HdmiForumFrl

The rate the sink rejected.

§to: HdmiForumFrl

The next rate in the list.

§

RatesExhausted

LTS:4: the sink requested a lower rate than the last one in the list.

§

#[non_exhaustive]
TrainingTimeout

LTS:3: training did not pass within the poll limit.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§polls: u32

Polls made in this pass through LTS:3: the limit, or more if the tester cleared FLT_no_timeout after the normal limit had passed.

§

FrlStartWithRetrain

LTS:P: the sink set FRL_start and FLT_update together. The retrain wins: FRL_start is cleared, and RetrainRequested (or RetrainsExhausted) follows.

§

RetrainRequested

LTS:P: the sink requested retraining (FLT_update); training returns to LTS:3.

§

#[non_exhaustive]
RetrainsExhausted

LTS:P: the sink requested retraining once more after max_retrains retrains.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§retrains: u32

Retrains made: max_retrains.

§

#[non_exhaustive]
FrlStart

LTS:P: FRL_start asserted. Training succeeded.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§after_polls: u32

Polls of Update_0 in LTS:P, including the one that saw it.

§

#[non_exhaustive]
FrlStartTimeout

LTS:P: FRL_start did not assert.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§polls: u32

Polls made: the limit.

§

#[non_exhaustive]
NoTimeoutCapReached

LTS:2, LTS:3 or LTS:P: the sink sets FLT_no_timeout and the no_timeout_poll_cap ran out. The attempt ends with NoTimeoutHold, leaving the link as it is. The state is the one the events before it lead into.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§polls: u32

Polls made in the state: the cap, or more if the sink set FLT_no_timeout in LTS:3 after a cap lower than the polls already made.

§

ExitedToTmds

LTS:L: the sink and PHY were returned to TMDS.

§

#[non_exhaustive]
ExitToTmdsFailed

LTS:L: a step failed. Every step was attempted; an end whose steps all succeeded is in TMDS.

Fields

This variant is marked as non-exhaustive
Non-exhaustive enum variants could have additional fields added in future. Therefore, non-exhaustive enum variants cannot be constructed in external crates and cannot be matched against.
§scdc: bool

An SCDC step (Config_1, FLT_update) failed.

§phy: bool

A PHY step (patterns, rate) failed.

Trait Implementations§

Source§

impl Clone for TrainingEvent

Source§

fn clone(&self) -> TrainingEvent

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for TrainingEvent

Source§

impl Debug for TrainingEvent

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Eq for TrainingEvent

Source§

impl PartialEq for TrainingEvent

Source§

fn eq(&self, other: &TrainingEvent) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TrainingEvent

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.