Skip to content

Commit 4e68e45

Browse files
committed
Declare all host GPIO functions weak
This allows them to be easily overridden by user code for testing purposes. Refs #2736
1 parent 299fb7d commit 4e68e45

File tree

1 file changed

+66
-36
lines changed

1 file changed

+66
-36
lines changed

src/host/hardware_gpio/gpio.c

Lines changed: 66 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,142 +6,172 @@
66

77
#include "hardware/gpio.h"
88

9-
// todo weak or replace? probably weak
10-
void gpio_set_function(uint gpio, enum gpio_function fn) {
9+
PICO_WEAK_FUNCTION_DEF(gpio_set_function)
10+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_function)(uint gpio, enum gpio_function fn) {
1111

1212
}
1313

14-
void gpio_pull_up(uint gpio) {
14+
PICO_WEAK_FUNCTION_DEF(gpio_pull_up)
15+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_up)(uint gpio) {
1516

1617
}
1718

18-
void gpio_pull_down(uint gpio) {
19+
PICO_WEAK_FUNCTION_DEF(gpio_pull_down)
20+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_pull_down)(uint gpio) {
1921

2022
}
2123

22-
void gpio_disable_pulls(uint gpio) {
24+
PICO_WEAK_FUNCTION_DEF(gpio_disable_pulls)
25+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_disable_pulls)(uint gpio) {
2326

2427
}
2528

26-
void gpio_set_pulls(uint gpio, bool up, bool down) {
29+
PICO_WEAK_FUNCTION_DEF(gpio_set_pulls)
30+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_pulls)(uint gpio, bool up, bool down) {
2731

2832
}
2933

30-
void gpio_set_irqover(uint gpio, uint value) {
34+
PICO_WEAK_FUNCTION_DEF(gpio_set_irqover)
35+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irqover)(uint gpio, uint value) {
3136

3237
}
3338

34-
void gpio_set_outover(uint gpio, uint value) {
39+
PICO_WEAK_FUNCTION_DEF(gpio_set_outover)
40+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_outover)(uint gpio, uint value) {
3541

3642
}
3743

38-
void gpio_set_inover(uint gpio, uint value) {
44+
PICO_WEAK_FUNCTION_DEF(gpio_set_inover)
45+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_inover)(uint gpio, uint value) {
3946

4047
}
4148

42-
void gpio_set_oeover(uint gpio, uint value) {
49+
PICO_WEAK_FUNCTION_DEF(gpio_set_oeover)
50+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_oeover)(uint gpio, uint value) {
4351

4452
}
4553

46-
void gpio_set_input_hysteresis_enabled(uint gpio, bool enabled){
54+
PICO_WEAK_FUNCTION_DEF(gpio_set_input_hysteresis_enabled)
55+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_hysteresis_enabled)(uint gpio, bool enabled){
4756

4857
}
4958

50-
bool gpio_is_input_hysteresis_enabled(uint gpio){
59+
PICO_WEAK_FUNCTION_DEF(gpio_is_input_hysteresis_enabled)
60+
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_is_input_hysteresis_enabled)(uint gpio){
5161
return true;
5262
}
5363

54-
void gpio_set_slew_rate(uint gpio, enum gpio_slew_rate slew){
64+
PICO_WEAK_FUNCTION_DEF(gpio_set_slew_rate)
65+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_slew_rate)(uint gpio, enum gpio_slew_rate slew){
5566

5667
}
5768

58-
enum gpio_slew_rate gpio_get_slew_rate(uint gpio){
69+
PICO_WEAK_FUNCTION_DEF(gpio_get_slew_rate)
70+
enum gpio_slew_rate PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_slew_rate)(uint gpio){
5971
return GPIO_SLEW_RATE_FAST;
6072
}
6173

62-
void gpio_set_drive_strength(uint gpio, enum gpio_drive_strength drive){
74+
PICO_WEAK_FUNCTION_DEF(gpio_set_drive_strength)
75+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_drive_strength)(uint gpio, enum gpio_drive_strength drive){
6376

6477
}
6578

66-
enum gpio_drive_strength gpio_get_drive_strength(uint gpio){
79+
PICO_WEAK_FUNCTION_DEF(gpio_get_drive_strength)
80+
enum gpio_drive_strength PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_drive_strength)(uint gpio){
6781
return GPIO_DRIVE_STRENGTH_4MA;
6882
}
6983

