33uint16_t RF24Server::_port;
34struct tcp_pcb* RF24Server::sPcb;
35EthernetClient::ConnectState* RF24Server::serverState;
52 for (uip_userdata_t* data = &RF24Client::all_data[0]; data < &RF24Client::all_data[UIP_CONNS]; data++)
54 if (data->packets_in != 0 && (((data->state & UIP_CLIENT_CONNECTED) && uip_conns[data->state & UIP_CLIENT_SOCKETS].lport == _port) || ((data->state & UIP_CLIENT_REMOTECLOSED) && ((uip_userdata_closed_t*)data)->lport == _port)))
74 #if defined RF24ETHERNET_CORE_REQUIRES_LOCKING
76 ETHERNET_APPLY_LOCK();
82 if (sPcb ==
nullptr) {
86 if (sPcb !=
nullptr) {
90 err_t err = tcp_bind(sPcb, IP_ADDR_ANY, RF24Server::_port);
97 if (serverState ==
nullptr) {
103 if (serverState !=
nullptr) {
104 serverState->finished =
false;
105 serverState->connected =
false;
106 serverState->result = 0;
107 serverState->waiting_for_ack =
false;
109 sPcb = tcp_listen_with_backlog(sPcb, 1);
111 if (sPcb !=
nullptr) {
112 tcp_arg(sPcb, serverState);
113 tcp_accept(sPcb, RF24Client::accept);
119 #if defined RF24ETHERNET_CORE_REQUIRES_LOCKING
121 ETHERNET_REMOVE_LOCK();
151 for (uip_userdata_t* data = &RF24Client::all_data[0]; data < &RF24Client::all_data[UIP_CONNS]; data++)
153 if ((data->state & UIP_CLIENT_CONNECTED) && uip_conns[data->state & UIP_CLIENT_SOCKETS].lport == _port)
154 ret += RF24Client::_write(data, buf, size);
158 RF24Client::_write(&data, buf, size);
168 #if UIP_CONNECTION_TIMEOUT > 0
169 for (uint8_t i = 0; i < UIP_CONNS; i++) {
170 uip_userdata_t* data = &RF24Client::all_data[i];
172 data->connectTimeout = timeout;
177 RF24Client::serverConnectionTimeout = timeout;
#define INCOMING_DATA_SIZE
RF24EthernetClass RF24Ethernet
static void error_callback(void *arg, err_t err)
static ConnectState * gState[2]
void setTimeout(uint32_t timeout)
#define IF_RF24ETHERNET_DEBUG_CLIENT(x)