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)
gpio_hal_pin_mask_t gpio_hal_arch_no_port_read_pins(gpio_hal_pin_mask_t pins)
Read multiple pins.
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_port_interrupt_enable(gpio_hal_port_t port, gpio_hal_pin_t pin)
Enable interrupts for a gpio pin.
void gpio_hal_register_handler(gpio_hal_event_handler_t *handler)
Register a function to be called whenever a pin triggers an event.
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_pin_set_output(gpio_hal_pin_t pin)
Configure a pin as GPIO output.
void gpio_hal_arch_no_port_toggle_pins(gpio_hal_pin_mask_t pins)
Toggle multiple pins.
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_no_port_pin_set_input(gpio_hal_pin_t pin)
Configure a pin as GPIO input.
uint32_t gpio_hal_pin_mask_t
GPIO pin mask representation.
void gpio_hal_arch_port_clear_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Clear multiple pins to logical low.
struct gpio_hal_event_handler_s gpio_hal_event_handler_t
Datatype for GPIO event handlers.
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.
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_port_set_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Set multiple pins to logical high.
void gpio_hal_arch_no_port_clear_pin(gpio_hal_pin_t pin)
Clear a GPIO pin (logical low)
void gpio_hal_arch_no_port_interrupt_disable(gpio_hal_pin_t pin)
Disable interrupts for a gpio pin.
void gpio_hal_arch_port_interrupt_disable(gpio_hal_port_t port, gpio_hal_pin_t pin)
Disable interrupts for 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_port_toggle_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Toggle a GPIO pin.
void gpio_hal_arch_port_toggle_pins(gpio_hal_port_t port, gpio_hal_pin_mask_t pins)
Toggle multiple pins.
uint32_t gpio_hal_pin_cfg_t
GPIO pin configuration.
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_set_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Set a GPIO pin to logical high.
uint8_t gpio_hal_arch_no_port_read_pin(gpio_hal_pin_t pin)
Read a GPIO pin.
void gpio_hal_arch_init(void)
Perform architecture specific gpio initaliaztion.
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.
void gpio_hal_arch_port_pin_set_output(gpio_hal_port_t port, gpio_hal_pin_t pin)
Configure a pin as GPIO output.
uint8_t gpio_hal_port_t
A data structure that represents ports.
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_no_port_set_pins(gpio_hal_pin_mask_t pins)
Set multiple pins to logical high.
void gpio_hal_init()
Initialise the GPIO HAL.
void gpio_hal_arch_port_clear_pin(gpio_hal_port_t port, gpio_hal_pin_t pin)
Clear a GPIO pin (logical low)
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_interrupt_enable(gpio_hal_pin_t pin)
Enable interrupts for 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_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_toggle_pin(gpio_hal_pin_t pin)
Toggle a GPIO pin.
uint8_t gpio_hal_pin_t
GPIO pin number representation.
void gpio_hal_arch_no_port_clear_pins(gpio_hal_pin_mask_t pins)
Clear multiple pins to logical low.
void gpio_hal_arch_no_port_write_pin(gpio_hal_pin_t pin, uint8_t value)
Write a GPIO pin.
Datatype for GPIO event handlers.