|
@@ -57,19 +57,23 @@ struct DcCommonInformation *ShmDcCommonData;
|
|
|
|
|
|
byte gun_count;
|
|
|
int chargingTime[CHAdeMO_QUANTITY + CCS_QUANTITY + GB_QUANTITY];
|
|
|
+byte rtcChkCount = 0;
|
|
|
|
|
|
float LogInfo[2][10];
|
|
|
+bool _useOfflineNoCharging = false;
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-double chademoVol = 5000;
|
|
|
-double ccsVol = 9500;
|
|
|
-double gbVol = 7500;
|
|
|
-float maxChargingVol[2] = { 0, 0 };
|
|
|
+double Chademo_Simple = 5000;
|
|
|
+double GB_Simple = 7500;
|
|
|
+double CCS_Simple = 7500;
|
|
|
+
|
|
|
+double Chademo_Standard= 5000;
|
|
|
+double GB_Standard = 7500;
|
|
|
+double CCS_Standard = 9500;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
-float maxChargingCur[2] = { 0, 0 };
|
|
|
+
|
|
|
float maxChargingPow = 0;
|
|
|
|
|
|
|
|
@@ -85,29 +89,6 @@ struct timeval _chk_chademo_permission_timeout[CHAdeMO_QUANTITY + CCS_QUANTITY +
|
|
|
bool chkChademoPermission[2] = { false, false };
|
|
|
byte SendErrorCount[2] = { 0, 0};
|
|
|
|
|
|
-struct Ev_Board_Cmd Ev_Cmd={
|
|
|
- 0,
|
|
|
- 0x00000200,
|
|
|
- 0x00000400,
|
|
|
- 0x00000500,
|
|
|
- 0x00000600,
|
|
|
- 0x00000700,
|
|
|
- 0x00000800,
|
|
|
- 0x00000900,
|
|
|
- 0x00000A00,
|
|
|
- 0x00000C00,
|
|
|
- 0x00000D00,
|
|
|
-
|
|
|
- 0x00000E00,
|
|
|
- 0x00000F00,
|
|
|
- 0x00001000,
|
|
|
- 0x00001100,
|
|
|
-
|
|
|
- 0x00001200,
|
|
|
- 0x00001400,
|
|
|
- 0x00001500,
|
|
|
-};
|
|
|
-
|
|
|
unsigned char mask_table[] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
|
|
|
|
|
|
void PRINTF_FUNC(char *string, ...);
|
|
@@ -462,7 +443,7 @@ void AddrAssignment(byte *data)
|
|
|
{
|
|
|
if (_chargingData[index - 1]->Type == _Type_Chademo)
|
|
|
PRINTF_FUNC("Set EV board info : (Chademo) TargetAddr = %d \n", index);
|
|
|
- else if (_chargingData[index - 1]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[index - 1]->Type == _Type_CCS)
|
|
|
PRINTF_FUNC("Set EV board info : (CCS) TargetAddr = %d \n", index);
|
|
|
else if (_chargingData[index - 1]->Type == _Type_GB)
|
|
|
PRINTF_FUNC("Set EV board info : (GB) TargetAddr = %d \n", index);
|
|
@@ -2818,43 +2799,45 @@ void CANReceiver()
|
|
|
memset(&frame, 0, sizeof(struct can_frame));
|
|
|
nbytes = read(CanFd, &frame, sizeof(struct can_frame));
|
|
|
|
|
|
- for (byte _index = 0; _index < gun_count; _index++)
|
|
|
- {
|
|
|
- if (GetTimeoutValue(_cmd_ack_timeout[_index]) >= 5000000)
|
|
|
- {
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
if (nbytes > 0)
|
|
|
{
|
|
|
byte target;
|
|
|
byte targetGun = 0x00;
|
|
|
byte findIndex = 0x00;
|
|
|
+ EvFrame *EvFrameMsg;
|
|
|
|
|
|
- intCmd = (int) (frame.can_id & CAN_EFF_MASK);
|
|
|
+ EvFrameMsg = (EvFrame *)&frame.can_id;
|
|
|
+ intCmd = EvFrameMsg->EvBdBits.MessageID;
|
|
|
|
|
|
if (!isClearBuf)
|
|
|
{
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (intCmd == ADDRESS_REQ)
|
|
|
+ if (intCmd == EV_Command_AddressReq)
|
|
|
{
|
|
|
ShmDcCommonData->CcsVersion = _CCS_VERSION_CHECK_TAG_V013S0;
|
|
|
AddrAssignment(frame.data);
|
|
|
continue;
|
|
|
}
|
|
|
- intCmd = (int) (frame.can_id & CAN_EFF_MASK & 0xFFFFFF00);
|
|
|
- target = ((byte) (frame.can_id & 0x000000FF));
|
|
|
+
|
|
|
+ target = EvFrameMsg->EvBdBits.SlaveAddress;
|
|
|
|
|
|
for (byte _index = 0; _index < gun_count; _index++)
|
|
|
{
|
|
|
|
|
|
findIndex = target;
|
|
|
if (gun_count == 1 &&
|
|
|
- _chargingData[_index]->Type == _Type_CCS_2 &&
|
|
|
+ _chargingData[_index]->Type == _Type_CCS &&
|
|
|
ShmDcCommonData->CcsVersion == _CCS_VERSION_CHECK_TAG_V015S0)
|
|
|
{
|
|
|
target -= 1;
|
|
@@ -2872,22 +2855,21 @@ void CANReceiver()
|
|
|
PRINTF_FUNC("EvComm (CANReceiver) : Target index = %x is < 0 or > QUANTITY \n", targetGun);
|
|
|
continue;
|
|
|
}
|
|
|
- else if (gun_count == 1 && targetGun == 0 && findIndex == 1 &&
|
|
|
- ShmDcCommonData->CcsVersion == _CCS_VERSION_CHECK_TAG_V015S0)
|
|
|
- {
|
|
|
-
|
|
|
- ShmDcCommonData->CcsVersion = _CCS_VERSION_CHECK_TAG_V013S0;
|
|
|
- }
|
|
|
|
|
|
- if(intCmd == 256)
|
|
|
+ if (gun_count == 1)
|
|
|
{
|
|
|
- continue;
|
|
|
+ if (findIndex == 1)
|
|
|
+ ShmDcCommonData->CcsVersion = _CCS_VERSION_CHECK_TAG_V013S0;
|
|
|
+ else
|
|
|
+ ShmDcCommonData->CcsVersion = _CCS_VERSION_CHECK_TAG_V015S0;
|
|
|
}
|
|
|
|
|
|
+ if(intCmd == 256) { continue; }
|
|
|
+
|
|
|
gettimeofday(&_cmd_ack_timeout[targetGun], NULL);
|
|
|
switch (intCmd)
|
|
|
{
|
|
|
- case NOTIFICATION_EV_STATUS:
|
|
|
+ case EV_Command_EvStatusNotification:
|
|
|
{
|
|
|
if (_chargingData[targetGun]->ConnectorPlugIn != frame.data[0])
|
|
|
{
|
|
@@ -2896,7 +2878,7 @@ void CANReceiver()
|
|
|
else if (frame.data[0] == UNPLUG)
|
|
|
PRINTF_FUNC("Conn %d, Unplug. \n", targetGun);
|
|
|
else
|
|
|
- PRINTF_FUNC("Conn %d, None Check. (%d) \n", targetGun, frame.data[0]);
|
|
|
+ PRINTF_FUNC("Conn %d, Plug None Check. (%d) \n", targetGun, frame.data[0]);
|
|
|
}
|
|
|
|
|
|
_chargingData[targetGun]->ConnectorPlugIn = frame.data[0];
|
|
@@ -2906,7 +2888,7 @@ void CANReceiver()
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_EV_FW_VERSION:
|
|
|
+ case EV_Command_GetFwVersion:
|
|
|
{
|
|
|
byte ver[16];
|
|
|
|
|
@@ -2927,7 +2909,7 @@ void CANReceiver()
|
|
|
PRINTF_FUNC("Connector %d, GBT Ver. : %s\n",
|
|
|
targetGun, ShmGBTData->evse[_chargingData[targetGun]->type_index].version);
|
|
|
}
|
|
|
- else if (_chargingData[targetGun]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[targetGun]->Type == _Type_CCS)
|
|
|
{
|
|
|
if (ShmCcsData->CommProtocol == _CCS_COMM_V2GMessage_DIN70121)
|
|
|
{
|
|
@@ -2951,12 +2933,12 @@ void CANReceiver()
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_EV_HW_VERSION:
|
|
|
+ case EV_Command_GetHwVersion:
|
|
|
{
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_GET_OUTPUT_REQ:
|
|
|
+ case EV_Command_GetOutputReq:
|
|
|
{
|
|
|
if ((_chargingData[targetGun]->SystemStatus >= S_PREPARING_FOR_EV &&
|
|
|
_chargingData[targetGun]->SystemStatus <= S_CHARGING) ||
|
|
@@ -2966,7 +2948,8 @@ void CANReceiver()
|
|
|
if (_chargingData[targetGun]->EvBatteryStartSoc <= 0)
|
|
|
_chargingData[targetGun]->EvBatteryStartSoc = frame.data[1];
|
|
|
|
|
|
- if (frame.data[1] > _chargingData[targetGun]->EvBatterySoc)
|
|
|
+ if (frame.data[1] > _chargingData[targetGun]->EvBatterySoc ||
|
|
|
+ _chargingData[targetGun]->SystemStatus == S_CHARGING)
|
|
|
_chargingData[targetGun]->EvBatterySoc = frame.data[1];
|
|
|
}
|
|
|
|
|
@@ -2998,7 +2981,7 @@ void CANReceiver()
|
|
|
ShmGBTData->ev[_chargingData[targetGun]->type_index].TargetBatteryVoltage = (_chargingData[targetGun]->EvBatterytargetVoltage * 10);
|
|
|
ShmGBTData->ev[_chargingData[targetGun]->type_index].ChargingCurrentRequest = (_chargingData[targetGun]->EvBatterytargetCurrent * 10);
|
|
|
}
|
|
|
- else if (_chargingData[targetGun]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[targetGun]->Type == _Type_CCS)
|
|
|
{
|
|
|
if(ShmCcsData->CommProtocol == _CCS_COMM_V2GMessage_DIN70121)
|
|
|
{
|
|
@@ -3012,7 +2995,7 @@ void CANReceiver()
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_GET_EV_BATTERY_INFO:
|
|
|
+ case EV_Command_GetBetteryInfo:
|
|
|
{
|
|
|
|
|
|
|
|
@@ -3034,13 +3017,13 @@ void CANReceiver()
|
|
|
ShmGBTData->ev[_chargingData[targetGun]->type_index].TotalBatteryCapacity = ((short) frame.data[2] << 8) + (short) frame.data[1];
|
|
|
ShmGBTData->ev[_chargingData[targetGun]->type_index].MaxiBatteryVoltage = _chargingData[targetGun]->EvBatteryMaxVoltage;
|
|
|
}
|
|
|
- else if (_chargingData[targetGun]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[targetGun]->Type == _Type_CCS)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_GET_MISCELLANEOUS_INFO:
|
|
|
+ case EV_Command_GetMiscellaneous:
|
|
|
{
|
|
|
_chargingData[targetGun]->GunLocked = frame.data[0];
|
|
|
_chargingData[targetGun]->PilotVoltage = (float)(-120 + frame.data[3]) / 10;
|
|
@@ -3048,21 +3031,24 @@ void CANReceiver()
|
|
|
ShmDcCommonData->ConnectorTemp1[targetGun] = frame.data[1];
|
|
|
ShmDcCommonData->ConnectorTemp2[targetGun] = frame.data[2];
|
|
|
|
|
|
- _chargingData[targetGun]->ConnectorTemp = ReturnConnectTemp(frame.data[1], frame.data[2]);
|
|
|
if (_chargingData[targetGun]->Type == _Type_Chademo)
|
|
|
{
|
|
|
+
|
|
|
+ _chargingData[targetGun]->ConnectorTemp = UNDEFINED_TEMP;
|
|
|
ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
|
|
|
ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
|
|
|
ShmCHAdeMOData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
|
|
|
}
|
|
|
else if (_chargingData[targetGun]->Type == _Type_GB)
|
|
|
{
|
|
|
+ _chargingData[targetGun]->ConnectorTemp = ReturnConnectTemp(frame.data[1], frame.data[2]);
|
|
|
ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureP = frame.data[1];
|
|
|
ShmGBTData->evse[_chargingData[targetGun]->type_index].ConnectorTemperatureN = frame.data[2];
|
|
|
ShmGBTData->evse[_chargingData[targetGun]->type_index].EvboardStatus = frame.data[7];
|
|
|
}
|
|
|
- else if (_chargingData[targetGun]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[targetGun]->Type == _Type_CCS)
|
|
|
{
|
|
|
+ _chargingData[targetGun]->ConnectorTemp = ReturnConnectTemp(frame.data[1], frame.data[2]);
|
|
|
if (ShmCcsData->CommProtocol == _CCS_COMM_V2GMessage_DIN70121)
|
|
|
{
|
|
|
|
|
@@ -3077,14 +3063,37 @@ void CANReceiver()
|
|
|
|
|
|
}
|
|
|
break;
|
|
|
- case ACK_EVSE_ISOLATION_STATUS: {}
|
|
|
+ case EV_Command_IsolationStatus:{}
|
|
|
+ break;
|
|
|
+ case EV_Command_EvccidReq:
|
|
|
+ {
|
|
|
+ if (frame.can_dlc > 0 &&
|
|
|
+ strcmp((char *)_chargingData[targetGun]->EVCCID, "") == EQUAL)
|
|
|
+ {
|
|
|
+ if (_chargingData[targetGun]->Type == _Type_CCS)
|
|
|
+ {
|
|
|
+ if (ShmCcsData->CommProtocol == _CCS_COMM_V2GMessage_DIN70121)
|
|
|
+ {
|
|
|
+ memset(ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].SessionSetupRequest.EVCCID, 0, sizeof(ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].SessionSetupRequest.EVCCID));
|
|
|
+ memcpy(ShmCcsData->V2GMessage_DIN70121[_chargingData[targetGun]->type_index].SessionSetupRequest.EVCCID, frame.data, frame.can_dlc);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ sprintf((char *)_chargingData[targetGun]->EVCCID, "%.2x%.2x%.2x%.2x%.2x%.2x",
|
|
|
+ frame.data[0], frame.data[1], frame.data[2], frame.data[3],
|
|
|
+ frame.data[4], frame.data[5]);
|
|
|
+
|
|
|
+ _chargingData[targetGun]->EVCCID[17] = '\0';
|
|
|
+ PRINTF_FUNC("*******Gun %d->EVCCID = %s \n", targetGun, _chargingData[targetGun]->EVCCID);
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
- case ACK_EVSE_PRECHAGE_INFO:
|
|
|
+ case EV_Command_EvsePrechargeInfo:
|
|
|
{
|
|
|
_chargingData[targetGun]->PrechargeStatus = frame.data[0];
|
|
|
}
|
|
|
break;
|
|
|
- case NOTIFICATION_EV_STOP:
|
|
|
+ case EV_Command_EvStopNotification:
|
|
|
{
|
|
|
|
|
|
if ((_chargingData[targetGun]->SystemStatus >= S_REASSIGN_CHECK &&
|
|
@@ -3117,7 +3126,7 @@ void CANReceiver()
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
-
|
|
|
+ PRINTF_FUNC("EV board = %d, Ack none defined. intCmd = %d \n", targetGun, intCmd);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -3199,6 +3208,22 @@ void SetPresentChargingOutputPower(struct ChargingInfoData *chargingData_1, stru
|
|
|
curAllowCount[1] = 0;
|
|
|
}
|
|
|
|
|
|
+ if (!_useOfflineNoCharging)
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.OcppConnStatus == NO &&
|
|
|
+ ShmSysConfigAndInfo->SysConfig.OfflinePolicy == _OFFLINE_POLICY_NO_CHARGING)
|
|
|
+ {
|
|
|
+ PRINTF_FUNC("Offline Policy : No Charing... \n");
|
|
|
+ _useOfflineNoCharging = true;
|
|
|
+ cur1 = cur2 = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.OcppConnStatus == YES)
|
|
|
+ _useOfflineNoCharging = false;
|
|
|
+ }
|
|
|
+
|
|
|
SetPresentOutputPower(vol1, cur1, vol2, cur2);
|
|
|
}
|
|
|
|
|
@@ -3304,11 +3329,13 @@ void Initialization()
|
|
|
|
|
|
void GetMaxVolAndCurMethod(byte index, float *vol, float *cur)
|
|
|
{
|
|
|
- if (maxChargingVol[index] != 0 && maxChargingVol[index] <= *vol)
|
|
|
- *vol = maxChargingVol[index];
|
|
|
+ if (_chargingData[index]->ConnectorMaxVoltage != 0 &&
|
|
|
+ _chargingData[index]->ConnectorMaxVoltage <= *vol)
|
|
|
+ *vol = _chargingData[index]->ConnectorMaxVoltage;
|
|
|
|
|
|
- if (maxChargingCur[index] != 0 && maxChargingCur[index] <= *cur)
|
|
|
- *cur = maxChargingCur[index];
|
|
|
+ if (_chargingData[index]->ConnectorMaxCurrent != 0 &&
|
|
|
+ _chargingData[index]->ConnectorMaxCurrent <= *cur)
|
|
|
+ *cur = _chargingData[index]->ConnectorMaxCurrent;
|
|
|
|
|
|
if (((_chargingData[index]->SystemStatus >= S_PREPARING_FOR_EVSE && _chargingData[index]->SystemStatus <= S_CHARGING) ||
|
|
|
(_chargingData[index]->SystemStatus >= S_CCS_PRECHARGE_ST0 && _chargingData[index]->SystemStatus <= S_CCS_PRECHARGE_ST1)) &&
|
|
@@ -3362,109 +3389,120 @@ byte GetStopChargingReasonByEvse(byte gunIndex, byte *reason)
|
|
|
if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.EmergencyStopTrip == 0x01)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 5;
|
|
|
- *(reason + 0) = 1;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '5';
|
|
|
+ *(reason + 5) = '1';
|
|
|
result = YES;
|
|
|
}
|
|
|
|
|
|
if (_chargingData[gunIndex]->Type == _Type_Chademo)
|
|
|
{
|
|
|
- if (ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayDrivingFault == YES)
|
|
|
+ if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.ChaRelayDrivingFault == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 1;
|
|
|
- *(reason + 2) = 0;
|
|
|
- *(reason + 1) = 1;
|
|
|
- *(reason + 0) = 2;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '1';
|
|
|
+ *(reason + 3) = '0';
|
|
|
+ *(reason + 4) = '1';
|
|
|
+ *(reason + 5) = '2';
|
|
|
result = YES;
|
|
|
}
|
|
|
- else if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.ChademoOutputUVPFail == YES)
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.ChaUvpFail == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 8;
|
|
|
- *(reason + 0) = 9;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '8';
|
|
|
+ *(reason + 5) = '9';
|
|
|
result = YES;
|
|
|
}
|
|
|
- else if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.ChademoGfdTrip == YES)
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.ChaGfdTrip == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 3;
|
|
|
- *(reason + 0) = 4;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '3';
|
|
|
+ *(reason + 5) = '4';
|
|
|
result = YES;
|
|
|
}
|
|
|
}
|
|
|
else if (_chargingData[gunIndex]->Type == _Type_GB)
|
|
|
{
|
|
|
- if (ShmStatusCodeData->FaultCode.FaultEvents.bits.ChademoOutputRelayDrivingFault == YES)
|
|
|
+ if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.GBTRelayDrivingFault == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 9;
|
|
|
- *(reason + 0) = 0;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '9';
|
|
|
+ *(reason + 5) = '0';
|
|
|
result = YES;
|
|
|
}
|
|
|
- else if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.GbGfdTrip == YES)
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.GBTUvpFail == YES)
|
|
|
+ {
|
|
|
+
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '9';
|
|
|
+ *(reason + 5) = '0';
|
|
|
+ result = YES;
|
|
|
+ }
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.GBTGfdTrip == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 3;
|
|
|
- *(reason + 0) = 6;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '3';
|
|
|
+ *(reason + 5) = '6';
|
|
|
result = YES;
|
|
|
}
|
|
|
}
|
|
|
- else if (_chargingData[gunIndex]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[gunIndex]->Type == _Type_CCS)
|
|
|
{
|
|
|
- if (ShmStatusCodeData->FaultCode.FaultEvents.bits.CcsOutputRelayDrivingFault == YES)
|
|
|
+ if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.CCSRelayDrivingFault == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 1;
|
|
|
- *(reason + 2) = 0;
|
|
|
- *(reason + 1) = 1;
|
|
|
- *(reason + 0) = 4;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '1';
|
|
|
+ *(reason + 3) = '0';
|
|
|
+ *(reason + 4) = '1';
|
|
|
+ *(reason + 5) = '4';
|
|
|
result = YES;
|
|
|
}
|
|
|
- else if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CcsOutputUVPFail == YES)
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.CCSUvpFail == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 8;
|
|
|
- *(reason + 0) = 8;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '8';
|
|
|
+ *(reason + 5) = '8';
|
|
|
result = YES;
|
|
|
}
|
|
|
- else if (ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CcsGfdTrip == YES)
|
|
|
+ else if (ShmDcCommonData->ConnectErrList[gunIndex].GunBits.CCSGfdTrip == YES)
|
|
|
{
|
|
|
|
|
|
- *(reason + 5) = 0;
|
|
|
- *(reason + 4) = 1;
|
|
|
- *(reason + 3) = 2;
|
|
|
- *(reason + 2) = 2;
|
|
|
- *(reason + 1) = 3;
|
|
|
- *(reason + 0) = 5;
|
|
|
+ *(reason + 0) = '0';
|
|
|
+ *(reason + 1) = '1';
|
|
|
+ *(reason + 2) = '2';
|
|
|
+ *(reason + 3) = '2';
|
|
|
+ *(reason + 4) = '3';
|
|
|
+ *(reason + 5) = '5';
|
|
|
result = YES;
|
|
|
}
|
|
|
}
|
|
@@ -3477,7 +3515,7 @@ void SendCommunicationOnly(byte index)
|
|
|
byte targetID = _chargingData[index]->Evboard_id;
|
|
|
|
|
|
if (gun_count == 1 &&
|
|
|
- _chargingData[index]->Type == _Type_CCS_2 &&
|
|
|
+ _chargingData[index]->Type == _Type_CCS &&
|
|
|
ShmDcCommonData->CcsVersion == _CCS_VERSION_CHECK_TAG_V015S0)
|
|
|
{
|
|
|
targetID += 1;
|
|
@@ -3495,7 +3533,7 @@ void SendStopOnly(byte index)
|
|
|
byte targetID = _chargingData[index]->Evboard_id;
|
|
|
|
|
|
if (gun_count == 1 &&
|
|
|
- _chargingData[index]->Type == _Type_CCS_2 &&
|
|
|
+ _chargingData[index]->Type == _Type_CCS &&
|
|
|
ShmDcCommonData->CcsVersion == _CCS_VERSION_CHECK_TAG_V015S0)
|
|
|
{
|
|
|
targetID += 1;
|
|
@@ -3528,6 +3566,7 @@ void FormatVoltageAndCurrent()
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
+
|
|
|
isLowCur = 0x02;
|
|
|
}
|
|
|
}
|
|
@@ -3536,63 +3575,83 @@ void FormatVoltageAndCurrent()
|
|
|
{
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo)
|
|
|
{
|
|
|
- maxChargingVol[_index] = chademoVol;
|
|
|
+ if (ShmDcCommonData->chargerType == CHARGER_TYPE_STANDARD)
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = Chademo_Standard;
|
|
|
+ else
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = Chademo_Simple;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
- maxChargingVol[_index] = ccsVol;
|
|
|
+ if (ShmDcCommonData->chargerType == CHARGER_TYPE_STANDARD)
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = CCS_Standard;
|
|
|
+ else
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = CCS_Simple;
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB)
|
|
|
{
|
|
|
- maxChargingVol[_index] = gbVol;
|
|
|
+ if (ShmDcCommonData->chargerType == CHARGER_TYPE_STANDARD)
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = GB_Standard;
|
|
|
+ else
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage = GB_Simple;
|
|
|
}
|
|
|
|
|
|
if (isLowCur == 0x00)
|
|
|
{
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 600;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 600;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 600;
|
|
|
+ if (_chargingData[_index]->ModelType == 'M' ||
|
|
|
+ _chargingData[_index]->ModelType == 'N')
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 800;
|
|
|
+ else
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 600;
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 800;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 800;
|
|
|
}
|
|
|
}
|
|
|
else if (isLowCur == 0x01)
|
|
|
{
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 1200;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 1200;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 1200;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 1200;
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 1200;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 1200;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 1200;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 1200;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 2000;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 2000;
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB)
|
|
|
{
|
|
|
- maxChargingCur[_index] = 2500;
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent = 2500;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if (ShmDcCommonData->chargerType == CHARGER_TYPE_SIMPLE &&
|
|
|
+ strcmp(EvsePower, "18") == EQUAL)
|
|
|
+ {
|
|
|
+
|
|
|
+ ShmDcCommonData->minOutputCur = 50;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
@@ -3601,11 +3660,13 @@ void CalOutputPowerAndEnergy(int _index)
|
|
|
if(ShmSysConfigAndInfo->SysConfig.ModelName[3] == 'M' ||
|
|
|
ShmSysConfigAndInfo->SysConfig.ModelName[3] == 'L')
|
|
|
{
|
|
|
+
|
|
|
|
|
|
float totalChargingValue = ShmCsuMeterData->_meter[_index]._curTotalCharging / 100;
|
|
|
|
|
|
if (totalChargingValue > _chargingData[_index]->PresentChargedEnergy)
|
|
|
{
|
|
|
+ ShmDcCommonData->energy_time_period[_index][ShmDcCommonData->_hour_index] += totalChargingValue - _chargingData[_index]->PresentChargedEnergy;
|
|
|
_chargingData[_index]->PowerConsumption += totalChargingValue - _chargingData[_index]->PresentChargedEnergy;
|
|
|
}
|
|
|
|
|
@@ -3616,6 +3677,35 @@ void CalOutputPowerAndEnergy(int _index)
|
|
|
_chargingData[_index]->ChargingFee = totalChargingValue * ShmSysConfigAndInfo->SysConfig.BillingData.Cur_fee;
|
|
|
}
|
|
|
}
|
|
|
+ else if (ShmSysConfigAndInfo->SysConfig.ModelName[3] == 'P')
|
|
|
+ {
|
|
|
+
|
|
|
+ if (ShmCsuMeterData->_meter[_index].curMeterValue == 0)
|
|
|
+ ShmCsuMeterData->_meter[_index].curMeterValue = ShmSysConfigAndInfo->SysInfo.DcMeterInfo[_index].totlizeImportEnergy;
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.DcMeterInfo[_index].totlizeImportEnergy > ShmCsuMeterData->_meter[_index].curMeterValue)
|
|
|
+ {
|
|
|
+ ShmCsuMeterData->_meter[_index]._curTotalCharging += ShmSysConfigAndInfo->SysInfo.DcMeterInfo[_index].totlizeImportEnergy - ShmCsuMeterData->_meter[_index].curMeterValue;
|
|
|
+ float totalChargingValue = ShmCsuMeterData->_meter[_index]._curTotalCharging / 100;
|
|
|
+
|
|
|
+ if (totalChargingValue > _chargingData[_index]->PresentChargedEnergy)
|
|
|
+ {
|
|
|
+ ShmDcCommonData->energy_time_period[_index][ShmDcCommonData->_hour_index] += totalChargingValue - _chargingData[_index]->PresentChargedEnergy;
|
|
|
+ _chargingData[_index]->PowerConsumption += totalChargingValue - _chargingData[_index]->PresentChargedEnergy;
|
|
|
+ }
|
|
|
+
|
|
|
+ _chargingData[_index]->PresentChargedEnergy = totalChargingValue;
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysConfig.BillingData.isBilling)
|
|
|
+ {
|
|
|
+ _chargingData[_index]->ChargingFee = totalChargingValue * ShmSysConfigAndInfo->SysConfig.BillingData.Cur_fee;
|
|
|
+ }
|
|
|
+
|
|
|
+ ShmCsuMeterData->_meter[_index].curMeterValue = ShmSysConfigAndInfo->SysInfo.DcMeterInfo[_index].totlizeImportEnergy;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
if (chargingTime[_index] == 0 ||
|
|
@@ -3632,6 +3722,7 @@ void CalOutputPowerAndEnergy(int _index)
|
|
|
float changingPow = (_chargingData[_index]->PresentChargingPower) * passTime / 3600;
|
|
|
if (ShmSysConfigAndInfo->SysConfig.BillingData.isBilling)
|
|
|
{
|
|
|
+ ShmDcCommonData->energy_time_period[_index][ShmDcCommonData->_hour_index] += changingPow;
|
|
|
_chargingData[_index]->ChargingFee += changingPow * ShmSysConfigAndInfo->SysConfig.BillingData.Cur_fee;
|
|
|
}
|
|
|
|
|
@@ -3673,21 +3764,28 @@ int main(int argc, char *argv[])
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo)
|
|
|
{
|
|
|
PRINTF_FUNC("Conn %d (Chademo), MaxVol = %f, MaxCur = %f \n",
|
|
|
- _index, maxChargingVol[_index], maxChargingCur[_index]);
|
|
|
+ _index,
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage,
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent);
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
PRINTF_FUNC("Conn %d (CCS), MaxVol = %f, MaxCur = %f \n",
|
|
|
- _index, maxChargingVol[_index], maxChargingCur[_index]);
|
|
|
+ _index,
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage,
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent);
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB)
|
|
|
{
|
|
|
PRINTF_FUNC("Conn %d (GBT), MaxVol = %f, MaxCur = %f \n",
|
|
|
- _index, maxChargingVol[_index], maxChargingCur[_index]);
|
|
|
+ _index,
|
|
|
+ _chargingData[_index]->ConnectorMaxVoltage,
|
|
|
+ _chargingData[_index]->ConnectorMaxCurrent);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
unsigned long _timeBuf = 0;
|
|
|
+
|
|
|
while(CanFd)
|
|
|
{
|
|
|
for(byte _index = 0; _index < gun_count; _index++)
|
|
@@ -3695,7 +3793,7 @@ int main(int argc, char *argv[])
|
|
|
byte targetID = _chargingData[_index]->Evboard_id;
|
|
|
|
|
|
if (gun_count == 1 &&
|
|
|
- _chargingData[_index]->Type == _Type_CCS_2 &&
|
|
|
+ _chargingData[_index]->Type == _Type_CCS &&
|
|
|
ShmDcCommonData->CcsVersion == _CCS_VERSION_CHECK_TAG_V015S0)
|
|
|
{
|
|
|
targetID += 1;
|
|
@@ -3707,25 +3805,34 @@ int main(int argc, char *argv[])
|
|
|
if (_chargingData[_index]->Type == _Type_Chademo &&
|
|
|
ShmCHAdeMOData->evse[_chargingData[_index]->type_index].SelfTest_Comp != PASS)
|
|
|
{
|
|
|
- SyncRtcInfo(_index, _chargingData[_index]->Evboard_id, (int)rtc);
|
|
|
+ if (rtcChkCount == 0)
|
|
|
+ SyncRtcInfo(_index, _chargingData[_index]->Evboard_id, (int)rtc);
|
|
|
GetFirmwareVersion(_index, _chargingData[_index]->Evboard_id);
|
|
|
}
|
|
|
else if (_chargingData[_index]->Type == _Type_GB &&
|
|
|
ShmGBTData->evse[_chargingData[_index]->type_index].SelfTest_Comp != PASS)
|
|
|
{
|
|
|
- SyncRtcInfo(_index, _chargingData[_index]->Evboard_id, (int)rtc);
|
|
|
+ if (rtcChkCount == 0)
|
|
|
+ SyncRtcInfo(_index, _chargingData[_index]->Evboard_id, (int)rtc);
|
|
|
GetFirmwareVersion(_index, _chargingData[_index]->Evboard_id);
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
if (ShmCcsData->CommProtocol == _CCS_COMM_V2GMessage_DIN70121 &&
|
|
|
ShmCcsData->V2GMessage_DIN70121[_chargingData[_index]->type_index].SelfTest_Comp != PASS)
|
|
|
{
|
|
|
- SyncRtcInfo(_index, targetID, (int)rtc);
|
|
|
+ if (rtcChkCount == 0)
|
|
|
+ SyncRtcInfo(_index, targetID, (int)rtc);
|
|
|
GetFirmwareVersion(_index, targetID);
|
|
|
+ SetConnectInfo(ShmDcCommonData->CcsTypeSaved[_index], targetID);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (rtcChkCount >= 2)
|
|
|
+ rtcChkCount = 0;
|
|
|
+ else
|
|
|
+ rtcChkCount++;
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -3744,7 +3851,7 @@ int main(int argc, char *argv[])
|
|
|
else
|
|
|
isOTP = false;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
if (ShmDcCommonData->ConnectErrList[_index].GunBits.CCSConnectOTP)
|
|
|
isOTP = true;
|
|
@@ -3818,7 +3925,7 @@ int main(int argc, char *argv[])
|
|
|
if (ShmDcCommonData->ConnectErrList[_index].GunBits.GBTConnectOTP == NO)
|
|
|
_chargingData[_index]->StopChargeFlag = NO;
|
|
|
}
|
|
|
- else if (_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ else if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
ClearAbnormalStatus_CCS(_index);
|
|
|
|
|
@@ -3898,7 +4005,7 @@ int main(int argc, char *argv[])
|
|
|
break;
|
|
|
case S_PREPARING_FOR_EV:
|
|
|
{
|
|
|
- if (ShmDcCommonData->startTransationFlag[_index] == START_TRANSATION_STATUS_WAIT)
|
|
|
+ if (ShmDcCommonData->startTransactionFlag[_index] == START_TRANSATION_STATUS_WAIT)
|
|
|
continue;
|
|
|
|
|
|
|
|
@@ -3937,6 +4044,9 @@ int main(int argc, char *argv[])
|
|
|
maxVol,
|
|
|
targetID);
|
|
|
|
|
|
+ if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
+ GetEvccIdReq(_index, _chargingData[_index]->Evboard_id);
|
|
|
+
|
|
|
|
|
|
GetEvBatteryInfo(_index, targetID);
|
|
|
}
|
|
@@ -3958,6 +4068,9 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
if (priorityLow % 5 == 1)
|
|
|
{
|
|
|
+ if (_chargingData[_index]->Type == _Type_CCS)
|
|
|
+ GetEvccIdReq(_index, _chargingData[_index]->Evboard_id);
|
|
|
+
|
|
|
|
|
|
GetEvBatteryInfo(_index, targetID);
|
|
|
|
|
@@ -4077,11 +4190,8 @@ int main(int argc, char *argv[])
|
|
|
SetPresentChargingOutputCap(_chargingData[0], _chargingData[1]);
|
|
|
}
|
|
|
|
|
|
- if(_chargingData[_index]->GroundFaultStatus == GFD_FAIL)
|
|
|
- {
|
|
|
- SetIsolationStatus(_index, _chargingData[_index]->GroundFaultStatus, targetID);
|
|
|
- }
|
|
|
- else if(_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ if(_chargingData[_index]->GroundFaultStatus == GFD_FAIL ||
|
|
|
+ _chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
SetIsolationStatus(_index, _chargingData[_index]->GroundFaultStatus, targetID);
|
|
|
}
|
|
@@ -4089,7 +4199,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
if (priorityLow == 1)
|
|
|
{
|
|
|
- if(_chargingData[_index]->Type == _Type_CCS_2 &&
|
|
|
+ if(_chargingData[_index]->Type == _Type_CCS &&
|
|
|
_chargingData[_index]->PrechargeStatus == PRECHARGE_READY)
|
|
|
{
|
|
|
SetEvsePrechargeInfo(_index, PRECHARGE_CHARELAY_PASS, targetID);
|
|
@@ -4103,6 +4213,11 @@ int main(int argc, char *argv[])
|
|
|
case S_ALARM:
|
|
|
case S_TERMINATING:
|
|
|
{
|
|
|
+
|
|
|
+ _chargingData[_index]->PresentChargingPower = ((float)((_chargingData[_index]->PresentChargingVoltage) * (_chargingData[_index]->PresentChargingCurrent)) / 1000);
|
|
|
+
|
|
|
+ CalOutputPowerAndEnergy(_index);
|
|
|
+
|
|
|
|
|
|
if (gun_count == 1)
|
|
|
{
|
|
@@ -4123,21 +4238,29 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
if (SendErrorCount[_index] < 3 &&
|
|
|
(_chargingData[_index]->GunLocked == START ||
|
|
|
- _chargingData[_index]->Type == _Type_CCS_2))
|
|
|
+ _chargingData[_index]->Type == _Type_CCS))
|
|
|
{
|
|
|
byte normalStop = 0x01;
|
|
|
- byte stopReason[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
|
+ byte stopReason[7] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
|
|
|
|
|
if (GetStopChargingReasonByEvse(_index, stopReason))
|
|
|
{
|
|
|
normalStop = 0x02;
|
|
|
}
|
|
|
|
|
|
+ if (SendErrorCount[_index] == 0)
|
|
|
+ {
|
|
|
+ if (normalStop == 0x01)
|
|
|
+ PRINTF_FUNC("EVSE : Normal Stop (%d). \n", _index);
|
|
|
+ else
|
|
|
+ PRINTF_FUNC("EVSE : EMC Stop : (%d) - (%s) \n", _index, stopReason);
|
|
|
+ }
|
|
|
+
|
|
|
EvseStopChargingEvent(normalStop, stopReason, targetID);
|
|
|
SendErrorCount[_index] += 1;
|
|
|
}
|
|
|
|
|
|
- if(_chargingData[_index]->Type == _Type_CCS_2)
|
|
|
+ if(_chargingData[_index]->Type == _Type_CCS)
|
|
|
{
|
|
|
SetIsolationStatus(_index, _chargingData[_index]->GroundFaultStatus, targetID);
|
|
|
}
|