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 void ClearStatistics (void) {}
53
54protected:
55
56 // read the adjusted value of the input pin
57 bool ReadInput (void);
58/*
59# define M_NAME CN_name
60# define M_IO_ENABLED CN_enabled
61# define M_STATE CN_state
62# define M_POLARITY CN_polarity
63# define M_ID CN_id
64*/
65 char name[65];
66 uint32_t GpioId = 0;
67 uint32_t TriggerChannel = uint32_t(32);
69 bool Enabled = false;
70 uint32_t InputDebounceCount = 0;
72 uint32_t LongPushDelayMS = 2000;
73 fsm_ExternalInput_state * CurrentFsmState = nullptr; // initialized in constructor
74
79
80}; // c_ExternalInput
81
82/*****************************************************************************/
83/*
84* Generic fsm base class.
85*/
86/*****************************************************************************/
88{
89public:
90 virtual void Poll(c_ExternalInput& pExternalInput) = 0;
91 virtual void Init(c_ExternalInput& pExternalInput) = 0;
93private:
94#define MIN_INPUT_STABLE_VALUE 50
95
96}; // fsm_ExternalInput_state
97
98/*****************************************************************************/
99// input is unknown and unreachable
100//
102{
103public:
104 void Poll (c_ExternalInput& pExternalInput) override;
105 void Init (c_ExternalInput& pExternalInput) override;
107}; // fsm_ExternalInput_boot
108
109/*****************************************************************************/
110// input is off and stable
111//
113{
114public:
115 void Poll(c_ExternalInput& pExternalInput) override;
116 void Init(c_ExternalInput& pExternalInput) override;
118
119}; // fsm_ExternalInput_off_state
120
121/*****************************************************************************/
122// input is always reported as on
123//
125{
126public:
127 void Poll (c_ExternalInput& pExternalInput) override;
128 void Init (c_ExternalInput& pExternalInput) override;
130
131}; // fsm_ExternalInput_on_wait_long_state
132
133/*****************************************************************************/
134// input is always reported as on
135//
137{
138public:
139 void Poll (c_ExternalInput& pExternalInput) override;
140 void Init (c_ExternalInput& pExternalInput) override;
142
143}; // fsm_ExternalInput_wait_for_off_state
144
Definition FastTimer.hpp:24
Definition externalInput.h:26
void Poll(void)
Definition externalInput.cpp:134
uint32_t LongPushDelayMS
Definition externalInput.h:72
void ClearStatistics(void)
Definition externalInput.h:52
uint32_t GpioId
Definition externalInput.h:66
~c_ExternalInput(void)
Definition externalInput.h:29
char name[65]
Definition externalInput.h:65
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:69
void GetStatistics(JsonObject JsonData)
Definition externalInput.cpp:87
Polarity_t polarity
Definition externalInput.h:68
bool Enabled
Definition externalInput.h:69
FastTimer InputHoldTimer
Definition externalInput.h:71
void Init(uint32_t iInputId, uint32_t iPinId, Polarity_t Poliarity, String &sName)
Definition externalInput.cpp:51
fsm_ExternalInput_state * CurrentFsmState
Definition externalInput.h:73
uint32_t GetTriggerChannel()
Definition externalInput.h:50
bool ReadInput(void)
Definition externalInput.cpp:145
uint32_t TriggerChannel
Definition externalInput.h:67
uint32_t InputDebounceCount
Definition externalInput.h:70
void ProcessConfig(JsonObject JsonData)
Definition externalInput.cpp:99
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:102
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:169
~fsm_ExternalInput_boot() override
Definition externalInput.h:106
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:183
Definition externalInput.h:113
~fsm_ExternalInput_off_state() override
Definition externalInput.h:117
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:216
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:201
Definition externalInput.h:125
~fsm_ExternalInput_on_wait_long_state() override
Definition externalInput.h:129
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:261
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:247
Definition externalInput.h:88
virtual void Init(c_ExternalInput &pExternalInput)=0
virtual ~fsm_ExternalInput_state()
Definition externalInput.h:92
virtual void Poll(c_ExternalInput &pExternalInput)=0
Definition externalInput.h:137
~fsm_ExternalInput_wait_for_off_state() override
Definition externalInput.h:141
void Init(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:296
void Poll(c_ExternalInput &pExternalInput) override
Definition externalInput.cpp:309