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