LCOV - code coverage report
Current view: top level - src/MIDI_Inputs/LEDs/MCU - VULEDs.hpp (source / functions) Hit Total Coverage
Test: 19d2efc7037c2e176feca44750a12594c76f466f Lines: 14 14 100.0 %
Date: 2019-11-24 14:50:27 Functions: 6 7 85.7 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include <Hardware/LEDs/DotBarDisplayLEDs.hpp>
       4             : #include <MIDI_Inputs/MCU/VU.hpp>
       5             : 
       6             : BEGIN_CS_NAMESPACE
       7             : 
       8             : namespace MCU {
       9             : 
      10             : template <uint8_t NumLEDs>
      11             : class VULEDsCallback {
      12             :   public:
      13           1 :     VULEDsCallback(const DotBarDisplayLEDs<NumLEDs> &leds) : leds(leds) {}
      14             : 
      15             :     template <class T>
      16           1 :     void begin(T &) {
      17           1 :         leds.begin();
      18           1 :     }
      19             : 
      20             :     template <class T>
      21           4 :     void update(T &t) {
      22           4 :         uint8_t value = t.getValue();                      // value in [0, 12]
      23           4 :         value = (value * NumLEDs + FLOOR_CORRECTION) / 12; // value in [0, N]
      24           4 :         leds.display(value);
      25           4 :     }
      26             : 
      27             :   private:
      28             :     const DotBarDisplayLEDs<NumLEDs> leds;
      29             : 
      30             :     /// @see    doc/VU-LED-mapping.ods
      31             :     constexpr static uint8_t FLOOR_CORRECTION = 5;
      32             : };
      33             : 
      34             : template <uint8_t NumLEDs>
      35             : class VULEDs : public GenericVU<VULEDsCallback<NumLEDs>> {
      36             :   public:
      37             :     VULEDs(const PinList<NumLEDs> &ledPins, uint8_t track,
      38             :            unsigned int decayTime = VUDecay::Default)
      39             :         : GenericVU<VULEDsCallback<NumLEDs>>{
      40             :               track,
      41             :               CHANNEL_1,
      42             :               decayTime,
      43             :               {ledPins},
      44             :           } {}
      45             : 
      46             :     VULEDs(const PinList<NumLEDs> &ledPins, uint8_t track,
      47             :            MIDICNChannel channelCN, unsigned int decayTime = VUDecay::Default)
      48             :         : GenericVU<VULEDsCallback<NumLEDs>>{
      49             :               track,
      50             :               channelCN,
      51             :               decayTime,
      52             :               {ledPins},
      53             :           } {}
      54             : };
      55             : 
      56             : namespace Bankable {
      57             : 
      58             : template <uint8_t NumBanks, uint8_t NumLEDs>
      59           1 : class VULEDs : public GenericVU<NumBanks, VULEDsCallback<NumLEDs>> {
      60             :   public:
      61             :     VULEDs(BankConfig<NumBanks> config, const PinList<NumLEDs> &ledPins,
      62             :            uint8_t track, unsigned int decayTime = VUDecay::Default)
      63             :         : GenericVU<NumBanks, VULEDsCallback<NumLEDs>>{
      64             :               config, track, CHANNEL_1, decayTime, {ledPins},
      65             :           } {}
      66             : 
      67           1 :     VULEDs(BankConfig<NumBanks> config, const PinList<NumLEDs> &ledPins,
      68             :            uint8_t track, MIDICNChannel channelCN,
      69             :            unsigned int decayTime = VUDecay::Default)
      70           1 :         : GenericVU<NumBanks, VULEDsCallback<NumLEDs>>{
      71           1 :               config, track, channelCN, decayTime, {ledPins},
      72           2 :           } {}
      73             : };
      74             : 
      75             : } // namespace Bankable
      76             : 
      77             : } // namespace MCU
      78             : 
      79             : END_CS_NAMESPACE

Generated by: LCOV version 1.14-5-g4ff2ed6