pub struct Twis<'d, T: Instance> { /* private fields */ }
Expand description
TWIS driver.
Implementations§
source§impl<'d, T: Instance> Twis<'d, T>
impl<'d, T: Instance> Twis<'d, T>
sourcepub fn new(
twis: impl Peripheral<P = T> + 'd,
_irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd,
sda: impl Peripheral<P = impl GpioPin> + 'd,
scl: impl Peripheral<P = impl GpioPin> + 'd,
config: Config,
) -> Self
pub fn new( twis: impl Peripheral<P = T> + 'd, _irq: impl Binding<T::Interrupt, InterruptHandler<T>> + 'd, sda: impl Peripheral<P = impl GpioPin> + 'd, scl: impl Peripheral<P = impl GpioPin> + 'd, config: Config, ) -> Self
Create a new TWIS driver.
sourcepub fn address_match(&self) -> u8
pub fn address_match(&self) -> u8
Returns matched address for latest command.
sourcepub fn address_match_index(&self) -> usize
pub fn address_match_index(&self) -> usize
Returns the index of the address matched in the latest command.
sourcepub fn blocking_listen(&mut self, buffer: &mut [u8]) -> Result<Command, Error>
pub fn blocking_listen(&mut self, buffer: &mut [u8]) -> Result<Command, Error>
Wait for commands from an I2C master.
buffer
is provided in case master does a ‘write’ and is unused for ‘read’.
The buffer must have a length of at most 255 bytes on the nRF52832
and at most 65535 bytes on the nRF52840.
To know which one of the addresses were matched, call address_match
or address_match_index
sourcepub fn blocking_respond_to_read(
&mut self,
buffer: &[u8],
) -> Result<usize, Error>
pub fn blocking_respond_to_read( &mut self, buffer: &[u8], ) -> Result<usize, Error>
Respond to an I2C master READ command. Returns the number of bytes written. The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.
sourcepub fn blocking_respond_to_read_from_ram(
&mut self,
buffer: &[u8],
) -> Result<usize, Error>
pub fn blocking_respond_to_read_from_ram( &mut self, buffer: &[u8], ) -> Result<usize, Error>
Same as blocking_respond_to_read
but will fail instead of copying data into RAM.
Consult the module level documentation to learn more.
sourcepub fn blocking_listen_timeout(
&mut self,
buffer: &mut [u8],
timeout: Duration,
) -> Result<Command, Error>
pub fn blocking_listen_timeout( &mut self, buffer: &mut [u8], timeout: Duration, ) -> Result<Command, Error>
Wait for commands from an I2C master, with timeout.
buffer
is provided in case master does a ‘write’ and is unused for ‘read’.
The buffer must have a length of at most 255 bytes on the nRF52832
and at most 65535 bytes on the nRF52840.
To know which one of the addresses were matched, call address_match
or address_match_index
sourcepub fn blocking_respond_to_read_timeout(
&mut self,
buffer: &[u8],
timeout: Duration,
) -> Result<usize, Error>
pub fn blocking_respond_to_read_timeout( &mut self, buffer: &[u8], timeout: Duration, ) -> Result<usize, Error>
Respond to an I2C master READ command with timeout.
Returns the number of bytes written.
See [blocking_respond_to_read
].
sourcepub fn blocking_respond_to_read_from_ram_timeout(
&mut self,
buffer: &[u8],
timeout: Duration,
) -> Result<usize, Error>
pub fn blocking_respond_to_read_from_ram_timeout( &mut self, buffer: &[u8], timeout: Duration, ) -> Result<usize, Error>
Same as blocking_respond_to_read_timeout
but will fail instead of copying data into RAM.
Consult the module level documentation to learn more.
sourcepub async fn listen(&mut self, buffer: &mut [u8]) -> Result<Command, Error>
pub async fn listen(&mut self, buffer: &mut [u8]) -> Result<Command, Error>
Wait asynchronously for commands from an I2C master.
buffer
is provided in case master does a ‘write’ and is unused for ‘read’.
The buffer must have a length of at most 255 bytes on the nRF52832
and at most 65535 bytes on the nRF52840.
To know which one of the addresses were matched, call address_match
or address_match_index
sourcepub async fn respond_to_read(&mut self, buffer: &[u8]) -> Result<usize, Error>
pub async fn respond_to_read(&mut self, buffer: &[u8]) -> Result<usize, Error>
Respond to an I2C master READ command, asynchronously. Returns the number of bytes written. The buffer must have a length of at most 255 bytes on the nRF52832 and at most 65535 bytes on the nRF52840.
sourcepub async fn respond_to_read_from_ram(
&mut self,
buffer: &[u8],
) -> Result<usize, Error>
pub async fn respond_to_read_from_ram( &mut self, buffer: &[u8], ) -> Result<usize, Error>
Same as respond_to_read
but will fail instead of copying data into RAM. Consult the module level documentation to learn more.