浏览代码

2022-01-20/Jerry Wang
Action:
1. Modify the OCPP 1.6 YesCustomData content & structure to avoid building another ShareMemory block.

File:
1. define.h
--> Action 1
2. EVSE/Modularization/ocppfiles/MessageHandler.c
--> Action 1
3. EVSE/Modularization/ocppph/MessageHandler.c
--> Action 1

Jerry Wang 3 年之前
父节点
当前提交
1848a9837a
共有 3 个文件被更改,包括 117 次插入153 次删除
  1. 55 73
      EVSE/Modularization/ocppfiles/MessageHandler.c
  2. 59 78
      EVSE/Modularization/ocppph/MessageHandler.c
  3. 3 2
      EVSE/Projects/define.h

+ 55 - 73
EVSE/Modularization/ocppfiles/MessageHandler.c

@@ -11,7 +11,6 @@ struct SysConfigAndInfo				*ShmSysConfigAndInfo;
 struct StatusCodeData 				*ShmStatusCodeData;
 struct PsuData 						*ShmPsuData ;
 struct OCPP16Data 					*ShmOCPP16Data;
-struct StructYesCustomData          *ShmYesCustomData;
 
 //ConfigurationMaxKeys
 #define GetConfigurationMaxKeysNUM 	_GetConfiguration_CNT
@@ -4027,20 +4026,6 @@ int InitShareMemory()
 	else
 	{}
 
-   	//creat ShmYesCustomData
-	if ((MeterSMId = shmget(ShmYesCustomKey, sizeof(struct StructYesCustomData),  0777)) < 0)
-	{
-		DEBUG_ERROR("shmget StructYesCustomKey NG\n");
-		result = FAIL;
-	}
-	else if ((ShmYesCustomData = shmat(MeterSMId, NULL, 0)) == (void *) -1)
-	{
-		DEBUG_ERROR("shmat StructYesCustomData NG\n");
-		result = FAIL;
-	}
-	else
-	{}
-
     /****************************** For Initial Settings************************************************/
 	ShmOCPP16Data->GetConfiguration.ResponseUnknownKey = NULL;
 	ShmOCPP16Data->SendLocalList.LocalAuthorizationList = NULL;
@@ -4444,13 +4429,13 @@ void CheckSystemValue(void)
 	//===============================
 	// send YES CallReader
 	//===============================
-	if(isWebsocketSendable && (server_sign == TRUE) && (ShmYesCustomData->CallReaderReq == 1) && (getDiffSecNow(clientTime.YesCustomCallReader) >= 5))
+	if(isWebsocketSendable && (server_sign == TRUE) && (ShmOCPP16Data->YesCustomData.CallReaderReq == 1) && (getDiffSecNow(clientTime.YesCustomCallReader) >= 5))
 	{
 		sprintf((char*)ShmOCPP16Data->DataTransfer[0].VendorId, "%s", ShmSysConfigAndInfo->SysConfig.chargePointVendor);
 		sprintf((char*)ShmOCPP16Data->DataTransfer[0].MessageId,"call_reader");
 		sprintf((char*)ShmOCPP16Data->DataTransfer[0].Data," ");
 		ShmOCPP16Data->CsMsg.bits[0].DataTransferReq = 1;
-		//ShmYesCustomData->CallReaderReq = 0;
+		//ShmOCPP16Data->YesCustomData.CallReaderReq = 0;
 		refreshStartTimer(&clientTime.YesCustomCallReader);
 	}
 
