Kaynağa Gözat

fix dhcp lease time

balbekova 5 yıl önce
ebeveyn
işleme
6c6da9dcc1
3 değiştirilmiş dosya ile 218 ekleme ve 242 silme
  1. 102 115
      iap/Modules/Ethernet/netconf.c
  2. 0 1
      modules/Ethernet/netconf.c
  3. 116 126
      service_hw/Ethernet/netconf.c

+ 102 - 115
iap/Modules/Ethernet/netconf.c

@@ -20,13 +20,12 @@
 #define MAX_DHCP_TRIES        4
 
 /* Private define ------------------------------------------------------------*/
-typedef enum 
-{ 
-  DHCP_START=0,
-  DHCP_WAIT_ADDRESS,
-  DHCP_ADDRESS_ASSIGNED,
-  DHCP_TIMEOUT
-} 
+typedef enum {
+    DHCP_START = 0,
+    DHCP_WAIT_ADDRESS,
+    DHCP_ADDRESS_ASSIGNED,
+    DHCP_TIMEOUT
+}
 DHCP_State_TypeDef;
 /* Private macro -------------------------------------------------------------*/
 /* Private variables ---------------------------------------------------------*/
@@ -52,40 +51,37 @@ void LwIP_DHCP_Process_Handle(void);
   */
 void LwIP_Init(void)
 {
-  struct ip4_addr ipaddr;
-  struct ip4_addr netmask;
-  struct ip4_addr gw;
-  char str[20];
-
-  lwip_init();
+    struct ip4_addr ipaddr;
+    struct ip4_addr netmask;
+    struct ip4_addr gw;
+    char str[20];
+
+    lwip_init();
+
+    //  /* Initializes the dynamic memory heap defined by MEM_SIZE.*/
+    //  mem_init();
+    //
+    //  /* Initializes the memory pools defined by MEMP_NUM_x.*/
+    //  memp_init();
+
+    if (sSettings.sWebParams.dhcpEnable) {
+        ipaddr.addr = 0;
+        netmask.addr = 0;
+        gw.addr = 0;
+    } else {
+        sprintf(str, " %s\n\r", sSettings.sWebTempParams.ip);
+        PRINT_USART("\n\rStatic IP address   \n\r");
+        PRINT_USART(str);
+
+        ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);
+        netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);
+        gw.addr = ipaddr_addr(sSettings.sWebParams.gate);
+    }
 
-//  /* Initializes the dynamic memory heap defined by MEM_SIZE.*/
-//  mem_init();
-//
-//  /* Initializes the memory pools defined by MEMP_NUM_x.*/
-//  memp_init();
-
-  if (sSettings.sWebParams.dhcpEnable)
-  {	
-    ipaddr.addr = 0;
-    netmask.addr = 0;
-    gw.addr = 0;
-  }
-  else
-  {	
-	sprintf(str, " %s\n\r", sSettings.sWebTempParams.ip);
-    PRINT_USART("\n\rStatic IP address   \n\r");
-    PRINT_USART(str);
-	  
-	ipaddr.addr = ipaddr_addr(sSettings.sWebParams.ip);
-	netmask.addr = ipaddr_addr(sSettings.sWebParams.mask);
-	gw.addr = ipaddr_addr(sSettings.sWebParams.gate);
-  }	
-
-  netif_add(&netif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);
-  netif_set_default(&netif);
-  netif_set_link_up(&netif);
-  netif_set_up(&netif);
+    netif_add(&netif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &ethernet_input);
+    netif_set_default(&netif);
+    netif_set_link_up(&netif);
+    netif_set_up(&netif);
 }
 
 /**
@@ -95,8 +91,8 @@ void LwIP_Init(void)
   */
 void LwIP_Pkt_Handle(void)
 {
-  /* Read a received packet from the Ethernet buffers and send it to the lwIP for handling */
-  ethernetif_input(&netif);
+    /* Read a received packet from the Ethernet buffers and send it to the lwIP for handling */
+    ethernetif_input(&netif);
 }
 
 ///**
