37 static Base *ioInstance;
39 explicit Base(
bool useAsSingleton =
true);
41 virtual bool isReady()
const;
43 virtual void customPinMode(
int channelNumber, uint8_t pin, uint8_t mode);
44 virtual int customDigitalRead(
int channelNumber, uint8_t pin);
45 virtual unsigned int customPulseIn(
int channelNumber,
48 uint64_t timeoutMicro);
49 virtual void customDigitalWrite(
int channelNumber, uint8_t pin, uint8_t val);
50 virtual void customAnalogWrite(
int channelNumber, uint8_t pin,
int val);
51 virtual void customSetPwmResolutionBits(uint8_t resolutionBits);
52 virtual void customConfigureAnalogOutput(
int channelNumber,
54 bool outputInvert =
false);
55 virtual void customSetPwmFrequency(uint16_t pwmFrequency);
56 virtual uint8_t customAnalogWriteResolutionBits()
const;
57 virtual uint32_t customAnalogWriteMaxValue()
const;
58 virtual int customAnalogRead(
int channelNumber, uint8_t pin);
59 virtual void customAttachInterrupt(uint8_t pin,
void (*func)(
void),
int mode);
60 virtual void customDetachInterrupt(uint8_t pin);
61 virtual uint8_t customPinToInterrupt(uint8_t pin);
64 bool useAsSingleton =
true;
75 uint8_t flags = ActiveHigh;
77 mutable uint8_t analogWriteResolutionBitsValue = 0;
81 explicit IoPin(
int pin,
Base *io =
nullptr) : io(io) { setPin(pin); }
83 bool isSet()
const {
return (flags & IsSet) != 0; }
84 void setIsSet(
bool value) {
92 int getPin()
const {
return isSet() ?
static_cast<int>(pin) : -1; }
93 void setPin(
int value) {
98 pin =
static_cast<uint8_t
>(value);
103 bool isPullUp()
const {
return (flags & PullUp) != 0; }
104 void setPullUp(
bool value) {
112 bool isActiveHigh()
const {
return (flags & ActiveHigh) != 0; }
113 void setActiveHigh(
bool value) {
117 flags &= ~ActiveHigh;
121 void setMode(uint8_t value) { mode = value; }
122 uint8_t getMode()
const {
return mode; }
124 void setAnalogOutputResolutionBits(uint8_t resolutionBits);
125 void setAnalogOutputFrequency(uint32_t frequencyHz);
126 void configureAnalogOutput(
int channelNumber = -1)
const;
127 void pinMode(
int channelNumber = -1)
const;
128 int digitalRead(
int channelNumber = -1)
const;
129 void digitalWrite(uint8_t value,
int channelNumber = -1)
const;
130 void analogWrite(
int value,
int channelNumber = -1)
const;
131 uint8_t analogWriteResolutionBits()
const;
132 uint32_t analogWriteMaxValue()
const;
133 void writeActive(
int channelNumber = -1)
const;
134 void writeInactive(
int channelNumber = -1)
const;
135 bool readActive(
int channelNumber = -1)
const;