LCOV - code coverage report
Current view: top level - src/Selectors/LEDs - SelectorLEDs.hpp (source / functions) Coverage Total Hit
Test: 73449d9b107c772cf65493691543348214e5d5eb Lines: 50.0 % 30 15
Test Date: 2026-06-06 17:44:35 Functions: 57.1 % 14 8
Legend: Lines:     hit not hit

            Line data    Source code
       1              : #pragma once
       2              : 
       3              : #include <AH/Hardware/ExtendedInputOutput/ExtendedInputOutput.hpp>
       4              : #include <Def/Def.hpp>
       5              : #include <Selectors/Selector.hpp>
       6              : 
       7              : BEGIN_CS_NAMESPACE
       8              : 
       9              : template <setting_t N>
      10              : class SelectorLEDsCallback {
      11              :   public:
      12            5 :     SelectorLEDsCallback(const PinList<N> &ledPins) : ledPins(ledPins) {}
      13              : 
      14              :     /// Initialize.
      15            0 :     void begin() {
      16            0 :         for (pin_t pin : ledPins) {
      17            0 :             AH::ExtIO::pinMode(pin, OUTPUT);
      18            0 :             AH::ExtIO::digitalWrite(pin, LOW);
      19              :         }
      20            0 :     }
      21              : 
      22              :     /// Refresh, called periodically.
      23            0 :     void update() {}
      24              : 
      25              :     /// Called when the setting changes.
      26            0 :     void update(setting_t oldSetting, setting_t newSetting) {
      27            0 :         AH::ExtIO::digitalWrite(ledPins[oldSetting], LOW);
      28            0 :         AH::ExtIO::digitalWrite(ledPins[newSetting], HIGH);
      29            0 :     }
      30              : 
      31              :   private:
      32              :     PinList<N> ledPins;
      33              : };
      34              : 
      35              : class SelectorSingleLEDCallback {
      36              :   public:
      37            1 :     SelectorSingleLEDCallback(pin_t ledPin) : ledPin(ledPin) {}
      38              : 
      39              :     /// Initialize.
      40            0 :     void begin() { AH::ExtIO::pinMode(ledPin, OUTPUT); }
      41              : 
      42              :     /// Refresh, called periodically.
      43            0 :     void update() {}
      44              : 
      45              :     /// Called when the setting changes.
      46            0 :     void update(setting_t oldSetting, setting_t newSetting) {
      47              :         (void)oldSetting;
      48            0 :         AH::ExtIO::digitalWrite(ledPin, newSetting == 0 ? LOW : HIGH);
      49            0 :     }
      50              : 
      51              :   private:
      52              :     pin_t ledPin;
      53              : };
      54              : 
      55              : END_CS_NAMESPACE
      56              : 
      57              : // -------------------------------------------------------------------------- //
      58              : 
      59              : #include <Selectors/EncoderSelector.hpp>
      60              : 
      61              : BEGIN_CS_NAMESPACE
      62              : 
      63              : /**
      64              :  * @brief   @copybrief EncoderSelector
      65              :  *          This version displays the setting using LEDs.
      66              :  * @details @copydetails EncoderSelector
      67              :  * @ingroup SelectorsLEDs
      68              :  */
      69              : template <setting_t N>
      70              : class EncoderSelectorLEDs
      71              :     : public GenericEncoderSelector<N, SelectorLEDsCallback<N>> {
      72              :   public:
      73            1 :     EncoderSelectorLEDs(Selectable<N> &selectable,
      74              :                         const EncoderSwitchPinList &pins,
      75              :                         const PinList<N> &ledPins, int8_t pulsesPerStep = 4,
      76              :                         Wrap wrap = Wrap::Wrap)
      77              :         : GenericEncoderSelector<N, SelectorLEDsCallback<N>> {
      78              :               selectable, {ledPins}, pins, pulsesPerStep, wrap,
      79            1 :           } {}
      80              : };
      81              : 
      82              : END_CS_NAMESPACE
      83              : 
      84              : // -------------------------------------------------------------------------- //
      85              : 
      86              : #include <Selectors/IncrementDecrementSelector.hpp>
      87              : 
      88              : BEGIN_CS_NAMESPACE
      89              : 
      90              : /**
      91              :  * @brief   @copybrief IncrementDecrementSelector
      92              :  *          This version displays the setting using LEDs.
      93              :  * @details @copydetails IncrementDecrementSelector
      94              :  * @ingroup SelectorsLEDs
      95              :  */
      96              : template <setting_t N>
      97              : class IncrementDecrementSelectorLEDs
      98              :     : public GenericIncrementDecrementSelector<N, SelectorLEDsCallback<N>> {
      99              :   public:
     100            1 :     IncrementDecrementSelectorLEDs(Selectable<N> &selectable,
     101              :                                    const AH::IncrementDecrementButtons &buttons,
     102              :                                    const PinList<N> &ledPins,
     103              :                                    Wrap wrap = Wrap::Wrap)
     104              :         : GenericIncrementDecrementSelector<N, SelectorLEDsCallback<N>> {
     105              :               selectable,
     106              :               {ledPins},
     107              :               buttons,
     108              :               wrap,
     109            1 :           } {}
     110              : };
     111              : 
     112              : END_CS_NAMESPACE
     113              : 
     114              : // -------------------------------------------------------------------------- //
     115              : 
     116              : #include <Selectors/IncrementSelector.hpp>
     117              : 
     118              : BEGIN_CS_NAMESPACE
     119              : 
     120              : /**
     121              :  * @brief   @copybrief IncrementSelector
     122              :  *          This version displays the setting using LEDs.
     123              :  * @details @copydetails IncrementSelector
     124              :  * @ingroup SelectorsLEDs
     125              :  */
     126              : template <setting_t N>
     127              : class IncrementSelectorLEDs
     128              :     : public GenericIncrementSelector<N, SelectorLEDsCallback<N>> {
     129              :   public:
     130            1 :     IncrementSelectorLEDs(Selectable<N> &selectable, const AH::Button &button,
     131              :                           const PinList<N> &ledPins)
     132              :         : GenericIncrementSelector<N, SelectorLEDsCallback<N>> {
     133            1 :               selectable, {ledPins}, button} {}
     134              : };
     135              : 
     136              : END_CS_NAMESPACE
     137              : 
     138              : // -------------------------------------------------------------------------- //
     139              : 
     140              : #include <Selectors/ManyButtonsSelector.hpp>
     141              : 
     142              : BEGIN_CS_NAMESPACE
     143              : 
     144              : /**
     145              :  * @brief   @copybrief ManyButtonsSelector
     146              :  *          This version displays the setting using LEDs.
     147              :  * @details @copydetails ManyButtonsSelector
     148              :  * @ingroup SelectorsLEDs
     149              :  */
     150              : template <setting_t N>
     151              : class ManyButtonsSelectorLEDs
     152              :     : public GenericManyButtonsSelector<N, SelectorLEDsCallback<N>> {
     153              :   public:
     154            1 :     ManyButtonsSelectorLEDs(Selectable<N> &selectable,
     155              :                             const PinList<N> &buttonPins,
     156              :                             const PinList<N> &ledPins)
     157              :         : GenericManyButtonsSelector<N, SelectorLEDsCallback<N>> {
     158              :               selectable,
     159              :               {ledPins},
     160              :               buttonPins,
     161            1 :           } {}
     162              : };
     163              : 
     164              : END_CS_NAMESPACE
     165              : 
     166              : // -------------------------------------------------------------------------- //
     167              : 
     168              : #include <Selectors/ProgramChangeSelector.hpp>
     169              : 
     170              : BEGIN_CS_NAMESPACE
     171              : 
     172              : /**
     173              :  * @brief   @copybrief ProgramChangeSelector
     174              :  *          This version displays the setting using LEDs.
     175              :  * @details @copydetails ProgramChangeSelector
     176              :  * @ingroup SelectorsLEDs
     177              :  */
     178              : template <setting_t N>
     179              : class ProgramChangeSelectorLEDs
     180              :     : public GenericProgramChangeSelector<N, SelectorLEDsCallback<N>> {
     181              :   public:
     182            1 :     ProgramChangeSelectorLEDs(Selectable<N> &selectable,
     183              :                               MIDIChannelCable address,
     184              :                               const PinList<N> &ledPins)
     185              :         : GenericProgramChangeSelector<N, SelectorLEDsCallback<N>> {
     186              :               selectable,
     187              :               {ledPins},
     188              :               address,
     189            1 :           } {}
     190              : };
     191              : 
     192              : END_CS_NAMESPACE
     193              : 
     194              : // -------------------------------------------------------------------------- //
     195              : 
     196              : #include <Selectors/SwitchSelector.hpp>
     197              : 
     198              : BEGIN_CS_NAMESPACE
     199              : 
     200              : /**
     201              :  * @brief   @copybrief SwitchSelector
     202              :  *          This version displays the setting using LEDs.
     203              :  * @details @copydetails SwitchSelector
     204              :  * @ingroup SelectorsLEDs
     205              :  */
     206              : class SwitchSelectorLED
     207              :     : public GenericSwitchSelector<SelectorSingleLEDCallback> {
     208              :   public:
     209            1 :     SwitchSelectorLED(Selectable<2> &selectable, const AH::Button &button,
     210              :                       pin_t ledPin)
     211            1 :         : GenericSwitchSelector<SelectorSingleLEDCallback> {
     212              :               selectable,
     213              :               {ledPin},
     214              :               button,
     215            1 :           } {}
     216              : };
     217              : 
     218              : END_CS_NAMESPACE
        

Generated by: LCOV version 2.4-beta