Add unit tests for gpio ftdi driver.

This commit is contained in:
Thomas Klaehn
2019-07-16 16:40:42 +02:00
parent 862ebe5fae
commit 8f5d0dd7f8
11 changed files with 394 additions and 50 deletions

View File

@@ -9,7 +9,7 @@ static int ftdi_open(const struct gpio *gpio)
{
int res;
if((gpio->ftdi_dev->ftdi = ftdi_new()) == 0) {
if((gpio->ftdi_dev->ftdi = ftdi_new()) == NULL) {
syslog(LOG_ERR, "ftdi_new failed\n");
return EXIT_FAILURE;
}
@@ -35,7 +35,7 @@ static int ftdi_open(const struct gpio *gpio)
int gpio_open(const struct gpio *gpio)
{
int res;
unsigned int init_value = 0;
unsigned char init_value = 0;
if(NULL == gpio) {
syslog(LOG_ERR, "No valid gpio object given.\n");
@@ -50,7 +50,6 @@ int gpio_open(const struct gpio *gpio)
}
gpio->ftdi_dev->bit_mask |= (unsigned char)gpio->pin;
syslog(LOG_DEBUG, "bitmask: 0x%02x\n", gpio->ftdi_dev->bit_mask);
res = ftdi_set_bitmode(gpio->ftdi_dev->ftdi, gpio->ftdi_dev->bit_mask, BITMODE_BITBANG);
if(res < 0) {
syslog(LOG_ERR, "unable to set bit bang mode: %d (%s)\n", res,
@@ -60,7 +59,7 @@ int gpio_open(const struct gpio *gpio)
return EXIT_FAILURE;
}
res = gpio_write(gpio, init_value);
res = ftdi_write_data(gpio->ftdi_dev->ftdi, &init_value, 1);
if(res < 0) {
syslog(LOG_ERR, "unable to write to gpio %u (%s)\n", gpio->pin,
ftdi_get_error_string(gpio->ftdi_dev->ftdi));
@@ -85,6 +84,7 @@ int gpio_close(const struct gpio *gpio)
if(gpio->ftdi_dev->bit_mask == 0) {
ftdi_usb_close(gpio->ftdi_dev->ftdi);
ftdi_free(gpio->ftdi_dev->ftdi);
gpio->ftdi_dev->is_open = false;
}
return EXIT_SUCCESS;