|
@@ -8,13 +8,14 @@
|
|
#define NO 0
|
|
#define NO 0
|
|
#define DERATING 30
|
|
#define DERATING 30
|
|
#define ELEMENT_NOT_FIND 255
|
|
#define ELEMENT_NOT_FIND 255
|
|
-#define CHK_VOL_RANGE 20
|
|
|
|
|
|
+#define CHK_VOL_RANGE 50
|
|
#define CHK_CUR_RANGE 10
|
|
#define CHK_CUR_RANGE 10
|
|
#define DERATING_RANGE 100
|
|
#define DERATING_RANGE 100
|
|
-#define ZERO_CURRENT 0
|
|
|
|
-#define ZERO_VOLTAGE 10
|
|
|
|
|
|
+#define ZERO_CURRENT 10 // 該值須保持最小為 1A
|
|
|
|
+#define ZERO_VOLTAGE 50
|
|
#define STOP_CURRENT 30
|
|
#define STOP_CURRENT 30
|
|
#define PSU_MIN_CUR 100
|
|
#define PSU_MIN_CUR 100
|
|
|
|
+#define EQUAL 0
|
|
|
|
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
@@ -523,16 +524,15 @@ void GetFanSpeedCallback(byte address, unsigned int fanSpeed)
|
|
void GetIavailableCallback(byte address, unsigned short Iavail, unsigned short Vext)
|
|
void GetIavailableCallback(byte address, unsigned short Iavail, unsigned short Vext)
|
|
{
|
|
{
|
|
if (IsOverModuleCount(address))
|
|
if (IsOverModuleCount(address))
|
|
- return;
|
|
|
|
|
|
+ return;
|
|
|
|
|
|
|
|
+ //PRINTF_FUNC("address = %d, Iavail = %d \n", address, Iavail);
|
|
byte group = FindTargetGroup(address);
|
|
byte group = FindTargetGroup(address);
|
|
|
|
|
|
if (group == 1)
|
|
if (group == 1)
|
|
address -= ShmPsuData->PsuGroup[group - 1].GroupPresentPsuQuantity;
|
|
address -= ShmPsuData->PsuGroup[group - 1].GroupPresentPsuQuantity;
|
|
|
|
|
|
//PRINTF_FUNC("group = %d, address_%d, Iavail = %d \n", group, address, Iavail);
|
|
//PRINTF_FUNC("group = %d, address_%d, Iavail = %d \n", group, address, Iavail);
|
|
-
|
|
|
|
- // PSU Group - 電壓
|
|
|
|
ShmPsuData->PsuGroup[group].PsuModule[address].IAvailableCurrent = Iavail;
|
|
ShmPsuData->PsuGroup[group].PsuModule[address].IAvailableCurrent = Iavail;
|
|
|
|
|
|
bool isPass = true;
|
|
bool isPass = true;
|
|
@@ -574,6 +574,7 @@ void GetIavailableCallback(byte address, unsigned short Iavail, unsigned short V
|
|
|
|
|
|
if (isPass)
|
|
if (isPass)
|
|
{
|
|
{
|
|
|
|
+ //PRINTF_FUNC("rating pass value = %d \n", totalCur);
|
|
chargingInfo[group]->DeratingChargingCurrent = totalCur;
|
|
chargingInfo[group]->DeratingChargingCurrent = totalCur;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -669,7 +670,7 @@ void Initialization()
|
|
{
|
|
{
|
|
if (!FindChargingInfoData(_index, &chargingInfo[0]))
|
|
if (!FindChargingInfoData(_index, &chargingInfo[0]))
|
|
{
|
|
{
|
|
- DEBUG_ERROR("EvComm (main) : FindChargingInfoData false \n");
|
|
|
|
|
|
+ DEBUG_ERROR("Module_PsuComm : FindChargingInfoData false \n");
|
|
isPass = false;
|
|
isPass = false;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
@@ -680,6 +681,62 @@ void Initialization()
|
|
ShmPsuData->GroupCount = 1;
|
|
ShmPsuData->GroupCount = 1;
|
|
else
|
|
else
|
|
ShmPsuData->GroupCount = _gunCount;
|
|
ShmPsuData->GroupCount = _gunCount;
|
|
|
|
+
|
|
|
|
+ char EvsePower[2];
|
|
|
|
+
|
|
|
|
+ EvsePower[2] = '\0';
|
|
|
|
+ char count = 0;
|
|
|
|
+ byte psuTarIndex = 0;
|
|
|
|
+ // 解析 ModelName 取得各槍各有幾個 PSU 及編號
|
|
|
|
+ if (strlen((char *) ShmSysConfigAndInfo->SysConfig.ModelName) >= 6)
|
|
|
|
+ {
|
|
|
|
+ strncpy(EvsePower, (char *)(ShmSysConfigAndInfo->SysConfig.ModelName + 4), 2);
|
|
|
|
+ if (strcmp(EvsePower, "15") == EQUAL)
|
|
|
|
+ count = 5;
|
|
|
|
+ else if (strcmp(EvsePower, "30") == EQUAL)
|
|
|
|
+ count = 1;
|
|
|
|
+ else if (strcmp(EvsePower, "60") == EQUAL)
|
|
|
|
+ count = 2;
|
|
|
|
+ else if (strcmp(EvsePower, "18") == EQUAL)
|
|
|
|
+ count = 6;
|
|
|
|
+ else if (strcmp(EvsePower, "36") == EQUAL)
|
|
|
|
+ count = 12;
|
|
|
|
+
|
|
|
|
+ if (count > 0)
|
|
|
|
+ {
|
|
|
|
+ if (ShmPsuData->GroupCount == 1)
|
|
|
|
+ conn_1_count = count;
|
|
|
|
+ else if (ShmPsuData->GroupCount == 2)
|
|
|
|
+ {
|
|
|
|
+ if(count % 2 > 0)
|
|
|
|
+ conn_1_count = (count / 2) + 1;
|
|
|
|
+ else
|
|
|
|
+ conn_1_count = (count / 2);
|
|
|
|
+
|
|
|
|
+ conn_2_count = count - conn_1_count;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(byte psuIndex = 0; psuIndex < conn_1_count; psuIndex++)
|
|
|
|
+ {
|
|
|
|
+ connector_1[psuIndex] = psuTarIndex;
|
|
|
|
+ psuTarIndex++;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(byte psuIndex = 0; psuIndex < conn_2_count; psuIndex++)
|
|
|
|
+ {
|
|
|
|
+ connector_2[psuIndex] = psuTarIndex;
|
|
|
|
+ psuTarIndex++;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(byte psuIndex = 0; psuIndex < conn_1_count; psuIndex++)
|
|
|
|
+ PRINTF_FUNC("Connector 1 - Number = %d \n", connector_1[psuIndex]);
|
|
|
|
+
|
|
|
|
+ for(byte psuIndex = 0; psuIndex < conn_2_count; psuIndex++)
|
|
|
|
+ PRINTF_FUNC("Connector 2 - Number = %d \n", connector_2[psuIndex]);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ DEBUG_ERROR("Module_PsuComm : Can't parsing model name. \n");
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
void CheckSmartChargingStep(bool isWaitingAver, bool isCharging)
|
|
void CheckSmartChargingStep(bool isWaitingAver, bool isCharging)
|
|
@@ -711,10 +768,15 @@ void CheckSmartChargingStep(bool isWaitingAver, bool isCharging)
|
|
}
|
|
}
|
|
else
|
|
else
|
|
{
|
|
{
|
|
- PRINTF_FUNC("=============Smart Charging : _REASSIGNED_COMP============= Step 15 \n");
|
|
|
|
|
|
+ PRINTF_FUNC("=============Smart Charging_1 : _REASSIGNED_COMP============= Step 15 \n");
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_COMP;
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_COMP;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ PRINTF_FUNC("=============Smart Charging_2 : _REASSIGNED_COMP============= Step 15 \n");
|
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_COMP;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -786,6 +848,7 @@ int main(void)
|
|
PRINTF_FUNC("== PSU == INITIAL_START \n");
|
|
PRINTF_FUNC("== PSU == INITIAL_START \n");
|
|
gettimeofday(&_cmdSubPriority_time, NULL);
|
|
gettimeofday(&_cmdSubPriority_time, NULL);
|
|
sleep(5);
|
|
sleep(5);
|
|
|
|
+ SwitchPower(SYSTEM_CMD, PSU_POWER_OFF);
|
|
ShmPsuData->Work_Step = GET_PSU_COUNT;
|
|
ShmPsuData->Work_Step = GET_PSU_COUNT;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
@@ -796,7 +859,8 @@ int main(void)
|
|
|
|
|
|
if (time > 2000)
|
|
if (time > 2000)
|
|
{
|
|
{
|
|
- PRINTF_FUNC("== PSU == %d \n", ShmPsuData->GroupCount);
|
|
|
|
|
|
+ PRINTF_FUNC("== PSU == indexCount = %d, moduleCount = %d, sysCount = %d\n",
|
|
|
|
+ ShmPsuData->GroupCount, moduleCount, ShmPsuData->SystemPresentPsuQuantity);
|
|
// if (ShmPsuData->GroupCount == 0)
|
|
// if (ShmPsuData->GroupCount == 0)
|
|
// ShmPsuData->GroupCount = ShmSysConfigAndInfo->SysConfig.TotalConnectorCount;
|
|
// ShmPsuData->GroupCount = ShmSysConfigAndInfo->SysConfig.TotalConnectorCount;
|
|
// 分別取各群模組數量
|
|
// 分別取各群模組數量
|
|
@@ -872,20 +936,30 @@ int main(void)
|
|
break;
|
|
break;
|
|
case BOOTING_COMPLETE:
|
|
case BOOTING_COMPLETE:
|
|
{
|
|
{
|
|
|
|
+ bool isSelfTestPass = true;
|
|
|
|
+ for (byte groupIndex = 0; groupIndex < _gunCount; groupIndex++)
|
|
|
|
+ {
|
|
|
|
+ if (chargingInfo[groupIndex]->SystemStatus == S_BOOTING)
|
|
|
|
+ {
|
|
|
|
+ isSelfTestPass = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isSelfTestPass)
|
|
|
|
+ ShmPsuData->Work_Step = _WORK_CHARGING;
|
|
sleep(1);
|
|
sleep(1);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case _WORK_CHARGING:
|
|
case _WORK_CHARGING:
|
|
{
|
|
{
|
|
int time = GetTimeoutValue(_cmdSubPriority_time) / 1000;
|
|
int time = GetTimeoutValue(_cmdSubPriority_time) / 1000;
|
|
- // sdlu - test
|
|
|
|
- int testtime = GetTimeoutValue(_test_time) / 1000;
|
|
|
|
|
|
|
|
// 低 Priority 的指令
|
|
// 低 Priority 的指令
|
|
if (time > 1500)
|
|
if (time > 1500)
|
|
{
|
|
{
|
|
isCharging = false;
|
|
isCharging = false;
|
|
isWaitingAver = false;
|
|
isWaitingAver = false;
|
|
|
|
+ isReadToCharging = false;
|
|
for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
for (byte index = 0; index < ShmPsuData->GroupCount; index++)
|
|
{
|
|
{
|
|
// Pooling Status
|
|
// Pooling Status
|
|
@@ -903,12 +977,39 @@ int main(void)
|
|
if (chargingInfo[index]->SystemStatus == S_CHARGING)
|
|
if (chargingInfo[index]->SystemStatus == S_CHARGING)
|
|
{
|
|
{
|
|
isCharging = true;
|
|
isCharging = true;
|
|
- if ((chargingInfo[index]->PresentChargingCurrent * 10) >=
|
|
|
|
- chargingInfo[index]->EvBatterytargetCurrent - CHK_CUR_RANGE)
|
|
|
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag == _REASSIGNED_PREPARE_M_TO_A)
|
|
|
|
+ {
|
|
|
|
+ if (toAverVolPoint > 0 &&
|
|
|
|
+ toAverVolPoint == chargingInfo[index]->EvBatterytargetCurrent)
|
|
|
|
+ {
|
|
|
|
+ // 欲最大充 -> 均充需要等待充電中的輸出電流拉高到目標電流
|
|
|
|
+ if ((chargingInfo[index]->PresentChargingCurrent * 10) >=
|
|
|
|
+ chargingInfo[index]->EvBatterytargetCurrent - CHK_CUR_RANGE)
|
|
|
|
+ {
|
|
|
|
+ if (toAverVolCount == 0)
|
|
|
|
+ isWaitingAver = true;
|
|
|
|
+ else
|
|
|
|
+ toAverVolCount--;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ toAverVolPoint = chargingInfo[index]->EvBatterytargetCurrent;
|
|
|
|
+ toAverVolCount = 3;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
{
|
|
{
|
|
- isWaitingAver = true;
|
|
|
|
|
|
+ toAverVolPoint = 0;
|
|
|
|
+ toAverVolCount = 3;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if ((chargingInfo[index]->SystemStatus >= S_PREPARING_FOR_EVSE && chargingInfo[index]->SystemStatus <= S_CHARGING) ||
|
|
|
|
+ (chargingInfo[index]->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingInfo[index]->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
|
+ {
|
|
|
|
+ isReadToCharging = true;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
gettimeofday(&_cmdSubPriority_time, NULL);
|
|
gettimeofday(&_cmdSubPriority_time, NULL);
|
|
@@ -1029,26 +1130,6 @@ int main(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- // 智能判斷 End -----------------------------------------------------------
|
|
|
|
- if (testtime > 500 &&
|
|
|
|
- (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag >= _REASSIGNED_GET_NEW_CAP &&
|
|
|
|
- ShmSysConfigAndInfo->SysInfo.ReAssignedFlag <= _REASSIGNED_RELAY_M_TO_A))
|
|
|
|
- {
|
|
|
|
- PRINTF_FUNC("Gun_%d, AvailableChargingCurrent = %f, AvailableChargingPower = %f \n", groupIndex,
|
|
|
|
- chargingInfo[groupIndex]->AvailableChargingCurrent,
|
|
|
|
- chargingInfo[groupIndex]->AvailableChargingPower);
|
|
|
|
-
|
|
|
|
- PRINTF_FUNC("Gun_%d, NeedVol = %f, NeedCur = %f \n", groupIndex,
|
|
|
|
- chargingInfo[groupIndex]->EvBatterytargetVoltage,
|
|
|
|
- chargingInfo[groupIndex]->EvBatterytargetCurrent);
|
|
|
|
-
|
|
|
|
- PRINTF_FUNC("Gun_%d OutputVol = %f, OutputCur = %f \n", groupIndex,
|
|
|
|
- (chargingInfo[groupIndex]->PresentChargingVoltage * 10),
|
|
|
|
- (chargingInfo[groupIndex]->PresentChargingCurrent * 10));
|
|
|
|
-
|
|
|
|
- gettimeofday(&_test_time, NULL);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
if (ShmPsuData->SystemAvailablePower > 0)
|
|
if (ShmPsuData->SystemAvailablePower > 0)
|
|
{
|
|
{
|
|
// 調整輸出電流 : 漸進調整方式
|
|
// 調整輸出電流 : 漸進調整方式
|
|
@@ -1057,7 +1138,7 @@ int main(void)
|
|
// 當前充電中的目標電壓
|
|
// 當前充電中的目標電壓
|
|
float targetVol = chargingInfo[groupIndex]->EvBatterytargetVoltage;
|
|
float targetVol = chargingInfo[groupIndex]->EvBatterytargetVoltage;
|
|
// 當前充電中的目標電流
|
|
// 當前充電中的目標電流
|
|
- float targetCur = 0;
|
|
|
|
|
|
+ //float targetCur = 0;
|
|
// 準備切出去的模塊電流
|
|
// 準備切出去的模塊電流
|
|
float deratingCur = 0;
|
|
float deratingCur = 0;
|
|
|
|
|
|
@@ -1088,10 +1169,11 @@ int main(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // ***********直接降低要移除的模塊電流即可*************
|
|
// 因為爬的速度沒有降的速度快,所以採兩倍速度爬升
|
|
// 因為爬的速度沒有降的速度快,所以採兩倍速度爬升
|
|
- targetCur = ShmPsuData->PsuGroup[groupIndex].GroupPresentOutputCurrent + (DERATING_RANGE * 2);
|
|
|
|
- if (targetCur >= chargingInfo[groupIndex]->EvBatterytargetCurrent)
|
|
|
|
- targetCur = chargingInfo[groupIndex]->EvBatterytargetCurrent;
|
|
|
|
|
|
+// targetCur = ShmPsuData->PsuGroup[groupIndex].GroupPresentOutputCurrent + (DERATING_RANGE * 2);
|
|
|
|
+// if (targetCur >= chargingInfo[groupIndex]->EvBatterytargetCurrent)
|
|
|
|
+// targetCur = chargingInfo[groupIndex]->EvBatterytargetCurrent;
|
|
|
|
|
|
if (targetVol == 0)
|
|
if (targetVol == 0)
|
|
{
|
|
{
|
|
@@ -1156,38 +1238,20 @@ int main(void)
|
|
// 閒置端與車端要求電壓接近
|
|
// 閒置端與車端要求電壓接近
|
|
PRINTF_FUNC("=============Smart Charging : _REASSIGNED_RELAY_A_TO_M============= Step 13 \n");
|
|
PRINTF_FUNC("=============Smart Charging : _REASSIGNED_RELAY_A_TO_M============= Step 13 \n");
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_RELAY_A_TO_M;
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_RELAY_A_TO_M;
|
|
- GetTimeoutValue(_averageComp_time);
|
|
|
|
|
|
+ gettimeofday(&_averageComp_time, NULL);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else if(ShmSysConfigAndInfo->SysInfo.ReAssignedFlag == _REASSIGNED_WAITING)
|
|
else if(ShmSysConfigAndInfo->SysInfo.ReAssignedFlag == _REASSIGNED_WAITING)
|
|
{
|
|
{
|
|
int avrTime = GetTimeoutValue(_averageComp_time) / 1000;
|
|
int avrTime = GetTimeoutValue(_averageComp_time) / 1000;
|
|
|
|
|
|
- if (avrTime > 3000)
|
|
|
|
|
|
+ if (avrTime > 10000)
|
|
{
|
|
{
|
|
// 閒置端與車端要求電壓接近
|
|
// 閒置端與車端要求電壓接近
|
|
- PRINTF_FUNC("=============Smart Charging : _REASSIGNED_COMP============= Step 15 \n");
|
|
|
|
|
|
+ PRINTF_FUNC("=============Smart Charging_0 : _REASSIGNED_COMP============= Step 15 \n");
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_COMP;
|
|
ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_COMP;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 智能判斷 End -----------------------------------------------------------
|
|
|
|
- if (testtime > 500 &&
|
|
|
|
- (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag >= _REASSIGNED_ADJUST_A_TO_M && ShmSysConfigAndInfo->SysInfo.ReAssignedFlag <= _REASSIGNED_WAITING))
|
|
|
|
- {
|
|
|
|
- PRINTF_FUNC("Gun_%d, AvailableChargingCurrent = %f, AvailableChargingPower = %f \n", groupIndex,
|
|
|
|
- chargingInfo[groupIndex]->AvailableChargingCurrent,
|
|
|
|
- chargingInfo[groupIndex]->AvailableChargingPower);
|
|
|
|
-
|
|
|
|
- PRINTF_FUNC("Gun_%d, NeedVol = %f, NeedCur = %f \n", groupIndex,
|
|
|
|
- chargingInfo[groupIndex]->EvBatterytargetVoltage,
|
|
|
|
- chargingInfo[groupIndex]->EvBatterytargetCurrent);
|
|
|
|
-
|
|
|
|
- PRINTF_FUNC("Gun_%d OutputVol = %f, OutputCur = %f \n", groupIndex,
|
|
|
|
- (chargingInfo[groupIndex]->PresentChargingVoltage * 10),
|
|
|
|
- (chargingInfo[groupIndex]->PresentChargingCurrent * 10));
|
|
|
|
-
|
|
|
|
- gettimeofday(&_test_time, NULL);
|
|
|
|
- }
|
|
|
|
|
|
|
|
if (chargingInfo[groupIndex]->AvailableChargingCurrent > 0)
|
|
if (chargingInfo[groupIndex]->AvailableChargingCurrent > 0)
|
|
{
|
|
{
|
|
@@ -1264,7 +1328,7 @@ int main(void)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ else if (chargingInfo[groupIndex]->SystemStatus == S_COMPLETE)
|
|
{
|
|
{
|
|
// 代表充電的槍依舊在充電,欲進入充電的槍取消充電了
|
|
// 代表充電的槍依舊在充電,欲進入充電的槍取消充電了
|
|
if (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag >= _REASSIGNED_PREPARE_M_TO_A &&
|
|
if (ShmSysConfigAndInfo->SysInfo.ReAssignedFlag >= _REASSIGNED_PREPARE_M_TO_A &&
|
|
@@ -1276,8 +1340,17 @@ int main(void)
|
|
}
|
|
}
|
|
else if (ShmSysConfigAndInfo->SysInfo.MainChargingMode == _MAIN_CHARGING_MODE_AVER)
|
|
else if (ShmSysConfigAndInfo->SysInfo.MainChargingMode == _MAIN_CHARGING_MODE_AVER)
|
|
{
|
|
{
|
|
- SwitchPower(groupIndex, PSU_POWER_OFF);
|
|
|
|
- FlashLed(groupIndex, PSU_FLASH_NORMAL);
|
|
|
|
|
|
+ if (!isReadToCharging)
|
|
|
|
+ {
|
|
|
|
+ SwitchPower(SYSTEM_CMD, PSU_POWER_OFF);
|
|
|
|
+ FlashLed(SYSTEM_CMD, PSU_FLASH_NORMAL);
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ {
|
|
|
|
+ SwitchPower(groupIndex, PSU_POWER_OFF);
|
|
|
|
+ FlashLed(groupIndex, PSU_FLASH_NORMAL);
|
|
|
|
+ }
|
|
|
|
+ ShmSysConfigAndInfo->SysInfo.ReAssignedFlag = _REASSIGNED_NONE;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|