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
/*****************************************************************************/
24
class
fsm_ExternalInput_state
;
25
class
c_ExternalInput
final
26
{
27
public
:
28
c_ExternalInput
(
void
);
29
~c_ExternalInput
(
void
) {}
30
31
enum
InputValue_t
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
38
enum
Polarity_t
39
{
40
ActiveHigh
= 0,
41
ActiveLow
,
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
53
protected
:
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);
67
Polarity_t
polarity
=
Polarity_t::ActiveLow
;
68
bool
Enabled
=
false
;
69
uint32_t
InputDebounceCount
= 0;
70
FastTimer
InputHoldTimer
;
71
uint32_t
LongPushDelayMS
= 2000;
72
fsm_ExternalInput_state
*
CurrentFsmState
=
nullptr
;
// initialized in constructor
73
74
friend
class
fsm_ExternalInput_boot
;
75
friend
class
fsm_ExternalInput_off_state
;
76
friend
class
fsm_ExternalInput_on_wait_long_state
;
77
friend
class
fsm_ExternalInput_wait_for_off_state
;
78
79
};
// c_ExternalInput
80
81
/*****************************************************************************/
82
/*
83
* Generic fsm base class.
84
*/
85
/*****************************************************************************/
86
class
fsm_ExternalInput_state
87
{
88
public
:
89
virtual
void
Poll
(
c_ExternalInput
& pExternalInput) = 0;
90
virtual
void
Init
(
c_ExternalInput
& pExternalInput) = 0;
91
virtual
~fsm_ExternalInput_state
() {};
92
private
:
93
#define MIN_INPUT_STABLE_VALUE 50
94
95
};
// fsm_ExternalInput_state
96
97
/*****************************************************************************/
98
// input is unknown and unreachable
99
//
100
class
fsm_ExternalInput_boot
final :
public
fsm_ExternalInput_state
101
{
102
public
:
103
void
Poll
(
c_ExternalInput
& pExternalInput)
override
;
104
void
Init
(
c_ExternalInput
& pExternalInput)
override
;
105
~fsm_ExternalInput_boot
()
override
{};
106
};
// fsm_ExternalInput_boot
107
108
/*****************************************************************************/
109
// input is off and stable
110
//
111
class
fsm_ExternalInput_off_state
final :
public
fsm_ExternalInput_state
112
{
113
public
:
114
void
Poll
(
c_ExternalInput
& pExternalInput)
override
;
115
void
Init
(
c_ExternalInput
& pExternalInput)
override
;
116
~fsm_ExternalInput_off_state
()
override
{};
117
118
};
// fsm_ExternalInput_off_state
119
120
/*****************************************************************************/
121
// input is always reported as on
122
//
123
class
fsm_ExternalInput_on_wait_long_state
final :
public
fsm_ExternalInput_state
124
{
125
public
:
126
void
Poll
(
c_ExternalInput
& pExternalInput)
override
;
127
void
Init
(
c_ExternalInput
& pExternalInput)
override
;
128
~fsm_ExternalInput_on_wait_long_state
()
override
{};
129
130
};
// fsm_ExternalInput_on_wait_long_state
131
132
/*****************************************************************************/
133
// input is always reported as on
134
//
135
class
fsm_ExternalInput_wait_for_off_state
final :
public
fsm_ExternalInput_state
136
{
137
public
:
138
void
Poll
(
c_ExternalInput
& pExternalInput)
override
;
139
void
Init
(
c_ExternalInput
& pExternalInput)
override
;
140
~fsm_ExternalInput_wait_for_off_state
()
override
{};
141
142
};
// fsm_ExternalInput_wait_for_off_state
143
ESPixelStick.h
FastTimer
Definition
FastTimer.hpp:24
c_ExternalInput
Definition
externalInput.h:26
c_ExternalInput::Poll
void Poll(void)
Definition
externalInput.cpp:131
c_ExternalInput::LongPushDelayMS
uint32_t LongPushDelayMS
Definition
externalInput.h:71
c_ExternalInput::GpioId
uint32_t GpioId
Definition
externalInput.h:65
c_ExternalInput::~c_ExternalInput
~c_ExternalInput(void)
Definition
externalInput.h:29
c_ExternalInput::name
String name
Definition
externalInput.h:64
c_ExternalInput::IsEnabled
bool IsEnabled()
Definition
externalInput.h:49
c_ExternalInput::InputValue_t
InputValue_t
Definition
externalInput.h:32
c_ExternalInput::shortOn
@ shortOn
Definition
externalInput.h:34
c_ExternalInput::longOn
@ longOn
Definition
externalInput.h:35
c_ExternalInput::off
@ off
Definition
externalInput.h:33
c_ExternalInput::c_ExternalInput
c_ExternalInput(void)
Definition
externalInput.cpp:41
c_ExternalInput::GetConfig
void GetConfig(JsonObject JsonData)
Definition
externalInput.cpp:68
c_ExternalInput::GetStatistics
void GetStatistics(JsonObject JsonData)
Definition
externalInput.cpp:86
c_ExternalInput::polarity
Polarity_t polarity
Definition
externalInput.h:67
c_ExternalInput::Enabled
bool Enabled
Definition
externalInput.h:68
c_ExternalInput::InputHoldTimer
FastTimer InputHoldTimer
Definition
externalInput.h:70
c_ExternalInput::Init
void Init(uint32_t iInputId, uint32_t iPinId, Polarity_t Poliarity, String &sName)
Definition
externalInput.cpp:50
c_ExternalInput::CurrentFsmState
fsm_ExternalInput_state * CurrentFsmState
Definition
externalInput.h:72
c_ExternalInput::GetTriggerChannel
uint32_t GetTriggerChannel()
Definition
externalInput.h:50
c_ExternalInput::ReadInput
bool ReadInput(void)
Definition
externalInput.cpp:142
c_ExternalInput::TriggerChannel
uint32_t TriggerChannel
Definition
externalInput.h:66
c_ExternalInput::InputDebounceCount
uint32_t InputDebounceCount
Definition
externalInput.h:69
c_ExternalInput::ProcessConfig
void ProcessConfig(JsonObject JsonData)
Definition
externalInput.cpp:98
c_ExternalInput::Polarity_t
Polarity_t
Definition
externalInput.h:39
c_ExternalInput::ActiveLow
@ ActiveLow
Definition
externalInput.h:41
c_ExternalInput::ActiveHigh
@ ActiveHigh
Definition
externalInput.h:40
c_ExternalInput::GetDriverName
void GetDriverName(String &Name)
Definition
externalInput.h:51
fsm_ExternalInput_boot
Definition
externalInput.h:101
fsm_ExternalInput_boot::Init
void Init(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:166
fsm_ExternalInput_boot::~fsm_ExternalInput_boot
~fsm_ExternalInput_boot() override
Definition
externalInput.h:105
fsm_ExternalInput_boot::Poll
void Poll(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:180
fsm_ExternalInput_off_state
Definition
externalInput.h:112
fsm_ExternalInput_off_state::~fsm_ExternalInput_off_state
~fsm_ExternalInput_off_state() override
Definition
externalInput.h:116
fsm_ExternalInput_off_state::Poll
void Poll(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:213
fsm_ExternalInput_off_state::Init
void Init(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:198
fsm_ExternalInput_on_wait_long_state
Definition
externalInput.h:124
fsm_ExternalInput_on_wait_long_state::~fsm_ExternalInput_on_wait_long_state
~fsm_ExternalInput_on_wait_long_state() override
Definition
externalInput.h:128
fsm_ExternalInput_on_wait_long_state::Poll
void Poll(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:258
fsm_ExternalInput_on_wait_long_state::Init
void Init(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:244
fsm_ExternalInput_state
Definition
externalInput.h:87
fsm_ExternalInput_state::Init
virtual void Init(c_ExternalInput &pExternalInput)=0
fsm_ExternalInput_state::~fsm_ExternalInput_state
virtual ~fsm_ExternalInput_state()
Definition
externalInput.h:91
fsm_ExternalInput_state::Poll
virtual void Poll(c_ExternalInput &pExternalInput)=0
fsm_ExternalInput_wait_for_off_state
Definition
externalInput.h:136
fsm_ExternalInput_wait_for_off_state::~fsm_ExternalInput_wait_for_off_state
~fsm_ExternalInput_wait_for_off_state() override
Definition
externalInput.h:140
fsm_ExternalInput_wait_for_off_state::Init
void Init(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:293
fsm_ExternalInput_wait_for_off_state::Poll
void Poll(c_ExternalInput &pExternalInput) override
Definition
externalInput.cpp:306
include
input
externalInput.h
Generated by
1.12.0