make touch sensor edge based to avoid approving >1 transaction
This commit is contained in:
parent
3b53537077
commit
b3ac739a35
@ -60,6 +60,29 @@ static int is_touch_button_pressed()
|
|||||||
|
|
||||||
int (*IS_BUTTON_PRESSED)() = is_physical_button_pressed;
|
int (*IS_BUTTON_PRESSED)() = is_physical_button_pressed;
|
||||||
|
|
||||||
|
static void edge_detect_touch_button()
|
||||||
|
{
|
||||||
|
static uint8_t last_touch = 0;
|
||||||
|
uint8_t current_touch = 0;
|
||||||
|
if (is_touch_button_pressed == IS_BUTTON_PRESSED)
|
||||||
|
{
|
||||||
|
current_touch = IS_BUTTON_PRESSED();
|
||||||
|
|
||||||
|
// 1 sample per 25 ms
|
||||||
|
if ((millis() - __last_button_bounce_time) > 25)
|
||||||
|
{
|
||||||
|
// Detect "touch / rising edge"
|
||||||
|
if (!last_touch && current_touch)
|
||||||
|
{
|
||||||
|
__last_button_press_time = millis();
|
||||||
|
}
|
||||||
|
__last_button_bounce_time = millis();
|
||||||
|
last_touch = current_touch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void request_from_nfc(bool request_active) {
|
void request_from_nfc(bool request_active) {
|
||||||
_RequestComeFromNFC = request_active;
|
_RequestComeFromNFC = request_active;
|
||||||
}
|
}
|
||||||
@ -78,19 +101,7 @@ void TIM6_DAC_IRQHandler()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
edge_detect_touch_button();
|
||||||
if (is_touch_button_pressed == IS_BUTTON_PRESSED)
|
|
||||||
{
|
|
||||||
if (IS_BUTTON_PRESSED())
|
|
||||||
{
|
|
||||||
// Only allow 1 press per 25 ms.
|
|
||||||
if ((millis() - __last_button_bounce_time) > 25)
|
|
||||||
{
|
|
||||||
__last_button_press_time = millis();
|
|
||||||
}
|
|
||||||
__last_button_bounce_time = millis();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef IS_BOOTLOADER
|
#ifndef IS_BOOTLOADER
|
||||||
// NFC sending WTX if needs
|
// NFC sending WTX if needs
|
||||||
|
Loading…
x
Reference in New Issue
Block a user