20#include "pw_bytes/span.h"
21#include "pw_containers/to_array.h"
22#include "pw_i2c/initiator.h"
47 Status expected_return_value,
51 std::optional<chrono::SystemClock::duration>
timeout = std::nullopt)
52 : return_value_(expected_return_value),
55 address_(device_address),
60 Status expected_return_value,
62 std::optional<chrono::SystemClock::duration>
timeout = std::nullopt)
76 std::optional<chrono::SystemClock::duration>
timeout()
const {
87 const Status return_value_;
90 static constexpr std::array<std::byte, 1> ignored_buffer_ = {};
91 const Address address_;
92 const std::optional<chrono::SystemClock::duration> timeout_;
98 Status expected_return_value,
101 std::optional<chrono::SystemClock::duration> timeout = std::nullopt) {
112 Status expected_return_value,
115 std::optional<chrono::SystemClock::duration> timeout = std::nullopt) {
126 Status expected_return_value,
128 std::optional<chrono::SystemClock::duration> timeout = std::nullopt) {
129 return Transaction(expected_return_value, device_address, timeout);
177 :
Initiator(Initiator::Feature::kStandard),
178 expected_transactions_(transaction_list),
179 expected_transaction_index_(0) {}
194 if (expected_transaction_index_ != expected_transactions_.size()) {
195 return Status::OutOfRange();
224 size_t expected_transaction_index_;
228template <
size_t kSize>
229constexpr std::array<Transaction, kSize> MakeExpectedTransactionArray(
The common, base driver interface for initiating thread-safe transactions with devices on an I2C bus....
Definition: initiator.h:52
Definition: initiator_mock.h:174
Definition: initiator_mock.h:42
std::chrono::duration< rep, period > duration
Alias for durations representable with this clock.
Definition: system_clock.h:90
constexpr std::array< std::remove_cv_t< T >, kSize > to_array(T(&values)[kSize])
Definition: to_array.h:55
constexpr Transaction(Status expected_return_value, Address device_address, std::optional< chrono::SystemClock::duration > timeout=std::nullopt)
Alternative constructor for creating probe transactions.
Definition: initiator_mock.h:59
constexpr Transaction WriteTransaction(Status expected_return_value, Address device_address, ConstByteSpan write_buffer, std::optional< chrono::SystemClock::duration > timeout=std::nullopt)
Definition: initiator_mock.h:111
constexpr Initiator()
Definition: initiator.h:71
constexpr Transaction ProbeTransaction(Status expected_return_value, Address device_address, std::optional< chrono::SystemClock::duration > timeout=std::nullopt)
Definition: initiator_mock.h:125
Address address() const
Gets the I2C address that the I2C transaction is targeting.
Definition: initiator_mock.h:81
ConstByteSpan write_buffer() const
Gets the buffer that the I2C device should write to.
Definition: initiator_mock.h:73
std::optional< chrono::SystemClock::duration > timeout() const
Gets the minimum duration to wait for a blocking I2C transaction.
Definition: initiator_mock.h:76
ConstByteSpan read_buffer() const
Gets the buffer that is virtually read.
Definition: initiator_mock.h:70
Status return_value() const
Gets the expected return value for the transaction.
Definition: initiator_mock.h:84
constexpr Transaction(Status expected_return_value, Address device_address, ConstByteSpan write_buffer, ConstByteSpan read_buffer, std::optional< chrono::SystemClock::duration > timeout=std::nullopt)
Definition: initiator_mock.h:46
Status Finalize() const
Definition: initiator_mock.h:193
constexpr Transaction ReadTransaction(Status expected_return_value, Address device_address, ConstByteSpan read_buffer, std::optional< chrono::SystemClock::duration > timeout=std::nullopt)
Definition: initiator_mock.h:97
~MockInitiator() override
Cross-platform I2C library.
Definition: address.h:19