21 return INPUT_PULLDOWN;
23 return OUTPUT_OPEN_DRAIN;
35 auto *arg =
new ISRPinArg{};
42 PinStatus arduino_mode = (PinStatus) 255;
45 arduino_mode =
inverted_ ? FALLING : RISING;
48 arduino_mode =
inverted_ ? RISING : FALLING;
51 arduino_mode = CHANGE;
61 attachInterruptParam(
pin_, func, arduino_mode, arg);
79 detachInterrupt(
pin_);
86using namespace libretiny;
89 auto *arg =
reinterpret_cast<ISRPinArg *
>(
arg_);
90 return bool(digitalRead(arg->pin)) ^ arg->inverted;
93 auto *arg =
reinterpret_cast<ISRPinArg *
>(
arg_);
94 digitalWrite(arg->pin, value ^ arg->inverted);
97 auto *arg =
reinterpret_cast<ISRPinArg *
>(
arg_);
98 detachInterrupt(arg->pin);
101 auto *arg =
reinterpret_cast<ISRPinArg *
>(
arg_);
102 pinMode(arg->pin, flags_to_mode(
flags));
Copy of GPIOPin that is safe to use from ISRs (with no virtual functions)
void digital_write(bool value)
void pin_mode(gpio::Flags flags)
void pin_mode(gpio::Flags flags) override
void attach_interrupt_(void(*func)(void *), void *arg, gpio::InterruptType type) const
size_t dump_summary(char *buffer, size_t len) const override
bool digital_read() override
void detach_interrupt() const
ISRInternalGPIOPin to_isr() const
void digital_write(bool value) override
ESPHOME_LOG_TAG(TAG, "libretiny.gpio")