68netconn_new_with_proto_and_callback(
enum netconn_type t,
u8_t proto, netconn_callback callback)
73 conn = netconn_alloc(t, callback);
75 msg.function = do_newconn;
76 msg.msg.msg.n.proto = proto;
103netconn_delete(
struct netconn *conn)
112 msg.function = do_delconn;
144 msg.function = do_getaddr;
146 msg.msg.msg.ad.ipaddr = addr;
147 msg.msg.msg.ad.port = port;
148 msg.msg.msg.ad.local = local;
151 NETCONN_SET_SAFE_ERR(conn, err);
173 msg.function = do_bind;
175 msg.msg.msg.bc.ipaddr = addr;
176 msg.msg.msg.bc.port = port;
179 NETCONN_SET_SAFE_ERR(conn, err);
199 msg.function = do_connect;
201 msg.msg.msg.bc.ipaddr = addr;
202 msg.msg.msg.bc.port = port;
204 err = tcpip_apimsg(&msg);
206 NETCONN_SET_SAFE_ERR(conn, err);
217netconn_disconnect(
struct netconn *conn)
224 msg.function = do_disconnect;
228 NETCONN_SET_SAFE_ERR(conn, err);
241netconn_listen_with_backlog(
struct netconn *conn,
u8_t backlog)
252 msg.function = do_listen;
254#if TCP_LISTEN_BACKLOG
255 msg.msg.msg.lb.backlog = backlog;
259 NETCONN_SET_SAFE_ERR(conn, err);
277netconn_accept(
struct netconn *conn,
struct netconn **new_conn)
280 struct netconn *newconn;
282#if TCP_LISTEN_BACKLOG
291 err = conn->last_err;
307 API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
309 if (newconn ==
NULL) {
311 NETCONN_SET_SAFE_ERR(conn,
ERR_ABRT);
314#if TCP_LISTEN_BACKLOG
316 msg.function = do_recv;
342netconn_recv_data(
struct netconn *conn,
void **new_buf)
356 err = conn->last_err;
375#if (LWIP_UDP || LWIP_RAW)
376 if (conn->type == NETCONN_TCP)
379 if (!netconn_get_noautorecved(conn) || (buf ==
NULL)) {
383 msg.function = do_recv;
386 msg.msg.msg.r.len = ((
struct pbuf *)buf)->tot_len;
388 msg.msg.msg.r.len = 1;
396 API_EVENT(conn, NETCONN_EVT_RCVMINUS, 0);
398 NETCONN_SET_SAFE_ERR(conn,
ERR_CLSD);
401 len = ((
struct pbuf *)buf)->tot_len;
404#if LWIP_TCP && (LWIP_UDP || LWIP_RAW)
407#if (LWIP_UDP || LWIP_RAW)
418 API_EVENT(conn, NETCONN_EVT_RCVMINUS,
len);
437netconn_recv_tcp_pbuf(
struct netconn *conn,
struct pbuf **new_buf)
440 netconn_type(conn) == NETCONN_TCP,
return ERR_ARG;);
442 return netconn_recv_data(conn, (
void **)new_buf);
454netconn_recv(
struct netconn *conn,
struct netbuf **new_buf)
467#if (LWIP_UDP || LWIP_RAW)
468 if (conn->type == NETCONN_TCP)
476 NETCONN_SET_SAFE_ERR(conn,
ERR_MEM);
480 err = netconn_recv_data(conn, (
void **)&
p);
496#if LWIP_TCP && (LWIP_UDP || LWIP_RAW)
500#if (LWIP_UDP || LWIP_RAW)
501 return netconn_recv_data(conn, (
void **)new_buf);
520 if ((conn !=
NULL) && (conn->type == NETCONN_TCP) &&
521 (netconn_get_noautorecved(conn))) {
526 msg.function = do_recv;
528 msg.msg.msg.r.len =
length;
554 return netconn_send(conn, buf);
567netconn_send(
struct netconn *conn,
struct netbuf *buf)
575 msg.function = do_send;
580 NETCONN_SET_SAFE_ERR(conn, err);
598netconn_write_partly(
struct netconn *conn,
const void *dataptr,
size_t size,
599 u8_t apiflags,
size_t *bytes_written)
606 LWIP_ERROR(
"netconn_write: invalid conn->type", (conn->type == NETCONN_TCP),
return ERR_VAL;);
610 dontblock = netconn_is_nonblocking(conn) || (apiflags & NETCONN_DONTBLOCK);
611 if (dontblock && !bytes_written) {
618 msg.function = do_write;
620 msg.msg.msg.w.dataptr = dataptr;
621 msg.msg.msg.w.apiflags = apiflags;
622 msg.msg.msg.w.len =
size;
624 if (conn->send_timeout != 0) {
627 msg.msg.msg.w.time_started =
sys_now();
629 msg.msg.msg.w.time_started = 0;
637 if ((err ==
ERR_OK) && (bytes_written !=
NULL)) {
640 || (conn->send_timeout != 0)
644 *bytes_written = msg.msg.msg.w.len;
647 *bytes_written =
size;
651 NETCONN_SET_SAFE_ERR(conn, err);
663netconn_close_shutdown(
struct netconn *conn,
u8_t how)
670 msg.function = do_close;
673 msg.msg.msg.sd.shut = how;
676 err = tcpip_apimsg(&msg);
678 NETCONN_SET_SAFE_ERR(conn, err);
689netconn_close(
struct netconn *conn)
692 return netconn_close_shutdown(conn, NETCONN_SHUT_RDWR);
702netconn_shutdown(
struct netconn *conn,
u8_t shut_rx,
u8_t shut_tx)
704 return netconn_close_shutdown(conn, (shut_rx ? NETCONN_SHUT_RD : 0) | (shut_tx ? NETCONN_SHUT_WR : 0));
719netconn_join_leave_group(
struct netconn *conn,
722 enum netconn_igmp join_or_leave)
729 msg.function = do_join_leave_group;
731 msg.msg.msg.jl.multiaddr = multiaddr;
732 msg.msg.msg.jl.netif_addr = netif_addr;
733 msg.msg.msg.jl.join_or_leave = join_or_leave;
736 NETCONN_SET_SAFE_ERR(conn, err);
753netconn_gethostbyname(
const char *name,
ip_addr_t *addr)
755 struct dns_api_msg msg;
#define LWIP_UNUSED_ARG(x)
#define LWIP_DEBUGF(debug, message)
#define LWIP_ERROR(message, expression, handler)
#define LWIP_ASSERT(message, assertion)
#define ip_addr_set(dest, src)
typedefPACK_STRUCT_END struct ip_addr ip_addr_t
#define ip_addr_set_any(ipaddr)
void * memp_malloc(memp_t type)
void memp_free(memp_t type, void *mem)
int sys_sem_valid(sys_sem_t *sem)
u32_t sys_arch_mbox_fetch(sys_mbox_t *mbox, void **msg, u32_t timeout)
void sys_sem_free(sys_sem_t *sem)
#define sys_sem_wait(sem)
int sys_mbox_valid(sys_mbox_t *mbox)
#define SYS_ARCH_DEC(var, val)
void sys_mbox_free(sys_mbox_t *mbox)
err_t sys_sem_new(sys_sem_t *sem, u8_t count)
#define tcpip_callback(f, ctx)