From adb7f939447bc33d479f642fd196130dd81a76e1 Mon Sep 17 00:00:00 2001 From: cyberman54 Date: Sat, 8 Jan 2022 18:01:28 +0100 Subject: [PATCH] irqhandler.cpp polished --- src/irqhandler.cpp | 40 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/src/irqhandler.cpp b/src/irqhandler.cpp index 2e97f360..f6a6e295 100644 --- a/src/irqhandler.cpp +++ b/src/irqhandler.cpp @@ -10,20 +10,20 @@ void irqHandler(void *pvParameters) { _ASSERT((uint32_t)pvParameters == 1); // FreeRTOS check - uint32_t InterruptStatus; + uint32_t irqSource; // task remains in blocked state until it is notified by an irq for (;;) { xTaskNotifyWait(0x00, // Don't clear any bits on entry ULONG_MAX, // Clear all bits on exit - &InterruptStatus, // Receives the notification value + &irqSource, // Receives the notification value portMAX_DELAY); // wait forever - if (InterruptStatus & UNMASK_IRQ) // interrupt handler to be enabled? - InterruptStatus &= ~MASK_IRQ; // then clear irq mask flag + if (irqSource & UNMASK_IRQ) // interrupt handler to be enabled? + irqSource &= ~MASK_IRQ; // then clear irq mask flag // else suppress processing if interrupt handler is disabled // or time critical lmic jobs are pending in next 100ms - else if ((InterruptStatus & MASK_IRQ) + else if ((irqSource & MASK_IRQ) #if (HAS_LORA) || os_queryTimeCriticalJobs(ms2osticks(100)) #endif @@ -32,63 +32,49 @@ void irqHandler(void *pvParameters) { // button pressed? #ifdef HAS_BUTTON - if (InterruptStatus & BUTTON_IRQ) { + if (irqSource & BUTTON_IRQ) readButton(); - InterruptStatus &= ~BUTTON_IRQ; - } #endif // display needs refresh? #ifdef HAS_DISPLAY - if (InterruptStatus & DISPLAY_IRQ) { + if (irqSource & DISPLAY_IRQ) dp_refresh(); - InterruptStatus &= ~DISPLAY_IRQ; - } #endif // LED Matrix display needs refresh? #ifdef HAS_MATRIX_DISPLAY - if (InterruptStatus & MATRIX_DISPLAY_IRQ) { + if (irqSource & MATRIX_DISPLAY_IRQ) refreshTheMatrixDisplay(); - InterruptStatus &= ~MATRIX_DISPLAY_IRQ; - } #endif #if (TIME_SYNC_INTERVAL) // is time to be synced? - if (InterruptStatus & TIMESYNC_IRQ) { + if (irqSource & TIMESYNC_IRQ) { now(); // ensure sysTime is recent calibrateTime(); - InterruptStatus &= ~TIMESYNC_IRQ; } #endif // BME sensor data to be read? #if (HAS_BME) - if (InterruptStatus & BME_IRQ) { + if (irqSource & BME_IRQ) bme_storedata(&bme_status); - InterruptStatus &= ~BME_IRQ; - } #endif // are cyclic tasks due? - if (InterruptStatus & CYCLIC_IRQ) { + if (irqSource & CYCLIC_IRQ) doHousekeeping(); - InterruptStatus &= ~CYCLIC_IRQ; - } // do we have a power event? #ifdef HAS_PMU - if (InterruptStatus & PMU_IRQ) { + if (irqSource & PMU_IRQ) AXP192_powerevent_IRQ(); - InterruptStatus &= ~PMU_IRQ; - } #endif // is time to send the payload? - if (InterruptStatus & SENDCYCLE_IRQ) { + if (irqSource & SENDCYCLE_IRQ) { sendData(); - InterruptStatus &= ~SENDCYCLE_IRQ; // goto sleep if we have a sleep cycle if (cfg.sleepcycle) #ifdef HAS_BUTTON