drivers/cyw43: Allow configuring the netif/mDNS hostname.

Allow boards to configure/override the default hostname used for netif and
mDNS.
This commit is contained in:
iabdalkader 2022-07-17 12:59:02 +02:00 committed by Damien George
parent 1bf2fd0592
commit b6c2196fbd
3 changed files with 15 additions and 3 deletions

View File

@ -47,6 +47,14 @@
#define CYW43_LINK_NONET (-2) #define CYW43_LINK_NONET (-2)
#define CYW43_LINK_BADAUTH (-3) #define CYW43_LINK_BADAUTH (-3)
#ifndef MICROPY_BOARD_HOSTNAME
#define MICROPY_BOARD_HOSTNAME "PYBD"
#endif
#ifndef MICROPY_BOARD_HOSTNAME_LENGTH
#define MICROPY_BOARD_HOSTNAME_LENGTH 16
#endif
typedef struct _cyw43_t { typedef struct _cyw43_t {
cyw43_ll_t cyw43_ll; cyw43_ll_t cyw43_ll;
@ -76,6 +84,7 @@ typedef struct _cyw43_t {
struct netif netif[2]; struct netif netif[2];
struct dhcp dhcp_client; struct dhcp dhcp_client;
dhcp_server_t dhcp_server; dhcp_server_t dhcp_server;
char hostname[MICROPY_BOARD_HOSTNAME_LENGTH];
} cyw43_t; } cyw43_t;
extern cyw43_t cyw43_state; extern cyw43_t cyw43_state;

View File

@ -101,6 +101,8 @@ void cyw43_init(cyw43_t *self) {
self->ap_channel = 3; self->ap_channel = 3;
self->ap_ssid_len = 0; self->ap_ssid_len = 0;
self->ap_key_len = 0; self->ap_key_len = 0;
strncpy(self->hostname, MICROPY_BOARD_HOSTNAME, MICROPY_BOARD_HOSTNAME_LENGTH);
self->hostname[MICROPY_BOARD_HOSTNAME_LENGTH - 1] = 0;
cyw43_poll = NULL; cyw43_poll = NULL;
} }

View File

@ -117,7 +117,7 @@ void cyw43_tcpip_init(cyw43_t *self, int itf) {
#else #else
netif_add(n, &ipconfig[0], &ipconfig[1], &ipconfig[2], self, cyw43_netif_init, netif_input); netif_add(n, &ipconfig[0], &ipconfig[1], &ipconfig[2], self, cyw43_netif_init, netif_input);
#endif #endif
netif_set_hostname(n, "PYBD"); netif_set_hostname(n, self->hostname);
netif_set_default(n); netif_set_default(n);
netif_set_up(n); netif_set_up(n);
@ -132,8 +132,9 @@ void cyw43_tcpip_init(cyw43_t *self, int itf) {
#if LWIP_MDNS_RESPONDER #if LWIP_MDNS_RESPONDER
// TODO better to call after IP address is set // TODO better to call after IP address is set
char mdns_hostname[9]; char mdns_hostname[9];
memcpy(&mdns_hostname[0], "PYBD", 4); int len = MIN(strlen(self->hostname), 4);
mp_hal_get_mac_ascii(MP_HAL_MAC_WLAN0, 8, 4, &mdns_hostname[4]); memcpy(&mdns_hostname[0], self->hostname, len);
mp_hal_get_mac_ascii(MP_HAL_MAC_WLAN0, 4 + len, 8 - len, &mdns_hostname[len]);
mdns_hostname[8] = '\0'; mdns_hostname[8] = '\0';
mdns_resp_add_netif(n, mdns_hostname, 60); mdns_resp_add_netif(n, mdns_hostname, 60);
#endif #endif