37 using CustomCallback = bool(*)(uint8_t addr, uint8_t reg, uint8_t *
buf,
size_t len,
bool writeReg,
bool isWrite);
50 if (customCallback(addr, reg,
buf, len,
true,
true)) {
59 if (customCallback(addr, 0x00, buffer, len,
false,
true)) {
68 if (customCallback(addr, 0x00,
buf, len,
false,
false)) {
77 if (customCallback(addr, reg,
buf, len,
true,
false)) {
84 int writeThenRead(
const uint8_t *write_buffer,
size_t write_len, uint8_t *read_buffer,
size_t read_len)
override
87 if (customCallback(addr, 0x00, read_buffer, read_len,
false,
false)) {
96#if defined(__cpp_rtti)
97 const auto pdat =
dynamic_cast<const I2CParam *
>(¶ms);
99 const auto pdat =
static_cast<const I2CParam *
>(¶ms);
101 uint8_t type = pdat->
getType();
104 addr = pdat->getParams();
Abstract base for all communication parameter objects.
I2C communication parameters.
uint8_t getType() const
Retrieve the parameter type.
@ I2C_SET_ADDR
Set device address.
@ I2C_SET_FLAG
Set a generic flag (interpretation depends on driver)
Abstract base class for low‑level sensor communication.
int writeRegister(const uint8_t reg, uint8_t *buf, size_t len) override
Write multiple bytes to a register.
SensorCommCustom(CustomCallback callback, uint8_t addr)
bool(*)(uint8_t addr, uint8_t reg, uint8_t *buf, size_t len, bool writeReg, bool isWrite) CustomCallback
bool init() override
Initialise the communication interface (open device, etc.).
int readBuffer(uint8_t *buf, size_t len) override
Read bytes directly from the device (no register address sent).
void deinit() override
Deinitialise the communication interface (close device, etc.).
void setParams(const CommParamsBase ¶ms) override
Apply communication parameters (e.g., I2C address, SPI settings).
int writeBuffer(uint8_t *buffer, size_t len)
Write a buffer directly to the device (no register address).
int writeThenRead(const uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len) override
Perform a write followed by a read (e.g., for register‑based sensors).
int readRegister(const uint8_t reg, uint8_t *buf, size_t len) override
Read multiple bytes from a register into a buffer.