ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
Loading...
Searching...
No Matches
ButtonToSwitch_ESP32.h
Go to the documentation of this file.
1
33#ifndef _BUTTONTOSWITCH_ESP32_H_
34#define _BUTTONTOSWITCH_ESP32_H_
35
36#include <Arduino.h>
37#include <stdint.h>
38
39#define _HwMinDbncTime 20 //Documented minimum wait time for a MPB signal to stabilize
40#define _StdPollDelay 10
41#define _MinSrvcTime 100
42#define _InvalidPinNum 0xFF // Value to give as "yet to be defined", the "Valid pin number" range and characteristics are development platform and environment related
43
44/*---------------- xTaskNotify() mechanism related constants, argument structs, information packing and unpacking BEGIN -------*/
45const uint8_t IsOnBitPos {0};
46const uint8_t IsEnabledBitPos{1};
47const uint8_t PilotOnBitPos{2};
48const uint8_t WrnngOnBitPos{3};
49const uint8_t IsVoidedBitPos{4};
50const uint8_t IsOnScndryBitPos{5};
51const uint8_t OtptCurValBitPos{16};
52
53#ifndef MPBOTPTS_T
54 #define MPBOTPTS_T
61 struct MpbOtpts_t{
62 bool isOn;
63 bool isEnabled;
64 bool pilotOn;
65 bool wrnngOn;
66 bool isVoided;
67 bool isOnScndry;
68 uint16_t otptCurVal;
69 };
70#endif
71/*---------------- xTaskNotify() mechanism related constants, argument structs, information packing and unpacking END -------*/
72
73// Definition workaround to let a function/method return value to be a function pointer
74typedef void (*fncPtrType)();
75typedef fncPtrType (*ptrToTrnFnc)();
76
77//===========================>> BEGIN General use function prototypes
78MpbOtpts_t otptsSttsUnpkg(uint32_t pkgOtpts);
79//===========================>> END General use function prototypes
80
81//===========================>> BEGIN General use Global variables
82//===========================>> END General use Global variables
83
84//==========================================================>> Classes declarations BEGIN
85
96protected:
97 enum fdaDmpbStts {
98 stOffNotVPP,
99 stOffVPP,
100 stOn,
101 stOnVRP,
102 stDisabled
103 };
104 const unsigned long int _stdMinDbncTime {_HwMinDbncTime};
105
106 uint8_t _mpbttnPin{};
107 bool _pulledUp{};
108 bool _typeNO{};
109 unsigned long int _dbncTimeOrigSett{};
110
111 unsigned long int _dbncRlsTimerStrt{0};
112 unsigned long int _dbncRlsTimeTempSett{0};
113 unsigned long int _dbncTimerStrt{0};
114 unsigned long int _dbncTimeTempSett{0};
115 void (*_fnWhnTrnOff)() {nullptr};
116 void (*_fnWhnTrnOn)() {nullptr};
117 bool _isEnabled{true};
118 volatile bool _isOn{false};
119 bool _isOnDisabled{false};
120 volatile bool _isPressed{false};
121 fdaDmpbStts _mpbFdaState {stOffNotVPP};
122 TimerHandle_t _mpbPollTmrHndl {NULL}; //FreeRTOS returns NULL if creation fails (not nullptr)
123 String _mpbPollTmrName {""};
124 /*volatile*/ bool _outputsChange {false};
125 uint32_t _outputsChangeCnt{0};
126 bool _outputsChngTskTrggr{false};
127 bool _prssRlsCcl{false};
128 unsigned long int _strtDelay {0};
129 bool _sttChng {true};
130 TaskHandle_t _taskToNotifyHndl {NULL};
131 TaskHandle_t _taskWhileOnHndl{NULL};
132 volatile bool _validDisablePend{false};
133 volatile bool _validEnablePend{false};
134 volatile bool _validPressPend{false};
135 volatile bool _validReleasePend{false};
136
137 void clrSttChng();
138 const bool getIsPressed() const;
139 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
140 virtual uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
141 void _setIsEnabled(const bool &newEnabledValue);
142 void setSttChng();
143 void _turnOff();
144 void _turnOn();
145 virtual void updFdaState();
146 bool updIsPressed();
147 virtual bool updValidPressesStatus();
148 const bool getOutputsChngTskTrggr() const;
149 void resetOutputsChngTskTrggr();
150
151public:
156 DbncdMPBttn();
166 DbncdMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0);
171 virtual ~DbncdMPBttn();
183 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
194 void clrStatus(bool clrIsOn = true);
205 void disable();
214 void enable();
224 bool end();
232 const unsigned long int getCurDbncTime() const;
243 fncPtrType getFnWhnTrnOff();
254 fncPtrType getFnWhnTrnOn();
263 const bool getIsEnabled() const;
272 const bool getIsOn () const;
284 const bool getIsOnDisabled() const;
292 const uint32_t getOtptsSttsPkgd();
303 const bool getOutputsChange() const;
312 // const bool getOutputsChngTskTrggr() const;
322 unsigned long int getStrtDelay();
333 const TaskHandle_t getTaskToNotify() const;
344 const TaskHandle_t getTaskWhileOn();
350 bool init(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0);
359 bool pause();
365 void resetDbncTime();
371 void resetFda();
377 // void resetOutputsChngTskTrggr();
388 bool resume();
400 bool setDbncTime(const unsigned long int &newDbncTime);
408 void setFnWhnTrnOffPtr(void(*newFnWhnTrnOff)());
416 void setFnWhnTrnOnPtr(void (*newFnWhnTrnOn)());
427 void setIsOnDisabled(const bool &newIsOnDisabled);
435 void setOutputsChange(bool newOutputsChange);
445 void setTaskToNotify(const TaskHandle_t &newTaskHandle);
461 virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle);
462};
463
464//==========================================================>>
465
476public:
491 DbncdDlydMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
500 bool init(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
510 void setStrtDelay(const unsigned long int &newStrtDelay);
511};
512
513//==========================================================>>
514
532protected:
533 enum fdaLmpbStts {
534 stOffNotVPP,
535 stOffVPP,
536 stOnNVRP,
537 stOnVRP,
538 stLtchNVUP,
539 stLtchdVUP,
540 stOffVUP,
541 stOffNVURP,
542 stOffVURP,
543 stDisabled
544 };
545 bool _isLatched{false};
546 fdaLmpbStts _mpbFdaState {stOffNotVPP};
547 bool _trnOffASAP{true};
548 volatile bool _validUnlatchPend{false};
549 volatile bool _validUnlatchRlsPend{false};
550
551 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
552
553 virtual void stDisabled_In(){};
554 virtual void stDisabled_Out(){};
555 virtual void stLtchNVUP_Do(){};
556 virtual void stOffNotVPP_In(){};
557 virtual void stOffNotVPP_Out(){};
558 virtual void stOffNVURP_Do(){};
559 virtual void stOffVPP_Out(){};
560 virtual void stOffVURP_Out(){};
561 virtual void stOnNVRP_Do(){};
562 virtual void updFdaState();
563 virtual void updValidUnlatchStatus() = 0;
564public:
570 LtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
574 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
578 void clrStatus(bool clrIsOn = true);
587 const bool getIsLatched() const;
597 bool getTrnOffASAP();
605 const bool getUnlatchPend() const;
613 const bool getUnlatchRlsPend() const;
625 void setTrnOffASAP(const bool &newVal);
633 void setUnlatchPend(const bool &newVal);
641 void setUnlatchRlsPend(const bool &newVal);
652 bool unlatch();
653};
654
655//==========================================================>>
656
665protected:
666 virtual void stOffNVURP_Do();
667 virtual void updValidUnlatchStatus();
668public:
674 TgglLtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
675};
676
677//==========================================================>>
678
689protected:
690 bool _tmRstbl {true};
691 unsigned long int _srvcTime {};
692 unsigned long int _srvcTimerStrt{0};
693
694 virtual void stOffNotVPP_Out();
695 virtual void stOffVPP_Out();
696 virtual void updValidUnlatchStatus();
697public:
705 TmLtchMPBttn(const uint8_t &mpbttnPin, const unsigned long int &svcTime, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
709 void clrStatus(bool clrIsOn = true);
715 const unsigned long int getSrvcTime() const;
726 bool setSrvcTime(const unsigned long int &newSrvcTime);
734 void setTmerRstbl(const bool &newIsRstbl);
735};
736
737//==========================================================>>
738
750protected:
751 void (*_fnWhnTrnOffPilot)() {nullptr};
752 void (*_fnWhnTrnOffWrnng)() {nullptr};
753 void (*_fnWhnTrnOnPilot)() {nullptr};
754 void (*_fnWhnTrnOnWrnng)() {nullptr};
755 bool _keepPilot{false};
756 volatile bool _pilotOn{false};
757 unsigned long int _wrnngMs{0};
758 volatile bool _wrnngOn {false};
759 unsigned int _wrnngPrctg {0};
760
761 bool _validWrnngSetPend{false};
762 bool _validWrnngResetPend{false};
763 bool _validPilotSetPend{false};
764 bool _validPilotResetPend{false};
765
766 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
767 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
768 virtual void stDisabled_In();
769 virtual void stLtchNVUP_Do();
770 virtual void stOffNotVPP_In();
771 virtual void stOffVPP_Out();
772 virtual void stOnNVRP_Do();
773 void _turnOffPilot();
774 void _turnOffWrnng();
775 void _turnOnPilot();
776 void _turnOnWrnng();
777 bool updPilotOn();
778 bool updWrnngOn();
779public:
787 HntdTmLtchMPBttn(const uint8_t &mpbttnPin, const unsigned long int &svcTime, const unsigned int &wrnngPrctg = 0, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
791 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
795 void clrStatus(bool clrIsOn = true);
806 fncPtrType getFnWhnTrnOffPilot();
817 fncPtrType getFnWhnTrnOffWrnng();
828 fncPtrType getFnWhnTrnOnPilot();
839 fncPtrType getFnWhnTrnOnWrnng();
849 const bool getPilotOn() const;
861 const bool getWrnngOn() const;
869 void setFnWhnTrnOffPilotPtr(void(*newFnWhnTrnOff)());
877 void setFnWhnTrnOffWrnngPtr(void(*newFnWhnTrnOff)());
885 void setFnWhnTrnOnPilotPtr(void(*newFnWhnTrnOn)());
893 void setFnWhnTrnOnWrnngPtr(void(*newFnWhnTrnOn)());
899 void setKeepPilot(const bool &newKeepPilot);
905 bool setSrvcTime(const unsigned long int &newSvcTime);
917 bool setWrnngPrctg (const unsigned int &newWrnngPrctg);
918};
919
920//==========================================================>>
921
931protected:
932 DbncdDlydMPBttn* _unLtchBttn {nullptr};
933 bool _xtrnUnltchPRlsCcl {false};
934
935 virtual void stOffNVURP_Do();
936 virtual void updValidUnlatchStatus();
937public:
951 XtrnUnltchMPBttn(const uint8_t &mpbttnPin, DbncdDlydMPBttn* unLtchBttn,
952 const bool &pulledUp, const bool &typeNO, const unsigned long int &dbncTimeOrigSett, const unsigned long int &strtDelay);
960 XtrnUnltchMPBttn(const uint8_t &mpbttnPin,
961 const bool &pulledUp, const bool &typeNO, const unsigned long int &dbncTimeOrigSett, const unsigned long int &strtDelay);
962
966 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
970 void clrStatus(bool clrIsOn = true);
971};
972
973//==========================================================>>
974
1000protected:
1001 enum fdaDALmpbStts{
1002 stOffNotVPP,
1003 stOffVPP,
1004 stOnMPBRlsd,
1005 //--------
1006 stOnStrtScndMod,
1007 stOnScndMod,
1008 stOnEndScndMod,
1009 //--------
1010 stOnTurnOff,
1011 //--------
1012 stDisabled
1013 };
1014 volatile bool _isOnScndry{false};
1015 fdaDALmpbStts _mpbFdaState {stOffNotVPP};
1016 unsigned long _scndModActvDly {2000};
1017 unsigned long _scndModTmrStrt {0};
1018 bool _validScndModPend{false};
1019
1020 void (*_fnWhnTrnOffScndry)() {nullptr};
1021 void (*_fnWhnTrnOnScndry)() {nullptr};
1022 TaskHandle_t _taskWhileOnScndryHndl{NULL};
1023
1024 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
1025 virtual void stDisabled_In(){};
1026 virtual void stOnEndScndMod_Out(){};
1027 virtual void stOnScndMod_Do() = 0;
1028 virtual void stOnStrtScndMod_In(){};
1029 virtual void _turnOffScndry();
1030 virtual void _turnOnScndry();
1031 virtual void updFdaState();
1032 virtual bool updValidPressesStatus();
1033 virtual void updValidUnlatchStatus();
1034
1035public:
1041 DblActnLtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
1050 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
1054 void clrStatus(bool clrIsOn = true);
1063 fncPtrType getFnWhnTrnOffScndry();
1072 fncPtrType getFnWhnTrnOnScndry();
1080 bool getIsOnScndry();
1088 unsigned long getScndModActvDly();
1099 const TaskHandle_t getTaskWhileOnScndry();
1107 void setFnWhnTrnOffScndryPtr(void(*newFnWhnTrnOff)());
1115 void setFnWhnTrnOnScndryPtr(void (*newFnWhnTrnOn)());
1126 bool setScndModActvDly(const unsigned long &newVal);
1144 void setTaskWhileOnScndry(const TaskHandle_t &newTaskHandle);
1145
1146};
1147
1148//==========================================================>>
1149
1163protected:
1164 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
1165 // virtual void stDisabled_In();
1166 virtual void stOnEndScndMod_Out();
1167 virtual void stOnScndMod_Do();
1168 virtual void stOnStrtScndMod_In();
1169public:
1175 DDlydDALtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
1183 void clrStatus(bool clrIsOn = true);
1184};
1185
1186//==========================================================>>
1187
1206
1207protected:
1208 bool _autoSwpDirOnEnd{true}; // Changes slider direction automatically when reaches _otptValMax or _otptValMin
1209 bool _autoSwpDirOnPrss{false};// Changes slider direction each time it enters slider mode
1210 bool _curSldrDirUp{true};
1211 uint16_t _initOtptCurVal{};
1212 uint16_t _otptCurVal{};
1213 unsigned long _otptSldrSpd{1};
1214 uint16_t _otptSldrStpSize{0x01};
1215 uint16_t _otptValMax{0xFFFF};
1216 uint16_t _otptValMin{0x0000};
1217
1218 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
1219 bool _setSldrDir(const bool &newVal);
1220 // virtual void stDisabled_In();
1221 void stOnEndScndMod_Out();
1222 virtual void stOnScndMod_Do();
1223 virtual void stOnStrtScndMod_In();
1224public:
1232 SldrDALtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0, const uint16_t initVal = 0xFFFF);
1241 void clrStatus(bool clrIsOn = true);
1247 uint16_t getOtptCurVal();
1257 bool getOtptCurValIsMax();
1267 bool getOtptCurValIsMin();
1277 unsigned long getOtptSldrSpd();
1287 uint16_t getOtptSldrStpSize();
1293 uint16_t getOtptValMax();
1299 uint16_t getOtptValMin();
1309 bool getSldrDirUp();
1321 bool setOtptCurVal(const uint16_t &newVal);
1336 bool setOtptSldrSpd(const uint16_t &newVal);
1353 bool setOtptSldrStpSize(const uint16_t &newVal);
1369 bool setOtptValMax(const uint16_t &newVal);
1385 bool setOtptValMin(const uint16_t &newVal);
1398 bool setSldrDirDn();
1411 bool setSldrDirUp();
1421 void setSwpDirOnEnd(const bool &newVal);
1430 void setSwpDirOnPrss(const bool &newVal);
1438 bool swapSldrDir();
1439};
1440
1441//==========================================================>>
1442
1462private:
1463 void setFrcdOtptWhnVdd(const bool &newVal);
1464 void setStOnWhnOtpFrcd(const bool &newVal);
1465protected:
1466 enum fdaVmpbStts{
1467 stOffNotVPP,
1468 stOffVPP,
1469 stOnNVRP,
1470 //--------
1471 stOnVVP,
1472 stOnVddNVUP,
1473 stOffVddNVUP,
1474 stOffVddVUP,
1475 stOffUnVdd,
1476 //--------
1477 stOnVRP,
1478 stOnTurnOff,
1479 stOff,
1480 //--------
1481 stDisabled
1482 };
1483 fdaVmpbStts _mpbFdaState {stOffNotVPP};
1484
1485 void (*_fnWhnTrnOffVdd)() {nullptr};
1486 void (*_fnWhnTrnOnVdd)() {nullptr};
1487 bool _frcOtptLvlWhnVdd {true};
1488 bool _isVoided{false};
1489 bool _stOnWhnOtptFrcd{false};
1490 bool _validVoidPend{false};
1491 bool _validUnvoidPend{false};
1492
1493 static void mpbPollCallback(TimerHandle_t mpbTmrCb);
1494 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
1495 bool setVoided(const bool &newVoidValue);
1496 virtual void stDisabled_In();
1497 virtual void stDisabled_Out();
1498 virtual void stOffNotVPP_In(){};
1499 virtual void stOffVddNVUP_Do(){}; //This provides a setting point for calculating the _validUnvoidPend
1500 virtual void stOffVPP_Do(){}; // This provides a setting point for the voiding mechanism to be started
1501 void _turnOffVdd();
1502 void _turnOnVdd();
1503 virtual void updFdaState();
1504 virtual bool updVoidStatus() = 0;
1505public:
1513 VdblMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0, const bool &isOnDisabled = false);
1517 virtual ~VdblMPBttn();
1521 void clrStatus(bool clrIsOn = true);
1530 fncPtrType getFnWhnTrnOffVdd();
1539 fncPtrType getFnWhnTrnOnVdd();
1549 bool getFrcOtptLvlWhnVdd();
1557 const bool getIsVoided() const;
1569 bool getStOnWhnOtpFrcd();
1577 void setFnWhnTrnOffVddPtr(void(*newFnWhnTrnOff)());
1585 void setFnWhnTrnOnVddPtr(void(*newFnWhnTrnOn)());
1596 bool setIsNotVoided();
1604 bool setIsVoided();
1605};
1606
1607//==========================================================>>
1608
1618protected:
1619 unsigned long int _voidTime;
1620 unsigned long int _voidTmrStrt{0};
1621
1622 virtual void stOffNotVPP_In();
1623 virtual void stOffVddNVUP_Do(); //This provides a setting point for calculating the _validUnvoidPend
1624 virtual void stOffVPP_Do(); // This provides a setting point for the voiding mechanism to be started
1625 bool updIsPressed();
1626 virtual bool updVoidStatus();
1627public:
1635 TmVdblMPBttn(const uint8_t &mpbttnPin, unsigned long int voidTime, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0, const bool &isOnDisabled = false);
1639 virtual ~TmVdblMPBttn();
1643 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
1647 void clrStatus();
1655 const unsigned long int getVoidTime() const;
1666 bool setVoidTime(const unsigned long int &newVoidTime);
1667};
1668
1669//==========================================================>>
1670
1687protected:
1688 virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle);
1689 virtual void stOffVddNVUP_Do(); //This provides the calculation for the _validUnvoidPend
1690 virtual bool updVoidStatus();
1691public:
1697 SnglSrvcVdblMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0, const unsigned long int &strtDelay = 0);
1701 virtual ~SnglSrvcVdblMPBttn();
1705 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
1706};
1707
1708//==========================================================>>
1709
1710#endif /*_BUTTONTOSWITCH_ESP32_H_*/
MpbOtpts_t otptsSttsUnpkg(uint32_t pkgOtpts)
Unpackages a 32-bit value into a DbncdMPBttn object status.
Definition ButtonToSwitch_ESP32.cpp:3173
Models a Debounced Delayed Double Action Latched MPB combo switch (Debounced Delayed DALDD-MPB - DD-D...
Definition ButtonToSwitch_ESP32.h:1162
void clrStatus(bool clrIsOn=true)
See DbncddMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:2214
~DDlydDALtchMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:2210
DDlydDALtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:2205
Abstract class, base to model Double Action LDD-MPBs (DALDD-MPBs).
Definition ButtonToSwitch_ESP32.h:999
bool setScndModActvDly(const unsigned long &newVal)
Sets a new value for the scndModActvDly class attribute.
Definition ButtonToSwitch_ESP32.cpp:1898
void setFnWhnTrnOnScndryPtr(void(*newFnWhnTrnOn)())
Sets the function that will be called to execute every time the object enters the Secondary On State.
Definition ButtonToSwitch_ESP32.cpp:1886
const TaskHandle_t getTaskWhileOnScndry()
Returns the task to be run while the object is in the Secondary On state.
Definition ButtonToSwitch_ESP32.cpp:1840
fncPtrType getFnWhnTrnOnScndry()
Returns the function that is set to execute every time the object enters the Secondary On State.
Definition ButtonToSwitch_ESP32.cpp:1825
void clrStatus(bool clrIsOn=true)
See DbncddMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1806
bool getIsOnScndry()
Returns the current value of the isOnScndry attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1830
void setTaskWhileOnScndry(const TaskHandle_t &newTaskHandle)
Sets the task to be run while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:1916
unsigned long getScndModActvDly()
Returns the current value of the scndModActvDly class attribute.
Definition ButtonToSwitch_ESP32.cpp:1835
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1782
void setFnWhnTrnOffScndryPtr(void(*newFnWhnTrnOff)())
Sets the function that will be called to execute every time the object enters the Secondary Off State...
Definition ButtonToSwitch_ESP32.cpp:1875
fncPtrType getFnWhnTrnOffScndry()
returns the function that is set to execute every time the object enters the Secondary Off State.
Definition ButtonToSwitch_ESP32.cpp:1820
~DblActnLtchMPBttn()
Virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:1778
DblActnLtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Abstract Class constructor.
Definition ButtonToSwitch_ESP32.cpp:1773
Models a Debounced Delayed MPB (DD-MPB).
Definition ButtonToSwitch_ESP32.h:475
DbncdDlydMPBttn()
Default constructor.
Definition ButtonToSwitch_ESP32.cpp:763
void setStrtDelay(const unsigned long int &newStrtDelay)
Sets a new value to the "Start Delay" strtDelay attribute.
Definition ButtonToSwitch_ESP32.cpp:784
bool init(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
see DbncdMPBttn::init(const uint8_t, const bool, const bool, const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:774
Base class, models a Debounced Momentary Push Button (D-MPB).
Definition ButtonToSwitch_ESP32.h:95
fncPtrType getFnWhnTrnOn()
Returns the function that is set to execute every time the object enters the On State.
Definition ButtonToSwitch_ESP32.cpp:164
void resetFda()
Resets the MPB behavior automaton to it's Initial or Start State
Definition ButtonToSwitch_ESP32.cpp:334
void clrStatus(bool clrIsOn=true)
Clears and resets flags, timers and counters modified through the object's signals processing.
Definition ButtonToSwitch_ESP32.cpp:94
const unsigned long int getCurDbncTime() const
Returns the current debounce period time set for the object.
Definition ButtonToSwitch_ESP32.cpp:154
const TaskHandle_t getTaskWhileOn()
Returns the task to be run (resumed) while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:215
void enable()
Enables the input signal processing.
Definition ButtonToSwitch_ESP32.cpp:131
bool pause()
Pauses the software timer updating the computation of the object's internal flags value.
Definition ButtonToSwitch_ESP32.cpp:310
const TaskHandle_t getTaskToNotify() const
Returns the task to be notified by the object when its output flags changes.
Definition ButtonToSwitch_ESP32.cpp:209
virtual ~DbncdMPBttn()
Default virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:65
virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle)
Sets the task to be run while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:502
void setIsOnDisabled(const bool &newIsOnDisabled)
Sets the value of the isOnDisabled attribute flag.
Definition ButtonToSwitch_ESP32.cpp:427
bool init(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0)
Initializes an object instantiated by the default constructor.
Definition ButtonToSwitch_ESP32.cpp:220
bool end()
Detaches the object from the timer that monitors the input pins, compute and updates the object's sta...
Definition ButtonToSwitch_ESP32.cpp:136
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
Attaches the instantiated object to a timer that monitors the input pins and updates the object statu...
Definition ButtonToSwitch_ESP32.cpp:70
void resetDbncTime()
Resets the debounce process time of the object to the value used at instantiation.
Definition ButtonToSwitch_ESP32.cpp:328
DbncdMPBttn()
Default class constructor.
Definition ButtonToSwitch_ESP32.cpp:39
void disable()
Disables the input signal processing, ignoring the changes of its values.
Definition ButtonToSwitch_ESP32.cpp:126
bool resume()
Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
Definition ButtonToSwitch_ESP32.cpp:352
const bool getIsEnabled() const
Returns the value of the isEnabled attribute flag, indicating the Enabled or Disabled status of the o...
Definition ButtonToSwitch_ESP32.cpp:169
const bool getIsOnDisabled() const
Returns the value of the isOnDisabled attribute flag.
Definition ButtonToSwitch_ESP32.cpp:179
void setTaskToNotify(const TaskHandle_t &newTaskHandle)
Sets the handle to the task to be notified by the object when its output attribute flags changes.
Definition ButtonToSwitch_ESP32.cpp:479
void setFnWhnTrnOffPtr(void(*newFnWhnTrnOff)())
Sets the function that will be called to execute every time the object enters the Off State.
Definition ButtonToSwitch_ESP32.cpp:384
const bool getOutputsChange() const
Returns the value of the outputsChange attribute flag.
Definition ButtonToSwitch_ESP32.cpp:194
const bool getIsOn() const
Returns the value of the isOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:174
void setFnWhnTrnOnPtr(void(*newFnWhnTrnOn)())
Sets the function that will be called to execute every time the object enters the On State.
Definition ButtonToSwitch_ESP32.cpp:395
unsigned long int getStrtDelay()
Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribu...
Definition ButtonToSwitch_ESP32.cpp:199
const uint32_t getOtptsSttsPkgd()
Returns the relevant attribute flags values for the object state encoded as a 32 bits value,...
Definition ButtonToSwitch_ESP32.cpp:189
fncPtrType getFnWhnTrnOff()
Returns the function that is set to execute every time the object enters the Off State.
Definition ButtonToSwitch_ESP32.cpp:159
void setOutputsChange(bool newOutputsChange)
Sets the value of the attribute flag indicating if a change took place in any of the output attribute...
Definition ButtonToSwitch_ESP32.cpp:447
bool setDbncTime(const unsigned long int &newDbncTime)
Sets the debounce process time.
Definition ButtonToSwitch_ESP32.cpp:368
Models a Hinted Timer Latch DD-MPB, a.k.a. Staircase Switch (HTiLDD-MPB).
Definition ButtonToSwitch_ESP32.h:749
bool setSrvcTime(const unsigned long int &newSvcTime)
See TmLtchMPBttn::setSrvcTime(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1445
fncPtrType getFnWhnTrnOnPilot()
Returns the function that is set to execute every time the object's Pilot attribute flag enters the O...
Definition ButtonToSwitch_ESP32.cpp:1315
void setFnWhnTrnOffWrnngPtr(void(*newFnWhnTrnOff)())
Sets the function that will be called to execute every time the object's Warning is reset.
Definition ButtonToSwitch_ESP32.cpp:1398
fncPtrType getFnWhnTrnOffWrnng()
Returns the function that is set to execute every time the object's Warning attribute flag enters the...
Definition ButtonToSwitch_ESP32.cpp:1310
const bool getWrnngOn() const
Returns the current value of the warningOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1330
void setFnWhnTrnOnPilotPtr(void(*newFnWhnTrnOn)())
Sets the function that will be called to execute every time the object's Pilot is set.
Definition ButtonToSwitch_ESP32.cpp:1410
HntdTmLtchMPBttn(const uint8_t &mpbttnPin, const unsigned long int &svcTime, const unsigned int &wrnngPrctg=0, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:1255
const bool getPilotOn() const
Returns the current value of the pilotOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1325
void clrStatus(bool clrIsOn=true)
see DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1285
fncPtrType getFnWhnTrnOffPilot()
Returns the function that is set to execute every time the object's Pilot attribute flag enters the O...
Definition ButtonToSwitch_ESP32.cpp:1305
void setFnWhnTrnOnWrnngPtr(void(*newFnWhnTrnOn)())
Sets the function that will be called to execute every time the object's Wrnng is set.
Definition ButtonToSwitch_ESP32.cpp:1422
bool setWrnngPrctg(const unsigned int &newWrnngPrctg)
Sets the value for the percentage of service time for calculating the warningOn flag value.
Definition ButtonToSwitch_ESP32.cpp:1460
fncPtrType getFnWhnTrnOnWrnng()
Returns the function that is set to execute every time the object's Warning attribute flag enters the...
Definition ButtonToSwitch_ESP32.cpp:1320
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1261
void setFnWhnTrnOffPilotPtr(void(*newFnWhnTrnOff)())
Sets the function that will be called to execute every time the object's Pilot is reset.
Definition ButtonToSwitch_ESP32.cpp:1386
void setKeepPilot(const bool &newKeepPilot)
Sets the configuration of the keepPilot service attribute.
Definition ButtonToSwitch_ESP32.cpp:1434
Abstract class, base to model Latched Debounced Delayed MPBs (LDD-MPB).
Definition ButtonToSwitch_ESP32.h:531
const bool getIsLatched() const
Returns the value of the isLatched attribute flag, indicating the Latched or Unlatched condition of t...
Definition ButtonToSwitch_ESP32.cpp:839
bool unlatch()
Sets the values of the flags needed to unlatch a latched MPB.
Definition ButtonToSwitch_ESP32.cpp:926
const bool getUnlatchRlsPend() const
Returns the value of the "Valid Unlatch Release Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:854
LtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:797
const bool getUnlatchPend() const
Returns the value of the "Valid Unlatch Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:849
void setUnlatchPend(const bool &newVal)
Sets the value of the "Valid Unlatch Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:904
void setTrnOffASAP(const bool &newVal)
Sets the value of the trnOffASAP attribute.
Definition ButtonToSwitch_ESP32.cpp:893
bool getTrnOffASAP()
Returns the value of the trnOffASAP attribute flag.
Definition ButtonToSwitch_ESP32.cpp:844
void setUnlatchRlsPend(const bool &newVal)
Sets the value of the "Valid Unlatch Release Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:915
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:802
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:826
Models a Slider Double Action LDD-MPB combo switch, a.k.a. off/on/dimmer, a.k.a. off/on/volume radio ...
Definition ButtonToSwitch_ESP32.h:1205
void clrStatus(bool clrIsOn=true)
Definition ButtonToSwitch_ESP32.cpp:2281
bool setOtptSldrSpd(const uint16_t &newVal)
Sets the output slider speed (otptSldrSpd) attribute.
Definition ButtonToSwitch_ESP32.cpp:2360
uint16_t getOtptValMax()
Returns the top output current value register setting.
Definition ButtonToSwitch_ESP32.cpp:2320
bool getOtptCurValIsMin()
Returns the result of comparing the Output Current Value to the Minimum value setting
Definition ButtonToSwitch_ESP32.cpp:2305
bool setSldrDirDn()
Sets the value of the curSldrDirUp attribute to false.
Definition ButtonToSwitch_ESP32.cpp:2464
bool setOtptValMax(const uint16_t &newVal)
Sets the output current value register maximum value attribute (otptValMax attribute).
Definition ButtonToSwitch_ESP32.cpp:2396
bool swapSldrDir()
Inverts the current curSldrDirUp attribute value.
Definition ButtonToSwitch_ESP32.cpp:2577
~SldrDALtchMPBttn()
Virtual class destructor.
Definition ButtonToSwitch_ESP32.cpp:2277
bool setOtptCurVal(const uint16_t &newVal)
Sets the output current value register.
Definition ButtonToSwitch_ESP32.cpp:2342
uint16_t getOtptCurVal()
Returns the Output Current Value (otpCurVal) attribute.
Definition ButtonToSwitch_ESP32.cpp:2295
bool setSldrDirUp()
Sets the value of the curSldrDirUp attribute to true.
Definition ButtonToSwitch_ESP32.cpp:2469
bool getSldrDirUp()
Returns the value of the curSldrDirUp attribute.
Definition ButtonToSwitch_ESP32.cpp:2330
bool setOtptSldrStpSize(const uint16_t &newVal)
Sets the output slider step size (otptSldrStpSize) attribute value.
Definition ButtonToSwitch_ESP32.cpp:2378
bool getOtptCurValIsMax()
Returns a boolean value indicating if the "Output Current Value" equals the maximum limit.
Definition ButtonToSwitch_ESP32.cpp:2300
SldrDALtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0, const uint16_t initVal=0xFFFF)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:2271
void setSwpDirOnPrss(const bool &newVal)
Sets the value of the "Auto-Swap Direction On Press" (autoSwpDirOnPrss) attribute.
Definition ButtonToSwitch_ESP32.cpp:2481
bool setOtptValMin(const uint16_t &newVal)
Sets the output current value register minimum value attribute (otptValMin attribute).
Definition ButtonToSwitch_ESP32.cpp:2418
uint16_t getOtptValMin()
Returns the bottom output current value register setting.
Definition ButtonToSwitch_ESP32.cpp:2325
unsigned long getOtptSldrSpd()
Returns the current setting for the Output Slider Speed value.
Definition ButtonToSwitch_ESP32.cpp:2310
uint16_t getOtptSldrStpSize()
Returns the current setting for the Output Slider Step Size value.
Definition ButtonToSwitch_ESP32.cpp:2315
void setSwpDirOnEnd(const bool &newVal)
Sets the value of the "Auto-Swap Direction on Ends" (autoSwpDirOnEnd) attribute.
Definition ButtonToSwitch_ESP32.cpp:2474
Models a Single Service Voidable DD-MPB a.k.a. Trigger switch (SSVDD-MPB)
Definition ButtonToSwitch_ESP32.h:1686
virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle)
Sets the task to be run while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:3138
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:3116
SnglSrvcVdblMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:3104
virtual ~SnglSrvcVdblMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:3112
Models a Toggle Latch DD-MPB, a.k.a. a Toggle Switch (ToLDD-MPB).
Definition ButtonToSwitch_ESP32.h:664
TgglLtchMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:1135
Models a Timer Latch DD-MPB, a.k.a. Timer Switch (TiLDD-MPB).
Definition ButtonToSwitch_ESP32.h:688
const unsigned long int getSrvcTime() const
Returns the configured Service Time.
Definition ButtonToSwitch_ESP32.cpp:1192
void setTmerRstbl(const bool &newIsRstbl)
Configures the timer for the Service Time to be reseted before it reaches unlatching time.
Definition ButtonToSwitch_ESP32.cpp:1213
bool setSrvcTime(const unsigned long int &newSrvcTime)
Sets a new value to the Service Time attribute.
Definition ButtonToSwitch_ESP32.cpp:1197
void clrStatus(bool clrIsOn=true)
see DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1181
TmLtchMPBttn(const uint8_t &mpbttnPin, const unsigned long int &svcTime, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:1173
Models a Time Voidable DD-MPB, a.k.a. Anti-tampering switch (TVDD-MPB)
Definition ButtonToSwitch_ESP32.h:1617
virtual ~TmVdblMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:3005
void clrStatus()
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:3031
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:3009
TmVdblMPBttn(const uint8_t &mpbttnPin, unsigned long int voidTime, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0, const bool &isOnDisabled=false)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:3000
const unsigned long int getVoidTime() const
Returns the voidTime attribute current value.
Definition ButtonToSwitch_ESP32.cpp:3042
bool setVoidTime(const unsigned long int &newVoidTime)
Sets a new value to the Void Time attribute.
Definition ButtonToSwitch_ESP32.cpp:3047
Abstract class, base to model Voidable DD-MPBs (VDD-MPB).
Definition ButtonToSwitch_ESP32.h:1461
bool setIsVoided()
Sets the value of the isVoided attribute flag to true.
Definition ButtonToSwitch_ESP32.cpp:2715
const bool getIsVoided() const
Returns the current value of the isVoided attribute flag.
Definition ButtonToSwitch_ESP32.cpp:2622
fncPtrType getFnWhnTrnOnVdd()
Returns the function that is set to execute every time the object enters the Voided or "Voided On" St...
Definition ButtonToSwitch_ESP32.cpp:2612
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:2594
void setFnWhnTrnOnVddPtr(void(*newFnWhnTrnOn)())
Sets the function that will be called to execute every time the object's isVoided attribute flag is s...
Definition ButtonToSwitch_ESP32.cpp:2687
virtual ~VdblMPBttn()
Default virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:2590
fncPtrType getFnWhnTrnOffVdd()
Returns the function that is set to execute every time the object exits the Voided State.
Definition ButtonToSwitch_ESP32.cpp:2607
void setFnWhnTrnOffVddPtr(void(*newFnWhnTrnOff)())
Sets the function that will be called to execute every time the object's isVoided attribute flag is r...
Definition ButtonToSwitch_ESP32.cpp:2674
bool getFrcOtptLvlWhnVdd()
Returns the value of the frcOtptLvlWhnVdd attribute.
Definition ButtonToSwitch_ESP32.cpp:2617
bool getStOnWhnOtpFrcd()
Returns the value of the frcOtptLvlWhnVdd attribute.
Definition ButtonToSwitch_ESP32.cpp:2627
bool setIsNotVoided()
Sets the value of the isVoided attribute flag to false.
Definition ButtonToSwitch_ESP32.cpp:2710
VdblMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp=true, const bool &typeNO=true, const unsigned long int &dbncTimeOrigSett=0, const unsigned long int &strtDelay=0, const bool &isOnDisabled=false)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:2584
Models an External Unlatch LDD-MPB, a.k.a. Emergency Latched Switch (XULDD-MPB)
Definition ButtonToSwitch_ESP32.h:930
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1726
XtrnUnltchMPBttn(const uint8_t &mpbttnPin, DbncdDlydMPBttn *unLtchBttn, const bool &pulledUp, const bool &typeNO, const unsigned long int &dbncTimeOrigSett, const unsigned long int &strtDelay)
Class constructor.
Definition ButtonToSwitch_ESP32.cpp:1686
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1698
Type to hold the complete set of output attribute flags from any DbncdMPBttn class and subclasses obj...
Definition ButtonToSwitch_ESP32.h:61