pub enum EdidWarning {
UnknownExtension(u8),
DescriptorParseFailed,
InvalidManufacturerId,
MalformedDataBlock,
DtdSlotTooShort,
DtdPixelClockOverflow,
ExtensionBlockLimitReached {
declared: usize,
limit: usize,
},
SizeMismatch {
expected: usize,
actual: usize,
},
}Expand description
A non-fatal condition encountered while parsing or processing an EDID block.
Warnings are collected into ParsedEdid::warnings (from the parser)
and into DisplayCapabilities::warnings (from handlers).
In alloc/std builds each entry is a ParseWarning; use downcast_ref to recover the
concrete type. In bare no_std builds this enum is used directly.
Variants§
UnknownExtension(u8)
An extension block with an unrecognised tag was encountered. The inner value is the tag byte.
DescriptorParseFailed
A 18-byte descriptor could not be decoded.
InvalidManufacturerId
The manufacturer ID bytes do not encode a valid PNP ID.
Each of the three 5-bit fields must be in the range 1–26 (A–Z). Values of 0 or
27–31 indicate a corrupted or unprogrammed EEPROM.
DisplayCapabilities::manufacturer
is left as None.
MalformedDataBlock
A data block inside an extension block declared a length that extends past the end of the data block collection. Remaining data blocks in the collection are skipped.
DtdSlotTooShort
A Detailed Timing Descriptor slot was skipped because the byte slice passed to the decoder was shorter than the required 18 bytes.
This indicates a malformed extension block that claimed to contain a DTD but did not supply enough data.
DtdPixelClockOverflow
A Detailed Timing Descriptor slot was skipped because the pixel clock value would overflow during refresh rate calculation.
This indicates a malformed or corrupted EDID: valid pixel clocks are at most
a few hundred MHz (fits comfortably in a u32 after scaling by 10 000).
ExtensionBlockLimitReached
The number of extension blocks declared in the base block exceeds the parser’s
safety limit. Only the first limit blocks were parsed; the rest were ignored.
Real displays have at most a handful of extension blocks. A very large
extension_count most likely indicates a malformed or hostile EDID.
Fields
SizeMismatch
The byte slice length does not match the size implied by the extension count.
The EDID header declares extension_count extension blocks, so the expected
size is (1 + extension_count) × 128 bytes. Extra bytes are ignored but may
indicate a driver bug, a KVM device, or a hotplug race.
Fields
actual: usizeThe actual length of the byte slice passed to crate::parse_edid.
Trait Implementations§
Source§impl Clone for EdidWarning
impl Clone for EdidWarning
Source§fn clone(&self) -> EdidWarning
fn clone(&self) -> EdidWarning
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EdidWarning
impl Debug for EdidWarning
Source§impl Display for EdidWarning
impl Display for EdidWarning
Source§impl Error for EdidWarning
impl Error for EdidWarning
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()