70 #ifdef GPIO_HAL_CONF_PORT_PIN_NUMBERING 71 #define GPIO_HAL_PORT_PIN_NUMBERING GPIO_HAL_CONF_PORT_PIN_NUMBERING 73 #define GPIO_HAL_PORT_PIN_NUMBERING 1 86 #ifdef GPIO_HAL_CONF_ARCH_SW_TOGGLE 87 #define GPIO_HAL_ARCH_SW_TOGGLE GPIO_HAL_CONF_ARCH_SW_TOGGLE 89 #define GPIO_HAL_ARCH_SW_TOGGLE 1 98 #define GPIO_HAL_NULL_PORT 0 125 #ifdef GPIO_HAL_CONF_PIN_COUNT 126 #define GPIO_HAL_PIN_COUNT GPIO_HAL_CONF_PIN_COUNT 128 #define GPIO_HAL_PIN_COUNT 32 131 #if GPIO_HAL_PIN_COUNT > 32 && !GPIO_HAL_PORT_PIN_NUMBERING 145 #if GPIO_HAL_PORT_PIN_NUMBERING 152 #define GPIO_HAL_PIN_CFG_PULL_NONE 0x00 153 #define GPIO_HAL_PIN_CFG_PULL_UP 0x01 154 #define GPIO_HAL_PIN_CFG_PULL_DOWN 0x02 155 #define GPIO_HAL_PIN_CFG_PULL_MASK (GPIO_HAL_PIN_CFG_PULL_UP | \ 156 GPIO_HAL_PIN_CFG_PULL_DOWN) 158 #define GPIO_HAL_PIN_CFG_HYSTERESIS 0x10 160 #define GPIO_HAL_PIN_CFG_EDGE_NONE 0x00 161 #define GPIO_HAL_PIN_CFG_EDGE_RISING 0x04 162 #define GPIO_HAL_PIN_CFG_EDGE_FALLING 0x08 163 #define GPIO_HAL_PIN_CFG_EDGE_BOTH (GPIO_HAL_PIN_CFG_EDGE_RISING | \ 164 GPIO_HAL_PIN_CFG_EDGE_FALLING) 166 #define GPIO_HAL_PIN_CFG_INT_DISABLE 0x00 167 #define GPIO_HAL_PIN_CFG_INT_ENABLE 0x80 168 #define GPIO_HAL_PIN_CFG_INT_MASK 0x80 182 gpio_hal_callback_t handler;
183 #if GPIO_HAL_PORT_PIN_NUMBERING 194 #define GPIO_HAL_PIN_UNKNOWN 0xFF 220 #if GPIO_HAL_PORT_PIN_NUMBERING 255 #define gpio_hal_pin_to_mask(pin) ((gpio_hal_pin_mask_t)1 << (pin)) 312 #ifdef GPIO_HAL_CONF_ARCH_HDR_PATH 313 #include GPIO_HAL_CONF_ARCH_HDR_PATH 316 #ifndef gpio_hal_arch_init 328 #ifndef gpio_hal_arch_interrupt_enable 359 #if GPIO_HAL_PORT_PIN_NUMBERING 360 #define gpio_hal_arch_interrupt_enable(port, pin) \ 361 gpio_hal_arch_port_interrupt_enable(port, pin) 363 #define gpio_hal_arch_interrupt_enable(port, pin) \ 364 gpio_hal_arch_no_port_interrupt_enable(pin) 368 #ifndef gpio_hal_arch_interrupt_disable 399 #if GPIO_HAL_PORT_PIN_NUMBERING 400 #define gpio_hal_arch_interrupt_disable(port, pin) \ 401 gpio_hal_arch_port_interrupt_disable(port, pin) 403 #define gpio_hal_arch_interrupt_disable(port, pin) \ 404 gpio_hal_arch_no_port_interrupt_disable(pin) 408 #ifndef gpio_hal_arch_pin_cfg_set 453 #if GPIO_HAL_PORT_PIN_NUMBERING 454 #define gpio_hal_arch_pin_cfg_set(port, pin, cfg) \ 455 gpio_hal_arch_port_pin_cfg_set(port, pin, cfg) 457 #define gpio_hal_arch_pin_cfg_set(port, pin, cfg) \ 458 gpio_hal_arch_no_port_pin_cfg_set(pin, cfg) 462 #ifndef gpio_hal_arch_pin_cfg_get 495 #if GPIO_HAL_PORT_PIN_NUMBERING 496 #define gpio_hal_arch_pin_cfg_get(port, pin) \ 497 gpio_hal_arch_port_pin_cfg_get(port, pin) 499 #define gpio_hal_arch_pin_cfg_get(port, pin) \ 500 gpio_hal_arch_no_port_pin_cfg_get(pin) 504 #ifndef gpio_hal_arch_pin_set_input 541 #if GPIO_HAL_PORT_PIN_NUMBERING 542 #define gpio_hal_arch_pin_set_input(port, pin) \ 543 gpio_hal_arch_port_pin_set_input(port, pin) 545 #define gpio_hal_arch_pin_set_input(port, pin) \ 546 gpio_hal_arch_no_port_pin_set_input(pin) 550 #ifndef gpio_hal_arch_pin_set_output 587 #if GPIO_HAL_PORT_PIN_NUMBERING 588 #define gpio_hal_arch_pin_set_output(port, pin) \ 589 gpio_hal_arch_port_pin_set_output(port, pin) 591 #define gpio_hal_arch_pin_set_output(port, pin) \ 592 gpio_hal_arch_no_port_pin_set_output(pin) 596 #ifndef gpio_hal_arch_set_pin 626 #if GPIO_HAL_PORT_PIN_NUMBERING 627 #define gpio_hal_arch_set_pin(port, pin) \ 628 gpio_hal_arch_port_set_pin(port, pin) 630 #define gpio_hal_arch_set_pin(port, pin) \ 631 gpio_hal_arch_no_port_set_pin(pin) 635 #ifndef gpio_hal_arch_clear_pin 665 #if GPIO_HAL_PORT_PIN_NUMBERING 666 #define gpio_hal_arch_clear_pin(port, pin) \ 667 gpio_hal_arch_port_clear_pin(port, pin) 669 #define gpio_hal_arch_clear_pin(port, pin) \ 670 gpio_hal_arch_no_port_clear_pin(pin) 674 #ifndef gpio_hal_arch_toggle_pin 714 #if GPIO_HAL_PORT_PIN_NUMBERING 715 #define gpio_hal_arch_toggle_pin(port, pin) \ 716 gpio_hal_arch_port_toggle_pin(port, pin) 718 #define gpio_hal_arch_toggle_pin(port, pin) \ 719 gpio_hal_arch_no_port_toggle_pin(pin) 723 #ifndef gpio_hal_arch_read_pin 757 #if GPIO_HAL_PORT_PIN_NUMBERING 758 #define gpio_hal_arch_read_pin(port, pin) \ 759 gpio_hal_arch_port_read_pin(port, pin) 761 #define gpio_hal_arch_read_pin(port, pin) \ 762 gpio_hal_arch_no_port_read_pin(pin) 766 #ifndef gpio_hal_arch_write_pin 800 #if GPIO_HAL_PORT_PIN_NUMBERING 801 #define gpio_hal_arch_write_pin(port, pin, value) \ 802 gpio_hal_arch_port_write_pin(port, pin, value) 804 #define gpio_hal_arch_write_pin(port, pin, value) \ 805 gpio_hal_arch_no_port_write_pin(pin, value) 809 #ifndef gpio_hal_arch_set_pins 846 #if GPIO_HAL_PORT_PIN_NUMBERING 847 #define gpio_hal_arch_set_pins(port, pin) \ 848 gpio_hal_arch_port_set_pins(port, pin) 850 #define gpio_hal_arch_set_pins(port, pin) \ 851 gpio_hal_arch_no_port_set_pins(pin) 855 #ifndef gpio_hal_arch_clear_pins 892 #if GPIO_HAL_PORT_PIN_NUMBERING 893 #define gpio_hal_arch_clear_pins(port, pin) \ 894 gpio_hal_arch_port_clear_pins(port, pin) 896 #define gpio_hal_arch_clear_pins(port, pin) \ 897 gpio_hal_arch_no_port_clear_pins(pin) 901 #ifndef gpio_hal_arch_toggle_pins 948 #if GPIO_HAL_PORT_PIN_NUMBERING 949 #define gpio_hal_arch_toggle_pins(port, pin) \ 950 gpio_hal_arch_port_toggle_pins(port, pin) 952 #define gpio_hal_arch_toggle_pins(port, pin) \ 953 gpio_hal_arch_no_port_toggle_pins(pin) 957 #ifndef gpio_hal_arch_read_pins 1000 #if GPIO_HAL_PORT_PIN_NUMBERING 1001 #define gpio_hal_arch_read_pins(port, pin) \ 1002 gpio_hal_arch_port_read_pins(port, pin) 1004 #define gpio_hal_arch_read_pins(port, pin) \ 1005 gpio_hal_arch_no_port_read_pins(pin) 1009 #ifndef gpio_hal_arch_write_pins 1062 #if GPIO_HAL_PORT_PIN_NUMBERING 1063 #define gpio_hal_arch_write_pins(port, pin, value) \ 1064 gpio_hal_arch_port_write_pins(port, pin, value) 1066 #define gpio_hal_arch_write_pins(port, pin, value) \ 1067 gpio_hal_arch_no_port_write_pins(pin, value) Datatype for GPIO event handlers.
void gpio_hal_arch_init(void)
Perform architecture specific gpio initaliaztion.
void gpio_hal_arch_no_port_pin_cfg_set(gpio_hal_pin_t pin, gpio_hal_pin_cfg_t cfg)
Configure a gpio pin.
void gpio_hal_arch_no_port_set_pin(gpio_hal_pin_t pin)
Set a GPIO pin to logical high.
void gpio_hal_arch_no_port_clear_pins(gpio_hal_pin_mask_t pins)
Clear multiple pins to logical low.
void gpio_hal_arch_port_toggle_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Toggle a GPIO pin.
gpio_hal_pin_mask_t gpio_hal_arch_no_port_read_pins(gpio_hal_pin_mask_t pins)
Read multiple pins.
void gpio_hal_arch_port_clear_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Clear multiple pins to logical low.
void gpio_hal_arch_port_write_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins, gpio_hal_pin_mask_t value)
Write multiple pins.
gpio_hal_pin_cfg_t gpio_hal_arch_port_pin_cfg_get(gpio_hal_port_t port, gpio_hal_pin_t pin)
Read the configuration of a GPIO pin.
void gpio_hal_arch_no_port_toggle_pins(gpio_hal_pin_mask_t pins)
Toggle multiple pins.
void gpio_hal_arch_port_set_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Set a GPIO pin to logical high.
void gpio_hal_arch_no_port_interrupt_enable(gpio_hal_pin_t pin)
Enable interrupts for a gpio pin.
uint8_t gpio_hal_port_t
A data structure that represents ports.
void gpio_hal_arch_port_interrupt_enable(gpio_hal_port_t port, gpio_hal_pin_t pin)
Enable interrupts for a gpio pin.
void gpio_hal_arch_no_port_toggle_pin(gpio_hal_pin_t pin)
Toggle a GPIO pin.
void gpio_hal_init()
Initialise the GPIO HAL.
void gpio_hal_register_handler(gpio_hal_event_handler_t *handler)
Register a function to be called whenever a pin triggers an event.
void gpio_hal_arch_no_port_write_pins(gpio_hal_pin_mask_t pins, gpio_hal_pin_mask_t value)
Write multiple pins.
void gpio_hal_arch_no_port_set_pins(gpio_hal_pin_mask_t pins)
Set multiple pins to logical high.
void gpio_hal_arch_no_port_pin_set_output(gpio_hal_pin_t pin)
Configure a pin as GPIO output.
void gpio_hal_arch_port_write_pin(gpio_hal_port_t port, gpio_hal_pin_t pin, uint8_t value)
Write a GPIO pin.
void gpio_hal_arch_port_pin_set_input(gpio_hal_port_t port, gpio_hal_pin_t pin)
Configure a pin as GPIO input.
void gpio_hal_arch_port_clear_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Clear a GPIO pin (logical low)
uint8_t gpio_hal_pin_t
GPIO pin number representation.
gpio_hal_pin_cfg_t gpio_hal_arch_no_port_pin_cfg_get(gpio_hal_pin_t pin)
Read the configuration of a GPIO pin.
void gpio_hal_arch_no_port_write_pin(gpio_hal_pin_t pin, uint8_t value)
Write a GPIO pin.
gpio_hal_pin_mask_t gpio_hal_arch_port_read_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Read multiple pins.
uint32_t gpio_hal_pin_mask_t
GPIO pin mask representation.
void gpio_hal_arch_port_pin_set_output(gpio_hal_port_t port, gpio_hal_pin_t pin)
Configure a pin as GPIO output.
struct gpio_hal_event_handler_s gpio_hal_event_handler_t
Datatype for GPIO event handlers.
void gpio_hal_arch_port_toggle_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Toggle multiple pins.
void gpio_hal_arch_port_set_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Set multiple pins to logical high.
void gpio_hal_arch_port_pin_cfg_set(gpio_hal_port_t port, gpio_hal_pin_t pin, gpio_hal_pin_cfg_t cfg)
Configure a gpio pin.
void gpio_hal_arch_no_port_clear_pin(gpio_hal_pin_t pin)
Clear a GPIO pin (logical low)
void gpio_hal_event_handler(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
The platform-independent GPIO event handler.
void gpio_hal_arch_port_interrupt_disable(gpio_hal_port_t port, gpio_hal_pin_t pin)
Disable interrupts for a gpio pin.
uint8_t gpio_hal_arch_no_port_read_pin(gpio_hal_pin_t pin)
Read a GPIO pin.
uint8_t gpio_hal_arch_port_read_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Read a GPIO pin.
void gpio_hal_arch_no_port_pin_set_input(gpio_hal_pin_t pin)
Configure a pin as GPIO input.
uint32_t gpio_hal_pin_cfg_t
GPIO pin configuration.
void gpio_hal_arch_no_port_interrupt_disable(gpio_hal_pin_t pin)
Disable interrupts for a gpio pin.