LCOV - code coverage report
Current view: top level - src/Selectors - SwitchSelector.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 29.4 % 17 5
Test Date: 2026-06-06 17:44:35 Functions: 42.9 % 7 3
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include "Selector.hpp"
       4              : #include <AH/Hardware/Button.hpp>
       5              : 
       6              : BEGIN_CS_NAMESPACE
       7              : 
       8              : template <class Callback = EmptySelectorCallback>
       9              : class GenericSwitchSelector : public GenericSelector<2, Callback> {
      10              :     using Parent = GenericSelector<2, Callback>;
      11              : 
      12              :   public:
      13            2 :     GenericSwitchSelector(Selectable<2> &selectable, const Callback &callback,
      14              :                           const AH::Button &button)
      15            2 :         : GenericSelector<2, Callback>(selectable, callback), button(button) {}
      16              : 
      17            0 :     void begin() override {
      18            0 :         Parent::begin();
      19            0 :         button.begin();
      20            0 :     }
      21              : 
      22            0 :     void update() override {
      23            0 :         Parent::update();
      24            0 :         AH::Button::State state = button.update();
      25            0 :         if (state == AH::Button::Falling)
      26            0 :             this->set(1);
      27            0 :         else if (state == AH::Button::Rising)
      28            0 :             this->set(0);
      29            0 :     }
      30              : 
      31              :     AH::Button::State getButtonState() const { return button.getState(); }
      32              : 
      33              :     /// @see @ref AH::Button::invert()
      34              :     void invert() { button.invert(); }
      35              : 
      36              :   private:
      37              :     AH::Button button;
      38              : };
      39              : 
      40              : /**
      41              :  * @brief   Selector that selects one of two settings, based on the state of a 
      42              :  *          toggle or momentary switch.
      43              :  * 
      44              :  * @htmlonly 
      45              :  * <object type="image/svg+xml" data="../../selector-one-toggle-switch-LED.svg"></object>
      46              :  * @endhtmlonly
      47              :  * 
      48              :  * @ingroup Selectors
      49              :  */
      50              : class SwitchSelector : public GenericSwitchSelector<> {
      51              :   public:
      52            1 :     SwitchSelector(Selectable<2> &selectable, const AH::Button &button)
      53            1 :         : GenericSwitchSelector<> {
      54              :               selectable,
      55              :               {},
      56              :               button,
      57            1 :           } {}
      58              : };
      59              : 
      60              : END_CS_NAMESPACE
        

Generated by: LCOV version 2.4-beta