|
@@ -4914,92 +4914,102 @@ void checkHandshakeTime()
|
|
|
void checkRfidAuthrize()
|
|
|
{
|
|
|
static uint8_t isCheckdResult = FALSE;
|
|
|
+ static uint8_t isReadable = TRUE;
|
|
|
|
|
|
if(!ShmCharger->isAuthrizing)
|
|
|
{
|
|
|
// Read RFID
|
|
|
if(GetCardSerialNumber() != FAIL)
|
|
|
{
|
|
|
- uint8_t isSnStart = FALSE;
|
|
|
- uint8_t bufferRFID[ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId)];
|
|
|
-
|
|
|
- if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
+ if(isReadable == TRUE)
|
|
|
{
|
|
|
- // Big endian
|
|
|
- switch(rfid.snType)
|
|
|
+ uint8_t isSnStart = FALSE;
|
|
|
+ uint8_t bufferRFID[ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId)];
|
|
|
+
|
|
|
+ if(ShmSysConfigAndInfo->SysConfig.RfidCardNumEndian)
|
|
|
{
|
|
|
- case RFID_SN_TYPE_6BYTE:
|
|
|
- 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*)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*)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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
|
|
|
- break;
|
|
|
+ // Big endian
|
|
|
+ switch(rfid.snType)
|
|
|
+ {
|
|
|
+ case RFID_SN_TYPE_6BYTE:
|
|
|
+ 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*)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*)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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[0], rfid.currentCard[1], rfid.currentCard[2], rfid.currentCard[3]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- // Little endian
|
|
|
- switch(rfid.snType)
|
|
|
+ else
|
|
|
{
|
|
|
- case RFID_SN_TYPE_6BYTE:
|
|
|
- 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*)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*)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*)bufferRFID, "%02X%02X%02X%02X", rfid.currentCard[3], rfid.currentCard[2], rfid.currentCard[1], rfid.currentCard[0]);
|
|
|
- break;
|
|
|
+ // Little endian
|
|
|
+ switch(rfid.snType)
|
|
|
+ {
|
|
|
+ case RFID_SN_TYPE_6BYTE:
|
|
|
+ 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*)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*)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*)bufferRFID, "%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", bufferRFID);
|
|
|
- //DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
+ DEBUG_INFO("Authorize request User Id : %s\n", bufferRFID);
|
|
|
+ //DEBUG_INFO("Authorize request User Id : %s\n", ShmSysConfigAndInfo->SysConfig.UserId);
|
|
|
|
|
|
- for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
|
|
|
- ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
+ for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
|
|
|
+ ShmCharger->gun_info[gun_index].resultAuthorization = UNKNOW_RFID;
|
|
|
|
|
|
- // Check SN already start
|
|
|
- for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;gun_index++)
|
|
|
- {
|
|
|
- if(isMatchStartUser(gun_index) || (isMatchPresentUser(gun_index) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].SystemStatus == SYS_MODE_PREPARING)))
|
|
|
+ // Check SN already start
|
|
|
+ for(int gun_index = 0;gun_index<modelnameInfo.GetGunCount;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);
|
|
|
+ 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;
|
|
|
+ ocpp_set_auth_conf(ON);
|
|
|
+ setLedMotion(gun_index,LED_ACTION_RFID_PASS);
|
|
|
+ setSpeaker(ON, SPEAKER_SHORT);
|
|
|
+ sleep(3);
|
|
|
|
|
|
- break;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- // Request authorize if isSnStart is false
|
|
|
- if(!isSnStart)
|
|
|
- {
|
|
|
- memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
- refreshStartTimer(&startTime[0][TMR_IDX_AUTH]);
|
|
|
- ocpp_set_auth_conf(OFF);
|
|
|
- ocpp_set_auth_req(ON, "ISO14443");
|
|
|
- setLedMotion(0,LED_ACTION_AUTHED);
|
|
|
- ShmCharger->isAuthrizing = TRUE;
|
|
|
- ShmCharger->isGetAuthResult = FALSE;
|
|
|
- isCheckdResult = FALSE;
|
|
|
- //sleep(1);
|
|
|
+ // Request authorize if isSnStart is false
|
|
|
+ if(!isSnStart)
|
|
|
+ {
|
|
|
+ memcpy(ShmSysConfigAndInfo->SysConfig.UserId, bufferRFID, ARRAY_SIZE(ShmSysConfigAndInfo->SysConfig.UserId));
|
|
|
+ refreshStartTimer(&startTime[0][TMR_IDX_AUTH]);
|
|
|
+ ocpp_set_auth_conf(OFF);
|
|
|
+ ocpp_set_auth_req(ON, "ISO14443");
|
|
|
+ setLedMotion(0,LED_ACTION_AUTHED);
|
|
|
+ ShmCharger->isAuthrizing = TRUE;
|
|
|
+ ShmCharger->isGetAuthResult = FALSE;
|
|
|
+ isCheckdResult = FALSE;
|
|
|
+ //sleep(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ isReadable = FALSE;
|
|
|
}
|
|
|
}
|
|
|
+ else
|
|
|
+ {
|
|
|
+ isReadable = TRUE;
|
|
|
+ }
|
|
|
}
|
|
|
else
|
|
|
{
|