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,
201 return DoValidateAndTransferFor(messages, timeout);
208 const void* tx_buffer,
209 size_t tx_size_bytes,
211 size_t rx_size_bytes,
215 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
216 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
259 ConstByteSpan tx_buffer,
261 return WriteReadFor(device_address, tx_buffer, ByteSpan(), timeout);
266 const void* tx_buffer,
267 size_t tx_size_bytes,
271 span(
static_cast<const std::byte*
>(tx_buffer), tx_size_bytes),
316 return WriteReadFor(device_address, ConstByteSpan(), rx_buffer, timeout);
322 size_t rx_size_bytes,
325 span(
static_cast<std::byte*
>(rx_buffer), rx_size_bytes),
368 std::byte ignored_buffer[1] = {};
370 device_address, ConstByteSpan(), ignored_buffer, timeout);
375 static constexpr Feature kCompatibilityFeatures = Feature::kTenBit;
389 return Status::Unimplemented();
395 virtual Status DoTransferFor(span<const Message> messages,
400 [[nodiscard]]
Status DoValidateAndTransferFor(
406 Status ValidateMessages(span<const Message> messages)
const;
412 [[nodiscard]]
Status ValidateMessageFeatures(
const Message& msg)
const;
417 bool IsSupported(
Feature feature)
const;
420 Feature supported_features_ = Feature::kStandard;
426 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:258
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:313
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:207
Status ProbeDeviceFor(Address device_address, chrono::SystemClock::duration timeout)
Definition: initiator.h:366
Feature
Defined set of supported i2c features.
Definition: initiator.h:52
Status TransferFor(span< const Message > messages, chrono::SystemClock::duration timeout)
Definition: initiator.h:199
Status ReadFor(Address device_address, void *rx_buffer, size_t rx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:320
Status WriteReadFor(Address device_address, ConstByteSpan tx_buffer, ByteSpan rx_buffer, chrono::SystemClock::duration timeout)
Status WriteFor(Address device_address, const void *tx_buffer, size_t tx_size_bytes, chrono::SystemClock::duration timeout)
Definition: initiator.h:265
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:86