Changed logic
This commit is contained in:
52
firmware/src/bsp/dout.cpp
Normal file
52
firmware/src/bsp/dout.cpp
Normal file
@@ -0,0 +1,52 @@
|
||||
/**** Includes ****/
|
||||
#include "../utils/utils.h"
|
||||
#include "mcu/mcu_hal.h"
|
||||
#include "dout.h"
|
||||
|
||||
using namespace bsp;
|
||||
|
||||
/**** Private definitions ****/
|
||||
/**** Private constants ****/
|
||||
/**** Private variables ****/
|
||||
/**** Private function declarations ****/
|
||||
|
||||
/**** Public function definitions ****/
|
||||
bsp::DigitalOut::DigitalOut(uint8_t gpio_ch, uint8_t inverted)
|
||||
{
|
||||
this->gpio_ch = gpio_ch;
|
||||
this->invert = inverted;
|
||||
this->write(DOUT_HIZ);
|
||||
}
|
||||
|
||||
bsp::DigitalOut::~DigitalOut(void)
|
||||
{
|
||||
this->write(DOUT_HIZ);
|
||||
}
|
||||
|
||||
void bsp::DigitalOut::write(int8_t level)
|
||||
{
|
||||
if(level > 0)
|
||||
{
|
||||
this->last_set = DOUT_HIGH;
|
||||
if(this->invert) mcu::gpio_write(this->gpio_ch, mcu::LEVEL_LOW);
|
||||
else mcu::gpio_write(this->gpio_ch, mcu::LEVEL_HIGH);
|
||||
}
|
||||
else if(level == 0)
|
||||
{
|
||||
this->last_set = DOUT_LOW;
|
||||
if(this->invert) mcu::gpio_write(this->gpio_ch, mcu::LEVEL_HIGH);
|
||||
else mcu::gpio_write(this->gpio_ch, mcu::LEVEL_LOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->last_set = DOUT_HIZ;
|
||||
mcu::gpio_write(this->gpio_ch, mcu::LEVEL_HIZ);
|
||||
}
|
||||
}
|
||||
|
||||
int8_t bsp::DigitalOut::get_set_level(void)
|
||||
{
|
||||
return this->last_set;
|
||||
}
|
||||
|
||||
/**** Private function definitions ****/
|
||||
Reference in New Issue
Block a user