Commit Graph

111 Commits

Author SHA1 Message Date
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
5383a50072 zephyr/README: Update to require Zephyr 1.8.
There're a lot of changes and fixes in 1.8 regarding IP stack,
incompatible with previous Zephyr versions, so supporting them
doesn't make sense.

This is  the last commit which should build with Zephyr 1.7.
2017-05-12 22:05:07 +03:00
Paul Sokolovsky
d57c6564dc zephyr/prj_qemu_x86.conf: Bump RAM size to 320K. 2017-05-12 21:58:51 +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
4c2fa83f2a zephyr/main: Remove superfluous include. 2017-05-02 23:35:13 +03:00
Paul Sokolovsky
b5159a9149 zephyr/mpconfigport.h: Enable line number information for scripts. 2017-05-02 23:33:16 +03:00
Paul Sokolovsky
674da04e2e zephyr/Makefile: Add debugserver Zephyr target. 2017-05-02 01:12:02 +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
Kushal Das
083cd21a74 zephyr: Add 96b_carbon configuration.
As there's no networking support in mainline yet, networking is disabled,
because otherwise the board hangs on startup.
2017-04-26 00:22:48 +03:00
Paul Sokolovsky
5e66f2b751 zephyr/main: Configure IPv4 netmask and gateway to allow Internet access. 2017-04-22 19:29:47 +03:00
Paul Sokolovsky
5846770997 zephyr/modmachine: Implement machine.reset(). 2017-04-19 13:28:36 +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
0a88b44248 zephyr/machine_pin: Implement pin protocol for machine.Signal support. 2017-04-08 14:27:36 +03:00
Paul Sokolovsky
e05cb4183a zephyr/modmachine: Add Signal class. 2017-04-08 00:50:19 +03:00
Paul Sokolovsky
cf70f9a474 zephyr/mpconfigport.h: Fix build if usocket module is disabled. 2017-04-08 00:38:51 +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
a9e6f08adb zephyr/Makefile: Add "test" target, runs testsuite in QEMU. 2017-04-05 00:46:00 +03:00
Paul Sokolovsky
58168c8e6b zephyr/zephyr_getchar: Explicitly yield to other threads on char availability.
Without this, if there's a large chunk of data coming from hardware (e.g.
clipboard paste, or fed programmatically from the other side of the console),
there's a behavior of initial mass fill-in of the buffer without any
consumption, which starts much later and doesn't catch up with further
filling, leading to buffer overflow.
2017-04-04 17:14:53 +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
4c392243ae zephyr/prj_base.conf: Add config for net_buf logging.
Disabled by default.
2017-04-03 12:07:56 +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
Damien George
4c307bfba1 all: Move BYTES_PER_WORD definition from ports to py/mpconfig.h
It can still be overwritten by a port in mpconfigport.h but for almost
all cases one can use the provided default.
2017-04-01 11:39:38 +11: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
6cc1a7a214 zephyr: Integrate modusocket into build. 2017-03-31 00:06:31 +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
Paul Sokolovsky
344bfbb71c zephyr: Fix NLR segfault in minimal build.
Requires inclusion of zephyr.h to properly detect that we're building for
Zephyr.
2017-03-30 22:17:18 +03:00
Paul Sokolovsky
df48f4645d zephyr/Makefile: Add workaround (fix?) for broken builds for DTS targets. 2017-03-30 15:16:55 +03:00
Paul Sokolovsky
29dd92c82a zephyr/Makefile: Rework to use modern, official build integration.
Build happens in 3 stages:

1. Zephyr config header and make vars are generated from prj.conf.
2. libmicropython is built using them.
3. Zephyr is built and final link happens.
2017-03-30 00:08:27 +03:00
Paul Sokolovsky
e93c4ca181 zephyr/prj_base.conf: Enable TCP (and UDP explicitly). 2017-03-29 00:46:06 +03:00
Paul Sokolovsky
dbb2aea428 zephyr/prj_base.conf: Disable legacy kernel compatibility.
This keeps dependency on mdef, sysgen and other stuff which complicates
build integration.
2017-03-27 17:06:30 +03:00
Paul Sokolovsky
220df8544b zephyr/zephyr_getchar: Use native k_sem instead of legacy nano_sem. 2017-03-27 00:41:58 +03:00
Paul Sokolovsky
99866a00a0 py/nlrx86: Better check for Zephyr (requires 1.7). 2017-03-26 00:33:23 +03:00
Damien George
180045bce9 zephyr/main: Move lexer constructor to within NLR handler block.
And raise an exception when mp_lexer_new_from_file is called.
2017-03-14 11:52:05 +11:00
Paul Sokolovsky
9c9674a325 zephyr/main: Remove unused __fatal_error(). 2017-03-14 00:19:35 +03:00
Paul Sokolovsky
f5aac7d33f zephyr/main: nlr_jump_fail: Fix noreturn warning. 2017-03-13 00:43:36 +03:00