mirror of
https://github.com/raspberrypi/pico-sdk.git
synced 2025-12-10 07:14:36 +01:00
Add empty 'check_gpio_param' to host GPIO
All the approriate gpio_xxx functions now call check_gpio_param. This provides an easy way for a project to add simple range checking by defining a final version of check_gpio_param, which whatever error mechanism it chooses if an invalid value is passed. Refs #2736
This commit is contained in:
parent
c1e20599e3
commit
34b01c8677
2 changed files with 77 additions and 60 deletions
|
|
@ -6,11 +6,16 @@
|
|||
|
||||
#include "hardware/gpio.h"
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_function)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function)(__unused uint gpio, __unused enum gpio_function fn) {
|
||||
PICO_WEAK_FUNCTION_DEF(check_gpio_param)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(check_gpio_param)(__unused uint gpio) {
|
||||
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_function)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function)(uint gpio, __unused enum gpio_function fn) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_function_masked)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function_masked)(__unused uint32_t gpio_mask, __unused gpio_function_t fn) {
|
||||
|
||||
|
|
@ -22,98 +27,104 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function_masked64)(__unused uint64_t
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_get_function)
|
||||
gpio_function_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_function)(__unused uint gpio) {
|
||||
gpio_function_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_function)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return GPIO_FUNC_NULL;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_pull_up)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_up)(__unused uint gpio) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_up)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_is_pulled_up)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_up)(__unused uint gpio) {
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_up)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_pull_down)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_down)(__unused uint gpio) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_down)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_is_pulled_down)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_down)(__unused uint gpio) {
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_pulled_down)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_disable_pulls)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_disable_pulls)(__unused uint gpio) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_disable_pulls)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_pulls)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_pulls)(__unused uint gpio, __unused bool up, __unused bool down) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_pulls)(uint gpio, __unused bool up, __unused bool down) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_irqover)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irqover)(__unused uint gpio, __unused uint value) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irqover)(uint gpio, __unused uint value) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_outover)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_outover)(__unused uint gpio, __unused uint value) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_outover)(uint gpio, __unused uint value) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_inover)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_inover)(__unused uint gpio, __unused uint value) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_inover)(uint gpio, __unused uint value) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_oeover)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_oeover)(__unused uint gpio, __unused uint value) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_oeover)(uint gpio, __unused uint value) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_input_enabled)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_enabled)(__unused uint gpio, __unused bool enabled){
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_enabled)(uint gpio, __unused bool enabled){
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_input_hysteresis_enabled)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_hysteresis_enabled)(__unused uint gpio, __unused bool enabled){
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_hysteresis_enabled)(uint gpio, __unused bool enabled){
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_is_input_hysteresis_enabled)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_input_hysteresis_enabled)(__unused uint gpio){
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_input_hysteresis_enabled)(uint gpio){
|
||||
check_gpio_param(gpio);
|
||||
return true;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_slew_rate)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_slew_rate)(__unused uint gpio, __unused enum gpio_slew_rate slew){
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_slew_rate)(uint gpio, __unused enum gpio_slew_rate slew){
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_get_slew_rate)
|
||||
enum gpio_slew_rate PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_slew_rate)(__unused uint gpio){
|
||||
enum gpio_slew_rate PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_slew_rate)(uint gpio){
|
||||
check_gpio_param(gpio);
|
||||
return GPIO_SLEW_RATE_FAST;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_drive_strength)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_drive_strength)(__unused uint gpio, __unused enum gpio_drive_strength drive){
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_drive_strength)(uint gpio, __unused enum gpio_drive_strength drive){
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_get_drive_strength)
|
||||
enum gpio_drive_strength PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_drive_strength)(__unused uint gpio){
|
||||
enum gpio_drive_strength PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_drive_strength)(uint gpio){
|
||||
check_gpio_param(gpio);
|
||||
return GPIO_DRIVE_STRENGTH_4MA;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_enabled)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled)(__unused uint gpio, __unused uint32_t events, __unused bool enable) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled)(uint gpio, __unused uint32_t events, __unused bool enable) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_callback)
|
||||
|
|
@ -122,23 +133,24 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_callback)(__unused gpio_irq_callb
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_enabled_with_callback)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled_with_callback)(__unused uint gpio, __unused uint32_t event_mask, __unused bool enabled, __unused gpio_irq_callback_t callback) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled_with_callback)(uint gpio, __unused uint32_t event_mask, __unused bool enabled, __unused gpio_irq_callback_t callback) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_dormant_irq_enabled)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dormant_irq_enabled)(__unused uint gpio, __unused uint32_t event_mask, __unused bool enabled) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dormant_irq_enabled)(uint gpio, __unused uint32_t event_mask, __unused bool enabled) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_get_irq_event_mask)
|
||||
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_irq_event_mask)(__unused uint gpio) {
|
||||
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_irq_event_mask)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_acknowledge_irq)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_acknowledge_irq)(__unused uint gpio, __unused uint32_t events) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_acknowledge_irq)(uint gpio, __unused uint32_t events) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_with_order_priority_masked)
|
||||
|
|
@ -152,8 +164,8 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority_m
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_with_order_priority)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority)(__unused uint gpio, __unused irq_handler_t handler, __unused uint8_t order_priority) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_with_order_priority)(uint gpio, __unused irq_handler_t handler, __unused uint8_t order_priority) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler_masked)
|
||||
|
|
@ -167,8 +179,8 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler_masked64)(__unused ui
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_add_raw_irq_handler)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler)(__unused uint gpio, __unused irq_handler_t handler) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_add_raw_irq_handler)(uint gpio, __unused irq_handler_t handler) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_remove_raw_irq_handler_masked)
|
||||
|
|
@ -182,18 +194,18 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler_masked64)(__unused
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_remove_raw_irq_handler)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler)(__unused uint gpio, __unused irq_handler_t handler) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_remove_raw_irq_handler)(uint gpio, __unused irq_handler_t handler) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_init)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init)(__unused uint gpio) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_deinit)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_deinit)(__unused uint gpio) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_deinit)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_init_mask)
|
||||
|
|
@ -202,7 +214,8 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init_mask)(__unused uint gpio_mask) {
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_get)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get)(__unused uint gpio) {
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -287,12 +300,13 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_all64)(__unused uint64_t value) {
|
|||
|
||||
}
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_put)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put)(__unused uint gpio, __unused int value) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put)(uint gpio, __unused int value) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_out_masked)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_out_level)(__unused uint gpio) {
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_out_level)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -336,12 +350,13 @@ void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_all_bits64)(__unused uint64_t val
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_set_dir)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir)(__unused uint gpio, __unused bool out) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir)(uint gpio, __unused bool out) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_is_dir_out)
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_dir_out)(__unused uint gpio) {
|
||||
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_dir_out)(uint gpio) {
|
||||
check_gpio_param(gpio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -351,8 +366,8 @@ uint PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_dir)(uint gpio) {
|
|||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_assign_to_ns)
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_assign_to_ns)(__unused uint gpio, __unused bool ns) {
|
||||
|
||||
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_assign_to_ns)(uint gpio, __unused bool ns) {
|
||||
check_gpio_param(gpio);
|
||||
}
|
||||
|
||||
PICO_WEAK_FUNCTION_DEF(gpio_debug_pins_init)
|
||||
|
|
|
|||
|
|
@ -66,6 +66,8 @@ enum gpio_drive_strength {
|
|||
GPIO_DRIVE_STRENGTH_12MA = 3 ///< 12 mA nominal drive strength
|
||||
};
|
||||
|
||||
void check_gpio_param(uint gpio);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Pad Controls + IO Muxing
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue