summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Mussared <jim.mussared@gmail.com>2023-02-01 14:19:45 +1100
committerDamien George <damien@micropython.org>2023-03-01 01:26:17 +1100
commita3773026238c7c779cad79aa9d9c468e680e7004 (patch)
treef2654f2bc0ab70f2032b4d8cdf70573d68b83c14
parentfc4c47f7bc72bf0ff216a45a334702fcd25e14de (diff)
extmod/modnetwork: Add network.hostname() and network.country().
This provides a standard interface to setting the global networking config for all interfaces and interface types. For ports that already use either a static hostname (mimxrt, rp2) they will now use the configured value. The default is configured by the port (or optionally the board). For interfaces that previously supported .config(hostname), this is still supported but now implemented using the global network.hostname. Similarly, pyb.country and rp2.country are now deprecated, but the methods still exist (and forward to network.hostname). Because ESP32/ESP8266 do not use extmod/modnetwork.c they are not affected by this commit. Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
-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;