static mraa_result_t mraa_ftdi_ft4222_gpio_edge_mode_replace(mraa_gpio_context dev, mraa_gpio_edge_t mode) { switch (mraa_ftdi_ft4222_get_gpio_type(dev->pin)) { case GPIO_TYPE_BUILTIN: switch (mode) { case MRAA_GPIO_EDGE_NONE: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, 0); case MRAA_GPIO_EDGE_BOTH: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_RISING | GPIO_TRIGGER_FALLING); case MRAA_GPIO_EDGE_RISING: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_RISING); case MRAA_GPIO_EDGE_FALLING: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_FALLING); default: return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; } break; case GPIO_TYPE_PCA9672: case GPIO_TYPE_PCA9555: return MRAA_SUCCESS; default: return MRAA_ERROR_INVALID_RESOURCE; } }
static mraa_result_t mraa_ftdi_ft4222_gpio_edge_mode_replace(mraa_gpio_context dev, mraa_gpio_edge_t mode) { if (mraa_ftdi_ft4222_is_internal_gpio(dev->pin)) { switch (mode) { case MRAA_GPIO_EDGE_NONE: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, 0); case MRAA_GPIO_EDGE_BOTH: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_RISING | GPIO_TRIGGER_FALLING); case MRAA_GPIO_EDGE_RISING: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_RISING); case MRAA_GPIO_EDGE_FALLING: return ftdi_ft4222_set_internal_gpio_trigger(dev->pin, GPIO_TRIGGER_FALLING); default: return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED; } } else return MRAA_SUCCESS; }
static mraa_result_t mraa_ftdi_ft4222_gpio_interrupt_handler_init_replace(mraa_gpio_context dev) { if (mraa_ftdi_ft4222_is_internal_gpio(dev->pin)) { mraa_ftdi_ft4222_has_internal_gpio_triggered(dev->phy_pin); } else { ftdi_ft4222_set_internal_gpio_dir(GPIO_PORT_IO_INT, GPIO_INPUT); ftdi_ft4222_set_internal_gpio_trigger(GPIO_PORT_IO_INT, GPIO_TRIGGER_FALLING); mraa_ftdi_ft4222_has_internal_gpio_triggered(GPIO_PORT_IO_INT); } return MRAA_SUCCESS; }
static mraa_result_t mraa_ftdi_ft4222_gpio_interrupt_handler_init_replace(mraa_gpio_context dev) { switch (mraa_ftdi_ft4222_get_gpio_type(dev->pin)) { case GPIO_TYPE_BUILTIN: mraa_ftdi_ft4222_has_internal_gpio_triggered(dev->phy_pin); break; case GPIO_TYPE_PCA9672: case GPIO_TYPE_PCA9555: ftdi_ft4222_set_internal_gpio_dir(GPIO_PORT_IO_INT, GPIO_INPUT); ftdi_ft4222_set_internal_gpio_trigger(GPIO_PORT_IO_INT, GPIO_TRIGGER_FALLING); mraa_ftdi_ft4222_has_internal_gpio_triggered(GPIO_PORT_IO_INT); mraa_ftdi_ft4222_gpio_monitor_add_pin(dev->phy_pin); break; } return MRAA_SUCCESS; }