#include #include #include #include #include "../Config.h" #include "../Log/log.h" #include "../ShareMemory/shmMem.h" #include "../Define/define.h" //------------------------------------------------------------------------------ void ClearAbnormalStatus_Chademo(uint8_t gun_index) { bool isCleanCheck = false; char code[7]; struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData(); struct InfoCodeData *pInfoCode = (struct InfoCodeData *)GetShmInfoCodeData(); struct ChargingInfoData *pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(gun_index); if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "", 6) == EQUAL) { return; } if (true) { if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023700", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoEvCommFail == YES) { memcpy(code, "023700", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023704", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryMalfun == YES) { memcpy(code, "023704", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023705", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoNoPermission == YES) { memcpy(code, "023705", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023706", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryIncompatibility == YES) { memcpy(code, "023706", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023707", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryOVP == YES) { memcpy(code, "023707", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023708", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryUVP == YES) { memcpy(code, "023708", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023709", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryOTP == YES) { memcpy(code, "023709", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023710", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryCurrentDiff == YES) { memcpy(code, "023710", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023711", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryVoltageDiff == YES) { memcpy(code, "023711", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023712", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoShiftPosition == YES) { memcpy(code, "023712", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023713", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBatteryOtherFault == YES) { memcpy(code, "023713", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023714", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoChargingSystemError == YES) { memcpy(code, "023714", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023715", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoEvNormalStop == YES) { memcpy(code, "023715", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023716", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoTempSensorBroken == YES) { memcpy(code, "023716", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023717", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoConnectorLockFail == YES) { memcpy(code, "023717", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023718", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoD1OnNoReceive == YES) { memcpy(code, "023718", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023719", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsKtoJTimeout == YES) { memcpy(code, "023719", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023720", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsChargeAllowTimeout == YES) { memcpy(code, "023720", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023721", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoWaitGfdTimeout == YES) { memcpy(code, "023721", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023722", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsEvRelayTimeout == YES) { memcpy(code, "023722", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023723", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsReqCurrentTimeout == YES) { memcpy(code, "023723", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023724", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsKtoJOffTimeout == YES) { memcpy(code, "023724", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023725", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsEvRelayOffTimeout == YES) { memcpy(code, "023725", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023726", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoAdcMoreThan10V == YES) { memcpy(code, "023726", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023727", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoAdcMoreThan20V == YES) { memcpy(code, "023727", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023728", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoBmsChargeBeforeStop == YES) { memcpy(code, "023728", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023729", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoChargerGetNormalStop == YES) { memcpy(code, "023729", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023730", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoChargerGetEmergencyStop == YES) { memcpy(code, "023730", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023731", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoIsolationResultFail == YES) { memcpy(code, "023731", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023732", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoMissLinkWithMotherBoard == YES) { memcpy(code, "023732", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023733", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoOutputVolMoreThanLimit == YES) { memcpy(code, "023733", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023734", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoReqCurrentMoreThanLimit == YES) { memcpy(code, "023734", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023735", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoReCapBmsEqrCurrentExceed == YES) { memcpy(code, "023735", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } else if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "023736", 6) == EQUAL && pInfoCode->InfoEvents.bits.ChademoChargeRemainCountDown == YES) { memcpy(code, "023736", 6); memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); isCleanCheck = true; } } if (isCleanCheck) { for (uint8_t index = 0; index < pSysConfig->TotalConnectorCount; index++) { pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(index); if (index != gun_index || pSysConfig->TotalConnectorCount == 1) { log_info("CHA clean error : index = %d, EvConnAlarmCode = %s, code = %s \n", index, pDcChargingInfo->EvConnAlarmCode, code); if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, code, 6) != EQUAL) { if (strncmp(code, "023700", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoEvCommFail = NO; } if (strncmp(code, "023704", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryMalfun = NO; } if (strncmp(code, "023705", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoNoPermission = NO; } if (strncmp(code, "023706", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryIncompatibility = NO; } if (strncmp(code, "023707", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryOVP = NO; } if (strncmp(code, "023708", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryUVP = NO; } if (strncmp(code, "023709", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryOTP = NO; } if (strncmp(code, "023710", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryCurrentDiff = NO; } if (strncmp(code, "023711", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryVoltageDiff = NO; } if (strncmp(code, "023712", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoShiftPosition = NO; } if (strncmp(code, "023713", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBatteryOtherFault = NO; } if (strncmp(code, "023714", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoChargingSystemError = NO; } if (strncmp(code, "023715", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoEvNormalStop = NO; } if (strncmp(code, "023716", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoTempSensorBroken = NO; } if (strncmp(code, "023717", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoConnectorLockFail = NO; } if (strncmp(code, "023718", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoD1OnNoReceive = NO; } if (strncmp(code, "023719", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsKtoJTimeout = NO; } if (strncmp(code, "023720", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsChargeAllowTimeout = NO; } if (strncmp(code, "023721", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoWaitGfdTimeout = NO; } if (strncmp(code, "023722", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsEvRelayTimeout = NO; } if (strncmp(code, "023723", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsReqCurrentTimeout = NO; } if (strncmp(code, "023724", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsKtoJOffTimeout = NO; } if (strncmp(code, "023725", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsEvRelayOffTimeout = NO; } if (strncmp(code, "023726", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoAdcMoreThan10V = NO; } if (strncmp(code, "023727", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoAdcMoreThan20V = NO; } if (strncmp(code, "023728", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoBmsChargeBeforeStop = NO; } if (strncmp(code, "023729", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoChargerGetNormalStop = NO; } if (strncmp(code, "023730", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoChargerGetEmergencyStop = NO; } if (strncmp(code, "023731", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoIsolationResultFail = NO; } if (strncmp(code, "023732", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoMissLinkWithMotherBoard = NO; } if (strncmp(code, "023733", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoOutputVolMoreThanLimit = NO; } if (strncmp(code, "023734", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoReqCurrentMoreThanLimit = NO; } if (strncmp(code, "023735", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoReCapBmsEqrCurrentExceed = NO; } if (strncmp(code, "023736", 6) == EQUAL) { pInfoCode->InfoEvents.bits.ChademoChargeRemainCountDown = NO; } } } } } pDcChargingInfo = (struct ChargingInfoData*)GetDcChargingInfoData(gun_index); if (strncmp((char *)pDcChargingInfo->EvConnAlarmCode, "", 6) != EQUAL) { memcpy(pDcChargingInfo->EvConnAlarmCode, "", 6); } }