/* Part of the MCP23S08 MODULE Copyright (C) 2020 by Eddi De Pieri Adapted from https://github.com/kmpelectronics/Arduino Copyright (C) 2016 Plamen Kovandjiev & Dimitar Antonov (ref. https://github.com/kmpelectronics/Arduino/blob/master/ProDinoWiFiEsp/src/PRODINoESP8266/src/KMPDinoWiFiESP.cpp) */ #pragma once #include "libs/BasePin.h" #include "mcp23s08.h" #include class McpGpioPin final : public BasePin { public: explicit McpGpioPin(unsigned char pin) : _pin(pin) {} void pinMode(int8_t mode) override { ::MCP23S08SetDirection(_pin, mode); } void digitalWrite(int8_t val) override { ::MCP23S08SetPin(_pin, val); } int digitalRead() override { return ::MCP23S08GetPin(_pin); } unsigned char pin() const override { return _pin; } const char* id() const override { return "McpGpioPin"; } private: unsigned char _pin { GPIO_NONE }; };