- /*
-
- Part of the MCP23S08 MODULE
-
- Copyright (C) 2020 by Eddi De Pieri <eddi at depieri dot com>
-
- Adapted from https://github.com/kmpelectronics/Arduino
- Copyright (C) 2016 Plamen Kovandjiev <p.kovandiev@kmpelectronics.eu> & Dimitar Antonov <d.antonov@kmpelectronics.eu>
-
- (ref. https://github.com/kmpelectronics/Arduino/blob/master/ProDinoWiFiEsp/src/PRODINoESP8266/src/KMPDinoWiFiESP.cpp)
-
- */
-
- #pragma once
-
- #include "libs/BasePin.h"
- #include "mcp23s08.h"
-
- #include <bitset>
-
- 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 };
- };
|