FolusWen 3 жил өмнө
parent
commit
14815d8d2b

+ 39 - 29
EVSE/Projects/AW-CCS/Apps/main.c

@@ -603,24 +603,28 @@ uint8_t ocpp_get_auth_result(uint8_t isValidParent, ...)
 			case SYS_MODE_TERMINATING:
 				if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
 				{
+					/*
 					DEBUG_INFO("==========================================\n");
 					DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 1.6 ====\n");
 					DEBUG_INFO("==========================================\n");
 					DEBUG_INFO("Authorize.ResponseIdTagInfo.ParentIdTag : %s \n", ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag);
 					DEBUG_INFO("StartTransaction[%d].ResponseIdTagInfo.ParentIdTag : %s \n", gun_index ,ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag);
-
+					*/
+					
 					if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0) &&
 					   (strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.ParentIdTag, (char*)ShmOCPP16Data->StartTransaction[gun_index].ResponseIdTagInfo.ParentIdTag)==0))
 						result = PASS;
 				}
 				else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
 				{
+					/*
 					DEBUG_INFO("==========================================\n");
 					DEBUG_INFO("=== OCPP GETTING AUTHORIZE RESULT 2.0 ====\n");
 					DEBUG_INFO("==========================================\n");
 					DEBUG_INFO("Authorize.Response_idTokenInfo.groupIdToken.idToken : %s \n", ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken);
 					DEBUG_INFO("TransactionEvent[%d].Response_idTokenInfo.groupIdToken.idToken : %s \n", gun_index, ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken);
-
+					*/
+					
 					if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0) &&
 					   (strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.groupIdToken.idToken, (char*)ShmOCPP20Data->TransactionEvent[gun_index].Response_idTokenInfo.groupIdToken.idToken)==0))
 						result = PASS;
@@ -2707,7 +2711,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.54.00.0000.00");
+	sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.55.00.0000.00");
 
 	// Get AC connector type from model name
 	for(uint8_t idx=0;idx<3;idx++)
@@ -3230,7 +3234,6 @@ void setRelay(unsigned char gun_index,unsigned char isOn)
 					else if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC)
 						DEBUG_INFO("Gun-%d Output relay status: OFF. [CHARGING_MODE_HLC] \n",gun_index);
 
-					DEBUG_INFO("Gun-%d Output relay status: OFF. \n",gun_index);
 					break;
 				case CHARGING_MODE_SOCKETE:
 					ShmCharger->gun_info[gun_index].legacyRequest.isRelayOn = OFF;
@@ -4252,6 +4255,7 @@ void checkRfidAuthrize()
 		if(GetCardSerialNumber() != FAIL)
 		{
 			uint8_t isSnStart = FALSE;
+			uint8_t bufferRFID[ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId)];
 
 			if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
 			{
@@ -4259,17 +4263,17 @@ void checkRfidAuthrize()
 				switch(rfid.snType)
 				{
 					case RFID_SN_TYPE_6BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5]);
 						break;
 					case RFID_SN_TYPE_7BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6]);
 						break;
 					case RFID_SN_TYPE_10BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6], rfid.currentCard[7], rfid.currentCard[8], rfid.currentCard[9]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3], rfid.currentCard[4], rfid.currentCard[5], rfid.currentCard[6], rfid.currentCard[7], rfid.currentCard[8], rfid.currentCard[9]);
 						break;
 					case RFID_SN_TYPE_4BYTE:
 					default:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
 						break;
 				}
 			}
@@ -4279,17 +4283,17 @@ void checkRfidAuthrize()
 				switch(rfid.snType)
 				{
 					case RFID_SN_TYPE_6BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X", rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
 						break;
 					case RFID_SN_TYPE_7BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
 						break;
 					case RFID_SN_TYPE_10BYTE:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[9], rfid.currentCard[8], rfid.currentCard[7], rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", rfid.currentCard[9], rfid.currentCard[8], rfid.currentCard[7], rfid.currentCard[6], rfid.currentCard[5], rfid.currentCard[4], rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
 						break;
 					case RFID_SN_TYPE_4BYTE:
 					default:
-						sprintf((char*)ShmSysConfigAndInfo->SysConfig.UserId, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
+						sprintf((char*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
 						break;
 				}
 			}
@@ -4301,9 +4305,8 @@ void checkRfidAuthrize()
 			// Check SN already start
 			for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 			{
-				if(isMatchStartUser(gun_index))
+				if(isMatchStartUser(gun_index) || (isMatchPresentUser(gun_index) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_PREPARING)))
 				{
-
 					DEBUG_INFO("%s running on connector-%02d.\n", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, gun_index);
 					isSnStart = TRUE;
 					ShmCharger->gun_info[gun_index].rfidReq = ON;
@@ -4319,6 +4322,7 @@ void checkRfidAuthrize()
 			// Request authorize if isSnStart is false
 			if(!isSnStart)
 			{
+				memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
 				ftime(&startTime[0][TMR_IDX_AUTH]);
 				ocpp_set_auth_conf(OFF);
 				ocpp_set_auth_req(ON, "ISO14443");
@@ -4383,27 +4387,32 @@ void checkRfidAuthrize()
 							if(isMatchPresentUser())
 							{
 								DEBUG_INFO("Cancel present user.\n");
+								for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+									setLedMotion(gun_index,LED_ACTION_IDLE);
 								ShmCharger->isAuthrizing = FALSE;
 							}
 						}
-
-						for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
+						else
 						{
-							if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < 3000)
-								setLedMotion(gun_index,LED_ACTION_RFID_PASS);
-							else
-								setLedMotion(gun_index,LED_ACTION_AUTHED);
-
-							if((((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_RESERVATION)) && (((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) || (ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == ON))) ||
-							   (((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_CHARGING) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_TERMINATING)) && (ShmCharger->gun_selectd == gun_index))
-							   )
+							for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
 							{
-								DEBUG_INFO("Connector-%02d action detect.\n", gun_index);
-								ShmCharger->isAuthrizing = FALSE;
+								if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < 3000)
+									setLedMotion(gun_index,LED_ACTION_RFID_PASS);
+								else
+									setLedMotion(gun_index,LED_ACTION_AUTHED);
 
-								ShmCharger->gun_info[gun_index].rfidReq = ON;
+								if((((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_IDLE) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_RESERVATION)) && (((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) || (ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn == ON))) ||
+								   ((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_PREPARING) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B) && (ShmCharger->gun_selectd == gun_index)) ||
+								   (((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_CHARGING) || (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_TERMINATING)) && (ShmCharger->gun_selectd == gun_index))
+								   )
+								{
+									DEBUG_INFO("Connector-%02d action detect.\n", gun_index);
+									ShmCharger->isAuthrizing = FALSE;
 
-								break;
+									ShmCharger->gun_info[gun_index].rfidReq = ON;
+
+									break;
+								}
 							}
 						}
 					}
@@ -5056,6 +5065,7 @@ int main(void)
 								}
 								break;
 							case HANDSHAKE_BS_MODE:
+								ftime(&startTime[gun_index][TMR_IDX_HANDSHAKING]);
 								if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)
 									setRelay(gun_index,ON);
 
@@ -5241,7 +5251,7 @@ int main(void)
 					}
 
 					// Use RFID card to stop handshaking
-					if((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index))
+					if((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchPresentUser(gun_index))
 					{
 						DEBUG_INFO("Use RFID card to stop handshaking.\n");
 						setSpeaker(ON,SPEAKER_SHORT);