Skip to content

Commit 38f8e85

Browse files
iabdalkaderdpgeorge
authored andcommitted
rp2: Add framework for networking.
MICROPY_PY_NETWORK and MICROPY_PY_USOCKET need to be enabled by a board to get networking. No NICs have yet been defined.
1 parent c973cfd commit 38f8e85

File tree

5 files changed

+32
-2
lines changed

5 files changed

+32
-2
lines changed

extmod/extmod.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ set(MICROPY_SOURCE_EXTMOD
1616
${MICROPY_EXTMOD_DIR}/modbluetooth.c
1717
${MICROPY_EXTMOD_DIR}/modbtree.c
1818
${MICROPY_EXTMOD_DIR}/modframebuf.c
19+
${MICROPY_EXTMOD_DIR}/modnetwork.c
1920
${MICROPY_EXTMOD_DIR}/modonewire.c
2021
${MICROPY_EXTMOD_DIR}/moduasyncio.c
2122
${MICROPY_EXTMOD_DIR}/modubinascii.c
@@ -27,6 +28,7 @@ set(MICROPY_SOURCE_EXTMOD
2728
${MICROPY_EXTMOD_DIR}/modurandom.c
2829
${MICROPY_EXTMOD_DIR}/modure.c
2930
${MICROPY_EXTMOD_DIR}/moduselect.c
31+
${MICROPY_EXTMOD_DIR}/modusocket.c
3032
${MICROPY_EXTMOD_DIR}/modussl_axtls.c
3133
${MICROPY_EXTMOD_DIR}/modussl_mbedtls.c
3234
${MICROPY_EXTMOD_DIR}/modutimeq.c

extmod/modusocket.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
#include "shared/netutils/netutils.h"
3636
#include "modnetwork.h"
3737

38-
#if MICROPY_PY_USOCKET && !MICROPY_PY_LWIP
38+
#if MICROPY_PY_NETWORK && MICROPY_PY_USOCKET && !MICROPY_PY_LWIP
3939

4040
/******************************************************************************/
4141
// socket class
@@ -517,4 +517,4 @@ const mp_obj_module_t mp_module_usocket = {
517517
.globals = (mp_obj_dict_t *)&mp_module_usocket_globals,
518518
};
519519

520-
#endif // MICROPY_PY_USOCKET && !MICROPY_PY_LWIP
520+
#endif // MICROPY_PY_NETWORK && MICROPY_PY_USOCKET && !MICROPY_PY_LWIP

ports/rp2/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ set(MICROPY_SOURCE_LIB
6666
${MICROPY_DIR}/lib/littlefs/lfs2_util.c
6767
${MICROPY_DIR}/lib/oofatfs/ff.c
6868
${MICROPY_DIR}/lib/oofatfs/ffunicode.c
69+
${MICROPY_DIR}/shared/netutils/netutils.c
6970
${MICROPY_DIR}/shared/readline/readline.c
7071
${MICROPY_DIR}/shared/runtime/gchelper_m0.s
7172
${MICROPY_DIR}/shared/runtime/gchelper_native.c

ports/rp2/main.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "py/mphal.h"
3434
#include "py/stackctrl.h"
3535
#include "extmod/modbluetooth.h"
36+
#include "extmod/modnetwork.h"
3637
#include "shared/readline/readline.h"
3738
#include "shared/runtime/gchelper.h"
3839
#include "shared/runtime/pyexec.h"
@@ -112,6 +113,9 @@ int main(int argc, char **argv) {
112113
#if MICROPY_PY_BLUETOOTH
113114
mp_bluetooth_hci_init();
114115
#endif
116+
#if MICROPY_PY_NETWORK
117+
mod_network_init();
118+
#endif
115119

116120
// Execute _boot.py to set up the filesystem.
117121
pyexec_frozen_module("_boot.py");
@@ -142,6 +146,9 @@ int main(int argc, char **argv) {
142146

143147
soft_reset_exit:
144148
mp_printf(MP_PYTHON_PRINTER, "MPY: soft reboot\n");
149+
#if MICROPY_PY_NETWORK
150+
mod_network_deinit();
151+
#endif
145152
rp2_pio_deinit();
146153
#if MICROPY_PY_BLUETOOTH
147154
mp_bluetooth_deinit();

ports/rp2/mpconfigport.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,11 +166,26 @@
166166
{ MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj) },
167167

168168
extern const struct _mp_obj_module_t mp_module_machine;
169+
extern const struct _mp_obj_module_t mp_module_network;
169170
extern const struct _mp_obj_module_t mp_module_onewire;
170171
extern const struct _mp_obj_module_t mp_module_rp2;
171172
extern const struct _mp_obj_module_t mp_module_uos;
173+
extern const struct _mp_obj_module_t mp_module_usocket;
172174
extern const struct _mp_obj_module_t mp_module_utime;
173175

176+
#if MICROPY_PY_USOCKET
177+
#define SOCKET_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_usocket), MP_ROM_PTR(&mp_module_usocket) },
178+
#else
179+
#define SOCKET_BUILTIN_MODULE
180+
#endif
181+
#if MICROPY_PY_NETWORK
182+
#define NETWORK_BUILTIN_MODULE { MP_ROM_QSTR(MP_QSTR_network), MP_ROM_PTR(&mp_module_network) },
183+
#define NETWORK_ROOT_POINTERS mp_obj_list_t mod_network_nic_list;
184+
#else
185+
#define NETWORK_BUILTIN_MODULE
186+
#define NETWORK_ROOT_POINTERS
187+
#endif
188+
174189
#if MICROPY_PY_BLUETOOTH
175190
#define MICROPY_PORT_ROOT_POINTER_BLUETOOTH struct _machine_uart_obj_t *mp_bthci_uart;
176191
#else
@@ -191,18 +206,23 @@ struct _mp_bluetooth_nimble_malloc_t;
191206
{ MP_OBJ_NEW_QSTR(MP_QSTR__rp2), (mp_obj_t)&mp_module_rp2 }, \
192207
{ MP_ROM_QSTR(MP_QSTR_uos), MP_ROM_PTR(&mp_module_uos) }, \
193208
{ MP_ROM_QSTR(MP_QSTR_utime), MP_ROM_PTR(&mp_module_utime) }, \
209+
SOCKET_BUILTIN_MODULE \
210+
NETWORK_BUILTIN_MODULE \
194211

195212
#ifndef MICROPY_BOARD_ROOT_POINTERS
196213
#define MICROPY_BOARD_ROOT_POINTERS
197214
#endif
198215

216+
#define MICROPY_PORT_NETWORK_INTERFACES \
217+
199218
#define MICROPY_PORT_ROOT_POINTERS \
200219
const char *readline_hist[8]; \
201220
void *machine_pin_irq_obj[30]; \
202221
void *rp2_pio_irq_obj[2]; \
203222
void *rp2_state_machine_irq_obj[8]; \
204223
void *rp2_uart_rx_buffer[2]; \
205224
void *rp2_uart_tx_buffer[2]; \
225+
NETWORK_ROOT_POINTERS \
206226
MICROPY_BOARD_ROOT_POINTERS \
207227
MICROPY_PORT_ROOT_POINTER_BLUETOOTH \
208228
MICROPY_PORT_ROOT_POINTER_BLUETOOTH_NIMBLE \

0 commit comments

Comments
 (0)