/*! \file gpio.c * \author tkl * \date Feb 13, 2012 * \brief Source file of the architecture independent gpio driver. */ #include #include "gpio.h" int gpio_open(const struct gpio *device) { if(device == NULL) return -1; gpio_fp_open_t open = device->fp->open; return open(device->arch_dep_device); } int gpio_close(const struct gpio *device) { if(device == NULL) return -1; gpio_fp_close_t close = device->fp->close; return close(device->arch_dep_device); } char gpio_read(const struct gpio *device) { if(device == NULL) return 0; gpio_fp_read_t read = device->fp->read; return read(device->arch_dep_device); } void gpio_write(const struct gpio *device, char byte) { if(device == NULL) return; gpio_fp_write_t write = device->fp->write; write(device->arch_dep_device, byte); } void gpio_toggle(const struct gpio *device) { if(device == NULL) return; gpio_fp_toggle_t toggle = device->fp->toggle; toggle(device->arch_dep_device); } int gpio_set_exti_callback(const struct gpio *device, const void *callback, const void *param) { if((device == NULL) || (callback == NULL)) return -1; gpio_fp_set_cb_t set_cb = device->fp->set_cb; return set_cb(device->arch_dep_device, callback, param); }