Эх сурвалжийг харах

2022-06-22/Jerry Wang
[OCPP 1.6][OCPP 1.6PH]
Note: OCPP 1.6 confVersion 16 --> 17
OCPP 1.6PH confVersion 15 --> 16

Action:
1. Modify Configuration Key 'LocalAuthListMaxLength', 'SendLocalListMaxLength' default value.
2. Improve queue logic of StopTransaction and connectorUnplugged message.
3. Improve checking PingPong timeout logic.
4. Expand WEBSOCKET_BUFFER_SIZE to 1024*500.

File:
1. EVSE/Modularization/ocppfiles/MessageHandler.c
--> Action 1,2
2. EVSE/Modularization/ocppfiles/Module_OcppBackend.c
--> Action 2,3
3. EVSE/Modularization/ocppfiles/Module_OcppBackend.h
--> Action 4
4. EVSE/Modularization/ocppph/MessageHandler.c
--> Action 1,2
5. EVSE/Modularization/ocppph/Module_OcppBackend.c
--> Action 2,3
6. EVSE/Modularization/ocppph/Module_OcppBackend.h
--> Action 4

Jerry Wang 2 жил өмнө
parent
commit
d8ce6bb327

+ 10 - 3
EVSE/Modularization/ocppfiles/MessageHandler.c

@@ -7547,7 +7547,7 @@ int sendStopTransactionRequest(int gun_index)
 
 	if((ShmOCPP16Data->StopTransaction[gun_index].TransactionId != 0) && (gettransactionId != 0))
 	{
-		SetTransactionIdZero(ShmOCPP16Data->StopTransaction[gun_index].TransactionId);
+		//SetTransactionIdZero(ShmOCPP16Data->StopTransaction[gun_index].TransactionId);
 	}
 
 	//for test
@@ -14113,6 +14113,13 @@ int handleSendLocalListRequest(char *uuid, char *payload)
 				goto end;
 			}
 
+			if(json_object_array_length(json_object_object_get(SendLocalList, "localAuthorizationList")) > atoi((char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData))
+			{
+				DEBUG_WARN("Local list length is over SendLocalListMaxLength.\n");
+				strcpy(comfirmstr, UpdateStatusStr[UpdateStatus_Failed]);
+				goto end;
+			}
+
 			memset(ShmOCPP16Data->SendLocalList.LocalAuthorizationList, 0 , sizeof(struct StructLocalAuthorizationList)*1);
 			for(int idx=0;idx<json_object_array_length(json_object_object_get(SendLocalList, "localAuthorizationList"));idx++)
 			{
@@ -16333,7 +16340,7 @@ int initialConfigurationTable(void)
 	char sstr[256]={0};
 	int c = 0;
 	char *loc;
-	int	confVersion = 16;
+	int	confVersion = 17;
 
 	DEBUG_INFO("initialConfigurationTable...version: %d\n", confVersion);
 	//start_t = clock();
@@ -16817,7 +16824,7 @@ int initialConfigurationTable(void)
 		//SendLocalListMaxLength
 		ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemAccessibility = 0;
 		strcpy((char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemName, "SendLocalListMaxLength");
-		strcpy((char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData, "500" );
+		strcpy((char *)ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData, "1000" );
 
 		fprintf(outfile,"{\"key\":\"%s\",\"readonly\":%s,\"value\":\"%s\"}\n","SendLocalListMaxLength", "true", ShmOCPP16Data->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData);
 

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

@@ -262,6 +262,7 @@ static int OCPP16Callback(struct lws *wsi, enum lws_callback_reasons reason, voi
 						DEBUG_ERROR("lws_add_http_header_by_token : WSI_TOKEN_HTTP_AUTHORIZATION\n");
 						return -1;
 					}
+					DEBUG_OCPPMESSAGE_INFO("SecurityProfile: %d\n", GetOcppSecurityProfile());
 					DEBUG_OCPPMESSAGE_INFO("Authorization: %s\n", buf);
 
 					break;
@@ -422,13 +423,13 @@ static struct lws_protocols protocols[] =
 		WEBSOCKET_BUFFER_SIZE,
 	},
 	{
-		"ocpp2.0",
+		"ocpp2.0.1",
 		OCPP16Callback,
 		WEBSOCKET_BUFFER_SIZE,
 		WEBSOCKET_BUFFER_SIZE,
 	},
 	{
-		"ocpp1.6,ocpp2.0",
+		"ocpp1.6,ocpp2.0.1",
 		OCPP16Callback,
 		WEBSOCKET_BUFFER_SIZE,
 		WEBSOCKET_BUFFER_SIZE,
@@ -493,7 +494,7 @@ void* ConnectWsServer(void* data)  //int ConnectWsServer()
 	ContextInfo.uid = -1;
 	if(use_ssl)
 	{
-		ContextInfo.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT ;
+		ContextInfo.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
 	}
 
 	ContextInfo.protocols = protocols;
@@ -1073,7 +1074,7 @@ int sentqueue()
 								DEBUG_INFO("original  connectorId     = %d\n", connectorId);
 								DEBUG_INFO("original  transactionId   = %d\n", transactionId_org);
 								DEBUG_INFO("original  IdtagStr        = %s\n", "");
-								if((transactionId_map != 0)&&(transactionId_org != transactionId_map))
+								if((transactionId_map != 0)&&(transactionId_org == 0)&&(transactionId_org != transactionId_map))
 								{
 									//replace transactionId
 									json_object_object_add(objData, "idTx", json_object_new_int(transactionId_map));
@@ -1201,7 +1202,7 @@ void* processWatchdog()
 			system("killall OcppBackend");
 		}
 
-		if((0 < GetWebSocketPingInterval()) && ((GetWebSocketPingInterval()+5) <= getDiffSecNow(startTime.pingOn)) && (wsi_client != NULL) && (GetServerSign() == TRUE))
+		if((0 < GetWebSocketPingInterval()) && (0 < counterPingSend) && ((GetWebSocketPingInterval()+5) <= getDiffSecNow(startTime.pingOn)) && (wsi_client != NULL) && (GetServerSign() == TRUE))
 		{
 			DEBUG_WARN("Pong packet receive timeout.\n");
 			//system("killall OcppBackend");

+ 2 - 2
EVSE/Modularization/ocppfiles/Module_OcppBackend.h

@@ -1,7 +1,7 @@
 /*
  * Sample_OCPP_Task.h
  *
- *  Created on: 2020¦~5¤ë26¤é
+ *  Created on: 2020�~5��26��
  *      Author: foluswen
  */
 
@@ -79,7 +79,7 @@
 #define QUEUE_MESSAGE_LENGTH		3584
 
 // Websocket TX/RX buffer size
-#define WEBSOCKET_BUFFER_SIZE		(1024*200)
+#define WEBSOCKET_BUFFER_SIZE		(1024*500)
 
 enum GUN_TYPE
 {

+ 11 - 4
EVSE/Modularization/ocppph/MessageHandler.c

@@ -7080,7 +7080,7 @@ int sendStopTransactionRequest(int gun_index)
 
 	if((ShmOCPP16DataPH->StopTransaction[gun_index].TransactionId != 0) && (gettransactionId != 0))
 	{
-		SetTransactionIdZero(ShmOCPP16DataPH->StopTransaction[gun_index].TransactionId);
+		//SetTransactionIdZero(ShmOCPP16DataPH->StopTransaction[gun_index].TransactionId);
 	}
 
 	//for test
@@ -13618,6 +13618,13 @@ int handleSendLocalListRequest(char *uuid, char *payload)
 				goto end;
 			}
 
+			if(json_object_array_length(json_object_object_get(SendLocalList, "localAuthorizationList")) > atoi((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData))
+			{
+				DEBUG_WARN("Local list length is over SendLocalListMaxLength.\n");
+				strcpy(comfirmstr, UpdateStatusStr[UpdateStatus_Failed]);
+				goto end;
+			}
+
 			memset(ShmOCPP16DataPH->SendLocalList.LocalAuthorizationList, 0 , sizeof(struct StructLocalAuthorizationList)*1);
 			for(int idx=0;idx<json_object_array_length(json_object_object_get(SendLocalList, "localAuthorizationList"));idx++)
 			{
@@ -15827,7 +15834,7 @@ int initialConfigurationTable(void)
 	char sstr[256]={0};
 	int c = 0;
 	char *loc;
-	int	confVersion = 15;
+	int	confVersion = 16;
 
 	DEBUG_INFO("initialConfigurationTable...version: %d\n", confVersion);
 	//start_t = clock();
@@ -16276,14 +16283,14 @@ int initialConfigurationTable(void)
 		//LocalAuthListMaxLength
 		ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListMaxLength].ItemAccessibility = 0;
 		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListMaxLength].ItemName, "LocalAuthListMaxLength");
-		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListMaxLength].ItemData, "500" );
+		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListMaxLength].ItemData, "100000" );
 
 		fprintf(outfile,"{\"key\":\"%s\",\"readonly\":%s,\"value\":\"%s\"}\n","LocalAuthListMaxLength", "true", ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[LocalAuthListMaxLength].ItemData);
 
 		//SendLocalListMaxLength
 		ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemAccessibility = 0;
 		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemName, "SendLocalListMaxLength");
-		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData, "50" );
+		strcpy((char *)ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData, "1000" );
 
 		fprintf(outfile,"{\"key\":\"%s\",\"readonly\":%s,\"value\":\"%s\"}\n","SendLocalListMaxLength", "true", ShmOCPP16DataPH->ConfigurationTable.LocalAuthListManagementProfile[SendLocalListMaxLength].ItemData);
 

+ 6 - 5
EVSE/Modularization/ocppph/Module_OcppBackend.c

@@ -258,6 +258,7 @@ static int OCPP16Callback(struct lws *wsi, enum lws_callback_reasons reason, voi
 						DEBUG_ERROR("lws_add_http_header_by_token : WSI_TOKEN_HTTP_AUTHORIZATION\n");
 						return -1;
 					}
+					DEBUG_OCPPMESSAGE_INFO("SecurityProfile: %d\n", GetOcppSecurityProfile());
 					DEBUG_OCPPMESSAGE_INFO("Authorization: %s\n", buf);
 
 					break;
@@ -419,13 +420,13 @@ static struct lws_protocols protocols[] =
 		WEBSOCKET_BUFFER_SIZE,
 	},
 	{
-		"ocpp2.0",
+		"ocpp2.0.1",
 		OCPP16Callback,
 		WEBSOCKET_BUFFER_SIZE,
 		WEBSOCKET_BUFFER_SIZE,
 	},
 	{
-		"ocpp1.6,ocpp2.0",
+		"ocpp1.6,ocpp2.0.1",
 		OCPP16Callback,
 		WEBSOCKET_BUFFER_SIZE,
 		WEBSOCKET_BUFFER_SIZE,
@@ -490,7 +491,7 @@ void* ConnectWsServer(void* data)  //int ConnectWsServer()
 	ContextInfo.uid = -1;
 	if(use_ssl)
 	{
-		ContextInfo.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT ;
+		ContextInfo.options |= LWS_SERVER_OPTION_DO_SSL_GLOBAL_INIT;
 	}
 
 	ContextInfo.protocols = protocols;
@@ -1078,7 +1079,7 @@ int sentqueue()
 								DEBUG_INFO("original  connectorId     = %d\n", connectorId);
 								DEBUG_INFO("original  transactionId   = %d\n", transactionId_org);
 								DEBUG_INFO("original  IdtagStr        = %s\n", "");
-								if((transactionId_map != 0)&&(transactionId_org != transactionId_map))
+								if((transactionId_map != 0)&&(transactionId_org == 0)&&(transactionId_org != transactionId_map))
 								{
 									//replace transactionId
 									json_object_object_add(objData, "idTx", json_object_new_int(transactionId_map));
@@ -1205,7 +1206,7 @@ void* processWatchdog()
 			system("killall OcppBackendPH");
 		}
 
-		if((0 < GetWebSocketPingInterval()) && ((GetWebSocketPingInterval()+5) <= getDiffSecNow(startTime.pingOn)) && (wsi_client != NULL) && (GetServerSign() == TRUE))
+		if((0 < GetWebSocketPingInterval()) && (0 < counterPingSend) && ((GetWebSocketPingInterval()+5) <= getDiffSecNow(startTime.pingOn)) && (wsi_client != NULL) && (GetServerSign() == TRUE))
 		{
 			DEBUG_WARN("Pong packet receive timeout.\n");
 			//system("killall OcppBackendPH");

+ 2 - 2
EVSE/Modularization/ocppph/Module_OcppBackend.h

@@ -1,7 +1,7 @@
 /*
  * Sample_OCPP_Task.h
  *
- *  Created on: 2020¦~5¤ë26¤é
+ *  Created on: 2020�~5��26��
  *      Author: foluswen
  */
 
@@ -79,7 +79,7 @@
 #define QUEUE_MESSAGE_LENGTH		3584
 
 // Websocket TX/RX buffer size
-#define WEBSOCKET_BUFFER_SIZE          (1024*200)
+#define WEBSOCKET_BUFFER_SIZE          (1024*500)
 
 enum GUN_TYPE
 {