.. _program_listing_file_include_mcp23017_mcp23017.hh: Program Listing for File mcp23017.hh ==================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/mcp23017/mcp23017.hh``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef IPLO_MCP23017_HH #define IPLO_MCP23017_HH #include #include "i2c_bus/i2c.hh" #include "iplo/iplo.hh" #include "mcp230xx/mcp230xx.hh" namespace iplo { class MCP23017 : public MCP230XX { enum MCP23017Port : std::uint8_t { DDRA = 0, DDRB = 1, }; enum MCP23017Registers : std::uint8_t { DDR_A = 0x00, DDR_B = 0x01, POL_A = 0x02, POL_B = 0x03, GPINTEN_A = 0x04, GPINTEN_B = 0x05, DEFVAL_A = 0x06, DEFVAL_B = 0x07, INTCON_A = 0x08, INTCON_B = 0x09, IOCR = 0x0A, IOCR2 = 0x0B, PUR_A = 0x0C, PUR_B = 0x0D, INTF_A = 0x0E, INTF_B = 0x0F, INTCAP_A = 0x10, INTCAP_B = 0x11, GPIO_A = 0x12, GPIO_B = 0x13, OLAT_A = 0x14, OLAT_B = 0x15, }; public: static const std::uint8_t PINS = 16; MCP23017(I2C& bus, std::uint8_t address); bool begin() override; bool isConnected() override; bool pinMode(std::uint8_t pin, PinMode mode) override; bool digitalWrite(std::uint8_t pin, std::uint8_t value) override; std::uint8_t digitalRead(std::uint8_t pin) override; bool setPolarity(std::uint8_t pin, bool reversed) override; bool getPolarity(std::uint8_t pin, bool& reversed) override; bool setPullUp(std::uint8_t pin, bool pullUp) override; bool getPullUp(std::uint8_t pin, bool& pullUp) override; bool pinMode8(MCP23017Port port, std::uint8_t value); bool digitalWrite8(MCP23017Port port, std::uint8_t value); std::uint8_t digitalRead8(MCP23017Port port); bool setPolarity8(MCP23017Port port, std::uint8_t mask); bool getPolarity8(MCP23017Port port, std::uint8_t& mask); bool setPullUp8(MCP23017Port port, std::uint8_t mask); bool getPullUp8(MCP23017Port port, std::uint8_t& mask); bool pinMode16(std::uint16_t value); bool digitalWrite16(std::uint16_t value); std::uint16_t digitalRead16(); bool setPolarity16(std::uint16_t mask); bool getPolarity16(std::uint16_t& mask); bool setPullUp16(std::uint16_t mask); bool getPullUp16(std::uint16_t& mask); std::uint16_t readAll() override; static std::uint8_t extractPinValue(std::uint16_t registerValue, std::uint8_t pin); }; } /* namespace iplo */ #endif /* IPLO_MCP23017_HH */