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 "