#include /*標準輸入輸出定義*/ #include /*標準函數庫定義*/ #include #include #include "../Config.h" #include "../Log/log.h" #include "../Define/define.h" #include "../ShareMemory/shmMem.h" #include "../SelectGun/SelectGun.h" #include "main.h" #include "../timeout.h" struct SysInfoData *pSysInfo = NULL; struct ChargingInfoData *pDcChargingInfo = NULL; struct SysConfigData *pSysConfig = NULL; //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ void ChangeLCM(uint8_t page) { pSysInfo->SystemPage = page; } // *********************************** // Enter LCM Page // *********************************** void CheckLeftButton() { pSysInfo->CurGunSelected = LEFT_GUN_NUM; struct ChargingInfoData *pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected); if(pSysInfo->SystemPage == _PAGE_SELECT_GUN) { pSysInfo->SystemPage = _PAGE_BILL; return; } if(pDcChargingInfo->SystemStatus == S_IDLE) { pSysInfo->SystemPage = _PAGE_SELECT_GUN; } } void CheckRightButton() { pSysInfo->CurGunSelected = RIGHT_GUN_NUM; struct ChargingInfoData *pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected); if(pSysInfo->SystemPage == _PAGE_SELECT_GUN) { pSysInfo->SystemPage = _PAGE_BILL; return; } if(pDcChargingInfo->SystemStatus == S_IDLE) { pSysInfo->SystemPage = _PAGE_SELECT_GUN; } } void CheckPrimaryWarm(void) { uint8_t i = 0; uint8_t Rtn = 0; struct WARNING_CODE_INFO *pSysWarning = (struct WARNING_CODE_INFO *)GetShmSysWarningInfo(); struct PrimaryMcuData *ShmPrimaryMcuData = (struct PrimaryMcuData *)GetShmPrimaryMcuData(); struct AlarmCodeData *pAlarmCode = (struct AlarmCodeData *)GetShmAlarmCodeData(); DcCommonInfo *ShmDcCommonData = (DcCommonInfo *)GetShmDcCommonData(); if (pSysWarning->WarningCount > 0) { Rtn = 0; for (i = 0; i < pSysWarning->WarningCount; i++) { if (memcmp(&pSysWarning->WarningCode[i][0], "042251", 6) == 0) { EmcOccureByString("042251"); ShmDcCommonData->PowerAlarmState.StatusBit.EmergencyStop = YES; Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042252", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.DoorOpen = YES; EmcOccureByString("042252"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042327", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.DcInputOVP = YES; EmcOccureByString("042327"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042328", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.DcInputUVP = YES; EmcOccureByString("042328"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042200", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.SystemL1InputOVP = YES; EmcOccureByString("042200"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042201", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.SystemL2InputOVP = YES; EmcOccureByString("042201"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042202", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.SystemL3InputOVP = YES; EmcOccureByString("042202"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "042267", 6) == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.PsuFailure = YES; EmcOccureByString("042267"); Rtn = 1; } else if (memcmp(&pSysWarning->WarningCode[i][0], "012304", 6) == 0) { EmcOccureByString("012304"); Rtn = 1; } } if (Rtn == 0) { ShmDcCommonData->PowerAlarmState.StatusBit.EmergencyStop = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DoorOpen = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DcInputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DcInputUVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL1InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL2InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL3InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.PsuFailure = NO; ReleaseEmsOccureByString(0, "042251"); ReleaseEmsOccureByString(0, "042252"); ReleaseEmsOccureByString(0, "042200"); ReleaseEmsOccureByString(0, "042327"); ReleaseEmsOccureByString(0, "042328"); ReleaseEmsOccureByString(0, "042201"); ReleaseEmsOccureByString(0, "042202"); ReleaseEmsOccureByString(0, "042267"); ReleaseEmsOccureByString(0, "012304"); } } else { ShmDcCommonData->PowerAlarmState.StatusBit.EmergencyStop = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DoorOpen = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DcInputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.DcInputUVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL1InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL2InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.SystemL3InputOVP = NO; ShmDcCommonData->PowerAlarmState.StatusBit.PsuFailure = NO; ReleaseEmsOccureByString(0, "042251"); ReleaseEmsOccureByString(0, "042252"); ReleaseEmsOccureByString(0, "042200"); ReleaseEmsOccureByString(0, "042327"); ReleaseEmsOccureByString(0, "042328"); ReleaseEmsOccureByString(0, "042201"); ReleaseEmsOccureByString(0, "042202"); ReleaseEmsOccureByString(0, "042267"); ReleaseEmsOccureByString(0, "012304"); } if (ShmPrimaryMcuData->InputDet.bits.EmergencyButton == ABNORMAL) { pAlarmCode->AlarmEvents.bits.EmergencyStopTrip = YES; EmcOccureByString("012251"); } else { ReleaseEmsOccureByString(0, "012251"); } if (ShmPrimaryMcuData->InputDet.bits.AcMainBreakerDetec == ABNORMAL) { pAlarmCode->AlarmEvents.bits.MainPowerBreakerTrip = YES; EmcOccureByString("012238"); } else { ReleaseEmsOccureByString(0, "012238"); } if (ShmPrimaryMcuData->InputDet.bits.SpdDetec == ABNORMAL) { pAlarmCode->AlarmEvents.bits.SpdTrip = YES; } else { pAlarmCode->AlarmEvents.bits.SpdTrip = NO; } if (ShmPrimaryMcuData->InputDet.bits.DoorOpen == ABNORMAL) { pAlarmCode->AlarmEvents.bits.DoorOpen = YES; EmcOccureByString("012252"); } else { ReleaseEmsOccureByString(0, "012252"); } } void ChkPrimaryStatus(void) { static bool leftBtnPush = false; static bool rightBtnPush = false; pSysInfo = (struct SysInfoData *)GetShmSysInfoData(); struct PrimaryMcuData *ShmPrimaryMcuData = (struct PrimaryMcuData *)GetShmPrimaryMcuData(); struct ChargingInfoData *pDcChargingInfo = (struct ChargingInfoData *)GetDcChargingInfoData(pSysInfo->CurGunSelected); pSysConfig = (struct SysConfigData *)GetShmSysConfigData(); // Check Primary Board status CheckPrimaryWarm(); if ((pDcChargingInfo->SystemStatus == S_IDLE || pDcChargingInfo->SystemStatus == S_RESERVATION) && pSysConfig->OfflinePolicy == _OFFLINE_POLICY_NO_CHARGING) { log_info("Offline policy no charge"); return;; } // Show Version if (ShmPrimaryMcuData->InputDet.bits.Button1 == BTN_PRESS && ShmPrimaryMcuData->InputDet.bits.Button2 == BTN_PRESS ) pSysConfig->ShowInformation = YES; else pSysConfig->ShowInformation = NO; if (pSysConfig->ShowInformation) return; return; // Press Left Button if (ShmPrimaryMcuData->InputDet.bits.Button1 == BTN_PRESS && !leftBtnPush ) { if (pSysInfo->SystemPage >= _PAGE_ADD_FRIEND && pSysInfo->SystemPage <= _PAGE_PLUGIN) { log_info("Authorize Process can't select gun"); return; } leftBtnPush = true; CheckLeftButton(); log_info("left btn down...............................%x %x %x", pSysInfo->CurGunSelected,pDcChargingInfo->SystemStatus,pSysInfo->SystemPage); } else if (ShmPrimaryMcuData->InputDet.bits.Button1 == BTN_RELEASE && leftBtnPush) { leftBtnPush = false; } // Press Right Button if (ShmPrimaryMcuData->InputDet.bits.Button2 == BTN_PRESS && !rightBtnPush ) { rightBtnPush = true; CheckRightButton(); log_info("right btn down...............................%x %x %x", pSysInfo->CurGunSelected,pDcChargingInfo->SystemStatus, pSysInfo->SystemPage); } else if (ShmPrimaryMcuData->InputDet.bits.Button2 == BTN_RELEASE && rightBtnPush) { rightBtnPush = false; } }