Загрузка данных


#include <zephyr/kernel.h>
#include <zephyr/net/net_if.h>
#include <zephyr/net/net_core.h>
#include <zephyr/net/net_ip.h>

void set_static_ip(void)
{
    // 1. Получаем указатель на сетевой интерфейс по умолчанию (Ethernet-порт i.MX RT)
    struct net_if *iface = net_if_get_default();
    if (!iface) {
        printk("Ошибка: Сетевой интерфейс не найден\n");
        return;
    }

    struct in_addr ipaddr, netmask, gw;

    // 2. Преобразуем строковые IP-адреса в бинарную структуру структур
    net_addr_pton(AF_INET, "192.168.1.100", &ipaddr);
    net_addr_pton(AF_INET, "255.255.255.0", &netmask);
    net_addr_pton(AF_INET, "192.168.1.1",   &gw);

    // 3. Удаляем старые IPv4 адреса, если они были (например, от DHCP)
    // Это предотвратит конфликты нескольких адресов на одном интерфейсе
    net_if_ipv4_addr_rm(iface, &iface->config.ip.ipv4->unicast[0].ipv4.address.in_addr);

    // 4. Добавляем новый статический IP-адрес
    struct net_if_addr *if_addr = net_if_ipv4_addr_add(iface, &ipaddr, NET_ADDR_MANUAL, 0);
    if (!if_addr) {
        printk("Ошибка: Не удалось добавить IP-адрес\n");
        return;
    }

    // 5. Устанавливаем маску подсети и шлюз по умолчанию
    net_if_ipv4_set_netmask_by_addr(iface, &ipaddr, &netmask);
    net_if_ipv4_set_gw(iface, &gw);

    printk("Статический IP успешно установлен: 192.168.1.100\n");
}

int main(void)
{
    // Даем время стеку сети инициализироваться
    k_sleep(K_MSEC(1000));
    
    set_static_ip();
    
    return 0;
}