SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
SensorCommBase Class Referenceabstract

Abstract base class for low‑level sensor communication. More...

#include <SensorCommBase.hpp>

Inheritance diagram for SensorCommBase:
[legend]

Public Member Functions

virtual bool init ()=0
 Initialise the communication interface (open device, etc.).
 
virtual void deinit ()=0
 Deinitialise the communication interface (close device, etc.).
 
virtual int readRegister (const uint8_t reg)
 Read a single byte from a register.
 
virtual int readRegister (const uint8_t reg, uint8_t *buf, size_t len)=0
 Read multiple bytes from a register into a buffer.
 
virtual int readBuffer (uint8_t *buf, size_t len)=0
 Read bytes directly from the device (no register address sent).
 
virtual int writeRegister (const uint8_t reg, uint8_t val)
 Write a single byte to a register.
 
virtual int writeRegister (const uint8_t reg, uint8_t *buf, size_t len)=0
 Write multiple bytes to a register.
 
virtual int writeRegister (const uint8_t reg, uint8_t norVal, uint8_t orVal)
 Modify a register using a NOR and OR mask.
 
virtual int writeBuffer (uint8_t *buffer, size_t len)=0
 Write a buffer directly to the device (no register address).
 
virtual int writeThenRead (const uint8_t *write_buffer, size_t write_len, uint8_t *read_buffer, size_t read_len)=0
 Perform a write followed by a read (e.g., for register‑based sensors).
 
virtual bool setRegisterBit (const uint8_t reg, uint8_t bit)
 Set a specific bit in a register.
 
virtual bool clrRegisterBit (const uint8_t reg, uint8_t bit)
 Clear a specific bit in a register.
 
virtual bool getRegisterBit (const uint8_t reg, uint8_t bit)
 Read the state of a specific bit in a register.
 
virtual int updateBits (uint8_t reg, uint8_t mask, uint8_t value_shifted)
 Update specific bits in a register.
 
virtual void setParams (const CommParamsBase &params)=0
 Apply communication parameters (e.g., I2C address, SPI settings).
 
virtual ~SensorCommBase ()=default
 
- Public Member Functions inherited from SensorErrorMixin
SENSOR_ERROR_CODE lastError () const
 
void clearError ()
 

Additional Inherited Members

- Protected Member Functions inherited from SensorErrorMixin
void setError (SENSOR_ERROR_CODE e)
 
SENSOR_ERROR_CODE setErrorAndReturn (SENSOR_ERROR_CODE e)
 

Detailed Description

Abstract base class for low‑level sensor communication.

Defines the interface for reading/writing registers, buffers, and performing combined transactions.

Definition at line 219 of file SensorCommBase.hpp.

Constructor & Destructor Documentation

◆ ~SensorCommBase()

virtual SensorCommBase::~SensorCommBase ( )
virtualdefault

Member Function Documentation

◆ clrRegisterBit()

virtual bool SensorCommBase::clrRegisterBit ( const uint8_t  reg,
uint8_t  bit 
)
inlinevirtual

Clear a specific bit in a register.

Parameters
regRegister address.
bitBit index (0‑based, LSB).
Returns
true if the operation succeeded, false otherwise.

Definition at line 360 of file SensorCommBase.hpp.

References readRegister(), and writeRegister().

Referenced by SensorCommWrapper::clrRegBit().

◆ deinit()

virtual void SensorCommBase::deinit ( )
pure virtual

Deinitialise the communication interface (close device, etc.).

Implemented in SensorCommCustom.

◆ getRegisterBit()

virtual bool SensorCommBase::getRegisterBit ( const uint8_t  reg,
uint8_t  bit 
)
inlinevirtual

Read the state of a specific bit in a register.

Parameters
regRegister address.
bitBit index (0‑based, LSB).
Returns
true if the bit is set, false if cleared or on error.

Definition at line 375 of file SensorCommBase.hpp.

References readRegister().

Referenced by SensorCommWrapper::getRegBit().

◆ init()

virtual bool SensorCommBase::init ( )
pure virtual

Initialise the communication interface (open device, etc.).

Returns
true if successful, false otherwise.

Implemented in SensorCommCustom.

◆ readBuffer()

virtual int SensorCommBase::readBuffer ( uint8_t *  buf,
size_t  len 
)
pure virtual

Read bytes directly from the device (no register address sent).

Parameters
bufDestination buffer.
lenNumber of bytes to read.
Returns
int Number of bytes read on success, negative error code otherwise.

Implemented in SensorCommCustom.

Referenced by SensorCommWrapper::readBuff().

◆ readRegister() [1/2]

virtual int SensorCommBase::readRegister ( const uint8_t  reg)
inlinevirtual

Read a single byte from a register.

Parameters
regRegister address.
Returns
int The byte value on success, or a negative error code.

