bugfix IRQ masking
This commit is contained in:
parent
1bc63bad94
commit
31c0037cba
@ -42,8 +42,8 @@
|
||||
#define SCREEN_MODE (0x80)
|
||||
|
||||
// I2C bus access control
|
||||
#define I2C_MUTEX_LOCK() xSemaphoreTake(I2Caccess, pdMS_TO_TICKS(10)) == pdTRUE
|
||||
#define I2C_MUTEX_UNLOCK() xSemaphoreGive(I2Caccess)
|
||||
#define I2C_MUTEX_LOCK() (xSemaphoreTake(I2Caccess, pdMS_TO_TICKS(10)) == pdTRUE)
|
||||
#define I2C_MUTEX_UNLOCK() (xSemaphoreGive(I2Caccess))
|
||||
|
||||
// Struct holding devices's runtime configuration
|
||||
typedef struct {
|
||||
|
@ -17,8 +17,8 @@
|
||||
#include "timekeeper.h"
|
||||
|
||||
void irqHandler(void *pvParameters);
|
||||
bool mask_user_IRQ();
|
||||
bool unmask_user_IRQ();
|
||||
int mask_user_IRQ();
|
||||
int unmask_user_IRQ();
|
||||
|
||||
#ifdef HAS_DISPLAY
|
||||
void IRAM_ATTR DisplayIRQ();
|
||||
|
@ -119,18 +119,18 @@ void IRAM_ATTR GpsIRQ() {
|
||||
}
|
||||
#endif
|
||||
|
||||
bool mask_user_IRQ() {
|
||||
int mask_user_IRQ() {
|
||||
// begin of time critical section: lock I2C bus to ensure accurate timing
|
||||
if (I2C_MUTEX_LOCK()) {
|
||||
xTaskNotify(irqHandlerTask, MASK_IRQ, eSetBits);
|
||||
return true;
|
||||
return 0;
|
||||
} else
|
||||
return false; // failure
|
||||
return 1; // failure
|
||||
}
|
||||
|
||||
bool unmask_user_IRQ() {
|
||||
int unmask_user_IRQ() {
|
||||
// end of time critical section: release I2C bus
|
||||
I2C_MUTEX_UNLOCK();
|
||||
xTaskNotify(irqHandlerTask, UNMASK_IRQ, eSetBits);
|
||||
return true;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user