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