#ifndef __AMS_WIRELIB_HPP__
#define __AMS_WIRELIB_HPP__

#include <Arduino.h>
#include <stdint.h>

//Routines for fast digital read/write from the PORTs, PINs, DDRs
//This is specific to Arduino Nano

uint8_t read_portsD();
uint8_t read_portsB();
uint8_t read_portsC();

uint8_t read_portD(uint8_t N);
uint8_t read_portB(uint8_t N);
uint8_t read_portC(uint8_t N);

void write_portsD(uint8_t V);
void write_portsB(uint8_t V);
void write_portsC(uint8_t V);

void write_portD(uint8_t N, uint8_t V);
void write_portB(uint8_t N, uint8_t V);
void write_portC(uint8_t N, uint8_t V);

void set_portsmodeD(uint8_t iomode);
void set_portsmodeB(uint8_t iomode);
void set_portsmodeC(uint8_t iomode);

void set_portmodeD(uint8_t N, uint8_t iomode);
void set_portmodeB(uint8_t N, uint8_t iomode);
void set_portmodeC(uint8_t N, uint8_t iomode);

//Numbered Pin Digital IO
//amsPN mapping for Arduino Nano
//0-7 - PORTD
//8-15 - PORTB
//16-23 - PORTC (Analog Pins)

//1 - output, 0 - input
void set_pinmode(uint8_t amsPN, uint8_t iomode);
uint8_t read_pin(uint8_t amsPN);
void write_pin(uint8_t amsPN, uint8_t V);

#endif