SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
ImuBase.hpp
Go to the documentation of this file.
1
29#pragma once
30
31#include "SensorDefs.hpp"
32
43{
44public:
45 enum class DataReadyMask : uint8_t {
46 ACCEL = 0x01,
47 GYRO = 0x02,
48 BOTH = 0x03,
49 };
50
51 virtual ~ImuBase() = default;
52
53 // ==================== Common / Device-level Operations ====================
54
59 virtual bool reset() = 0;
60
65 virtual bool selfTest() = 0;
66
71 virtual bool isPresent() = 0;
72
77 virtual uint8_t getChipID() = 0;
78
83 virtual uint32_t getFirmwareVersion() = 0;
84
90 virtual bool setOperationMode(OperationMode mode) = 0;
91
95 bool powerOn()
96 {
98 }
99
104 {
106 }
107
112 virtual float getTemperature() = 0;
113
118 virtual uint32_t getTimestamp() = 0;
119
120 // ==================== Accelerometer Operations ====================
121
127 virtual bool isDataReady(uint8_t mask = static_cast<uint8_t>(DataReadyMask::BOTH)) = 0;
128
134 virtual bool readAccel(AccelerometerData &out) = 0;
135
140 virtual bool enableAccel() = 0;
141
146 virtual bool disableAccel() = 0;
147
152 virtual bool isAccelEnabled() = 0;
153
160
166 virtual bool setAccelOutputDataRate(float data_rate_hz) = 0;
167
175 virtual bool readAccelRaw(int16_t &x, int16_t &y, int16_t &z) = 0;
176
177 // ==================== Gyroscope Operations ====================
178
184 virtual bool readGyro(GyroscopeData &out) = 0;
185
190 virtual bool enableGyro() = 0;
191
196 virtual bool disableGyro() = 0;
197
202 virtual bool isGyroEnabled() = 0;
203
210
216 virtual bool setGyroOutputDataRate(float data_rate_hz) = 0;
217
225 virtual bool readGyroRaw(int16_t &x, int16_t &y, int16_t &z) = 0;
226
227 // ==================== Synchronous Sample Mode ====================
228
233 virtual bool enableSyncMode() = 0;
234
239 virtual bool disableSyncMode() = 0;
240
241 // ==================== Advanced Features (Optional) ====================
242
249 virtual bool configureFifo(bool enable, uint8_t watermark_samples = 16) = 0;
250
259 virtual uint16_t readFromFifo(AccelerometerData *accel_data, uint16_t accel_count,
260 GyroscopeData *gyro_data, uint16_t gyro_count) = 0;
261};
@license MIT License
OperationMode
Enumeration of sensor operation modes.
GyroFullScaleRange
Enumeration of gyroscope full-scale range settings.
AccelFullScaleRange
Enumeration of accelerometer full-scale range settings.
Abstract IMU device interface for polymorphic IMU sensor implementations.
Definition ImuBase.hpp:43
bool powerOn()
Compatibility wrapper: switch IMU to NORMAL mode.
Definition ImuBase.hpp:95
virtual bool readAccel(AccelerometerData &out)=0
Read accelerometer data.
virtual bool isAccelEnabled()=0
Check if accelerometer is enabled.
bool powerDown()
Compatibility wrapper: switch IMU to SUSPEND mode.
Definition ImuBase.hpp:103
virtual bool configureFifo(bool enable, uint8_t watermark_samples=16)=0
Configure the FIFO buffer.
virtual bool setAccelFullScaleRange(AccelFullScaleRange range)=0
Set accelerometer full scale range.
virtual uint8_t getChipID()=0
Get the chip ID / WHO_AM_I value.
virtual bool enableAccel()=0
Enable the accelerometer.
virtual bool enableGyro()=0
Enable the gyroscope.
virtual bool setGyroFullScaleRange(GyroFullScaleRange range)=0
Set gyroscope full scale range.
virtual bool setOperationMode(OperationMode mode)=0
Set IMU operation mode.
virtual bool readGyro(GyroscopeData &out)=0
Read gyroscope data.
virtual uint32_t getFirmwareVersion()=0
Get the firmware version.
virtual bool selfTest()=0
Perform self-test on the IMU sensor.
virtual bool setAccelOutputDataRate(float data_rate_hz)=0
Set accelerometer output data rate.
virtual float getTemperature()=0
Get the temperature reading from the sensor.
virtual ~ImuBase()=default
virtual bool isDataReady(uint8_t mask=static_cast< uint8_t >(DataReadyMask::BOTH))=0
Check if requested IMU data is available.
virtual bool reset()=0
Reset the IMU sensor to its default state.
virtual bool disableGyro()=0
Disable the gyroscope.
virtual bool disableAccel()=0
Disable the accelerometer.
virtual bool disableSyncMode()=0
Disable synchronous sampling mode.
virtual bool setGyroOutputDataRate(float data_rate_hz)=0
Set gyroscope output data rate.
virtual uint16_t readFromFifo(AccelerometerData *accel_data, uint16_t accel_count, GyroscopeData *gyro_data, uint16_t gyro_count)=0
Read data from FIFO buffer.
virtual bool readAccelRaw(int16_t &x, int16_t &y, int16_t &z)=0
Read raw accelerometer data without scaling.
virtual uint32_t getTimestamp()=0
Get the timestamp from the sensor.
virtual bool isGyroEnabled()=0
Check if gyroscope is enabled.
virtual bool readGyroRaw(int16_t &x, int16_t &y, int16_t &z)=0
Read raw gyroscope data without scaling.
DataReadyMask
Definition ImuBase.hpp:45
virtual bool enableSyncMode()=0
Enable synchronous sampling mode.
virtual bool isPresent()=0
Check if the IMU sensor is responding.
Structure representing accelerometer data.
Structure representing gyroscope data.
int16_t x[5]
int16_t y[5]