|  | @@ -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);
 | 
	
		
			
				|  |  |    }   
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |