Program Listing for File pal-gpio-arduino.cpp

Return to documentation for file (src/framework/arduino/pal/pal-gpio-arduino.cpp)

#include "pal-gpio-arduino.hpp"
#include <Arduino.h>

using namespace tle5012;

GPIOIno::GPIOIno() : pin(0), mode(OUTPUT), logic(POSITIVE)
{
}

GPIOIno::GPIOIno(uint8_t pin, uint8_t mode, VLogic_t logic): pin(pin), mode(mode), logic(logic)
{
    this->pin = pin;
    this->mode = mode;
    this->logic = logic;
}

Error_t GPIOIno::init()
{
    pinMode(this->pin, this->mode);
    return OK;
}

Error_t GPIOIno::changeMode(uint8_t mode)
{
    this->mode = mode;
    pinMode(this->pin, this->mode);
    return OK;
}

Error_t GPIOIno::deinit()
{
    return OK;
}

GPIOIno::VLevel_t GPIOIno::read()
{
    return (VLevel_t) digitalRead(this->pin);
}

Error_t GPIOIno::write(VLevel_t level)
{
    digitalWrite(this->pin, level);
    return OK;
}

Error_t GPIOIno::enable()
{
    if(this->logic == POSITIVE){
        digitalWrite(this->pin, GPIO_HIGH);
    }
    else if(this->logic == NEGATIVE){
        digitalWrite(this->pin, GPIO_LOW);;
    }
    return OK;
}

Error_t GPIOIno::disable()
{
    if(this->logic == POSITIVE){
        digitalWrite(this->pin, GPIO_LOW);
    }
    else if(this->logic == NEGATIVE){
        digitalWrite(this->pin, GPIO_HIGH);
    }
    return OK;
}