Skip to content

Commit bff5217

Browse files
Make sure CYW43 GPIO writes also protected
1 parent 4255caa commit bff5217

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

cores/rp2040/lwip_wrap.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -892,9 +892,14 @@ extern "C" {
892892
return __real_cyw43_arch_wifi_connect_bssid_timeout_ms(ssid, bssid, pw, auth, timeout_ms);
893893
}
894894
extern int __real_cyw43_arch_wifi_connect_timeout_ms(const char *ssid, const char *pw, uint32_t auth, uint32_t timeout_ms);
895-
extern "C" int __wrap_cyw43_arch_wifi_connect_timeout_ms(const char *ssid, const char *pw, uint32_t auth, uint32_t timeout_ms) {
895+
int __wrap_cyw43_arch_wifi_connect_timeout_ms(const char *ssid, const char *pw, uint32_t auth, uint32_t timeout_ms) {
896896
return __real_cyw43_arch_wifi_connect_timeout_ms(ssid, pw, auth, timeout_ms);
897897
}
898+
extern void __real_cyw43_arch_gpio_put(uint wl_gpio, bool value);
899+
void __wrap_cyw43_arch_gpio_put(uint wl_gpio, bool value) {
900+
__real_cyw43_arch_gpio_put(wl_gpio, value);
901+
}
902+
898903

899904
#endif
900905

lib/core_wrap.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,4 @@
9292
-Wl,--wrap=cyw43_schedule_internal_poll_dispatch
9393
-Wl,--wrap=cyw43_arch_wifi_connect_bssid_timeout_ms
9494
-Wl,--wrap=cyw43_arch_wifi_connect_timeout_ms
95+
-Wl,--wrap=cyw43_arch_gpio_put

libraries/lwIP_CYW43/src/cyw43_driver_freertos.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,4 +226,18 @@ extern "C" int __wrap_cyw43_arch_wifi_connect_timeout_ms(const char *ssid, const
226226
return __wrap_cyw43_arch_wifi_connect_bssid_timeout_ms(ssid, nullptr, pw, auth, timeout_ms);
227227
}
228228

229+
extern "C" void __real_cyw43_arch_gpio_put(uint wl_gpio, bool value);
230+
void do_cyw43_arch_gpio_put(void *data) {
231+
uint32_t d = (uint32_t)data;
232+
uint wl_gpio = d >> 1;
233+
bool value = d & 1;
234+
__real_cyw43_arch_gpio_put(wl_gpio, value);
235+
}
236+
237+
extern "C" void __wrap_cyw43_arch_gpio_put(uint wl_gpio, bool value) {
238+
uint32_t cbdata = (wl_gpio << 1) | (value ? 1 : 0);
239+
lwip_callback(do_cyw43_arch_gpio_put, (void *)cbdata);
240+
}
241+
242+
229243
#endif

0 commit comments

Comments
 (0)