diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-10-27 00:04:33 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2015-10-27 00:04:59 +0300 |
commit | e0d7740a2294ed6bc7c6237f1a12413e0c5a9ce1 (patch) | |
tree | b25bb2e27433b68fe9612b8682df6be008c10b5c /py | |
parent | f3e46d0c52de989e1d408f25f0b29b19a18d8927 (diff) | |
download | micropython-e0d7740a2294ed6bc7c6237f1a12413e0c5a9ce1.tar.gz micropython-e0d7740a2294ed6bc7c6237f1a12413e0c5a9ce1.zip |
extmod/modlwip: slip: Use stream protocol and be port-independent.
Based on the original patch by Galen Hazelwood:
https://github.com/micropython/micropython/pull/1517 .
Diffstat (limited to 'py')
-rw-r--r-- | py/builtin.h | 1 | ||||
-rw-r--r-- | py/mpstate.h | 5 | ||||
-rw-r--r-- | py/objmodule.c | 3 | ||||
-rw-r--r-- | py/py.mk | 40 | ||||
-rw-r--r-- | py/qstrdefs.h | 29 |
5 files changed, 78 insertions, 0 deletions
diff --git a/py/builtin.h b/py/builtin.h index 20ff1f765f..891b93e9a5 100644 --- a/py/builtin.h +++ b/py/builtin.h @@ -103,5 +103,6 @@ extern const mp_obj_module_t mp_module_uhashlib; extern const mp_obj_module_t mp_module_ubinascii; extern const mp_obj_module_t mp_module_ussl; extern const mp_obj_module_t mp_module_machine; +extern const mp_obj_module_t mp_module_lwip; #endif // __MICROPY_INCLUDED_PY_BUILTIN_H__ diff --git a/py/mpstate.h b/py/mpstate.h index dd185a7c25..9a8cc02013 100644 --- a/py/mpstate.h +++ b/py/mpstate.h @@ -127,6 +127,11 @@ typedef struct _mp_state_vm_t { // include any root pointers defined by a port MICROPY_PORT_ROOT_POINTERS + // root pointers for extmod + #if MICROPY_PY_LWIP_SLIP + mp_obj_t lwip_slip_stream; + #endif + // // END ROOT POINTER SECTION //////////////////////////////////////////////////////////// diff --git a/py/objmodule.c b/py/objmodule.c index 63cccde2b2..02a106d318 100644 --- a/py/objmodule.c +++ b/py/objmodule.c @@ -189,6 +189,9 @@ STATIC const mp_map_elem_t mp_builtin_module_table[] = { #if MICROPY_PY_USSL { MP_OBJ_NEW_QSTR(MP_QSTR_ussl), (mp_obj_t)&mp_module_ussl }, #endif +#if MICROPY_PY_LWIP + { MP_OBJ_NEW_QSTR(MP_QSTR_lwip), (mp_obj_t)&mp_module_lwip }, +#endif // extra builtin modules as defined by a port MICROPY_PORT_BUILTIN_MODULES @@ -17,6 +17,46 @@ CFLAGS_MOD += -DMICROPY_PY_USSL=1 -I../lib/axtls/ssl -I../lib/axtls/crypto -I../ LDFLAGS_MOD += -L../lib/axtls/_stage -laxtls endif +#ifeq ($(MICROPY_PY_LWIP),1) +#CFLAGS_MOD += -DMICROPY_PY_LWIP=1 -I../lib/lwip/src/include -I../lib/lwip/src/include/ipv4 -I../extmod/lwip-include +#endif + +ifeq ($(MICROPY_PY_LWIP),1) +LWIP_DIR = lib/lwip/src +INC += -I../lib/lwip/src/include -I../lib/lwip/src/include/ipv4 -I../extmod/lwip-include +CFLAGS_MOD += -DMICROPY_PY_LWIP=1 +SRC_MOD += extmod/modlwip.c lib/netutils/netutils.c +SRC_MOD += $(addprefix $(LWIP_DIR)/,\ + core/def.c \ + core/dns.c \ + core/init.c \ + core/mem.c \ + core/memp.c \ + core/netif.c \ + core/pbuf.c \ + core/raw.c \ + core/stats.c \ + core/sys.c \ + core/tcp.c \ + core/tcp_in.c \ + core/tcp_out.c \ + core/timers.c \ + core/udp.c \ + core/ipv4/autoip.c \ + core/ipv4/icmp.c \ + core/ipv4/igmp.c \ + core/ipv4/inet.c \ + core/ipv4/inet_chksum.c \ + core/ipv4/ip_addr.c \ + core/ipv4/ip.c \ + core/ipv4/ip_frag.c \ + ) +ifeq ($(MICROPY_PY_LWIP_SLIP),1) +CFLAGS_MOD += -DMICROPY_PY_LWIP_SLIP=1 +SRC_MOD += $(LWIP_DIR)/netif/slipif.c +endif +endif + # py object files PY_O_BASENAME = \ mpstate.o \ diff --git a/py/qstrdefs.h b/py/qstrdefs.h index 161d231127..e91cfa89c1 100644 --- a/py/qstrdefs.h +++ b/py/qstrdefs.h @@ -614,3 +614,32 @@ Q(mem32) Q(ussl) Q(wrap_socket) #endif + +#if MICROPY_PY_LWIP +// for lwip module +Q(lwip) +Q(reset) +Q(callback) +Q(socket) +Q(AF_INET) +Q(AF_INET6) +Q(SOCK_STREAM) +Q(SOCK_DGRAM) +Q(SOCK_RAW) +// for lwip.socket +Q(close) +Q(bind) +Q(listen) +Q(accept) +Q(connect) +Q(send) +Q(recv) +Q(sendto) +Q(recvfrom) +Q(settimeout) +#if MICROPY_PY_LWIP_SLIP +// for lwip.slip +Q(slip) +Q(status) +#endif +#endif |