pub fn write_read(
        &mut self,
        address: u8,
        bytes: &[u8],
        buffer: &mut [u8],
    ) -> Result<(), Error> {
        // It would be possible to combine the write and read in one transaction, but
        // filling the tx fifo with the current code is somewhat slow even in release
        // mode which can cause issues.
        self.write(address, bytes)?;
        self.read(address, buffer)?;

        Ok(())
    }
Writes bytes to slave with given `address` and then reads enough bytes
to fill `buffer` *in a single transaction*
esp-lp-hal/src/i2c.rs