int8_t AsyncClient::_poll(tcp_pcb* pcb){ // Close requested if(_close_pcb){ _close_pcb = false; _close(); return ERR_OK; } uint32_t now = millis(); // ACK Timeout if(_pcb_busy && (now - _pcb_sent_at) >= ASYNC_MAX_ACK_TIME){ _pcb_busy = false; if(_timeout_cb) _timeout_cb(_timeout_cb_arg, this, (now - _pcb_sent_at)); return ERR_OK; } // RX Timeout if(_rx_since_timeout && now - _rx_last_packet >= _rx_since_timeout * 1000){ _close(); return ERR_OK; } // Everything is fine if(_poll_cb) _poll_cb(_poll_cb_arg, this); return ERR_OK; }
int8_t AsyncClient::_poll(tcp_pcb* pcb){ // Close requested if(_close_pcb){ _close_pcb = false; _close(); return ERR_OK; } uint32_t now = millis(); // ACK Timeout if(_pcb_busy && _ack_timeout && (now - _pcb_sent_at) >= _ack_timeout){ _pcb_busy = false; log_w("ack timeout %d", pcb->state); if(_timeout_cb) _timeout_cb(_timeout_cb_arg, this, (now - _pcb_sent_at)); return ERR_OK; } // RX Timeout if(_rx_since_timeout && (now - _rx_last_packet) >= (_rx_since_timeout * 1000)){ log_w("rx timeout %d", pcb->state); _close(); return ERR_OK; } // Everything is fine if(_poll_cb) _poll_cb(_poll_cb_arg, this); return ERR_OK; }