@@ -10854,7 +10839,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					//DEBUG_INFO("status: %s\n", json_object_get_string(json_object_object_get(data, "status")));
 					if(strcmp(json_object_get_string(json_object_object_get(data, "status")), "T") || strcmp(json_object_get_string(json_object_object_get(data, "status")), "F"))
 					{
-						sprintf((char*)ShmYesCustomData->RefundStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
+						sprintf((char *)ShmOCPP16Data->YesCustomData.RefundStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
 					}
 					else
 					{
@@ -10870,7 +10855,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(json_object_object_get(data, "chargeDate") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->RefundStatus.chargeDate, "%s", json_object_get_string(json_object_object_get(data,"chargeDate")));
+					sprintf((char *)ShmOCPP16Data->YesCustomData.RefundStatus.chargeDate, "%s", json_object_get_string(json_object_object_get(data,"chargeDate")));
 				}
 				else
 				{
@@ -10881,7 +10866,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "holdAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "holdAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.holdAmt = json_object_get_int(json_object_object_get(data, "holdAmt"));
+						ShmOCPP16Data->YesCustomData.RefundStatus.holdAmt = json_object_get_int(json_object_object_get(data, "holdAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10897,7 +10882,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "chargeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "chargeAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
+						ShmOCPP16Data->YesCustomData.RefundStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10913,7 +10898,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "refundAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "refundAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.refundAmt = json_object_get_int(json_object_object_get(data, "refundAmt"));
+						ShmOCPP16Data->YesCustomData.RefundStatus.refundAmt = json_object_get_int(json_object_object_get(data, "refundAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10929,7 +10914,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "page") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "page")) >= 0 && json_object_get_int(json_object_object_get(data, "page")) <= 3)
-						ShmYesCustomData->RefundStatus.page = json_object_get_int(json_object_object_get(data, "page"));
+						ShmOCPP16Data->YesCustomData.RefundStatus.page = json_object_get_int(json_object_object_get(data, "page"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10944,14 +10929,14 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->RefundStatusReq = 1;
+					ShmOCPP16Data->YesCustomData.RefundStatusReq = 1;
 					DEBUG_INFO("<<< RefundStatus:{status:%s, chargeDate:%s, holdAmt:%d, chargeAmt:%d, refundAmt:%d, page:%d}\n",
-							ShmYesCustomData->RefundStatus.status,
-							ShmYesCustomData->RefundStatus.chargeDate,
-							ShmYesCustomData->RefundStatus.holdAmt,
-							ShmYesCustomData->RefundStatus.chargeAmt,
-							ShmYesCustomData->RefundStatus.refundAmt,
-							ShmYesCustomData->RefundStatus.page);
+							ShmOCPP16Data->YesCustomData.RefundStatus.status,
+							ShmOCPP16Data->YesCustomData.RefundStatus.chargeDate,
+							ShmOCPP16Data->YesCustomData.RefundStatus.holdAmt,
+							ShmOCPP16Data->YesCustomData.RefundStatus.chargeAmt,
+							ShmOCPP16Data->YesCustomData.RefundStatus.refundAmt,
+							ShmOCPP16Data->YesCustomData.RefundStatus.page);
 				}
 			}
 			else
@@ -10975,7 +10960,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					//DEBUG_INFO("status: %s\n", json_object_get_string(json_object_object_get(data, "status")));
 					if((strcmp(json_object_get_string(json_object_object_get(data, "status")), "T")==0) || (strcmp(json_object_get_string(json_object_object_get(data, "status")), "F")==0))
 					{
-						sprintf((char*)ShmYesCustomData->DeductStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
+						sprintf((char*)ShmOCPP16Data->YesCustomData.DeductStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
 					}
 					else
 					{
@@ -10992,7 +10977,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "autoLoadAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "autoLoadAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.autoLoadAmt = json_object_get_int(json_object_object_get(data, "autoLoadAmt"));
+						ShmOCPP16Data->YesCustomData.DeductStatus.autoLoadAmt = json_object_get_int(json_object_object_get(data, "autoLoadAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -11008,7 +10993,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "beforeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "beforeAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.beforeAmt = json_object_get_int(json_object_object_get(data, "beforeAmt"));
+						ShmOCPP16Data->YesCustomData.DeductStatus.beforeAmt = json_object_get_int(json_object_object_get(data, "beforeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -11024,7 +11009,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "chargeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "chargeAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
+						ShmOCPP16Data->YesCustomData.DeductStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -11040,7 +11025,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "afterAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "afterAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.afterAmt = json_object_get_int(json_object_object_get(data, "afterAmt"));
+						ShmOCPP16Data->YesCustomData.DeductStatus.afterAmt = json_object_get_int(json_object_object_get(data, "afterAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -11056,7 +11041,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "page") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "page")) >= 0)
-						ShmYesCustomData->DeductStatus.page = json_object_get_int(json_object_object_get(data, "page"));
+						ShmOCPP16Data->YesCustomData.DeductStatus.page = json_object_get_int(json_object_object_get(data, "page"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -11071,14 +11056,14 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->DeductStatusReq = 1;
+					ShmOCPP16Data->YesCustomData.DeductStatusReq = 1;
 					DEBUG_INFO("<<< deduct_status:{status:%s, autoLoadAmt:%d, beforeAmt:%d, chargeAmt:%d, afterAmt:%d, page:%d}\n",
-									ShmYesCustomData->DeductStatus.status,
-									ShmYesCustomData->DeductStatus.autoLoadAmt,
-									ShmYesCustomData->DeductStatus.beforeAmt,
-									ShmYesCustomData->DeductStatus.chargeAmt,
-									ShmYesCustomData->DeductStatus.afterAmt,
-									ShmYesCustomData->DeductStatus.page);
+									ShmOCPP16Data->YesCustomData.DeductStatus.status,
+									ShmOCPP16Data->YesCustomData.DeductStatus.autoLoadAmt,
+									ShmOCPP16Data->YesCustomData.DeductStatus.beforeAmt,
+									ShmOCPP16Data->YesCustomData.DeductStatus.chargeAmt,
+									ShmOCPP16Data->YesCustomData.DeductStatus.afterAmt,
+									ShmOCPP16Data->YesCustomData.DeductStatus.page);
 				}
 			}
 			else
@@ -11090,7 +11075,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			sprintf(message,"[%d,\"%s\",%s]",MESSAGE_TYPE_CALLRESULT, uuid, json_object_to_json_string_ext(response, JSON_C_TO_STRING_PLAIN));
 			json_object_put(response);
 		}
-		else if(strstr(tempmessageId, "charge_info") != NULL)
+		else if(strstr(tempmessageId, "ID_Station_Location") != NULL)
 		{
 			json_object *data;
 			data = json_tokener_parse(tempdata);
@@ -11098,9 +11083,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			{
 				json_object_object_add(response, "status", json_object_new_string("Accepted"));
 
-				if(json_object_object_get(data, "station_name") != NULL)
+				if(json_object_object_get(data, "stationName") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->ChargerInfo.station_name, "%s", json_object_get_string(json_object_object_get(data,"station_name")));
+					sprintf((char *)ShmOCPP16Data->YesCustomData.ChargerInfo.station_name, "%s", json_object_get_string(json_object_object_get(data,"stationName")));
 				}
 				else
 				{
@@ -11108,9 +11093,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					json_object_object_add(response, "data", json_object_new_string("station_name data can not get."));
 				}
 
-				if(json_object_object_get(data, "station_id") != NULL)
+				/*if(json_object_object_get(data, "station_id") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->ChargerInfo.station_id, "%s", json_object_get_string(json_object_object_get(data,"station_id")));
+					sprintf((char *)ShmOCPP16Data->YesCustomData.ChargerInfo.station_id, "%s", json_object_get_string(json_object_object_get(data,"station_id")));
 				}
 				else
 				{
@@ -11122,23 +11107,20 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				{
 					for(int idx=0;idx<json_object_array_length(json_object_object_get(data, "charge_id"));idx++)
 					{
-						sprintf((char*)ShmYesCustomData->ChargerInfo.charge_id[idx], "%s", json_object_get_string(json_object_array_get_idx(json_object_object_get(data, "charge_id"), idx)));
+						sprintf((char*)ShmOCPP16Data->YesCustomData.ChargerInfo.charge_id[idx], "%s", json_object_get_string(json_object_array_get_idx(json_object_object_get(data, "charge_id"), idx)));
 					}
 				}
 				else
 				{
 					json_object_object_add(response, "status", json_object_new_string("Rejected"));
 					json_object_object_add(response, "data", json_object_new_string("charge_id data can not get."));
-				}
+				}*/
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->ChargerInfoReq = 1;
-					DEBUG_INFO("<<< charge_info:{station_name:%s, station_id:%s, charge_id[0]:%s, charge_id[1]:%s}\n",
-									ShmYesCustomData->ChargerInfo.station_name,
-									ShmYesCustomData->ChargerInfo.station_id,
-									ShmYesCustomData->ChargerInfo.charge_id[0],
-									ShmYesCustomData->ChargerInfo.charge_id[1]);
+					ShmOCPP16Data->YesCustomData.ChargerInfoReq = 1;
+					DEBUG_INFO("<<< ID_Station_Location:{station_name:%s}\n",
+									ShmOCPP16Data->YesCustomData.ChargerInfo.station_name);
 				}
 			}
 			else
@@ -11150,7 +11132,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			sprintf(message,"[%d,\"%s\",%s]",MESSAGE_TYPE_CALLRESULT, uuid, json_object_to_json_string_ext(response, JSON_C_TO_STRING_PLAIN));
 			json_object_put(response);
 		}
-		else if(strstr(tempmessageId, "weather_info") != NULL)
+		else if(strstr(tempmessageId, "ID_Weather_Info") != NULL)
 		{
 			json_object *data;
 			data = json_tokener_parse(tempdata);
@@ -11158,9 +11140,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			{
 				json_object_object_add(response, "status", json_object_new_string("Accepted"));
 
-				if(json_object_object_get(data, "weather") != NULL)
+				if(json_object_object_get(data, "weatherId") != NULL)
 				{
-					ShmYesCustomData->WeatherInfo.weatherId = json_object_get_int(json_object_object_get(data, "weather"));
+					ShmOCPP16Data->YesCustomData.WeatherInfo.weatherId = json_object_get_int(json_object_object_get(data, "weatherId"));
 				}
 				else
 				{
@@ -11168,9 +11150,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					json_object_object_add(response, "data", json_object_new_string("weather data can not get."));
 				}
 
-				if(json_object_object_get(data, "temperature") != NULL)
+				if(json_object_object_get(data, "Temperature") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->WeatherInfo.temperature, "%s", json_object_get_string(json_object_object_get(data,"temperature")));
+					ShmOCPP16Data->YesCustomData.WeatherInfo.temperature = json_object_get_double(json_object_object_get(data,"Temperature"));
 				}
 				else
 				{
@@ -11180,10 +11162,10 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->WeatherInfoReq = 1;
-					DEBUG_INFO("<<< weather_info:{weather:%d, temperature:%s}\n",
-									ShmYesCustomData->WeatherInfo.weatherId,
-									ShmYesCustomData->WeatherInfo.temperature
+					ShmOCPP16Data->YesCustomData.WeatherInfoReq = 1;
+					DEBUG_INFO("<<< ID_Weather_Info:{weather:%d, temperature:%.1f}\n",
+									ShmOCPP16Data->YesCustomData.WeatherInfo.weatherId,
+									ShmOCPP16Data->YesCustomData.WeatherInfo.temperature
 									);
 				}
 			}
@@ -11211,11 +11193,11 @@ int handleDataTransferRequest(char *uuid, char *payload)
 						int idx = json_object_get_int(json_object_object_get(data, "connectorId"))-1;
 						if(json_object_object_get(data, "qrcode") != NULL)
 						{
-							sprintf((char *)ShmYesCustomData->QrCode[idx], "%s", json_object_get_string(json_object_object_get(data,"qrcode")));
-							ShmYesCustomData->SetQrCodeReq = 1;
+							sprintf((char *)ShmOCPP16Data->YesCustomData.QrCode[idx], "%s", json_object_get_string(json_object_object_get(data,"qrcode")));
+							ShmOCPP16Data->YesCustomData.SetQrCodeReq = 1;
 							DEBUG_INFO("<<< set_qrcode:{connectorId:%d, qrcode:%s}\n",
 											idx,
-											ShmYesCustomData->QrCode[idx]
+											ShmOCPP16Data->YesCustomData.QrCode[idx]
 											);
 						}
 						else
@@ -15345,12 +15327,12 @@ void handleDataTransferResponse(char *payload, int gun_index)
 		DEBUG_INFO("Data: %s\n", json_object_get_string(json_object_object_get(DataTransfer, "data")));
 
 		// YES call_reader message confirm
-		if(ShmYesCustomData->CallReaderReq == 1)
+		if(ShmOCPP16Data->YesCustomData.CallReaderReq == 1)
 		{
-			sprintf((char *)ShmYesCustomData->CallReaderStatus, "%s",status);
-			ShmYesCustomData->CallReaderConf = 1;
-			ShmYesCustomData->CallReaderReq = 0;
-			DEBUG_INFO("Report CallReader status to CSU: %s\n",ShmYesCustomData->CallReaderStatus);
+			sprintf((char *)ShmOCPP16Data->YesCustomData.CallReaderStatus, "%s",status);
+			ShmOCPP16Data->YesCustomData.CallReaderConf = 1;
+			ShmOCPP16Data->YesCustomData.CallReaderReq = 0;
+			DEBUG_INFO("Report CallReader status to CSU: %s\n",ShmOCPP16Data->YesCustomData.CallReaderStatus);
 		}
 	}
 }

+ 59 - 78
EVSE/Modularization/ocppph/MessageHandler.c

@@ -12,7 +12,6 @@ struct StatusCodeData 				*ShmStatusCodeData;
 struct PsuData 						*ShmPsuData ;
 struct OCPP16Data 					*ShmOCPP16Data;
 struct OCPP16Data 					*ShmOCPP16DataPH;
-struct StructYesCustomData          *ShmYesCustomData;
 
 //ConfigurationMaxKeys
 #define GetConfigurationMaxKeysNUM 	_GetConfiguration_CNT
@@ -3545,20 +3544,6 @@ int InitShareMemory()
 	else
 	{}
 
-   	//creat ShmYesCustomData
-	if ((MeterSMId = shmget(ShmYesCustomKey, sizeof(struct StructYesCustomData),  0777)) < 0)
-	{
-		DEBUG_ERROR("shmget StructYesCustomKey NG\n");
-		result = FAIL;
-	}
-	else if ((ShmYesCustomData = shmat(MeterSMId, NULL, 0)) == (void *) -1)
-	{
-		DEBUG_ERROR("shmat StructYesCustomData NG\n");
-		result = FAIL;
-	}
-	else
-	{}
-
     /****************************** For Initial Settings************************************************/
 	ShmOCPP16DataPH->GetConfiguration.ResponseUnknownKey = NULL;
 	ShmOCPP16DataPH->SendLocalList.LocalAuthorizationList = NULL;
@@ -3964,13 +3949,13 @@ void CheckSystemValue(void)
 	//===============================
 	// send YES CallReader
 	//===============================
-	if(isWebsocketSendable && (server_sign == TRUE) && (ShmYesCustomData->CallReaderReq == 1) && (getDiffSecNow(clientTime.YesCustomCallReader) >= 5))
+	if(isWebsocketSendable && (server_sign == TRUE) && (ShmOCPP16DataPH->YesCustomData.CallReaderReq == 1) && (getDiffSecNow(clientTime.YesCustomCallReader) >= 5))
 	{
-		sprintf((char*)ShmOCPP16Data->DataTransfer[0].VendorId, "%s", ShmSysConfigAndInfo->SysConfig.chargePointVendor);
-		sprintf((char*)ShmOCPP16Data->DataTransfer[0].MessageId,"call_reader");
-		sprintf((char*)ShmOCPP16Data->DataTransfer[0].Data," ");
-		ShmOCPP16Data->CsMsg.bits[0].DataTransferReq = 1;
-		//ShmYesCustomData->CallReaderReq = 0;
+		sprintf((char*)ShmOCPP16DataPH->DataTransfer[0].VendorId, "%s", ShmSysConfigAndInfo->SysConfig.chargePointVendor);
+		sprintf((char*)ShmOCPP16DataPH->DataTransfer[0].MessageId,"call_reader");
+		sprintf((char*)ShmOCPP16DataPH->DataTransfer[0].Data," ");
+		ShmOCPP16DataPH->CsMsg.bits[0].DataTransferReq = 1;
+		//ShmOCPP16Data->YesCustomData.CallReaderReq = 0;
 		refreshStartTimer(&clientTime.YesCustomCallReader);
 	}
 
@@ -10358,7 +10343,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					//DEBUG_INFO("status: %s\n", json_object_get_string(json_object_object_get(data, "status")));
 					if(strcmp(json_object_get_string(json_object_object_get(data, "status")), "T") || strcmp(json_object_get_string(json_object_object_get(data, "status")), "F"))
 					{
-						sprintf((char*)ShmYesCustomData->RefundStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
+						sprintf((char*)ShmOCPP16DataPH->YesCustomData.RefundStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
 					}
 					else
 					{
@@ -10374,7 +10359,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(json_object_object_get(data, "chargeDate") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->RefundStatus.chargeDate, "%s", json_object_get_string(json_object_object_get(data,"chargeDate")));
+					sprintf((char *)ShmOCPP16DataPH->YesCustomData.RefundStatus.chargeDate, "%s", json_object_get_string(json_object_object_get(data,"chargeDate")));
 				}
 				else
 				{
@@ -10385,7 +10370,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "holdAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "holdAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.holdAmt = json_object_get_int(json_object_object_get(data, "holdAmt"));
+						ShmOCPP16DataPH->YesCustomData.RefundStatus.holdAmt = json_object_get_int(json_object_object_get(data, "holdAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10401,7 +10386,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "chargeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "chargeAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
+						ShmOCPP16DataPH->YesCustomData.RefundStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10417,7 +10402,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "refundAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "refundAmt")) >= 0)
-						ShmYesCustomData->RefundStatus.refundAmt = json_object_get_int(json_object_object_get(data, "refundAmt"));
+						ShmOCPP16DataPH->YesCustomData.RefundStatus.refundAmt = json_object_get_int(json_object_object_get(data, "refundAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10433,7 +10418,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "page") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "page")) >= 0 && json_object_get_int(json_object_object_get(data, "page")) <= 3)
-						ShmYesCustomData->RefundStatus.page = json_object_get_int(json_object_object_get(data, "page"));
+						ShmOCPP16DataPH->YesCustomData.RefundStatus.page = json_object_get_int(json_object_object_get(data, "page"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10448,14 +10433,14 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->RefundStatusReq = 1;
+					ShmOCPP16DataPH->YesCustomData.RefundStatusReq = 1;
 					DEBUG_INFO("<<< RefundStatus:{status:%s, chargeDate:%s, holdAmt:%d, chargeAmt:%d, refundAmt:%d, page:%d}\n",
-							ShmYesCustomData->RefundStatus.status,
-							ShmYesCustomData->RefundStatus.chargeDate,
-							ShmYesCustomData->RefundStatus.holdAmt,
-							ShmYesCustomData->RefundStatus.chargeAmt,
-							ShmYesCustomData->RefundStatus.refundAmt,
-							ShmYesCustomData->RefundStatus.page);
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.status,
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.chargeDate,
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.holdAmt,
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.chargeAmt,
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.refundAmt,
+							ShmOCPP16DataPH->YesCustomData.RefundStatus.page);
 				}
 			}
 			else
@@ -10479,7 +10464,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					//DEBUG_INFO("status: %s\n", json_object_get_string(json_object_object_get(data, "status")));
 					if((strcmp(json_object_get_string(json_object_object_get(data, "status")), "T")==0) || (strcmp(json_object_get_string(json_object_object_get(data, "status")), "F")==0))
 					{
-						sprintf((char*)ShmYesCustomData->DeductStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
+						sprintf((char*)ShmOCPP16DataPH->YesCustomData.DeductStatus.status, "%s", json_object_get_string(json_object_object_get(data, "status")));
 					}
 					else
 					{
@@ -10496,7 +10481,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "autoLoadAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "autoLoadAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.autoLoadAmt = json_object_get_int(json_object_object_get(data, "autoLoadAmt"));
+						ShmOCPP16DataPH->YesCustomData.DeductStatus.autoLoadAmt = json_object_get_int(json_object_object_get(data, "autoLoadAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10512,7 +10497,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "beforeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "beforeAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.beforeAmt = json_object_get_int(json_object_object_get(data, "beforeAmt"));
+						ShmOCPP16DataPH->YesCustomData.DeductStatus.beforeAmt = json_object_get_int(json_object_object_get(data, "beforeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10528,7 +10513,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "chargeAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "chargeAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
+						ShmOCPP16DataPH->YesCustomData.DeductStatus.chargeAmt = json_object_get_int(json_object_object_get(data, "chargeAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10544,7 +10529,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "afterAmt") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "afterAmt")) >= 0)
-						ShmYesCustomData->DeductStatus.afterAmt = json_object_get_int(json_object_object_get(data, "afterAmt"));
+						ShmOCPP16DataPH->YesCustomData.DeductStatus.afterAmt = json_object_get_int(json_object_object_get(data, "afterAmt"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10560,7 +10545,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				if(json_object_object_get(data, "page") != NULL)
 				{
 					if(json_object_get_int(json_object_object_get(data, "page")) >= 0)
-						ShmYesCustomData->DeductStatus.page = json_object_get_int(json_object_object_get(data, "page"));
+						ShmOCPP16DataPH->YesCustomData.DeductStatus.page = json_object_get_int(json_object_object_get(data, "page"));
 					else
 					{
 						json_object_object_add(response, "status", json_object_new_string("Rejected"));
@@ -10575,14 +10560,14 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->DeductStatusReq = 1;
+					ShmOCPP16DataPH->YesCustomData.DeductStatusReq = 1;
 					DEBUG_INFO("<<< deduct_status:{status:%s, autoLoadAmt:%d, beforeAmt:%d, chargeAmt:%d, afterAmt:%d, page:%d}\n",
-									ShmYesCustomData->DeductStatus.status,
-									ShmYesCustomData->DeductStatus.autoLoadAmt,
-									ShmYesCustomData->DeductStatus.beforeAmt,
-									ShmYesCustomData->DeductStatus.chargeAmt,
-									ShmYesCustomData->DeductStatus.afterAmt,
-									ShmYesCustomData->DeductStatus.page);
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.status,
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.autoLoadAmt,
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.beforeAmt,
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.chargeAmt,
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.afterAmt,
+							ShmOCPP16DataPH->YesCustomData.DeductStatus.page);
 				}
 			}
 			else
@@ -10594,7 +10579,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			sprintf(message,"[%d,\"%s\",%s]",MESSAGE_TYPE_CALLRESULT, uuid, json_object_to_json_string_ext(response, JSON_C_TO_STRING_PLAIN));
 			json_object_put(response);
 		}
-		else if(strstr(tempmessageId, "charge_info") != NULL)
+		else if(strstr(tempmessageId, "ID_Station_Location") != NULL)
 		{
 			json_object *data;
 			data = json_tokener_parse(tempdata);
@@ -10602,9 +10587,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			{
 				json_object_object_add(response, "status", json_object_new_string("Accepted"));
 
-				if(json_object_object_get(data, "station_name") != NULL)
+				if(json_object_object_get(data, "stationName") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->ChargerInfo.station_name, "%s", json_object_get_string(json_object_object_get(data,"station_name")));
+					sprintf((char *)ShmOCPP16DataPH->YesCustomData.ChargerInfo.station_name, "%s", json_object_get_string(json_object_object_get(data,"stationName")));
 				}
 				else
 				{
@@ -10612,9 +10597,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					json_object_object_add(response, "data", json_object_new_string("station_name data can not get."));
 				}
 
-				if(json_object_object_get(data, "station_id") != NULL)
+				/*if(json_object_object_get(data, "station_id") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->ChargerInfo.station_id, "%s", json_object_get_string(json_object_object_get(data,"station_id")));
+					sprintf((char *)ShmOCPP16Data->YesCustomData.ChargerInfo.station_id, "%s", json_object_get_string(json_object_object_get(data,"station_id")));
 				}
 				else
 				{
@@ -10626,23 +10611,20 @@ int handleDataTransferRequest(char *uuid, char *payload)
 				{
 					for(int idx=0;idx<json_object_array_length(json_object_object_get(data, "charge_id"));idx++)
 					{
-						sprintf((char*)ShmYesCustomData->ChargerInfo.charge_id[idx], "%s", json_object_get_string(json_object_array_get_idx(json_object_object_get(data, "charge_id"), idx)));
+						sprintf((char*)ShmOCPP16Data->YesCustomData.ChargerInfo.charge_id[idx], "%s", json_object_get_string(json_object_array_get_idx(json_object_object_get(data, "charge_id"), idx)));
 					}
 				}
 				else
 				{
 					json_object_object_add(response, "status", json_object_new_string("Rejected"));
 					json_object_object_add(response, "data", json_object_new_string("charge_id data can not get."));
-				}
+				}*/
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->ChargerInfoReq = 1;
-					DEBUG_INFO("<<< charge_info:{station_name:%s, station_id:%s, charge_id[0]:%s, charge_id[1]:%s}\n",
-									ShmYesCustomData->ChargerInfo.station_name,
-									ShmYesCustomData->ChargerInfo.station_id,
-									ShmYesCustomData->ChargerInfo.charge_id[0],
-									ShmYesCustomData->ChargerInfo.charge_id[1]);
+					ShmOCPP16DataPH->YesCustomData.ChargerInfoReq = 1;
+					DEBUG_INFO("<<< ID_Station_Location:{station_name:%s}\n",
+							ShmOCPP16DataPH->YesCustomData.ChargerInfo.station_name);
 				}
 			}
 			else
@@ -10654,7 +10636,7 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			sprintf(message,"[%d,\"%s\",%s]",MESSAGE_TYPE_CALLRESULT, uuid, json_object_to_json_string_ext(response, JSON_C_TO_STRING_PLAIN));
 			json_object_put(response);
 		}
-		else if(strstr(tempmessageId, "weather_info") != NULL)
+		else if(strstr(tempmessageId, "ID_Weather_Info") != NULL)
 		{
 			json_object *data;
 			data = json_tokener_parse(tempdata);
@@ -10662,9 +10644,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 			{
 				json_object_object_add(response, "status", json_object_new_string("Accepted"));
 
-				if(json_object_object_get(data, "weather") != NULL)
+				if(json_object_object_get(data, "weatherId") != NULL)
 				{
-					ShmYesCustomData->WeatherInfo.weatherId = json_object_get_int(json_object_object_get(data, "weather"));
+					ShmOCPP16DataPH->YesCustomData.WeatherInfo.weatherId = json_object_get_int(json_object_object_get(data, "weatherId"));
 				}
 				else
 				{
@@ -10672,9 +10654,9 @@ int handleDataTransferRequest(char *uuid, char *payload)
 					json_object_object_add(response, "data", json_object_new_string("weather data can not get."));
 				}
 
-				if(json_object_object_get(data, "temperature") != NULL)
+				if(json_object_object_get(data, "Temperature") != NULL)
 				{
-					sprintf((char *)ShmYesCustomData->WeatherInfo.temperature, "%s", json_object_get_string(json_object_object_get(data,"temperature")));
+					ShmOCPP16DataPH->YesCustomData.WeatherInfo.temperature = json_object_get_double(json_object_object_get(data,"Temperature"));
 				}
 				else
 				{
@@ -10684,11 +10666,10 @@ int handleDataTransferRequest(char *uuid, char *payload)
 
 				if(strcmp(json_object_get_string(json_object_object_get(response,"status")),"Accepted")==0)
 				{
-					ShmYesCustomData->WeatherInfoReq = 1;
-					DEBUG_INFO("<<< weather_info:{weather:%d, temperature:%s}\n",
-									ShmYesCustomData->WeatherInfo.weatherId,
-									ShmYesCustomData->WeatherInfo.temperature
-									);
+					ShmOCPP16DataPH->YesCustomData.WeatherInfoReq = 1;
+					DEBUG_INFO("<<< ID_Weather_Info:{weather:%d, temperature:%.1f}\n",
+								ShmOCPP16DataPH->YesCustomData.WeatherInfo.weatherId,
+								ShmOCPP16DataPH->YesCustomData.WeatherInfo.temperature);
 				}
 			}
 			else
@@ -10715,11 +10696,11 @@ int handleDataTransferRequest(char *uuid, char *payload)
 						int idx = json_object_get_int(json_object_object_get(data, "connectorId"))-1;
 						if(json_object_object_get(data, "qrcode") != NULL)
 						{
-							sprintf((char *)ShmYesCustomData->QrCode[idx], "%s", json_object_get_string(json_object_object_get(data,"qrcode")));
-							ShmYesCustomData->SetQrCodeReq = 1;
+							sprintf((char *)ShmOCPP16DataPH->YesCustomData.QrCode[idx], "%s", json_object_get_string(json_object_object_get(data,"qrcode")));
+							ShmOCPP16DataPH->YesCustomData.SetQrCodeReq = 1;
 							DEBUG_INFO("<<< set_qrcode:{connectorId:%d, qrcode:%s}\n",
 											idx,
-											ShmYesCustomData->QrCode[idx]
+											ShmOCPP16DataPH->YesCustomData.QrCode[idx]
 											);
 						}
 						else
@@ -14848,12 +14829,12 @@ void handleDataTransferResponse(char *payload, int gun_index)
 		DEBUG_INFO("Data: %s\n", json_object_get_string(json_object_object_get(DataTransfer, "data")));
 
 		// YES call_reader message confirm
-		if(ShmYesCustomData->CallReaderReq == 1)
+		if(ShmOCPP16DataPH->YesCustomData.CallReaderReq == 1)
 		{
-			sprintf((char *)ShmYesCustomData->CallReaderStatus, "%s",status);
-			ShmYesCustomData->CallReaderConf = 1;
-			ShmYesCustomData->CallReaderReq = 0;
-			DEBUG_INFO("Report CallReader status to CSU: %s\n",ShmYesCustomData->CallReaderStatus);
+			sprintf((char *)ShmOCPP16DataPH->YesCustomData.CallReaderStatus, "%s",status);
+			ShmOCPP16DataPH->YesCustomData.CallReaderConf = 1;
+			ShmOCPP16DataPH->YesCustomData.CallReaderReq = 0;
+			DEBUG_INFO("Report CallReader status to CSU: %s\n",ShmOCPP16DataPH->YesCustomData.CallReaderStatus);
 		}
 	}
 }

+ 3 - 2
EVSE/Projects/define.h

@@ -4623,8 +4623,8 @@ struct StructChargerInfo
 
 struct StructWeatherInfo
 {
-    int weatherId;
-    unsigned char temperature[64];
+    int   weatherId;
+    float temperature;
 };
 
 struct StructYesCustomData
@@ -4839,6 +4839,7 @@ struct OCPP16Data
     struct StructSignCertificate                    SignCertificate;
     struct StructSignedFirmwareStatusNotification   SignedFirmwareStatusNotification;
     struct StructSessionTarget                      SessionTarget[CONNECTOR_QUANTITY];
+    struct StructYesCustomData                      YesCustomData;
 };