diff --git a/DevelopmentDocs/changes.txt b/DevelopmentDocs/changes.txt index 2d979df..c8da305 100644 --- a/DevelopmentDocs/changes.txt +++ b/DevelopmentDocs/changes.txt @@ -1,6 +1,18 @@ +# v4.1.0 Debugging and improvements release +Refactoring: +- The setOutputsChange() and getOutputsChange() transparently changed. The API was not changed -it still sets and returns a boolean value- but internally now keeps a counter to avoid multithread developments generated race conditions. +Debugging: +- The use of getters and taskNotify mechanisms for the same attribute flags at the same time generated unexpected results due to race conditions: SOLVED. +- Code overall simplification and cleanup. +- DFA unconditional state changes allowed to cascade on more classes' state machines. +Example files: +- Several example files added. +- Some example files modified to show different solutions approaches for the same results. + # v4.0.5 Maintenance release - DbncdMPBttn::init() conditional execution premises corrected (the condition resulted in a Paradox) -Pending of test on the STM32 implementation- DFA unconditional state changes allowed to cascade advancement in single step to improve speed and responsiveness for the DbncdMPBttn and DbncdDlydMPBttn classes. +Pending of test on the STM32 implementation +- DFA unconditional state changes allowed to cascade advancement in single step to improve speed and responsiveness for the DbncdMPBttn and DbncdDlydMPBttn classes. # v4.0.4 Maintenance release - Code cleanup. diff --git a/README.md b/README.md index 477cb50..c3293f5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # **Buttons to Switches Library** (ButtonToSwitch_ESP32) -## **The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.** +## **The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.** This library is an evolutionary refactoring of my own -now archived- **mpbToSwitch** library. diff --git a/docs/_button_to_switch___e_s_p32_8cpp.html b/docs/_button_to_switch___e_s_p32_8cpp.html index 9766068..32580be 100644 --- a/docs/_button_to_switch___e_s_p32_8cpp.html +++ b/docs/_button_to_switch___e_s_p32_8cpp.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -132,7 +132,7 @@

: Source file for the ButtonToSwitch_ESP32 library classes

The library implements classes that model several switch mechanisms replacements out of simple push buttons or similar equivalent digital signal inputs. By using just a button (a.k.a. momentary switches or momentary push buttons, MPB for short from here on) the classes implemented in this library will manage, calculate and update several parameters to generate the embedded behavior of standard electromechanical switches.

Author
: Gabriel D. Goldman
-
Version
v4.0.4
+
Version
v4.1.0
Date
: Created on: 06/11/2023 : Last modification: 15/09/2024
Attention
This library was developed as part of the refactoring process for an industrial machines security enforcement and productivity control (hardware & firmware update). As such every class included complies AT LEAST with the provision of the attributes and methods to make the hardware & firmware replacement transparent to the controlled machines. Generic use attribute and methods were added to extend the usability to other projects and application environments, but no fitness nor completeness of those are given but for the intended refactoring project.
diff --git a/docs/_button_to_switch___e_s_p32_8h.html b/docs/_button_to_switch___e_s_p32_8h.html index 60eefeb..a9affd3 100644 --- a/docs/_button_to_switch___e_s_p32_8h.html +++ b/docs/_button_to_switch___e_s_p32_8h.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -189,7 +189,7 @@

: Header file for the ButtonToSwitch_ESP32 library classes

The library implements classes that model several switch mechanisms replacements out of simple push buttons or similar equivalent digital signal inputs. By using just a button (a.k.a. momentary switches or momentary push buttons, MPB for short from here on) the classes implemented in this library will manage, calculate and update several parameters to generate the embedded behavior of standard electromechanical switches.