Definition at line 244 of file SensorCommBase.hpp.

References readRegister().

Referenced by clrRegisterBit(), getRegisterBit(), SensorCommWrapper::readReg(), SensorCommWrapper::readRegBuff(), readRegister(), SensorCommStatic::sensor_static_read_data(), setRegisterBit(), updateBits(), and writeRegister().

◆ readRegister() [2/2]

virtual int SensorCommBase::readRegister ( const uint8_t  reg,
uint8_t *  buf,
size_t  len 
)
pure virtual

Read multiple bytes from a register into a buffer.

Parameters
regRegister address.
bufDestination buffer.
lenNumber of bytes to read.
Returns
int Number of bytes read on success, negative error code otherwise.

Implemented in SensorCommCustom.

◆ setParams()

virtual void SensorCommBase::setParams ( const CommParamsBase params)
pure virtual

Apply communication parameters (e.g., I2C address, SPI settings).

Parameters
paramsA CommParamsBase derived object (I2CParam or SPIParam).

Implemented in SensorCommCustom.

Referenced by SensorCommWrapper::setAck(), and SensorCommWrapper::setAddress().

◆ setRegisterBit()

virtual bool SensorCommBase::setRegisterBit ( const uint8_t  reg,
uint8_t  bit 
)
inlinevirtual

Set a specific bit in a register.

Parameters
regRegister address.
bitBit index (0‑based, LSB).
Returns
true if the operation succeeded, false otherwise.

Definition at line 345 of file SensorCommBase.hpp.

References readRegister(), and writeRegister().

Referenced by SensorCommWrapper::setRegBit().

◆ updateBits()

virtual int SensorCommBase::updateBits ( uint8_t  reg,
uint8_t  mask,
uint8_t  value_shifted 
)
inlinevirtual

Update specific bits in a register.

Parameters
regRegister address.
maskBitmask to select bits to update.
value_shiftedNew values for the selected bits (must be shifted into position).
Returns
int 0 on success, negative error code otherwise.

Definition at line 390 of file SensorCommBase.hpp.

References readRegister(), and writeRegister().

Referenced by SensorCommWrapper::updateBits().

◆ writeBuffer()

virtual int SensorCommBase::writeBuffer ( uint8_t *  buffer,
size_t  len 
)
pure virtual

Write a buffer directly to the device (no register address).

Parameters
bufferSource buffer.
lenNumber of bytes to write.
Returns
int Number of bytes written on success, negative error code otherwise.

Implemented in SensorCommCustom.

Referenced by SensorCommWrapper::writeBuff().

◆ writeRegister() [1/3]

virtual int SensorCommBase::writeRegister ( const uint8_t  reg,
uint8_t *  buf,
size_t  len 
)
pure virtual

Write multiple bytes to a register.

Parameters
regRegister address.
bufSource buffer containing data to write.
lenNumber of bytes to write.
Returns
int Number of bytes written on success, negative error code otherwise.

Implemented in SensorCommCustom.

◆ writeRegister() [2/3]

virtual int SensorCommBase::writeRegister ( const uint8_t  reg,
uint8_t  norVal,
uint8_t  orVal 
)
inlinevirtual

Modify a register using a NOR and OR mask.

Typically implemented as: new_val = (old_val & norVal) | orVal.

Parameters
regRegister address.
norValBits to clear (NOR mask).
orValBits to set (OR mask).
Returns
int 0 on success, negative error code otherwise.

Definition at line 303 of file SensorCommBase.hpp.

References readRegister(), and writeRegister().

◆ writeRegister() [3/3]

virtual int SensorCommBase::writeRegister ( const uint8_t  reg,
uint8_t  val 
)
inlinevirtual

Write a single byte to a register.

Parameters
regRegister address.
valValue to write.
Returns
int 0 on success, negative error code otherwise.

Definition at line 281 of file SensorCommBase.hpp.

References writeRegister().

Referenced by clrRegisterBit(), SensorCommStatic::sensor_static_write_data(), setRegisterBit(), updateBits(), SensorCommWrapper::writeReg(), SensorCommWrapper::writeRegBuff(), writeRegister(), and writeRegister().

◆ writeThenRead()

virtual int SensorCommBase::writeThenRead ( const uint8_t *  write_buffer,
size_t  write_len,
uint8_t *  read_buffer,
size_t  read_len 
)
pure virtual

Perform a write followed by a read (e.g., for register‑based sensors).

Parameters
write_bufferData to write (usually register address + optional command).
write_lenLength of write buffer.
read_bufferBuffer to store read data.
read_lenNumber of bytes to read.
Returns
int Number of bytes read on success, negative error code otherwise.

Implemented in SensorCommCustom.

Referenced by SensorCommWrapper::writeThenRead().


The documentation for this class was generated from the following file: