|
@@ -32,6 +32,7 @@
|
|
|
#define TIMEOUT_SPEC_POWERSAVING_LCD 120000
|
|
|
#define TIMEOUT_SPEC_POWERSAVING_RFID 120000
|
|
|
#define TIMEOUT_SPEC_POWERSAVING_METER 120000
|
|
|
+#define TIMEOUT_SPEC_POWERSAVING_LED_STATUS 120000
|
|
|
|
|
|
//==========================
|
|
|
// GPIO constant define
|
|
@@ -3175,6 +3176,24 @@ void setLedMotion(unsigned char gun_index,unsigned char led_mode)
|
|
|
case LED_ACTION_INTERNET_DISCONNECT:
|
|
|
ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_INTERNET_DISCONNECT;
|
|
|
break;
|
|
|
+ case LED_ACTION_RESTORE_SETTING:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_RESTORE_SETTING;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_IDLE_BACKEND_CONNECTED:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_IDLE_BACKEND_CONNECTED;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_IDLE_BACKEND_CONNECTED_SLEEP:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_IDLE_BACKEND_CONNECTED_SLEEP;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_IDLE_BACKEND_DISCONNECTED:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_IDLE_BACKEND_DISCONNECTED;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_IDLE_BACKEND_DISCONNECTED_SLEEP:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_IDLE_BACKEND_DISCONNECTED_SLEEP;
|
|
|
+ break;
|
|
|
+ case LED_ACTION_RESERVATION_MODE:
|
|
|
+ ShmCharger->gun_info[gun_index].primaryMcuLed.mode = LED_ACTION_RESERVATION_MODE;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4658,6 +4677,7 @@ int main(void)
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LCD]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_RFID]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_METER]);
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -4671,6 +4691,7 @@ int main(void)
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LCD]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_RFID]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_METER]);
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -4712,7 +4733,7 @@ int main(void)
|
|
|
|
|
|
if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_METER]) > TIMEOUT_SPEC_POWERSAVING_METER)
|
|
|
{
|
|
|
- if(ShmCharger->gun_info[gun_index].isMeterOn )
|
|
|
+ if(ShmCharger->gun_info[gun_index].isMeterOn)
|
|
|
{
|
|
|
DEBUG_INFO("Meter into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_METER]));
|
|
|
ShmCharger->gun_info[gun_index].isMeterOn = OFF;
|
|
@@ -4720,12 +4741,29 @@ int main(void)
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- if(!ShmCharger->gun_info[gun_index].isMeterOn )
|
|
|
+ if(!ShmCharger->gun_info[gun_index].isMeterOn)
|
|
|
{
|
|
|
DEBUG_INFO("Meter exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_METER]));
|
|
|
ShmCharger->gun_info[gun_index].isMeterOn = ON;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ if(DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]) > TIMEOUT_SPEC_POWERSAVING_LED_STATUS)
|
|
|
+ {
|
|
|
+ if(ShmCharger->gun_info[gun_index].isSleepOn == OFF)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("LED status into power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]));
|
|
|
+ ShmCharger->gun_info[gun_index].isSleepOn = ON;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(ShmCharger->gun_info[gun_index].isSleepOn == ON)
|
|
|
+ {
|
|
|
+ DEBUG_INFO("LED status exit power saving...%d\n", DiffTimebWithNow(startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]));
|
|
|
+ ShmCharger->gun_info[gun_index].isSleepOn = OFF;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
//==========================================
|
|
|
// Synchronize current rating value from MCU
|
|
@@ -4830,6 +4868,7 @@ int main(void)
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_RFID]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_METER]);
|
|
|
ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_STATE_B]);
|
|
|
+ ftime(&startTime[gun_index][TMR_IDX_POWERSAVING_LED_STATUS]);
|
|
|
}
|
|
|
|
|
|
if(ShmCharger->gun_info[gun_index].mcuFlag.isReadFwVerPass &&
|
|
@@ -4892,6 +4931,9 @@ int main(void)
|
|
|
|
|
|
// Default LCM brightness to 100
|
|
|
ShmCharger->isLcdOn = ON;
|
|
|
+
|
|
|
+ // Defaule led status to not sleep mode
|
|
|
+ ShmCharger->gun_info[gun_index].isSleepOn = OFF;
|
|
|
|
|
|
// If Web Server OPCC URL is empty kill Module_OcppBackend
|
|
|
if((strcmp((char *)&ShmSysConfigAndInfo->SysConfig.OcppServerURL,"") == 0) || ShmSysConfigAndInfo->SysConfig.isEnableLocalPowerSharging)
|
|
@@ -4951,6 +4993,22 @@ int main(void)
|
|
|
if(ShmCharger->isCcsEnable)system("pkill Module_CCS");
|
|
|
DB_Check_Record_Buf(localDb, gun_index);
|
|
|
}
|
|
|
+
|
|
|
+ // LED status in Idle mode
|
|
|
+ if(ShmSysConfigAndInfo->SysInfo.OcppConnStatus == ON)
|
|
|
+ {
|
|
|
+ if(ShmCharger->gun_info[gun_index].isSleepOn == OFF)
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE_BACKEND_CONNECTED);
|
|
|
+ else
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE_BACKEND_CONNECTED_SLEEP);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if(ShmCharger->gun_info[gun_index].isSleepOn == OFF)
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE_BACKEND_DISCONNECTED);
|
|
|
+ else
|
|
|
+ setLedMotion(gun_index,LED_ACTION_IDLE_BACKEND_DISCONNECTED_SLEEP);
|
|
|
+ }
|
|
|
|
|
|
if(((ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_B)) ||
|
|
|
((ShmSysConfigAndInfo->SysConfig.AuthorisationMode == AUTH_MODE_DISABLE) && (ShmSysConfigAndInfo->SysInfo.AcChargingData[gun_index].PilotState == CP_STATE_C)) ||
|
|
@@ -5953,7 +6011,7 @@ int main(void)
|
|
|
case SYS_MODE_RESERVATION:
|
|
|
if(isModeChange(gun_index))
|
|
|
{}
|
|
|
- setLedMotion(gun_index,LED_ACTION_MAINTAIN);
|
|
|
+ setLedMotion(gun_index,LED_ACTION_RESERVATION_MODE);
|
|
|
|
|
|
if(isReservationExpired(gun_index))
|
|
|
{
|