#ifndef __PIN_MAP_HPP__
#define __PIN_MAP_HPP__

#if defined(ARDUINO_AVR_ATTINYX5)
/* LedStrip output pin */
uint8_t const LedPin{PB0};

/* Button analog input pin */
/* Note: we use PB5 as button input which is also the reset pin, to avoid reseting we read an analogic value with
 * lower voltage than the triger value of reset */
int const AnalogButtonVRef{970};
uint8_t const AnalogButtonPin{0};
/* Rotary encoder input pins */
uint8_t const EncoderPinA{PB3};
uint8_t const EncoderPinB{PB4};

/* Uart for serial debug pins */
#if defined(__BUILD_DEBUG__)
uint8_t const TxPin{PB1};
uint8_t const RxPin{PB2};
#endif /* defined(__BUILD_DEBUG__) */
#elif defined(ARDUINO_AVR_ATTINYX41)
/* LedStrip output pin */
uint8_t const LedPin{PA1};

/* Button input pin (internally pulled up) */
uint8_t const ButtonPin{ADC11D};
/* Rotary encoder input pins */
uint8_t const EncoderPinA{PA2};
uint8_t const EncoderPinB{PA3};

/* Uart for serial debug pins */
#if defined(__BUILD_DEBUG__)
uint8_t const TxPin{PA5};
uint8_t const RxPin{PA4};
#endif /* defined(__BUILD_DEBUG__) */

#elif defined(ARDUINO_AVR_UNO)
/* LedStrip output pin */
uint8_t const LedPin{6};

/* Button analog input pin */
uint8_t const AnalogButtonPin{A0};
/* Rotary encoder input pins */
uint8_t const EncoderPinA{8};
uint8_t const EncoderPinB{9};
#endif /* Hardware selection */

#endif /* __PIN_MAP_HPP__ */