Make interrupts more safe

This commit is contained in:
Laura Hausmann 2023-02-09 20:44:30 +01:00
parent 8588a53e37
commit 7afc5e23d6
Signed by: zotan
GPG key ID: D044E84C5BE01605

View file

@ -56,11 +56,11 @@ const int scanTimeout = 15000;
String scannedCardId = "";
String lastStatusText = "";
bool interruptFired = false;
volatile bool interruptFired = false;
unsigned long timer = 0;
void IRAM_ATTR TransactInterruptHandler() {
if (interruptFired || state != STATE_IDLE) {
if (interruptFired || state != STATE_IDLE || digitalRead(PIN_INTERRUPT_TRANSACT)) {
return;
}
interruptFired = true;
@ -68,7 +68,7 @@ void IRAM_ATTR TransactInterruptHandler() {
}
void IRAM_ATTR LinkInterruptHandler() {
if (interruptFired || state != STATE_IDLE) {
if (interruptFired || state != STATE_IDLE || digitalRead(PIN_INTERRUPT_LINK)) {
return;
}
interruptFired = true;
@ -76,7 +76,7 @@ void IRAM_ATTR LinkInterruptHandler() {
}
void IRAM_ATTR BalanceInterruptHandler() {
if (interruptFired || state != STATE_IDLE) {
if (interruptFired || state != STATE_IDLE || digitalRead(PIN_INTERRUPT_BALANCE)) {
return;
}
interruptFired = true;
@ -84,6 +84,8 @@ void IRAM_ATTR BalanceInterruptHandler() {
}
void IRAM_ATTR CancelInterruptHandler() {
if (digitalRead(PIN_INTERRUPT_LINK))
return;
state = STATE_IDLE;
}