diff --git a/ports/rp2/boards/RPI_PICO/board.json b/ports/rp2/boards/RPI_PICO/board.json index 07938978f3655..ecd4bdd5db255 100644 --- a/ports/rp2/boards/RPI_PICO/board.json +++ b/ports/rp2/boards/RPI_PICO/board.json @@ -15,5 +15,8 @@ "product": "Pico", "thumbnail": "", "url": "https://www.raspberrypi.com/products/raspberry-pi-pico/", + "variants": { + "USB_NET": "USB Network Adapter" + }, "vendor": "Raspberry Pi" } diff --git a/ports/rp2/boards/RPI_PICO/mpconfigboard.cmake b/ports/rp2/boards/RPI_PICO/mpconfigboard.cmake index 386bd33285890..6e047ad2e320d 100644 --- a/ports/rp2/boards/RPI_PICO/mpconfigboard.cmake +++ b/ports/rp2/boards/RPI_PICO/mpconfigboard.cmake @@ -1,3 +1,4 @@ # cmake file for Raspberry Pi Pico set(PICO_BOARD "pico") set(PICO_PLATFORM "rp2040") + diff --git a/ports/rp2/boards/RPI_PICO/mpconfigboard.h b/ports/rp2/boards/RPI_PICO/mpconfigboard.h index c39bc4d489bb6..a147108dfc9c0 100644 --- a/ports/rp2/boards/RPI_PICO/mpconfigboard.h +++ b/ports/rp2/boards/RPI_PICO/mpconfigboard.h @@ -1,3 +1,9 @@ // Board and hardware specific configuration #define MICROPY_HW_BOARD_NAME "Raspberry Pi Pico" #define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024) + +#if MICROPY_PY_LWIP +// Enable networking. +#define MICROPY_PY_NETWORK 1 +#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "Pico" +#endif diff --git a/ports/rp2/boards/RPI_PICO/mpconfigvariant.cmake b/ports/rp2/boards/RPI_PICO/mpconfigvariant.cmake new file mode 100644 index 0000000000000..da6414fe08ade --- /dev/null +++ b/ports/rp2/boards/RPI_PICO/mpconfigvariant.cmake @@ -0,0 +1 @@ +set(MICROPY_PY_LWIP OFF) diff --git a/ports/rp2/boards/RPI_PICO/mpconfigvariant_USB_NET.cmake b/ports/rp2/boards/RPI_PICO/mpconfigvariant_USB_NET.cmake new file mode 100644 index 0000000000000..bad78b830dbcb --- /dev/null +++ b/ports/rp2/boards/RPI_PICO/mpconfigvariant_USB_NET.cmake @@ -0,0 +1,7 @@ +set(MICROPY_PY_LWIP ON) + +list(APPEND MICROPY_DEF_BOARD + MICROPY_HW_NETWORK_USBNET=1 +) +# Board specific version of the frozen manifest +set(MICROPY_FROZEN_MANIFEST ${MICROPY_BOARD_DIR}/../RPI_PICO_W/manifest.py) \ No newline at end of file diff --git a/ports/rp2/mpconfigport.h b/ports/rp2/mpconfigport.h index 8f4e846ba13bb..6b58bbdd622b1 100644 --- a/ports/rp2/mpconfigport.h +++ b/ports/rp2/mpconfigport.h @@ -245,6 +245,13 @@ extern const struct _mp_obj_type_t mod_network_nic_type_wiznet5k; #define MICROPY_HW_NIC_WIZNET5K #endif +#if MICROPY_HW_NETWORK_USBNET +extern const struct _mp_obj_type_t mod_network_nic_type_usbnet; +#define MICROPY_HW_NIC_USBNET { MP_ROM_QSTR(MP_QSTR_USBNET), MP_ROM_PTR(&mod_network_nic_type_usbnet) }, +#else +#define MICROPY_HW_NIC_USBNET +#endif + #ifndef MICROPY_BOARD_NETWORK_INTERFACES #define MICROPY_BOARD_NETWORK_INTERFACES #endif @@ -253,6 +260,7 @@ extern const struct _mp_obj_type_t mod_network_nic_type_wiznet5k; MICROPY_HW_NIC_CYW43 \ MICROPY_HW_NIC_NINAW10 \ MICROPY_HW_NIC_WIZNET5K \ + MICROPY_HW_NIC_USBNET \ MICROPY_BOARD_NETWORK_INTERFACES \ // Additional entries for use with pendsv_schedule_dispatch. diff --git a/ports/rp2/mpnetworkport.c b/ports/rp2/mpnetworkport.c index fcc60b3fe5796..2d55674d4b865 100644 --- a/ports/rp2/mpnetworkport.c +++ b/ports/rp2/mpnetworkport.c @@ -30,6 +30,7 @@ #if MICROPY_PY_LWIP +#include "extmod/network_usbd_ncm.h" #include "shared/runtime/softtimer.h" #include "lwip/timeouts.h" @@ -116,6 +117,10 @@ static void mp_network_soft_timer_callback(soft_timer_entry_t *self) { #if MICROPY_PY_NETWORK_WIZNET5K wiznet5k_poll(); #endif + + #if MICROPY_HW_NETWORK_USBNET + network_usbd_ncm_service_traffic(); + #endif } void mod_network_lwip_init(void) {