/**** Includes ****/
#include "../utils/utils.h"
#include "mcu/mcu_hal.h"
#include "din.h"

using namespace bsp;

/**** Private definitions ****/
/**** Private constants ****/
/**** Private variables ****/
/**** Private function declarations ****/
/**** Public function definitions ****/
bsp::DigitalIn::DigitalIn(void)
{
	return;
}

bsp::DigitalIn::~DigitalIn(void)
{
	return;
}

void bsp::DigitalIn::init(uint8_t gpio_ch, uint8_t inverted)
{
	this->gpio_ch = gpio_ch;
	if(inverted == 0) this->is_inverted = 0;
	else this->is_inverted = 1;
	this->last_read = 0;
}


uint8_t bsp::DigitalIn::read(void)
{
	// Read ADC
	this->last_read = mcu::gpio_read(this->gpio_ch);
	
	// Invert if necessary
	if(this->is_inverted)
	{
		if(this->last_read==0) this->last_read = 1;
		else this->last_read = 0;
	};
	
	return this->last_read;
}

/**** Private function definitions ****/

