* GenericVibration: code style refactor
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
#include <helpers/ui/buzzer.h>
|
#include <helpers/ui/buzzer.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef PIN_VIBRATION
|
#ifdef PIN_VIBRATION
|
||||||
#include <helpers/ui/vibration.h>
|
#include <helpers/ui/GenericVibration.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "../AbstractUITask.h"
|
#include "../AbstractUITask.h"
|
||||||
@@ -25,7 +25,7 @@ class UITask : public AbstractUITask {
|
|||||||
genericBuzzer buzzer;
|
genericBuzzer buzzer;
|
||||||
#endif
|
#endif
|
||||||
#ifdef PIN_VIBRATION
|
#ifdef PIN_VIBRATION
|
||||||
genericVibration vibration;
|
GenericVibration vibration;
|
||||||
#endif
|
#endif
|
||||||
unsigned long _next_refresh, _auto_off;
|
unsigned long _next_refresh, _auto_off;
|
||||||
NodePrefs* _node_prefs;
|
NodePrefs* _node_prefs;
|
||||||
|
|||||||
38
src/helpers/ui/GenericVibration.cpp
Normal file
38
src/helpers/ui/GenericVibration.cpp
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#ifdef PIN_VIBRATION
|
||||||
|
#include "GenericVibration.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
|
||||||
33
src/helpers/ui/GenericVibration.h
Normal file
33
src/helpers/ui/GenericVibration.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#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
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
#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
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
#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
|
|
||||||
Reference in New Issue
Block a user