|
@@ -568,58 +568,80 @@ uint8_t ocpp_get_auth_conf()
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-uint8_t ocpp_get_auth_result(uint8_t gun_index)
|
|
|
+uint8_t ocpp_get_auth_result(uint8_t isValidParent, ...)
|
|
|
{
|
|
|
uint8_t result = OFF;
|
|
|
+ va_list args;
|
|
|
+ uint8_t gun_index;
|
|
|
|
|
|
- switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus)
|
|
|
+ if(isValidParent)
|
|
|
{
|
|
|
- case SYS_MODE_AUTHORIZING:
|
|
|
- if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
|
|
|
- {
|
|
|
- if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
|
|
|
- result = PASS;
|
|
|
- }
|
|
|
- else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
|
- {
|
|
|
- if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
|
|
|
- result = PASS;
|
|
|
- }
|
|
|
+ va_start(args, isValidParent);
|
|
|
+ gun_index = va_arg(args, int);
|
|
|
+ va_end(args);
|
|
|
|
|
|
- break;
|
|
|
- case SYS_MODE_CHARGING:
|
|
|
- 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;
|
|
|
- }
|
|
|
+ switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus)
|
|
|
+ {
|
|
|
+ case SYS_MODE_AUTHORIZING:
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
|
|
|
+ result = PASS;
|
|
|
+ }
|
|
|
+ else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
|
|
|
+ result = PASS;
|
|
|
+ }
|
|
|
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ case SYS_MODE_CHARGING:
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_16)
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP16Data->Authorize.ResponseIdTagInfo.Status, "Accepted")==0))
|
|
|
+ result = PASS;
|
|
|
+ }
|
|
|
+ else if(ShmSysConfigAndInfo->SysInfo.OcppRunningVer == OCPP_RUNNING_VERSION_20)
|
|
|
+ {
|
|
|
+ if((strcmp((char*)ShmOCPP20Data->Authorize.Response_idTokenInfo.status, "Accepted")==0))
|
|
|
+ result = PASS;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- DEBUG_INFO("Authorize result : %s \n", ((result == PASS)?"Pass":"Fail"));
|
|
|
+ //DEBUG_INFO("Authorize result : %s \n", ((result == PASS)?"Pass":"Fail"));
|
|
|
|
|
|
return result;
|
|
|
}
|
|
@@ -2305,7 +2327,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.52.00.0000.00");
|
|
|
+ sprintf((char*)ShmSysConfigAndInfo->SysInfo.CsuRootFsFwRev, "D0.53.00.0000.00");
|
|
|
|
|
|
// Get AC connector type from model name
|
|
|
for(uint8_t idx=0;idx<3;idx++)
|
|
@@ -3740,6 +3762,183 @@ void checkRemoteUpgradeStatus()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void checkRfidAuthrize()
|
|
|
+{
|
|
|
+ static uint8_t isAuthrizing = FALSE;
|
|
|
+ static uint8_t isShowResult = FALSE;
|
|
|
+
|
|
|
+ if(!isAuthrizing)
|
|
|
+ {
|
|
|
+ // Read RFID
|
|
|
+ if(GetCardSerialNumber() != FAIL)
|
|
|
+ {
|
|
|
+ uint8_t isSnStart = FALSE;
|
|
|
+
|
|
|
+ // Check SN already start
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ {
|
|
|
+ if(isMatchStartUser(gun_index))
|
|
|
+ {
|
|
|
+ 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;
|
|
|
+ ocpp_set_auth_conf(ON);
|
|
|
+ setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
+ sleep(3);
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // Request authorize if isSnStart is false
|
|
|
+ if(!isSnStart)
|
|
|
+ {
|
|
|
+ if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
+ {
|
|
|
+ // Big endian
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Little endian
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ 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]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
+
|
|
|
+ ftime(&startTime[0][TMR_IDX_AUTH]);
|
|
|
+ ocpp_set_auth_conf(OFF);
|
|
|
+ ocpp_set_auth_req(ON, "ISO14443");
|
|
|
+ setLedMotion(0,LED_ACTION_AUTHED);
|
|
|
+ isAuthrizing = TRUE;
|
|
|
+ isShowResult = FALSE;
|
|
|
+ sleep(1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ // Wait authorize result
|
|
|
+ if(!ocpp_get_auth_conf() && (DiffTimebWithNow(startTime[0][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH))
|
|
|
+ {
|
|
|
+ // Authorization timeout process.
|
|
|
+ DEBUG_WARN("Authorize timeout !!!\n");
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ {
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
+ setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
+ sleep(3);
|
|
|
+
|
|
|
+ isAuthrizing = FALSE;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(ocpp_get_auth_conf() ||
|
|
|
+ (!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
|
|
|
+ (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
|
|
|
+ )
|
|
|
+ {
|
|
|
+ if(ocpp_get_auth_result(NO) ||
|
|
|
+ (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
|
|
|
+ (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
|
|
|
+ {
|
|
|
+ if(!isShowResult)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("Authorize pass.\n");
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
+ ftime(&startTime[0][TMR_IDX_GUN_DETECT]);
|
|
|
+ isShowResult = TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(DiffTimebWithNow(startTime[0][TMR_IDX_GUN_DETECT]) < (ocpp_get_connection_timeout()*1000))
|
|
|
+ {
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ {
|
|
|
+ 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))) ||
|
|
|
+ (((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->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
|
+ ShmCharger->gun_info[gun_index].rfidReq = ON;
|
|
|
+ isAuthrizing = FALSE;
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_INFO("Connector action detect timeout.\n");
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE);
|
|
|
+ isAuthrizing = FALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ DEBUG_INFO("Authorize fail.\n");
|
|
|
+
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ {
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
+ setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
|
+ }
|
|
|
+
|
|
|
+ setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
+ sleep(3);
|
|
|
+
|
|
|
+ for(int gun_index = 0;gun_index<AC_QUANTITY;gun_index++)
|
|
|
+ {
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE);
|
|
|
+ }
|
|
|
+
|
|
|
+ isAuthrizing = FALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
//======================================================
|
|
|
// Main process
|
|
|
//======================================================
|
|
@@ -3845,15 +4044,9 @@ int main(void)
|
|
|
checkReset();
|
|
|
|
|
|
//==============================================
|
|
|
- // Check RFID
|
|
|
+ // Check RFID authorization
|
|
|
//==============================================
|
|
|
- if(!ShmCharger->gun_info[ShmCharger->gun_selectd].rfidReq)
|
|
|
- {
|
|
|
- if(GetCardSerialNumber()!= FAIL)
|
|
|
- {
|
|
|
- ShmCharger->gun_info[ShmCharger->gun_selectd].rfidReq = ON;
|
|
|
- }
|
|
|
- }
|
|
|
+ checkRfidAuthrize();
|
|
|
|
|
|
//==============================================
|
|
|
// Connector loop
|
|
@@ -4143,7 +4336,6 @@ int main(void)
|
|
|
ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop = OFF;
|
|
|
ocpp_set_remotestart(gun_index, OFF);
|
|
|
ocpp_set_remotestop(gun_index, OFF);
|
|
|
- ocpp_set_auth_conf(OFF);
|
|
|
|
|
|
ShmCharger->gun_info[gun_index].systemAlarmCode.SystemAlarmCode = 0x00;
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PresentChargedDuration = 0;
|
|
@@ -4154,6 +4346,7 @@ int main(void)
|
|
|
|
|
|
// Response StopTransactionConf
|
|
|
ocpp_set_stoptransaction_conf(gun_index, OFF);
|
|
|
+ memset(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId));
|
|
|
|
|
|
ShmCharger->gun_info[gun_index].ccsHandshakeState = HANDSHAKE_IDLE;
|
|
|
ShmCharger->gun_info[gun_index].chargingMode = CHARGING_MODE_BS;
|
|
@@ -4171,72 +4364,30 @@ int main(void)
|
|
|
(ocpp_get_remotestart(gun_index) == ON) ||
|
|
|
(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStart == ON))
|
|
|
{
|
|
|
- // Clean User id & Card Number
|
|
|
- memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
-
|
|
|
if((ShmCharger->gun_info[gun_index].rfidReq == ON))
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_RFID;
|
|
|
DEBUG_INFO("Start Method : RFID...\n");
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
- {
|
|
|
- // Big endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Little endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- DEBUG_INFO("Start request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
}
|
|
|
else if(ocpp_get_remotestart(gun_index))
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_BACKEND;
|
|
|
ocpp_copy_userid_from_remotestart(gun_index);
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
DEBUG_INFO("Start Method : BACKEND...\n");
|
|
|
}
|
|
|
else if(ShmCharger->gun_info[gun_index].bleConfigData.isRequestStart == ON)
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_BLE;
|
|
|
memcpy(ShmSysConfigAndInfo->SysConfig.UserId, ShmCharger->gun_info[gun_index].bleLoginCentralId.id, ARRAY_SIZE(ShmCharger->gun_info[gun_index].bleLoginCentralId.id));
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
DEBUG_INFO("Start Method : BLE...\n");
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_FREE;
|
|
|
memcpy(ShmSysConfigAndInfo->SysConfig.UserId, ShmSysConfigAndInfo->SysConfig.SerialNumber, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.SerialNumber));
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
DEBUG_INFO("Start Method : FREE...\n");
|
|
|
}
|
|
|
|
|
@@ -4256,101 +4407,10 @@ int main(void)
|
|
|
if(isModeChange(gun_index))
|
|
|
{
|
|
|
ftime(&startTime[gun_index][TMR_IDX_AUTH]);
|
|
|
- if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID)
|
|
|
- {
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
|
|
|
- {
|
|
|
- case AUTH_MODE_ENABLE:
|
|
|
- if(ocpp_get_connection_status())
|
|
|
- {
|
|
|
- // On line
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- setLedMotion(gun_index,LED_ACTION_AUTHED);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Off line
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
|
|
|
- {
|
|
|
- case OFF_POLICY_LOCALLIST:
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- break;
|
|
|
- case OFF_POLICY_PH_RFID:
|
|
|
- break;
|
|
|
- case OFF_POLICY_FREE:
|
|
|
- break;
|
|
|
- case OFF_POLICY_NOCHARGE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case AUTH_MODE_DISABLE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
ShmCharger->gun_info[gun_index].mcuFlag.isSetCpPwmDuty = YES;
|
|
|
if(ShmCharger->isCcsEnable)system("/root/Module_CCS &");
|
|
|
}
|
|
|
-
|
|
|
- if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH)
|
|
|
- {
|
|
|
- // Authorization timeout process.
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- setChargerMode(gun_index, SYS_MODE_IDLE);
|
|
|
- DEBUG_WARN("Authorize timeout !!!\n");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- switch(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod)
|
|
|
- {
|
|
|
- case START_METHOD_RFID:
|
|
|
-
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
- sleep(1);
|
|
|
-
|
|
|
- if((ocpp_get_auth_conf()) ||
|
|
|
- (!ocpp_get_connection_status() && ((ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE) || (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_NOCHARGE))) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0))
|
|
|
- )
|
|
|
- {
|
|
|
- if(ocpp_get_auth_result(gun_index) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)) ||
|
|
|
- (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)))
|
|
|
- {
|
|
|
- memcpy((char*)ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartUserId, ShmSysConfigAndInfo->SysConfig.UserId, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
-
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
|
- DEBUG_INFO("Authorize pass.\n");
|
|
|
- setSpeaker(ON,SPEAKER_SHORT);
|
|
|
- setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
|
- sleep(3);
|
|
|
- setChargerMode(gun_index, SYS_MODE_PREPARING);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
- DEBUG_INFO("Authorize fail.\n");
|
|
|
- setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
- setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
|
- sleep(3);
|
|
|
- setChargerMode(gun_index, SYS_MODE_IDLE);
|
|
|
- }
|
|
|
-
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- ocpp_set_auth_conf(OFF);
|
|
|
- }
|
|
|
- break;
|
|
|
- case START_METHOD_BACKEND:
|
|
|
- case START_METHOD_BLE:
|
|
|
- case START_METHOD_FREE:
|
|
|
- default:
|
|
|
- setSpeaker(ON,SPEAKER_SHORT);
|
|
|
- setChargerMode(gun_index, SYS_MODE_PREPARING);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
+ setChargerMode(gun_index, SYS_MODE_PREPARING);
|
|
|
|
|
|
break;
|
|
|
case SYS_MODE_PREPARING:
|
|
@@ -4716,7 +4776,6 @@ int main(void)
|
|
|
ftime(&startTime[gun_index][TMR_IDX_LOGPPRINTOUT]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_PROFILE_PREPARE]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_PWN_CHANGE]);
|
|
|
- startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
|
ocpp_set_auth_req(OFF);
|
|
|
ocpp_reset_smartcharging_profileId(gun_index);
|
|
|
ocpp_set_profile_req(gun_index, ON);
|
|
@@ -4755,147 +4814,8 @@ int main(void)
|
|
|
((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_RENEGOTIATE_MODE) ||
|
|
|
((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STANDBY_MODE))
|
|
|
{
|
|
|
- if(ShmCharger->gun_info[gun_index].rfidReq)
|
|
|
- {
|
|
|
- // If RFID SN different with start user, it need to authorize ID
|
|
|
- if((ShmCharger->gun_info[gun_index].rfidReq == ON) && !isMatchStartUser(gun_index))
|
|
|
- {
|
|
|
- if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH) && !ocpp_get_auth_req())
|
|
|
- {
|
|
|
- // Request authorization
|
|
|
- ftime(&startTime[gun_index][TMR_IDX_AUTH]);
|
|
|
- memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
- {
|
|
|
- // Big endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Little endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- DEBUG_INFO("End request User Id: %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
- DEBUG_INFO("Start method: %d...\n ", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod);
|
|
|
-
|
|
|
- if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID) ||
|
|
|
- //(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND) ||
|
|
|
- (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BLE))
|
|
|
- {
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
|
|
|
- {
|
|
|
- case AUTH_MODE_ENABLE:
|
|
|
- if(ocpp_get_connection_status())
|
|
|
- {
|
|
|
- // On line
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Off line
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
|
|
|
- {
|
|
|
- case OFF_POLICY_LOCALLIST:
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- break;
|
|
|
- case OFF_POLICY_PH_RFID:
|
|
|
- break;
|
|
|
- case OFF_POLICY_FREE:
|
|
|
- break;
|
|
|
- case OFF_POLICY_NOCHARGE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case AUTH_MODE_DISABLE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND)
|
|
|
- {
|
|
|
- DEBUG_INFO("Should be remote stop charger... \n");
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
- sleep(1);
|
|
|
-
|
|
|
- if(ocpp_get_auth_conf() ||
|
|
|
- (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
|
- {
|
|
|
- if(ocpp_get_auth_result(gun_index) ||
|
|
|
- (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
|
- (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- ocpp_set_auth_req(OFF);
|
|
|
- DEBUG_INFO("Authorize fail.\n");
|
|
|
- setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
- setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
|
- sleep(3);
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
|
- }
|
|
|
-
|
|
|
- startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
|
- ocpp_set_auth_conf(OFF);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // If Authorize is accpted or Rfid card match with start User, The system should terminating to the end
|
|
|
- if(ShmCharger->gun_info[gun_index].isAuthPassEnd || isMatchStartUser(gun_index))
|
|
|
- {
|
|
|
- setChargerMode(gun_index, SYS_MODE_TERMINATING);
|
|
|
- setRelay(gun_index, OFF);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- setChargerMode(gun_index, SYS_MODE_TERMINATING);
|
|
|
- setRelay(gun_index, OFF);
|
|
|
- }
|
|
|
+ setChargerMode(gun_index, SYS_MODE_TERMINATING);
|
|
|
+ setRelay(gun_index, OFF);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -5140,8 +5060,7 @@ int main(void)
|
|
|
}
|
|
|
|
|
|
// End authorize pass
|
|
|
- if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
|
|
|
- (ShmCharger->gun_info[gun_index].isAuthPassEnd) ||
|
|
|
+ if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && ocpp_get_auth_result(YES, gun_index)) ||
|
|
|
(ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop == ON) ||
|
|
|
ocpp_get_remotestop(gun_index) ||
|
|
|
(ocpp_get_connection_status() && !ocpp_get_starttransaction_result(gun_index)) ||
|
|
@@ -5152,21 +5071,6 @@ int main(void)
|
|
|
(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStop == ON) ||
|
|
|
((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_HLC) && (ShmCharger->gun_info[gun_index].acCcsInfo.EVChargeProgress == HLC_STOP_MODE)))
|
|
|
{
|
|
|
- if(ShmCharger->gun_info[gun_index].legacyRequest.isLegacyRequest == ON)
|
|
|
- {
|
|
|
- if(((ShmCharger->gun_info[gun_index].rfidReq == ON) && isMatchStartUser(gun_index)) ||
|
|
|
- (ShmCharger->gun_info[gun_index].isAuthPassEnd))
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
|
- DEBUG_INFO("Authorize pass.\n");
|
|
|
- setSpeaker(ON,SPEAKER_SHORT);
|
|
|
- setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
|
- sleep(3);
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {}
|
|
|
-
|
|
|
if(ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_BS)
|
|
|
setRequest(gun_index, OFF);
|
|
|
|
|
@@ -5199,139 +5103,8 @@ int main(void)
|
|
|
setLedMotion(gun_index, LED_ACTION_STOP);
|
|
|
}
|
|
|
|
|
|
- if(ShmCharger->gun_info[gun_index].rfidReq)
|
|
|
- {
|
|
|
- DEBUG_INFO("Certified in terminating mode... \n");
|
|
|
-
|
|
|
- // If RFID SN different with start user, it need to authorize ID
|
|
|
- if((ShmCharger->gun_info[gun_index].rfidReq == ON) && !isMatchStartUser(gun_index))
|
|
|
- {
|
|
|
- if((DiffTimebWithNow(startTime[gun_index][TMR_IDX_AUTH]) > TIMEOUT_SPEC_AUTH) && !ocpp_get_auth_req())
|
|
|
- {
|
|
|
- // Request authorization
|
|
|
- ftime(&startTime[gun_index][TMR_IDX_AUTH]);
|
|
|
- memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
- {
|
|
|
- // Big endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Little endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- DEBUG_INFO("End request User Id : %s... \n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
- DEBUG_INFO("Start method : %d... \n ", ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod);
|
|
|
-
|
|
|
- if((ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_RFID) ||
|
|
|
- //(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND) ||
|
|
|
- (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BLE))
|
|
|
- {
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.AuthorisationMode)
|
|
|
- {
|
|
|
- case AUTH_MODE_ENABLE:
|
|
|
- if(ocpp_get_connection_status())
|
|
|
- {
|
|
|
- // On line
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Off line
|
|
|
- switch(ShmSysConfigAndInfo->SysConfig.OfflinePolicy)
|
|
|
- {
|
|
|
- case OFF_POLICY_LOCALLIST:
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- break;
|
|
|
- case OFF_POLICY_PH_RFID:
|
|
|
- break;
|
|
|
- case OFF_POLICY_FREE:
|
|
|
- break;
|
|
|
- case OFF_POLICY_NOCHARGE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- break;
|
|
|
- case AUTH_MODE_DISABLE:
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else if(ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod == START_METHOD_BACKEND)
|
|
|
- {
|
|
|
- DEBUG_INFO("Should be remote stop charger... \n");
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
- sleep(1);
|
|
|
-
|
|
|
- if(ocpp_get_auth_conf() ||
|
|
|
- (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST)) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
|
- {
|
|
|
- if(ocpp_get_auth_result(gun_index) ||
|
|
|
- (ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) ||
|
|
|
- (!ocpp_get_connection_status() && (isValidLocalWhiteCard() == PASS) && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_LOCALLIST) && (strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0)) ||
|
|
|
- (!ocpp_get_connection_status() && (ShmSysConfigAndInfo->SysConfig.OfflinePolicy == OFF_POLICY_FREE)))
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].isAuthPassEnd = ON;
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = VALIDATED_RFID;
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNVALIDATED_RFID;
|
|
|
- ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- ocpp_set_auth_req(OFF);
|
|
|
- DEBUG_INFO("Authorize fail... \n");
|
|
|
- setSpeaker(ON,SPEAKER_INTERVAL_3COUNT);
|
|
|
- setLedMotion(gun_index,LED_ACTION_RFID_FAIL);
|
|
|
- sleep(3);
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = DEFAULT_RFID;
|
|
|
- }
|
|
|
-
|
|
|
- startTime[gun_index][TMR_IDX_AUTH].time -= TIMEOUT_SPEC_AUTH;
|
|
|
- ocpp_set_auth_conf(OFF);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if(!ocpp_get_auth_result(YES, gun_index))
|
|
|
+ ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
|
|
|
if((((ShmCharger->gun_info[gun_index].chargingMode != CHARGING_MODE_SOCKETE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) || ((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_SOCKETE) && ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn)) &&
|
|
|
(ShmCharger->gun_info[gun_index].rfidReq != ON) &&
|
|
@@ -5379,7 +5152,6 @@ int main(void)
|
|
|
((ShmCharger->gun_info[gun_index].chargingMode == CHARGING_MODE_SOCKETE) && (!ShmCharger->gun_info[gun_index].primaryMcuState.socket_e.isSocketEPinOn)))
|
|
|
{
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
- ShmCharger->gun_info[gun_index].isAuthPassEnd = OFF;
|
|
|
ShmCharger->gun_info[gun_index].bleConfigData.isRequestStop = OFF;
|
|
|
ocpp_set_remotestop(gun_index, OFF);
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].schedule.isTriggerStop = OFF;
|
|
@@ -5508,9 +5280,8 @@ int main(void)
|
|
|
break;
|
|
|
case SYS_MODE_RESERVATION:
|
|
|
if(isModeChange(gun_index))
|
|
|
- {
|
|
|
- setLedMotion(gun_index,LED_ACTION_MAINTAIN);
|
|
|
- }
|
|
|
+ {}
|
|
|
+ setLedMotion(gun_index,LED_ACTION_MAINTAIN);
|
|
|
|
|
|
if(isReservationExpired(gun_index))
|
|
|
{
|
|
@@ -5531,48 +5302,6 @@ int main(void)
|
|
|
{
|
|
|
if((ShmCharger->gun_info[gun_index].rfidReq == ON))
|
|
|
{
|
|
|
- memset(ShmSysConfigAndInfo->SysConfig.UserId, 0x00, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
- {
|
|
|
- // Big endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Little endian
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- 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]);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
if(ocpp_compare_reserve_id_with_user(gun_index))
|
|
|
{
|
|
|
DEBUG_INFO("Start Method in reservation : RFID...\n");
|
|
@@ -5580,9 +5309,10 @@ int main(void)
|
|
|
ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].StartMethod = START_METHOD_RFID;
|
|
|
setChargerMode(gun_index, SYS_MODE_AUTHORIZING);
|
|
|
}
|
|
|
+ else
|
|
|
+ DEBUG_INFO("It's not reserve user id.\n");
|
|
|
|
|
|
ShmCharger->gun_info[gun_index].rfidReq = OFF;
|
|
|
-
|
|
|
}
|
|
|
else if(ocpp_get_remotestart(gun_index))
|
|
|
{
|