70-
71-
void gpio_set_irq_enabled(uint gpio, uint32_t events, bool enable) {
84+
PICO_WEAK_FUNCTION_DEF(gpio_set_irq_enabled)
85+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_irq_enabled)(uint gpio, uint32_t events, bool enable) {
7286

7387
}
7488

75-
void gpio_acknowledge_irq(uint gpio, uint32_t events) {
89+
PICO_WEAK_FUNCTION_DEF(gpio_acknowledge_irq)
90+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_acknowledge_irq)(uint gpio, uint32_t events) {
7691

7792
}
7893

79-
void gpio_init(uint gpio) {
94+
PICO_WEAK_FUNCTION_DEF(gpio_init)
95+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init)(uint gpio) {
8096

8197
}
8298

8399
PICO_WEAK_FUNCTION_DEF(gpio_get)
84-
85100
bool PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get)(uint gpio) {
86101
return 0;
87102
}
88103

89-
uint32_t gpio_get_all() {
104+
PICO_WEAK_FUNCTION_DEF(gpio_get_all)
105+
uint32_t PICO_WEAK_FUNCTION_IMPL_NAME(gpio_get_all)() {
90106
return 0;
91107
}
92108

93-
void gpio_set_mask(uint32_t mask) {
109+
PICO_WEAK_FUNCTION_DEF(gpio_set_mask)
110+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_mask)(uint32_t mask) {
94111

95112
}
96113

97-
void gpio_clr_mask(uint32_t mask) {
114+
PICO_WEAK_FUNCTION_DEF(gpio_clr_mask)
115+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_clr_mask)(uint32_t mask) {
98116

99117
}
100118

101-
void gpio_xor_mask(uint32_t mask) {
119+
PICO_WEAK_FUNCTION_DEF(gpio_xor_mask)
120+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_xor_mask)(uint32_t mask) {
102121

103122
}
104123

105-
void gpio_put_masked(uint32_t mask, uint32_t value) {
124+
PICO_WEAK_FUNCTION_DEF(gpio_put_masked)
125+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_masked)(uint32_t mask, uint32_t value) {
106126

107127
}
108128

109-
void gpio_put_all(uint32_t value) {
129+
PICO_WEAK_FUNCTION_DEF(gpio_put_all)
130+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put_all)(uint32_t value) {
110131

111132
}
112133

113-
void gpio_put(uint gpio, int value) {
134+
PICO_WEAK_FUNCTION_DEF(gpio_put)
135+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_put)(uint gpio, int value) {
114136

115137
}
116138

117-
void gpio_set_dir_out_masked(uint32_t mask) {
139+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_out_masked)
140+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_out_masked)(uint32_t mask) {
118141

119142
}
120143

121-
void gpio_set_dir_in_masked(uint32_t mask) {
144+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_in_masked)
145+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_in_masked)(uint32_t mask) {
122146

123147
}
124148

125-
void gpio_set_dir_masked(uint32_t mask, uint32_t value) {
149+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_masked)
150+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_masked)(uint32_t mask, uint32_t value) {
126151

127152
}
128153

129-
void gpio_set_dir_all_bits(uint32_t value) {
154+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir_all_bits)
155+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir_all_bits)(uint32_t value) {
130156

131157
}
132158

133-
void gpio_set_dir(uint gpio, bool out) {
159+
PICO_WEAK_FUNCTION_DEF(gpio_set_dir)
160+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_dir)(uint gpio, bool out) {
134161

135162
}
136163

137-
void gpio_debug_pins_init() {
164+
PICO_WEAK_FUNCTION_DEF(gpio_debug_pins_init)
165+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_debug_pins_init)() {
138166

139167
}
140168

141-
void gpio_set_input_enabled(uint gpio, bool enable) {
169+
PICO_WEAK_FUNCTION_DEF(gpio_set_input_enabled)
170+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_set_input_enabled)(uint gpio, bool enable) {
142171

143172
}
144173

145-
void gpio_init_mask(uint gpio_mask) {
174+
PICO_WEAK_FUNCTION_DEF(gpio_init_mask)
175+
void PICO_WEAK_FUNCTION_IMPL_NAME(gpio_init_mask)(uint gpio_mask) {
146176

147177
}

0 commit comments

Comments
 (0)