Control Surface  1.2.0
MIDI Control Surface library for Arduino
ShiftRegisterOutBase.hpp
Go to the documentation of this file.
1 /* ✔ */
2 
3 #pragma once
4 
6 AH_DIAGNOSTIC_WERROR() // Enable errors on warnings
7 
8 #include "ExtendedInputOutput.hpp"
11 
13 
25 template <uint8_t N>
27  protected:
39  ShiftRegisterOutBase(pin_t latchPin, BitOrder_t bitOrder);
40 
41  public:
46  void pinMode(pin_t pin, PinMode_t mode) override
47  __attribute__((deprecated)) {
48  (void)pin;
49  (void)mode;
50  }
51 
55  void pinModeBuffered(pin_t pin, PinMode_t mode) override
56  __attribute__((deprecated)) {
57  (void)pin;
58  (void)mode;
59  }
60 
70  void digitalWrite(pin_t pin, PinStatus_t val) override;
71 
78  void digitalWriteBuffered(pin_t pin, PinStatus_t val) override;
79 
90  int digitalRead(pin_t pin) override;
91 
95  int digitalReadBuffered(pin_t pin) override {
96  return digitalRead(pin);
97  }
98 
109  analog_t analogRead(pin_t pin) override __attribute__((deprecated)) {
110  return 1023 * digitalRead(pin);
111  }
112 
117  __attribute__((deprecated)) {
118  return 1023 * digitalRead(pin);
119  }
120 
131  void analogWrite(pin_t pin, analog_t val) override
132  __attribute__((deprecated)) {
133  digitalWrite(pin, val >= 0x80 ? HIGH : LOW);
134  }
135 
139  void analogWriteBuffered(pin_t pin, analog_t val) override
140  __attribute__((deprecated)) {
141  digitalWrite(pin, val >= 0x80 ? HIGH : LOW);
142  }
143 
147  void updateBufferedInputs() override {} // LCOV_EXCL_LINE
148 
155  pin_t red(pin_t id);
156 
160  Array<pin_t, N / 3> redPins();
161 
168  pin_t green(pin_t id);
169 
173  Array<pin_t, N / 3> greenPins();
174 
181  pin_t blue(pin_t id);
182 
186  Array<pin_t, N / 3> bluePins();
187 
188  protected:
191 
193  bool dirty = true;
194 };
195 
197 
198 #include "ShiftRegisterOutBase.ipp"
199 
LOW
const PinStatus_t LOW
Definition: ExtendedInputOutput.hpp:57
Warnings.hpp
AH::ShiftRegisterOutBase::analogReadBuffered
analog_t analogReadBuffered(pin_t pin) override __attribute__((deprecated))
The analogRead function is deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:116
AH::ExtIO::digitalRead
int digitalRead(pin_t pin)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:60
AH::ShiftRegisterOutBase
A class for serial-in/parallel-out shift registers, like the 74HC595.
Definition: ShiftRegisterOutBase.hpp:26
AH::ShiftRegisterOutBase::analogWrite
void analogWrite(pin_t pin, analog_t val) override __attribute__((deprecated))
The analogWrite function is not deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:131
AH::ShiftRegisterOutBase::analogRead
analog_t analogRead(pin_t pin) override __attribute__((deprecated))
The analogRead function is deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:109
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
BitArray.hpp
AH_DIAGNOSTIC_POP
#define AH_DIAGNOSTIC_POP()
Definition: Warnings.hpp:36
AH::ExtIO::digitalWrite
void digitalWrite(pin_t pin, PinStatus_t val)
An ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:48
HIGH
const PinStatus_t HIGH
Definition: ExtendedInputOutput.hpp:56
AH::ShiftRegisterOutBase::pinModeBuffered
void pinModeBuffered(pin_t pin, PinMode_t mode) override __attribute__((deprecated))
The pinMode function is not implemented because the mode is OUTPUT by definition.
Definition: ShiftRegisterOutBase.hpp:55
AH::ShiftRegisterOutBase::bitOrder
const BitOrder_t bitOrder
Definition: ShiftRegisterOutBase.hpp:190
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition: Array.hpp:36
AH::ShiftRegisterOutBase::pinMode
void pinMode(pin_t pin, PinMode_t mode) override __attribute__((deprecated))
The pinMode function is not implemented because the mode is OUTPUT by definition.
Definition: ShiftRegisterOutBase.hpp:46
ShiftRegisterOutBase.ipp
PinStatus_t
uint8_t PinStatus_t
Definition: ExtendedInputOutput.hpp:48
StaticSizeExtendedIOElement.hpp
AH::analog_t
uint16_t analog_t
The type returned from analogRead and similar functions.
Definition: Hardware-Types.hpp:15
AH::StaticSizeExtendedIOElement
A class for ExtendedIOElements with a fixed size.
Definition: StaticSizeExtendedIOElement.hpp:19
BitOrder_t
uint8_t BitOrder_t
Definition: ExtendedInputOutput.hpp:53
AH::ShiftRegisterOutBase::analogWriteBuffered
void analogWriteBuffered(pin_t pin, analog_t val) override __attribute__((deprecated))
The analogWrite function is not deprecated because a shift is always digital.
Definition: ShiftRegisterOutBase.hpp:139
AH::ShiftRegisterOutBase::latchPin
const pin_t latchPin
Definition: ShiftRegisterOutBase.hpp:189
AH::ShiftRegisterOutBase::buffer
BitArray< N > buffer
Definition: ShiftRegisterOutBase.hpp:192
AH_DIAGNOSTIC_WERROR
#define AH_DIAGNOSTIC_WERROR()
Definition: Warnings.hpp:35
AH::ExtIO::digitalWriteBuffered
void digitalWriteBuffered(pin_t pin, PinStatus_t val)
A buffered ExtIO version of the Arduino function.
Definition: ExtendedInputOutput.cpp:116
BEGIN_AH_NAMESPACE
#define BEGIN_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:9
END_AH_NAMESPACE
#define END_AH_NAMESPACE
Definition: AH/Settings/NamespaceSettings.hpp:10
AH::ShiftRegisterOutBase::digitalReadBuffered
int digitalReadBuffered(pin_t pin) override
Get the current state of a given output pin.
Definition: ShiftRegisterOutBase.hpp:95
AH::BitArray
A class for arrays of bits.
Definition: BitArray.hpp:25
PinMode_t
uint8_t PinMode_t
Definition: ExtendedInputOutput.hpp:49
AH::ShiftRegisterOutBase::updateBufferedInputs
void updateBufferedInputs() override
Shift registers don't have an input buffer.
Definition: ShiftRegisterOutBase.hpp:147