mirror of https://github.com/ARMmbed/mbed-os.git
HAL: GPIO: Add the get_capabilities function
Add the gpio_get_capabilities() to GPIO HAL API. Add a default, weak implementation, that every target can override.pull/12477/head
parent
c12b433026
commit
bcfca4fa5e
|
|
@ -2,7 +2,7 @@
|
|||
/** \addtogroup hal */
|
||||
/** @{*/
|
||||
/* mbed Microcontroller Library
|
||||
* Copyright (c) 2006-2013 ARM Limited
|
||||
* Copyright (c) 2006-2020 ARM Limited
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
@ -46,6 +46,8 @@ extern "C" {
|
|||
* * ::gpio_init_out_ex inits the pin as an output and sets the output value
|
||||
* * ::gpio_init_inout inits the pin to be input/output and set pin mode and value
|
||||
* * The GPIO operations ::gpio_write, ::gpio_read take less than 20us to complete
|
||||
* * The function ::gpio_get_capabilities fills the given
|
||||
* `gpio_capabilities_t` instance according to pin capabilities.
|
||||
*
|
||||
* # Undefined behavior
|
||||
* * Calling any ::gpio_mode, ::gpio_dir, ::gpio_write or ::gpio_read on a gpio_t object that was initialized
|
||||
|
|
@ -65,6 +67,14 @@ extern "C" {
|
|||
*
|
||||
*/
|
||||
|
||||
/** GPIO capabilities for a given pin
|
||||
*/
|
||||
typedef struct {
|
||||
uint8_t pull_none : 1;
|
||||
uint8_t pull_down : 1;
|
||||
uint8_t pull_up : 1;
|
||||
} gpio_capabilities_t;
|
||||
|
||||
/** Set the given pin as GPIO
|
||||
*
|
||||
* @param pin The pin to be set as GPIO
|
||||
|
|
@ -164,6 +174,10 @@ void gpio_init_out_ex(gpio_t *gpio, PinName pin, int value);
|
|||
*/
|
||||
void gpio_init_inout(gpio_t *gpio, PinName pin, PinDirection direction, PinMode mode, int value);
|
||||
|
||||
/** Fill the given gpio_capabilities_t instance according to pin capabilities.
|
||||
*/
|
||||
void gpio_get_capabilities(gpio_t *gpio, gpio_capabilities_t *cap);
|
||||
|
||||
/** Get the pins that support all GPIO tests
|
||||
*
|
||||
* Return a PinMap array of pins that support GPIO. The
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/* mbed Microcontroller Library
|
||||
* Copyright (c) 2006-2013 ARM Limited
|
||||
* Copyright (c) 2006-2020 ARM Limited
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
|
|
@ -68,6 +68,15 @@ void gpio_init_inout(gpio_t *gpio, PinName pin, PinDirection direction, PinMode
|
|||
}
|
||||
}
|
||||
|
||||
// To be re-implemented in the target layer if required.
|
||||
MBED_WEAK void gpio_get_capabilities(gpio_t *gpio, gpio_capabilities_t *cap)
|
||||
{
|
||||
(void)gpio; // By default, every pin supports all basic input pull modes.
|
||||
cap->pull_none = 1;
|
||||
cap->pull_down = 1;
|
||||
cap->pull_up = 1;
|
||||
}
|
||||
|
||||
#ifdef TARGET_FF_ARDUINO
|
||||
|
||||
typedef enum {
|
||||
|
|
|
|||
Loading…
Reference in New Issue