summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extmod/extmod.cmake3
-rw-r--r--extmod/modnetwork.c42
-rw-r--r--extmod/modnetwork.h8
-rw-r--r--extmod/network_cyw43.c10
-rw-r--r--ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h2
-rw-r--r--ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h2
-rw-r--r--ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h2
-rw-r--r--ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h2
-rw-r--r--ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h3
-rw-r--r--ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h2
-rw-r--r--ports/mimxrt/boards/TEENSY41/mpconfigboard.h2
-rw-r--r--ports/mimxrt/eth.c2
-rw-r--r--ports/mimxrt/mpconfigport.h4
-rw-r--r--ports/rp2/CMakeLists.txt12
-rw-r--r--ports/rp2/boards/PICO_W/mpconfigboard.h1
-rw-r--r--ports/rp2/boards/W5100S_EVB_PICO/mpconfigboard.h23
-rw-r--r--ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.h23
-rw-r--r--ports/rp2/cyw43_configport.h3
-rw-r--r--ports/rp2/modrp2.c25
-rw-r--r--ports/rp2/mpconfigport.h7
-rw-r--r--ports/rp2/mpnetworkport.c2
-rw-r--r--ports/stm32/boards/ARDUINO_PORTENTA_H7/mpconfigboard.h2
-rw-r--r--ports/stm32/boards/PYBD_SF2/mpconfigboard.h2
-rw-r--r--ports/stm32/eth.c2
-rw-r--r--ports/stm32/modpyb.c27
-rw-r--r--ports/stm32/mpconfigport.h4
26 files changed, 138 insertions, 79 deletions
diff --git a/extmod/extmod.cmake b/extmod/extmod.cmake
index ed7d16d1b..2a19a0e85 100644
--- a/extmod/extmod.cmake
+++ b/extmod/extmod.cmake
@@ -37,6 +37,9 @@ set(MICROPY_SOURCE_EXTMOD
${MICROPY_EXTMOD_DIR}/moduwebsocket.c
${MICROPY_EXTMOD_DIR}/moduzlib.c
${MICROPY_EXTMOD_DIR}/modwebrepl.c
+ ${MICROPY_EXTMOD_DIR}/network_cyw43.c
+ ${MICROPY_EXTMOD_DIR}/network_ninaw10.c
+ ${MICROPY_EXTMOD_DIR}/network_wiznet5k.c
${MICROPY_EXTMOD_DIR}/uos_dupterm.c
${MICROPY_EXTMOD_DIR}/utime_mphal.c
${MICROPY_EXTMOD_DIR}/vfs.c
diff --git a/extmod/modnetwork.c b/extmod/modnetwork.c
index d5c8f83ea..0431e5f41 100644
--- a/extmod/modnetwork.c
+++ b/extmod/modnetwork.c
@@ -54,6 +54,14 @@
///
/// This module provides network drivers and routing configuration.
+char mod_network_country_code[2] = "XX";
+
+#ifndef MICROPY_PY_NETWORK_HOSTNAME_DEFAULT
+#error "MICROPY_PY_NETWORK_HOSTNAME_DEFAULT must be set in mpconfigport.h or mpconfigboard.h"
+#endif
+
+char mod_network_hostname[MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN] = MICROPY_PY_NETWORK_HOSTNAME_DEFAULT;
+
void mod_network_init(void) {
mp_obj_list_init(&MP_STATE_PORT(mod_network_nic_list), 0);
}
@@ -89,9 +97,43 @@ STATIC mp_obj_t network_route(void) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_0(network_route_obj, network_route);
+STATIC mp_obj_t network_country(size_t n_args, const mp_obj_t *args) {
+ if (n_args == 0) {
+ return mp_obj_new_str(mod_network_country_code, 2);
+ } else {
+ size_t len;
+ const char *str = mp_obj_str_get_data(args[0], &len);
+ if (len != 2) {
+ mp_raise_ValueError(NULL);
+ }
+ mod_network_country_code[0] = str[0];
+ mod_network_country_code[1] = str[1];
+ return mp_const_none;
+ }
+}
+// TODO: Non-static to allow backwards-compatible pyb.country.
+MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_network_country_obj, 0, 1, network_country);
+
+STATIC mp_obj_t network_hostname(size_t n_args, const mp_obj_t *args) {
+ if (n_args == 0) {
+ return mp_obj_new_str(mod_network_hostname, strlen(mod_network_hostname));
+ } else {
+ size_t len;
+ const char *str = mp_obj_str_get_data(args[0], &len);
+ if (len >= MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN) {
+ mp_raise_ValueError(NULL);
+ }
+ strcpy(mod_network_hostname, str);
+ return mp_const_none;
+ }
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_network_hostname_obj, 0, 1, network_hostname);
+
STATIC const mp_rom_map_elem_t mp_module_network_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_network) },
{ MP_ROM_QSTR(MP_QSTR_route), MP_ROM_PTR(&network_route_obj) },
+ { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&mod_network_country_obj) },
+ { MP_ROM_QSTR(MP_QSTR_hostname), MP_ROM_PTR(&mod_network_hostname_obj) },
// Defined per port in mpconfigport.h
MICROPY_PORT_NETWORK_INTERFACES
diff --git a/extmod/modnetwork.h b/extmod/modnetwork.h
index a28ec6e42..0ef612d10 100644
--- a/extmod/modnetwork.h
+++ b/extmod/modnetwork.h
@@ -52,6 +52,14 @@
#define MOD_NETWORK_SS_CONNECTED (2)
#define MOD_NETWORK_SS_CLOSED (3)
+extern char mod_network_country_code[2];
+
+#ifndef MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN
+#define MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN (16)
+#endif
+
+extern char mod_network_hostname[MICROPY_PY_NETWORK_HOSTNAME_MAX_LEN];
+
#if MICROPY_PY_LWIP
struct netif;
void mod_network_lwip_init(void);
diff --git a/extmod/network_cyw43.c b/extmod/network_cyw43.c
index 90d964a67..95901eadd 100644
--- a/extmod/network_cyw43.c
+++ b/extmod/network_cyw43.c
@@ -38,6 +38,7 @@
#if MICROPY_PY_NETWORK_CYW43_USE_LIB_DRIVER
#include "lib/cyw43-driver/src/cyw43.h"
+#include "lib/cyw43-driver/src/cyw43_country.h"
#else
#include "drivers/cyw43/cyw43.h"
#endif
@@ -119,14 +120,21 @@ STATIC mp_obj_t network_cyw43_deinit(mp_obj_t self_in) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(network_cyw43_deinit_obj, network_cyw43_deinit);
+#if !MICROPY_PY_NETWORK_CYW43_USE_LIB_DRIVER
+// TODO: The old driver expects this to be available at link time.
+char pyb_country_code[2];
+#endif
+
STATIC mp_obj_t network_cyw43_active(size_t n_args, const mp_obj_t *args) {
network_cyw43_obj_t *self = MP_OBJ_TO_PTR(args[0]);
if (n_args == 1) {
return mp_obj_new_bool(cyw43_tcpip_link_status(self->cyw, self->itf));
} else {
#if MICROPY_PY_NETWORK_CYW43_USE_LIB_DRIVER
- cyw43_wifi_set_up(self->cyw, self->itf, mp_obj_is_true(args[1]), MICROPY_CYW43_COUNTRY);
+ uint32_t country = CYW43_COUNTRY(mod_network_country_code[0], mod_network_country_code[1], 0);
+ cyw43_wifi_set_up(self->cyw, self->itf, mp_obj_is_true(args[1]), country);
#else
+ memcpy(pyb_country_code, mod_network_country_code, sizeof(pyb_country_code));
cyw43_wifi_set_up(self->cyw, self->itf, mp_obj_is_true(args[1]));
#endif
return mp_const_none;
diff --git a/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
index 9a9befa12..390e91814 100644
--- a/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
+++ b/ports/mimxrt/boards/MIMXRT1020_EVK/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "i.MX RT1020 EVK"
#define MICROPY_HW_MCU_NAME "MIMXRT1021DAG5A"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-1020evk"
+
// i.MX RT1020 EVK has 1 board LED
// Todo: think about replacing the define with searching in the generated pins?
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_05)
diff --git a/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
index 9cc740b1a..134c9637e 100644
--- a/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
+++ b/ports/mimxrt/boards/MIMXRT1050_EVK/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "i.MX RT1050 EVKB-A1"
#define MICROPY_HW_MCU_NAME "MIMXRT1052DVL6B"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-1050evk"
+
// MIMXRT1050_EVKB has 1 user LED
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_09)
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
diff --git a/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
index 7eecb1f6b..01ae3ba30 100644
--- a/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
+++ b/ports/mimxrt/boards/MIMXRT1060_EVK/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "i.MX RT1060 EVK"
#define MICROPY_HW_MCU_NAME "MIMXRT1062DVJ6A"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-1060evk"
+
// MIMXRT1060_EVK has 1 user LED
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_09)
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
diff --git a/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
index 367b4a780..b6752c3e1 100644
--- a/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
+++ b/ports/mimxrt/boards/MIMXRT1064_EVK/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "i.MX RT1064 EVK"
#define MICROPY_HW_MCU_NAME "MIMXRT1064DVL6A"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-1064evk"
+
// MIMXRT1064_EVK has 1 user LED
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_09)
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_low(pin))
diff --git a/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h b/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
index 0ec7ed777..d37050eb5 100644
--- a/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
+++ b/ports/mimxrt/boards/MIMXRT1170_EVK/mpconfigboard.h
@@ -1,5 +1,8 @@
#define MICROPY_HW_BOARD_NAME "i.MX RT1170 EVK"
#define MICROPY_HW_MCU_NAME "MIMXRT1176DVMAA"
+
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-1070evk"
+
#define MICROPY_EVENT_POLL_HOOK \
do { \
extern void mp_handle_pending(bool); \
diff --git a/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h b/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
index 37ff6a94c..c98cdcb0a 100644
--- a/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
+++ b/ports/mimxrt/boards/SEEED_ARCH_MIX/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "Seeed ARCH MIX"
#define MICROPY_HW_MCU_NAME "MIMXRT1052DVL5B"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-arch-mix"
+
// MIMXRT1050_EVKB has 1 user LED
#define MICROPY_HW_LED1_PIN (pin_GPIO_AD_B0_09)
#define MICROPY_HW_LED2_PIN (pin_GPIO_AD_B0_10)
diff --git a/ports/mimxrt/boards/TEENSY41/mpconfigboard.h b/ports/mimxrt/boards/TEENSY41/mpconfigboard.h
index 7fe97fd9c..56740f48e 100644
--- a/ports/mimxrt/boards/TEENSY41/mpconfigboard.h
+++ b/ports/mimxrt/boards/TEENSY41/mpconfigboard.h
@@ -1,6 +1,8 @@
#define MICROPY_HW_BOARD_NAME "Teensy 4.1"
#define MICROPY_HW_MCU_NAME "MIMXRT1062DVJ6A"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-teensy41"
+
// Teensy 4.1 has 1 board LED
#define MICROPY_HW_LED1_PIN (pin_GPIO_B0_03)
#define MICROPY_HW_LED_ON(pin) (mp_hal_pin_high(pin))
diff --git a/ports/mimxrt/eth.c b/ports/mimxrt/eth.c
index ad015941a..f1814286e 100644
--- a/ports/mimxrt/eth.c
+++ b/ports/mimxrt/eth.c
@@ -559,7 +559,7 @@ STATIC void eth_lwip_init(eth_t *self) {
n->name[0] = 'e';
n->name[1] = (self == &eth_instance0 ? '0' : '1');
netif_add(n, &ipconfig[0], &ipconfig[1], &ipconfig[2], self, eth_netif_init, ethernet_input);
- netif_set_hostname(n, "MPY");
+ netif_set_hostname(n, mod_network_hostname);
netif_set_default(n);
netif_set_up(n);
diff --git a/ports/mimxrt/mpconfigport.h b/ports/mimxrt/mpconfigport.h
index 2e955fd06..772f080a9 100644
--- a/ports/mimxrt/mpconfigport.h
+++ b/ports/mimxrt/mpconfigport.h
@@ -118,6 +118,10 @@ uint32_t trng_random_u32(void);
#define MICROPY_PY_LWIP_REENTER MICROPY_PY_PENDSV_REENTER
#define MICROPY_PY_LWIP_EXIT MICROPY_PY_PENDSV_EXIT
+#ifndef MICROPY_PY_NETWORK_HOSTNAME_DEFAULT
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-mimxrt"
+#endif
+
#endif
// For regular code that wants to prevent "background tasks" from running.
diff --git a/ports/rp2/CMakeLists.txt b/ports/rp2/CMakeLists.txt
index 357125e73..8e8db4735 100644
--- a/ports/rp2/CMakeLists.txt
+++ b/ports/rp2/CMakeLists.txt
@@ -263,10 +263,6 @@ if (MICROPY_PY_NETWORK_CYW43)
machine_pin_cyw43.c
)
- list(APPEND MICROPY_SOURCE_EXTMOD
- ${MICROPY_DIR}/extmod/network_cyw43.c
- )
-
target_link_libraries(${MICROPY_TARGET}
cyw43_driver_picow
cmsis_core
@@ -289,10 +285,6 @@ if (MICROPY_PY_NETWORK_NINAW10)
${MICROPY_DIR}/drivers/ninaw10/nina_wifi_bsp.c
${MICROPY_DIR}/drivers/ninaw10/machine_pin_nina.c
)
-
- list(APPEND MICROPY_SOURCE_EXTMOD
- ${MICROPY_DIR}/extmod/network_ninaw10.c
- )
endif()
if (MICROPY_PY_NETWORK_WIZNET5K)
@@ -331,10 +323,6 @@ if (MICROPY_PY_NETWORK_WIZNET5K)
${MICROPY_DIR}/lib/wiznet5k/Internet/DNS/dns.c
${MICROPY_DIR}/lib/wiznet5k/Internet/DHCP/dhcp.c
)
-
- list(APPEND MICROPY_SOURCE_EXTMOD
- ${MICROPY_DIR}/extmod/network_wiznet5k.c
- )
endif()
# Add qstr sources for extmod and usermod, in case they are modified by components above.
diff --git a/ports/rp2/boards/PICO_W/mpconfigboard.h b/ports/rp2/boards/PICO_W/mpconfigboard.h
index 227e7e3ff..ef812b630 100644
--- a/ports/rp2/boards/PICO_W/mpconfigboard.h
+++ b/ports/rp2/boards/PICO_W/mpconfigboard.h
@@ -6,6 +6,7 @@
// Enable networking.
#define MICROPY_PY_NETWORK 1
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "PicoW"
// CYW43 driver configuration.
#define CYW43_USE_SPI (1)
diff --git a/ports/rp2/boards/W5100S_EVB_PICO/mpconfigboard.h b/ports/rp2/boards/W5100S_EVB_PICO/mpconfigboard.h
index ca2f7d0ce..323cee7a6 100644
--- a/ports/rp2/boards/W5100S_EVB_PICO/mpconfigboard.h
+++ b/ports/rp2/boards/W5100S_EVB_PICO/mpconfigboard.h
@@ -1,19 +1,20 @@
// Board config for Wiznet W5100S-EVB-Pico.
// Board and hardware specific configuration
-#define MICROPY_HW_BOARD_NAME "W5100S-EVB-Pico"
-#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
+#define MICROPY_HW_BOARD_NAME "W5100S-EVB-Pico"
+#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
// Enable networking.
-#define MICROPY_PY_NETWORK (1)
+#define MICROPY_PY_NETWORK (1)
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "W5100S-EVB"
// Wiznet HW config.
-#define MICROPY_HW_WIZNET_SPI_ID (0)
-#define MICROPY_HW_WIZNET_SPI_BAUDRATE (20 * 1000 * 1000)
-#define MICROPY_HW_WIZNET_SPI_SCK (18)
-#define MICROPY_HW_WIZNET_SPI_MOSI (19)
-#define MICROPY_HW_WIZNET_SPI_MISO (16)
-#define MICROPY_HW_WIZNET_PIN_CS (17)
-#define MICROPY_HW_WIZNET_PIN_RST (20)
+#define MICROPY_HW_WIZNET_SPI_ID (0)
+#define MICROPY_HW_WIZNET_SPI_BAUDRATE (20 * 1000 * 1000)
+#define MICROPY_HW_WIZNET_SPI_SCK (18)
+#define MICROPY_HW_WIZNET_SPI_MOSI (19)
+#define MICROPY_HW_WIZNET_SPI_MISO (16)
+#define MICROPY_HW_WIZNET_PIN_CS (17)
+#define MICROPY_HW_WIZNET_PIN_RST (20)
// Connecting the INTN pin enables RECV interrupt handling of incoming data.
-#define MICROPY_HW_WIZNET_PIN_INTN (21)
+#define MICROPY_HW_WIZNET_PIN_INTN (21)
diff --git a/ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.h b/ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.h
index 1ad7a0e90..e8526cdba 100644
--- a/ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.h
+++ b/ports/rp2/boards/W5500_EVB_PICO/mpconfigboard.h
@@ -1,19 +1,20 @@
// Board config for Wiznet W5500-EVB-Pico.
// Board and hardware specific configuration
-#define MICROPY_HW_BOARD_NAME "W5500-EVB-Pico"
-#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
+#define MICROPY_HW_BOARD_NAME "W5500-EVB-Pico"
+#define MICROPY_HW_FLASH_STORAGE_BYTES (1408 * 1024)
// Enable networking.
-#define MICROPY_PY_NETWORK (1)
+#define MICROPY_PY_NETWORK (1)
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "W5500-EVB"
// Wiznet HW config.
-#define MICROPY_HW_WIZNET_SPI_ID (0)
-#define MICROPY_HW_WIZNET_SPI_BAUDRATE (20 * 1000 * 1000)
-#define MICROPY_HW_WIZNET_SPI_SCK (18)
-#define MICROPY_HW_WIZNET_SPI_MOSI (19)
-#define MICROPY_HW_WIZNET_SPI_MISO (16)
-#define MICROPY_HW_WIZNET_PIN_CS (17)
-#define MICROPY_HW_WIZNET_PIN_RST (20)
+#define MICROPY_HW_WIZNET_SPI_ID (0)
+#define MICROPY_HW_WIZNET_SPI_BAUDRATE (20 * 1000 * 1000)
+#define MICROPY_HW_WIZNET_SPI_SCK (18)
+#define MICROPY_HW_WIZNET_SPI_MOSI (19)
+#define MICROPY_HW_WIZNET_SPI_MISO (16)
+#define MICROPY_HW_WIZNET_PIN_CS (17)
+#define MICROPY_HW_WIZNET_PIN_RST (20)
// Connecting the INTN pin enables RECV interrupt handling of incoming data.
-#define MICROPY_HW_WIZNET_PIN_INTN (21)
+#define MICROPY_HW_WIZNET_PIN_INTN (21)
diff --git a/ports/rp2/cyw43_configport.h b/ports/rp2/cyw43_configport.h
index c17b7a5c5..08cded6f1 100644
--- a/ports/rp2/cyw43_configport.h
+++ b/ports/rp2/cyw43_configport.h
@@ -30,6 +30,7 @@
#include "py/mpconfig.h"
#include "py/mperrno.h"
#include "py/mphal.h"
+#include "extmod/modnetwork.h"
#include "pendsv.h"
#define CYW43_CHIPSET_FIRMWARE_INCLUDE_FILE "w43439A0_7_95_49_00_combined.h"
@@ -48,6 +49,8 @@
#define CYW43_THREAD_EXIT MICROPY_PY_LWIP_EXIT
#define CYW43_THREAD_LOCK_CHECK
+#define CYW43_HOST_NAME mod_network_hostname
+
#define CYW43_SDPCM_SEND_COMMON_WAIT \
if (get_core_num() == 0) { \
cyw43_yield(); \
diff --git a/ports/rp2/modrp2.c b/ports/rp2/modrp2.c
index 2601a7f44..5dfedb992 100644
--- a/ports/rp2/modrp2.c
+++ b/ports/rp2/modrp2.c
@@ -29,25 +29,11 @@
#include "modrp2.h"
#if MICROPY_PY_NETWORK_CYW43
-#include "lib/cyw43-driver/src/cyw43_country.h"
-
-extern uint32_t cyw43_country_code;
+#include "extmod/modnetwork.h"
+#endif
-STATIC mp_obj_t rp2_country(size_t n_args, const mp_obj_t *args) {
- if (n_args == 0) {
- char code[2] = {cyw43_country_code, cyw43_country_code >> 8};
- return mp_obj_new_str(code, 2);
- } else {
- size_t len;
- const char *str = mp_obj_str_get_data(args[0], &len);
- if (len != 2) {
- mp_raise_ValueError(NULL);
- }
- cyw43_country_code = CYW43_COUNTRY(str[0], str[1], 0);
- return mp_const_none;
- }
-}
-STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(rp2_country_obj, 0, 1, rp2_country);
+#if MICROPY_PY_NETWORK_CYW43
+MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mod_network_country_obj);
#endif
STATIC const mp_rom_map_elem_t rp2_module_globals_table[] = {
@@ -57,7 +43,8 @@ STATIC const mp_rom_map_elem_t rp2_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR_StateMachine), MP_ROM_PTR(&rp2_state_machine_type) },
#if MICROPY_PY_NETWORK_CYW43
- { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&rp2_country_obj) },
+ // Deprecated (use network.country instead).
+ { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&mod_network_country_obj) },
#endif
};
STATIC MP_DEFINE_CONST_DICT(rp2_module_globals, rp2_module_globals_table);
diff --git a/ports/rp2/mpconfigport.h b/ports/rp2/mpconfigport.h
index 35bc22e55..180216329 100644
--- a/ports/rp2/mpconfigport.h
+++ b/ports/rp2/mpconfigport.h
@@ -141,6 +141,10 @@
// By default networking should include sockets, ssl, websockets, webrepl, dupterm.
#if MICROPY_PY_NETWORK
+#ifndef MICROPY_PY_NETWORK_HOSTNAME_DEFAULT
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-rp2"
+#endif
+
#ifndef MICROPY_PY_USOCKET
#define MICROPY_PY_USOCKET (1)
#endif
@@ -263,10 +267,7 @@ typedef intptr_t mp_off_t;
extern uint32_t rosc_random_u32(void);
extern void lwip_lock_acquire(void);
extern void lwip_lock_release(void);
-
-extern uint32_t cyw43_country_code;
extern void cyw43_irq_init(void);
extern void cyw43_post_poll_hook(void);
#define CYW43_POST_POLL_HOOK cyw43_post_poll_hook();
-#define MICROPY_CYW43_COUNTRY cyw43_country_code
diff --git a/ports/rp2/mpnetworkport.c b/ports/rp2/mpnetworkport.c
index 96cd16af0..d8e33e229 100644
--- a/ports/rp2/mpnetworkport.c
+++ b/ports/rp2/mpnetworkport.c
@@ -40,14 +40,12 @@ static alarm_id_t lwip_alarm_id = -1;
#if MICROPY_PY_NETWORK_CYW43
#include "lib/cyw43-driver/src/cyw43.h"
-#include "lib/cyw43-driver/src/cyw43_country.h"
#include "lib/cyw43-driver/src/cyw43_stats.h"
#include "hardware/irq.h"
#define CYW43_IRQ_LEVEL GPIO_IRQ_LEVEL_HIGH
#define CYW43_SHARED_IRQ_HANDLER_PRIORITY PICO_SHARED_IRQ_HANDLER_HIGHEST_ORDER_PRIORITY
-uint32_t cyw43_country_code = CYW43_COUNTRY_WORLDWIDE;
volatile int cyw43_has_pending = 0;
static void gpio_irq_handler(void) {
diff --git a/ports/stm32/boards/ARDUINO_PORTENTA_H7/mpconfigboard.h b/ports/stm32/boards/ARDUINO_PORTENTA_H7/mpconfigboard.h
index a2981352a..986ed2b87 100644
--- a/ports/stm32/boards/ARDUINO_PORTENTA_H7/mpconfigboard.h
+++ b/ports/stm32/boards/ARDUINO_PORTENTA_H7/mpconfigboard.h
@@ -9,6 +9,8 @@
#define MICROPY_PY_SYS_PLATFORM "Portenta"
#define MICROPY_HW_FLASH_FS_LABEL "portenta"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "Portenta"
+
#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_C)
#define UINT_FMT "%u"
#define INT_FMT "%d"
diff --git a/ports/stm32/boards/PYBD_SF2/mpconfigboard.h b/ports/stm32/boards/PYBD_SF2/mpconfigboard.h
index 6dfb8c38d..09736d8bd 100644
--- a/ports/stm32/boards/PYBD_SF2/mpconfigboard.h
+++ b/ports/stm32/boards/PYBD_SF2/mpconfigboard.h
@@ -27,6 +27,8 @@
#define MICROPY_HW_BOARD_NAME "PYBD-SF2W"
#define MICROPY_HW_MCU_NAME "STM32F722IEK"
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "PYBD"
+
#define MICROPY_PY_PYB_LEGACY (1)
#define MICROPY_HW_ENABLE_INTERNAL_FLASH_STORAGE (0)
#define MICROPY_HW_HAS_SWITCH (1)
diff --git a/ports/stm32/eth.c b/ports/stm32/eth.c
index be418235e..1207a728c 100644
--- a/ports/stm32/eth.c
+++ b/ports/stm32/eth.c
@@ -737,7 +737,7 @@ STATIC void eth_lwip_init(eth_t *self) {
n->name[0] = 'e';
n->name[1] = '0';
netif_add(n, &ipconfig[0], &ipconfig[1], &ipconfig[2], self, eth_netif_init, ethernet_input);
- netif_set_hostname(n, "MPY");
+ netif_set_hostname(n, mod_network_hostname);
netif_set_default(n);
netif_set_up(n);
diff --git a/ports/stm32/modpyb.c b/ports/stm32/modpyb.c
index 7f87dd582..641d66efa 100644
--- a/ports/stm32/modpyb.c
+++ b/ports/stm32/modpyb.c
@@ -52,11 +52,10 @@
#include "usb.h"
#include "portmodules.h"
#include "modmachine.h"
+#include "extmod/modnetwork.h"
#include "extmod/vfs.h"
#include "extmod/utime_mphal.h"
-char pyb_country_code[2];
-
#if MICROPY_PY_PYB
STATIC mp_obj_t pyb_fault_debug(mp_obj_t value) {
@@ -115,21 +114,9 @@ STATIC mp_obj_t pyb_repl_uart(size_t n_args, const mp_obj_t *args) {
}
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_repl_uart_obj, 0, 1, pyb_repl_uart);
-STATIC mp_obj_t pyb_country(size_t n_args, const mp_obj_t *args) {
- if (n_args == 0) {
- return mp_obj_new_str(pyb_country_code, 2);
- } else {
- size_t len;
- const char *str = mp_obj_str_get_data(args[0], &len);
- if (len != 2) {
- mp_raise_ValueError(NULL);
- }
- pyb_country_code[0] = str[0];
- pyb_country_code[1] = str[1];
- return mp_const_none;
- }
-}
-STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(pyb_country_obj, 0, 1, pyb_country);
+#if MICROPY_PY_NETWORK
+MP_DECLARE_CONST_FUN_OBJ_VAR_BETWEEN(mod_network_country_obj);
+#endif
STATIC const mp_rom_map_elem_t pyb_module_globals_table[] = {
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_pyb) },
@@ -160,7 +147,11 @@ STATIC const mp_rom_map_elem_t pyb_module_globals_table[] = {
#endif
{ MP_ROM_QSTR(MP_QSTR_main), MP_ROM_PTR(&pyb_main_obj) },
{ MP_ROM_QSTR(MP_QSTR_repl_uart), MP_ROM_PTR(&pyb_repl_uart_obj) },
- { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&pyb_country_obj) },
+
+ #if MICROPY_PY_NETWORK
+ // Deprecated (use network.country instead).
+ { MP_ROM_QSTR(MP_QSTR_country), MP_ROM_PTR(&mod_network_country_obj) },
+ #endif
#if MICROPY_HW_ENABLE_USB
{ MP_ROM_QSTR(MP_QSTR_usb_mode), MP_ROM_PTR(&pyb_usb_mode_obj) },
diff --git a/ports/stm32/mpconfigport.h b/ports/stm32/mpconfigport.h
index 18521ef1d..ee12ab814 100644
--- a/ports/stm32/mpconfigport.h
+++ b/ports/stm32/mpconfigport.h
@@ -290,6 +290,10 @@ static inline mp_uint_t disable_irq(void) {
#define MICROPY_PY_LWIP_REENTER MICROPY_PY_PENDSV_REENTER
#define MICROPY_PY_LWIP_EXIT MICROPY_PY_PENDSV_EXIT
+#ifndef MICROPY_PY_NETWORK_HOSTNAME_DEFAULT
+#define MICROPY_PY_NETWORK_HOSTNAME_DEFAULT "mpy-stm32"
+#endif
+
#if MICROPY_PY_BLUETOOTH_USE_SYNC_EVENTS
// Bluetooth code only runs in the scheduler, no locking/mutex required.
#define MICROPY_PY_BLUETOOTH_ENTER uint32_t atomic_state = 0;