5 #include <AH/STL/algorithm>  
   27 template <u
int8_t NumBanks, 
class BankAddress, 
class Sender>
 
   43         : address{bankAddress}, filteredAnalog{analogPin}, sender(sender) {}
 
   62         previousBank = address.getSelection();
 
   63         std::fill(std::begin(previousValues), std::end(previousValues),
 
   67         if (filteredAnalog.update()) {
 
   69             auto activeBank = address.getSelection();
 
   70             auto previousValue = previousValues[activeBank];
 
   71             auto value = filteredAnalog.getValue();
 
   72             if (activeBank == previousBank && state == Higher) {
 
   73                 if (value <= previousValue)
 
   75             } 
else if (activeBank == previousBank && state == Lower) {
 
   76                 if (value >= previousValue)
 
   78             } 
else if (activeBank != previousBank) {
 
   79                 if (value == previousValue || previousValue == initial)
 
   81                 else if (value > previousValue)
 
   85                 previousBank = activeBank;
 
   87             if (activeBank == previousBank && state == Active) {
 
   88                 sender.send(value, address.getActiveAddress());
 
   89                 previousValues[activeBank] = value;
 
  122     void invert() { filteredAnalog.invert(); }
 
  140         Sender::precision() <= 14,
 
  141         "Sender precision must be 14 or less, because larger values are "