GPIO
Methods for handling digital input/output pins.
Enums
mira_gpio_dir_t
Name |
Description |
MIRA_GPIO_DIR_IN |
|
MIRA_GPIO_DIR_OUT |
|
Functions
mira_gpio_set_dir
mira_status_t mira_gpio_set_dir(mira_gpio_pin_t pin, mira_gpio_dir_t dir);
Set direction of a GPIO pin.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
dir |
Direction of pin. |
Return value
Name |
Description |
MIRA_SUCCESS |
Successfully set GPIO pin direction. |
mira_gpio_set_pull
mira_status_t mira_gpio_set_pull(mira_gpio_pin_t pin, mira_gpio_pull_t pull);
Configure an input pin's pull resistor.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
pull |
See type mira_gpio_pull_t. |
Return value
Name |
Description |
MIRA_SUCCESS |
Pull up/down config set successfully. |
MIRA_ERROR_INVALID_VALUE |
Value of pull is invalid. |
mira_gpio_set_value
mira_status_t mira_gpio_set_value(mira_gpio_pin_t pin, mira_bool_t value);
Set value of a GPIO output pin.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
value |
Value of the pin. MIRA_TRUE for high, MIRA_FALSE for low. |
Return value
Name |
Description |
MIRA_SUCCESS |
Successfully set GPIO pin output value. |
mira_gpio_get_value
mira_status_t mira_gpio_get_value(mira_gpio_pin_t pin, mira_bool_t *value);
Get value of a GPIO input pin.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
value |
Pointer to where to store the pin value. MIRA_TRUE for high, MIRA_FALSE for low. |
Return value
Name |
Description |
MIRA_SUCCESS |
Successfully read GPIO pin input value. |
mira_gpio_enable_edge_event
mira_status_t mira_gpio_enable_edge_event(mira_gpio_pin_t pin, mira_edge_t edge);
Enable mira_gpio_edge_event event generation on pin level transitions.
To change the edge for an already enabled pin, first call mira_gpio_disable_edge_event for that specific pin.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
edge |
Which edge(s) to generate an event for. |
Return value
Name |
Description |
MIRA_SUCCESS |
Edge event successfully enabled. |
MIRA_ERROR_UNKNOWN |
An unknown error occurred. |
MIRA_ERROR_INVALID_VALUE |
Value out of range. |
MIRA_GPIO_ERROR_INVALID_PORT |
Pin not a GPIO pin. |
MIRA_ERROR_ALREADY_INITIALIZED |
Edge event already initialized. |
MIRA_GPIO_ERROR_EDGE_NO_RESOURCE_AVAILABLE |
No resource available. |
MIRA_WARNING_PARTIAL_FUNCTIONALITY |
Full functionality not guaranteed. |
MIRA_ERROR_NOT_IMPLEMENTED |
Function not implemented. |
mira_gpio_disable_edge_event
mira_status_t mira_gpio_disable_edge_event(mira_gpio_pin_t pin);
Disable the generation of mira_gpio_edge_event events for a specific pin.
Parameters
Name |
Description |
pin |
GPIO pin reference. |
Return value
Name |
Description |
MIRA_SUCCESS |
Edge event successfully disabled. |
MIRA_ERROR_UNKNOWN |
An unknown error occurred. |
MIRA_ERROR_INVALID_VALUE |
Value out of range. |
MIRA_GPIO_ERROR_INVALID_PORT |
Pin not a GPIO pin. |
MIRA_ERROR_ALREADY_INITIALIZED |
Edge event already initialized. |
MIRA_GPIO_ERROR_EDGE_NO_RESOURCE_AVAILABLE |
No resource available. |
MIRA_WARNING_PARTIAL_FUNCTIONALITY |
Full functionality not guaranteed. |
MIRA_ERROR_NOT_IMPLEMENTED |
Function not implemented. |
mira_gpio_has_triggered_edge_event
mira_bool_t mira_gpio_has_triggered_edge_event(mira_gpio_pin_t pin);
Check if GPIO pin has triggered an edge event.
Get the edge status of a pin, and reset it to MIRA_FALSE.
Use this in combination with PROCESS_WAIT_UNTIL(c):
mira_gpio_set_dir(BUTTON_PIN, MIRA_GPIO_DIR_IN);
mira_gpio_enable_edge_event(BUTTON_PIN, MIRA_EDGE_RISING);
while (1) {
PROCESS_WAIT_UNTIL(mira_gpio_has_triggered_edge_event(BUTTON_PIN));
do_processing();
}
Return value
Name |
Description |
MIRA_TRUE |
The pin has triggered a mira_gpio_edge_event since the last call to this function. |
MIRA_FALSE |
The pin has not triggered a mira_gpio_edge_event since the last call to this function. |