|  | @@ -35,13 +35,13 @@ extern SETTINGS_t sSettings;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Флаг подтверждения новых сетевых параметров пользователем
 | 
	
		
			
				|  |  | -  */  
 | 
	
		
			
				|  |  | +  */
 | 
	
		
			
				|  |  |  extern bool fConfirmWebParams;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Network interface structure
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  | -struct netif xnetif; 
 | 
	
		
			
				|  |  | +struct netif xnetif;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Задача получения сетевый параметров по DHCP протоколу
 | 
	
	
		
			
				|  | @@ -53,106 +53,98 @@ TaskHandle_t xHandleDHCP = NULL;
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  |  TaskHandle_t xHandleWebReinit = NULL;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -bool dhcp = false;	
 | 
	
		
			
				|  |  | +bool dhcp = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  bool isIpReceived = false;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void LwIP_Init(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  struct ip4_addr ipaddr;
 | 
	
		
			
				|  |  | -  struct ip4_addr netmask;
 | 
	
		
			
				|  |  | -  struct ip4_addr gw;
 | 
	
		
			
				|  |  | -  char str[20];
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  tcpip_init( NULL, NULL );	
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  /* Если настройки изменили, то используем временные параметры */
 | 
	
		
			
				|  |  | -  if (sSettings.sFlags.netsettingsChanged == true)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if (sSettings.sWebTempParams.dhcpEnable)
 | 
	
		
			
				|  |  | -    {	
 | 
	
		
			
				|  |  | -      ipaddr.addr = 0;
 | 
	
		
			
				|  |  | -      netmask.addr = 0;
 | 
	
		
			
				|  |  | -      gw.addr = 0;
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	  netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | -      netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_up(&xnetif); 
 | 
	
		
			
				|  |  | -    }	
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -    {	
 | 
	
		
			
				|  |  | -	  ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | -	  netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  | -	  gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -      sprintf(str, " %s\n\r", sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | -      PRINT_USART("\n\rStatic IP address   \n\r");
 | 
	
		
			
				|  |  | -      PRINT_USART(str);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | -      netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_up(&xnetif); 
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      isIpReceived = true;
 | 
	
		
			
				|  |  | +    struct ip4_addr ipaddr;
 | 
	
		
			
				|  |  | +    struct ip4_addr netmask;
 | 
	
		
			
				|  |  | +    struct ip4_addr gw;
 | 
	
		
			
				|  |  | +    char str[20];
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    tcpip_init( NULL, NULL );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Если настройки изменили, то используем временные параметры */
 | 
	
		
			
				|  |  | +    if (sSettings.sFlags.netsettingsChanged == true) {
 | 
	
		
			
				|  |  | +        if (sSettings.sWebTempParams.dhcpEnable) {
 | 
	
		
			
				|  |  | +            ipaddr.addr = 0;
 | 
	
		
			
				|  |  | +            netmask.addr = 0;
 | 
	
		
			
				|  |  | +            gw.addr = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | +            netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_up(&xnetif);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | +            netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  | +            gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            sprintf(str, " %s\n\r", sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | +            PRINT_USART("\n\rStatic IP address   \n\r");
 | 
	
		
			
				|  |  | +            PRINT_USART(str);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | +            netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_up(&xnetif);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            isIpReceived = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (sSettings.sWebTempParams.dhcpEnable) {
 | 
	
		
			
				|  |  | +            xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
 | 
	
		
			
				|  |  | +                tskIDLE_PRIORITY + 2, &xHandleDHCP);
 | 
	
		
			
				|  |  | +            dhcp = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -	if (sSettings.sWebTempParams.dhcpEnable) {
 | 
	
		
			
				|  |  | -      xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
 | 
	
		
			
				|  |  | -                  tskIDLE_PRIORITY + 2, &xHandleDHCP);
 | 
	
		
			
				|  |  | -	  dhcp = true;
 | 
	
		
			
				|  |  | -	}  
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  /* Настройки не менялись, используем обычне настройки из флеш памяти */
 | 
	
		
			
				|  |  | -  else
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    if (sSettings.sWebParams.dhcpEnable)
 | 
	
		
			
				|  |  | -    {	
 | 
	
		
			
				|  |  | -      ipaddr.addr = 0;
 | 
	
		
			
				|  |  | -      netmask.addr = 0;
 | 
	
		
			
				|  |  | -      gw.addr = 0;
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	  netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | -      netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_up(&xnetif); 
 | 
	
		
			
				|  |  | -    }	
 | 
	
		
			
				|  |  | -    else
 | 
	
		
			
				|  |  | -    {	
 | 
	
		
			
				|  |  | -	  ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | -	  netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);
 | 
	
		
			
				|  |  | -	  gw.addr = ipaddr_addr(sSettings.sWebParams.gate);
 | 
	
		
			
				|  |  | -  	  
 | 
	
		
			
				|  |  | -	  /* Обновляем временные настройки */
 | 
	
		
			
				|  |  | -	  sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable;
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebTempParams.ip, sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebTempParams.mask, sSettings.sWebParams.mask);
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebTempParams.gate, sSettings.sWebParams.gate);
 | 
	
		
			
				|  |  | -	  
 | 
	
		
			
				|  |  | -      sprintf(str, " %s\n\r", sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | -      PRINT_USART("\n\rStatic IP address   \n\r");
 | 
	
		
			
				|  |  | -      PRINT_USART(str);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | -      netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | -      netif_set_up(&xnetif); 
 | 
	
		
			
				|  |  | -      
 | 
	
		
			
				|  |  | -      isIpReceived = true;
 | 
	
		
			
				|  |  | +    /* Настройки не менялись, используем обычне настройки из флеш памяти */
 | 
	
		
			
				|  |  | +    else {
 | 
	
		
			
				|  |  | +        if (sSettings.sWebParams.dhcpEnable) {
 | 
	
		
			
				|  |  | +            ipaddr.addr = 0;
 | 
	
		
			
				|  |  | +            netmask.addr = 0;
 | 
	
		
			
				|  |  | +            gw.addr = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | +            netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_up(&xnetif);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | +            netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);
 | 
	
		
			
				|  |  | +            gw.addr = ipaddr_addr(sSettings.sWebParams.gate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            /* Обновляем временные настройки */
 | 
	
		
			
				|  |  | +            sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable;
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebTempParams.ip, sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebTempParams.mask, sSettings.sWebParams.mask);
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebTempParams.gate, sSettings.sWebParams.gate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            sprintf(str, " %s\n\r", sSettings.sWebParams.ip);
 | 
	
		
			
				|  |  | +            PRINT_USART("\n\rStatic IP address   \n\r");
 | 
	
		
			
				|  |  | +            PRINT_USART(str);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, ðernetif_init, &tcpip_input);
 | 
	
		
			
				|  |  | +            netif_set_default(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_link_up(&xnetif);
 | 
	
		
			
				|  |  | +            netif_set_up(&xnetif);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            isIpReceived = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (sSettings.sWebParams.dhcpEnable) {
 | 
	
		
			
				|  |  | +            xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
 | 
	
		
			
				|  |  | +                tskIDLE_PRIORITY + 2, &xHandleDHCP);
 | 
	
		
			
				|  |  | +            dhcp = true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -	if (sSettings.sWebParams.dhcpEnable) {
 | 
	
		
			
				|  |  | -      xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
 | 
	
		
			
				|  |  | -                  tskIDLE_PRIORITY + 2, &xHandleDHCP);
 | 
	
		
			
				|  |  | -	  dhcp = true;
 | 
	
		
			
				|  |  | -	}  
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  /* Если настройки изменились, запускаем задачу по отсчету времени реакции пользователя*/
 | 
	
		
			
				|  |  | -  if (sSettings.sFlags.netsettingsChanged == true)
 | 
	
		
			
				|  |  | -    xTaskCreate(vTaskWebReinit, "webReinit", configMINIMAL_STACK_SIZE, NULL,
 | 
	
		
			
				|  |  | -              tskIDLE_PRIORITY, &xHandleWebReinit);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Если настройки изменились, запускаем задачу по отсчету времени реакции пользователя*/
 | 
	
		
			
				|  |  | +    if (sSettings.sFlags.netsettingsChanged == true)
 | 
	
		
			
				|  |  | +        xTaskCreate(vTaskWebReinit, "webReinit", configMINIMAL_STACK_SIZE, NULL,
 | 
	
		
			
				|  |  | +            tskIDLE_PRIORITY, &xHandleWebReinit);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -160,131 +152,117 @@ void LwIP_Init(void)
 | 
	
		
			
				|  |  |    * @param  None
 | 
	
		
			
				|  |  |    * @retval None
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  | -void LwIP_DHCP_task(void * pvParameters)
 | 
	
		
			
				|  |  | +void LwIP_DHCP_task(void *pvParameters)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  struct ip4_addr ipaddr;
 | 
	
		
			
				|  |  | -  struct ip4_addr netmask;
 | 
	
		
			
				|  |  | -  struct ip4_addr gw;
 | 
	
		
			
				|  |  | -  uint8_t DHCP_state;  
 | 
	
		
			
				|  |  | -  DHCP_state = DHCP_START;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  for (;;)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -	  struct dhcp *dhcp = netif_dhcp_data(&xnetif);
 | 
	
		
			
				|  |  | -    switch (DHCP_state)
 | 
	
		
			
				|  |  | -    {
 | 
	
		
			
				|  |  | -      case DHCP_START:
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        dhcp_start(&xnetif);
 | 
	
		
			
				|  |  | -        DHCP_state = DHCP_WAIT_ADDRESS;
 | 
	
		
			
				|  |  | -        //PRINT_USART("\n\rLooking for DHCP server please wait...\n\r");
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      break;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -      case DHCP_WAIT_ADDRESS:
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        /* Read the new IP address */
 | 
	
		
			
				|  |  | -        ipaddr = xnetif.ip_addr;
 | 
	
		
			
				|  |  | -        netmask = xnetif.netmask;
 | 
	
		
			
				|  |  | -        gw = xnetif.gw;
 | 
	
		
			
				|  |  | -        	
 | 
	
		
			
				|  |  | -        if (ipaddr.addr != 0) 
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          DHCP_state = DHCP_ADDRESS_ASSIGNED;	
 | 
	
		
			
				|  |  | -          dhcp_stop(&xnetif);
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -		  /* Сохранение полученных сетевый параметров */
 | 
	
		
			
				|  |  | -		  /* Если настройки изменили, то сохраняем во временные настройки */
 | 
	
		
			
				|  |  | -          if (sSettings.sFlags.netsettingsChanged == true)
 | 
	
		
			
				|  |  | -		  {
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | -		  }
 | 
	
		
			
				|  |  | -		  else
 | 
	
		
			
				|  |  | -		  {
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			/* Обновляем временные настройки */
 | 
	
		
			
				|  |  | -			sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable;
 | 
	
		
			
				|  |  | -			sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | -		    sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -		  }
 | 
	
		
			
				|  |  | -		  
 | 
	
		
			
				|  |  | -		  PRINT_USART("Parameters assigned by a DHCP server:\n\r     IP:   ");
 | 
	
		
			
				|  |  | -          PRINT_USART(ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | -		  PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -		  PRINT_USART("Netmask:   ");
 | 
	
		
			
				|  |  | -		  PRINT_USART(ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | -		  PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | -		  
 | 
	
		
			
				|  |  | -		  PRINT_USART("Gateway:   ");
 | 
	
		
			
				|  |  | -		  PRINT_USART(ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | -		  PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -          isIpReceived = true;
 | 
	
		
			
				|  |  | -          
 | 
	
		
			
				|  |  | -		  vTaskDelay(50);
 | 
	
		
			
				|  |  | -		  /* Установлен динамический IP, можно отправить трап о перезагрузке устройства */
 | 
	
		
			
				|  |  | -		//  SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | -		  
 | 
	
		
			
				|  |  | -          vTaskDelete(xHandleDHCP);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        else
 | 
	
		
			
				|  |  | -        {
 | 
	
		
			
				|  |  | -          /* DHCP timeout */
 | 
	
		
			
				|  |  | -          //if (xnetif.dhcp->tries > MAX_DHCP_TRIES)
 | 
	
		
			
				|  |  | -          if (dhcp->tries > MAX_DHCP_TRIES)
 | 
	
		
			
				|  |  | -          {
 | 
	
		
			
				|  |  | -            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);
 | 
	
		
			
				|  |  | - 
 | 
	
		
			
				|  |  | -            PRINT_USART("DHCP timeout\n\r");
 | 
	
		
			
				|  |  | -            PRINT_USART("\n\rStatic IP address\n\r");
 | 
	
		
			
				|  |  | -			PRINT_USART(ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | -		    PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | +    struct ip4_addr ipaddr;
 | 
	
		
			
				|  |  | +    struct ip4_addr netmask;
 | 
	
		
			
				|  |  | +    struct ip4_addr gw;
 | 
	
		
			
				|  |  | +    uint8_t DHCP_state;
 | 
	
		
			
				|  |  | +    DHCP_state = DHCP_START;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            isIpReceived = true;
 | 
	
		
			
				|  |  | -            
 | 
	
		
			
				|  |  | -			vTaskDelay(50);
 | 
	
		
			
				|  |  | -			/* Установлен статический IP, можно отправить трап о перезагрузке устройства */
 | 
	
		
			
				|  |  | -		   // SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | -			
 | 
	
		
			
				|  |  | -			vTaskDelete(xHandleDHCP);
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    for (;;) {
 | 
	
		
			
				|  |  | +        struct dhcp *dhcp = netif_dhcp_data(&xnetif);
 | 
	
		
			
				|  |  | +        switch (DHCP_state) {
 | 
	
		
			
				|  |  | +            case DHCP_START: {
 | 
	
		
			
				|  |  | +                dhcp_start(&xnetif);
 | 
	
		
			
				|  |  | +                DHCP_state = DHCP_WAIT_ADDRESS;
 | 
	
		
			
				|  |  | +                //PRINT_USART("\n\rLooking for DHCP server please wait...\n\r");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            case DHCP_WAIT_ADDRESS: {
 | 
	
		
			
				|  |  | +                /* Read the new IP address */
 | 
	
		
			
				|  |  | +                ipaddr = xnetif.ip_addr;
 | 
	
		
			
				|  |  | +                netmask = xnetif.netmask;
 | 
	
		
			
				|  |  | +                gw = xnetif.gw;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                if (ipaddr.addr != 0) {
 | 
	
		
			
				|  |  | +                    DHCP_state = DHCP_ADDRESS_ASSIGNED;
 | 
	
		
			
				|  |  | +                    dhcp_stop(&xnetif);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    /* Сохранение полученных сетевый параметров */
 | 
	
		
			
				|  |  | +                    /* Если настройки изменили, то сохраняем во временные настройки */
 | 
	
		
			
				|  |  | +                    if (sSettings.sFlags.netsettingsChanged == true) {
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | +                    } else {
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        /* Обновляем временные настройки */
 | 
	
		
			
				|  |  | +                        sSettings.sWebTempParams.dhcpEnable = sSettings.sWebParams.dhcpEnable;
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.ip,   "%s", ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.mask, "%s", ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | +                        sprintf(sSettings.sWebTempParams.gate, "%s", ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    PRINT_USART("Parameters assigned by a DHCP server:\n\r     IP:   ");
 | 
	
		
			
				|  |  | +                    PRINT_USART(ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | +                    PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    PRINT_USART("Netmask:   ");
 | 
	
		
			
				|  |  | +                    PRINT_USART(ipaddr_ntoa(&netmask));
 | 
	
		
			
				|  |  | +                    PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    PRINT_USART("Gateway:   ");
 | 
	
		
			
				|  |  | +                    PRINT_USART(ipaddr_ntoa(&gw));
 | 
	
		
			
				|  |  | +                    PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    isIpReceived = true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    vTaskDelay(50);
 | 
	
		
			
				|  |  | +                    /* Установлен динамический IP, можно отправить трап о перезагрузке устройства */
 | 
	
		
			
				|  |  | +                    //  SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    vTaskDelete(xHandleDHCP);
 | 
	
		
			
				|  |  | +                } else {
 | 
	
		
			
				|  |  | +                    /* DHCP timeout */
 | 
	
		
			
				|  |  | +                    //if (xnetif.dhcp->tries > MAX_DHCP_TRIES)
 | 
	
		
			
				|  |  | +                    if (dhcp->tries > MAX_DHCP_TRIES) {
 | 
	
		
			
				|  |  | +                        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);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        PRINT_USART("DHCP timeout\n\r");
 | 
	
		
			
				|  |  | +                        PRINT_USART("\n\rStatic IP address\n\r");
 | 
	
		
			
				|  |  | +                        PRINT_USART(ipaddr_ntoa(&ipaddr));
 | 
	
		
			
				|  |  | +                        PRINT_USART("\n\r");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        isIpReceived = true;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        vTaskDelay(50);
 | 
	
		
			
				|  |  | +                        /* Установлен статический IP, можно отправить трап о перезагрузке устройства */
 | 
	
		
			
				|  |  | +                        // SNMP_SendUserTrap(DEVICE_REBOOTED);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                        vTaskDelete(xHandleDHCP);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            break;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            default: break;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -      break;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      default: break;
 | 
	
		
			
				|  |  | +        vTaskDelay(250);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    vTaskDelay(250);
 | 
	
		
			
				|  |  | -  }   
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -292,67 +270,64 @@ void LwIP_DHCP_task(void * pvParameters)
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  |  void WEB_StartReinitTask(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  xTaskCreate(vTaskWebReinit, "ReinitWeb", 2*configMINIMAL_STACK_SIZE, NULL,
 | 
	
		
			
				|  |  | -              tskIDLE_PRIORITY, &xHandleWebReinit);
 | 
	
		
			
				|  |  | +    xTaskCreate(vTaskWebReinit, "ReinitWeb", 2 * configMINIMAL_STACK_SIZE, NULL,
 | 
	
		
			
				|  |  | +        tskIDLE_PRIORITY, &xHandleWebReinit);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |    * @brief  Переинициализация WEB. Задача положенное время отслеживает флаг
 | 
	
		
			
				|  |  | -  *         fConfirmWebParams. 
 | 
	
		
			
				|  |  | +  *         fConfirmWebParams.
 | 
	
		
			
				|  |  |    *           Если флаг устанавливается в положенное время,
 | 
	
		
			
				|  |  | -  *         временные настройки web перезаписываются в постоянные, сбрасывается 
 | 
	
		
			
				|  |  | -  *         флаг sSettings.sFlags.netsettingsChanged и вся структура настроек 
 | 
	
		
			
				|  |  | -  *         сохраняется в памяти. 
 | 
	
		
			
				|  |  | +  *         временные настройки web перезаписываются в постоянные, сбрасывается
 | 
	
		
			
				|  |  | +  *         флаг sSettings.sFlags.netsettingsChanged и вся структура настроек
 | 
	
		
			
				|  |  | +  *         сохраняется в памяти.
 | 
	
		
			
				|  |  |    *           Если флаг не устанавливается в положенное время, то сбрасывается
 | 
	
		
			
				|  |  |    *         флаг sSettings.sFlags.netsettingsChanged, сохраняется вся структура
 | 
	
		
			
				|  |  |    *         настроек в памяти и контроллер перезагружается.
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  | -void vTaskWebReinit(void * pvParameters)
 | 
	
		
			
				|  |  | +void vTaskWebReinit(void *pvParameters)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  static uint16_t timeCounter = 0;
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  for (;;)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -	/* Контроль времени работы задачи */
 | 
	
		
			
				|  |  | -	if (timeCounter++ > TIME_COUNTER_10_MIN)
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -	  SetWebReinitFlag(false);
 | 
	
		
			
				|  |  | -	  HTTP_SaveSettings();
 | 
	
		
			
				|  |  | -      vTaskDelay(1010);
 | 
	
		
			
				|  |  | -      Reboot();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | -	if (fConfirmWebParams)
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -	  fConfirmWebParams = false;
 | 
	
		
			
				|  |  | -		
 | 
	
		
			
				|  |  | -	  /* Сохраняем временные сетевые настройки в постоянные */
 | 
	
		
			
				|  |  | -	  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable;
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | -	  strcpy(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  | +    static uint16_t timeCounter = 0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    for (;;) {
 | 
	
		
			
				|  |  | +        /* Контроль времени работы задачи */
 | 
	
		
			
				|  |  | +        if (timeCounter++ > TIME_COUNTER_10_MIN) {
 | 
	
		
			
				|  |  | +            SetWebReinitFlag(false);
 | 
	
		
			
				|  |  | +            HTTP_SaveSettings();
 | 
	
		
			
				|  |  | +            vTaskDelay(1010);
 | 
	
		
			
				|  |  | +            Reboot();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (fConfirmWebParams) {
 | 
	
		
			
				|  |  | +            fConfirmWebParams = false;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            /* Сохраняем временные сетевые настройки в постоянные */
 | 
	
		
			
				|  |  | +            sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable;
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | +            strcpy(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  |  #ifdef HARDWARE_BT6709
 | 
	
		
			
				|  |  | -	  for(uint8_t i = 0; i < MAX_WHITE_LIST; i++){
 | 
	
		
			
				|  |  | -		  strcpy(sSettings.sWhiteList[i].ip_range, sSettings.sWhiteListTemp[i].ip_range);
 | 
	
		
			
				|  |  | -		  sSettings.sWhiteList[i].ip = sSettings.sWhiteListTemp[i].ip;
 | 
	
		
			
				|  |  | -		  sSettings.sWhiteList[i].mask = sSettings.sWhiteListTemp[i].mask;
 | 
	
		
			
				|  |  | -	  }
 | 
	
		
			
				|  |  | +            for (uint8_t i = 0; i < MAX_WHITE_LIST; i++) {
 | 
	
		
			
				|  |  | +                strcpy(sSettings.sWhiteList[i].ip_range, sSettings.sWhiteListTemp[i].ip_range);
 | 
	
		
			
				|  |  | +                sSettings.sWhiteList[i].ip = sSettings.sWhiteListTemp[i].ip;
 | 
	
		
			
				|  |  | +                sSettings.sWhiteList[i].mask = sSettings.sWhiteListTemp[i].mask;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -	  HTTP_SaveSettings();
 | 
	
		
			
				|  |  | -	  
 | 
	
		
			
				|  |  | -	  vTaskDelete(xHandleWebReinit);
 | 
	
		
			
				|  |  | -	}	
 | 
	
		
			
				|  |  | -	  
 | 
	
		
			
				|  |  | -	vTaskDelay(1000);
 | 
	
		
			
				|  |  | -  }	
 | 
	
		
			
				|  |  | -}	
 | 
	
		
			
				|  |  | +            HTTP_SaveSettings();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            vTaskDelete(xHandleWebReinit);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        vTaskDelay(1000);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  void SaveWEBparam(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable;
 | 
	
		
			
				|  |  | -  strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | -  strcpy(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | -  strcpy(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  | +    sSettings.sWebParams.dhcpEnable = sSettings.sWebTempParams.dhcpEnable;
 | 
	
		
			
				|  |  | +    strcpy(sSettings.sWebParams.ip,   sSettings.sWebTempParams.ip);
 | 
	
		
			
				|  |  | +    strcpy(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate);
 | 
	
		
			
				|  |  | +    strcpy(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask);
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
	
		
			
				|  | @@ -360,60 +335,57 @@ void SaveWEBparam(void)
 | 
	
		
			
				|  |  |    */
 | 
	
		
			
				|  |  |  bool GetStateWebReinit(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  | -  /* Статус dhcp изменился? */
 | 
	
		
			
				|  |  | -  if (sSettings.sWebParams.dhcpEnable != sSettings.sWebTempParams.dhcpEnable)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -	/* Включили dhcp */
 | 
	
		
			
				|  |  | -    if (sSettings.sWebTempParams.dhcpEnable == 1)
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -	  /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | -	  SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -	  return true;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -	/* Выключили dhcp */
 | 
	
		
			
				|  |  | -	else
 | 
	
		
			
				|  |  | -	{
 | 
	
		
			
				|  |  | -	  /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | -      SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -	  return true;
 | 
	
		
			
				|  |  | -	}  
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  /* Изменился IP? */
 | 
	
		
			
				|  |  | -  if (strstr(sSettings.sWebParams.ip, sSettings.sWebTempParams.ip) == 0)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | -	SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -	return true;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | - 
 | 
	
		
			
				|  |  | -  /* Изменился шлюз? */
 | 
	
		
			
				|  |  | -  if (strstr(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate) == 0)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | -	SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -	return true;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -  
 | 
	
		
			
				|  |  | -  /* Изменилась маска? */
 | 
	
		
			
				|  |  | -  if (strstr(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask) == 0)
 | 
	
		
			
				|  |  | -  {
 | 
	
		
			
				|  |  | -    /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | -	SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -	return true;
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +    /* Статус dhcp изменился? */
 | 
	
		
			
				|  |  | +    if (sSettings.sWebParams.dhcpEnable != sSettings.sWebTempParams.dhcpEnable) {
 | 
	
		
			
				|  |  | +        /* Включили dhcp */
 | 
	
		
			
				|  |  | +        if (sSettings.sWebTempParams.dhcpEnable == 1) {
 | 
	
		
			
				|  |  | +            /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | +            SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        /* Выключили dhcp */
 | 
	
		
			
				|  |  | +        else {
 | 
	
		
			
				|  |  | +            /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | +            SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Изменился IP? */
 | 
	
		
			
				|  |  | +    if (strstr(sSettings.sWebParams.ip, sSettings.sWebTempParams.ip) == 0
 | 
	
		
			
				|  |  | +        || strlen(sSettings.sWebParams.ip) != strlen(sSettings.sWebTempParams.ip)) {
 | 
	
		
			
				|  |  | +        /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | +        SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Изменился шлюз? */
 | 
	
		
			
				|  |  | +    if (strstr(sSettings.sWebParams.gate, sSettings.sWebTempParams.gate) == 0
 | 
	
		
			
				|  |  | +        || strlen(sSettings.sWebParams.gate) != strlen(sSettings.sWebTempParams.gate)) {
 | 
	
		
			
				|  |  | +        /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | +        SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /* Изменилась маска? */
 | 
	
		
			
				|  |  | +    if (strstr(sSettings.sWebParams.mask, sSettings.sWebTempParams.mask) == 0
 | 
	
		
			
				|  |  | +        || strlen(sSettings.sWebParams.mask) != strlen(sSettings.sWebTempParams.mask)) {
 | 
	
		
			
				|  |  | +        /* Устанавилваем флаг */
 | 
	
		
			
				|  |  | +        SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  #ifdef HARDWARE_BT6709
 | 
	
		
			
				|  |  | -  /* Изменился диапазон доверительных хостов? */
 | 
	
		
			
				|  |  | -  for(uint8_t i = 0; i < MAX_WHITE_LIST; i++){
 | 
	
		
			
				|  |  | -	  if (strstr(sSettings.sWhiteList[i].ip_range, sSettings.sWhiteListTemp[i].ip_range) == 0)
 | 
	
		
			
				|  |  | -	  {
 | 
	
		
			
				|  |  | -		// Устанавилваем флаг
 | 
	
		
			
				|  |  | -		SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | -		return true;
 | 
	
		
			
				|  |  | -	  }
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +    /* Изменился диапазон доверительных хостов? */
 | 
	
		
			
				|  |  | +    for (uint8_t i = 0; i < MAX_WHITE_LIST; i++) {
 | 
	
		
			
				|  |  | +        if (strstr(sSettings.sWhiteList[i].ip_range, sSettings.sWhiteListTemp[i].ip_range) == 0
 | 
	
		
			
				|  |  | +            || strlen(sSettings.sWhiteList[i].ip_range) != strlen(sSettings.sWhiteListTemp[i].ip_range)) {
 | 
	
		
			
				|  |  | +            // Устанавилваем флаг
 | 
	
		
			
				|  |  | +            SetWebReinitFlag(true);
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  #endif
 | 
	
		
			
				|  |  | -  return false;
 | 
	
		
			
				|  |  | +    return false;
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/
 |