#[non_exhaustive]pub enum TrainingError<ScdcErr, PhyErr> {
#[non_exhaustive] Scdc {
error: ScdcErr,
exit: TmdsExit<ScdcErr, PhyErr>,
},
#[non_exhaustive] Phy {
error: PhyErr,
exit: TmdsExit<ScdcErr, PhyErr>,
},
#[non_exhaustive] ExitFailed {
reason: FallbackReason,
error: ExitError<ScdcErr, PhyErr>,
},
#[non_exhaustive] InvalidRates {
index: usize,
rate: HdmiForumFrl,
},
NoRates,
}Expand description
Hard error that terminated a training attempt.
Distinct from TrainingOutcome::FallbackRequired: this means something failed —
an SCDC or PHY operation, or a rate list the procedure cannot run
(InvalidRates, NoRates) — not that the link
simply did not train.
After an SCDC or PHY error, plumbob performs LTS:L, returning both ends to TMDS as
after a fallback, unless TrainingConfig::exit_to_tmds_on_error is off or the sink
had set FLT_no_timeout (the link is then held for the test equipment, as with
TrainingOutcome::NoTimeoutHold). exit says what happened. When LTS:L itself fails after a fallback, the error is
ExitFailed.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
#[non_exhaustive]Scdc
The ScdcClient returned an error.
Fields
This variant is marked as non-exhaustive
error: ScdcErrThe error.
#[non_exhaustive]Phy
The PHY returned an error.
Fields
This variant is marked as non-exhaustive
error: PhyErrThe error.
#[non_exhaustive]ExitFailed
The attempt fell back for reason, and LTS:L then failed.
Fields
This variant is marked as non-exhaustive
reason: FallbackReasonWhy the attempt fell back.
#[non_exhaustive]InvalidRates
The rate list cannot be trained over, so nothing was done: no SCDC or PHY
operation was performed. Every rate must be an FRL rate (not NotSupported), and
each must be strictly lower than the one before it, because LTS:4 steps down.
Fields
This variant is marked as non-exhaustive
rate: HdmiForumFrlThat rate.
NoRates
The rate list is empty, so there is nothing to train at and nothing was done: no
SCDC or PHY operation was performed, and the link is as it was. A caller with no
FRL rate to try (a sink without FRL, for example) does not train; to take down an
earlier FRL link it calls FrlTrainer::exit_to_tmds.
Trait Implementations§
Source§impl<ScdcErr, PhyErr> Clone for TrainingError<ScdcErr, PhyErr>
impl<ScdcErr, PhyErr> Clone for TrainingError<ScdcErr, PhyErr>
Source§fn clone(&self) -> TrainingError<ScdcErr, PhyErr>
fn clone(&self) -> TrainingError<ScdcErr, PhyErr>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more