215 |
conn->acceptmbox = SYS_MBOX_NULL; |
conn->acceptmbox = SYS_MBOX_NULL; |
216 |
conn->sem = SYS_SEM_NULL; |
conn->sem = SYS_SEM_NULL; |
217 |
conn->state = NETCONN_NONE; |
conn->state = NETCONN_NONE; |
218 |
|
conn->socket = 0; |
219 |
|
conn->callback = 0; |
220 |
|
conn->recv_avail = 0; |
221 |
return conn; |
return conn; |
222 |
} |
} |
223 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |
224 |
|
struct |
225 |
|
netconn *netconn_new_with_callback(enum netconn_type t, |
226 |
|
void (*callback)(struct netconn *, enum netconn_evt, u16_t len)) |
227 |
|
{ |
228 |
|
struct netconn *conn; |
229 |
|
|
230 |
|
/* get a netconn and then initialize callback pointer and socket */ |
231 |
|
conn = netconn_new(t); |
232 |
|
if (conn) |
233 |
|
conn->callback = callback; |
234 |
|
return conn; |
235 |
|
} |
236 |
|
|
237 |
|
/*-----------------------------------------------------------------------------------*/ |
238 |
err_t |
err_t |
239 |
netconn_delete(struct netconn *conn) |
netconn_delete(struct netconn *conn) |
240 |
{ |
{ |
454 |
} |
} |
455 |
|
|
456 |
sys_mbox_fetch(conn->acceptmbox, (void **)&newconn); |
sys_mbox_fetch(conn->acceptmbox, (void **)&newconn); |
457 |
|
/* Register event with callback */ |
458 |
|
if (conn->callback) |
459 |
|
(*conn->callback)(conn, NETCONN_EVT_RCVMINUS, 0); |
460 |
|
|
461 |
return newconn; |
return newconn; |
462 |
} |
} |
463 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |
496 |
} |
} |
497 |
|
|
498 |
sys_mbox_fetch(conn->recvmbox, (void **)&p); |
sys_mbox_fetch(conn->recvmbox, (void **)&p); |
499 |
|
conn->recv_avail -= p->tot_len; |
500 |
|
/* Register event with callback */ |
501 |
|
if (conn->callback) |
502 |
|
(*conn->callback)(conn, NETCONN_EVT_RCVMINUS, p->tot_len); |
503 |
|
|
504 |
/* If we are closed, we indicate that we no longer wish to recieve |
/* If we are closed, we indicate that we no longer wish to recieve |
505 |
data by setting conn->recvmbox to SYS_MBOX_NULL. */ |
data by setting conn->recvmbox to SYS_MBOX_NULL. */ |
506 |
if(p == NULL) { |
if(p == NULL) { |
533 |
memp_freep(MEMP_API_MSG, msg); |
memp_freep(MEMP_API_MSG, msg); |
534 |
} else { |
} else { |
535 |
sys_mbox_fetch(conn->recvmbox, (void **)&buf); |
sys_mbox_fetch(conn->recvmbox, (void **)&buf); |
536 |
|
conn->recv_avail -= buf->p->tot_len; |
537 |
|
/* Register event with callback */ |
538 |
|
if (conn->callback) |
539 |
|
(*conn->callback)(conn, NETCONN_EVT_RCVMINUS, buf->p->tot_len); |
540 |
} |
} |
541 |
|
|
542 |
|
|
648 |
sys_sem_free(conn->sem); |
sys_sem_free(conn->sem); |
649 |
conn->sem = SYS_SEM_NULL; |
conn->sem = SYS_SEM_NULL; |
650 |
} |
} |
651 |
|
|
652 |
return conn->err; |
return conn->err; |
653 |
} |
} |
654 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |
686 |
return conn->err; |
return conn->err; |
687 |
} |
} |
688 |
/*-----------------------------------------------------------------------------------*/ |
/*-----------------------------------------------------------------------------------*/ |
|
|
|
|
|
|
|
|
|
|
|
|