Program Listing for File gpio-mtb.cpp
↰ Return to documentation for file (src/framework/mtb/pal/gpio-mtb.cpp)
#include "gpio-mtb.hpp"
#if (TLE5012_FRAMEWORK == TLE5012_FRMWK_MTB)
using namespace tle5012;
GPIOMtb::GPIOMtb(mtb_gpio_t pin, mtb_gpio_config_t config, VLogic_t logic)
: pin(pin), config(config), logic(logic)
{
}
GPIOMtb::GPIOMtb() : pin(MTB_GPIO_1), config(INPUT_HIGH_IMPEDANCE), logic(POSITIVE)
{
}
GPIOMtb::~GPIOMtb()
{
disable();
deinit();
}
inline GPIOMtb::Error_t GPIOMtb::init()
{
GPIOMtb::Error_t err = GPIOMtb::OK;
if (MTB_SUCCESS != mtb_gpio_init(pin, config))
err = GPIOMtb::INTF_ERROR;
return err;
}
inline GPIOMtb::Error_t GPIOMtb::deinit()
{
GPIOMtb::Error_t err = GPIOMtb::OK;
if (MTB_SUCCESS != mtb_gpio_deinit(pin))
err = GPIOMtb::INTF_ERROR;
return err;
}
inline GPIOMtb::VLevel_t GPIOMtb::read()
{
return (VLevel_t)mtb_gpio_input_get(pin);
}
inline GPIOMtb::Error_t GPIOMtb::write(VLevel_t level)
{
GPIOMtb::Error_t err = GPIOMtb::OK;
if (GPIO_LOW == level)
{
if (MTB_SUCCESS != mtb_gpio_output_low(pin))
err = GPIOMtb::INTF_ERROR;
}
else if (GPIO_HIGH == level)
{
if (MTB_SUCCESS != mtb_gpio_output_high(pin))
err = GPIOMtb::INTF_ERROR;
}
return err;
}
inline GPIOMtb::Error_t GPIOMtb::enable()
{
GPIOMtb::Error_t err = GPIOMtb::OK;
if (this->logic == POSITIVE)
{
if (MTB_SUCCESS != mtb_gpio_output_high(pin))
err = GPIOMtb::INTF_ERROR;
}
else if (this->logic == NEGATIVE)
{
if (MTB_SUCCESS != mtb_gpio_output_low(pin))
err = GPIOMtb::INTF_ERROR;
}
return err;
}
inline GPIOMtb::Error_t GPIOMtb::disable()
{
GPIOMtb::Error_t err = GPIOMtb::OK;
if (this->logic == POSITIVE)
{
if (MTB_SUCCESS != mtb_gpio_output_low(pin))
err = GPIOMtb::INTF_ERROR;
}
else if (this->logic == NEGATIVE)
{
if (MTB_SUCCESS != mtb_gpio_output_high(pin))
err = GPIOMtb::INTF_ERROR;
}
return err;
}
#endif