Skip to content

Commit 2d754f0

Browse files
committed
rp2/network: Add USB Network support in RPI_PICO/USB_NET variant build.
Signed-off-by: Andrew Leech <[email protected]>
1 parent a8f875c commit 2d754f0

File tree

6 files changed

+30
-0
lines changed

6 files changed

+30
-0
lines changed

ports/rp2/boards/RPI_PICO/board.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@
1515
"product": "Pico",
1616
"thumbnail": "",
1717
"url": "https://www.raspberrypi.com/products/raspberry-pi-pico/",
18+
"variants": {
19+
"USB_NET": "USB Network Adapter"
20+
},
1821
"vendor": "Raspberry Pi"
1922
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
// Board and hardware specific configuration
22
#define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico"
33
#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
4+
5+
#if MICROPY_PY_LWIP
6+
// Enable networking.
7+
#define MICROPY_PY_NETWORK 1
8+
#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "Pico"
9+
#endif
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
set(MICROPY_PY_LWIP OFF)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
set(MICROPY_PY_LWIP ON)
2+
3+
list(APPEND MICROPY_DEF_BOARD
4+
MICROPY_HW_NETWORK_USBNET=1
5+
)
6+
# Board specific version of the frozen manifest
7+
set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/../RPI_PICO_W/manifest.py)

ports/rp2/mpconfigport.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,13 @@ extern const struct _mp_obj_type_t mod_network_nic_type_wiznet5k;
273273
#define MICROPY_HW_NIC_WIZNET5K
274274
#endif
275275

276+
#if MICROPY_HW_NETWORK_USBNET
277+
extern const struct _mp_obj_type_t mod_network_nic_type_usbnet;
278+
#define MICROPY_HW_NIC_USBNET { MP_ROM_QSTR(MP_QSTR_USB_NET), MP_ROM_PTR(&mod_network_nic_type_usbnet) },
279+
#else
280+
#define MICROPY_HW_NIC_USBNET
281+
#endif
282+
276283
#ifndef MICROPY_BOARD_NETWORK_INTERFACES
277284
#define MICROPY_BOARD_NETWORK_INTERFACES
278285
#endif
@@ -281,6 +288,7 @@ extern const struct _mp_obj_type_t mod_network_nic_type_wiznet5k;
281288
MICROPY_HW_NIC_CYW43 \
282289
MICROPY_HW_NIC_NINAW10 \
283290
MICROPY_HW_NIC_WIZNET5K \
291+
MICROPY_HW_NIC_USBNET \
284292
MICROPY_BOARD_NETWORK_INTERFACES \
285293

286294
// Additional entries for use with pendsv_schedule_dispatch.

ports/rp2/mpnetworkport.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030

3131
#if MICROPY_PY_LWIP
3232

33+
#include "extmod/network_usbd_ncm.h"
3334
#include "shared/runtime/softtimer.h"
3435
#include "lwip/timeouts.h"
3536

@@ -137,6 +138,10 @@ static void mp_network_soft_timer_callback(soft_timer_entry_t *self) {
137138
#if MICROPY_PY_NETWORK_WIZNET5K
138139
wiznet5k_poll();
139140
#endif
141+
142+
#if MICROPY_HW_NETWORK_USBNET
143+
network_usbd_ncm_service_traffic();
144+
#endif
140145
}
141146

142147
void mod_network_lwip_init(void) {

0 commit comments

Comments
 (0)