#include <pins.hpp>
pin::pin(volatile uint8_t* ddr, volatile uint8_t* port, volatile uint8_t* pin, uint8_t pinnr) : _ddr(ddr), _port(port), _pin(pin), _pinnr(pinnr) (1)
{
}
void pin::init(bool isinput, bool pullup)
{
*_ddr |= (!isinput << _pinnr); (2)
*_port |= (pullup << _pinnr);
}
inline uint8_t pin::get_pin()
{
return bit_is_set(_pin, _pinnr);
}
inline void pin::set_pin(uint8_t state)
{
if (state)
{
*_port |= (1 << _pinnr); (3)
}else{
*_port &=~(1 << _pinnr); (4)
}
}
inline void pin::toggle_pin()
{
*_port ^= (1 << _pinnr); (5)
}