Don't send short-presses after releasing long-presses
This commit is contained in:
@@ -23,6 +23,7 @@ ButtonState getButtonState() {
|
|||||||
* (downtime>filter)
|
* (downtime>filter)
|
||||||
*/
|
*/
|
||||||
static uint8_t previousState = 0;
|
static uint8_t previousState = 0;
|
||||||
|
static bool longPressed = false;
|
||||||
static uint32_t previousStateChange = 0;
|
static uint32_t previousStateChange = 0;
|
||||||
const uint16_t timeout = TICKS_100MS * 4;
|
const uint16_t timeout = TICKS_100MS * 4;
|
||||||
uint8_t currentState;
|
uint8_t currentState;
|
||||||
@@ -34,9 +35,10 @@ ButtonState getButtonState() {
|
|||||||
if (currentState == previousState) {
|
if (currentState == previousState) {
|
||||||
if (currentState == 0)
|
if (currentState == 0)
|
||||||
return BUTTON_NONE;
|
return BUTTON_NONE;
|
||||||
if ((xTaskGetTickCount() - previousStateChange) > timeout) {
|
if ((xTaskGetTickCount() - previousStateChange) >= timeout) {
|
||||||
// User has been holding the button down
|
// User has been holding the button down
|
||||||
// We want to send a button is held message
|
// We want to send a button is held message
|
||||||
|
longPressed = true;
|
||||||
if (currentState == 0x01)
|
if (currentState == 0x01)
|
||||||
return BUTTON_F_LONG;
|
return BUTTON_F_LONG;
|
||||||
else if (currentState == 0x02)
|
else if (currentState == 0x02)
|
||||||
@@ -58,7 +60,7 @@ ButtonState getButtonState() {
|
|||||||
// User has released buttons
|
// User has released buttons
|
||||||
// If they previously had the buttons down we want to check if they were <
|
// If they previously had the buttons down we want to check if they were <
|
||||||
// long hold and trigger a press
|
// long hold and trigger a press
|
||||||
if ((xTaskGetTickCount() - previousStateChange) < timeout) {
|
if ((xTaskGetTickCount() - previousStateChange) < timeout && !longPressed) {
|
||||||
// The user didn't hold the button for long
|
// The user didn't hold the button for long
|
||||||
// So we send button press
|
// So we send button press
|
||||||
|
|
||||||
@@ -70,6 +72,7 @@ ButtonState getButtonState() {
|
|||||||
retVal = BUTTON_BOTH; // Both being held case
|
retVal = BUTTON_BOTH; // Both being held case
|
||||||
}
|
}
|
||||||
previousState = 0;
|
previousState = 0;
|
||||||
|
longPressed = false;
|
||||||
}
|
}
|
||||||
previousStateChange = xTaskGetTickCount();
|
previousStateChange = xTaskGetTickCount();
|
||||||
return retVal;
|
return retVal;
|
||||||
|
|||||||
Reference in New Issue
Block a user