@@ -149,17 +145,16 @@ void LwIP_Pkt_Handle(void)
 void LwIP_Periodic_Handle(__IO uint32_t localtime)
 {
 
-  if (sSettings.sWebParams.dhcpEnable)
-  {
-    /* Fine DHCP periodic process every 500ms */
+    if (sSettings.sWebParams.dhcpEnable) {
+        /* Fine DHCP periodic process every 500ms */
 
-	  if ((DHCP_state != DHCP_ADDRESS_ASSIGNED)&&(DHCP_state != DHCP_TIMEOUT)) {
-		/* process DHCP state machine */
-		LwIP_DHCP_Process_Handle();
-	  }
-  }
+        if ((DHCP_state != DHCP_ADDRESS_ASSIGNED) && (DHCP_state != DHCP_TIMEOUT)) {
+            /* process DHCP state machine */
+            LwIP_DHCP_Process_Handle();
+        }
+    }
 
-  sys_check_timeouts();
+    sys_check_timeouts();
 }
 
 /**
@@ -169,71 +164,63 @@ void LwIP_Periodic_Handle(__IO uint32_t localtime)
   */
 void LwIP_DHCP_Process_Handle()
 {
-  struct ip4_addr ipaddr;
-  struct ip4_addr netmask;
-  struct ip4_addr gw;
-  struct dhcp *dhcp = netif_dhcp_data(&netif);
-
-  switch (DHCP_state)
-  {
-    case DHCP_START:
-    {
-      dhcp_start(&netif);
-      DHCP_state = DHCP_WAIT_ADDRESS;
-	  PRINT_USART("\n\rLooking for DHCP server please wait...\n\r");
-    }
-    break;
-
-    case DHCP_WAIT_ADDRESS:
-    {
-	  ipaddr = netif.ip_addr;
-      netmask = netif.netmask;
-      gw = netif.gw;
-	  
-      if (ipaddr.addr != 0) 
-	  {
-        DHCP_state = DHCP_ADDRESS_ASSIGNED;	
-
-        /* Stop DHCP */
-        dhcp_stop(&netif);
-    
-        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");
-
-      } else {
-        /* DHCP timeout */
-        if (dhcp->tries > MAX_DHCP_TRIES)
-		{
-          DHCP_state = DHCP_TIMEOUT;
-
-          /* Stop DHCP */
-          dhcp_stop(&netif);
-
-		  ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip);
-	      netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask);
-	      gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate);
-
-          netif_set_addr(&netif, &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;
+    struct dhcp *dhcp = netif_dhcp_data(&netif);
+
+    switch (DHCP_state) {
+        case DHCP_START: {
+            dhcp_start(&netif);
+            DHCP_state = DHCP_WAIT_ADDRESS;
+            PRINT_USART("\n\rLooking for DHCP server please wait...\n\r");
         }
-      }
+        break;
+
+        case DHCP_WAIT_ADDRESS: {
+            ipaddr = netif.ip_addr;
+            netmask = netif.netmask;
+            gw = netif.gw;
+
+            if (ipaddr.addr != 0) {
+                DHCP_state = DHCP_ADDRESS_ASSIGNED;
+
+                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");
+
+            } else {
+                /* DHCP timeout */
+                if (dhcp->tries > MAX_DHCP_TRIES) {
+                    DHCP_state = DHCP_TIMEOUT;
+
+                    /* Stop DHCP */
+                    dhcp_stop(&netif);
+
+                    ipaddr.addr = ipaddr_addr(sSettings.sWebTempParams.ip);
+                    netmask.addr = ipaddr_addr(sSettings.sWebTempParams.mask);
+                    gw.addr = ipaddr_addr(sSettings.sWebTempParams.gate);
+
+                    netif_set_addr(&netif, &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");
+                }
+            }
+        }
+        break;
+        default: break;
     }
-    break;
-    default: break;
-  }
-}     
+}
 
 /*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/

+ 0 - 1
modules/Ethernet/netconf.c

@@ -179,7 +179,6 @@ void LwIP_DHCP_task(void *pvParameters)
 
                 if (ipaddr.addr != 0) {
                     DHCP_state = DHCP_ADDRESS_ASSIGNED;
-                    dhcp_stop(&xnetif);
 
                     /* Сохранение полученных сетевый параметров */
                     /* Если настройки изменили, то сохраняем во временные настройки */

