Skip to main content

ClientEvent

Enum ClientEvent 

Source
pub enum ClientEvent<const MAX_DATA: usize> {
    PositiveResponse {
        sid: u8,
        data: Vec<u8, MAX_DATA>,
    },
    NegativeResponse {
        sid: u8,
        nrc: u8,
    },
    ResponsePending {
        sid: u8,
    },
    Timeout {
        sid: u8,
    },
    PeriodicData {
        did: u8,
        data: Vec<u8, MAX_DATA>,
    },
    Unsolicited {
        data: Vec<u8, MAX_DATA>,
    },
}
Expand description

An observable event emitted by the UDS client.

Events accumulate in the client’s event queue across ticks and are drained by the caller via drain_events(). Each event corresponds to a completed or failed request exchange.

The caller decides what to do with each event - the client never retries, escalates, or takes corrective action autonomously.

Variants§

§

PositiveResponse

A positive response was received for the given service.

sid is the request SID (not the response SID). data contains the response payload bytes after the response SID.

Fields

§sid: u8
§data: Vec<u8, MAX_DATA>
§

NegativeResponse

A negative response was received.

sid is the request SID. nrc is the Negative Response Code byte.

Fields

§sid: u8
§nrc: u8
§

ResponsePending

A 0x78 Response Pending NRC was received.

The client has switched to the P2* extended timeout and is still waiting for the final response. This event is emitted once per 0x78 received - the caller can observe how many were received before the final response.

Fields

§sid: u8
§

Timeout

No response was received within the P2 or P2* timeout.

The pending request has been discarded. The caller must decide whether to retry.

Fields

§sid: u8
§

PeriodicData

A periodic data response arrived from the server.

[periodic_data_identifier (1 byte), data_record (n bytes)]

No SID prefix is present - did is the first byte of the frame, which is the low byte of the periodic DID identifier. data contains the data record bytes that followed.

Only emitted for DID low bytes registered via subscribe_periodic

Fields

§did: u8

Low byte of the periodic DID identifier.

§data: Vec<u8, MAX_DATA>

Data record bytes

§

Unsolicited

A response arrived with no matching pending request.

This can occur under fault injection (reordered or delayed responses arriving after a timeout) or if the server sends an unsolicited response.

Fields

§data: Vec<u8, MAX_DATA>

Trait Implementations§

Source§

impl<const MAX_DATA: usize> Clone for ClientEvent<MAX_DATA>

Source§

fn clone(&self) -> ClientEvent<MAX_DATA>

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<const MAX_DATA: usize> Debug for ClientEvent<MAX_DATA>

Source§

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

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

impl<const MAX_DATA: usize> Eq for ClientEvent<MAX_DATA>

Source§

impl<const MAX_DATA: usize> PartialEq for ClientEvent<MAX_DATA>

Source§

fn eq(&self, other: &ClientEvent<MAX_DATA>) -> bool

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

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

Inequality operator !=. Read more
Source§

impl<const MAX_DATA: usize> StructuralPartialEq for ClientEvent<MAX_DATA>

Auto Trait Implementations§

§

impl<const MAX_DATA: usize> Freeze for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> RefUnwindSafe for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> Send for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> Sync for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> Unpin for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> UnsafeUnpin for ClientEvent<MAX_DATA>

§

impl<const MAX_DATA: usize> UnwindSafe for ClientEvent<MAX_DATA>

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 = 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.