Skip to content

Commit bc952d3

Browse files
committed
extmod/network_ppp_lwip: Add network.PPP via lwIP.
This commit adds a new `network.PPP` interface which works on any port that has bare-metal lwIP, eg rp2, stm32, mimxrt. It has been tested on stm32. A board needs to enable `MICROPY_PY_NETWORK_PPP_LWIP` and then it can use it as follows: import network ppp = network.PPP(uart) ppp.connect() while not ppp.isconnected(): pass # use `socket` module as usual, etc ppp.disconnect() Usually the application must first configure the cellular/etc UART link to get it connected and in to PPP mode first (eg ATD*99#), before handing over control to `network.PPP`. The PPP interface automatically configures the UART IRQ callback to call PPP.poll() on incoming data. Signed-off-by: Damien George <[email protected]>
1 parent 664dd7b commit bc952d3

File tree

5 files changed

+388
-0
lines changed

5 files changed

+388
-0
lines changed

extmod/extmod.cmake

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ set(MICROPY_SOURCE_EXTMOD
4949
${MICROPY_EXTMOD_DIR}/network_cyw43.c
5050
${MICROPY_EXTMOD_DIR}/network_lwip.c
5151
${MICROPY_EXTMOD_DIR}/network_ninaw10.c
52+
${MICROPY_EXTMOD_DIR}/network_ppp_lwip.c
5253
${MICROPY_EXTMOD_DIR}/network_wiznet5k.c
5354
${MICROPY_EXTMOD_DIR}/os_dupterm.c
5455
${MICROPY_EXTMOD_DIR}/vfs.c
@@ -313,6 +314,32 @@ if(MICROPY_PY_LWIP)
313314
${MICROPY_LIB_LWIP_DIR}/core/timeouts.c
314315
${MICROPY_LIB_LWIP_DIR}/core/udp.c
315316
${MICROPY_LIB_LWIP_DIR}/netif/ethernet.c
317+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/auth.c
318+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/ccp.c
319+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/chap-md5.c
320+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/chap_ms.c
321+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/chap-new.c
322+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/demand.c
323+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/eap.c
324+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/ecp.c
325+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/eui64.c
326+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/fsm.c
327+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/ipcp.c
328+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/ipv6cp.c
329+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/lcp.c
330+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/magic.c
331+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/mppe.c
332+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/multilink.c
333+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/polarssl/md5.c
334+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/pppapi.c
335+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/ppp.c
336+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/pppcrypt.c
337+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/pppoe.c
338+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/pppol2tp.c
339+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/pppos.c
340+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/upap.c
341+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/utils.c
342+
${MICROPY_LIB_LWIP_DIR}/netif/ppp/vj.c
316343
)
317344

318345
list(APPEND MICROPY_INC_CORE

extmod/extmod.mk

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ SRC_EXTMOD_C += \
5151
extmod/network_esp_hosted.c \
5252
extmod/network_lwip.c \
5353
extmod/network_ninaw10.c \
54+
extmod/network_ppp_lwip.c \
5455
extmod/network_wiznet5k.c \
5556
extmod/os_dupterm.c \
5657
extmod/vfs.c \
@@ -370,6 +371,32 @@ SRC_THIRDPARTY_C += $(addprefix $(LWIP_DIR)/,\
370371
core/ipv6/mld6.c \
371372
core/ipv6/nd6.c \
372373
netif/ethernet.c \
374+
netif/ppp/auth.c \
375+
netif/ppp/ccp.c \
376+
netif/ppp/chap-md5.c \
377+
netif/ppp/chap_ms.c \
378+
netif/ppp/chap-new.c \
379+
netif/ppp/demand.c \
380+
netif/ppp/eap.c \
381+
netif/ppp/ecp.c \
382+
netif/ppp/eui64.c \
383+
netif/ppp/fsm.c \
384+
netif/ppp/ipcp.c \
385+
netif/ppp/ipv6cp.c \
386+
netif/ppp/lcp.c \
387+
netif/ppp/magic.c \
388+
netif/ppp/mppe.c \
389+
netif/ppp/multilink.c \
390+
netif/ppp/polarssl/md5.c \
391+
netif/ppp/pppapi.c \
392+
netif/ppp/ppp.c \
393+
netif/ppp/pppcrypt.c \
394+
netif/ppp/pppoe.c \
395+
netif/ppp/pppol2tp.c \
396+
netif/ppp/pppos.c \
397+
netif/ppp/upap.c \
398+
netif/ppp/utils.c \
399+
netif/ppp/vj.c \
373400
)
374401
ifeq ($(MICROPY_PY_LWIP_LOOPBACK),1)
375402
CFLAGS_EXTMOD += -DLWIP_NETIF_LOOPBACK=1

extmod/modnetwork.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,10 @@ static const mp_rom_map_elem_t mp_module_network_globals_table[] = {
156156
{ MP_ROM_QSTR(MP_QSTR_ipconfig), MP_ROM_PTR(&mod_network_ipconfig_obj) },
157157
#endif
158158

159+
#if MICROPY_PY_NETWORK_PPP_LWIP
160+
{ MP_ROM_QSTR(MP_QSTR_PPP), MP_ROM_PTR(&mp_network_ppp_lwip_type) },
161+
#endif
162+
159163
// Defined per port in mpconfigport.h
160164
#ifdef MICROPY_PORT_NETWORK_INTERFACES
161165
{ MP_ROM_QSTR(MP_QSTR_route), MP_ROM_PTR(&network_route_obj) },

extmod/modnetwork.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ mp_obj_t mod_network_hostname(size_t n_args, const mp_obj_t *args);
7272

7373
#include "lwip/init.h"
7474

75+
#if MICROPY_PY_NETWORK_PPP_LWIP
76+
extern const struct _mp_obj_type_t mp_network_ppp_lwip_type;
77+
#endif
78+
7579
struct netif;
7680
void mod_network_lwip_init(void);
7781
void mod_network_lwip_poll_wrapper(uint32_t ticks_ms);

0 commit comments

Comments
 (0)