21#include "pw_bytes/span.h"
22#include "pw_containers/to_array.h"
23#include "pw_i2c/initiator.h"
47 : return_value_(expected_return_value),
49 direction_(direction),
65 Direction direction()
const {
return direction_; }
71 const Status return_value_;
73 const Direction direction_;
75 static constexpr std::array<std::byte, 1> ignored_buffer_ = {};
78constexpr MockMessage MockReadMessage(Status expected_return_value,
80 ConstByteSpan data_buffer) {
82 expected_return_value, address, MockMessage::kMockRead, data_buffer);
85constexpr MockMessage MockWriteMessage(Status expected_return_value,
87 ConstByteSpan data_buffer) {
89 expected_return_value, address, MockMessage::kMockWrite, data_buffer);
92constexpr MockMessage MockProbeMessage(Status expected_return_value,
94 return MockMessage(expected_return_value, address);
98template <
size_t kSize>
99constexpr std::array<MockMessage, kSize> MakeExpectedMessageArray(
100 const MockMessage (&messages)[kSize]) {
111 Status expected_return_value,
113 std::optional<chrono::SystemClock::duration>
timeout = std::nullopt)
114 : return_value_(expected_return_value),
115 test_messages_(test_messages.begin(), test_messages.end()),
118 std::optional<chrono::SystemClock::duration>
timeout()
const {
122 const std::vector<MockMessage>& test_messages()
const {
123 return test_messages_;
126 Status return_value()
const {
return return_value_; }
129 const Status return_value_;
130 const std::vector<MockMessage> test_messages_;
131 const std::optional<chrono::SystemClock::duration> timeout_;
191 :
Initiator(Initiator::Feature::kStandard),
192 expected_transactions_(transaction_list),
193 expected_transaction_index_(0) {}
208 if (expected_transaction_index_ != expected_transactions_.size()) {
209 return Status::OutOfRange();
242 size_t expected_transaction_index_;
247template <
size_t kSize>
248constexpr std::array<MockMessageTransaction, kSize>
249MakeExpectedTransactionArray(
The common, base driver interface for initiating thread-safe transactions with devices on an I2C bus....
Definition: initiator.h:52
Definition: initiator_message_mock.h:37
Definition: initiator_message_mock.h:188
Definition: initiator_message_mock.h:108
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 Initiator()
Definition: initiator.h:71
Address address() const
Gets the I2C address that the I2C transaction is targeting.
Definition: initiator_message_mock.h:63
constexpr MockMessage(Status expected_return_value, Address device_address)
Alternative constructor for creating probe transactions.
Definition: initiator_message_mock.h:53
Status return_value() const
Gets the expected return value for the transaction.
Definition: initiator_message_mock.h:60
~MockMessageInitiator() override
std::optional< chrono::SystemClock::duration > timeout() const
Gets the minimum duration to wait for a blocking I2C transaction.
Definition: initiator_message_mock.h:118
Status Finalize() const
Definition: initiator_message_mock.h:207
ConstByteSpan data_buffer() const
Gets the buffer that is virtually read.
Definition: initiator_message_mock.h:68
Cross-platform I2C library.
Definition: address.h:19