Paul Sokolovsky
0912334f54
zephyr/modusocket: getaddrinfo: Use RAISE_ERRNO for proper error decoding.
2017-05-17 00:21:22 +03:00
Paul Sokolovsky
aa9ce283c2
zephyr/modusocket: Get rid of cur_pkt object member.
...
Instead, just peek a packet at the head of the queue and work with it.
2017-05-16 13:46:54 +03:00
Paul Sokolovsky
a3008e447c
zephyr/modusocket: First step to switch to alternative FIFO processing.
...
Here we wait for non-empty FIFO, and then directly access/drop its head
element.
2017-05-16 13:43:06 +03:00
Paul Sokolovsky
0c57979ce2
zephyr/modusocket: Implement getaddrinfo().
2017-05-13 16:42:35 +03:00
Paul Sokolovsky
86c4544ef9
zephyr/modusocket: If there're no packets in recv_q, cancel waiter.
...
This solves a case when socker_read() has blocked on fifo, and then peer
closed event arrives.
2017-05-13 16:22:14 +03:00
Paul Sokolovsky
69f0b4ad5b
zephyr/modusocket: Switch to net_pkt_append() returning length.
...
Requires patch in review.
2017-05-13 16:05:10 +03:00
Paul Sokolovsky
39d3335606
zephyr/modusocket: Update for net_pkt refactor.
2017-05-13 15:47:47 +03:00
Paul Sokolovsky
c022c9a2f0
zephyr/modusocket: Wrap pkt_get_info() call.
...
The most important info it returns are numbers of free buffers
in different pools (rx/tx packet headers, data fragments).
2017-05-13 15:23:31 +03:00
Paul Sokolovsky
50d7ed325a
zephyr/modusocket: Add SOL_SOCKET and SO_REUSEADDR constants.
2017-05-12 21:55:42 +03:00
Paul Sokolovsky
1659c0645d
zephyr/modusocket: Add dummy setsockopt() implementation.
2017-05-12 21:54:32 +03:00
Paul Sokolovsky
31bbcd448c
zephyr/modusocket: Add dummy makefile() implementation.
2017-04-27 14:57:49 +03:00
Paul Sokolovsky
868453d3d8
zephyr/modusocket: sock_read: Check socket status only at the start of packet.
...
Otherwise, if we already have a packet in progress, finish it first, before
check "peer closed" status.
2017-04-26 09:14:41 +03:00
Paul Sokolovsky
1fe0f678f8
zephyr/modusocket: Add read/readline/readinto stream methods.
2017-04-26 08:43:07 +03:00
Paul Sokolovsky
ef55be159c
zephyr/modusocket: Refactor recv() into stream read() method.
2017-04-26 08:43:07 +03:00
Paul Sokolovsky
63068875c5
zephyr/modusocket: Enable stream write() method.
2017-04-26 01:06:42 +03:00
Paul Sokolovsky
0e177e0649
zephyr/modusocket: Refactor send() into stream write() method.
2017-04-26 01:05:54 +03:00
Paul Sokolovsky
209eaec599
socket_send: Don't send more than MTU allows.
...
As Zephyr currently doesn't handle MTU itself (ZEP-1998), limit amount
of data we send on our side.
Also, if we get unsuccessful result from net_nbuf_append(), calculate
how much data it has added still. This works around ZEP-1984.
2017-04-14 19:46:27 +03:00
Paul Sokolovsky
84e17063c3
zephyr/modusocket: Strip packet header right in the receive callback.
...
Instead of complicating recv() implementation.
2017-04-13 22:19:16 +03:00
Paul Sokolovsky
81d302b8f8
zephyr/modusocket: Call net_nbuf_print_frags() in recv callback if DEBUG > 1.
2017-04-11 15:25:42 +03:00
Paul Sokolovsky
8ef469f7ca
zephyr/modusocket: Implement accept().
2017-04-08 00:33:09 +03:00
Paul Sokolovsky
96166ec165
zephyr/modusocket: socket_bind: Don't set recv callback on STREAM sockets.
...
For stream sockets, next exected operation is listen().
2017-04-08 00:30:17 +03:00
Paul Sokolovsky
f1c0676a70
zephyr/modusocket: Implement listen().
2017-04-07 16:47:10 +03:00
Paul Sokolovsky
1da8404647
modusocket: Handle a case when recv_q is empty when EOF is signaled.
...
In this case, we can mark socket as closed directly.
2017-04-06 10:12:14 +03:00
Paul Sokolovsky
faf333c04f
zephyr/modusocket: Factor out "extended k_fifo API".
...
Internal structure of k_fifo changed between 1.7 and 1.8, so we need
to abstract it away. This adds more functions than currently used, for
future work.
2017-04-05 13:39:16 +03:00
Paul Sokolovsky
2908c3ca41
zephyr/modusocket: Factor out socket_new() function.
...
It will be reused e.g. for accept() implementation.
2017-04-04 06:28:14 +03:00
Paul Sokolovsky
6e99a8c94e
zephyr/modusocket: Be sure to use MP_OBJ_FROM_PTR.
2017-04-04 06:21:09 +03:00
Paul Sokolovsky
ca81c3ab0b
zephyr/modusocket: Implement recv() for TCP sockets.
...
Short read approach is taken - at most, the remaining data in the current
fragment will be returned.
2017-04-02 16:27:09 +03:00
Paul Sokolovsky
3df65e9bae
zephyr/modusocket: Implement recv() for UDP sockets.
...
The foundation of recv() support is per-socket queue of incoming packets,
implemented using Zephyr FIFO object. This patch implements just recv()
for UDP, because TCP recv() requires much more fine-grained control of
network fragments and handling other issues, like EOF condition, etc.
2017-04-01 09:20:17 +03:00
Paul Sokolovsky
64d00511e1
zephyr/modusocket: Implement send().
2017-03-31 23:14:39 +03:00
Paul Sokolovsky
88582e33cc
zephyr/modusocket: Implement bind() and connect().
2017-03-31 23:02:41 +03:00
Paul Sokolovsky
d1015f0e0d
zephyr/modusocket: Initial version of usocket module for Zephyr.
...
So far, socket creation and closure is implemented.
2017-03-31 00:04:31 +03:00