Esempio n. 1
0
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;
    }

}
Esempio n. 2
0
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;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}