|
@@ -30,11 +30,22 @@
|
|
|
*/
|
|
|
struct netif xnetif;
|
|
|
|
|
|
+
|
|
|
+/**
|
|
|
+ * @brief Флаг ининциализации Eth интерфейса
|
|
|
+ */
|
|
|
+unsigned char eth_ready_flag = 0;
|
|
|
+
|
|
|
/**
|
|
|
* @brief Задача получения сетевый параметров по DHCP протоколу
|
|
|
*/
|
|
|
TaskHandle_t xHandleDHCP = NULL;
|
|
|
|
|
|
+/**
|
|
|
+ * @brief Общая структура настроек
|
|
|
+ */
|
|
|
+extern SETTINGS_t sSettings;
|
|
|
+
|
|
|
|
|
|
void LwIP_Init(void)
|
|
|
{
|
|
@@ -62,6 +73,11 @@ void LwIP_Init(void)
|
|
|
tskIDLE_PRIORITY + 2, &xHandleDHCP);
|
|
|
}
|
|
|
|
|
|
+void init_get_ip_address_controller(void){
|
|
|
+ xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
|
|
|
+ tskIDLE_PRIORITY + 2, &xHandleDHCP);
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* @brief LwIP_DHCP_Process_Handle
|
|
|
* @param None
|
|
@@ -117,6 +133,11 @@ void LwIP_DHCP_task(void * pvParameters)
|
|
|
|
|
|
printf("ETH OK\r\n");
|
|
|
|
|
|
+ /* Установлен динамический IP. *
|
|
|
+ * Ждем инициализацию интерфейса и выставляем флаг готовности. */
|
|
|
+ vTaskDelay(2000);
|
|
|
+ eth_ready_flag = 1;
|
|
|
+
|
|
|
vTaskDelete(xHandleDHCP);
|
|
|
}
|
|
|
else
|
|
@@ -124,15 +145,38 @@ void LwIP_DHCP_task(void * pvParameters)
|
|
|
/* DHCP timeout */
|
|
|
if (dhcpTry++ > MAX_DHCP_TRIES)
|
|
|
{
|
|
|
- DHCP_state = DHCP_TIMEOUT;
|
|
|
-
|
|
|
- /* Stop DHCP */
|
|
|
- dhcp_stop(&xnetif);
|
|
|
-
|
|
|
- /* Сообщение о неудачной попытке получить IP */
|
|
|
- printf("ETH FAIL\r\n");
|
|
|
-
|
|
|
- vTaskDelete(xHandleDHCP);
|
|
|
+ DHCP_state = DHCP_TIMEOUT;
|
|
|
+
|
|
|
+ /* Stop DHCP */
|
|
|
+ dhcp_stop(&xnetif);
|
|
|
+
|
|
|
+ /* if (sSettings.sFlags.netsettingsChanged == true)
|
|
|
+ {
|
|
|
+ ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip);
|
|
|
+ netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask);
|
|
|
+ gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);
|
|
|
+ netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);
|
|
|
+ gw.addr = ipaddr_addr(sSettings.sWebParams.gate);
|
|
|
+ }
|
|
|
+
|
|
|
+ //Static address used
|
|
|
+ netif_set_addr(&xnetif, &ipaddr , &netmask, &gw);
|
|
|
+
|
|
|
+ printf("DHCP timeout\n\r");
|
|
|
+ printf("\n\rStatic IP address\n\r");
|
|
|
+ printf(ipaddr_ntoa(&ipaddr));
|
|
|
+ printf("\n\r");*/
|
|
|
+
|
|
|
+ /* Установлен динамический IP. *
|
|
|
+ * Ждем инициализацию интерфейса и выставляем флаг готовности. */
|
|
|
+ vTaskDelay(2000);
|
|
|
+ eth_ready_flag = 0;
|
|
|
+
|
|
|
+ vTaskDelete(xHandleDHCP);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -141,7 +185,7 @@ void LwIP_DHCP_task(void * pvParameters)
|
|
|
default: break;
|
|
|
}
|
|
|
|
|
|
- vTaskDelay(250);
|
|
|
+ vTaskDelay(1250);
|
|
|
}
|
|
|
}
|
|
|
|