فهرست منبع

2020.08.17 / Folus Wen

Actions:
1. EVSE/Projects/AW-CCS/Apps/main.c network interface priority logic implement.

Files:
1. As follow commit history

Image version: D0.28.XX.XXXX.XX
Image checksum: XXXXXXXX

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 4 سال پیش
والد
کامیت
8dbd5585d2
1فایلهای تغییر یافته به همراه84 افزوده شده و 42 حذف شده
  1. 84 42
      EVSE/Projects/AW-CCS/Apps/main.c

+ 84 - 42
EVSE/Projects/AW-CCS/Apps/main.c

@@ -989,15 +989,28 @@ void InitEthernet()
 			}
 			else
 			{
-				if(++cnt_pingDNS_Fail > 3)
+				if(cnt_pingDNS_Fail >= 3)
 				{
 					ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet=ON;
+
+					if((ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthDhcpClient==0) && (cnt_pingDNS_Fail == 3))
+					{
+						cnt_pingDNS_Fail++;
+						system("pgrep -f \"udhcpc -i eth0\" | xargs kill");
+						sprintf(tmpbuf, "/sbin/udhcpc -i eth0 -x hostname:CSU3_%s -s /root/dhcp_script/eth0.script > /dev/null &", ShmSysConfigAndInfo->SysConfig.SystemId);
+						system(tmpbuf);
+					}
+				}
+				else
+				{
+					cnt_pingDNS_Fail++;
 				}
 			}
-			
+
 			if(ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet &&
 			   ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi &&
-			   ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi)
+			   ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi &&
+			   (ShmOCPP16Data->OcppConnStatus != PASS))
 			{
 				ShmSysConfigAndInfo->SysInfo.InternetConn = OFF;
 			}
@@ -1006,6 +1019,40 @@ void InitEthernet()
 				ShmSysConfigAndInfo->SysInfo.InternetConn = ON;
 			}
 
+			if(!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaEthernet)
+			{
+				system("/sbin/ifmetric eth0 0");
+
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+					system("/sbin/ifmetric mlan0 1");
+
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+					system("/sbin/ifmetric ppp0 2");
+			}
+			else if(!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectViaWiFi)
+			{
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+				{
+					system("/sbin/ifmetric eth0 1");
+					system("/sbin/ifmetric mlan0 0");
+
+				}
+
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+					system("/sbin/ifmetric ppp0 2");
+			}
+			else if(!ShmStatusCodeData->InfoCode.InfoEvents.bits.InternetDisconnectVia4Gi)
+			{
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'W') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+					system("/sbin/ifmetric mlan0 2");
+
+				if((ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'T') || (ShmSysConfigAndInfo->SysConfig.ModelName[10] == 'D'))
+				{
+					system("/sbin/ifmetric eth0 1");
+					system("/sbin/ifmetric ppp0 0");
+				}
+			}
+
 			sleep(5);
 		}
 	}
@@ -1248,7 +1295,7 @@ void get_firmware_version(unsigned char gun_index)
 	strcpy((char*)ShmSysConfigAndInfo->SysInfo.CsuPrimFwRev, ShmCharger->gun_info[gun_index].ver.Version_FW);
 
 	// Get CSU root file system version
-	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.27.00.0000.00");
+	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.28.00.0000.00");
 
 	// Get AC connector type from model name
 	for(uint8_t idx=0;idx<3;idx++)
@@ -1738,63 +1785,58 @@ int isReachableInternet()
 	char buf[512];
 	char tmp[512];
 	
-	if(ShmOCPP16Data->OcppConnStatus == PASS)
-	{
-		result = PASS;
-	}
-	else
-	{
-		strcpy(cmd, "ifconfig eth0");
-		fp = popen(cmd, "r");
 
-		if (fp != NULL)
+	strcpy(cmd, "ifconfig eth0");
+	fp = popen(cmd, "r");
+
+	if (fp != NULL)
+	{
+		while(fgets(buf, sizeof(buf), fp) != NULL)
 		{
-			while(fgets(buf, sizeof(buf), fp) != NULL)
+			if (strstr(buf, "inet addr:") > 0)
 			{
-				if (strstr(buf, "inet addr:") > 0)
-				{
-					sscanf(buf, "%*s%s", tmp);
-					substr(tmp, tmp, strspn(tmp, "addr:"), strlen(buf)-strspn(tmp, "addr:"));
+				sscanf(buf, "%*s%s", tmp);
+				substr(tmp, tmp, strspn(tmp, "addr:"), strlen(buf)-strspn(tmp, "addr:"));
 
-					if (strcmp(tmp, (char *)ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress) != 0)
-					{
-						strcpy((char *) ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress, tmp);
-					}
+				if (strcmp(tmp, (char *)ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress) != 0)
+				{
+					strcpy((char *) ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress, tmp);
 				}
 			}
 		}
-		pclose(fp);
-		memset(buf, 0x00, sizeof(buf));
+	}
+	pclose(fp);
+	memset(buf, 0x00, sizeof(buf));
 
-		for(int idx=0;idx<ARRAY_SIZE(valid_Internet);idx++)
+	for(int idx=0;idx<ARRAY_SIZE(valid_Internet);idx++)
+	{
+		sprintf(cmd, "ping -c 1 -w 3 -I eth0 %s", valid_Internet[idx]);
+		fp = popen(cmd, "r");
+		if(fp != NULL)
 		{
-			sprintf(cmd, "ping -c 1 -w 3 -I eth0 %s", valid_Internet[idx]);
-			fp = popen(cmd, "r");
-			if(fp != NULL)
+			while(fgets(buf, sizeof(buf), fp) != NULL)
 			{
-				while(fgets(buf, sizeof(buf), fp) != NULL)
+				if(strstr(buf, "transmitted") > 0)
 				{
-					if(strstr(buf, "transmitted") > 0)
-					{
-						//sscanf(buf, "%*s%*s%*s%*s%*s%*s%s", tmp);
+					//sscanf(buf, "%*s%*s%*s%*s%*s%*s%s", tmp);
 
-						if(strstr(buf,"100%") != NULL)
-						{
+					if(strstr(buf,"100%") != NULL)
+					{
 
-						}
-						else
-						{
-							result = PASS;
-						}
-						//DEBUG_INFO("%s",buf);
-						//DEBUG_INFO("%s\n",tmp);
 					}
+					else
+					{
+						result = PASS;
+					}
+					//DEBUG_INFO("%s",buf);
+					//DEBUG_INFO("%s\n",tmp);
 				}
 			}
-			pclose(fp);
 		}
+		pclose(fp);
 	}
 
+
 	return result;
 }