Skip to content
Snippets Groups Projects
GPIO.c 1.01 KiB
#include "inc/GPIO.h"

// init, term
GEN_TYPE_boolean gpio_initialized = false;
GEN_TYPE_boolean gpio_terminated = false;

void gpio_init(GPIO_PIN_T pin) {
    // important, since all pins are accessing the same method
    if(gpio_initialized) return;

    if(wiringPiSetup() == -1) {
        perror("cannot setup wiring pi\n");
	return;
    }

    gpio_initialized = true;
}

void gpio_init_in(GPIO_PIN_T pin) {
    gpio_init(pin);

    pinMode(pin, INPUT);
}

void gpio_init_out(GPIO_PIN_T pin) {
    gpio_init(pin);

    pinMode(pin, OUTPUT);
}

void gpio_term(GPIO_PIN_T pin) {
    // important, since all pins are accessing the same method
    if(gpio_terminated) return;

    gpio_terminated = false;
}

// noval
GEN_TYPE_boolean gpio_is_noval(GPIO_PIN_T pin) {
    return false;
}

void gpio_set_noval(GPIO_PIN_T pin) {
    // do nothing
}

// readers
GEN_TYPE_boolean gpio_read(GPIO_PIN_T pin) {
    return digitalRead(pin);
}

// writers
void gpio_write(GPIO_PIN_T pin, GEN_TYPE_boolean value) {
    digitalWrite(pin, value);
}