diff --git a/usrc/main.cpp b/usrc/main.cpp index e50b34a..485051e 100644 --- a/usrc/main.cpp +++ b/usrc/main.cpp @@ -142,6 +142,7 @@ void umain() { osDelay(10); debug_light_ctrl(); factory_reset_key_detect(); + network_service_schedule(); // if (xs_has_passedms(0) >= * 60 * 60 * 1000) { // 限制客户使用时长 diff --git a/usrc/project_configs.h b/usrc/project_configs.h index e105199..fb588fe 100644 --- a/usrc/project_configs.h +++ b/usrc/project_configs.h @@ -1,7 +1,7 @@ #pragma once #define VERSION(main, sub, fix) (main << 16 | sub << 8 | fix << 0) -#define PC_VERSION VERSION(3, 3, 1) +#define PC_VERSION VERSION(3, 3, 2) #define PC_MANUFACTURER0 ('i' | 'f' << 8 | 'l' << 16 | 'y' << 24) #define PC_MANUFACTURER1 ('t' | 'o' << 8 | 'p' << 16 | '\0' << 24) diff --git a/usrc/service/network_service.c b/usrc/service/network_service.c index 19b7e0b..ba45811 100644 --- a/usrc/service/network_service.c +++ b/usrc/service/network_service.c @@ -102,16 +102,22 @@ void netif_ext_callback(struct netif *netif, netif_nsc_reason_t reason, const ne // netif_set_addr(netif, &ipaddr, &netmask, &gw); // m_networkisready = false; // } - if (!dhcp_is_start) { - dhcp_start(&gnetif); - dhcp_is_start = true; - } if (args->link_changed.state) { + // if (!dhcp_is_start) { + // dhcp_start(&gnetif); + // dhcp_is_start = true; + // ZLOGI(TAG, "start dhcp"); + // } if (netif->ip_addr.addr != 0) { m_networkisready = true; } } else { + ZLOGI(TAG, "stop dhcp"); + if (dhcp_is_start) { + dhcp_stop(&gnetif); + dhcp_is_start = false; + } m_networkisready = false; } } @@ -179,9 +185,16 @@ void network_service_init() { } osThreadDef(EthLink, ethernet_link_thread, NETWORK_REPORT_TASK_LEVEL, 0, 1024); osThreadCreate(osThread(EthLink), &gnetif); - - } } - +void network_service_schedule() { + if (!dhcp_is_start && netif_is_up(&gnetif)) { + err_t err = dhcp_start(&gnetif); + if (err != 0) { + return; + } + dhcp_is_start = true; + ZLOGI(TAG, "start dhcp"); + } +} bool network_service_network_is_ready() { return m_networkisready; } diff --git a/usrc/service/network_service.h b/usrc/service/network_service.h index 6c63c9b..a17c885 100644 --- a/usrc/service/network_service.h +++ b/usrc/service/network_service.h @@ -4,6 +4,7 @@ extern "C" { #endif void network_service_init(); bool network_service_network_is_ready(); +void network_service_schedule(); #ifdef __cplusplus } #endif \ No newline at end of file