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.