#include "mcp23s17.h" MCP23S17::MCP23S17(SPI& spi, uint8_t adr) : spi(spi), adr(adr) { } void MCP23S17::setDirA(uint8_t dir) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_WRITE); spi.pushByte(MCP23S17_DIRA); spi.pushByte(dir); spi.setAdr(SPIADR::NONE); } void MCP23S17::setDirB(uint8_t dir) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_WRITE); spi.pushByte(MCP23S17_DIRB); spi.pushByte(dir); spi.setAdr(SPIADR::NONE); } void MCP23S17::writePortA(uint8_t port) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_WRITE); spi.pushByte(MCP23S17_PORTA); spi.pushByte(port); spi.setAdr(SPIADR::NONE); } void MCP23S17::writePortB(uint8_t port) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_WRITE); spi.pushByte(MCP23S17_PORTB); spi.pushByte(port); spi.setAdr(SPIADR::NONE); } uint8_t MCP23S17::readPortA(void) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_READ); spi.pushByte(MCP23S17_PORTA); uint8_t port = spi.pushByte(0); spi.setAdr(SPIADR::NONE); return port; } uint8_t MCP23S17::readPortB(void) const { spi.setAdr(adr); spi.pushByte(MCP23S17_OPCODE | MCP23S17_READ); spi.pushByte(MCP23S17_PORTB); uint8_t port = spi.pushByte(0); spi.setAdr(SPIADR::NONE); return port; }