@@ -28,12 +28,7 @@ extern "C"{
28
28
#include " lwip/inet.h"
29
29
#include " lwip/dns.h"
30
30
}
31
-
32
- #if CONFIG_FREERTOS_UNICORE
33
- #define ASYNCTCP_RUNNING_CORE 0
34
- #else
35
- #define ASYNCTCP_RUNNING_CORE 1
36
- #endif
31
+ #include " esp_task_wdt.h"
37
32
38
33
/*
39
34
* TCP/IP Event Task
@@ -146,15 +141,19 @@ static void _handle_async_event(lwip_event_packet_t * e){
146
141
if (e->event == LWIP_TCP_CLEAR){
147
142
_remove_events_with_arg (e->arg );
148
143
} else if (e->event == LWIP_TCP_RECV){
144
+ // ets_printf("-R: 0x%08x\n", e->recv.pcb);
149
145
// ets_printf("R: 0x%08x 0x%08x %d\n", e->arg, e->recv.pcb, e->recv.err);
150
146
AsyncClient::_s_recv (e->arg , e->recv .pcb , e->recv .pb , e->recv .err );
151
147
} else if (e->event == LWIP_TCP_FIN){
148
+ // ets_printf("-F: 0x%08x\n", e->fin.pcb);
152
149
// ets_printf("F: 0x%08x 0x%08x %d\n", e->arg, e->fin.pcb, e->fin.err);
153
150
AsyncClient::_s_fin (e->arg , e->fin .pcb , e->fin .err );
154
151
} else if (e->event == LWIP_TCP_SENT){
152
+ // ets_printf("-S: 0x%08x\n", e->sent.pcb);
155
153
// ets_printf("S: 0x%08x 0x%08x\n", e->arg, e->sent.pcb);
156
154
AsyncClient::_s_sent (e->arg , e->sent .pcb , e->sent .len );
157
155
} else if (e->event == LWIP_TCP_POLL){
156
+ // ets_printf("-P: 0x%08x\n", e->poll.pcb);
158
157
// ets_printf("P: 0x%08x 0x%08x\n", e->arg, e->poll.pcb);
159
158
AsyncClient::_s_poll (e->arg , e->poll .pcb );
160
159
} else if (e->event == LWIP_TCP_ERROR){
@@ -174,7 +173,17 @@ static void _async_service_task(void *pvParameters){
174
173
lwip_event_packet_t * packet = NULL ;
175
174
for (;;) {
176
175
if (_get_async_event (&packet)){
176
+ #if CONFIG_ASYNC_TCP_USE_WDT
177
+ if (esp_task_wdt_add (NULL ) != ESP_OK){
178
+ log_e (" Failed to add async task to WDT" );
179
+ }
180
+ #endif
177
181
_handle_async_event (packet);
182
+ #if CONFIG_ASYNC_TCP_USE_WDT
183
+ if (esp_task_wdt_delete (NULL ) != ESP_OK){
184
+ log_e (" Failed to remove loop task from WDT" );
185
+ }
186
+ #endif
178
187
}
179
188
}
180
189
vTaskDelete (NULL );
@@ -193,7 +202,7 @@ static bool _start_async_task(){
193
202
return false ;
194
203
}
195
204
if (!_async_service_task_handle){
196
- xTaskCreatePinnedToCore (_async_service_task, " async_tcp" , 8192 * 2 , NULL , 3 , &_async_service_task_handle, ASYNCTCP_RUNNING_CORE );
205
+ xTaskCreateUniversal (_async_service_task, " async_tcp" , 8192 * 2 , NULL , 3 , &_async_service_task_handle, CONFIG_ASYNC_TCP_RUNNING_CORE );
197
206
if (!_async_service_task_handle){
198
207
return false ;
199
208
}
@@ -216,7 +225,7 @@ static int8_t _tcp_clear_events(void * arg) {
216
225
}
217
226
218
227
static int8_t _tcp_connected (void * arg, tcp_pcb * pcb, int8_t err) {
219
- // ets_printf("C: 0x%08x\n", pcb);
228
+ // ets_printf("+ C: 0x%08x\n", pcb);
220
229
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc (sizeof (lwip_event_packet_t ));
221
230
e->event = LWIP_TCP_CONNECTED;
222
231
e->arg = arg;
@@ -229,7 +238,7 @@ static int8_t _tcp_connected(void * arg, tcp_pcb * pcb, int8_t err) {
229
238
}
230
239
231
240
static int8_t _tcp_poll (void * arg, struct tcp_pcb * pcb) {
232
- // ets_printf("P: 0x%08x\n", pcb);
241
+ // ets_printf("+ P: 0x%08x\n", pcb);
233
242
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc (sizeof (lwip_event_packet_t ));
234
243
e->event = LWIP_TCP_POLL;
235
244
e->arg = arg;
@@ -244,13 +253,13 @@ static int8_t _tcp_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_
244
253
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc (sizeof (lwip_event_packet_t ));
245
254
e->arg = arg;
246
255
if (pb){
247
- // ets_printf("R: 0x%08x\n", pcb);
256
+ // ets_printf("+ R: 0x%08x\n", pcb);
248
257
e->event = LWIP_TCP_RECV;
249
258
e->recv .pcb = pcb;
250
259
e->recv .pb = pb;
251
260
e->recv .err = err;
252
261
} else {
253
- // ets_printf("D : 0x%08x\n", pcb);
262
+ // ets_printf("+F : 0x%08x\n", pcb);
254
263
e->event = LWIP_TCP_FIN;
255
264
e->fin .pcb = pcb;
256
265
e->fin .err = err;
@@ -264,7 +273,7 @@ static int8_t _tcp_recv(void * arg, struct tcp_pcb * pcb, struct pbuf *pb, int8_
264
273
}
265
274
266
275
static int8_t _tcp_sent (void * arg, struct tcp_pcb * pcb, uint16_t len) {
267
- // ets_printf("S: 0x%08x\n", pcb);
276
+ // ets_printf("+ S: 0x%08x\n", pcb);
268
277
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc (sizeof (lwip_event_packet_t ));
269
278
e->event = LWIP_TCP_SENT;
270
279
e->arg = arg;
@@ -277,7 +286,7 @@ static int8_t _tcp_sent(void * arg, struct tcp_pcb * pcb, uint16_t len) {
277
286
}
278
287
279
288
static void _tcp_error (void * arg, int8_t err) {
280
- // ets_printf("E: 0x%08x\n", arg);
289
+ // ets_printf("+ E: 0x%08x\n", arg);
281
290
lwip_event_packet_t * e = (lwip_event_packet_t *)malloc (sizeof (lwip_event_packet_t ));
282
291
e->event = LWIP_TCP_ERROR;
283
292
e->arg = arg;
@@ -1174,7 +1183,7 @@ int8_t AsyncServer::_s_accepted(void *arg, AsyncClient* client){
1174
1183
1175
1184
// runs on LwIP thread
1176
1185
int8_t AsyncServer::_accept (tcp_pcb* pcb, int8_t err){
1177
- // ets_printf("A: 0x%08x\n", pcb);
1186
+ // ets_printf("+ A: 0x%08x\n", pcb);
1178
1187
if (_connect_cb){
1179
1188
if (_noDelay) {
1180
1189
tcp_nagle_disable (pcb);
0 commit comments