Tester cz. 1
Etap 1 - Struktura danych testera
Zrób strukturę przechowującą stan sieci:
typedef struct
{
char ip[16];
char mask[16];
char gw[16];
uint8_t link_up;
uint32_t ping_ok;
uint32_t ping_fail;
uint16_t ping_time_ms;
} NET_STATUS_t;
NET_STATUS_t NetStatus;
Etap 2 - Aktualizacja informacji o sieci
Co sekundę:
strncpy(NetStatus.ip,
ip4addr_ntoa(netif_ip4_addr(&gnetif)),
sizeof(NetStatus.ip));
strncpy(NetStatus.mask,
ip4addr_ntoa(netif_ip4_netmask(&gnetif)),
sizeof(NetStatus.mask));
strncpy(NetStatus.gw,
ip4addr_ntoa(netif_ip4_gw(&gnetif)),
sizeof(NetStatus.gw));
NetStatus.link_up = netif_is_link_up(&gnetif);
Etap 3 - Ping bramy
Najpierw ustalmy, jakiego LWIP używasz.
Sprawdź czy w projekcie istnieje plik:
Middlewares/Third_Party/LwIP/apps/ping/ping.c
albo
Middlewares/Third_Party/LwIP/src/apps
Jeśli go nie ma, napisz:
wersję CubeMX/CubeIDE
wersję STM32CubeF7
Wtedy dobierzemy najprostszy sposób na ICMP Echo.
Etap 4 - OLED/LCD
Jaki wyświetlacz planujesz?
Np.:
- SSD1306 OLED 128x64 I²C
- SSD1306 SPI
- ST7735
- ILI9341
- HD44780 16x2
To wpłynie na sposób prezentacji.
Przykładowy ekran:
STM32 NET TESTER
IP: 192.168.100.19
GW: 192.168.100.1
LINK: UP
PING: 3 ms
BAT: 4.08V
Etap 5 - SNMP Agent
Dopiero gdy mamy działający tester.
Najpierw sprawdź w lwipopts.h, czy masz:
#define LWIP_SNMP 1
lub
#define SNMP_LWIP_MIB2 1
Jeśli nie, później to włączymy.