feat: add vibration feedback support for UI events

- 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
This commit is contained in:
csrutil
2025-09-07 15:16:15 +08:00
parent d86851b881
commit 2da50882c0
6 changed files with 112 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
#ifdef PIN_VIBRATION
#include "vibration.h"
void genericVibration::begin()
{
pinMode(PIN_VIBRATION, OUTPUT);
digitalWrite(PIN_VIBRATION, LOW);
duration = 0;
}
void genericVibration::trigger()
{
duration = millis();
digitalWrite(PIN_VIBRATION, HIGH);
}
void genericVibration::loop()
{
if (isVibrating()) {
if ((millis() / 1000) % 2 == 0) {
digitalWrite(PIN_VIBRATION, LOW);
} else {
digitalWrite(PIN_VIBRATION, HIGH);
}
if (millis() - duration > VIBRATION_TIMEOUT) {
stop();
}
}
}
bool genericVibration::isVibrating()
{
return duration > 0;
}
void genericVibration::stop()
{
duration = 0;
digitalWrite(PIN_VIBRATION, LOW);
}
#endif // ifdef PIN_VIBRATION