SensorLib 0.5.0
Multi-platform sensor driver library for Arduino, PlatformIO, and ESP-IDF
Loading...
Searching...
No Matches
HapticBase.hpp
Go to the documentation of this file.
1
30#pragma once
31
32#include "HapticDefs.hpp"
33
59{
60public:
61 virtual ~HapticBase() = default;
62
63 // ==================== Lifecycle ====================
64
68 virtual void end() {}
69
74 virtual bool isReady() const = 0;
75
76 // ==================== Playback Control ====================
77
82 virtual bool run() = 0;
83
88 virtual bool stop() = 0;
89
94 virtual bool isPlaying() const = 0;
95
100 virtual HapticStatus getStatus() const = 0;
101
108 virtual void emergencyStop()
109 {
110 stop();
111 }
112
113 // ==================== Gain Control ====================
114
120 virtual bool setGain(uint8_t gain) = 0;
121
126 virtual uint8_t getGain() const = 0;
127
128 // ==================== Effect Playback ====================
129
139 virtual bool playEffect(HapticEffectId effect) = 0;
140
149 virtual bool playEffectAsync(HapticEffectId effect)
150 {
151 return playEffect(effect);
152 }
153
163 virtual void continuousVibration(uint32_t duration_ms, bool blocking = true);
164
171 virtual void vibrationUpdate() {}
172
173 // ==================== Waveform Sequence ====================
174
181 virtual bool setSequence(uint8_t slot, HapticEffectId effect)
182 {
183 (void)slot;
184 (void)effect;
185 return false;
186 }
187
192 virtual bool clearSequence()
193 {
194 return false;
195 }
196
201 virtual bool playSequence()
202 {
203 return false;
204 }
205
206 // ==================== Device Information ====================
207
212 virtual const char *getChipName() const = 0;
213
218 virtual uint8_t getChipID() const = 0;
219
225
231 virtual bool setActuatorType(HapticActuatorType type) = 0;
232
238
239 // ==================== Calibration ====================
240
245 virtual bool calibrate()
246 {
247 return false;
248 }
249
254 virtual bool needsCalibration() const
255 {
256 return false;
257 }
258
263 virtual uint32_t getF0() const
264 {
265 return 0;
266 }
267
272 virtual uint32_t getVbat()
273 {
274 return 0;
275 }
276
277 // ==================== Mode Control ====================
278
284 virtual bool setMode(HapticMode mode)
285 {
286 (void)mode;
287 return false;
288 }
289
294 virtual HapticMode getMode() const
295 {
297 }
298
299 // ==================== RTP (Real-Time Playback) ====================
300
309 virtual bool setRealtimeValue(uint8_t value)
310 {
311 (void)value;
312 return false;
313 }
314
315protected:
320 explicit HapticBase(const char* name) : _chipName(name), _isReady(false) {}
321
326 void setReady(bool ready)
327 {
328 _isReady = ready;
329 }
330
331 const char *_chipName;
333};
334
335
336inline void HapticBase::continuousVibration(uint32_t duration_ms, bool blocking)
337{
338 (void)duration_ms;
339 (void)blocking;
340}
@license MIT License
HapticStatus
Vibration playback status.
HapticActuatorType
Actuator type.
HapticMode
Generic haptic operating mode.
@ INTERNAL_TRIGGER
Play by selecting waveforms/effects and calling run()
uint16_t HapticEffectId
Haptic effect ID type.
Abstract base class for haptic drivers.
virtual uint32_t getF0() const
Get the measured resonant frequency (F0).
virtual bool isReady() const =0
Check if the driver is initialized and ready.
virtual bool playSequence()
Play the waveform sequence.
void setReady(bool ready)
Set ready state.
virtual bool stop()=0
Stop haptic playback immediately.
virtual bool calibrate()
Perform auto-calibration.
virtual bool setSequence(uint8_t slot, HapticEffectId effect)
Set a waveform in the sequence.
virtual bool needsCalibration() const
Check if calibration is needed.
virtual bool setMode(HapticMode mode)
Set the operating mode.
HapticBase(const char *name)
Constructor for derived classes.
virtual HapticCapabilities getCapabilities() const =0
Get device capabilities.
virtual HapticActuatorType getActuatorType() const =0
Get the actuator type.
virtual uint32_t getVbat()
Get the battery voltage.
const char * _chipName
virtual ~HapticBase()=default
virtual HapticStatus getStatus() const =0
Get current playback status.
virtual HapticMode getMode() const
Get the current operating mode.
virtual bool isPlaying() const =0
Check if haptic is currently playing.
virtual bool setGain(uint8_t gain)=0
Set the gain/amplitude (0x00 to 0xFF).
virtual bool setActuatorType(HapticActuatorType type)=0
Set the actuator type.
virtual bool clearSequence()
Clear the waveform sequence.
virtual void continuousVibration(uint32_t duration_ms, bool blocking=true)
Play a continuous vibration for specified duration.
virtual bool playEffect(HapticEffectId effect)=0
Play a haptic effect.
virtual uint8_t getChipID() const =0
Get the chip ID.
virtual bool run()=0
Start haptic playback.
virtual bool setRealtimeValue(uint8_t value)
Set RTP (real-time playback) value.
virtual void end()
Deinitialize the haptic driver and release resources.
virtual const char * getChipName() const =0
Get the chip name.
virtual bool playEffectAsync(HapticEffectId effect)
Play a haptic effect (non-blocking).
virtual uint8_t getGain() const =0
Get the current gain value.
virtual void vibrationUpdate()
Update vibration state (for non-blocking mode).
virtual void emergencyStop()
Emergency stop - stops all vibration immediately.
Device capability flags.