|
@@ -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);
|
|
|
|
|
|
|
|
|
- sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.54.00.0000.00");
|
|
|
+ sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.55.00.0000.00");
|
|
|
|
|
|
|
|
|
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()
|
|
|
|
|
|
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()
|
|
|
|
|
|
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)
|
|
|
}
|
|
|
|
|
|
|
|
|
- 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);
|