Skip to main content

EdidWarning

Enum EdidWarning 

Source
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

§declared: usize

The value of extension_count as declared in the base block.

§limit: usize

The maximum number of extension blocks the parser will process.

§

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

§expected: usize

The size implied by the extension count: (1 + extension_count) × 128.

§actual: usize

The actual length of the byte slice passed to crate::parse_edid.

Trait Implementations§

Source§

impl Clone for EdidWarning

Source§

fn clone(&self) -> EdidWarning

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for EdidWarning

Source§

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

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

impl Display for EdidWarning

Source§

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

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

impl Error for EdidWarning

1.30.0 · Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl PartialEq for EdidWarning

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for EdidWarning

Source§

impl Eq for EdidWarning

Source§

impl StructuralPartialEq for EdidWarning

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> ExtensionData for T
where T: Any + Debug + Send + Sync,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Returns self as &dyn Any to enable downcasting.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.