Trait DeviceServerHandler

Source
pub trait DeviceServerHandler<___T: Transport = Channel> {
    // Required methods
    fn transfer(
        &mut self,
        sender: &ServerSender<Device, ___T>,
        request: Request<Transfer, ___T>,
        responder: Responder<Transfer>,
    ) -> impl Future<Output = ()> + Send;
    fn get_name(
        &mut self,
        sender: &ServerSender<Device, ___T>,
        responder: Responder<GetName>,
    ) -> impl Future<Output = ()> + Send;
}
Expand description

A server handler for the Device protocol.

See Device for more details.

Required Methods§

Source

fn transfer( &mut self, sender: &ServerSender<Device, ___T>, request: Request<Transfer, ___T>, responder: Responder<Transfer>, ) -> impl Future<Output = ()> + Send

Issue one or more transactions to a particular I2C device.

Each Transaction is performed in the order in which it appears in transactions. Data for read transfers (if there are any) is returned through read_data, which has one entry for each read transfer in transactions. Transaction processing continues until all transfers have been completed, an error occurs, or the target issues a NACK in response to a write transfer.

The possible error values are: ZX_ERR_INVALID_ARGS: transactions has zero elements, data_transfer was not specified for a Transaction, or there was a zero-length DataTransfer. ZX_ERR_OUT_OF_RANGE: A DataTransfer was too large to be handled by this I2C controller. ZX_ERR_IO_NOT_PRESENT: The device did not respond to its I2C address. ZX_ERR_IO_REFUSED: The device issued a NACK before the end of a write transfer.

Source

fn get_name( &mut self, sender: &ServerSender<Device, ___T>, responder: Responder<GetName>, ) -> impl Future<Output = ()> + Send

Get the name of this I2C Device. Returns ZX_ERR_NOT_SUPPORTED if the name is unspecified or the empty string.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§