@@ -85,7 +85,7 @@ typedef struct {
85
85
} lwip_event_packet_t ;
86
86
87
87
static QueueHandle_t _async_queue;
88
- static TaskHandle_t _async_service_task_handle = NULL ;
88
+ static TaskHandle_t _async_service_task_handle = NULL ;
89
89
90
90
91
91
SemaphoreHandle_t _slots_lock;
@@ -226,7 +226,8 @@ static bool _start_async_task() {
226
226
return false ;
227
227
}
228
228
if (!_async_service_task_handle) {
229
- xTaskCreateUniversal (_async_service_task, " async_tcp" , 8192 * 2 , NULL , 3 , &_async_service_task_handle, CONFIG_ASYNC_TCP_RUNNING_CORE);
229
+ // xTaskCreateUniversal(_async_service_task, "async_tcp", 8192 * 2, NULL, 3, &_async_service_task_handle, CONFIG_ASYNC_TCP_RUNNING_CORE);
230
+ xTaskCreate (_async_service_task, " async_tcp" , 8192 , NULL , CONFIG_ASYNC_TCP_TASK_PRIORITY, &_async_service_task_handle);
230
231
if (!_async_service_task_handle) {
231
232
return false ;
232
233
}
@@ -1040,9 +1041,12 @@ size_t AsyncClient::write(const char * data) {
1040
1041
1041
1042
size_t AsyncClient::write (const char * data, size_t size, uint8_t apiflags) {
1042
1043
size_t will_send = add (data, size, apiflags);
1043
- if (!will_send || ! send () ) {
1044
+ if (!will_send) {
1044
1045
return 0 ;
1045
1046
}
1047
+ while (connected () && !send ()) {
1048
+ taskYIELD ();
1049
+ }
1046
1050
return will_send;
1047
1051
}
1048
1052
@@ -1080,6 +1084,18 @@ bool AsyncClient::getNoDelay() {
1080
1084
return tcp_nagle_disabled (_pcb);
1081
1085
}
1082
1086
1087
+ void AsyncClient::setKeepAlive (uint32_t ms, uint8_t cnt) {
1088
+ if (ms != 0 ) {
1089
+ _pcb->so_options |= SOF_KEEPALIVE; // Turn on TCP Keepalive for the given pcb
1090
+ // Set the time between keepalive messages in milli-seconds
1091
+ _pcb->keep_idle = ms;
1092
+ _pcb->keep_intvl = ms;
1093
+ _pcb->keep_cnt = cnt; // The number of unanswered probes required to force closure of the socket
1094
+ } else {
1095
+ _pcb->so_options &= ~SOF_KEEPALIVE; // Turn off TCP Keepalive for the given pcb
1096
+ }
1097
+ }
1098
+
1083
1099
uint16_t AsyncClient::getMss () {
1084
1100
if (!_pcb) {
1085
1101
return 0 ;
0 commit comments