Parcourir la source

Внес измения master в netconf.c sntp.c

TelenkovDmitry il y a 7 ans
Parent
commit
1297a4fd31
4 fichiers modifiés avec 44 ajouts et 15 suppressions
  1. 12 1
      modules/Ethernet/netconf.c
  2. 6 2
      modules/Ethernet/sntp.c
  3. 24 12
      modules/settings_api.c
  4. 2 0
      modules/settings_api.h

+ 12 - 1
modules/Ethernet/netconf.c

@@ -55,6 +55,8 @@ TaskHandle_t xHandleWebReinit = NULL;
 
 bool dhcp = false;	
 
+bool isIpReceived = false;
+
 void LwIP_Init(void)
 {
   struct ip4_addr ipaddr;
@@ -75,6 +77,7 @@ void LwIP_Init(void)
 	
 	  netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
       netif_set_default(&xnetif);
+      netif_set_link_up(&xnetif);
       netif_set_up(&xnetif); 
     }	
     else
@@ -89,8 +92,10 @@ void LwIP_Init(void)
 
       netif_add(&xnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);
       netif_set_default(&xnetif);
-
+      netif_set_link_up(&xnetif);
       netif_set_up(&xnetif); 
+      
+      isIpReceived = true;
     }
   
 	if (sSettings.sWebTempParams.dhcpEnable) {
@@ -133,6 +138,8 @@ void LwIP_Init(void)
       netif_set_default(&xnetif);
       netif_set_link_up(&xnetif);
       netif_set_up(&xnetif); 
+      
+      isIpReceived = true;
     }
   
 	if (sSettings.sWebParams.dhcpEnable) {
@@ -220,6 +227,8 @@ void LwIP_DHCP_task(void * pvParameters)
 		  PRINT_USART(ipaddr_ntoa(&gw));
 		  PRINT_USART("\n\r");
           
+          isIpReceived = true;
+          
 		  vTaskDelay(50);
 		  /* Установлен динамический IP, можно отправить трап о перезагрузке устройства */
 		//  SNMP_SendUserTrap(DEVICE_REBOOTED);
@@ -258,6 +267,8 @@ void LwIP_DHCP_task(void * pvParameters)
 			PRINT_USART(ipaddr_ntoa(&ipaddr));
 		    PRINT_USART("\n\r");
 
+            isIpReceived = true;
+            
 			vTaskDelay(50);
 			/* Установлен статический IP, можно отправить трап о перезагрузке устройства */
 		   // SNMP_SendUserTrap(DEVICE_REBOOTED);

+ 6 - 2
modules/Ethernet/sntp.c

@@ -10,6 +10,7 @@
 
 #include "FreeRTOS.h"
 #include "task.h"
+#include "semphr.h"
 
 #ifdef PRINTF_STDLIB
 #include <stdio.h>
@@ -52,6 +53,8 @@ static int port = 123;
   */
 extern SETTINGS_t sSettings;
 
+extern SemaphoreHandle_t flash_mutex;
+
 /**
   * @brief  Разовая синхронизация времени при старте контроллера
   */
@@ -172,13 +175,14 @@ static void recv(void *arg, struct udp_pcb *upcb, struct pbuf *p,
 	
 	/* Сохраним время последней синхронизации */
 	TM_RTC_GetDateTime(&data, TM_RTC_Format_BIN);
-		
+	xSemaphoreTake(flash_mutex, portMAX_DELAY);	
 	memset(sSettings.sSNTP.data, 0, sizeof(sSettings.sSNTP.data));
 	
 	sprintf(sSettings.sSNTP.data, "%02d.%02d.%02d %02d:%02d:%02d", 
 			data.date, data.month, data.year,
 			data.hours, data.minutes, data.seconds);
-	
+	xSemaphoreGive(flash_mutex);
+    
     timeout = VALID_TIMEOUT;
     
   }

+ 24 - 12
modules/settings_api.c

@@ -22,6 +22,7 @@
 
 #include "FreeRTOS.h"
 #include "task.h"
+#include "semphr.h"
 #include "main.h"
 
 #include <string.h>
@@ -39,6 +40,9 @@
 #define DEVICE_MAC "00-00-00-00-00-03"
 #endif
 
+
+SemaphoreHandle_t flash_mutex;
+
 /**
   * @brief  Флаг подтверждения новых сетевых параметров пользователем
   */  
@@ -63,10 +67,10 @@ void SETTINGS_SetBootParamsDef(void)
   */
 void SETTINGS_SetWebParamsDef(void)
 {
-	  strcpy(sSettings.sWebParams.ip, "192.168.1.8");
-	  strcpy(sSettings.sWebParams.gate, "192.168.1.1");
+	  strcpy(sSettings.sWebParams.ip, "192.168.0.254");
+	  strcpy(sSettings.sWebParams.gate, "192.168.0.1");
 	  strcpy(sSettings.sWebParams.mask, "255.255.255.0");
-	  sSettings.sWebParams.dhcpEnable = 1;
+	  sSettings.sWebParams.dhcpEnable = 0;
 }
 
 /**
@@ -74,10 +78,10 @@ void SETTINGS_SetWebParamsDef(void)
   */
 void SETTINGS_SetTempWebParamsDef(void)
 {
-	  strcpy(sSettings.sWebTempParams.ip, "192.168.1.8");
-	  strcpy(sSettings.sWebTempParams.gate, "192.168.1.1");
+	  strcpy(sSettings.sWebTempParams.ip, "192.168.0.254");
+	  strcpy(sSettings.sWebTempParams.gate, "192.168.0.1");
 	  strcpy(sSettings.sWebTempParams.mask, "255.255.255.0");
-	  sSettings.sWebTempParams.dhcpEnable = 1;
+	  sSettings.sWebTempParams.dhcpEnable = 0;
 }
 
 /**
@@ -118,8 +122,9 @@ void SETTINGS_SetInfoDef(void)
 	  strcpy(sSettings.sInfo.productionData, "09.07.2017");
 	  strcpy(sSettings.sInfo.mac, DEVICE_MAC);
 	  strcpy(sSettings.sInfo.serialNumber, DEVICE_SERIAL);
-  }
+	  strcpy(sSettings.sFlags.testState, "T2OK");
 
+  }
   strcpy(sSettings.sInfo.comments, "");
 }  
 
@@ -145,13 +150,13 @@ void SETTINGS_SetServiceDef(void)
         case 0:
             sSettings.sAuth[user_id].level = ADMIN;
             strcpy(sSettings.sAuth[user_id].login, "admin");
-            strcpy(sSettings.sAuth[user_id].password, "12345");
+            strcpy(sSettings.sAuth[user_id].password, "R04ekR4MP2");
             break;
         case 1:
         default:
         	sSettings.sAuth[user_id].level = USER;
             strcpy(sSettings.sAuth[user_id].login, "user");
-            strcpy(sSettings.sAuth[user_id].password, "1234");
+            strcpy(sSettings.sAuth[user_id].password, "R03ekR4MP2");
             break;
         }
     }
@@ -185,11 +190,11 @@ void SETTINGS_SetINOUTSDef(void)
 void SETTINGS_SetRADIUSDef(void)
 {
   sSettings.sRADIUS.Auth_enable = true;
-  sSettings.sRADIUS.RDSEnable = true;
+  sSettings.sRADIUS.RDSEnable = false;
   strcpy(sSettings.sRADIUS.ServerIP, "0.0.0.0");
   sSettings.sRADIUS.port = 1812;
   sSettings.sRADIUS.key_access = 123;
-  strcpy(sSettings.sRADIUS.rds_password, "R04ekR4MP2");
+  strcpy(sSettings.sRADIUS.rds_password, "R02ekR4MP2");
 }
   
 /**
@@ -273,10 +278,12 @@ void SETTINGS_SetDefaultDebug(void)
   */
 void SETTINGS_Save(void)
 {
+	xSemaphoreTake(flash_mutex, portMAX_DELAY);
   /* Calc critical section CRC and store to the settings structure */
   sSettings.CritSecCRC = SETTINGS_GetCritSecCRC();
 
   SETTINGS_WriteToFlash((uint8_t*)&sSettings, sizeof(sSettings));
+  xSemaphoreGive(flash_mutex);
 }
 
 /**
@@ -458,6 +465,7 @@ void SETTINGS_SetProDate(char *proDate, uint8_t len)
 
 	sSys = pvPortMalloc(sizeof(*sSys));
 	if (sSys) {
+	  SYS_Load(sSys);
 	  strcpy(sSys->proddate, proDate);
 	  SYS_Save(sSys);
 	  memset(sSettings.sInfo.productionData, 0, 40);
@@ -476,6 +484,7 @@ void SETTINGS_SetT2OK(void)
 
 	sSys = pvPortMalloc(sizeof(*sSys));
 	if (sSys) {
+	  SYS_Load(sSys);
 	  memset(sSettings.sFlags.testState, 0, 16);
 	  memcpy(sSettings.sFlags.testState, "T2OK", 4);
 	  strcpy(sSys->testState, sSettings.sFlags.testState);
@@ -493,5 +502,8 @@ void SETTINGS_SetDHCPOn(void)
   sSettings.sWebParams.dhcpEnable = 1;
 }
 
-
+void init_settings(void)
+{
+	  flash_mutex = xSemaphoreCreateMutex();
+}
 /********************************* (C) ROTEK **********************************/

+ 2 - 0
modules/settings_api.h

@@ -328,6 +328,8 @@ void SETTINGS_SetT2OK(void);
   */
 void SETTINGS_SetDHCPOn(void);
 
+void init_settings(void);
+
 #endif /* #ifndef SETTINGS_API_H */
 
 /********************************* (C) РОТЕК **********************************/