ESPixelStick Firmware
Firmware for the ESPixelStick
Loading...
Searching...
No Matches
externalInput.h
Go to the documentation of this file.
1
2#pragma once
3/* externalInput.h
4*
5* Project: ESPixelStick - An ESP8266 / ESP32 and E1.31 based pixel driver
6* Copyright (c) 2021, 2025 Shelby Merrick
7* http://www.forkineye.com
8*
9* This program is provided free for you to use in any way that you wish,
10* subject to the laws and regulations where you are using it. Due diligence
11* is strongly suggested before using this code. Please give credit where due.
12*
13* The Author makes no warranty of any kind, express or implied, with regard
14* to this program or the documentation contained in this document. The
15* Author shall not be liable in any event for incidental or consequential
16* damages in connection with, or arising out of, the furnishing, performance
17* or use of these programs.
18*
19*/
20
21#include "ESPixelStick.h"
22
23/*****************************************************************************/
25class c_ExternalInput final
26{
27public:
28 c_ExternalInput (void);
30
32 {
33 off = 0, // input is off
34 shortOn, // input was on for <N MS
35 longOn, // input was on for <N MS
36 };
37
39 {
42 };
43
44 void Init (uint32_t iInputId, uint32_t iPinId, Polarity_t Poliarity, String & sName);
45 void Poll (void);
46 void GetConfig (JsonObject JsonData);
47 void GetStatistics (JsonObject JsonData);
48 void ProcessConfig (JsonObject JsonData);
49 bool IsEnabled () { return Enabled; }
50 uint32_t GetTriggerChannel() { return TriggerChannel; }
51 void GetDriverName (String & Name) { Name = "ExtInput"; }
52
53protected:
54
55 // read the adjusted value of the input pin
56 bool ReadInput (void);
57/*
58# define M_NAME CN_name
59# define M_IO_ENABLED CN_enabled
60# define M_STATE CN_state
61# define M_POLARITY CN_polarity
62# define M_ID CN_id
63*/
64 String name;
65 uint32_t GpioId = 0;
66 uint32_t TriggerChannel = uint32_t(32);
68 bool Enabled = false;
69 uint32_t InputDebounceCount = 0;
71 uint32_t LongPushDelayMS = 2000;
72 fsm_ExternalInput_state * CurrentFsmState = nullptr; // initialized in constructor
73
78
79}; // c_ExternalInput
80
81/*****************************************************************************/
82/*
83* Generic fsm base class.
84*/
85/*****************************************************************************/
87{
88public:
89 virtual void Poll(c_ExternalInput& pExternalInput) = 0;
90 virtual void Init(c_ExternalInput& pExternalInput) = 0;
92private:
93#define MIN_INPUT_STABLE_VALUE 50
94
95}; // fsm_ExternalInput_state
96
97/*****************************************************************************/
98// input is unknown and unreachable
99//
101{
102public:
103 void Poll (c_ExternalInput& pExternalInput) override;
104 void Init (c_ExternalInput& pExternalInput) override;
106}; // fsm_ExternalInput_boot
107
108/*****************************************************************************/
109// input is off and stable
110//
112{
113public:
114 void Poll(c_ExternalInput& pExternalInput) override;
115 void Init(c_ExternalInput& pExternalInput) override;
117
118}; // fsm_ExternalInput_off_state
119
120/*****************************************************************************/
121// input is always reported as on
122//
124{
125public:
126 void Poll (c_ExternalInput& pExternalInput) override;
127 void Init (c_ExternalInput& pExternalInput) override;
129
130}; // fsm_ExternalInput_on_wait_long_state
131
132/*****************************************************************************/
133// input is always reported as on
134//
136{
137public:
138 void Poll (c_ExternalInput& pExternalInput) override;
139 void Init (c_ExternalInput& pExternalInput) override;
141
142}; // fsm_ExternalInput_wait_for_off_state
143
Definition FastTimer.hpp:24
Definition externalInput.h:26
void Poll(void)
Definition externalInput.cpp:131
uint32_t LongPushDelayMS
Definition externalInput.h:71
uint32_t GpioId
Definition externalInput.h:65
~c_ExternalInput(void)
Definition externalInput.h:29
String name
Definition externalInput.h:64
bool IsEnabled()
Definition externalInput.h:49
InputValue_t
Definition externalInput.h:32
@ shortOn
Definition externalInput.h:34
@ longOn
Definition externalInput.h:35
@ off
Definition externalInput.h:33
c_ExternalInput(void)
Definition externalInput.cpp:41
void GetConfig(JsonObject JsonData)
Definition externalInput.cpp:68
void GetStatistics(JsonObject JsonData)
Definition externalInput.cpp:86
Polarity_t polarity
Definition externalInput.h:67
bool Enabled
Definition externalInput.h:68
FastTimer InputHoldTimer
Definition externalInput.h:70
void Init(uint32_t iInputId, uint32_t iPinId, Polarity_t Poliarity, String &sName)
Definition externalInput.cpp:50
fsm_ExternalInput_state * CurrentFsmState
Definition externalInput.h:72
uint32_t GetTriggerChannel()
Definition externalInput.h:50
bool ReadInput(void)
Definition externalInput.cpp:142
uint32_t TriggerChannel
Definition externalInput.h:66
uint32_t InputDebounceCount
Definition externalInput.h:69
void ProcessConfig(JsonObject JsonData)
Definition externalInput.cpp:98
Polarity_t
Definition externalInput.h:39
@ ActiveLow
Definition externalInput.h:41
@ ActiveHigh
Definition externalInput.h:40
void GetDriverName(String &Name)
Definition externalInput.h:51
Definition externalInput.h:101
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:166
~fsm_ExternalInput_boot() override
Definition externalInput.h:105
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:180
Definition externalInput.h:112
~fsm_ExternalInput_off_state() override
Definition externalInput.h:116
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:213
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:198
Definition externalInput.h:124
~fsm_ExternalInput_on_wait_long_state() override
Definition externalInput.h:128
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:258
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:244
Definition externalInput.h:87
virtual void Init(c_ExternalInput &pExternalInput)=0
virtual ~fsm_ExternalInput_state()
Definition externalInput.h:91
virtual void Poll(c_ExternalInput &pExternalInput)=0
Definition externalInput.h:136
~fsm_ExternalInput_wait_for_off_state() override
Definition externalInput.h:140
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:293
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:306