pub enum SessionRequest {
Show 27 variants
Read32 {
resource: u32,
offset: u64,
responder: SessionRead32Responder,
},
Snapshot {
items: Vec<SnapshotItem>,
responder: SessionSnapshotResponder,
},
ReadAudit {
cursor: u64,
limit: u32,
responder: SessionReadAuditResponder,
},
Write32 {
resource: u32,
offset: u64,
value: u32,
write_mask: u32,
precondition: Option<Box<WritePrecondition>>,
readback: bool,
responder: SessionWrite32Responder,
},
Poll32 {
resource: u32,
offset: u64,
expected: u32,
mask: u32,
interval_ns: i64,
timeout_ns: i64,
responder: SessionPoll32Responder,
},
ExecuteSequence {
items: Vec<SequenceItem>,
responder: SessionExecuteSequenceResponder,
},
GpioRead {
resource: u32,
responder: SessionGpioReadResponder,
},
GpioWrite {
resource: u32,
value: bool,
responder: SessionGpioWriteResponder,
},
I2cTransfer {
resource: u32,
write_data: Vec<u8>,
read_length: u32,
responder: SessionI2cTransferResponder,
},
SpiTransmit {
resource: u32,
tx_data: Vec<u8>,
responder: SessionSpiTransmitResponder,
},
OpenGpio {
resource: u32,
endpoint: ServerEnd<GpioEndpointMarker>,
responder: SessionOpenGpioResponder,
},
OpenI2c {
resource: u32,
endpoint: ServerEnd<I2cEndpointMarker>,
responder: SessionOpenI2cResponder,
},
OpenSpi {
resource: u32,
endpoint: ServerEnd<SpiEndpointMarker>,
responder: SessionOpenSpiResponder,
},
WaitForInterrupt {
resource: u32,
after_sequence: u64,
timeout_ns: i64,
responder: SessionWaitForInterruptResponder,
},
ClockEnable {
resource: u32,
responder: SessionClockEnableResponder,
},
ClockDisable {
resource: u32,
responder: SessionClockDisableResponder,
},
ClockIsEnabled {
resource: u32,
responder: SessionClockIsEnabledResponder,
},
ClockSetRate {
resource: u32,
hz: u64,
responder: SessionClockSetRateResponder,
},
ClockQueryRate {
resource: u32,
hz_in: u64,
responder: SessionClockQueryRateResponder,
},
ClockGetRate {
resource: u32,
responder: SessionClockGetRateResponder,
},
ResetAssert {
resource: u32,
responder: SessionResetAssertResponder,
},
ResetDeassert {
resource: u32,
responder: SessionResetDeassertResponder,
},
ResetToggle {
resource: u32,
responder: SessionResetToggleResponder,
},
ResetStatus {
resource: u32,
responder: SessionResetStatusResponder,
},
SerialRead {
resource: u32,
responder: SessionSerialReadResponder,
},
SerialWrite {
resource: u32,
data: Vec<u8>,
responder: SessionSerialWriteResponder,
},
#[non_exhaustive] _UnknownMethod {
ordinal: u64,
control_handle: SessionControlHandle,
method_type: MethodType,
},
}Expand description
One experiment session. Closing the channel closes the session, cancels its pending work, and releases the mutation lease.
Variants§
Read32
One policy-checked, audited 32-bit read.
Snapshot
Bounded snapshot: every item is validated before the first read.
ReadAudit
Reads a bounded audit page so the host can drain incrementally and detect gaps.
Write32
One policy-checked, audited 32-bit write with optional precondition, read-modify-write, barrier, and readback.
Poll32
Repeated bounded read until (value & mask) == (expected & mask) or timeout. Uses asynchronous timers on the driver dispatcher.
Fields
responder: SessionPoll32ResponderExecuteSequence
Bounded ordered sequence of operations. Whole-sequence validation occurs before any hardware operation begins.
GpioRead
One policy-checked, audited GPIO read.
GpioWrite
One policy-checked, audited GPIO write. Requires mutation lease.
I2cTransfer
One policy-checked, audited I2C transfer. Non-empty write requires mutation lease.
SpiTransmit
One policy-checked, audited SPI transmit. Requires mutation lease.
OpenGpio
Opens a typed GPIO endpoint bound to this session.
OpenI2c
Opens a typed I2C endpoint bound to this session.
OpenSpi
Opens a typed SPI endpoint bound to this session.
WaitForInterrupt
Observes an interrupt event. Bounded hanging request that yields when
the interrupt sequence exceeds after_sequence or upon timeout.
Fields
responder: SessionWaitForInterruptResponderClockEnable
One policy-checked, audited Clock enable. Requires mutation lease.
ClockDisable
One policy-checked, audited Clock disable. Requires mutation lease.
ClockIsEnabled
One policy-checked, audited Clock is_enabled query.
ClockSetRate
One policy-checked, audited Clock set_rate. Requires mutation lease.
ClockQueryRate
One policy-checked, audited Clock query_supported_rate query.
ClockGetRate
One policy-checked, audited Clock get_rate query.
ResetAssert
One policy-checked, audited Reset assert. Requires mutation lease.
ResetDeassert
One policy-checked, audited Reset deassert. Requires mutation lease.
ResetToggle
One policy-checked, audited Reset toggle. Requires mutation lease.
ResetStatus
One policy-checked, audited Reset status query.
SerialRead
One policy-checked, audited Serial read.
SerialWrite
One policy-checked, audited Serial write. Requires mutation lease.
#[non_exhaustive]_UnknownMethod
An interaction was received which does not match any known method.
Fields
This variant is marked as non-exhaustive
control_handle: SessionControlHandlemethod_type: MethodTypeImplementations§
Source§impl SessionRequest
impl SessionRequest
pub fn into_read32(self) -> Option<(u32, u64, SessionRead32Responder)>
pub fn into_snapshot( self, ) -> Option<(Vec<SnapshotItem>, SessionSnapshotResponder)>
pub fn into_read_audit(self) -> Option<(u64, u32, SessionReadAuditResponder)>
pub fn into_write32( self, ) -> Option<(u32, u64, u32, u32, Option<Box<WritePrecondition>>, bool, SessionWrite32Responder)>
pub fn into_poll32( self, ) -> Option<(u32, u64, u32, u32, i64, i64, SessionPoll32Responder)>
pub fn into_execute_sequence( self, ) -> Option<(Vec<SequenceItem>, SessionExecuteSequenceResponder)>
pub fn into_gpio_read(self) -> Option<(u32, SessionGpioReadResponder)>
pub fn into_gpio_write(self) -> Option<(u32, bool, SessionGpioWriteResponder)>
pub fn into_i2c_transfer( self, ) -> Option<(u32, Vec<u8>, u32, SessionI2cTransferResponder)>
pub fn into_spi_transmit( self, ) -> Option<(u32, Vec<u8>, SessionSpiTransmitResponder)>
pub fn into_open_gpio( self, ) -> Option<(u32, ServerEnd<GpioEndpointMarker>, SessionOpenGpioResponder)>
pub fn into_open_i2c( self, ) -> Option<(u32, ServerEnd<I2cEndpointMarker>, SessionOpenI2cResponder)>
pub fn into_open_spi( self, ) -> Option<(u32, ServerEnd<SpiEndpointMarker>, SessionOpenSpiResponder)>
pub fn into_wait_for_interrupt( self, ) -> Option<(u32, u64, i64, SessionWaitForInterruptResponder)>
pub fn into_clock_enable(self) -> Option<(u32, SessionClockEnableResponder)>
pub fn into_clock_disable(self) -> Option<(u32, SessionClockDisableResponder)>
pub fn into_clock_is_enabled( self, ) -> Option<(u32, SessionClockIsEnabledResponder)>
pub fn into_clock_set_rate( self, ) -> Option<(u32, u64, SessionClockSetRateResponder)>
pub fn into_clock_query_rate( self, ) -> Option<(u32, u64, SessionClockQueryRateResponder)>
pub fn into_clock_get_rate(self) -> Option<(u32, SessionClockGetRateResponder)>
pub fn into_reset_assert(self) -> Option<(u32, SessionResetAssertResponder)>
pub fn into_reset_deassert(self) -> Option<(u32, SessionResetDeassertResponder)>
pub fn into_reset_toggle(self) -> Option<(u32, SessionResetToggleResponder)>
pub fn into_reset_status(self) -> Option<(u32, SessionResetStatusResponder)>
pub fn into_serial_read(self) -> Option<(u32, SessionSerialReadResponder)>
pub fn into_serial_write( self, ) -> Option<(u32, Vec<u8>, SessionSerialWriteResponder)>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL