From 0d3bcb4267bc12841f053be1f22d2a49b9a92a73 Mon Sep 17 00:00:00 2001 From: Torrie Fischer Date: Sat, 23 Dec 2023 11:11:49 +0100 Subject: [PATCH] inputs: idle: implement an idletimer --- src/inputs/Idle.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ src/inputs/Idle.h | 12 ++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/inputs/Idle.cpp create mode 100644 src/inputs/Idle.h diff --git a/src/inputs/Idle.cpp b/src/inputs/Idle.cpp new file mode 100644 index 0000000..55212f8 --- /dev/null +++ b/src/inputs/Idle.cpp @@ -0,0 +1,41 @@ +#include "Idle.h" +#include "../Static.h" + +IdleTimer::IdleTimer() + : InputSource("IdleTimer"), + m_idleTime(60), m_secondsRemaining(0) +{ +} + +InputEvent +IdleTimer::read() +{ + EVERY_N_SECONDS(1) { + if (m_secondsRemaining > 0) { + m_secondsRemaining -= 1; + if (m_secondsRemaining == 0) { + return InputEvent::IdleStart; + } + } + } + + return InputEvent::None; +} + +void +IdleTimer::handleEvent(const InputEvent& evt) +{ + switch(evt.intent) { + case InputEvent::IdleStart: + m_secondsRemaining = 0; + break; + case InputEvent::IdleStop: + m_secondsRemaining = m_idleTime; + break; + default: + break; + } +} + +STATIC_ALLOC(IdleTimer); +STATIC_TASK(IdleTimer); diff --git a/src/inputs/Idle.h b/src/inputs/Idle.h new file mode 100644 index 0000000..ba24663 --- /dev/null +++ b/src/inputs/Idle.h @@ -0,0 +1,12 @@ +#pragma once +#include + +class IdleTimer : public InputSource { + public: + IdleTimer(); + void handleEvent(const InputEvent& evt); + virtual InputEvent read() override; + private: + uint16_t m_idleTime; + uint16_t m_secondsRemaining; +};