#ifndef MCP23S17_H
#define MCP23S17_H

#include "spi.h"

constexpr uint8_t MCP23S17_DIRA = 0x00;
constexpr uint8_t MCP23S17_DIRB = 0x01;
constexpr uint8_t MCP23S17_PORTA = 0x12;
constexpr uint8_t MCP23S17_PORTB = 0x13;
constexpr uint8_t MCP23S17_READ = 0x01;
constexpr uint8_t MCP23S17_WRITE = 0x00;
constexpr uint8_t MCP23S17_OPCODE = 0x40;

class MCP23S17
{
public:
	MCP23S17(SPI&, uint8_t);
	void setDirA(uint8_t dir) const;
	void setDirB(uint8_t dir) const;
	void writePortA(uint8_t) const;
	void writePortB(uint8_t) const;
	uint8_t readPortA(void) const;
	uint8_t readPortB(void) const;

private:
	SPI& spi; 
	const uint8_t adr;
};

#endif // MCP23S17_H