19#include "pw_bytes/span.h"
20#include "pw_chrono/system_clock.h"
21#include "pw_i2c/address.h"
22#include "pw_i2c/message.h"
23#include "pw_status/status.h"
70 [[deprecated(
"Use the Initiator(Feature) constructor")]]
90 : supported_features_(supported_features) {}
140 return DoWriteReadFor(device_address, tx_buffer, rx_buffer, timeout);
206 return DoValidateAndTransferFor(messages, timeout);
213 const void* tx_buffer,
214 size_t tx_size_bytes,
216 size_t rx_size_bytes,
220 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
221 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
271 const void* tx_buffer,
272 size_t tx_size_bytes,
276 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
327 size_t rx_size_bytes,
330 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
373 std::byte ignored_buffer[1] = {};
380 static constexpr Feature kCompatibilityFeatures = Feature::kTenBit;
408 [[nodiscard]]
Status DoValidateAndTransferFor(
420 [[nodiscard]]
Status ValidateMessageFeatures(
const Message& msg)
const;
425 bool IsSupported(
Feature feature)
const;
428 Feature supported_features_ = Feature::kStandard;
434 static_cast<int>(b));
The common, base driver interface for initiating thread-safe transactions with devices on an I2C bus....
Definition: initiator.h:52
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:90
Status WriteFor(Address device_address, ConstByteSpan tx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:263
constexpr Initiator(Feature supported_features)
Definition: initiator.h:89
constexpr Initiator()
Definition: initiator.h:71
Status ReadFor(Address device_address, ByteSpan rx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:318
Status WriteReadFor(Address device_address, const void *tx_buffer, size_t tx_size_bytes, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:212
Status ProbeDeviceFor(Address device_address, chrono::SystemClock::duration timeout)
Definition: initiator.h:371
Feature
Defined set of supported i2c features.
Definition: initiator.h:55
Status TransferFor(span< const Message > messages, chrono::SystemClock::duration timeout)
Definition: initiator.h:204
Status ReadFor(Address device_address, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:325
Status WriteReadFor(Address device_address, ConstByteSpan tx_buffer, ByteSpan rx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:136
Status WriteFor(Address device_address, const void *tx_buffer, size_t tx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:270
Cross-platform I2C library.
Definition: address.h:19