1 /* 2 * Copyright (c) 2019 Piotr Mienkowski 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 #ifndef TEST_GPIO_API_H_ 8 #define TEST_GPIO_API_H_ 9 10 #include <zephyr/kernel.h> 11 #include <zephyr/drivers/gpio.h> 12 #include <zephyr/ztest.h> 13 14 /* If possible, use a dedicated GPIO with an external pulldown resistor. 15 * Otherwise, fallback to repurposing led0 as a GPIO. The latter won't always 16 * work as expected when reconfigured as an input. 17 */ 18 #if DT_NODE_HAS_STATUS(DT_INST(0, test_gpio_external_pulldown), okay) 19 #define TEST_NODE DT_GPIO_CTLR(DT_INST(0, test_gpio_external_pulldown), gpios) 20 #define TEST_PIN DT_GPIO_PIN(DT_INST(0, test_gpio_external_pulldown), gpios) 21 #define TEST_PIN_DTS_FLAGS DT_GPIO_FLAGS(DT_INST(0, test_gpio_external_pulldown), gpios) 22 #elif DT_NODE_HAS_PROP(DT_ALIAS(led0), gpios) 23 #define TEST_NODE DT_GPIO_CTLR(DT_ALIAS(led0), gpios) 24 #define TEST_PIN DT_GPIO_PIN(DT_ALIAS(led0), gpios) 25 #define TEST_PIN_DTS_FLAGS DT_GPIO_FLAGS(DT_ALIAS(led0), gpios) 26 #else 27 #error Unsupported board 28 #endif 29 30 #define TEST_GPIO_MAX_RISE_FALL_TIME_US 200 31 32 void test_gpio_pin_configure_push_pull(void); 33 void test_gpio_pin_configure_single_ended(void); 34 35 void test_gpio_pin_set_get_raw(void); 36 void test_gpio_pin_set_get(void); 37 void test_gpio_pin_set_get_active_high(void); 38 void test_gpio_pin_set_get_active_low(void); 39 void test_gpio_pin_toggle(void); 40 void test_gpio_pin_toggle_visual(void); 41 42 void test_gpio_port_set_masked_get_raw(void); 43 void test_gpio_port_set_masked_get(void); 44 void test_gpio_port_set_masked_get_active_high(void); 45 void test_gpio_port_set_masked_get_active_low(void); 46 void test_gpio_port_set_bits_clear_bits_raw(void); 47 void test_gpio_port_set_bits_clear_bits(void); 48 void test_gpio_port_set_clr_bits_raw(void); 49 void test_gpio_port_set_clr_bits(void); 50 void test_gpio_port_toggle(void); 51 52 void test_gpio_int_edge_rising(void); 53 void test_gpio_int_edge_falling(void); 54 void test_gpio_int_edge_both(void); 55 void test_gpio_int_edge_to_active(void); 56 void test_gpio_int_edge_to_inactive(void); 57 void test_gpio_int_level_high_interrupt_count_1(void); 58 void test_gpio_int_level_high_interrupt_count_5(void); 59 void test_gpio_int_level_low_interrupt_count_1(void); 60 void test_gpio_int_level_low_interrupt_count_5(void); 61 void test_gpio_int_level_active(void); 62 void test_gpio_int_level_inactive(void); 63 64 #endif /* TEST_GPIO_API_H_ */ 65