22#include "base/BaseI2c.h"
36 std::vector<uint8_t>
tx;
38 std::vector<uint8_t>
rx;
47 explicit MockI2c(uint16_t device_address = 0x20) noexcept;
53 hf_i2c_err_t
Write(const hf_u8_t* data, hf_u16_t length, hf_u32_t timeout_ms = 0) noexcept override;
54 hf_i2c_err_t
Read(hf_u8_t* data, hf_u16_t length, hf_u32_t timeout_ms = 0) noexcept override;
55 hf_i2c_err_t
WriteRead(const hf_u8_t* tx_data, hf_u16_t tx_length, hf_u8_t* rx_data,
56 hf_u16_t rx_length, hf_u32_t timeout_ms = 0) noexcept override;
62 void QueueRead(std::vector<uint8_t> bytes, hf_i2c_err_t result = hf_i2c_err_t::I2C_SUCCESS);
63 void FailNext(hf_i2c_err_t error,
size_t count = 1) noexcept;
73 [[nodiscard]]
const std::vector<I2cTransaction>&
Transactions() const noexcept {
return log_; }
77 [[nodiscard]]
size_t WritesTo(uint8_t reg)
const noexcept;
82 void ModelWrite(
const std::vector<uint8_t>& tx)
noexcept;
83 void ModelRead(uint8_t* rx, uint16_t length)
noexcept;
100 std::vector<I2cTransaction>
log_;
hf_i2c_err_t Read(hf_u8_t *data, hf_u16_t length, hf_u32_t timeout_ms=0) noexcept override
Definition MockI2c.cpp:109
int InitializeCalls() const noexcept
Definition MockI2c.h:78
uint8_t GetRegister(uint8_t reg) const noexcept
Definition MockI2c.h:68
bool Initialize() noexcept override
Definition MockI2c.cpp:16
void QueueRead(std::vector< uint8_t > bytes, hf_i2c_err_t result=hf_i2c_err_t::I2C_SUCCESS)
Definition MockI2c.cpp:23
void SetReadOnly(uint8_t reg, bool read_only=true) noexcept
Definition MockI2c.h:70
void FailNext(hf_i2c_err_t error, size_t count=1) noexcept
Definition MockI2c.cpp:27
void SetRegister(uint8_t reg, uint8_t value) noexcept
Definition MockI2c.h:67
uint16_t address_
Definition MockI2c.h:85
bool register_model_
Definition MockI2c.h:88
uint8_t reg_pointer_
Definition MockI2c.h:89
bool init_result_
Definition MockI2c.h:86
void SetDeviceAddress(uint16_t address) noexcept
Definition MockI2c.h:60
void SetResponder(Responder responder)
Definition MockI2c.h:64
hf_i2c_err_t Write(const hf_u8_t *data, hf_u16_t length, hf_u32_t timeout_ms=0) noexcept override
Definition MockI2c.cpp:100
std::vector< I2cTransaction > log_
Definition MockI2c.h:100
size_t CountOf(I2cTransaction::Kind kind) const noexcept
Definition MockI2c.cpp:32
void ClearTransactions() noexcept
Definition MockI2c.h:74
std::array< uint8_t, 256 > registers_
Definition MockI2c.h:90
std::array< bool, 256 > read_only_
Definition MockI2c.h:91
hf_u16_t GetDeviceAddress() const noexcept override
Definition MockI2c.h:57
std::function< hf_i2c_err_t(const I2cTransaction &txn, uint8_t *rx)> Responder
Definition MockI2c.h:45
hf_i2c_err_t Complete(I2cTransaction &txn, uint8_t *rx)
Definition MockI2c.cpp:63
void ModelWrite(const std::vector< uint8_t > &tx) noexcept
Definition MockI2c.cpp:44
hf_i2c_err_t WriteRead(const hf_u8_t *tx_data, hf_u16_t tx_length, hf_u8_t *rx_data, hf_u16_t rx_length, hf_u32_t timeout_ms=0) noexcept override
Definition MockI2c.cpp:117
const std::vector< I2cTransaction > & Transactions() const noexcept
Definition MockI2c.h:73
Responder responder_
Definition MockI2c.h:99
int init_calls_
Definition MockI2c.h:87
void EnableRegisterModel(bool enable=true) noexcept
Definition MockI2c.h:66
size_t WritesTo(uint8_t reg) const noexcept
Definition MockI2c.cpp:37
bool Deinitialize() noexcept override
Definition MockI2c.cpp:21
void SetInitializeResult(bool ok) noexcept
Definition MockI2c.h:61
size_t fail_count_
Definition MockI2c.h:98
hf_i2c_err_t fail_error_
Definition MockI2c.h:97
std::deque< Queued > queued_
Definition MockI2c.h:96
void ModelRead(uint8_t *rx, uint16_t length) noexcept
Definition MockI2c.cpp:57
Definition FakeClock.cpp:21
uint16_t address
Device address at the time of the call.
Definition MockI2c.h:35
Kind
Definition MockI2c.h:33
uint16_t rx_length
Bytes requested (0 for Write).
Definition MockI2c.h:37
Kind kind
Definition MockI2c.h:34
std::vector< uint8_t > rx
Bytes returned to the caller.
Definition MockI2c.h:38
hf_i2c_err_t result
Value returned to the caller.
Definition MockI2c.h:39
std::vector< uint8_t > tx
Bytes written (empty for Read).
Definition MockI2c.h:36
hf_i2c_err_t result
Definition MockI2c.h:94
std::vector< uint8_t > bytes
Definition MockI2c.h:93