Fork of the espurna firmware for `mhsw` switches
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.1 KiB

/*
Part of the GPIO MODULE
Copyright (C) 2017-2019 by Xose Pérez <xose dot perez at gmail dot com>
*/
#pragma once
#include "gpio.h"
#include <cstdint>
class GpioPin final : public BasePin {
public:
explicit GpioPin(unsigned char pin) :
_pin(pin)
{}
// ESP8266 does not have INPUT_PULLDOWN definition, and instead
// has a GPIO16-specific INPUT_PULLDOWN_16:
// - https://github.com/esp8266/Arduino/issues/478
// - https://github.com/esp8266/Arduino/commit/1b3581d55ebf0f8c91e081f9af4cf7433d492ec9
void pinMode(int8_t mode) override {
#ifdef ESP8266
if ((INPUT_PULLDOWN == mode) && (_pin == 16)) {
mode = INPUT_PULLDOWN_16;
}
#endif
::pinMode(_pin, mode);
}
void digitalWrite(int8_t val) override {
::digitalWrite(_pin, val);
}
int digitalRead() override {
return ::digitalRead(_pin);
}
unsigned char pin() const override {
return _pin;
}
const char* id() const override {
return "GpioPin";
}
private:
unsigned char _pin { GPIO_NONE };
};