diff options
Diffstat (limited to 'libhw/w5500.c')
-rw-r--r-- | libhw/w5500.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/libhw/w5500.c b/libhw/w5500.c index a8777db..cd96696 100644 --- a/libhw/w5500.c +++ b/libhw/w5500.c @@ -125,9 +125,16 @@ static const char *w5500_state_str(uint8_t state) { /* libobj *********************************************************************/ +LO_IMPLEMENTATION_C(io_closer, struct _w5500_socket, w5500_tcplist, static) LO_IMPLEMENTATION_C(net_stream_listener, struct _w5500_socket, w5500_tcplist, static) + +LO_IMPLEMENTATION_C(io_closer, struct _w5500_socket, w5500_tcp, static) +LO_IMPLEMENTATION_C(io_bidi_closer, struct _w5500_socket, w5500_tcp, static) LO_IMPLEMENTATION_C(net_stream_conn, struct _w5500_socket, w5500_tcp, static) + +LO_IMPLEMENTATION_C(io_closer, struct _w5500_socket, w5500_udp, static) LO_IMPLEMENTATION_C(net_packet_conn, struct _w5500_socket, w5500_udp, static) + LO_IMPLEMENTATION_C(net_iface, struct w5500, w5500_if, static) /* mid-level utilities ********************************************************/ @@ -746,7 +753,7 @@ static ssize_t w5500_tcp_read(struct _w5500_socket *socket, void *buf, size_t co return avail; } -static int w5500_tcp_close(struct _w5500_socket *socket, bool rd, bool wr) { +static int w5500_tcp_close_inner(struct _w5500_socket *socket, bool rd, bool wr) { debugf("tcp_conn.close(rd=%s, wr=%s)", rd ? "true" : "false", wr ? "true" : "false"); ASSERT_SELF(stream_conn, TCP); @@ -777,6 +784,10 @@ static int w5500_tcp_close(struct _w5500_socket *socket, bool rd, bool wr) { return 0; } +static int w5500_tcp_close(struct _w5500_socket *socket) { return w5500_tcp_close_inner(socket, true, true); } +static int w5500_tcp_close_read(struct _w5500_socket *socket) { return w5500_tcp_close_inner(socket, true, false); } +static int w5500_tcp_close_write(struct _w5500_socket *socket) { return w5500_tcp_close_inner(socket, false, true); } + /* udp_conn methods ***********************************************************/ static ssize_t w5500_udp_sendto(struct _w5500_socket *socket, void *buf, size_t count, @@ -836,8 +847,8 @@ static ssize_t w5500_udp_sendto(struct _w5500_socket *socket, void *buf, size_t } } -static void w5500_udp_set_read_deadline(struct _w5500_socket *socket, uint64_t ns) { - debugf("udp_conn.set_read_deadline(%"PRIu64")", ns); +static void w5500_udp_set_recv_deadline(struct _w5500_socket *socket, uint64_t ns) { + debugf("udp_conn.set_recv_deadline(%"PRIu64")", ns); ASSERT_SELF(packet_conn, UDP); socket->read_deadline_ns = ns; } |