Author
: Gabriel D. Goldman
-
Version
v4.0.4
+
Version
v4.1.0
Date
: Created on: 06/11/2023 : Last modification: 28/08/2024
Attention
This library was developed as part of the refactoring process for an industrial machines security enforcement and productivity control (hardware & firmware update). As such every class included complies AT LEAST with the provision of the attributes and methods to make the hardware & firmware replacement transparent to the controlled machines. Generic use attribute and methods were added to extend the usability to other projects and application environments, but no fitness nor completeness of those are given but for the intended refactoring project.
diff --git a/docs/_button_to_switch___e_s_p32_8h_source.html b/docs/_button_to_switch___e_s_p32_8h_source.html index a559f51..02ffb43 100644 --- a/docs/_button_to_switch___e_s_p32_8h_source.html +++ b/docs/_button_to_switch___e_s_p32_8h_source.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -181,600 +181,607 @@
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 bool _prssRlsCcl{false};
-
126 unsigned long int _strtDelay {0};
-
127 bool _sttChng {true};
-
128 TaskHandle_t _taskToNotifyHndl {NULL};
-
129 TaskHandle_t _taskWhileOnHndl{NULL};
-
130 volatile bool _validDisablePend{false};
-
131 volatile bool _validEnablePend{false};
-
132 volatile bool _validPressPend{false};
-
133 volatile bool _validReleasePend{false};
-
134
-
135 void clrSttChng();
-
136 const bool getIsPressed() const;
-
137 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
-
138 virtual uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
-
139 void _setIsEnabled(const bool &newEnabledValue);
-
140 void setSttChng();
-
141 void _turnOff();
-
142 void _turnOn();
-
143 virtual void updFdaState();
-
144 bool updIsPressed();
-
145 virtual bool updValidPressesStatus();
-
146public:
-
151 DbncdMPBttn();
-
161 DbncdMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0);
-
166 virtual ~DbncdMPBttn();
-
178 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
189 void clrStatus(bool clrIsOn = true);
-
200 void disable();
-
209 void enable();
-
219 bool end();
-
227 const unsigned long int getCurDbncTime() const;
-
238 fncPtrType getFnWhnTrnOff();
-
249 fncPtrType getFnWhnTrnOn();
-
258 const bool getIsEnabled() const;
-
267 const bool getIsOn () const;
-
279 const bool getIsOnDisabled() const;
-
287 const uint32_t getOtptsSttsPkgd();
-
298 const bool getOutputsChange() const;
-
308 unsigned long int getStrtDelay();
-
319 const TaskHandle_t getTaskToNotify() const;
-
330 const TaskHandle_t getTaskWhileOn();
-
336 bool init(const uint8_t &mpbttnPin, const bool &pulledUp = true, const bool &typeNO = true, const unsigned long int &dbncTimeOrigSett = 0);
-
345 bool pause();
-
351 void resetDbncTime();
-
357 void resetFda();
-
368 bool resume();
-
380 bool setDbncTime(const unsigned long int &newDbncTime);
-
388 void setFnWhnTrnOffPtr(void(*newFnWhnTrnOff)());
-
396 void setFnWhnTrnOnPtr(void (*newFnWhnTrnOn)());
-
407 void setIsOnDisabled(const bool &newIsOnDisabled);
-
415 void setOutputsChange(bool newOutputsChange);
-
425 void setTaskToNotify(const TaskHandle_t &newTaskHandle);
-
441 virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle);
-
442};
+
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};
-
443
-
444//==========================================================>>
-
445
-
- -
456public:
- -
471 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);
-
480 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);
-
490 void setStrtDelay(const unsigned long int &newStrtDelay);
-
491};
+
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};
-
492
-
493//==========================================================>>
-
494
-
- -
512protected:
-
513 enum fdaLmpbStts {
-
514 stOffNotVPP,
-
515 stOffVPP,
-
516 stOnNVRP,
-
517 stOnVRP,
-
518 stLtchNVUP,
-
519 stLtchdVUP,
-
520 stOffVUP,
-
521 stOffNVURP,
-
522 stOffVURP,
-
523 stDisabled
-
524 };
-
525 bool _isLatched{false};
-
526 fdaLmpbStts _mpbFdaState {stOffNotVPP};
-
527 bool _trnOffASAP{true};
-
528 volatile bool _validUnlatchPend{false};
-
529 volatile bool _validUnlatchRlsPend{false};
-
530
-
531 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
-
532
-
533 virtual void stDisabled_In(){};
-
534 virtual void stDisabled_Out(){};
-
535 virtual void stLtchNVUP_Do(){};
-
536 virtual void stOffNotVPP_In(){};
-
537 virtual void stOffNotVPP_Out(){};
-
538 virtual void stOffNVURP_Do(){};
-
539 virtual void stOffVPP_Out(){};
-
540 virtual void stOffVURP_Out(){};
-
541 virtual void stOnNVRP_Do(){};
-
542 virtual void updFdaState();
-
543 virtual void updValidUnlatchStatus() = 0;
-
544public:
-
550 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);
-
554 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
558 void clrStatus(bool clrIsOn = true);
-
567 const bool getIsLatched() const;
-
577 bool getTrnOffASAP();
-
585 const bool getUnlatchPend() const;
-
593 const bool getUnlatchRlsPend() const;
-
605 void setTrnOffASAP(const bool &newVal);
-
613 void setUnlatchPend(const bool &newVal);
-
621 void setUnlatchRlsPend(const bool &newVal);
-
632 bool unlatch();
-
633};
-
-
634
-
635//==========================================================>>
-
636
-
- -
645protected:
-
646 virtual void stOffNVURP_Do();
-
647 virtual void updValidUnlatchStatus();
-
648public:
-
654 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);
-
655};
+
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
-
657//==========================================================>>
-
658
-
- -
669protected:
-
670 bool _tmRstbl {true};
-
671 unsigned long int _srvcTime {};
-
672 unsigned long int _srvcTimerStrt{0};
-
673
-
674 virtual void stOffNotVPP_Out();
-
675 virtual void stOffVPP_Out();
-
676 virtual void updValidUnlatchStatus();
-
677public:
-
685 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);
-
689 void clrStatus(bool clrIsOn = true);
-
695 const unsigned long int getSrvcTime() const;
-
706 bool setSrvcTime(const unsigned long int &newSrvcTime);
-
714 void setTmerRstbl(const bool &newIsRstbl);
-
715};
+
+ +
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};
-
716
-
717//==========================================================>>
-
718
-
- -
730protected:
-
731 void (*_fnWhnTrnOffPilot)() {nullptr};
-
732 void (*_fnWhnTrnOffWrnng)() {nullptr};
-
733 void (*_fnWhnTrnOnPilot)() {nullptr};
-
734 void (*_fnWhnTrnOnWrnng)() {nullptr};
-
735 bool _keepPilot{false};
-
736 volatile bool _pilotOn{false};
-
737 unsigned long int _wrnngMs{0};
-
738 volatile bool _wrnngOn {false};
-
739 unsigned int _wrnngPrctg {0};
-
740
-
741 bool _validWrnngSetPend{false};
-
742 bool _validWrnngResetPend{false};
-
743 bool _validPilotSetPend{false};
-
744 bool _validPilotResetPend{false};
-
745
-
746 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
-
747 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
-
748 virtual void stDisabled_In();
-
749 virtual void stLtchNVUP_Do();
-
750 virtual void stOffNotVPP_In();
-
751 virtual void stOffVPP_Out();
-
752 virtual void stOnNVRP_Do();
-
753 void _turnOffPilot();
-
754 void _turnOffWrnng();
-
755 void _turnOnPilot();
-
756 void _turnOnWrnng();
-
757 bool updPilotOn();
-
758 bool updWrnngOn();
-
759public:
-
767 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);
-
771 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
775 void clrStatus(bool clrIsOn = true);
-
786 fncPtrType getFnWhnTrnOffPilot();
-
797 fncPtrType getFnWhnTrnOffWrnng();
-
808 fncPtrType getFnWhnTrnOnPilot();
-
819 fncPtrType getFnWhnTrnOnWrnng();
-
829 const bool getPilotOn() const;
-
841 const bool getWrnngOn() const;
-
849 void setFnWhnTrnOffPilotPtr(void(*newFnWhnTrnOff)());
-
857 void setFnWhnTrnOffWrnngPtr(void(*newFnWhnTrnOff)());
-
865 void setFnWhnTrnOnPilotPtr(void(*newFnWhnTrnOn)());
-
873 void setFnWhnTrnOnWrnngPtr(void(*newFnWhnTrnOn)());
-
879 void setKeepPilot(const bool &newKeepPilot);
-
885 bool setSrvcTime(const unsigned long int &newSvcTime);
-
897 bool setWrnngPrctg (const unsigned int &newWrnngPrctg);
-
898};
+
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};
-
899
-
900//==========================================================>>
-
901
-
- -
911protected:
-
912 DbncdDlydMPBttn* _unLtchBttn {nullptr};
-
913 bool _xtrnUnltchPRlsCcl {false};
-
914
-
915 virtual void stOffNVURP_Do();
-
916 virtual void updValidUnlatchStatus();
-
917public:
-
931 XtrnUnltchMPBttn(const uint8_t &mpbttnPin, DbncdDlydMPBttn* unLtchBttn,
-
932 const bool &pulledUp, const bool &typeNO, const unsigned long int &dbncTimeOrigSett, const unsigned long int &strtDelay);
-
940 XtrnUnltchMPBttn(const uint8_t &mpbttnPin,
-
941 const bool &pulledUp, const bool &typeNO, const unsigned long int &dbncTimeOrigSett, const unsigned long int &strtDelay);
-
942
-
946 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
950 void clrStatus(bool clrIsOn = true);
-
951};
+
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};
-
952
-
953//==========================================================>>
-
954
-
- -
980protected:
-
981 enum fdaDALmpbStts{
-
982 stOffNotVPP,
-
983 stOffVPP,
-
984 stOnMPBRlsd,
-
985 //--------
-
986 stOnStrtScndMod,
-
987 stOnScndMod,
-
988 stOnEndScndMod,
-
989 //--------
-
990 stOnTurnOff,
-
991 //--------
-
992 stDisabled
-
993 };
-
994 volatile bool _isOnScndry{false};
-
995 fdaDALmpbStts _mpbFdaState {stOffNotVPP};
-
996 unsigned long _scndModActvDly {2000};
-
997 unsigned long _scndModTmrStrt {0};
-
998 bool _validScndModPend{false};
-
999
-
1000 void (*_fnWhnTrnOffScndry)() {nullptr};
-
1001 void (*_fnWhnTrnOnScndry)() {nullptr};
-
1002 TaskHandle_t _taskWhileOnScndryHndl{NULL};
-
1003
-
1004 static void mpbPollCallback(TimerHandle_t mpbTmrCbArg);
-
1005 virtual void stDisabled_In(){};
-
1006 virtual void stOnEndScndMod_Out(){};
-
1007 virtual void stOnScndMod_Do() = 0;
-
1008 virtual void stOnStrtScndMod_In(){};
-
1009 virtual void _turnOffScndry();
-
1010 virtual void _turnOnScndry();
-
1011 virtual void updFdaState();
-
1012 virtual bool updValidPressesStatus();
-
1013 virtual void updValidUnlatchStatus();
-
1014
-
1015public:
-
1021 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);
- -
1030 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
1034 void clrStatus(bool clrIsOn = true);
-
1043 fncPtrType getFnWhnTrnOffScndry();
-
1052 fncPtrType getFnWhnTrnOnScndry();
-
1060 bool getIsOnScndry();
-
1068 unsigned long getScndModActvDly();
-
1079 const TaskHandle_t getTaskWhileOnScndry();
-
1087 void setFnWhnTrnOffScndryPtr(void(*newFnWhnTrnOff)());
-
1095 void setFnWhnTrnOnScndryPtr(void (*newFnWhnTrnOn)());
-
1106 bool setScndModActvDly(const unsigned long &newVal);
-
1124 void setTaskWhileOnScndry(const TaskHandle_t &newTaskHandle);
-
1125
-
1126};
+
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};
-
1127
-
1128//==========================================================>>
-
1129
-
- -
1143protected:
-
1144 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
-
1145 // virtual void stDisabled_In();
-
1146 virtual void stOnEndScndMod_Out();
-
1147 virtual void stOnScndMod_Do();
-
1148 virtual void stOnStrtScndMod_In();
-
1149public:
-
1155 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);
- -
1163 void clrStatus(bool clrIsOn = true);
-
1164};
+
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};
-
1165
-
1166//==========================================================>>
-
1167
-
- -
1186
-
1187protected:
-
1188 bool _autoSwpDirOnEnd{true}; // Changes slider direction automatically when reaches _otptValMax or _otptValMin
-
1189 bool _autoSwpDirOnPrss{false};// Changes slider direction each time it enters slider mode
-
1190 bool _curSldrDirUp{true};
-
1191 uint16_t _initOtptCurVal{};
-
1192 uint16_t _otptCurVal{};
-
1193 unsigned long _otptSldrSpd{1};
-
1194 uint16_t _otptSldrStpSize{0x01};
-
1195 uint16_t _otptValMax{0xFFFF};
-
1196 uint16_t _otptValMin{0x0000};
-
1197
-
1198 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
-
1199 bool _setSldrDir(const bool &newVal);
-
1200 // virtual void stDisabled_In();
-
1201 void stOnEndScndMod_Out();
-
1202 virtual void stOnScndMod_Do();
-
1203 virtual void stOnStrtScndMod_In();
-
1204public:
-
1212 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);
- -
1221 void clrStatus(bool clrIsOn = true);
-
1227 uint16_t getOtptCurVal();
-
1237 bool getOtptCurValIsMax();
-
1247 bool getOtptCurValIsMin();
-
1257 unsigned long getOtptSldrSpd();
-
1267 uint16_t getOtptSldrStpSize();
-
1273 uint16_t getOtptValMax();
-
1279 uint16_t getOtptValMin();
-
1289 bool getSldrDirUp();
-
1301 bool setOtptCurVal(const uint16_t &newVal);
-
1316 bool setOtptSldrSpd(const uint16_t &newVal);
-
1333 bool setOtptSldrStpSize(const uint16_t &newVal);
-
1349 bool setOtptValMax(const uint16_t &newVal);
-
1365 bool setOtptValMin(const uint16_t &newVal);
-
1378 bool setSldrDirDn();
-
1391 bool setSldrDirUp();
-
1401 void setSwpDirOnEnd(const bool &newVal);
-
1410 void setSwpDirOnPrss(const bool &newVal);
-
1418 bool swapSldrDir();
-
1419};
+
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};
-
1420
-
1421//==========================================================>>
-
1422
-
- -
1442private:
-
1443 void setFrcdOtptWhnVdd(const bool &newVal);
-
1444 void setStOnWhnOtpFrcd(const bool &newVal);
-
1445protected:
-
1446 enum fdaVmpbStts{
-
1447 stOffNotVPP,
-
1448 stOffVPP,
-
1449 stOnNVRP,
-
1450 //--------
-
1451 stOnVVP,
-
1452 stOnVddNVUP,
-
1453 stOffVddNVUP,
-
1454 stOffVddVUP,
-
1455 stOffUnVdd,
-
1456 //--------
-
1457 stOnVRP,
-
1458 stOnTurnOff,
-
1459 stOff,
-
1460 //--------
-
1461 stDisabled
-
1462 };
-
1463 fdaVmpbStts _mpbFdaState {stOffNotVPP};
-
1464
-
1465 void (*_fnWhnTrnOffVdd)() {nullptr};
-
1466 void (*_fnWhnTrnOnVdd)() {nullptr};
-
1467 bool _frcOtptLvlWhnVdd {true};
-
1468 bool _isVoided{false};
-
1469 bool _stOnWhnOtptFrcd{false};
-
1470 bool _validVoidPend{false};
-
1471 bool _validUnvoidPend{false};
-
1472
-
1473 static void mpbPollCallback(TimerHandle_t mpbTmrCb);
-
1474 uint32_t _otptsSttsPkg(uint32_t prevVal = 0);
-
1475 bool setVoided(const bool &newVoidValue);
-
1476 virtual void stDisabled_In();
-
1477 virtual void stDisabled_Out();
-
1478 virtual void stOffNotVPP_In(){};
-
1479 virtual void stOffVddNVUP_Do(){}; //This provides a setting point for calculating the _validUnvoidPend
-
1480 virtual void stOffVPP_Do(){}; // This provides a setting point for the voiding mechanism to be started
-
1481 void _turnOffVdd();
-
1482 void _turnOnVdd();
-
1483 virtual void updFdaState();
-
1484 virtual bool updVoidStatus() = 0;
-
1485public:
-
1493 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);
-
1497 virtual ~VdblMPBttn();
-
1501 void clrStatus(bool clrIsOn = true);
-
1510 fncPtrType getFnWhnTrnOffVdd();
-
1519 fncPtrType getFnWhnTrnOnVdd();
-
1529 bool getFrcOtptLvlWhnVdd();
-
1537 const bool getIsVoided() const;
-
1549 bool getStOnWhnOtpFrcd();
-
1557 void setFnWhnTrnOffVddPtr(void(*newFnWhnTrnOff)());
-
1565 void setFnWhnTrnOnVddPtr(void(*newFnWhnTrnOn)());
-
1576 bool setIsNotVoided();
-
1584 bool setIsVoided();
-
1585};
+
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};
-
1586
-
1587//==========================================================>>
-
1588
-
- -
1598protected:
-
1599 unsigned long int _voidTime;
-
1600 unsigned long int _voidTmrStrt{0};
-
1601
-
1602 virtual void stOffNotVPP_In();
-
1603 virtual void stOffVddNVUP_Do(); //This provides a setting point for calculating the _validUnvoidPend
-
1604 virtual void stOffVPP_Do(); // This provides a setting point for the voiding mechanism to be started
-
1605 bool updIsPressed();
-
1606 virtual bool updVoidStatus();
-
1607public:
-
1615 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);
-
1619 virtual ~TmVdblMPBttn();
-
1623 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
1627 void clrStatus();
-
1635 const unsigned long int getVoidTime() const;
-
1646 bool setVoidTime(const unsigned long int &newVoidTime);
-
1647};
+
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};
-
1648
-
1649//==========================================================>>
-
1650
-
- -
1667protected:
-
1668 virtual void setTaskWhileOn(const TaskHandle_t &newTaskHandle);
-
1669 virtual void stOffVddNVUP_Do(); //This provides the calculation for the _validUnvoidPend
-
1670 virtual bool updVoidStatus();
-
1671public:
-
1677 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);
-
1681 virtual ~SnglSrvcVdblMPBttn();
-
1685 virtual bool begin(const unsigned long int &pollDelayMs = _StdPollDelay);
-
1686};
+
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};
-
1687
-
1688//==========================================================>>
-
1689
-
1690#endif /*_BUTTONTOSWITCH_ESP32_H_*/
-
MpbOtpts_t otptsSttsUnpkg(uint32_t pkgOtpts)
Unpackages a 32-bit value into a DbncdMPBttn object status.
Definition ButtonToSwitch_ESP32.cpp:3140
-
Models a Debounced Delayed Double Action Latched MPB combo switch (Debounced Delayed DALDD-MPB - DD-D...
Definition ButtonToSwitch_ESP32.h:1142
-
void clrStatus(bool clrIsOn=true)
See DbncddMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:2181
-
~DDlydDALtchMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:2177
-
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:2172
-
Abstract class, base to model Double Action LDD-MPBs (DALDD-MPBs).
Definition ButtonToSwitch_ESP32.h:979
-
bool setScndModActvDly(const unsigned long &newVal)
Sets a new value for the scndModActvDly class attribute.
Definition ButtonToSwitch_ESP32.cpp:1865
-
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:1853
-
const TaskHandle_t getTaskWhileOnScndry()
Returns the task to be run while the object is in the Secondary On state.
Definition ButtonToSwitch_ESP32.cpp:1807
-
fncPtrType getFnWhnTrnOnScndry()
Returns the function that is set to execute every time the object enters the Secondary On State.
Definition ButtonToSwitch_ESP32.cpp:1792
-
void clrStatus(bool clrIsOn=true)
See DbncddMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1773
-
bool getIsOnScndry()
Returns the current value of the isOnScndry attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1797
-
void setTaskWhileOnScndry(const TaskHandle_t &newTaskHandle)
Sets the task to be run while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:1883
-
unsigned long getScndModActvDly()
Returns the current value of the scndModActvDly class attribute.
Definition ButtonToSwitch_ESP32.cpp:1802
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1749
-
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:1842
-
fncPtrType getFnWhnTrnOffScndry()
returns the function that is set to execute every time the object enters the Secondary Off State.
Definition ButtonToSwitch_ESP32.cpp:1787
-
~DblActnLtchMPBttn()
Virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:1745
-
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:1740
-
Models a Debounced Delayed MPB (DD-MPB).
Definition ButtonToSwitch_ESP32.h:455
-
DbncdDlydMPBttn()
Default constructor.
Definition ButtonToSwitch_ESP32.cpp:727
-
void setStrtDelay(const unsigned long int &newStrtDelay)
Sets a new value to the "Start Delay" strtDelay attribute.
Definition ButtonToSwitch_ESP32.cpp:748
-
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:738
+
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:158
-
void resetFda()
Resets the MPB behavior automaton to it's Initial or Start State
Definition ButtonToSwitch_ESP32.cpp:313
+
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:148
-
const TaskHandle_t getTaskWhileOn()
Returns the task to be run (resumed) while the object is in the On state.
Definition ButtonToSwitch_ESP32.cpp:203
-
void enable()
Enables the input signal processing.
Definition ButtonToSwitch_ESP32.cpp:125
-
bool pause()
Pauses the software timer updating the computation of the object's internal flags value.
Definition ButtonToSwitch_ESP32.cpp:289
-
const TaskHandle_t getTaskToNotify() const
Returns the task to be notified by the object when its output flags changes.
Definition ButtonToSwitch_ESP32.cpp:198
+
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:461
-
void setIsOnDisabled(const bool &newIsOnDisabled)
Sets the value of the isOnDisabled attribute flag.
Definition ButtonToSwitch_ESP32.cpp:400
-
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:208
-
bool end()
Detaches the object from the timer that monitors the input pins, compute and updates the object's sta...
Definition ButtonToSwitch_ESP32.cpp:130
+
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:307
+
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:120
-
bool resume()
Restarts the software timer updating the calculation of the object internal flags.
Definition ButtonToSwitch_ESP32.cpp:325
-
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:163
-
const bool getIsOnDisabled() const
Returns the value of the isOnDisabled attribute flag.
Definition ButtonToSwitch_ESP32.cpp:173
-
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:437
-
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:357
-
const bool getOutputsChange() const
Returns the value of the outputsChange attribute flag.
Definition ButtonToSwitch_ESP32.cpp:188
-
const bool getIsOn() const
Returns the value of the isOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:168
-
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:368
-
unsigned long int getStrtDelay()
Returns the current value of strtDelay attribute.
Definition ButtonToSwitch_ESP32.cpp:193
-
const uint32_t getOtptsSttsPkgd()
Returns the relevant attribute flags values for the object state encoded as a 32 bits value,...
Definition ButtonToSwitch_ESP32.cpp:183
-
fncPtrType getFnWhnTrnOff()
Returns the function that is set to execute every time the object enters the Off State.
Definition ButtonToSwitch_ESP32.cpp:153
-
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:420
-
bool setDbncTime(const unsigned long int &newDbncTime)
Sets the debounce process time.
Definition ButtonToSwitch_ESP32.cpp:341
-
Models a Hinted Timer Latch DD-MPB, a.k.a. Staircase Switch (HTiLDD-MPB).
Definition ButtonToSwitch_ESP32.h:729
-
bool setSrvcTime(const unsigned long int &newSvcTime)
See TmLtchMPBttn::setSrvcTime(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1412
-
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:1282
-
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:1365
-
fncPtrType getFnWhnTrnOffWrnng()
Returns the function that is set to execute every time the object's Warning attribute flag enters the...
Definition ButtonToSwitch_ESP32.cpp:1277
-
const bool getWrnngOn() const
Returns the current value of the warningOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1297
-
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:1377
-
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:1222
-
const bool getPilotOn() const
Returns the current value of the pilotOn attribute flag.
Definition ButtonToSwitch_ESP32.cpp:1292
-
void clrStatus(bool clrIsOn=true)
see DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1252
-
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:1272
-
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:1389
-
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:1427
-
fncPtrType getFnWhnTrnOnWrnng()
Returns the function that is set to execute every time the object's Warning attribute flag enters the...
Definition ButtonToSwitch_ESP32.cpp:1287
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1228
-
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:1353
-
void setKeepPilot(const bool &newKeepPilot)
Sets the configuration of the keepPilot service attribute.
Definition ButtonToSwitch_ESP32.cpp:1401
-
Abstract class, base to model Latched Debounced Delayed MPBs (LDD-MPB).
Definition ButtonToSwitch_ESP32.h:511
-
const bool getIsLatched() const
Returns the value of the isLatched attribute flag, indicating the Latched or Unlatched condition of t...
Definition ButtonToSwitch_ESP32.cpp:803
-
bool unlatch()
Sets the values of the flags needed to unlatch a latched MPB.
Definition ButtonToSwitch_ESP32.cpp:887
-
const bool getUnlatchRlsPend() const
Returns the value of the "Valid Unlatch Release Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:818
-
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:761
-
const bool getUnlatchPend() const
Returns the value of the "Valid Unlatch Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:813
-
void setUnlatchPend(const bool &newVal)
Sets the value of the "Valid Unlatch Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:865
-
void setTrnOffASAP(const bool &newVal)
Sets the value of the trnOffASAP attribute.
Definition ButtonToSwitch_ESP32.cpp:854
-
bool getTrnOffASAP()
Returns the value of the trnOffASAP attribute flag.
Definition ButtonToSwitch_ESP32.cpp:808
-
void setUnlatchRlsPend(const bool &newVal)
Sets the value of the "Valid Unlatch Release Pending" attribute.
Definition ButtonToSwitch_ESP32.cpp:876
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:766
-
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:790
-
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:1185
-
void clrStatus(bool clrIsOn=true)
Definition ButtonToSwitch_ESP32.cpp:2248
-
bool setOtptSldrSpd(const uint16_t &newVal)
Sets the output slider speed (otptSldrSpd) attribute.
Definition ButtonToSwitch_ESP32.cpp:2327
-
uint16_t getOtptValMax()
Returns the top output current value register setting.
Definition ButtonToSwitch_ESP32.cpp:2287
-
bool getOtptCurValIsMin()
Returns the result of comparing the Output Current Value to the Minimum value setting
Definition ButtonToSwitch_ESP32.cpp:2272
-
bool setSldrDirDn()
Sets the value of the curSldrDirUp attribute to false.
Definition ButtonToSwitch_ESP32.cpp:2431
-
bool setOtptValMax(const uint16_t &newVal)
Sets the output current value register maximum value attribute (otptValMax attribute).
Definition ButtonToSwitch_ESP32.cpp:2363
-
bool swapSldrDir()
Inverts the current curSldrDirUp attribute value.
Definition ButtonToSwitch_ESP32.cpp:2544
-
~SldrDALtchMPBttn()
Virtual class destructor.
Definition ButtonToSwitch_ESP32.cpp:2244
-
bool setOtptCurVal(const uint16_t &newVal)
Sets the output current value register.
Definition ButtonToSwitch_ESP32.cpp:2309
-
uint16_t getOtptCurVal()
Returns the Output Current Value (otpCurVal) attribute.
Definition ButtonToSwitch_ESP32.cpp:2262
-
bool setSldrDirUp()
Sets the value of the curSldrDirUp attribute to true.
Definition ButtonToSwitch_ESP32.cpp:2436
-
bool getSldrDirUp()
Returns the value of the curSldrDirUp attribute.
Definition ButtonToSwitch_ESP32.cpp:2297
-
bool setOtptSldrStpSize(const uint16_t &newVal)
Sets the output slider step size (otptSldrStpSize) attribute value.
Definition ButtonToSwitch_ESP32.cpp:2345
-
bool getOtptCurValIsMax()
Returns a boolean value indicating if the "Output Current Value" equals the maximum limit.
Definition ButtonToSwitch_ESP32.cpp:2267
-
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:2238
-
void setSwpDirOnPrss(const bool &newVal)
Sets the value of the "Auto-Swap Direction On Press" (autoSwpDirOnPrss) attribute.
Definition ButtonToSwitch_ESP32.cpp:2448
-
bool setOtptValMin(const uint16_t &newVal)
Sets the output current value register minimum value attribute (otptValMin attribute).
Definition ButtonToSwitch_ESP32.cpp:2385
-
uint16_t getOtptValMin()
Returns the bottom output current value register setting.
Definition ButtonToSwitch_ESP32.cpp:2292
-
unsigned long getOtptSldrSpd()
Returns the current setting for the Output Slider Speed value.
Definition ButtonToSwitch_ESP32.cpp:2277
-
uint16_t getOtptSldrStpSize()
Returns the current setting for the Output Slider Step Size value.
Definition ButtonToSwitch_ESP32.cpp:2282
-
void setSwpDirOnEnd(const bool &newVal)
Sets the value of the "Auto-Swap Direction on Ends" (autoSwpDirOnEnd) attribute.
Definition ButtonToSwitch_ESP32.cpp:2441
-
Models a Single Service Voidable DD-MPB a.k.a. Trigger switch (SSVDD-MPB)
Definition ButtonToSwitch_ESP32.h:1666
-
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:3105
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:3083
-
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:3071
-
virtual ~SnglSrvcVdblMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:3079
-
Models a Toggle Latch DD-MPB, a.k.a. a Toggle Switch (ToLDD-MPB).
Definition ButtonToSwitch_ESP32.h:644
-
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:1102
-
Models a Timer Latch DD-MPB, a.k.a. Timer Switch (TiLDD-MPB).
Definition ButtonToSwitch_ESP32.h:668
-
const unsigned long int getSrvcTime() const
Returns the configured Service Time.
Definition ButtonToSwitch_ESP32.cpp:1159
-
void setTmerRstbl(const bool &newIsRstbl)
Configures the timer for the Service Time to be reseted before it reaches unlatching time.
Definition ButtonToSwitch_ESP32.cpp:1180
-
bool setSrvcTime(const unsigned long int &newSrvcTime)
Sets a new value to the Service Time attribute.
Definition ButtonToSwitch_ESP32.cpp:1164
-
void clrStatus(bool clrIsOn=true)
see DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1148
-
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:1140
-
Models a Time Voidable DD-MPB, a.k.a. Anti-tampering switch (TVDD-MPB)
Definition ButtonToSwitch_ESP32.h:1597
-
virtual ~TmVdblMPBttn()
Class virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:2972
-
void clrStatus()
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:2998
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:2976
-
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:2967
-
const unsigned long int getVoidTime() const
Returns the voidTime attribute current value.
Definition ButtonToSwitch_ESP32.cpp:3009
-
bool setVoidTime(const unsigned long int &newVoidTime)
Sets a new value to the Void Time attribute.
Definition ButtonToSwitch_ESP32.cpp:3014
-
Abstract class, base to model Voidable DD-MPBs (VDD-MPB).
Definition ButtonToSwitch_ESP32.h:1441
-
bool setIsVoided()
Sets the value of the isVoided attribute flag to true.
Definition ButtonToSwitch_ESP32.cpp:2682
-
const bool getIsVoided() const
Returns the current value of the isVoided attribute flag.
Definition ButtonToSwitch_ESP32.cpp:2589
-
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:2579
-
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:2561
-
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:2654
-
virtual ~VdblMPBttn()
Default virtual destructor.
Definition ButtonToSwitch_ESP32.cpp:2557
-
fncPtrType getFnWhnTrnOffVdd()
Returns the function that is set to execute every time the object exits the Voided State.
Definition ButtonToSwitch_ESP32.cpp:2574
-
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:2641
-
bool getFrcOtptLvlWhnVdd()
Returns the value of the frcOtptLvlWhnVdd attribute.
Definition ButtonToSwitch_ESP32.cpp:2584
-
bool getStOnWhnOtpFrcd()
Returns the value of the frcOtptLvlWhnVdd attribute.
Definition ButtonToSwitch_ESP32.cpp:2594
-
bool setIsNotVoided()
Sets the value of the isVoided attribute flag to false.
Definition ButtonToSwitch_ESP32.cpp:2677
-
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:2551
-
Models an External Unlatch LDD-MPB, a.k.a. Emergency Latched Switch (XULDD-MPB)
Definition ButtonToSwitch_ESP32.h:910
-
void clrStatus(bool clrIsOn=true)
See DbncdMPBttn::clrStatus(bool)
Definition ButtonToSwitch_ESP32.cpp:1693
-
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:1653
-
virtual bool begin(const unsigned long int &pollDelayMs=_StdPollDelay)
See DbncdMPBttn::begin(const unsigned long int)
Definition ButtonToSwitch_ESP32.cpp:1665
+
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
diff --git a/docs/annotated.html b/docs/annotated.html index 8a450e3..5020490 100644 --- a/docs/annotated.html +++ b/docs/annotated.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
diff --git a/docs/class_d_dlyd_d_a_ltch_m_p_bttn-members.html b/docs/class_d_dlyd_d_a_ltch_m_p_bttn-members.html index 72a51fa..80ef189 100644 --- a/docs/class_d_dlyd_d_a_ltch_m_p_bttn-members.html +++ b/docs/class_d_dlyd_d_a_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
diff --git a/docs/class_d_dlyd_d_a_ltch_m_p_bttn.html b/docs/class_d_dlyd_d_a_ltch_m_p_bttn.html index 7313941..43615a9 100644 --- a/docs/class_d_dlyd_d_a_ltch_m_p_bttn.html +++ b/docs/class_d_dlyd_d_a_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -293,7 +293,7 @@  Returns the value of the outputsChange attribute flag.
  unsigned long int getStrtDelay () - Returns the current value of strtDelay attribute.
+ Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  const TaskHandle_t getTaskToNotify () const  Returns the task to be notified by the object when its output flags changes.
@@ -314,7 +314,7 @@  Resets the MPB behavior automaton to it's Initial or Start State
  bool resume () - Restarts the software timer updating the calculation of the object internal flags.
+ Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  bool setDbncTime (const unsigned long int &newDbncTime)  Sets the debounce process time.
diff --git a/docs/class_dbl_actn_ltch_m_p_bttn-members.html b/docs/class_dbl_actn_ltch_m_p_bttn-members.html index d11c207..d48d10b 100644 --- a/docs/class_dbl_actn_ltch_m_p_bttn-members.html +++ b/docs/class_dbl_actn_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
diff --git a/docs/class_dbl_actn_ltch_m_p_bttn.html b/docs/class_dbl_actn_ltch_m_p_bttn.html index 8b1493e..460b608 100644 --- a/docs/class_dbl_actn_ltch_m_p_bttn.html +++ b/docs/class_dbl_actn_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -281,7 +281,7 @@  Returns the value of the outputsChange attribute flag.
  unsigned long int getStrtDelay () - Returns the current value of strtDelay attribute.
+ Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  const TaskHandle_t getTaskToNotify () const  Returns the task to be notified by the object when its output flags changes.
@@ -302,7 +302,7 @@  Resets the MPB behavior automaton to it's Initial or Start State
  bool resume () - Restarts the software timer updating the calculation of the object internal flags.
+ Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  bool setDbncTime (const unsigned long int &newDbncTime)  Sets the debounce process time.
diff --git a/docs/class_dbncd_dlyd_m_p_bttn-members.html b/docs/class_dbncd_dlyd_m_p_bttn-members.html index cd7b2d8..f9dc2be 100644 --- a/docs/class_dbncd_dlyd_m_p_bttn-members.html +++ b/docs/class_dbncd_dlyd_m_p_bttn-members.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
diff --git a/docs/class_dbncd_dlyd_m_p_bttn.html b/docs/class_dbncd_dlyd_m_p_bttn.html index 1d36bd6..50e374f 100644 --- a/docs/class_dbncd_dlyd_m_p_bttn.html +++ b/docs/class_dbncd_dlyd_m_p_bttn.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -219,7 +219,7 @@  Returns the value of the outputsChange attribute flag.
  unsigned long int getStrtDelay () - Returns the current value of strtDelay attribute.
+ Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  const TaskHandle_t getTaskToNotify () const  Returns the task to be notified by the object when its output flags changes.
@@ -240,7 +240,7 @@  Resets the MPB behavior automaton to it's Initial or Start State
  bool resume () - Restarts the software timer updating the calculation of the object internal flags.
+ Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  bool setDbncTime (const unsigned long int &newDbncTime)  Sets the debounce process time.
diff --git a/docs/class_dbncd_m_p_bttn-members.html b/docs/class_dbncd_m_p_bttn-members.html index e3bd14a..19bb2db 100644 --- a/docs/class_dbncd_m_p_bttn-members.html +++ b/docs/class_dbncd_m_p_bttn-members.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
diff --git a/docs/class_dbncd_m_p_bttn.html b/docs/class_dbncd_m_p_bttn.html index 52c38f5..a5998e2 100644 --- a/docs/class_dbncd_m_p_bttn.html +++ b/docs/class_dbncd_m_p_bttn.html @@ -28,7 +28,7 @@ Logo -
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
@@ -195,7 +195,7 @@  Returns the value of the outputsChange attribute flag.
  unsigned long int getStrtDelay () - Returns the current value of strtDelay attribute.
+ Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  const TaskHandle_t getTaskToNotify () const  Returns the task to be notified by the object when its output flags changes.
@@ -216,7 +216,7 @@  Resets the MPB behavior automaton to it's Initial or Start State
  bool resume () - Restarts the software timer updating the calculation of the object internal flags.
+ Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
  bool setDbncTime (const unsigned long int &newDbncTime)  Sets the debounce process time.
@@ -395,7 +395,7 @@

- +

@@ -721,7 +721,16 @@

-

Returns the current value of strtDelay attribute.

+

Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.

+

Returns the current value of the attribute flag that triggers the execution of the taskToNotify() task if there have been outputs value changes since last MPB update

+
Return values
+ + + +
trueThere have been changes since last update, the taskToNotify() task will be unblocked to execute.
falseOtherwise
+
+
+

Returns the current value of strtDelay attribute.

Returns the current value of time used by the object to rise the isOn flag, after the debouncing process ends, in milliseconds. If the MPB is released before completing the debounce and the strtDelay time, no press will be detected by the object, and the isOn flag will not be affected. The original value for the delay process used at instantiation time might be changed with the setStrtDelay() method, so this method is provided to get the current value in use.

Returns
The current strtDelay time in milliseconds.
Attention
The strtDelay attribute is forced to a 0 ms value at instantiation of DbncdMPBttn class objects, and no setter mechanism is provided in this class. The inherited DbncdDlydMPBttn class objects (and all it's subclasses) constructor includes a parameter to initialize the strtDelay value, and a method to set that attribute to a new value. This implementation is needed to keep backwards compatibility to olde versions of the library.
@@ -930,7 +939,7 @@

- +
@@ -952,7 +961,9 @@

-

Restarts the software timer updating the calculation of the object internal flags.

+

Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.

+

Clears the attribute flag that triggers the execution of the taskToNotify() task, so that it would not be unblocked on next MPB status update

+

Restarts the software timer updating the calculation of the object internal flags.

The timer will stop calling the functions for computing the flags values after calling the pause() method and will not be updated until the timer is restarted with this method.

Return values
@@ -967,7 +978,7 @@

- + diff --git a/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.map b/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.map index c59147f..16948ed 100644 --- a/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.map +++ b/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.map @@ -1,5 +1,5 @@ - + diff --git a/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.md5 b/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.md5 index 2a3ec02..2abca28 100644 --- a/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.md5 +++ b/docs/class_dbncd_m_p_bttn_a2df98cfb822df05bc232143f883e5c32_icgraph.md5 @@ -1 +1 @@ -32dae9cd9efbc958964b03cd6c200bfe \ No newline at end of file +d6f68f06b89cb17fccbfe0ecb71ce3f0 \ No newline at end of file diff --git a/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.map b/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.map index f53de80..13e39f7 100644 --- a/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.map +++ b/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.map @@ -20,6 +20,6 @@ - + diff --git a/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.md5 b/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.md5 index 3a1340f..39129c0 100644 --- a/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.md5 +++ b/docs/class_dbncd_m_p_bttn_a3009725646aeb160884b8109d180b530_icgraph.md5 @@ -1 +1 @@ -43c38762583d39a6b58e8fb2adb7c093 \ No newline at end of file +c5d86e2a05c2f5ab3a04c045d68ea9fc \ No newline at end of file diff --git a/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.map b/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.map index ace071c..7cfb0fd 100644 --- a/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.map +++ b/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.map @@ -1,5 +1,5 @@ - + diff --git a/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.md5 b/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.md5 index bf861f6..303cfda 100644 --- a/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.md5 +++ b/docs/class_dbncd_m_p_bttn_a9540a12554008a6705056b02fbafed38_cgraph.md5 @@ -1 +1 @@ -068de57ee6b9cb3d56fa242a3321bd1a \ No newline at end of file +c053e765b78f80ce02ad95a23d8a29c0 \ No newline at end of file diff --git a/docs/class_hntd_tm_ltch_m_p_bttn-members.html b/docs/class_hntd_tm_ltch_m_p_bttn-members.html index 5346821..2e299ec 100644 --- a/docs/class_hntd_tm_ltch_m_p_bttn-members.html +++ b/docs/class_hntd_tm_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@

diff --git a/docs/class_hntd_tm_ltch_m_p_bttn.html b/docs/class_hntd_tm_ltch_m_p_bttn.html index 4ce56bd..220c8c7 100644 --- a/docs/class_hntd_tm_ltch_m_p_bttn.html +++ b/docs/class_hntd_tm_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -306,7 +306,7 @@ - + @@ -327,7 +327,7 @@ - + diff --git a/docs/class_ltch_m_p_bttn-members.html b/docs/class_ltch_m_p_bttn-members.html index 8385456..d4f8463 100644 --- a/docs/class_ltch_m_p_bttn-members.html +++ b/docs/class_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_ltch_m_p_bttn.html b/docs/class_ltch_m_p_bttn.html index 4325879..3074d27 100644 --- a/docs/class_ltch_m_p_bttn.html +++ b/docs/class_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -248,7 +248,7 @@ - + @@ -269,7 +269,7 @@ - + diff --git a/docs/class_sldr_d_a_ltch_m_p_bttn-members.html b/docs/class_sldr_d_a_ltch_m_p_bttn-members.html index 5cb9a68..ceab448 100644 --- a/docs/class_sldr_d_a_ltch_m_p_bttn-members.html +++ b/docs/class_sldr_d_a_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_sldr_d_a_ltch_m_p_bttn.html b/docs/class_sldr_d_a_ltch_m_p_bttn.html index 4961fb2..d8e5d62 100644 --- a/docs/class_sldr_d_a_ltch_m_p_bttn.html +++ b/docs/class_sldr_d_a_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -345,7 +345,7 @@ - + @@ -366,7 +366,7 @@ - + diff --git a/docs/class_sngl_srvc_vdbl_m_p_bttn-members.html b/docs/class_sngl_srvc_vdbl_m_p_bttn-members.html index df9cd9c..3aa6ea5 100644 --- a/docs/class_sngl_srvc_vdbl_m_p_bttn-members.html +++ b/docs/class_sngl_srvc_vdbl_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_sngl_srvc_vdbl_m_p_bttn.html b/docs/class_sngl_srvc_vdbl_m_p_bttn.html index ff43d1f..eb98fc6 100644 --- a/docs/class_sngl_srvc_vdbl_m_p_bttn.html +++ b/docs/class_sngl_srvc_vdbl_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -254,7 +254,7 @@ - + @@ -275,7 +275,7 @@ - + diff --git a/docs/class_tggl_ltch_m_p_bttn-members.html b/docs/class_tggl_ltch_m_p_bttn-members.html index fefb20b..108f17f 100644 --- a/docs/class_tggl_ltch_m_p_bttn-members.html +++ b/docs/class_tggl_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_tggl_ltch_m_p_bttn.html b/docs/class_tggl_ltch_m_p_bttn.html index e936dd2..e0adac9 100644 --- a/docs/class_tggl_ltch_m_p_bttn.html +++ b/docs/class_tggl_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -242,7 +242,7 @@ - + @@ -263,7 +263,7 @@ - + diff --git a/docs/class_tm_ltch_m_p_bttn-members.html b/docs/class_tm_ltch_m_p_bttn-members.html index 30e10e1..5d5a94b 100644 --- a/docs/class_tm_ltch_m_p_bttn-members.html +++ b/docs/class_tm_ltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_tm_ltch_m_p_bttn.html b/docs/class_tm_ltch_m_p_bttn.html index 4ed81a9..1981706 100644 --- a/docs/class_tm_ltch_m_p_bttn.html +++ b/docs/class_tm_ltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -257,7 +257,7 @@ - + @@ -278,7 +278,7 @@ - + diff --git a/docs/class_tm_vdbl_m_p_bttn-members.html b/docs/class_tm_vdbl_m_p_bttn-members.html index 01e97f7..94c6281 100644 --- a/docs/class_tm_vdbl_m_p_bttn-members.html +++ b/docs/class_tm_vdbl_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_tm_vdbl_m_p_bttn.html b/docs/class_tm_vdbl_m_p_bttn.html index 84ecf06..772ba86 100644 --- a/docs/class_tm_vdbl_m_p_bttn.html +++ b/docs/class_tm_vdbl_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -263,7 +263,7 @@ - + @@ -284,7 +284,7 @@ - + diff --git a/docs/class_vdbl_m_p_bttn-members.html b/docs/class_vdbl_m_p_bttn-members.html index 99fc36c..1f7ef12 100644 --- a/docs/class_vdbl_m_p_bttn-members.html +++ b/docs/class_vdbl_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_vdbl_m_p_bttn.html b/docs/class_vdbl_m_p_bttn.html index 8f86234..a6c6b42 100644 --- a/docs/class_vdbl_m_p_bttn.html +++ b/docs/class_vdbl_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -244,7 +244,7 @@ - + @@ -265,7 +265,7 @@ - + diff --git a/docs/class_xtrn_unltch_m_p_bttn-members.html b/docs/class_xtrn_unltch_m_p_bttn-members.html index 9fe704e..6be808e 100644 --- a/docs/class_xtrn_unltch_m_p_bttn-members.html +++ b/docs/class_xtrn_unltch_m_p_bttn-members.html @@ -28,7 +28,7 @@ diff --git a/docs/class_xtrn_unltch_m_p_bttn.html b/docs/class_xtrn_unltch_m_p_bttn.html index 4336128..92d7945 100644 --- a/docs/class_xtrn_unltch_m_p_bttn.html +++ b/docs/class_xtrn_unltch_m_p_bttn.html @@ -28,7 +28,7 @@ @@ -250,7 +250,7 @@ - + @@ -271,7 +271,7 @@ - + diff --git a/docs/classes.html b/docs/classes.html index e15ce3f..4b93e44 100644 --- a/docs/classes.html +++ b/docs/classes.html @@ -28,7 +28,7 @@ diff --git a/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html index 99daae6..ed01073 100644 --- a/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/docs/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -28,7 +28,7 @@ diff --git a/docs/doxygen_crawl.html b/docs/doxygen_crawl.html index 45f53a8..555491d 100644 --- a/docs/doxygen_crawl.html +++ b/docs/doxygen_crawl.html @@ -305,7 +305,7 @@ - + diff --git a/docs/files.html b/docs/files.html index ec2df57..7ec9ad0 100644 --- a/docs/files.html +++ b/docs/files.html @@ -28,7 +28,7 @@ diff --git a/docs/functions.html b/docs/functions.html index 92614f6..35bd649 100644 --- a/docs/functions.html +++ b/docs/functions.html @@ -28,7 +28,7 @@ diff --git a/docs/functions_func.html b/docs/functions_func.html index d11c1bb..0b1a881 100644 --- a/docs/functions_func.html +++ b/docs/functions_func.html @@ -28,7 +28,7 @@ diff --git a/docs/globals.html b/docs/globals.html index dc4cdeb..a9aecbc 100644 --- a/docs/globals.html +++ b/docs/globals.html @@ -28,7 +28,7 @@ diff --git a/docs/globals_func.html b/docs/globals_func.html index 6679817..a9a9de5 100644 --- a/docs/globals_func.html +++ b/docs/globals_func.html @@ -28,7 +28,7 @@ diff --git a/docs/graph_legend.html b/docs/graph_legend.html index f79d86a..6d648ae 100644 --- a/docs/graph_legend.html +++ b/docs/graph_legend.html @@ -28,7 +28,7 @@ diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 5ae85ad..972588c 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -28,7 +28,7 @@ diff --git a/docs/index.html b/docs/index.html index 86adc87..bfac3a1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -28,7 +28,7 @@ @@ -102,8 +102,8 @@

-

-The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.

+

+The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.

This library is an evolutionary refactoring of my own -now archived- mpbToSwitch library.

An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.

diff --git a/docs/index.js b/docs/index.js index 71e9c48..1617710 100644 --- a/docs/index.js +++ b/docs/index.js @@ -1,6 +1,6 @@ var index = [ - [ "The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch...", "index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off", null ], + [ "The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch ...", "index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off", null ], [ "An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.", "index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons", null ], [ "The library implements the following switches mechanisms:", "index.html#the-library-implements-the-following-switches-mechanisms", null ], [ "For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!", "index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32", [ diff --git a/docs/inherits.html b/docs/inherits.html index 51c80b4..b7c745e 100644 --- a/docs/inherits.html +++ b/docs/inherits.html @@ -28,7 +28,7 @@
diff --git a/docs/navtreeindex0.js b/docs/navtreeindex0.js index 92a00d4..4dc860c 100644 --- a/docs/navtreeindex0.js +++ b/docs/navtreeindex0.js @@ -225,7 +225,7 @@ var NAVTREEINDEX0 = "index.html#included-methods-for-dbncdmpbttn-class":[0,4,0], "index.html#ltchmpbttn-class":[0,9], "index.html#tgglltchmpbttn-class":[0,11], -"index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off":[0,0], +"index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off":[0,0], "index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches":[0,3,0], "index.html#the-library-implements-the-following-switches-mechanisms":[0,2], "index.html#tmltchmpbttn-class":[0,13], diff --git a/docs/search/all_0.js b/docs/search/all_0.js index 9b00604..3a6e25c 100644 --- a/docs/search/all_0.js +++ b/docs/search/all_0.js @@ -27,11 +27,11 @@ var searchData= ['added_20or_20modified_20methods_20for_20xtrnunltchmpbttn_20class_20strong_24',['<strong>Added or Modified Methods for XtrnUnltchMPBttn class</strong>',['../index.html#added-or-modified-methods-for-xtrnunltchmpbttn-class',1,'']]], ['also_20includes_20logical_20replacements_20for_20temporary_20or_20extraordinary_20responses_20that_20usually_20need_20external_20hardware_20modifications_20in_20electromechanical_20switches_3a_25',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], ['an_20esp32_20rtos_20arduino_20library_20that_20builds_20switch_20mechanisms_20replacements_20out_20of_20simple_20push_20buttons_26',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], - ['an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_27',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_27',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['and_20every_20class_20is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_28',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_29',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['and_20use_20description_20strong_30',['and use description strong',['../index.html#autotoc_md-methods-definition-and-use-description',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-1',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-2',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-3',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-4',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-5',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-6',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-7',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-8',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-9',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-10',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-11',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-12',1,'## <strong>Methods definition and use description</strong>']]], ['arduino_20library_20that_20builds_20switch_20mechanisms_20replacements_20out_20of_20simple_20push_20buttons_31',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], - ['asking_20if_20your_20switch_20is_20on_20or_20off_20strong_32',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['asking_20if_20the_20switch_20is_20on_20or_20off_20strong_32',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['attribute_20flag_20kept_20updated_20for_20each_20and_20every_20class_20is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_33',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]] ]; diff --git a/docs/search/all_10.js b/docs/search/all_10.js index 514e122..7af582a 100644 --- a/docs/search/all_10.js +++ b/docs/search/all_10.js @@ -38,18 +38,18 @@ var searchData= ['setvoidtime_35',['setVoidTime',['../class_tm_vdbl_m_p_bttn.html#ad36974180eaa1a56831d89ece921fca5',1,'TmVdblMPBttn']]], ['setwrnngprctg_36',['setWrnngPrctg',['../class_hntd_tm_ltch_m_p_bttn.html#adadd5081bffa5143d6c7143aeafac67e',1,'HntdTmLtchMPBttn']]], ['simple_20push_20buttons_37',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], - ['simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_38',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_38',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['sldrdaltchmpbttn_39',['SldrDALtchMPBttn',['../class_sldr_d_a_ltch_m_p_bttn.html',1,'SldrDALtchMPBttn'],['../class_sldr_d_a_ltch_m_p_bttn.html#ad4083cf0fd9ee0840fa0ff13aef071b9',1,'SldrDALtchMPBttn::SldrDALtchMPBttn()']]], ['sldrdaltchmpbttn_20class_20strong_40',['SldrDALtchMPBttn class strong',['../index.html#autotoc_md-sldrdaltchmpbttn-class',1,'# <strong>SldrDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-sldrdaltchmpbttn-class',1,'<strong>Added or Modified Methods for SldrDALtchMPBttn class</strong>']]], ['sldrdaltchmpbttn_20members_20documentation_20click_20here_20a_41',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_sldr_d_a_ltch_m_p_bttn-members.html" >For SldrDALtchMPBttn Members Documentation Click Here!</a>',['../index.html#for-sldrdaltchmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_sldr_d_a_ltch_m_p_bttn-membershtml',1,'']]], ['snglsrvcvdblmpbttn_42',['SnglSrvcVdblMPBttn',['../class_sngl_srvc_vdbl_m_p_bttn.html',1,'SnglSrvcVdblMPBttn'],['../class_sngl_srvc_vdbl_m_p_bttn.html#a249cec6bf3fc2aa94708c4df3a45bf8d',1,'SnglSrvcVdblMPBttn::SnglSrvcVdblMPBttn()']]], ['snglsrvcvdblmpbttn_20class_20strong_43',['# <strong>SnglSrvcVdblMPBttn class</strong>',['../index.html#autotoc_md-snglsrvcvdblmpbttn-class',1,'']]], ['snglsrvcvdblmpbttn_20members_20documentation_20click_20here_20a_44',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_sngl_srvc_vdbl_m_p_bttn-members.html" >For SnglSrvcVdblMPBttn Members Documentation Click Here!</a>',['../index.html#for-snglsrvcvdblmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_sngl_srvc_vdbl_m_p_bttn-membershtml',1,'']]], - ['start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_45',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_45',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_46',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_47',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], - ['stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_48',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], - ['strong_49',['strong',['../index.html#autotoc_md-dblactnltchmpbttn-class--',1,'# <strong>DblActnLtchMPBttn class</strong>'],['../index.html#autotoc_md-ddlyddaltchmpbttn-class',1,'# <strong>DDlydDALtchMPBttn class</strong>'],['../index.html#autotoc_md-sldrdaltchmpbttn-class',1,'# <strong>SldrDALtchMPBttn class</strong>'],['../index.html#autotoc_md-snglsrvcvdblmpbttn-class',1,'# <strong>SnglSrvcVdblMPBttn class</strong>'],['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'# <strong>TmVdblMPBttn class</strong>'],['../index.html#autotoc_md-vdblmpbttn-class',1,'# <strong>VdblMPBttn class</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-1',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-2',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-3',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-4',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-5',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-6',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-7',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-8',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-9',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-10',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-11',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-12',1,'## <strong>Methods definition and use description</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dblactnltchmpbttn-class',1,'<strong>Added or Modified Methods for DblActnLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dbncddlydmpbttn-class',1,'<strong>Added or modified Methods for DbncdDlydMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ddlyddaltchmpbttn-class',1,'<strong>Added or Modified Methods for DDlydDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-hntdtmltchmpbttn-class',1,'<strong>Added or Modified Methods for HntdTmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class-1',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-sldrdaltchmpbttn-class',1,'<strong>Added or Modified Methods for SldrDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'<strong>Added or Modified Methods for TmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-vdblmpbttn-class',1,'<strong>Added or Modified Methods for VdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-xtrnunltchmpbttn-class',1,'<strong>Added or Modified Methods for XtrnUnltchMPBttn class</strong>'],['../index.html#dbncddlydmpbttn-class',1,'<strong>DbncdDlydMPBttn class</strong>'],['../index.html#dbncdmpbttn-class',1,'<strong>DbncdMPBttn class</strong>'],['../index.html#hntdtmltchmpbttn-class',1,'<strong>HntdTmLtchMPBttn class</strong>'],['../index.html#included-methods-for-dbncdmpbttn-class',1,'<strong>Included Methods for DbncdMPBttn class</strong>'],['../index.html#ltchmpbttn-class',1,'<strong>LtchMPBttn class</strong>'],['../index.html#tgglltchmpbttn-class',1,'<strong>TgglLtchMPBttn class</strong>'],['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>'],['../index.html#tmltchmpbttn-class',1,'<strong>TmLtchMPBttn class</strong>'],['../index.html#xtrnunltchmpbttn-class',1,'<strong>XtrnUnLtchMPBttn class</strong>']]], + ['stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_48',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], + ['strong_49',['strong',['../index.html#autotoc_md-dblactnltchmpbttn-class--',1,'# <strong>DblActnLtchMPBttn class</strong>'],['../index.html#autotoc_md-ddlyddaltchmpbttn-class',1,'# <strong>DDlydDALtchMPBttn class</strong>'],['../index.html#autotoc_md-sldrdaltchmpbttn-class',1,'# <strong>SldrDALtchMPBttn class</strong>'],['../index.html#autotoc_md-snglsrvcvdblmpbttn-class',1,'# <strong>SnglSrvcVdblMPBttn class</strong>'],['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'# <strong>TmVdblMPBttn class</strong>'],['../index.html#autotoc_md-vdblmpbttn-class',1,'# <strong>VdblMPBttn class</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-1',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-2',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-3',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-4',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-5',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-6',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-7',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-8',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-9',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-10',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-11',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-12',1,'## <strong>Methods definition and use description</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dblactnltchmpbttn-class',1,'<strong>Added or Modified Methods for DblActnLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dbncddlydmpbttn-class',1,'<strong>Added or modified Methods for DbncdDlydMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ddlyddaltchmpbttn-class',1,'<strong>Added or Modified Methods for DDlydDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-hntdtmltchmpbttn-class',1,'<strong>Added or Modified Methods for HntdTmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class-1',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-sldrdaltchmpbttn-class',1,'<strong>Added or Modified Methods for SldrDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'<strong>Added or Modified Methods for TmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-vdblmpbttn-class',1,'<strong>Added or Modified Methods for VdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-xtrnunltchmpbttn-class',1,'<strong>Added or Modified Methods for XtrnUnltchMPBttn class</strong>'],['../index.html#dbncddlydmpbttn-class',1,'<strong>DbncdDlydMPBttn class</strong>'],['../index.html#dbncdmpbttn-class',1,'<strong>DbncdMPBttn class</strong>'],['../index.html#hntdtmltchmpbttn-class',1,'<strong>HntdTmLtchMPBttn class</strong>'],['../index.html#included-methods-for-dbncdmpbttn-class',1,'<strong>Included Methods for DbncdMPBttn class</strong>'],['../index.html#ltchmpbttn-class',1,'<strong>LtchMPBttn class</strong>'],['../index.html#tgglltchmpbttn-class',1,'<strong>TgglLtchMPBttn class</strong>'],['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>'],['../index.html#tmltchmpbttn-class',1,'<strong>TmLtchMPBttn class</strong>'],['../index.html#xtrnunltchmpbttn-class',1,'<strong>XtrnUnLtchMPBttn class</strong>']]], ['strong_20added_20methods_20for_20tmvdblmpbttn_20class_20strong_50',['strong Added Methods for TmVdblMPBttn class strong',['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>']]], ['strong_20added_20or_20modified_20methods_20for_20dblactnltchmpbttn_20class_20strong_51',['<strong>Added or Modified Methods for DblActnLtchMPBttn class</strong>',['../index.html#added-or-modified-methods-for-dblactnltchmpbttn-class',1,'']]], ['strong_20added_20or_20modified_20methods_20for_20dbncddlydmpbttn_20class_20strong_52',['<strong>Added or modified Methods for DbncdDlydMPBttn class</strong>',['../index.html#added-or-modified-methods-for-dbncddlydmpbttn-class',1,'']]], @@ -79,14 +79,14 @@ var searchData= ['strong_20sldrdaltchmpbttn_20class_20strong_76',['# <strong>SldrDALtchMPBttn class</strong>',['../index.html#autotoc_md-sldrdaltchmpbttn-class',1,'']]], ['strong_20snglsrvcvdblmpbttn_20class_20strong_77',['# <strong>SnglSrvcVdblMPBttn class</strong>',['../index.html#autotoc_md-snglsrvcvdblmpbttn-class',1,'']]], ['strong_20tgglltchmpbttn_20class_20strong_78',['<strong>TgglLtchMPBttn class</strong>',['../index.html#tgglltchmpbttn-class',1,'']]], - ['strong_20the_20driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_79',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['strong_20the_20driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_79',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['strong_20tmltchmpbttn_20class_20strong_80',['<strong>TmLtchMPBttn class</strong>',['../index.html#tmltchmpbttn-class',1,'']]], ['strong_20tmvdblmpbttn_20class_20strong_81',['# <strong>TmVdblMPBttn class</strong>',['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'']]], ['strong_20vdblmpbttn_20class_20strong_82',['# <strong>VdblMPBttn class</strong>',['../index.html#autotoc_md-vdblmpbttn-class',1,'']]], ['strong_20xtrnunltchmpbttn_20class_20strong_83',['<strong>XtrnUnLtchMPBttn class</strong>',['../index.html#xtrnunltchmpbttn-class',1,'']]], ['subclasses_20common_20members_20documentation_20click_20here_20a_84',['Subclasses Common Members Documentation Click Here a',['../index.html#for-dblactnltchmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbl_actn_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbl_actn_ltch_m_p_bttn-members.html" >For DblActnLtchMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-ltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_ltch_m_p_bttn-members.html" >For LtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tgglltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tggl_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tggl_ltch_m_p_bttn-members.html" >For TgglLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tmltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_ltch_m_p_bttn-members.html" >For TmLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-vdblmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_vdbl_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_vdbl_m_p_bttn-members.html" >For VdblMPBttn Subclasses Common Members Documentation Click Here!</a>']]], ['swapsldrdir_85',['swapSldrDir',['../class_sldr_d_a_ltch_m_p_bttn.html#a5f61c963274f5496f9581f8ffa294974',1,'SldrDALtchMPBttn']]], - ['switch_20is_20on_20or_20off_20strong_86',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['switch_20is_20on_20or_20off_20strong_86',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['switch_20mechanisms_20replacements_20out_20of_20simple_20push_20buttons_87',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], ['switches_20library_20strong_20buttontoswitch_5fesp32_88',['<strong>Buttons to Switches Library</strong> (ButtonToSwitch_ESP32)',['../index.html',1,'']]], ['switches_20mechanisms_3a_89',['The library implements the following switches mechanisms:',['../index.html#the-library-implements-the-following-switches-mechanisms',1,'']]], diff --git a/docs/search/all_11.js b/docs/search/all_11.js index 66f23ff..db34b4a 100644 --- a/docs/search/all_11.js +++ b/docs/search/all_11.js @@ -6,7 +6,7 @@ var searchData= ['tgglltchmpbttn_20class_20strong_3',['<strong>TgglLtchMPBttn class</strong>',['../index.html#tgglltchmpbttn-class',1,'']]], ['that_20builds_20switch_20mechanisms_20replacements_20out_20of_20simple_20push_20buttons_4',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], ['that_20usually_20need_20external_20hardware_20modifications_20in_20electromechanical_20switches_3a_5',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], - ['the_20driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_6',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['the_20driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_6',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_7',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_8',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['the_20embedded_20behavior_20also_20includes_20logical_20replacements_20for_20temporary_20or_20extraordinary_20responses_20that_20usually_20need_20external_20hardware_20modifications_20in_20electromechanical_20switches_3a_9',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], @@ -15,12 +15,13 @@ var searchData= ['the_20library_20implements_20the_20following_20switches_20mechanisms_3a_12',['The library implements the following switches mechanisms:',['../index.html#the-library-implements-the-following-switches-mechanisms',1,'']]], ['the_20main_20output_20attribute_20flag_20kept_20updated_20for_20each_20and_20every_20class_20is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_13',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_14',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], - ['tmltchdmpbttn_20subclasses_20common_20members_20documentation_20click_20here_20a_15',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_ltch_m_p_bttn-members.html" >For TmLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>',['../index.html#for-tmltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_ltch_m_p_bttn-membershtml',1,'']]], - ['tmltchmpbttn_16',['TmLtchMPBttn',['../class_tm_ltch_m_p_bttn.html',1,'TmLtchMPBttn'],['../class_tm_ltch_m_p_bttn.html#ad402e1d30668a1ec776d5e69d1066485',1,'TmLtchMPBttn::TmLtchMPBttn()']]], - ['tmltchmpbttn_20class_20strong_17',['TmLtchMPBttn class strong',['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'<strong>Added or Modified Methods for TmLtchMPBttn class</strong>'],['../index.html#tmltchmpbttn-class',1,'<strong>TmLtchMPBttn class</strong>']]], - ['tmvdblmpbttn_18',['TmVdblMPBttn',['../class_tm_vdbl_m_p_bttn.html',1,'TmVdblMPBttn'],['../class_tm_vdbl_m_p_bttn.html#a745c894d7758f60b5f6261f558758f05',1,'TmVdblMPBttn::TmVdblMPBttn()']]], - ['tmvdblmpbttn_20class_20strong_19',['TmVdblMPBttn class strong',['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'# <strong>TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>']]], - ['tmvdblmpbttn_20members_20documentation_20click_20here_20a_20',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_vdbl_m_p_bttn-members.html" >For TmVdblMPBttn Members Documentation Click Here!</a>',['../index.html#for-tmvdblmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_vdbl_m_p_bttn-membershtml',1,'']]], - ['to_20switches_20library_20strong_20buttontoswitch_5fesp32_21',['<strong>Buttons to Switches Library</strong> (ButtonToSwitch_ESP32)',['../index.html',1,'']]], - ['true_20of_20the_20instantiated_20objects_22',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]] + ['the_20switch_20is_20on_20or_20off_20strong_15',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], + ['tmltchdmpbttn_20subclasses_20common_20members_20documentation_20click_20here_20a_16',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_ltch_m_p_bttn-members.html" >For TmLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>',['../index.html#for-tmltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_ltch_m_p_bttn-membershtml',1,'']]], + ['tmltchmpbttn_17',['TmLtchMPBttn',['../class_tm_ltch_m_p_bttn.html',1,'TmLtchMPBttn'],['../class_tm_ltch_m_p_bttn.html#ad402e1d30668a1ec776d5e69d1066485',1,'TmLtchMPBttn::TmLtchMPBttn()']]], + ['tmltchmpbttn_20class_20strong_18',['TmLtchMPBttn class strong',['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'<strong>Added or Modified Methods for TmLtchMPBttn class</strong>'],['../index.html#tmltchmpbttn-class',1,'<strong>TmLtchMPBttn class</strong>']]], + ['tmvdblmpbttn_19',['TmVdblMPBttn',['../class_tm_vdbl_m_p_bttn.html',1,'TmVdblMPBttn'],['../class_tm_vdbl_m_p_bttn.html#a745c894d7758f60b5f6261f558758f05',1,'TmVdblMPBttn::TmVdblMPBttn()']]], + ['tmvdblmpbttn_20class_20strong_20',['TmVdblMPBttn class strong',['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'# <strong>TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>']]], + ['tmvdblmpbttn_20members_20documentation_20click_20here_20a_21',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_vdbl_m_p_bttn-members.html" >For TmVdblMPBttn Members Documentation Click Here!</a>',['../index.html#for-tmvdblmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_vdbl_m_p_bttn-membershtml',1,'']]], + ['to_20switches_20library_20strong_20buttontoswitch_5fesp32_22',['<strong>Buttons to Switches Library</strong> (ButtonToSwitch_ESP32)',['../index.html',1,'']]], + ['true_20of_20the_20instantiated_20objects_23',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]] ]; diff --git a/docs/search/all_13.js b/docs/search/all_13.js index f0f8ba4..57a407e 100644 --- a/docs/search/all_13.js +++ b/docs/search/all_13.js @@ -3,5 +3,5 @@ var searchData= ['vdblmpbttn_0',['VdblMPBttn',['../class_vdbl_m_p_bttn.html',1,'VdblMPBttn'],['../class_vdbl_m_p_bttn.html#af456bee65784bdaa6c81d2625abbf73b',1,'VdblMPBttn::VdblMPBttn()']]], ['vdblmpbttn_20class_20strong_1',['VdblMPBttn class strong',['../index.html#autotoc_md-vdblmpbttn-class',1,'# <strong>VdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-vdblmpbttn-class',1,'<strong>Added or Modified Methods for VdblMPBttn class</strong>']]], ['vdblmpbttn_20subclasses_20common_20members_20documentation_20click_20here_20a_2',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_vdbl_m_p_bttn-members.html" >For VdblMPBttn Subclasses Common Members Documentation Click Here!</a>',['../index.html#for-vdblmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_vdbl_m_p_bttn-membershtml',1,'']]], - ['voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_3',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]] + ['voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_3',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]] ]; diff --git a/docs/search/all_16.js b/docs/search/all_16.js index c5e447a..ac320cb 100644 --- a/docs/search/all_16.js +++ b/docs/search/all_16.js @@ -1,4 +1,10 @@ var searchData= [ - ['your_20switch_20is_20on_20or_20off_20strong_0',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]] + ['_7edblactnltchmpbttn_0',['~DblActnLtchMPBttn',['../class_dbl_actn_ltch_m_p_bttn.html#aeac43f6938213f2de9cb4060b1d47c00',1,'DblActnLtchMPBttn']]], + ['_7edbncdmpbttn_1',['~DbncdMPBttn',['../class_dbncd_m_p_bttn.html#a3f0f4c1a3b122541031fecaf9bb93101',1,'DbncdMPBttn']]], + ['_7eddlyddaltchmpbttn_2',['~DDlydDALtchMPBttn',['../class_d_dlyd_d_a_ltch_m_p_bttn.html#a896fbb36cad2c7c54a86f4e71b7e92bc',1,'DDlydDALtchMPBttn']]], + ['_7esldrdaltchmpbttn_3',['~SldrDALtchMPBttn',['../class_sldr_d_a_ltch_m_p_bttn.html#a6d3a32faa67706cd6ec09899c1a7cc37',1,'SldrDALtchMPBttn']]], + ['_7esnglsrvcvdblmpbttn_4',['~SnglSrvcVdblMPBttn',['../class_sngl_srvc_vdbl_m_p_bttn.html#a79bfd4e433d210d6b0320149ee8b0dc2',1,'SnglSrvcVdblMPBttn']]], + ['_7etmvdblmpbttn_5',['~TmVdblMPBttn',['../class_tm_vdbl_m_p_bttn.html#a2ece84b47468d7804c5d4c0238195aee',1,'TmVdblMPBttn']]], + ['_7evdblmpbttn_6',['~VdblMPBttn',['../class_vdbl_m_p_bttn.html#a99c75dd8225c791015dcdbc8b1c9a07e',1,'VdblMPBttn']]] ]; diff --git a/docs/search/all_2.js b/docs/search/all_2.js index 9daef01..94648be 100644 --- a/docs/search/all_2.js +++ b/docs/search/all_2.js @@ -1,6 +1,6 @@ var searchData= [ - ['checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_0',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_0',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['class_20is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_1',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['class_20members_20documentation_20click_20here_20a_2',['class Members Documentation Click Here a',['../index.html#for-dbncddlydmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbncd_dlyd_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbncd_dlyd_m_p_bttn-members.html" >For DbncdDlydMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-dbncdmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbncd_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbncd_m_p_bttn-members.html" >For DbncdMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-hntdtmltchmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_hntd_tm_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_hntd_tm_ltch_m_p_bttn-members.html" >For HntdTmLtchMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-xtrnunltchmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_xtrn_unltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_xtrn_unltch_m_p_bttn-members.html" >For XtrnUnltchMPBttn class Members Documentation Click Here!</a>']]], ['class_20strong_3',['class strong',['../index.html#autotoc_md-dblactnltchmpbttn-class--',1,'# <strong>DblActnLtchMPBttn class</strong>'],['../index.html#autotoc_md-ddlyddaltchmpbttn-class',1,'# <strong>DDlydDALtchMPBttn class</strong>'],['../index.html#autotoc_md-sldrdaltchmpbttn-class',1,'# <strong>SldrDALtchMPBttn class</strong>'],['../index.html#autotoc_md-snglsrvcvdblmpbttn-class',1,'# <strong>SnglSrvcVdblMPBttn class</strong>'],['../index.html#autotoc_md-tmvdblmpbttn-class--',1,'# <strong>TmVdblMPBttn class</strong>'],['../index.html#autotoc_md-vdblmpbttn-class',1,'# <strong>VdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-methods-for-tmvdblmpbttn-class-1',1,'<strong>Added Methods for TmVdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dblactnltchmpbttn-class',1,'<strong>Added or Modified Methods for DblActnLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-dbncddlydmpbttn-class',1,'<strong>Added or modified Methods for DbncdDlydMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ddlyddaltchmpbttn-class',1,'<strong>Added or Modified Methods for DDlydDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-hntdtmltchmpbttn-class',1,'<strong>Added or Modified Methods for HntdTmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-ltchmpbttn-class-1',1,'<strong>Added or Modified Methods for LtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-sldrdaltchmpbttn-class',1,'<strong>Added or Modified Methods for SldrDALtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'<strong>Added or Modified Methods for TmLtchMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-vdblmpbttn-class',1,'<strong>Added or Modified Methods for VdblMPBttn class</strong>'],['../index.html#added-or-modified-methods-for-xtrnunltchmpbttn-class',1,'<strong>Added or Modified Methods for XtrnUnltchMPBttn class</strong>'],['../index.html#dbncddlydmpbttn-class',1,'<strong>DbncdDlydMPBttn class</strong>'],['../index.html#dbncdmpbttn-class',1,'<strong>DbncdMPBttn class</strong>'],['../index.html#hntdtmltchmpbttn-class',1,'<strong>HntdTmLtchMPBttn class</strong>'],['../index.html#included-methods-for-dbncdmpbttn-class',1,'<strong>Included Methods for DbncdMPBttn class</strong>'],['../index.html#ltchmpbttn-class',1,'<strong>LtchMPBttn class</strong>'],['../index.html#tgglltchmpbttn-class',1,'<strong>TgglLtchMPBttn class</strong>'],['../index.html#tmltchmpbttn-class',1,'<strong>TmLtchMPBttn class</strong>'],['../index.html#xtrnunltchmpbttn-class',1,'<strong>XtrnUnLtchMPBttn class</strong>']]], @@ -21,5 +21,5 @@ var searchData= ['clrstatus_18',['clrStatus',['../class_dbncd_m_p_bttn.html#a3009725646aeb160884b8109d180b530',1,'DbncdMPBttn::clrStatus()'],['../class_ltch_m_p_bttn.html#aa52047bd930afc19d8c1f9026f7605ef',1,'LtchMPBttn::clrStatus()'],['../class_tm_ltch_m_p_bttn.html#a8c27b3a6f642a4c7bb4d27b56cc3abaf',1,'TmLtchMPBttn::clrStatus()'],['../class_hntd_tm_ltch_m_p_bttn.html#aa87d5a52555a45bc3c2f1276cfe8a446',1,'HntdTmLtchMPBttn::clrStatus()'],['../class_xtrn_unltch_m_p_bttn.html#a9f9876219729a8d821c298d8f2402681',1,'XtrnUnltchMPBttn::clrStatus()'],['../class_dbl_actn_ltch_m_p_bttn.html#a7454fc41a95d7bb028831a66781dffb3',1,'DblActnLtchMPBttn::clrStatus()'],['../class_d_dlyd_d_a_ltch_m_p_bttn.html#a718400e48b49ebeba26f39ac311ce178',1,'DDlydDALtchMPBttn::clrStatus()'],['../class_sldr_d_a_ltch_m_p_bttn.html#a161080d6983f7f79f3947921fdb361ef',1,'SldrDALtchMPBttn::clrStatus()'],['../class_vdbl_m_p_bttn.html#a7ea82534da6a8f39d9715a3126387d30',1,'VdblMPBttn::clrStatus()'],['../class_tm_vdbl_m_p_bttn.html#a33bb7f6a78ea9c912a6d2c906ef756e5',1,'TmVdblMPBttn::clrStatus()']]], ['common_20members_20documentation_20click_20here_20a_19',['Common Members Documentation Click Here a',['../index.html#for-dblactnltchmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbl_actn_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbl_actn_ltch_m_p_bttn-members.html" >For DblActnLtchMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-ltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_ltch_m_p_bttn-members.html" >For LtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tgglltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tggl_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tggl_ltch_m_p_bttn-members.html" >For TgglLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tmltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_ltch_m_p_bttn-members.html" >For TmLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-vdblmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_vdbl_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_vdbl_m_p_bttn-members.html" >For VdblMPBttn Subclasses Common Members Documentation Click Here!</a>']]], ['complete_20documentation_20click_20here_20a_20',['Complete Documentation Click Here a',['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-1',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-2',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-3',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-4',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-5',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-6',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-7',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-8',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-9',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-10',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-11',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-12',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-13',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>']]], - ['concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_21',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]] + ['concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_21',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]] ]; diff --git a/docs/search/all_3.js b/docs/search/all_3.js index da65f5d..d41760b 100644 --- a/docs/search/all_3.js +++ b/docs/search/all_3.js @@ -17,5 +17,5 @@ var searchData= ['description_20strong_14',['description strong',['../index.html#autotoc_md-methods-definition-and-use-description',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-1',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-2',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-3',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-4',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-5',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-6',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-7',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-8',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-9',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-10',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-11',1,'## <strong>Methods definition and use description</strong>'],['../index.html#autotoc_md-methods-definition-and-use-description-12',1,'## <strong>Methods definition and use description</strong>']]], ['disable_15',['disable',['../class_dbncd_m_p_bttn.html#a881f9e15d1bf8da14edc77e2bcc63953',1,'DbncdMPBttn']]], ['documentation_20click_20here_20a_16',['Documentation Click Here a',['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-1',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-2',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-3',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-4',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-5',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-6',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-7',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-8',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-9',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-10',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-11',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-12',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-13',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-ddlyddaltchmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_d_dlyd_d_a_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_d_dlyd_d_a_ltch_m_p_bttn-members.html" >For DDlydDALtchMPBttn Members Documentation Click Here!</a>'],['../index.html#for-dblactnltchmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbl_actn_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbl_actn_ltch_m_p_bttn-members.html" >For DblActnLtchMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-dbncddlydmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbncd_dlyd_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbncd_dlyd_m_p_bttn-members.html" >For DbncdDlydMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-dbncdmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbncd_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbncd_m_p_bttn-members.html" >For DbncdMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-hntdtmltchmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_hntd_tm_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_hntd_tm_ltch_m_p_bttn-members.html" >For HntdTmLtchMPBttn class Members Documentation Click Here!</a>'],['../index.html#for-ltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_ltch_m_p_bttn-members.html" >For LtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-sldrdaltchmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_sldr_d_a_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_sldr_d_a_ltch_m_p_bttn-members.html" >For SldrDALtchMPBttn Members Documentation Click Here!</a>'],['../index.html#for-snglsrvcvdblmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_sngl_srvc_vdbl_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_sngl_srvc_vdbl_m_p_bttn-members.html" >For SnglSrvcVdblMPBttn Members Documentation Click Here!</a>'],['../index.html#for-tgglltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tggl_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tggl_ltch_m_p_bttn-members.html" >For TgglLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tmltchdmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_ltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_ltch_m_p_bttn-members.html" >For TmLtchdMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-tmvdblmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_tm_vdbl_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_tm_vdbl_m_p_bttn-members.html" >For TmVdblMPBttn Members Documentation Click Here!</a>'],['../index.html#for-vdblmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_vdbl_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_vdbl_m_p_bttn-members.html" >For VdblMPBttn Subclasses Common Members Documentation Click Here!</a>'],['../index.html#for-xtrnunltchmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_xtrn_unltch_m_p_bttn-membershtml',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_xtrn_unltch_m_p_bttn-members.html" >For XtrnUnltchMPBttn class Members Documentation Click Here!</a>']]], - ['driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_17',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]] + ['driving_20concept_20is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_17',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]] ]; diff --git a/docs/search/all_8.js b/docs/search/all_8.js index 4ed2d8f..d215664 100644 --- a/docs/search/all_8.js +++ b/docs/search/all_8.js @@ -1,12 +1,12 @@ var searchData= [ - ['if_20your_20switch_20is_20on_20or_20off_20strong_0',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['if_20the_20switch_20is_20on_20or_20off_20strong_0',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['implements_20the_20following_20switches_20mechanisms_3a_1',['The library implements the following switches mechanisms:',['../index.html#the-library-implements-the-following-switches-mechanisms',1,'']]], ['in_20electromechanical_20switches_3a_2',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], ['included_20methods_20for_20dbncdmpbttn_20class_20strong_3',['<strong>Included Methods for DbncdMPBttn class</strong>',['../index.html#included-methods-for-dbncdmpbttn-class',1,'']]], ['includes_20logical_20replacements_20for_20temporary_20or_20extraordinary_20responses_20that_20usually_20need_20external_20hardware_20modifications_20in_20electromechanical_20switches_3a_4',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], ['init_5',['init',['../class_dbncd_m_p_bttn.html#a5899608d0459aef3135f2671862cd820',1,'DbncdMPBttn::init()'],['../class_dbncd_dlyd_m_p_bttn.html#a8e365367a0b209171fd7052fd10a4c1f',1,'DbncdDlydMPBttn::init()']]], - ['input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_6',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_6',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['instantiated_20objects_7',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['io_20buttontoswitch_5fesp32_20class_5fd_5fdlyd_5fd_5fa_5fltch_5fm_5fp_5fbttn_20members_20html_20for_20ddlyddaltchmpbttn_20members_20documentation_20click_20here_20a_8',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_d_dlyd_d_a_ltch_m_p_bttn-members.html" >For DDlydDALtchMPBttn Members Documentation Click Here!</a>',['../index.html#for-ddlyddaltchmpbttn-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_d_dlyd_d_a_ltch_m_p_bttn-membershtml',1,'']]], ['io_20buttontoswitch_5fesp32_20class_5fdbl_5factn_5fltch_5fm_5fp_5fbttn_20members_20html_20for_20dblactnltchmpbttn_20subclasses_20common_20members_20documentation_20click_20here_20a_9',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_dbl_actn_ltch_m_p_bttn-members.html" >For DblActnLtchMPBttn Subclasses Common Members Documentation Click Here!</a>',['../index.html#for-dblactnltchmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_dbl_actn_ltch_m_p_bttn-membershtml',1,'']]], @@ -22,8 +22,8 @@ var searchData= ['io_20buttontoswitch_5fesp32_20class_5fvdbl_5fm_5fp_5fbttn_20members_20html_20for_20vdblmpbttn_20subclasses_20common_20members_20documentation_20click_20here_20a_19',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_vdbl_m_p_bttn-members.html" >For VdblMPBttn Subclasses Common Members Documentation Click Here!</a>',['../index.html#for-vdblmpbttn-subclasses-common-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_vdbl_m_p_bttn-membershtml',1,'']]], ['io_20buttontoswitch_5fesp32_20class_5fxtrn_5funltch_5fm_5fp_5fbttn_20members_20html_20for_20xtrnunltchmpbttn_20class_20members_20documentation_20click_20here_20a_20',['<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/class_xtrn_unltch_m_p_bttn-members.html" >For XtrnUnltchMPBttn class Members Documentation Click Here!</a>',['../index.html#for-xtrnunltchmpbttn-class-members-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32class_xtrn_unltch_m_p_bttn-membershtml',1,'']]], ['io_20buttontoswitch_5fesp32_20for_20buttontoswitch_20for_20esp32_20library_20complete_20documentation_20click_20here_20a_21',['io ButtonToSwitch_ESP32 For ButtonToSwitch for ESP32 Library Complete Documentation Click Here a',['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-1',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-2',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-3',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-4',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-5',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-6',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-7',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-8',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-9',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-10',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-11',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-12',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>'],['../index.html#for-buttontoswitch-for-esp32-library-complete-documentation-click-herehttpsgabygold67githubiobuttontoswitch_esp32-13',1,'<a href="https://gabygold67.github.io/ButtonToSwitch_ESP32/" >For ButtonToSwitch for ESP32 Library Complete Documentation Click Here!</a>']]], - ['is_20on_20or_20off_20strong_22',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], - ['is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_23',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['is_20on_20or_20off_20strong_22',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], + ['is_20pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_23',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_24',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_25',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_26',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], diff --git a/docs/search/all_d.js b/docs/search/all_d.js index 8274276..bd77d13 100644 --- a/docs/search/all_d.js +++ b/docs/search/all_d.js @@ -4,8 +4,8 @@ var searchData= ['of_20simple_20push_20buttons_1',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], ['of_20the_20instantiated_20objects_2',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_3',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], - ['off_20strong_4',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], - ['on_20or_20off_20strong_5',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['off_20strong_4',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], + ['on_20or_20off_20strong_5',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_6',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]], ['or_20extraordinary_20responses_20that_20usually_20need_20external_20hardware_20modifications_20in_20electromechanical_20switches_3a_7',['The embedded behavior also includes logical replacements for temporary or extraordinary responses that usually need external hardware modifications in electromechanical switches:',['../index.html#the-embedded-behavior-also-includes-logical-replacements-for-temporary-or-extraordinary-responses-that-usually-need-external-hardware-modifications-in-electromechanical-switches',1,'']]], ['or_20modified_20methods_20for_20dblactnltchmpbttn_20class_20strong_8',['<strong>Added or Modified Methods for DblActnLtchMPBttn class</strong>',['../index.html#added-or-modified-methods-for-dblactnltchmpbttn-class',1,'']]], @@ -17,7 +17,7 @@ var searchData= ['or_20modified_20methods_20for_20tmltchmpbttn_20class_20strong_14',['<strong>Added or Modified Methods for TmLtchMPBttn class</strong>',['../index.html#added-or-modified-methods-for-tmltchmpbttn-class',1,'']]], ['or_20modified_20methods_20for_20vdblmpbttn_20class_20strong_15',['<strong>Added or Modified Methods for VdblMPBttn class</strong>',['../index.html#added-or-modified-methods-for-vdblmpbttn-class',1,'']]], ['or_20modified_20methods_20for_20xtrnunltchmpbttn_20class_20strong_16',['<strong>Added or Modified Methods for XtrnUnltchMPBttn class</strong>',['../index.html#added-or-modified-methods-for-xtrnunltchmpbttn-class',1,'']]], - ['or_20off_20strong_17',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['or_20off_20strong_17',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['otptssttsunpkg_18',['otptsSttsUnpkg',['../_button_to_switch___e_s_p32_8cpp.html#a3d6625d24dab5d24741899eb3bd6b816',1,'otptsSttsUnpkg(uint32_t pkgOtpts): ButtonToSwitch_ESP32.cpp'],['../_button_to_switch___e_s_p32_8h.html#a3d6625d24dab5d24741899eb3bd6b816',1,'otptsSttsUnpkg(uint32_t pkgOtpts): ButtonToSwitch_ESP32.cpp']]], ['out_20of_20simple_20push_20buttons_19',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]], ['output_20attribute_20flag_20kept_20updated_20for_20each_20and_20every_20class_20is_20the_20strong_20ison_20strong_20flag_20which_20defines_20the_20em_20strong_20off_20state_20strong_20em_20ison_20false_20and_20the_20em_20strong_20on_20state_20strong_20em_20ison_20true_20of_20the_20instantiated_20objects_20',['The main output attribute flag kept updated for each and every class is the <strong>isOn</strong> flag, which defines the <em><strong>Off State</strong></em> (isOn=false) and the <em><strong>On State</strong></em> (isOn=true) of the instantiated objects.',['../index.html#the-main-output-attribute-flag-kept-updated-for-each-and-every-class-is-the-ison-flag-which-defines-the-_off-state_-isonfalse-and-the-_on-state_-isontrue-of-the-instantiated-objects',1,'']]] diff --git a/docs/search/all_e.js b/docs/search/all_e.js index 8a5f81e..a6c351d 100644 --- a/docs/search/all_e.js +++ b/docs/search/all_e.js @@ -1,7 +1,7 @@ var searchData= [ ['pause_0',['pause',['../class_dbncd_m_p_bttn.html#a3cf51be801e6024cc3ca6b984deb52c6',1,'DbncdMPBttn']]], - ['pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_1',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], - ['pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20your_20switch_20is_20on_20or_20off_20strong_2',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if your switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-your-switch-is-on-or-off',1,'']]], + ['pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_1',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], + ['pretty_20simple_3a_20stop_20checking_20an_20input_20pin_20voltage_20start_20asking_20if_20the_20switch_20is_20on_20or_20off_20strong_2',['<strong>The driving concept is pretty simple: stop checking an input pin voltage, start asking if the switch is On or Off.</strong>',['../index.html#the-driving-concept-is-pretty-simple-stop-checking-an-input-pin-voltage-start-asking-if-the-switch-is-on-or-off',1,'']]], ['push_20buttons_3',['An ESP32-RTOS Arduino library that builds switch mechanisms replacements out of simple push buttons.',['../index.html#an-esp32-rtos-arduino-library-that-builds-switch-mechanisms-replacements-out-of-simple-push-buttons',1,'']]] ]; diff --git a/docs/search/searchdata.js b/docs/search/searchdata.js index f6054ea..ac918b6 100644 --- a/docs/search/searchdata.js +++ b/docs/search/searchdata.js @@ -1,6 +1,6 @@ var indexSectionsWithContent = { - 0: "abcdefghiklmnoprstuvwxy~", + 0: "abcdefghiklmnoprstuvwx~", 1: "dhlmstvx", 2: "b", 3: "bcdeghiloprstuvx~", diff --git a/docs/struct_mpb_otpts__t-members.html b/docs/struct_mpb_otpts__t-members.html index 70138aa..e5fd294 100644 --- a/docs/struct_mpb_otpts__t-members.html +++ b/docs/struct_mpb_otpts__t-members.html @@ -28,7 +28,7 @@ diff --git a/docs/struct_mpb_otpts__t.html b/docs/struct_mpb_otpts__t.html index 9f6c8e8..1a55c54 100644 --- a/docs/struct_mpb_otpts__t.html +++ b/docs/struct_mpb_otpts__t.html @@ -28,7 +28,7 @@ diff --git a/examples/01_DbncdMPBttn_1b/01_DbncdMPBttn_1b.ino b/examples/01_DbncdMPBttn_1b/01_DbncdMPBttn_1b.ino index f9f91e3..f070264 100644 --- a/examples/01_DbncdMPBttn_1b/01_DbncdMPBttn_1b.ino +++ b/examples/01_DbncdMPBttn_1b/01_DbncdMPBttn_1b.ino @@ -58,35 +58,35 @@ DbncdMPBttn dmpbBttn (dmpbSwitchPin); DbncdMPBttn* dmpbBttnPtr {&dmpbBttn}; void setup() { - pinMode(dmpbLoadPin, OUTPUT); - pinMode(dmpbIsDisabledPin, OUTPUT); + pinMode(dmpbLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); - enableSwpTmrHndl = xTimerCreate( - "isEnabledSwapTimer", - 10000, - pdTRUE, - dmpbBttnPtr, - swpEnableCb - ); + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 10000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); dmpbBttn.setIsOnDisabled(true); - dmpbBttn.begin(); + dmpbBttn.begin(); - if (enableSwpTmrHndl != NULL){ + if (enableSwpTmrHndl != NULL){ tmrModRslt = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); } - if(tmrModRslt == pdFAIL){ - Error_Handler(); - } + if(tmrModRslt == pdFAIL){ + Error_Handler(); + } } void loop() { - if(dmpbBttn.getOutputsChange()){ + if(dmpbBttn.getOutputsChange()){ digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); digitalWrite(dmpbIsDisabledPin, (dmpbBttn.getIsEnabled())?LOW:HIGH); dmpbBttn.setOutputsChange(false); - } + } } //===============================>> User Timers Implementations BEGIN @@ -99,14 +99,13 @@ void loop() { */ void swpEnableCb(TimerHandle_t pvParam){ DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); - // bool mpbttnIsEnbldStts{dbncdMPBLocPtr->getIsEnabled()}; - if (dbncdMPBLocPtr->getIsEnabled()) - dbncdMPBLocPtr->disable(); - else - dbncdMPBLocPtr->enable(); + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); - return; + return; } //===============================>> User Timers Implementations END @@ -116,10 +115,10 @@ void swpEnableCb(TimerHandle_t pvParam){ * */ void Error_Handler(){ - for(;;) - { - } + for(;;) + { + } - return; + return; } //===============================>> User Functions Implementations END diff --git a/examples/02_DbncdDlydMPBttn_1e/02_DbncdDlydMPBttn_1e.ino b/examples/02_DbncdDlydMPBttn_1e/02_DbncdDlydMPBttn_1e.ino index 5f18675..e4d8bcd 100644 --- a/examples/02_DbncdDlydMPBttn_1e/02_DbncdDlydMPBttn_1e.ino +++ b/examples/02_DbncdDlydMPBttn_1e/02_DbncdDlydMPBttn_1e.ino @@ -75,7 +75,6 @@ void dmpsOutputTsk(void *pvParameters); void dmpsActWhlOnTsk(void *pvParameters); void fnExecTrnOn(); void fnExecTrnOff(); - //===============================>> User Functions Prototypes END //===============================>> User Tasks & Timers related declarations BEGIN diff --git a/examples/06_TmLtchMPBttn_1b/06_TmLtchMPBttn_1b.ino b/examples/06_TmLtchMPBttn_1b/06_TmLtchMPBttn_1b.ino index fbb42d1..5c5c8d6 100644 --- a/examples/06_TmLtchMPBttn_1b/06_TmLtchMPBttn_1b.ino +++ b/examples/06_TmLtchMPBttn_1b/06_TmLtchMPBttn_1b.ino @@ -81,7 +81,6 @@ void setup() { void loop() { if(dmpbBttn.getOutputsChange()){ - digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); digitalWrite(dmpbIsDisabledPin, (dmpbBttn.getIsEnabled())?LOW:HIGH); diff --git a/examples/07_XtrnUntchMPBttn_1b/07_XtrnUntchMPBttn_1b.ino b/examples/07_XtrnUntchMPBttn_1b/07_XtrnUntchMPBttn_1b.ino index 6c1bd76..5b80c1d 100644 --- a/examples/07_XtrnUntchMPBttn_1b/07_XtrnUntchMPBttn_1b.ino +++ b/examples/07_XtrnUntchMPBttn_1b/07_XtrnUntchMPBttn_1b.ino @@ -139,5 +139,4 @@ void Error_Handler(){ return; } - //===============================>> User Functions Implementations END diff --git a/examples/09_TmVdblMPBttn_1a/09_TmVdblMPBttn_1a.ino b/examples/09_TmVdblMPBttn_1a/09_TmVdblMPBttn_1a.ino index 493a103..0b1b06d 100644 --- a/examples/09_TmVdblMPBttn_1a/09_TmVdblMPBttn_1a.ino +++ b/examples/09_TmVdblMPBttn_1a/09_TmVdblMPBttn_1a.ino @@ -51,23 +51,23 @@ void setup() { } void loop() { - if(dmpbBttn.getOutputsChange()){ - /* The following commented out section is replaced by the single line following. Use whichever code you're more used to - if (dmpbBttn.getIsOn()) - digitalWrite(dmpbLoadPin, HIGH); - else - digitalWrite(dmpbLoadPin, LOW); - */ - digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); + if(dmpbBttn.getOutputsChange()){ + /* The following commented out section is replaced by the single line following. Use whichever code you're more used to + if (dmpbBttn.getIsOn()) + digitalWrite(dmpbLoadPin, HIGH); + else + digitalWrite(dmpbLoadPin, LOW); + */ + digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); - /* The following commented out section is replaced by the single line following. Use whichever code you're more used to - if (dmpbBttn.getIsVoided()) - digitalWrite(tvLoadPin, HIGH); - else - digitalWrite(tvLoadPin, LOW); - */ - digitalWrite(tvLoadPin, (dmpbBttn.getIsVoided())?HIGH:LOW); - - dmpbBttn.setOutputsChange(false); - } + /* The following commented out section is replaced by the single line following. Use whichever code you're more used to + if (dmpbBttn.getIsVoided()) + digitalWrite(tvLoadPin, HIGH); + else + digitalWrite(tvLoadPin, LOW); + */ + digitalWrite(tvLoadPin, (dmpbBttn.getIsVoided())?HIGH:LOW); + + dmpbBttn.setOutputsChange(false); + } } diff --git a/examples/09_TmVdblMPBttn_1b/09_TmVdblMPBttn_1b.ino b/examples/09_TmVdblMPBttn_1b/09_TmVdblMPBttn_1b.ino index aa33bf6..26c9cab 100644 --- a/examples/09_TmVdblMPBttn_1b/09_TmVdblMPBttn_1b.ino +++ b/examples/09_TmVdblMPBttn_1b/09_TmVdblMPBttn_1b.ino @@ -85,7 +85,7 @@ void setup() { void loop() { if(dmpbBttn.getOutputsChange()){ /* The following commented out section is replaced by the single line of code following, use whichever code you're more comfortable with - // Keep in mind you'll also need to comment out the variables definition for the variables used in this block, if there are any + if (dmpbBttn.getIsOn()) digitalWrite(dmpbLoadPin, HIGH); else @@ -94,7 +94,7 @@ void loop() { digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); /* The following commented out section is replaced by the single line of code following, use whichever code you're more comfortable with - // Keep in mind you'll also need to comment out the variables definition for the variables used in this block, if there are any + if (dmpbBttn.getIsVoided()) digitalWrite(tvLoadPin, HIGH); else @@ -103,7 +103,7 @@ void loop() { digitalWrite(tvLoadPin, (dmpbBttn.getIsVoided())?HIGH:LOW); /* The following commented out section is replaced by the single line of code following, use whichever code you're more comfortable with - // Keep in mind you'll also need to comment out the variables definition for the variables used in this block, if there are any + if (dmpbBttn.getIsEnabled()()) digitalWrite(dmpbIsDisabledPin, HIGH); else @@ -148,5 +148,4 @@ void Error_Handler(){ return; } - //===============================>> User Functions Implementations END diff --git a/DevelopmentDocs/ExamplesToRefactor/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino b/examples/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino similarity index 93% rename from DevelopmentDocs/ExamplesToRefactor/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino rename to examples/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino index 032b747..883fae7 100644 --- a/DevelopmentDocs/ExamplesToRefactor/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino +++ b/examples/10_HntdTmLtchMPBttn_1a/10_HntdTmLtchMPBttn_1a.ino @@ -47,6 +47,11 @@ const uint8_t pltLoadPin{GPIO_NUM_17}; HntdTmLtchMPBttn dmpbBttn (dmpbSwitchPin, 4000, 25, true, true, 20, 50); void setup() { + /* + ! NOTE: The following line ensures that the provided standard "Arduino loopTask" priority is set to a convenient level for the example purpose. + */ + vTaskPrioritySet(NULL, configTIMER_TASK_PRIORITY); + pinMode(dmpbLoadPin, OUTPUT); pinMode(wrnngLoadPin, OUTPUT); pinMode(pltLoadPin, OUTPUT); diff --git a/examples/10_HntdTmLtchMPBttn_1b/10_HntdTmLtchMPBttn_1b.ino b/examples/10_HntdTmLtchMPBttn_1b/10_HntdTmLtchMPBttn_1b.ino new file mode 100644 index 0000000..cd639bc --- /dev/null +++ b/examples/10_HntdTmLtchMPBttn_1b/10_HntdTmLtchMPBttn_1b.ino @@ -0,0 +1,130 @@ +/** + ****************************************************************************** + * @file : 10_HntdTmLtchMPBttn_1b.ino + * @brief : Example for the ButtonToSwitch_ESP32 library HntdTmLtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a HntdTmLtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * + * ### This example doesn't create extra Tasks: + * ### This example creates a software timer + * + * This simple example instantiates the TmLtchMPBttn object in the setup(), + * and uses the default `loop ()` (loop() is the loopTask() disguised + * in the Ardu-ESP), in it and checks it's attribute flags locally through the + * getters methods. + * + * When a change in the object's outputs attribute flags values is detected, it + * manages the loads and resources that the switch turns On and Off, in this + * example case are the output of some GPIO pins. + * + * A software timer is created so that it periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when disabled. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 25/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); +//===============================>> User Functions Prototypes END + +const uint8_t dmpbSwitchPin{GPIO_NUM_25}; +const uint8_t dmpbLoadPin{GPIO_NUM_21}; +const uint8_t wrnngLoadPin{GPIO_NUM_19}; +const uint8_t pltLoadPin{GPIO_NUM_17}; +const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + +TimerHandle_t enableSwpTmrHndl{NULL}; +BaseType_t tmrModRslt; + +HntdTmLtchMPBttn dmpbBttn (dmpbSwitchPin, 4000, 25, true, true, 20, 50); +LtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + +void setup() { + pinMode(dmpbLoadPin, OUTPUT); + pinMode(wrnngLoadPin, OUTPUT); + pinMode(pltLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 15000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL){ + tmrModRslt = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + } + if(tmrModRslt == pdFAIL){ + Error_Handler(); + } + + dmpbBttn.setIsOnDisabled(false); + dmpbBttn.setKeepPilot(true); + dmpbBttn.begin(20); +} + +void loop() { + if(dmpbBttn.getOutputsChange()){ + digitalWrite(dmpbLoadPin, (dmpbBttn.getIsOn())?HIGH:LOW); + digitalWrite(wrnngLoadPin, (dmpbBttn.getWrnngOn())?HIGH:LOW); + digitalWrite(pltLoadPin, (dmpbBttn.getPilotOn())?HIGH:LOW); + digitalWrite(dmpbIsDisabledPin, (dmpbBttn.getIsEnabled())?LOW:HIGH); + + dmpbBttn.setOutputsChange(false); + } +} + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations BEGIN + +//===============================>> User Functions Implementations BEGIN +/** + * @brief Error Handling function + * + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/10_HntdTmLtchMPBttn_1c/10_HntdTmLtchMPBttn_1c.ino b/examples/10_HntdTmLtchMPBttn_1c/10_HntdTmLtchMPBttn_1c.ino new file mode 100644 index 0000000..ffe8ec8 --- /dev/null +++ b/examples/10_HntdTmLtchMPBttn_1c/10_HntdTmLtchMPBttn_1c.ino @@ -0,0 +1,199 @@ +/** + ****************************************************************************** + * @file : 10_HntdTmLtchMPBttn_1c.ino + * @brief : Example for the ButtonToSwitch_ESP32 library HntdTmLtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a HntdTmLtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * + * ### This example creates two Tasks and deletes the default `loopTask` task + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the HntdTmLtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. That second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 25/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); // This task is deleted as it's no longer needed +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + HntdTmLtchMPBttn dmpbBttn (dmpbSwitchPin, 4000, 25, true, true, 20, 50); + LtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 10000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setIsOnDisabled(false); + dmpbBttn.setKeepPilot(true); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t wrnngLoadPin{GPIO_NUM_19}; + const uint8_t pltLoadPin{GPIO_NUM_17}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(wrnngLoadPin, OUTPUT); + pinMode(pltLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + digitalWrite(dmpbLoadPin, (mpbCurStateDcdd.isOn)?HIGH:LOW); + digitalWrite(wrnngLoadPin, (mpbCurStateDcdd.wrnngOn)?HIGH:LOW); + digitalWrite(pltLoadPin, (mpbCurStateDcdd.pilotOn)?HIGH:LOW); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/10_HntdTmLtchMPBttn_1d/10_HntdTmLtchMPBttn_1d.ino b/examples/10_HntdTmLtchMPBttn_1d/10_HntdTmLtchMPBttn_1d.ino new file mode 100644 index 0000000..dd876d3 --- /dev/null +++ b/examples/10_HntdTmLtchMPBttn_1d/10_HntdTmLtchMPBttn_1d.ino @@ -0,0 +1,245 @@ +/** + ****************************************************************************** + * @file : 10_HntdTmLtchMPBttn_1d.ino + * @brief : Example for the ButtonToSwitch_ESP32 library HntdTmLtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a HntdTmLtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * - 1 led with it's corresponding resistor between GND and dmpbTskWhlOnPin + * + * ### This example creates three tasks and deletes the default `loopTask` task + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the HntdTmLtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. That second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * - The third task is created, started and blocked, like the second, it's + * purpose is to execute while the MPB is in "isOn state". + * Please read the library documentation regarding the consequences of executing + * a task that is resumed and paused externally and without previous notification + * to let the task to be paused in an orderly manner!! + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 16/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +void dmpsActWhlOnTsk(void *pvParameters); +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +TaskHandle_t dmpsActWhlOnTskHndl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + HntdTmLtchMPBttn dmpbBttn (dmpbSwitchPin, 4000, 25, true, true, 20, 50); + LtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the task to resume every time the the MPB enters the On state and blocks when enters the Off state + xReturned = xTaskCreatePinnedToCore( + dmpsActWhlOnTsk, //Callback function/task to be called + "ExecWhileOnTask", //Name of the task + 1024, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsActWhlOnTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + vTaskSuspend(dmpsActWhlOnTskHndl); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 15000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setIsOnDisabled(true); + dmpbBttn.setKeepPilot(true); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.setTaskWhileOn(dmpsActWhlOnTskHndl); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t wrnngLoadPin{GPIO_NUM_19}; + const uint8_t pltLoadPin{GPIO_NUM_17}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(wrnngLoadPin, OUTPUT); + pinMode(pltLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + digitalWrite(dmpbLoadPin, (mpbCurStateDcdd.isOn)?HIGH:LOW); + digitalWrite(wrnngLoadPin, (mpbCurStateDcdd.wrnngOn)?HIGH:LOW); + digitalWrite(pltLoadPin, (mpbCurStateDcdd.pilotOn)?HIGH:LOW); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} + +void dmpsActWhlOnTsk(void *pvParameters){ + const uint8_t dmpbTskWhlOnPin{GPIO_NUM_16}; + + pinMode(dmpbTskWhlOnPin, OUTPUT); + + const unsigned long int swapTimeMs{500}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + unsigned long int elapTime{0}; + bool blinkOn {false}; + + strtTime = xTaskGetTickCount() / portTICK_RATE_MS; + for(;;){ + curTime = (xTaskGetTickCount() / portTICK_RATE_MS); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbTskWhlOnPin, blinkOn?HIGH:LOW); + strtTime = curTime; + } + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/10_HntdTmLtchMPBttn_1e/10_HntdTmLtchMPBttn_1e.ino b/examples/10_HntdTmLtchMPBttn_1e/10_HntdTmLtchMPBttn_1e.ino new file mode 100644 index 0000000..75390b6 --- /dev/null +++ b/examples/10_HntdTmLtchMPBttn_1e/10_HntdTmLtchMPBttn_1e.ino @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file : 10_HntdTmLtchMPBttn_1e.ino + * @brief : Example for the ButtonToSwitch_ESP32 library HntdTmLtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a HntdTmLtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * - 1 led with it's corresponding resistor between GND and dmpbTskWhlOnPin + * - 1 led with it's corresponding resistor between GND and dmpbFnWhnTrnOnOffPin + * + * ### This example creates three tasks and deletes the default `loopTask` task + * ### This example created two dedicated functions + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the HntdTmLtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. The second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * - The third task is created, started and blocked, like the second, it's + * purpose is to execute while the MPB is in "isOn state". + * Please read the library documentation regarding the consequences of executing + * a task that is resumed and paused externally and without previous notification + * to let the task to be paused in an orderly manner!! + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * - The first functions is to be executed when the MPB enters the "isOn state", please refer to the + * **setFnWhnTrnOnPtr()** method for details. + * + * - The second functions is to be executed when the MPB enters the "isOff state", please refer to the + * **setFnWhnTrnOffPtr()** method for details. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 25/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +const uint8_t dmpbFnWhnTrnOnOffPin{GPIO_NUM_4}; + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +void dmpsActWhlOnTsk(void *pvParameters); +void fnExecTrnOn(); +void fnExecTrnOff(); + +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +TaskHandle_t dmpsActWhlOnTskHndl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + pinMode(dmpbFnWhnTrnOnOffPin, OUTPUT); + + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + HntdTmLtchMPBttn dmpbBttn (dmpbSwitchPin, 4000, 25, true, true, 20, 50); + LtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the task to resume every time the the MPB enters the On state and blocks when enters the Off state + xReturned = xTaskCreatePinnedToCore( + dmpsActWhlOnTsk, //Callback function/task to be called + "ExecWhileOnTask", //Name of the task + 1024, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsActWhlOnTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + vTaskSuspend(dmpsActWhlOnTskHndl); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 15000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setIsOnDisabled(true); + dmpbBttn.setKeepPilot(true); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.setTaskWhileOn(dmpsActWhlOnTskHndl); + dmpbBttn.setFnWhnTrnOnPtr(&fnExecTrnOn); + dmpbBttn.setFnWhnTrnOffPtr(&fnExecTrnOff); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t wrnngLoadPin{GPIO_NUM_19}; + const uint8_t pltLoadPin{GPIO_NUM_17}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(wrnngLoadPin, OUTPUT); + pinMode(pltLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + digitalWrite(dmpbLoadPin, (mpbCurStateDcdd.isOn)?HIGH:LOW); + digitalWrite(wrnngLoadPin, (mpbCurStateDcdd.wrnngOn)?HIGH:LOW); + digitalWrite(pltLoadPin, (mpbCurStateDcdd.pilotOn)?HIGH:LOW); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} + +void dmpsActWhlOnTsk(void *pvParameters){ + const uint8_t dmpbTskWhlOnPin{GPIO_NUM_16}; + + pinMode(dmpbTskWhlOnPin, OUTPUT); + + const unsigned long int swapTimeMs{500}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + unsigned long int elapTime{0}; + bool blinkOn {false}; + + strtTime = xTaskGetTickCount() / portTICK_RATE_MS; + for(;;){ + curTime = (xTaskGetTickCount() / portTICK_RATE_MS); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbTskWhlOnPin, blinkOn?HIGH:LOW); + strtTime = curTime; + } + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +void fnExecTrnOn(){ + /*If the execution of the function resets the MCU the reason might be the + long execution time the function is taking, in that case delete the following + code inside the function and uncomment the last now commented line, the same for the + fnExecTrnOff() + */ + const unsigned long int swapTimeMs{100000}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + bool blinkOn {false}; + int blinks{0}; + + strtTime = micros(); + while (blinks < 2){ + curTime = micros(); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbFnWhnTrnOnOffPin, blinkOn?HIGH:LOW); + strtTime = curTime; + ++blinks; + } + } + + // digitalWrite(dmpbFnWhnTrnOnOffPin, HIGH); + + return; +} + +void fnExecTrnOff(){ + /*If the execution of the function resets the MCU the reason might be the + long execution time the function is taking, in that case delete the following + code inside the function and uncomment the last now commented line, the same for the + fnExecTrnOn() + */ + const unsigned long int swapTimeMs{50000}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + bool blinkOn {false}; + int blinks{0}; + + strtTime = micros(); + while (blinks < 4){ + curTime = micros(); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbFnWhnTrnOnOffPin, blinkOn?HIGH:LOW); + strtTime = curTime; + ++blinks; + } + } + + // digitalWrite(dmpbFnWhnTrnOnOffPin, LOW); + + return; +} + +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/11_SldrDALtchMPBttn_1b/11_SldrDALtchMPBttn_1b.ino b/examples/11_SldrDALtchMPBttn_1b/11_SldrDALtchMPBttn_1b.ino index 40cfdf8..e771945 100644 --- a/examples/11_SldrDALtchMPBttn_1b/11_SldrDALtchMPBttn_1b.ino +++ b/examples/11_SldrDALtchMPBttn_1b/11_SldrDALtchMPBttn_1b.ino @@ -9,7 +9,6 @@ * The example instantiates a SldrDALtchMPBttn object using: * - 1 push button between GND and dmpbSwitchPin * - 1 led with it's corresponding resistor between GND and dmpbLoadPin - * - 1 led with it's corresponding resistor between GND and dmpbLoadPin * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin * * ### This example doesn't create extra Tasks: @@ -82,6 +81,10 @@ void setup() { dmpbBttnPtr, swpEnableCb ); + if (enableSwpTmrHndl != NULL) + tmrModRslt = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(tmrModRslt == pdFAIL) + Error_Handler(); dmpbBttn.setOtptValMin(255); // Set minimum value to 10% of the total range dmpbBttn.setOtptValMax(2550); // Set the maximum value to 100% of the total range @@ -92,11 +95,6 @@ void setup() { dmpbBttn.setScndModActvDly(2000); dmpbBttn.setIsOnDisabled(false); dmpbBttn.begin(5); - - if (enableSwpTmrHndl != NULL) - tmrModRslt = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); - if(tmrModRslt == pdFAIL) - Error_Handler(); } void loop() { diff --git a/examples/11_SldrDALtchMPBttn_1c/11_SldrDALtchMPBttn_1c.ino b/examples/11_SldrDALtchMPBttn_1c/11_SldrDALtchMPBttn_1c.ino new file mode 100644 index 0000000..b5e41c7 --- /dev/null +++ b/examples/11_SldrDALtchMPBttn_1c/11_SldrDALtchMPBttn_1c.ino @@ -0,0 +1,199 @@ +/** + ****************************************************************************** + * @file : 11_SldrDALtchMPBttn_1c.ino + * @brief : Example for the ButtonToSwitch_ESP32 library SldrDALtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a SldrDALtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * + * ### This example creates two Tasks and deletes the default `loopTask` task + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the SldrDALtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. That second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 23/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); // This task is deleted as it's no longer needed +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + SldrDALtchMPBttn dmpbBttn(dmpbSwitchPin, true, true, 50, 100, 1280); + DblActnLtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 10000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setOtptValMin(255); // Set minimum value to 10% of the total range + dmpbBttn.setOtptValMax(2550); // Set the maximum value to 100% of the total range + dmpbBttn.setSwpDirOnEnd(false); // This sets the SldrDALtchMPBttn dimmer NOT to change the "dimming direction" when reaching the set minimum and maximum values + dmpbBttn.setSwpDirOnPrss(true); // This sets the SldrDALtchMPBttn dimmer to change the "dimming direction" every time the MPB is pressed to enter the Secondary behavior + dmpbBttn.setSldrDirUp(); // This sets the dimming direction to start incrementing its value, BUT as the setSwpDirOnPrss() indicates it must change direction as it is pressed, it will start changing directions to Down, and then start the changing values process, si the first time it will start dimming off the led brightness + dmpbBttn.setOtptSldrStpSize(1); + dmpbBttn.setScndModActvDly(2000); + dmpbBttn.setIsOnDisabled(false); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + analogWrite(dmpbLoadPin, mpbCurStateDcdd.isOn?(mpbCurStateDcdd.otptCurVal/10):0); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/11_SldrDALtchMPBttn_1d/11_SldrDALtchMPBttn_1d.ino b/examples/11_SldrDALtchMPBttn_1d/11_SldrDALtchMPBttn_1d.ino new file mode 100644 index 0000000..3976989 --- /dev/null +++ b/examples/11_SldrDALtchMPBttn_1d/11_SldrDALtchMPBttn_1d.ino @@ -0,0 +1,245 @@ +/** + ****************************************************************************** + * @file : 11_SldrDALtchMPBttn_1d.ino + * @brief : Example for the ButtonToSwitch_ESP32 library SldrDALtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a SldrDALtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * - 1 led with it's corresponding resistor between GND and dmpbTskWhlOnPin + * + * ### This example creates three tasks and deletes the default `loopTask` task + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the SldrDALtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. That second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * - The third task is created, started and blocked, like the second, it's + * purpose is to execute while the MPB is in "isOn state". + * Please read the library documentation regarding the consequences of executing + * a task that is resumed and paused externally and without previous notification + * to let the task to be paused in an orderly manner!! + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 24/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +void dmpsActWhlOnTsk(void *pvParameters); +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +TaskHandle_t dmpsActWhlOnTskHndl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + SldrDALtchMPBttn dmpbBttn(dmpbSwitchPin, true, true, 50, 100, 1280); + DblActnLtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the task to resume every time the the MPB enters the On state and blocks when enters the Off state + xReturned = xTaskCreatePinnedToCore( + dmpsActWhlOnTsk, //Callback function/task to be called + "ExecWhileOnTask", //Name of the task + 1024, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsActWhlOnTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + vTaskSuspend(dmpsActWhlOnTskHndl); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 15000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setOtptValMin(255); // Set minimum value to 10% of the total range + dmpbBttn.setOtptValMax(2550); // Set the maximum value to 100% of the total range + dmpbBttn.setSwpDirOnEnd(false); // This sets the SldrDALtchMPBttn dimmer NOT to change the "dimming direction" when reaching the set minimum and maximum values + dmpbBttn.setSwpDirOnPrss(true); // This sets the SldrDALtchMPBttn dimmer to change the "dimming direction" every time the MPB is pressed to enter the Secondary behavior + dmpbBttn.setSldrDirUp(); // This sets the dimming direction to start incrementing its value, BUT as the setSwpDirOnPrss() indicates it must change direction as it is pressed, it will start changing directions to Down, and then start the changing values process, si the first time it will start dimming off the led brightness + dmpbBttn.setOtptSldrStpSize(1); + dmpbBttn.setScndModActvDly(2000); + dmpbBttn.setIsOnDisabled(true); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.setTaskWhileOn(dmpsActWhlOnTskHndl); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + analogWrite(dmpbLoadPin, mpbCurStateDcdd.isOn?(mpbCurStateDcdd.otptCurVal/10):0); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} + +void dmpsActWhlOnTsk(void *pvParameters){ + const uint8_t dmpbTskWhlOnPin{GPIO_NUM_16}; + + pinMode(dmpbTskWhlOnPin, OUTPUT); + + const unsigned long int swapTimeMs{500}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + unsigned long int elapTime{0}; + bool blinkOn {false}; + + strtTime = xTaskGetTickCount() / portTICK_RATE_MS; + for(;;){ + curTime = (xTaskGetTickCount() / portTICK_RATE_MS); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbTskWhlOnPin, blinkOn?HIGH:LOW); + strtTime = curTime; + } + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/11_SldrDALtchMPBttn_1e/11_SldrDALtchMPBttn_1e.ino b/examples/11_SldrDALtchMPBttn_1e/11_SldrDALtchMPBttn_1e.ino new file mode 100644 index 0000000..1e72559 --- /dev/null +++ b/examples/11_SldrDALtchMPBttn_1e/11_SldrDALtchMPBttn_1e.ino @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file : 11_SldrDALtchMPBttn_1e.ino + * @brief : Example for the ButtonToSwitch_ESP32 library SldrDALtchMPBttn class + * + * Framework: Arduino + * Platform: ESP32 + * + * The example instantiates a SldrDALtchMPBttn object using: + * - 1 push button between GND and dmpbSwitchPin + * - 1 led with it's corresponding resistor between GND and dmpbLoadPin + * - 1 led with it's corresponding resistor between GND and dmpbIsDisabledPin + * - 1 led with it's corresponding resistor between GND and dmpbTskWhlOnPin + * - 1 led with it's corresponding resistor between GND and dmpbFnWhnTrnOnOffPin + * + * ### This example creates three tasks and deletes the default `loopTask` task + * ### This example created two dedicated functions + * ### This example creates a software timer + * + * The "Main control task" is created in the regular setup() and then that + * arduino standard `loopTask` is deleted in the loop() + * + * In the main control task the SldrDALtchMPBttn object is instantiated and configured + * as usual, including a task to be unblocked when the isOn state changes by using + * `dmpbBttn.setTaskToNotify(dmpsOutputTskHdl)`. The second task is also created + * in the main control task, as is created the software timer that controls the + * isEnabled state. + * + * When a change in the object's outputs attribute flags values is detected, the + * task that manages the loads and resources that the switch turns On and Off is + * unblocked, with the provision of the MPB state passed as a 32-bits argument. + * The task then takes care of updating the GPIO outputs. + * + * - The third task is created, started and blocked, like the second, it's + * purpose is to execute while the MPB is in "isOn state". + * Please read the library documentation regarding the consequences of executing + * a task that is resumed and paused externally and without previous notification + * to let the task to be paused in an orderly manner!! + * + * The software timer created periodically toggles the isEnabled attribute flag + * value, showing the behavior of the instantiated object when enabled and when + * disabled. + * + * - The first functions is to be executed when the MPB enters the "isOn state", please refer to the + * **setFnWhnTrnOnPtr()** method for details. + * + * - The second functions is to be executed when the MPB enters the "isOff state", please refer to the + * **setFnWhnTrnOffPtr()** method for details. + * + * @author : Gabriel D. Goldman + * + * @date : 01/08/2023 First release + * 23/09/2024 Last update + * + ****************************************************************************** + * @attention This file is part of the examples folder for the ButtonToSwitch_ESP32 + * library. All files needed are provided as part of the source code for the library. + * + * Released into the public domain in accordance with "GPL-3.0-or-later" license terms. + * + ****************************************************************************** + */ +#include +#include + +const uint8_t dmpbFnWhnTrnOnOffPin{GPIO_NUM_4}; + +//===============================>> User Functions Prototypes BEGIN +void swpEnableCb(TimerHandle_t pvParam); +void Error_Handler(); + +void mainCtrlTsk(void *pvParameters); +void dmpsOutputTsk(void *pvParameters); +void dmpsActWhlOnTsk(void *pvParameters); +void fnExecTrnOn(); +void fnExecTrnOff(); + +//===============================>> User Functions Prototypes END + +//===============================>> User Tasks & Timers related declarations BEGIN +TaskHandle_t mainCtrlTskHndl {NULL}; +TaskHandle_t dmpsOutputTskHdl; +TaskHandle_t dmpsActWhlOnTskHndl; +BaseType_t xReturned; + +TimerHandle_t enableSwpTmrHndl{NULL}; +//===============================>> User Tasks & Timers related declarations END + +void setup() { + pinMode(dmpbFnWhnTrnOnOffPin, OUTPUT); + + //Create the Main control task to keep, the MPBs outputs updated and set the Callback task function + xReturned = xTaskCreatePinnedToCore( + mainCtrlTsk, //Callback function/task to be called + "MainControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &mainCtrlTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); +} + +void loop() { + vTaskDelete(NULL); +} + +//===============================>> User Tasks Implementations BEGIN +void mainCtrlTsk(void *pvParameters){ + const uint8_t dmpbSwitchPin{GPIO_NUM_25}; + + SldrDALtchMPBttn dmpbBttn(dmpbSwitchPin, true, true, 50, 100, 1280); + DblActnLtchMPBttn* dmpbBttnPtr {&dmpbBttn}; + + //Create the task to keep the GPIO outputs updated to reflect the MPBs states + xReturned = xTaskCreatePinnedToCore( + dmpsOutputTsk, //Callback function/task to be called + "SwitchOutputsControlTask", //Name of the task + 1716, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsOutputTskHdl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + + //Create the task to resume every time the the MPB enters the On state and blocks when enters the Off state + xReturned = xTaskCreatePinnedToCore( + dmpsActWhlOnTsk, //Callback function/task to be called + "ExecWhileOnTask", //Name of the task + 1024, //Stack size (in bytes in ESP32, words in FreeRTOS), the minimum value is in the config file, for this is 768 bytes + NULL, //Pointer to the parameters for the function to work with + configTIMER_TASK_PRIORITY, //Priority level given to the task: use the same as the Software Timers priority level + &dmpsActWhlOnTskHndl, //Task handle + xPortGetCoreID() //Run in the App Core if it's a dual core mcu (ESP-FreeRTOS specific) + ); + if(xReturned != pdPASS) + Error_Handler(); + vTaskSuspend(dmpsActWhlOnTskHndl); + + //Create the timer to keep the isEnabled state of the MPB changing to see the effects over the MPBs behavior + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 15000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + if (enableSwpTmrHndl != NULL) + xReturned = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + if(xReturned == pdFAIL) + Error_Handler(); + + dmpbBttn.setOtptValMin(255); // Set minimum value to 10% of the total range + dmpbBttn.setOtptValMax(2550); // Set the maximum value to 100% of the total range + dmpbBttn.setSwpDirOnEnd(false); // This sets the SldrDALtchMPBttn dimmer NOT to change the "dimming direction" when reaching the set minimum and maximum values + dmpbBttn.setSwpDirOnPrss(true); // This sets the SldrDALtchMPBttn dimmer to change the "dimming direction" every time the MPB is pressed to enter the Secondary behavior + dmpbBttn.setSldrDirUp(); // This sets the dimming direction to start incrementing its value, BUT as the setSwpDirOnPrss() indicates it must change direction as it is pressed, it will start changing directions to Down, and then start the changing values process, si the first time it will start dimming off the led brightness + dmpbBttn.setOtptSldrStpSize(1); + dmpbBttn.setScndModActvDly(2000); + dmpbBttn.setIsOnDisabled(true); + dmpbBttn.setTaskToNotify(dmpsOutputTskHdl); + dmpbBttn.setTaskWhileOn(dmpsActWhlOnTskHndl); + dmpbBttn.setFnWhnTrnOnPtr(&fnExecTrnOn); + dmpbBttn.setFnWhnTrnOffPtr(&fnExecTrnOff); + dmpbBttn.begin(); + + for(;;){ + /* + Any code can be placed here to execute while the MPBs are monitored + by the timer, and any output change will be responded by the dmpsOutputTsk + */ + } +} + +void dmpsOutputTsk(void *pvParameters){ + const uint8_t dmpbLoadPin{GPIO_NUM_21}; + const uint8_t dmpbIsDisabledPin{GPIO_NUM_18}; + + pinMode(dmpbLoadPin, OUTPUT); + pinMode(dmpbIsDisabledPin, OUTPUT); + + uint32_t mpbSttsRcvd{0}; + MpbOtpts_t mpbCurStateDcdd; + + for(;;){ + xReturned = xTaskNotifyWait( + 0x00, //uint32_t ulBitsToClearOnEntry + 0xFFFFFFFF, //uint32_t ulBitsToClearOnExit, + &mpbSttsRcvd, // uint32_t *pulNotificationValue, + portMAX_DELAY//TickType_t xTicksToWait + ); + if (xReturned != pdPASS) + Error_Handler(); + + mpbCurStateDcdd = otptsSttsUnpkg(mpbSttsRcvd); + analogWrite(dmpbLoadPin, mpbCurStateDcdd.isOn?(mpbCurStateDcdd.otptCurVal/10):0); + digitalWrite(dmpbIsDisabledPin, (mpbCurStateDcdd.isEnabled)?LOW:HIGH); + } +} + +void dmpsActWhlOnTsk(void *pvParameters){ + const uint8_t dmpbTskWhlOnPin{GPIO_NUM_16}; + + pinMode(dmpbTskWhlOnPin, OUTPUT); + + const unsigned long int swapTimeMs{500}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + unsigned long int elapTime{0}; + bool blinkOn {false}; + + strtTime = xTaskGetTickCount() / portTICK_RATE_MS; + for(;;){ + curTime = (xTaskGetTickCount() / portTICK_RATE_MS); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbTskWhlOnPin, blinkOn?HIGH:LOW); + strtTime = curTime; + } + } +} +//===============================>> User Tasks Implementations END + +//===============================>> User Timers Implementations BEGIN +/** + * @brief Timer callback function + * + * @param pvParam The callback function argument. + * In this case is a pointer to the MPB object to be enabled and disabled periodically. + * It's a DbncdMPBttn* as enable() and disable() are dynamic polymorphic so they can be invoked through a base class pointer call. + */ +void swpEnableCb(TimerHandle_t pvParam){ + DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); + + if (dbncdMPBLocPtr->getIsEnabled()) + dbncdMPBLocPtr->disable(); + else + dbncdMPBLocPtr->enable(); + + return; +} +//===============================>> User Timers Implementations END + +//===============================>> User Functions Implementations BEGIN +void fnExecTrnOn(){ + /*If the execution of the function resets the MCU the reason might be the + long execution time the function is taking, in that case delete the following + code inside the function and uncomment the last now commented line, the same for the + fnExecTrnOff() + */ + const unsigned long int swapTimeMs{100000}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + bool blinkOn {false}; + int blinks{0}; + + strtTime = micros(); + while (blinks < 2){ + curTime = micros(); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbFnWhnTrnOnOffPin, blinkOn?HIGH:LOW); + strtTime = curTime; + ++blinks; + } + } + + // digitalWrite(dmpbFnWhnTrnOnOffPin, HIGH); + + return; +} + +void fnExecTrnOff(){ + /*If the execution of the function resets the MCU the reason might be the + long execution time the function is taking, in that case delete the following + code inside the function and uncomment the last now commented line, the same for the + fnExecTrnOn() + */ + const unsigned long int swapTimeMs{50000}; + unsigned long int strtTime{0}; + unsigned long int curTime{0}; + bool blinkOn {false}; + int blinks{0}; + + strtTime = micros(); + while (blinks < 4){ + curTime = micros(); + if ((curTime - strtTime) > swapTimeMs){ + blinkOn = !blinkOn; + digitalWrite(dmpbFnWhnTrnOnOffPin, blinkOn?HIGH:LOW); + strtTime = curTime; + ++blinks; + } + } + + // digitalWrite(dmpbFnWhnTrnOnOffPin, LOW); + + return; +} + +/** + * @brief Error Handling function + * + * Placeholder for a Error Handling function, in case of an error the execution + * will be trapped in this endless loop + */ +void Error_Handler(){ + for(;;) + { + } + + return; +} +//===============================>> User Functions Implementations END diff --git a/examples/12_DDlydDALtchMPBttn_1b/12_DDlydDALtchMPBttn_1b.ino b/examples/12_DDlydDALtchMPBttn_1b/12_DDlydDALtchMPBttn_1b.ino index 3cbac6f..0b19920 100644 --- a/examples/12_DDlydDALtchMPBttn_1b/12_DDlydDALtchMPBttn_1b.ino +++ b/examples/12_DDlydDALtchMPBttn_1b/12_DDlydDALtchMPBttn_1b.ino @@ -64,8 +64,24 @@ void setup() { pinMode(isOnScndryLoadPin, OUTPUT); pinMode(dmpbIsDisabledPin, OUTPUT); + enableSwpTmrHndl = xTimerCreate( + "isEnabledSwapTimer", + 10000, + pdTRUE, + dmpbBttnPtr, + swpEnableCb + ); + + dmpbBttn.setIsOnDisabled(true); dmpbBttn.setScndModActvDly(2000); dmpbBttn.begin(); + + if (enableSwpTmrHndl != NULL){ + tmrModRslt = xTimerStart(enableSwpTmrHndl, portMAX_DELAY); + } + if(tmrModRslt == pdFAIL){ + Error_Handler(); + } } void loop() { @@ -88,7 +104,6 @@ void loop() { */ void swpEnableCb(TimerHandle_t pvParam){ DbncdMPBttn* dbncdMPBLocPtr = (DbncdMPBttn*) pvTimerGetTimerID(pvParam); - // bool mpbttnIsEnbldStts{dbncdMPBLocPtr->getIsEnabled()}; if (dbncdMPBLocPtr->getIsEnabled()) dbncdMPBLocPtr->disable(); diff --git a/examples/13_SnglSrvcVdblMPBttn_1a/13_SnglSrvcVdblMPBttn_1a.ino b/examples/13_SnglSrvcVdblMPBttn_1a/13_SnglSrvcVdblMPBttn_1a.ino index 438ac73..e9bada9 100644 --- a/examples/13_SnglSrvcVdblMPBttn_1a/13_SnglSrvcVdblMPBttn_1a.ino +++ b/examples/13_SnglSrvcVdblMPBttn_1a/13_SnglSrvcVdblMPBttn_1a.ino @@ -12,12 +12,12 @@ * - 1 led with it's corresponding resistor between GND and tvlmpbLoadPin * - 1 led with it's corresponding resistor between GND and fnOnmpbLoadPin * - * ### This example doesn't create extra Tasks: + * ### This example doesn't create extra Tasks (by using the default `loopTask` Task): * - * This simple example instantiates the SnglSrvcVdblMPBttn object in the setup(), - * and uses the default "loop ()" (and yes, loop() is part of the loopTask() - * disguised in the Ardu-ESP), in it and checks it's attribute flags locally - * through the getters methods. + * This simple example instantiates the DbncdMPBttn object in the setup(), + * and uses the default `loop ()` (loop() is the loopTask() disguised + * in the Ardu-ESP), in it and checks it's attribute flags locally through the + * getters methods. * * When a change in the object's outputs attribute flags values is detected, it * manages the loads and resources that the switch turns On and Off, in this diff --git a/library.json b/library.json index dcd718b..66fbb41 100644 --- a/library.json +++ b/library.json @@ -1,6 +1,6 @@ { "name": "ButtonToSwitch_ESP32", - "version": "4.0.4", + "version": "4.1.0", "description": "This Arduino-Esp32 library implements all kind of switches out of simple buttons (Momentary Push Buttons or MPBs). Add any kind of switch to a project by using simple MPBs and this library to simulate the internal mechanism of each of them, starting from a Debounced Push Button and extending to Delayed Start Push Button, Toggle (Latched) Push Button, Time Latched Push Button, External Release Latched Push Button, Staircase Timed Button, On/Off/Dimmer, and more..." , "keywords": "momentary, push, button, debounce, switch, latch, toggle, release, warning, security, staircase, timer, slider, dimmer", diff --git a/library.properties b/library.properties index 685c42d..675e369 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=ButtonToSwitch_ESP32 -version=4.0.4 +version=4.1.0 author=Gabriel D. Goldman maintainer=Gabriel D. Goldman sentence=Implement simple to complex switches out of simple buttons, this library with an easy consistent API will take care of debouncing, deglitching, toggle on-off, keep activation times in a completely unnatended manner. diff --git a/src/ButtonToSwitch_ESP32.cpp b/src/ButtonToSwitch_ESP32.cpp index 1206fb2..b6de379 100644 --- a/src/ButtonToSwitch_ESP32.cpp +++ b/src/ButtonToSwitch_ESP32.cpp @@ -12,7 +12,7 @@ * behavior of standard electromechanical switches**. * * @author : Gabriel D. Goldman - * @version v4.0.4 + * @version v4.1.0 * @date : Created on: 06/11/2023 * : Last modification: 15/09/2024 * @copyright GPL-3.0 license @@ -64,7 +64,7 @@ DbncdMPBttn::DbncdMPBttn(const uint8_t &mpbttnPin, const bool &pulledUp, const b DbncdMPBttn::~DbncdMPBttn(){ - end(); // Stops the software timer associated to the object, deletes it's entry and nullyfies the handle to it befor destructing the object + end(); // Stops the software timer associated to the object, deletes it's entry and nullyfies the handle to it before destructing the object } bool DbncdMPBttn::begin(const unsigned long int &pollDelayMs) { @@ -96,18 +96,24 @@ void DbncdMPBttn::clrStatus(bool clrIsOn){ /*To Resume operations after a pause() without risking generating false "Valid presses" and "On" situations, several attributes must be resetted to "Start" values. The only important value not reseted is the _mpbFdaState, to do it call resetFda() INSTEAD of this method*/ - - taskENTER_CRITICAL(&mux); //ESP-IDF FreeRTOS modifies the taskENTER_CRITICAL of vanilla FreeRTOS to require a mutex as argument to avoid core to core interruptions + + taskENTER_CRITICAL(&mux); //ESP-IDF FreeRTOS taskENTER_CRITICAL requires a mutex to avoid core to core interruptions _isPressed = false; _validPressPend = false; _validReleasePend = false; _dbncTimerStrt = 0; _dbncRlsTimerStrt = 0; + // _validDisablePend = false; + // _validEnablePend = false; + // _isEnabled = true; if(clrIsOn) if(_isOn) _turnOff(); + // if(!(getOutputsChange())) + // setOutputsChange(true); taskEXIT_CRITICAL(&mux); - + + return; } @@ -124,7 +130,7 @@ void DbncdMPBttn::disable(){ void DbncdMPBttn::enable(){ - return _setIsEnabled(true); + return _setIsEnabled(true); } bool DbncdMPBttn::end(){ @@ -147,7 +153,7 @@ bool DbncdMPBttn::end(){ const unsigned long int DbncdMPBttn::getCurDbncTime() const{ - return _dbncTimeTempSett; + return _dbncTimeTempSett; } fncPtrType DbncdMPBttn::getFnWhnTrnOff(){ @@ -162,7 +168,7 @@ fncPtrType DbncdMPBttn::getFnWhnTrnOn(){ const bool DbncdMPBttn::getIsEnabled() const{ - return _isEnabled; + return _isEnabled; } const bool DbncdMPBttn::getIsOn() const { @@ -172,12 +178,12 @@ const bool DbncdMPBttn::getIsOn() const { const bool DbncdMPBttn::getIsOnDisabled() const{ - return _isOnDisabled; + return _isOnDisabled; } const bool DbncdMPBttn::getIsPressed() const { - return _isPressed; + return _isPressed; } const uint32_t DbncdMPBttn::getOtptsSttsPkgd(){ @@ -186,7 +192,7 @@ const uint32_t DbncdMPBttn::getOtptsSttsPkgd(){ } const bool DbncdMPBttn::getOutputsChange() const{ - + return _outputsChange; } @@ -195,9 +201,15 @@ unsigned long int DbncdMPBttn::getStrtDelay(){ return _strtDelay; } -const TaskHandle_t DbncdMPBttn::getTaskToNotify() const{ - - return _taskToNotifyHndl; +const bool DbncdMPBttn::getOutputsChngTskTrggr() const{ + + return _outputsChngTskTrggr; +} + +const TaskHandle_t DbncdMPBttn::getTaskToNotify() const +{ + + return _taskToNotifyHndl; } const TaskHandle_t DbncdMPBttn::getTaskWhileOn(){ @@ -247,23 +259,32 @@ void DbncdMPBttn::mpbPollCallback(TimerHandle_t mpbTmrCbArg){ // Flags/Triggers calculation & update mpbObj->updValidPressesStatus(); } - // State machine status update + /* + State machine status update. The computed state change might generate: + - Attribute flags value changes. + - Attribute flags related function executions. + - Attribute flags related tasks Resume/Pause + */ mpbObj->updFdaState(); taskEXIT_CRITICAL(&mux); + /* + The change of values of attribute flags not related to the State machine status changes, that are generated by the developer using the provided setters have no associated specific tasks to resume nor functions to execute. + The main reason not to provide those facilities is that the developer that employs the setter must decide wether to include other mechanisms in the implementation. + But when those setters DO generate a value change in the outputs of the MPB, that affects the outputsChange attribute flag. In those cases using the getters for those attribute flag might be used, as the TaskToNotify mechanism. + */ //Outputs update, function and tasks executions based on outputs changed generated by the State Machine - if (mpbObj->getOutputsChange()){ //Output changes might happen as part of the updFdaState() execution + if (mpbObj->getOutputsChngTskTrggr()){ //Output changes might happen as part of the updFdaState() execution if(mpbObj->getTaskToNotify() != NULL){ xReturned = xTaskNotify( mpbObj->getTaskToNotify(), //TaskHandle_t of the task receiving notification static_cast(mpbObj->getOtptsSttsPkgd()), eSetValueWithOverwrite //In this specific case using eSetBits is also a valid option ); - if (xReturned != pdPASS){ + if (xReturned != pdPASS) errorFlag = pdTRUE; - } - mpbObj->setOutputsChange(false); //If the outputsChange triggers a task to treat it, here's the flag reset, in other cases the mechanism reading the chganges must take care of the flag status } + mpbObj->resetOutputsChngTskTrggr(); } return; @@ -314,7 +335,7 @@ void DbncdMPBttn::resetFda(){ portMUX_TYPE mux = portMUX_INITIALIZER_UNLOCKED; taskENTER_CRITICAL(&mux); - clrStatus(); + clrStatus(true); setSttChng(); _mpbFdaState = stOffNotVPP; taskEXIT_CRITICAL(&mux); @@ -322,6 +343,12 @@ void DbncdMPBttn::resetFda(){ return; } +void DbncdMPBttn::resetOutputsChngTskTrggr(){ + _outputsChngTskTrggr = false; + + return; +} + bool DbncdMPBttn::resume(){ bool result {false}; BaseType_t tmrModResult {pdFAIL}; @@ -381,12 +408,12 @@ void DbncdMPBttn::_setIsEnabled(const bool &newEnabledValue){ taskENTER_CRITICAL(&mux); if(_isEnabled != newEnabledValue){ - if (newEnabledValue){ //Change to Enabled = true + if (newEnabledValue){ //Change to isEnabled = true (i.e. Enabled) _validEnablePend = true; if(_validDisablePend) _validDisablePend = false; } - else{ //Change to Enabled = false (i.e. Disabled) + else{ //Change to isEnabled = false (i.e. Disabled) _validDisablePend = true; if(_validEnablePend) _validEnablePend = false; @@ -421,8 +448,23 @@ void DbncdMPBttn::setOutputsChange(bool newOutputsChange){ portMUX_TYPE mux portMUX_INITIALIZER_UNLOCKED; taskENTER_CRITICAL(&mux); + /* if(_outputsChange != newOutputsChange) _outputsChange = newOutputsChange; + */ + if(newOutputsChange) + ++_outputsChangeCnt; + else + if(_outputsChangeCnt) + --_outputsChangeCnt; + + if(_outputsChangeCnt) + _outputsChange = true; + else + _outputsChange = false; + + if((_taskToNotifyHndl != NULL) && newOutputsChange) + _outputsChngTskTrggr = true; taskEXIT_CRITICAL(&mux); return; @@ -449,9 +491,8 @@ void DbncdMPBttn::setTaskToNotify(const TaskHandle_t &newTaskHandle){ } } } - if (newTaskHandle != NULL){ + if (newTaskHandle != NULL) _taskToNotifyHndl = newTaskHandle; - } } taskEXIT_CRITICAL(&mux); @@ -473,9 +514,8 @@ void DbncdMPBttn::setTaskWhileOn(const TaskHandle_t &newTaskHandle){ } } } - if (newTaskHandle != NULL){ + if (newTaskHandle != NULL) _taskWhileOnHndl = newTaskHandle; - } } taskEXIT_CRITICAL(&mux); @@ -489,22 +529,20 @@ void DbncdMPBttn::_turnOff(){ //---------------->> Tasks related actions if(_taskWhileOnHndl != NULL){ eTaskState taskWhileOnStts{eTaskGetState(_taskWhileOnHndl)}; - if (taskWhileOnStts != eSuspended){ - if(taskWhileOnStts != eDeleted){ + if (taskWhileOnStts != eSuspended) + if(taskWhileOnStts != eDeleted) vTaskSuspend(_taskWhileOnHndl); - } - } } //---------------->> Functions related actions if(_fnWhnTrnOff != nullptr){ _fnWhnTrnOff(); } - } +//! } //---------------->> Flags related actions - if(_isOn){ +//! if(_isOn){ taskENTER_CRITICAL(&mux); _isOn = false; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -518,22 +556,20 @@ void DbncdMPBttn::_turnOn(){ //---------------->> Tasks related actions if(_taskWhileOnHndl != NULL){ eTaskState taskWhileOnStts{eTaskGetState(_taskWhileOnHndl)}; - if(taskWhileOnStts != eDeleted){ - if (taskWhileOnStts == eSuspended){ + if(taskWhileOnStts != eDeleted) + if (taskWhileOnStts == eSuspended) vTaskResume(_taskWhileOnHndl); - } - } } //---------------->> Functions related actions if(_fnWhnTrnOn != nullptr){ _fnWhnTrnOn(); } - } +//! } //---------------->> Flags related actions - if(!_isOn){ +//! if(!_isOn){ taskENTER_CRITICAL(&mux); _isOn = true; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -575,7 +611,7 @@ void DbncdMPBttn::updFdaState(){ setSttChng(); //Out: >>---------------------------------->> if(_sttChng){} // Execute this code only ONCE, when exiting this state -// break; +//! break; // This state makes no conditional next state setting, and it's next state is next in line, let it cascade case stOn: //In: >>---------------------------------->> @@ -634,9 +670,9 @@ void DbncdMPBttn::updFdaState(){ setSttChng(); } //Out: >>---------------------------------->> - if(_sttChng){ // Execute this code only ONCE, when exiting this state -// clrStatus(true); - } + if(_sttChng){ + clrStatus(true); + } // Execute this code only ONCE, when exiting this state break; default: @@ -823,6 +859,7 @@ const bool LtchMPBttn::getUnlatchRlsPend() const{ void LtchMPBttn::mpbPollCallback(TimerHandle_t mpbTmrCbArg){ LtchMPBttn* mpbObj = (LtchMPBttn*)pvTimerGetTimerID(mpbTmrCbArg); portMUX_TYPE mux portMUX_INITIALIZER_UNLOCKED; + BaseType_t xReturned; taskENTER_CRITICAL(&mux); if(mpbObj->getIsEnabled()){ @@ -837,15 +874,17 @@ void LtchMPBttn::mpbPollCallback(TimerHandle_t mpbTmrCbArg){ taskEXIT_CRITICAL(&mux); //Outputs update, function and tasks executions based on outputs changed generated by the State Machine - if (mpbObj->getOutputsChange()){ + if (mpbObj->getOutputsChngTskTrggr()){ if(mpbObj->getTaskToNotify() != NULL){ - xTaskNotify( + xReturned = xTaskNotify( mpbObj->getTaskToNotify(), //TaskHandle_t of the task receiving notification static_cast(mpbObj->getOtptsSttsPkgd()), eSetValueWithOverwrite ); - mpbObj->setOutputsChange(false); + if (xReturned != pdPASS) + errorFlag = pdTRUE; } + mpbObj->resetOutputsChngTskTrggr(); } return; @@ -885,8 +924,8 @@ void LtchMPBttn::setUnlatchRlsPend(const bool &newVal){ } bool LtchMPBttn::unlatch(){ - bool result{false}; portMUX_TYPE mux portMUX_INITIALIZER_UNLOCKED; + bool result{false}; taskENTER_CRITICAL(&mux); if(_isLatched){ @@ -930,9 +969,8 @@ void LtchMPBttn::updFdaState(){ //In: >>---------------------------------->> if(_sttChng){clrSttChng();} // Execute this code only ONCE, when entering this state //Do: >>---------------------------------->> - if(!_isOn){ + if(!_isOn) _turnOn(); - } _validPressPend = false; _mpbFdaState = stOnNVRP; setSttChng(); @@ -940,7 +978,7 @@ void LtchMPBttn::updFdaState(){ if(_sttChng){ stOffVPP_Out(); //This function starts the latch timer here... to be considered if the MPB release must be the starting point Gaby } // Execute this code only ONCE, when exiting this state - break; +//! break; // This state makes no conditional next state setting, and it's next state is next in line, let it cascade case stOnNVRP: //In: >>---------------------------------->> @@ -955,7 +993,6 @@ void LtchMPBttn::updFdaState(){ _mpbFdaState = stDisabled; setSttChng(); //Set flag to execute exiting OUT code } - //Out: >>---------------------------------->> if(_sttChng){} // Execute this code only ONCE, when exiting this state break; @@ -971,7 +1008,7 @@ void LtchMPBttn::updFdaState(){ setSttChng(); //Out: >>---------------------------------->> if(_sttChng){} // Execute this code only ONCE, when exiting this state - break; +//! break; // This state makes no conditional next state setting, and it's next state is next in line, let it cascade case stLtchNVUP: //From this state on different unlatch sources might make sense //In: >>---------------------------------->> @@ -995,15 +1032,14 @@ void LtchMPBttn::updFdaState(){ if(_sttChng){clrSttChng();} // Execute this code only ONCE, when entering this state //Do: >>---------------------------------->> if(_trnOffASAP){ - if(_isOn){ + if(_isOn) _turnOff(); - } } _mpbFdaState = stOffVUP; setSttChng(); //Out: >>---------------------------------->> if(_sttChng){} // Execute this code only ONCE, when exiting this state - break; +//! break; // This state makes no conditional next state setting, and it's next state is next in line, let it cascade case stOffVUP: //In: >>---------------------------------->> @@ -1014,7 +1050,7 @@ void LtchMPBttn::updFdaState(){ setSttChng(); //Out: >>---------------------------------->> if(_sttChng){} // Execute this code only ONCE, when exiting this state - break; +//! break; // This state makes no conditional next state setting, and it's next state is next in line, let it cascade case stOffNVURP: //In: >>---------------------------------->> @@ -1034,9 +1070,8 @@ void LtchMPBttn::updFdaState(){ if(_sttChng){clrSttChng();} // Execute this code only ONCE, when entering this state //Do: >>---------------------------------->> _validUnlatchRlsPend = false; - if(_isOn){ + if(_isOn) _turnOff(); - } if(_isLatched) _isLatched = false; if(_validPressPend) @@ -1055,12 +1090,10 @@ void LtchMPBttn::updFdaState(){ //In: >>---------------------------------->> if(_sttChng){ if(_isOn != _isOnDisabled){ - if(_isOn){ + if(_isOn) _turnOff(); - } - else{ + else _turnOn(); - } } clrStatus(false); //Clears all flags and timers, _isOn value will not be affected stDisabled_In(); @@ -1531,7 +1564,7 @@ void HntdTmLtchMPBttn::_turnOffPilot(){ if(_pilotOn){ taskENTER_CRITICAL(&mux); _pilotOn = false; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -1553,7 +1586,7 @@ void HntdTmLtchMPBttn::_turnOffWrnng(){ if(_wrnngOn){ taskENTER_CRITICAL(&mux); _wrnngOn = false; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -1575,7 +1608,7 @@ void HntdTmLtchMPBttn::_turnOnPilot(){ if(!_pilotOn){ taskENTER_CRITICAL(&mux); _pilotOn = true; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -1597,7 +1630,7 @@ void HntdTmLtchMPBttn::_turnOnWrnng(){ if(!_wrnngOn){ taskENTER_CRITICAL(&mux); _wrnngOn = true; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -1921,7 +1954,7 @@ void DblActnLtchMPBttn::_turnOffScndry(){ //---------------->> Flags related actions taskENTER_CRITICAL(&mux); _isOnScndry = false; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -1946,7 +1979,7 @@ void DblActnLtchMPBttn::_turnOnScndry(){ //---------------->> Flags related actions taskENTER_CRITICAL(&mux); _isOnScndry = true; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -2497,7 +2530,7 @@ void SldrDALtchMPBttn::stOnScndMod_Do(){ } setOutputsChange(true); } - if(_outputsChange){ + if(getOutputsChange()){ if(_otptCurVal == _otptValMax){ if(_autoSwpDirOnEnd == true){ _curSldrDirUp = false; @@ -2518,7 +2551,7 @@ void SldrDALtchMPBttn::stOnScndMod_Do(){ } setOutputsChange(true); } - if(_outputsChange){ + if(getOutputsChange()){ if(_otptCurVal == _otptValMin){ if(_autoSwpDirOnEnd == true){ _curSldrDirUp = true; @@ -2745,7 +2778,7 @@ void VdblMPBttn::_turnOffVdd(){ if(_isVoided){ taskENTER_CRITICAL(&mux); _isVoided = false; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -2767,7 +2800,7 @@ void VdblMPBttn::_turnOnVdd(){ if(!_isVoided){ taskENTER_CRITICAL(&mux); _isVoided = true; - _outputsChange = true; + setOutputsChange(true); taskEXIT_CRITICAL(&mux); } @@ -3175,3 +3208,4 @@ MpbOtpts_t otptsSttsUnpkg(uint32_t pkgOtpts){ return mpbCurSttsDcdd; } + diff --git a/src/ButtonToSwitch_ESP32.h b/src/ButtonToSwitch_ESP32.h index 18ad86d..68283e5 100644 --- a/src/ButtonToSwitch_ESP32.h +++ b/src/ButtonToSwitch_ESP32.h @@ -12,7 +12,7 @@ * behavior of standard electromechanical switches**. * * @author : Gabriel D. Goldman - * @version v4.0.4 + * @version v4.1.0 * @date : Created on: 06/11/2023 * : Last modification: 28/08/2024 * @copyright GPL-3.0 license @@ -121,7 +121,9 @@ class DbncdMPBttn{ fdaDmpbStts _mpbFdaState {stOffNotVPP}; TimerHandle_t _mpbPollTmrHndl {NULL}; //FreeRTOS returns NULL if creation fails (not nullptr) String _mpbPollTmrName {""}; - volatile bool _outputsChange {false}; + /*volatile*/ bool _outputsChange {false}; + uint32_t _outputsChangeCnt{0}; + bool _outputsChngTskTrggr{false}; bool _prssRlsCcl{false}; unsigned long int _strtDelay {0}; bool _sttChng {true}; @@ -143,6 +145,9 @@ class DbncdMPBttn{ virtual void updFdaState(); bool updIsPressed(); virtual bool updValidPressesStatus(); + const bool getOutputsChngTskTrggr() const; + void resetOutputsChngTskTrggr(); + public: /** * @brief Default class constructor @@ -296,6 +301,15 @@ class DbncdMPBttn{ * @retval false: no object's behavior flags have changed value since last time **outputsChange** flag was reseted. */ const bool getOutputsChange() const; + /** + * @brief Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag + * + * Returns the current value of the attribute flag that triggers the execution of the taskToNotify() task if there have been outputs value changes since last MPB update + * + * @retval true There have been changes since last update, the taskToNotify() task will be unblocked to execute. + * @retval false Otherwise + */ + // const bool getOutputsChngTskTrggr() const; /** * @brief Returns the current value of strtDelay attribute. * @@ -355,6 +369,12 @@ class DbncdMPBttn{ * This method is provided for security and for error handling purposes, so that in case of unexpected situations detected, the driving **Deterministic Finite Automaton** used to compute the MPB objects states might be reset to it's initial state to safely restart it, maybe as part of an **Error Handling** procedure. */ void resetFda(); + /** + * @brief Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag + * + * Clears the attribute flag that triggers the execution of the taskToNotify() task, so that it would not be unblocked on next MPB status update + */ + // void resetOutputsChngTskTrggr(); /** * @brief Restarts the software timer updating the calculation of the object internal flags. *
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
 Returns the value of the outputsChange attribute flag.
 
unsigned long int getStrtDelay ()
 Returns the current value of strtDelay attribute.
 Returns the current value of the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
const TaskHandle_t getTaskToNotify () const
 Returns the task to be notified by the object when its output flags changes.
 Resets the MPB behavior automaton to it's Initial or Start State
 
bool resume ()
 Restarts the software timer updating the calculation of the object internal flags.
 Resets the outputs change task unblocking trigger (outputsChngTskTrggr) attribute flag.
 
bool setDbncTime (const unsigned long int &newDbncTime)
 Sets the debounce process time.
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs
-
ButtonToSwitch Library for ESP32 (Arduino) v4.0.4 +
ButtonToSwitch Library for ESP32 (Arduino) v4.1.0
A library that provides elaborated switch mechanism behavior simulation for digital signals inputs