- Add genericVibration class with 5-second cooldown and 1-second pulse - Integrate vibration triggers for new messages and contact discoveries - Add conditional compilation support with PIN_VIBRATION guard - Implement abstract interface for vibration in UITask system
35 lines
790 B
C++
35 lines
790 B
C++
#pragma once
|
|
|
|
#ifdef PIN_VIBRATION
|
|
|
|
#include <Arduino.h>
|
|
|
|
/*
|
|
* Vibration motor control class
|
|
*
|
|
* Provides vibration feedback for events like new messages and new contacts
|
|
* Features:
|
|
* - 1-second vibration pulse
|
|
* - 5-second nag timeout (cooldown between vibrations)
|
|
* - Non-blocking operation
|
|
*/
|
|
|
|
#ifndef VIBRATION_TIMEOUT
|
|
#define VIBRATION_TIMEOUT 5000 // 5 seconds default
|
|
#endif
|
|
|
|
class genericVibration
|
|
{
|
|
public:
|
|
void begin(); // set up vibration pin
|
|
void trigger(); // trigger vibration if cooldown has passed
|
|
void loop(); // non-blocking timer handling
|
|
bool isVibrating(); // returns true if currently vibrating
|
|
void stop(); // stop vibration immediately
|
|
|
|
private:
|
|
unsigned long duration;
|
|
};
|
|
|
|
#endif // ifdef PIN_VIBRATION
|