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"
67 [[deprecated(
"Use the Initiator(Feature) constructor")]]
87 : supported_features_(supported_features) {}
134 ConstByteSpan tx_buffer,
137 return DoWriteReadFor(device_address, tx_buffer, rx_buffer, timeout);
203 return DoValidateAndTransferFor(messages, timeout);
210 const void* tx_buffer,
211 size_t tx_size_bytes,
213 size_t rx_size_bytes,
217 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
218 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
261 ConstByteSpan tx_buffer,
263 return WriteReadFor(device_address, tx_buffer, ByteSpan(), timeout);
268 const void* tx_buffer,
269 size_t tx_size_bytes,
273 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
318 return WriteReadFor(device_address, ConstByteSpan(), rx_buffer, timeout);
324 size_t rx_size_bytes,
327 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
370 std::byte ignored_buffer[1] = {};
372 device_address, ConstByteSpan(), ignored_buffer, timeout);
377 static constexpr Feature kCompatibilityFeatures = Feature::kTenBit;
400 virtual Status DoTransferFor(span<const Message> messages,
405 [[nodiscard]]
Status DoValidateAndTransferFor(
411 Status ValidateMessages(span<const Message> messages)
const;
417 [[nodiscard]]
Status ValidateMessageFeatures(
const Message& msg)
const;
422 bool IsSupported(
Feature feature)
const;
425 Feature supported_features_ = Feature::kStandard;
431 static_cast<int>(b));
The common, base driver interface for initiating thread-safe transactions with devices on an I2C bus....
Definition: initiator.h:49
Status WriteFor(Address device_address, ConstByteSpan tx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:260
constexpr Initiator(Feature supported_features)
Definition: initiator.h:86
constexpr Initiator()
Definition: initiator.h:68
Status ReadFor(Address device_address, ByteSpan rx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:315
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:209
Status ProbeDeviceFor(Address device_address, chrono::SystemClock::duration timeout)
Definition: initiator.h:368
Feature
Defined set of supported i2c features.
Definition: initiator.h:52
Status TransferFor(span< const Message > messages, chrono::SystemClock::duration timeout)
Definition: initiator.h:201
Status ReadFor(Address device_address, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:322
Status WriteReadFor(Address device_address, ConstByteSpan tx_buffer, ByteSpan rx_buffer, chrono::SystemClock::duration timeout)
Definition: initiator.h:133
Status WriteFor(Address device_address, const void *tx_buffer, size_t tx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:267
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:86