+ 116 - 126
service_hw/Ethernet/netconf.c

@@ -28,7 +28,7 @@
 /**
   * @brief  Network interface structure
   */
-struct netif xnetif; 
+struct netif xnetif;
 
 
 /**
@@ -49,33 +49,34 @@ extern SETTINGS_t sSettings;
 
 void LwIP_Init(void)
 {
-  struct ip4_addr ipaddr;
-  struct ip4_addr netmask;
-  struct ip4_addr gw;
-  uint16_t reg = 0;
-  
-  tcpip_init( NULL, NULL );	
-  
-  ipaddr.addr = 0;
-  netmask.addr = 0;
-  gw.addr = 0;
-	
-  netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
-  netif_set_default(&xnetif);
-  netif_set_link_up(&xnetif);
-  netif_set_up(&xnetif); 
-    	  
-  /* Проверяем наличие линка */
- // reg = ETH_ReadPHYRegister(0, 1);
-
-//  if (reg & 4)
+    struct ip4_addr ipaddr;
+    struct ip4_addr netmask;
+    struct ip4_addr gw;
+    uint16_t reg = 0;
+
+    tcpip_init( NULL, NULL );
+
+    ipaddr.addr = 0;
+    netmask.addr = 0;
+    gw.addr = 0;
+
+    netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
+    netif_set_default(&xnetif);
+    netif_set_link_up(&xnetif);
+    netif_set_up(&xnetif);
+
+    /* Проверяем наличие линка */
+    // reg = ETH_ReadPHYRegister(0, 1);
+
+    //  if (reg & 4)
     xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
-                tskIDLE_PRIORITY + 2, &xHandleDHCP);
+        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);
+void init_get_ip_address_controller(void)
+{
+    xTaskCreate(LwIP_DHCP_task, "DHCPClient", configMINIMAL_STACK_SIZE * 2, NULL,
+        tskIDLE_PRIORITY + 2, &xHandleDHCP);
 }
 
 /**
@@ -83,111 +84,100 @@ void init_get_ip_address_controller(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);
-          
-		  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");
-          
-		  printf("ETH OK\r\n");
-		  
-		  /* Установлен динамический IP. *
-		   * Ждем инициализацию интерфейса и выставляем флаг готовности. */
-		  vTaskDelay(2000);
-		  eth_ready_flag = 1;
-
-          vTaskDelete(xHandleDHCP);
+    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;
+
+                    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");
+
+                    printf("ETH OK\r\n");
+
+                    /* Установлен динамический IP. *
+                     * Ждем инициализацию интерфейса и выставляем флаг готовности. */
+                    vTaskDelay(2000);
+                    eth_ready_flag = 1;
+
+                    vTaskDelete(xHandleDHCP);
+                } else {
+                    /* DHCP timeout */
+                    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);
+
+                              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);
+                    }
+                }
+            }
+            break;
+
+            default: break;
         }
-        else
-        {
-          /* DHCP timeout */
-          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);
-
-              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);
-          }
-        }
-      }
-      break;
 
-      default: break;
+        vTaskDelay(250);
     }
-
-    vTaskDelay(250);
-  }   
 }
 
 /*********** Portions COPYRIGHT 2012 Embest Tech. Co., Ltd.*****END OF FILE****/