Skip to content

Commit

Permalink
Update
Browse files Browse the repository at this point in the history
  • Loading branch information
bkerler committed Feb 10, 2024
1 parent 2be9dbc commit 91eb222
Show file tree
Hide file tree
Showing 13 changed files with 56 additions and 69 deletions.
43 changes: 22 additions & 21 deletions include/buddy/lwipopts.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,27 +9,28 @@ extern "C" {

#include <stdint.h>

#define WITH_RTOS 1
#define MEM_LIBC_MALLOC 0
#define CHECKSUM_BY_HARDWARE 0
#define LWIP_DHCP 1
#define MEM_ALIGNMENT 4
#define MEMP_NUM_SYS_TIMEOUT 8
#define LWIP_ETHERNET 1
#define LWIP_DNS_SECURE 7
#define DNS_MAX_NAME_LENGTH 128
#define SNTP_GET_SERVERS_FROM_DHCP 1

#define TCP_MSS 1024
#define TCP_WND (8 * TCP_MSS)
#define TCP_SND_BUF (2 * TCP_MSS)
#define LWIP_WND_SCALE 0
#define TCP_RCV_SCALE 0
#define PBUF_POOL_SIZE 10
#define PBUF_POOL_SMALL_SIZE 12
#define IP_REASS_MAX_PBUFS 15
#define TCPIP_THREAD_STACKSIZE 1248
#define TCPIP_MBOX_SIZE PBUF_POOL_SIZE + PBUF_POOL_SMALL_SIZE
#define WITH_RTOS 1
#define MEM_LIBC_MALLOC 0
#define CHECKSUM_BY_HARDWARE 0
#define LWIP_DHCP 1
#define MEM_ALIGNMENT 4
#define MEMP_NUM_SYS_TIMEOUT 8
#define LWIP_ETHERNET 1
#define LWIP_DNS_SECURE 7
#define DNS_MAX_NAME_LENGTH 128
#define SNTP_GET_SERVERS_FROM_DHCP 1
#define SNTP_GET_SERVERS_FROM_DHCPV6 1
#define SNTP_MAX_SERVERS 2
#define TCP_MSS 1024
#define TCP_WND (8 * TCP_MSS)
#define TCP_SND_BUF (2 * TCP_MSS)
#define LWIP_WND_SCALE 0
#define TCP_RCV_SCALE 0
#define PBUF_POOL_SIZE 10
#define PBUF_POOL_SMALL_SIZE 12
#define IP_REASS_MAX_PBUFS 15
#define TCPIP_THREAD_STACKSIZE 1248
#define TCPIP_MBOX_SIZE PBUF_POOL_SIZE + PBUF_POOL_SMALL_SIZE

#define DEFAULT_UDP_RECVMBOX_SIZE TCPIP_MBOX_SIZE
#define DEFAULT_TCP_RECVMBOX_SIZE TCPIP_MBOX_SIZE
Expand Down
2 changes: 1 addition & 1 deletion lib/WUI/netif_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ typedef struct {
ip_addr_t dns2_ip4; // user defined DNS #2
lan_t lan; // user defined LAN configurations
uint32_t var_mask; // mask for setting ethvars
ip_addr_t ntp_ip4; // user defined NTP
char ntp[DNS_MAX_NAME_LENGTH + 1]; // user defined NTP
} ETH_config_t;

// those bits were previously assigned to distinguish WPA/WEP/none
Expand Down
28 changes: 8 additions & 20 deletions lib/WUI/sntp/sntp_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,50 +2,38 @@
#include "sntp_client.h"
#include "netdev.h"
#include "netif.h"

// default ntp server: ip of Czech CESNET NTP server tak.cesnet.cz, until user changable
static const uint32_t ntp_server = 4002443715; // 4002443715 = rev32(3278999790) => "195.113.144.238"
#include "netdb.h"

static uint32_t sntp_running = 0; // describes if sntp is currently running or not
void sntp_client_static_init(ip4_addr_t *ntp_ipv4_address) {
void sntp_client_static_init(const char *ntp_address) {
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_servermode_dhcp(0);
#if LWIP_IPV4
#ifdef SNTP_SERVER_DNS
if (ntp_ipv4_address->addr == ntp_server) {
sntp_setservername(1, SNTP_SERVER_ADDRESS);
} else {
sntp_setserver(0, ntp_ipv4_address);
}
#else
sntp_setserver(0, ntp_ipv4_address);
#endif
#endif /* LWIP_IPV4 */
sntp_setservername(0, ntp_address);
sntp_init();
}

void sntp_client_dhcp_init(ip4_addr_t *ntp_ipv4_address) {
void sntp_client_dhcp_init(const char *ntp_address) {
sntp_setoperatingmode(SNTP_OPMODE_POLL);
sntp_servermode_dhcp(1);
#if LWIP_IPV4
#ifdef SNTP_SERVER_DNS
sntp_setservername(1, SNTP_SERVER_ADDRESS);
#else
sntp_setserver(1, ntp_ipv4_address);
sntp_setservername(1, ntp_address);
#endif
#endif /* LWIP_IPV4 */
sntp_init();
}

void sntp_client_step(bool ntp_via_dhcp, ip4_addr_t *ntp_ipv4_address) {
void sntp_client_step(bool ntp_via_dhcp, const char *ntp_address) {
netdev_status_t eth = netdev_get_status(NETDEV_ETH_ID);
netdev_status_t wifi = netdev_get_status(NETDEV_ESP_ID);

if (!sntp_running && (eth == NETDEV_NETIF_UP || wifi == NETDEV_NETIF_UP)) {
if (ntp_via_dhcp) {
sntp_client_dhcp_init(ntp_ipv4_address);
sntp_client_dhcp_init(ntp_address);
} else {
sntp_client_static_init(ntp_ipv4_address);
sntp_client_static_init(ntp_address);
}
sntp_running = 1;
} else if (sntp_running && eth != NETDEV_NETIF_UP && wifi != NETDEV_NETIF_UP) {
Expand Down
6 changes: 3 additions & 3 deletions lib/WUI/sntp/sntp_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
extern "C" {
#endif

void sntp_client_static_init(ip4_addr_t *ntp_ipv4_address);
void sntp_client_dhcp_init(ip4_addr_t *ntp_ipv4_address);
void sntp_client_step(bool ntp_via_dhcp, ip4_addr_t *ntp_ipv4_address);
void sntp_client_static_init(const char *ntp_address);
void sntp_client_dhcp_init(const char *ntp_address);
void sntp_client_step(bool ntp_via_dhcp, const char *ntp_ipv4_address);
void sntp_client_stop(void);

#ifdef __cplusplus
Expand Down
7 changes: 3 additions & 4 deletions lib/WUI/wui.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "wui.h"
#include "netdb.h"
#include "netif_settings.h"

#include "marlin_client.hpp"
Expand Down Expand Up @@ -244,8 +245,7 @@ class NetworkState {
// selected interface?
dns_setserver(0, &cfg.dns1_ip4);
dns_setserver(1, &cfg.dns2_ip4);
ip4_addr_t ntp_ipv4 { .addr = cfg.ntp_ip4.addr };
sntp_client_static_init(&ntp_ipv4);
sntp_client_static_init((const char *)&cfg.ntp);
netifapi_netif_set_addr(&iface.dev, &cfg.lan.addr_ip4, &cfg.lan.msk_ip4, &cfg.lan.gw_ip4);
netifapi_dhcp_inform(&iface.dev);
break;
Expand Down Expand Up @@ -410,8 +410,7 @@ class NetworkState {
// TODO: This does some code gymnastics inside to track changes
// of network configuration. Consider cleaning that up and
// integrating into some kind of up/down mechanism.
ip4_addr_t ntp_ipv4 = { .addr = config_store().lan_ntp_ip4_addr.get() };
sntp_client_step(config_store().lan_ntp_via_dhcp.get(), &ntp_ipv4);
sntp_client_step(config_store().lan_ntp_via_dhcp.get(), config_store().lan_ntp_addr.get_c_str());
}

if (events & HealthCheck) {
Expand Down
15 changes: 7 additions & 8 deletions lib/WUI/wui_api.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,10 +80,9 @@ static int ini_handler_func(void *user, const char *section, const char *name, c
if (ip4addr_aton(value, &tmp_config->lan.gw_ip4)) {
tmp_config->var_mask |= ETHVAR_MSK(ETHVAR_LAN_GW_IP4);
}
} else if (ini_string_match(section, "network", name, "ntp4")) {
if (ip4addr_aton(value, &tmp_config->ntp_ip4)) {
tmp_config->var_mask |= ETHVAR_MSK(ETHVAR_NTP_ADDR_IP4);
}
} else if (ini_string_match(section, "network", name, "ntp")) {
strlcpy(tmp_config->ntp, value, DNS_MAX_NAME_LENGTH + 1);
tmp_config->var_mask |= ETHVAR_MSK(ETHVAR_NTP_ADDRESS);
} else if (ini_string_match(section, "network", name, "dns4")) {

if (NULL != strchr(value, ';')) {
Expand Down Expand Up @@ -173,8 +172,8 @@ void save_net_params(ETH_config_t *ethconfig, ap_entry_t *ap, uint32_t netdev_id
netdev_id == NETDEV_ETH_ID ? config_store().lan_hostname.set(ethconfig->hostname)
: config_store().wifi_hostname.set(ethconfig->hostname);
}
if (ethconfig->var_mask & ETHVAR_MSK(ETHVAR_NTP_ADDR_IP4)) {
config_store().lan_ntp_ip4_addr.set(ethconfig->ntp_ip4.addr);
if (ethconfig->var_mask & ETHVAR_MSK(ETHVAR_NTP_ADDRESS)) {
config_store().lan_ntp_addr.set(ethconfig->ntp);
}
if (ap != NULL) {
assert(netdev_id == NETDEV_ESP_ID);
Expand All @@ -200,7 +199,7 @@ void load_net_params(ETH_config_t *ethconfig, ap_entry_t *ap, uint32_t netdev_id
ethconfig->dns2_ip4.addr = config_store().lan_ip4_dns2.get();
ethconfig->lan.msk_ip4.addr = config_store().lan_ip4_mask.get();
ethconfig->lan.gw_ip4.addr = config_store().lan_ip4_gateway.get();
ethconfig->ntp_ip4.addr = config_store().lan_ntp_ip4_addr.get();
strlcpy(ethconfig->ntp, config_store().lan_ntp_addr.get_c_str(), DNS_MAX_NAME_LENGTH + 1);
strlcpy(ethconfig->hostname, config_store().lan_hostname.get_c_str(), ETH_HOSTNAME_LEN + 1);
} else {
ethconfig->lan.flag = config_store().wifi_flag.get() & ~RESERVED_MASK;
Expand All @@ -209,7 +208,7 @@ void load_net_params(ETH_config_t *ethconfig, ap_entry_t *ap, uint32_t netdev_id
ethconfig->dns2_ip4.addr = config_store().wifi_ip4_dns2.get();
ethconfig->lan.msk_ip4.addr = config_store().wifi_ip4_mask.get();
ethconfig->lan.gw_ip4.addr = config_store().wifi_ip4_gateway.get();
ethconfig->ntp_ip4.addr = config_store().lan_ntp_ip4_addr.get();
strlcpy(ethconfig->ntp, config_store().lan_ntp_addr.get_c_str(), DNS_MAX_NAME_LENGTH + 1);
strlcpy(ethconfig->hostname, config_store().wifi_hostname.get_c_str(), ETH_HOSTNAME_LEN + 1);
}

Expand Down
2 changes: 1 addition & 1 deletion lib/WUI/wui_api.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ typedef enum {
ETHVAR_DNS1_IP4, // ip_addr_t, dns1_ip4
ETHVAR_DNS2_IP4, // ip_addr_t, dns2_ip4
ETHVAR_MAC_ADDRESS, // is not included in ethconfig (used in stringifying for screen)
ETHVAR_NTP_ADDR_IP4, // ip_addr_t, ntp_ip4
ETHVAR_NTP_ADDRESS, // char[256+1], hostname or ip

APVAR_SSID, // char[32 + 1], ap_entry_t::ssid
APVAR_PASS, // char[64 + 1], ap_entry_t::pass
Expand Down
4 changes: 2 additions & 2 deletions src/gui/MItem_lan.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ MI_MAC_ADDR::MI_MAC_ADDR()
: WiInfo<MAC_LEN>(_(label), nullptr, is_enabled_t::yes, is_hidden_t::no) {
}

MI_NTP_IP4_ADDR::MI_NTP_IP4_ADDR()
: WiInfo<ADDR_LEN>(_(label), nullptr, is_enabled_t::yes, is_hidden_t::no) {
MI_NTP_ADDR::MI_NTP_ADDR()
: WiInfo<DNS_MAX_NAME_LENGTH>(_(label), nullptr, is_enabled_t::yes, is_hidden_t::no) {
}

/*****************************************************************************/
Expand Down
6 changes: 3 additions & 3 deletions src/gui/MItem_lan.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,11 +118,11 @@ class MI_MAC_ADDR : public WiInfo<MAC_LEN> {
MI_MAC_ADDR();
};

class MI_NTP_IP4_ADDR : public WiInfo<ADDR_LEN> {
static constexpr const char *const label = GuiDefaults::ScreenWidth > 240 ? N_("NTP IPv4 Address") : N_("NTP IP");
class MI_NTP_ADDR : public WiInfo<DNS_MAX_NAME_LENGTH> {
static constexpr const char *const label = GuiDefaults::ScreenWidth > 240 ? N_("NTP Address") : N_("NTP");

public:
MI_NTP_IP4_ADDR();
MI_NTP_ADDR();
};

class MI_NTP_VIA_DHCP : public WI_ICON_SWITCH_OFF_ON_t {
Expand Down
4 changes: 2 additions & 2 deletions src/gui/screen_menu_network.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@ void ScreenMenuNetwork::refresh_address() {
stringify_address_for_screen(str, sizeof(str), ethconfig, ETHVAR_MSK(ETHVAR_LAN_ADDR_IP4));
Item<MI_IP4_ADDR>().ChangeInformation(str);
const ip_addr_t *ntp_server = sntp_getserver(0);
Item<MI_NTP_IP4_ADDR>().ChangeInformation(ipaddr_ntoa(ntp_server));
Item<MI_NTP_ADDR>().ChangeInformation(ipaddr_ntoa(ntp_server));
} else {
Item<MI_IP4_ADDR>().ChangeInformation(UNKNOWN_ADDR);
Item<MI_NTP_IP4_ADDR>().ChangeInformation(UNKNOWN_ADDR);
Item<MI_NTP_ADDR>().ChangeInformation(UNKNOWN_ADDR);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/gui/screen_menu_network.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ using ScreenMenuNetwork__ = ScreenMenu<EFooter::Off, MI_RETURN, MI_PRUSALINK,
#if BUDDY_ENABLE_CONNECT()
MI_PRUSA_CONNECT,
#endif
MI_NET_INTERFACE_t, MI_IP4_ADDR, MI_MAC_ADDR, MI_NTP_VIA_DHCP, MI_NTP_IP4_ADDR, MI_METRICS_SETTINGS, MI_ETH_SETTINGS, MI_WIFI_SETTINGS>;
MI_NET_INTERFACE_t, MI_IP4_ADDR, MI_MAC_ADDR, MI_NTP_VIA_DHCP, MI_NTP_ADDR, MI_METRICS_SETTINGS, MI_ETH_SETTINGS, MI_WIFI_SETTINGS>;

class ScreenMenuNetwork : public ScreenMenuNetwork__ {
public:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <module/prusa/dock_position.hpp>
#include <module/prusa/tool_offset.hpp>
#include <filament_sensors_remap_data.hpp>
#include "lwipopts.h"

namespace config_store_ns {

Expand Down Expand Up @@ -80,8 +81,7 @@ namespace defaults {
inline constexpr std::array<char, wifi_max_ssid_len + 1> wifi_ap_ssid { "" };
inline constexpr std::array<char, wifi_max_passwd_len + 1> wifi_ap_password { "" };

// default ntp server: ip of Czech CESNET NTP server tak.cesnet.cz, until user changable
inline constexpr uint32_t ntp_server { 4002443715 }; // 4002443715 = rev32(3278999790) => "195.113.144.238"
inline constexpr std::array<char, DNS_MAX_NAME_LENGTH + 1> ntp_server { "pool.ntp.org" };

inline constexpr eSOUND_MODE sound_mode { eSOUND_MODE::_undef };
inline constexpr uint8_t sound_volume { 5 };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ struct CurrentStore : public journal::CurrentStoreConfig<journal::Backend, backe
StoreItem<uint32_t, defaults::uint32_t_zero, journal::hash("LAN IP4 Gateway")> lan_ip4_gateway; // X.X.X.X address encoded
StoreItem<uint32_t, defaults::uint32_t_zero, journal::hash("LAN IP4 DNS1")> lan_ip4_dns1; // X.X.X.X address encoded
StoreItem<uint32_t, defaults::uint32_t_zero, journal::hash("LAN IP4 DNS2")> lan_ip4_dns2; // X.X.X.X address encoded
StoreItem<uint32_t, defaults::ntp_server, journal::hash("NTP IP4 Address")> lan_ntp_ip4_addr; // X.X.X.X address encoded
StoreItem<std::array<char, DNS_MAX_NAME_LENGTH + 1>, defaults::ntp_server, journal::hash("NTP Address")> lan_ntp_addr; // X.X.X.X address encoded or string
StoreItem<std::array<char, lan_hostname_max_len + 1>, defaults::net_hostname, journal::hash("LAN Hostname")> lan_hostname;

StoreItem<int8_t, defaults::lan_timezone, journal::hash("LAN Timezone")> timezone; // hour difference from UTC
Expand Down

0 comments on commit 91eb222

Please sign in to comment.