Skip to content

Commit 85ecdd3

Browse files
FreeRTOS LWIP CYW43 wrappers only on CYW43 boards
Fixes #3180 The FreeRTOS lwip thread needs to not have any calls to the CYW43 functions w/o having an actual CYW43 onboard. Ifdef them out as needed.
1 parent 13f683d commit 85ecdd3

File tree

3 files changed

+8
-23
lines changed

3 files changed

+8
-23
lines changed

cores/rp2040/freertos/freertos-lwip.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ static void lwipThread(void *params) {
384384
*(r->ret) = __real_ethernet_input(r->p, r->netif);
385385
break;
386386
}
387+
#if defined(PICO_CYW43_SUPPORTED)
387388
case __cyw43_wifi_join: {
388389
__cyw43_wifi_join_req *r = (__cyw43_wifi_join_req *)w.req;
389390
*(r->ret) = __real_cyw43_wifi_join(r->self, r->ssid_len, r->ssid, r->key_len, r->key, r->auth_type, r->bssid, r->channel);
@@ -394,6 +395,7 @@ static void lwipThread(void *params) {
394395
*(r->ret) = __real_cyw43_wifi_leave(r->self, r->itf);
395396
break;
396397
}
398+
#endif
397399
case __callback: {
398400
__callback_req *r = (__callback_req *)w.req;
399401
r->cb(r->cbData);

cores/rp2040/lwip_wrap.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,6 +832,7 @@ extern "C" {
832832
return __real_ethernet_input(p, netif);
833833
}
834834

835+
#if defined(PICO_CYW43_SUPPORTED)
835836
int __real_cyw43_wifi_join(cyw43_t *self, size_t ssid_len, const uint8_t *ssid, size_t key_len, const uint8_t *key, uint32_t auth_type, const uint8_t *bssid, uint32_t channel);
836837
int __wrap_cyw43_wifi_join(cyw43_t *self, size_t ssid_len, const uint8_t *ssid, size_t key_len, const uint8_t *key, uint32_t auth_type, const uint8_t *bssid, uint32_t channel) {
837838
#ifdef __FREERTOS
@@ -857,7 +858,7 @@ extern "C" {
857858
#endif
858859
return __real_cyw43_wifi_leave(self, itf);
859860
}
860-
861+
#endif
861862

862863

863864
void lwip_callback(void (*cb)(void *), void *cbData, __callback_req *buffer) {

cores/rp2040/lwip_wrap.h

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,6 @@ extern recursive_mutex_t __lwipMutex;
4848
class LWIPMutex {
4949
public:
5050
LWIPMutex() {
51-
// if (ethernet_arch_lwip_gpio_mask) {
52-
// ethernet_arch_lwip_gpio_mask();
53-
// }
54-
//#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
55-
// if (rp2040.isPicoW()) {
56-
// cyw43_arch_lwip_begin();
57-
// return;
58-
// }
59-
//#endif
6051
#if !defined(__FREERTOS)
6152
if (ethernet_arch_lwip_begin) {
6253
ethernet_arch_lwip_begin();
@@ -67,24 +58,11 @@ class LWIPMutex {
6758
}
6859

6960
~LWIPMutex() {
70-
#if !defined(__FREERTOS)
71-
//#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
72-
// if (rp2040.isPicoW()) {
73-
// cyw43_arch_lwip_end();
74-
// } else {
75-
//#endif
7661
if (ethernet_arch_lwip_end) {
7762
ethernet_arch_lwip_end();
7863
} else {
7964
recursive_mutex_exit(&__lwipMutex);
8065
}
81-
//#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
82-
// }
83-
//#endif
84-
#endif
85-
// if (ethernet_arch_lwip_gpio_unmask) {
86-
// ethernet_arch_lwip_gpio_unmask();
87-
// }
8866
}
8967
};
9068

@@ -167,8 +145,10 @@ typedef enum {
167145

168146
__ethernet_input = 9000,
169147

148+
#if defined(PICO_CYW43_SUPPORTED)
170149
__cyw43_wifi_join = 9500,
171150
__cyw43_wifi_leave,
151+
#endif
172152

173153
__callback = 10000,
174154
} __lwip_op;
@@ -573,6 +553,7 @@ typedef struct {
573553
err_t *ret;
574554
} __ethernet_input_req;
575555

556+
#if defined(PICO_CYW43_SUPPORTED)
576557
typedef struct {
577558
cyw43_t *self;
578559
size_t ssid_len;
@@ -590,6 +571,7 @@ typedef struct {
590571
int itf;
591572
int *ret;
592573
} __cyw43_wifi_leave_req;
574+
#endif
593575

594576
// Run a callback in the LWIP thread (i.e. for Ethernet device polling and packet reception)
595577
// When in an interrupt, need to pass in a heap-allocated buffer

0 commit comments

Comments
 (0)