瀏覽代碼

[Improve][Modularization][Module_OcppBackend]

2021.01.13 / Folus Wen

Actions:
1. Libwebsocket add keep alive function, send interval=20s, timeout=5s, retry interval=5s, retry count=2.

Files:
1. As follow commit history

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

Hardware PWB P/N : XXXXXXX
Hardware Version : XXXXXXX
FolusWen 4 年之前
父節點
當前提交
d4b191f7b9

+ 4 - 0
EVSE/Modularization/ocpp20/Module_OcppBackend20.c

@@ -414,6 +414,10 @@ void* ConnectWsServer(void* data)  //int ConnectWsServer()
 	ContextInfo.protocols = protocols;
 	ContextInfo.timeout_secs = GetWebSocketPingInterval();//WebSocketPingInterval;//30;//9999;//30;
 	ContextInfo.ws_ping_pong_interval = GetWebSocketPingInterval();//WebSocketPingInterval;//30;//0 for none, else interval in seconds
+	ContextInfo.ka_time = 20;
+	ContextInfo.keepalive_timeout = 5;
+	ContextInfo.ka_probes = 2;
+	ContextInfo.ka_interval = 5;
 	context = lws_create_context(&ContextInfo);
 	if (context == NULL)
 	{

+ 5 - 0
EVSE/Modularization/ocppfiles/Module_OcppBackend.c

@@ -470,6 +470,11 @@ void* ConnectWsServer(void* data)  //int ConnectWsServer()
 	ContextInfo.protocols = protocols;
 	ContextInfo.timeout_secs = GetWebSocketPingInterval();//WebSocketPingInterval;//30;//9999;//30;
 	ContextInfo.ws_ping_pong_interval = GetWebSocketPingInterval();//WebSocketPingInterval;//30;//0 for none, else interval in seconds
+	ContextInfo.ka_time = 20;
+	ContextInfo.keepalive_timeout = 5;
+	ContextInfo.ka_probes = 2;
+	ContextInfo.ka_interval = 5;
+
 	context = lws_create_context(&ContextInfo);
 	if (context == NULL)
 	{

+ 29 - 1
EVSE/Projects/AW-Regular/Apps/main.c

@@ -1271,7 +1271,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, "V0.64.00.0000.00");
+	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "V0.65.00.0000.00");
 
 	// Get AC connector type from model name
 	for(uint8_t idx=0;idx<3;idx++)
@@ -1745,12 +1745,40 @@ int isReachableInternet()
 				{
 					strcpy((char *) ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthIpAddress, tmp);
 				}
+
+				sscanf(buf, "%*s%*s%*s%s", tmp);
+				substr(tmp, tmp, strspn(tmp, "Mask:"), strlen(buf)-strspn(tmp, "Mask:"));
+				if (strcmp(tmp, (char *)ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress) != 0)
+				{
+					strcpy((char *) ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthSubmaskAddress, tmp);
+				}
 			}
 		}
 	}
 	pclose(fp);
 	memset(buf, 0x00, sizeof(buf));
 
+	// Get gateway
+	fp = popen("ip route", "r");
+	if(fp == NULL)
+		result = FAIL;
+	else
+	{
+		while(fgets(buf, sizeof(buf), fp) != NULL)
+		{
+			if((strstr(buf, "default") != NULL) && (strstr(buf, "eth0") != NULL))
+				break;
+		}
+
+		if(strstr(buf, "default") != NULL)
+		{
+			sscanf(buf, "%*s%*s%s", tmp);
+			substr((char*)ShmSysConfigAndInfo->SysConfig.Eth0Interface.EthGatewayAddress, tmp, 0, strlen(tmp));
+		}
+	}
+	pclose(fp);
+	memset(buf, 0x00, sizeof(buf));
+
 	for(int idx=0;idx<ARRAY_SIZE(valid_Internet);idx++)
 	{
 		sprintf(cmd, "ping -c 1 -w 3 -I eth0 %s", valid_Internet[idx]);

+ 1 - 0
EVSE/rootfs/root/.gitignore

@@ -3,6 +3,7 @@ Module_4g
 WebService
 logPackTools
 OcppBackend
+OcppBackend20
 Module_ProduceUtils
 Module_EventLogging
 Module_PhBackend