|
@@ -40,11 +40,15 @@
|
|
|
#define ENV_TEMP_MIN 45
|
|
|
#define ENV_TEMP_MAX 50
|
|
|
#define DEFAULT_AC_INDEX 2
|
|
|
+#define EQUAL 0
|
|
|
+#define COLOR_MAX_LV 100
|
|
|
+#define COLOR_MIN_LV 0
|
|
|
|
|
|
struct SysConfigAndInfo *ShmSysConfigAndInfo;
|
|
|
struct StatusCodeData *ShmStatusCodeData;
|
|
|
struct FanModuleData *ShmFanModuleData;
|
|
|
struct RelayModuleData *ShmRelayModuleData;
|
|
|
+struct LedModuleData *ShmLedModuleData;
|
|
|
struct CHAdeMOData *ShmCHAdeMOData;
|
|
|
struct CcsData *ShmCcsData;
|
|
|
struct PsuData *ShmPsuData;
|
|
@@ -102,6 +106,7 @@ bool isStopChargingCount = false;
|
|
|
struct timeval _close_ac_contactor;
|
|
|
|
|
|
struct timeval _priority_time;
|
|
|
+struct timeval _led_priority_time;
|
|
|
|
|
|
struct timeval _ac_charging_comp;
|
|
|
struct timeval _ac_preparing;
|
|
@@ -123,6 +128,8 @@ Gpio_out gpio_out;
|
|
|
Relay outputRelay;
|
|
|
Relay regRelay;
|
|
|
Rtc rtc;
|
|
|
+Led_Color cur_led_color;
|
|
|
+Led_Color led_color;
|
|
|
|
|
|
Ac_Status acStatus;
|
|
|
Ac_Led_Status ledStatus;
|
|
@@ -266,6 +273,23 @@ void GetFwAndHwVersion_Relay()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void GetFwAndHwVersion_Led()
|
|
|
+{
|
|
|
+ if (Query_FW_Ver(Uart5Fd, Addr.Led, &ver) == PASS)
|
|
|
+ {
|
|
|
+ // LedModuleData
|
|
|
+ strcpy((char *) ShmLedModuleData->version, ver.Version_FW);
|
|
|
+ // SystemInfo
|
|
|
+ strcpy((char *) ShmSysConfigAndInfo->SysInfo.LedModuleFwRev, ver.Version_FW);
|
|
|
+ PRINTF_FUNC("GetFwAndHwVersion_Led s1 = %s \n", ver.Version_FW);
|
|
|
+ ShmLedModuleData->SelfTest_Comp = YES;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //PRINTF_FUNC("GetFwAndHwVersion_Led fail \n");
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void GetFwVersion_AC()
|
|
|
{
|
|
|
if (Query_FW_Ver(Uart5Fd, Addr.AcPlug, &ver) == PASS)
|
|
@@ -1039,6 +1063,105 @@ void CheckAlarmOccur()
|
|
|
ac_chargingInfo[0]->IsErrorOccur = isErr;
|
|
|
}
|
|
|
|
|
|
+bool IsNoneMatchLedColor()
|
|
|
+{
|
|
|
+ bool result = false;
|
|
|
+
|
|
|
+ if (cur_led_color.Connect_1_Red != led_color.Connect_1_Red ||
|
|
|
+ cur_led_color.Connect_1_Green != led_color.Connect_1_Green ||
|
|
|
+ cur_led_color.Connect_1_Blue != led_color.Connect_1_Blue ||
|
|
|
+ cur_led_color.Connect_2_Red != led_color.Connect_2_Red ||
|
|
|
+ cur_led_color.Connect_2_Green != led_color.Connect_2_Green ||
|
|
|
+ cur_led_color.Connect_2_Blue != led_color.Connect_2_Blue)
|
|
|
+ {
|
|
|
+ result = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+void SetLedColor(struct ChargingInfoData *chargingData_1, struct ChargingInfoData *chargingData_2)
|
|
|
+{
|
|
|
+ if (ShmSysConfigAndInfo->SysInfo.IsAlternatvieConf == YES)
|
|
|
+ {
|
|
|
+ if ((chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION) &&
|
|
|
+ (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Green = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ if (chargingData_1->SystemStatus == S_BOOTING || chargingData_1->SystemStatus == S_IDLE || chargingData_1->SystemStatus == S_RESERVATION)
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_1->SystemStatus >= S_AUTHORIZING && chargingData_1->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_1->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_1->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+
|
|
|
+ // --------------------------------------------------------------------------
|
|
|
+ if (chargingData_2->SystemStatus == S_BOOTING || chargingData_2->SystemStatus == S_IDLE || chargingData_2->SystemStatus == S_RESERVATION)
|
|
|
+ {
|
|
|
+ led_color.Connect_2_Green = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ else if ((chargingData_2->SystemStatus >= S_AUTHORIZING && chargingData_2->SystemStatus <= S_COMPLETE) ||
|
|
|
+ (chargingData_2->SystemStatus >= S_CCS_PRECHARGE_ST0 && chargingData_2->SystemStatus <= S_CCS_PRECHARGE_ST1))
|
|
|
+ {
|
|
|
+ led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ShmSysConfigAndInfo->SysWarningInfo.Level == 2)
|
|
|
+ {
|
|
|
+ led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_1_Red = COLOR_MAX_LV;
|
|
|
+ led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+ led_color.Connect_2_Red = COLOR_MAX_LV;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (IsNoneMatchLedColor())
|
|
|
+ {
|
|
|
+ if (Config_Led_Color(Uart5Fd, Addr.Led, &led_color) == PASS)
|
|
|
+ {
|
|
|
+ cur_led_color.Connect_1_Red = led_color.Connect_1_Red;
|
|
|
+ cur_led_color.Connect_1_Green = led_color.Connect_1_Green;
|
|
|
+ cur_led_color.Connect_1_Blue = led_color.Connect_1_Blue;
|
|
|
+ cur_led_color.Connect_2_Red = led_color.Connect_2_Red;
|
|
|
+ cur_led_color.Connect_2_Green = led_color.Connect_2_Green;
|
|
|
+ cur_led_color.Connect_2_Blue = led_color.Connect_2_Blue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
//==========================================
|
|
|
// Init all share memory
|
|
|
//==========================================
|
|
@@ -1094,6 +1217,7 @@ int InitShareMemory()
|
|
|
result = FAIL;
|
|
|
}
|
|
|
memset(ShmFanModuleData,0,sizeof(struct FanModuleData));
|
|
|
+
|
|
|
//creat ShmRelayModuleData
|
|
|
if ((MeterSMId = shmget(ShmRelayBdKey, sizeof(struct RelayModuleData), 0777)) < 0)
|
|
|
{
|
|
@@ -1110,6 +1234,23 @@ int InitShareMemory()
|
|
|
result = FAIL;
|
|
|
}
|
|
|
|
|
|
+ //creat ShmLedModuleData
|
|
|
+ if ((MeterSMId = shmget(ShmLedBdKey, sizeof(struct LedModuleData), 0777)) < 0)
|
|
|
+ {
|
|
|
+ #ifdef SystemLogMessage
|
|
|
+ DEBUG_ERROR("shmget ShmLedModuleData NG\n");
|
|
|
+ #endif
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ else if ((ShmLedModuleData = shmat(MeterSMId, NULL, 0)) == (void *) -1)
|
|
|
+ {
|
|
|
+ #ifdef SystemLogMessage
|
|
|
+ DEBUG_ERROR("shmat ShmLedModuleData NG\n");
|
|
|
+ #endif
|
|
|
+ result = FAIL;
|
|
|
+ }
|
|
|
+ memset(ShmLedModuleData,0,sizeof(struct LedModuleData));
|
|
|
+
|
|
|
//creat ShmPsuData
|
|
|
if ((MeterSMId = shmget(ShmPsuKey, sizeof(struct PsuData), 0777)) < 0)
|
|
|
{
|
|
@@ -1789,6 +1930,13 @@ int main(void)
|
|
|
if(Config_Relay_Output(Uart5Fd, Addr.Relay, &outputRelay) != PASS)
|
|
|
PRINTF_FUNC("Config_Relay_Output fail \n");
|
|
|
|
|
|
+ cur_led_color.Connect_1_Red = COLOR_MIN_LV;
|
|
|
+ cur_led_color.Connect_1_Green = COLOR_MIN_LV;
|
|
|
+ cur_led_color.Connect_1_Blue = COLOR_MIN_LV;
|
|
|
+ cur_led_color.Connect_2_Red = COLOR_MIN_LV;
|
|
|
+ cur_led_color.Connect_2_Green = COLOR_MIN_LV;
|
|
|
+ cur_led_color.Connect_2_Blue = COLOR_MIN_LV;
|
|
|
+
|
|
|
for(;;)
|
|
|
{
|
|
|
bool isCharging = false;
|
|
@@ -1809,6 +1957,13 @@ int main(void)
|
|
|
gettimeofday(&_priority_time, NULL);
|
|
|
}
|
|
|
|
|
|
+ if (ShmLedModuleData->SelfTest_Comp == NO)
|
|
|
+ {
|
|
|
+ GetFwAndHwVersion_Led();
|
|
|
+ sleep(1);
|
|
|
+ gettimeofday(&_led_priority_time, NULL);
|
|
|
+ }
|
|
|
+
|
|
|
AcChargeTypeProcess();
|
|
|
|
|
|
if (ShmRelayModuleData->SelfTest_Comp == YES)
|
|
@@ -1975,6 +2130,23 @@ int main(void)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (ShmLedModuleData->SelfTest_Comp == YES)
|
|
|
+ {
|
|
|
+ if (GetTimeoutValue(_led_priority_time) / 1000 >= 1000)
|
|
|
+ {
|
|
|
+ if(gunCount == 1)
|
|
|
+ {
|
|
|
+ SetLedColor(_chargingData[0], _chargingData[0]);
|
|
|
+ }
|
|
|
+ else if (gunCount == 2)
|
|
|
+ {
|
|
|
+ SetLedColor(_chargingData[0], _chargingData[1]);
|
|
|
+ }
|
|
|
+
|
|
|
+ gettimeofday(&_led_priority_time, NULL);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
usleep(10000);
|
|
|
}
|
|
|
|