Engine idle, Generating 시퀀스 수정

This commit is contained in:
2026-04-15 09:40:00 +09:00
parent ac74d913e9
commit cb90da835b
8 changed files with 303 additions and 377 deletions

41
State.c
View File

@@ -48,6 +48,7 @@ static void CKeyCheck(Uint32 ulChangeKey, Uint32 ulKeyRead);
static void CMoveFocusLine(Uint16 maxLines, Uint16 direction);
static void CChangePasswordDigit(Uint16 direction);
static inline void CCalcAdcSum(CAdcCalcValue *AdcBuff);
static inline Uint16 CIsBitSet(Uint32 value, Uint16 bitNumber);
/* ========================================================================= */
/* 5. Global Variables & Structure Initialization (전역 변수 및 구조체 초기화) */
@@ -168,6 +169,11 @@ void CDisplayAlarmPopup(void)
// WarningValue는 경고가 사라질수 있기 때문에 랫치 하지 않음
Uint32 WarningValue = (((Uint32)Rx210.GcuWarning & (Uint32)MASK_LOW_NIBBLE) | (((Uint32)Rx310.EcuWarning & 0xFDU) << 4U));
Uint16 i;
Uint16 UpdatePage = 0U; // 0: 유지, 1: Fault 이동, 2: Warning 이동
Uint64 TargetFault = 0U; // 검색할 대상 변수 (Fault)
Uint32 TargetWarning = 0U; // 검색할 대상 변수 (Warning)
// 0 → 1로 바뀐 비트만 추출
Uint64 NewFault = FaultValue & (~PrevFaultValue);
Uint32 NewWarning = WarningValue & (~PrevWarningValue);
@@ -176,11 +182,6 @@ void CDisplayAlarmPopup(void)
PrevFaultValue = FaultValue;
PrevWarningValue = WarningValue;
Uint16 i;
Uint16 UpdatePage = 0U; // 0: 유지, 1: Fault 이동, 2: Warning 이동
Uint64 TargetFault = 0U; // 검색할 대상 변수 (Fault)
Uint32 TargetWarning = 0U; // 검색할 대상 변수 (Warning)
if (NewFault > 0ULL)
{
TargetFault = NewFault; // 새로 뜬 Fault만 검색 대상
@@ -274,11 +275,10 @@ void CAlarmProcedure(void)
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_GLOW_PLUG_OC, CAlarmCheck(IDX_FAULT_DCU_GLOW_PLUG_OC, Adc_GlowPlug_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_GLOW_PLUG_OC].uiCheckTime, ALARM_OVER_CHECK));
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_SOLENOID_OC, CAlarmCheck(IDX_FAULT_DCU_SOLENOID_OC, Adc_Solenoid_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_SOLENOID_OC].uiCheckTime, ALARM_OVER_CHECK));
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FUEL_PUMP_OC, CAlarmCheck(IDX_FAULT_DCU_FUEL_PUMP_OC, Adc_FuelPump_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_FUEL_PUMP_OC].uiCheckTime, ALARM_OVER_CHECK));
#if 0 // IDLE_SEQ_MOD
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OC, CAlarmCheck(IDX_FAULT_DCU_COOLANT_PUMP_OC, Adc_CoolantPump_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_COOLANT_PUMP_OC].uiCheckTime, ALARM_OVER_CHECK));
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN1_OC, CAlarmCheck(IDX_FAULT_DCU_FAN1_OC, Adc_Fan1_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_FAN1_OC].uiCheckTime, ALARM_OVER_CHECK));
CUpdateFault(&ulDcuTotalAlarm, (Uint16)IDX_FAULT_DCU_FAN2_OC, CAlarmCheck(IDX_FAULT_DCU_FAN2_OC, Adc_Fan2_I.fLpfValue, AlarmOperValue[(Uint16)IDX_FAULT_DCU_FAN2_OC].uiCheckTime, ALARM_OVER_CHECK));
#endif
/* 개별 전압 알람 체크 */
/* Engine Heater */
if (ENGINE_HEATER_OUT() == 1U)
@@ -381,7 +381,11 @@ void CAlarmProcedure(void)
if (GeneralOperValue.uiAlarmReset == 1U)
{
CInitAlarmOperValue();
ulDcuTotalAlarm = 0UL; /* 전체 비트 클리어 */
/* 전체 비트 클리어 */
ulDcuTotalAlarm = 0UL;
ulGcuTotalAlarm = 0UL;
ulEcuTotalAlarm = 0UL;
if (CSoftWaitCountProcedure(SOFTTIMER_WAIT_ALARM_RESET, TIME_1SEC) == (Uint16)TIME_OVER)
{
@@ -927,7 +931,7 @@ static void CProcessArrowUpFocusChange(void)
}
else
{
CMoveFocusLine(3U, DIR_UP);
CMoveFocusLine(2U, DIR_UP);
}
}
}
@@ -999,13 +1003,13 @@ static void CProcessArrowDownFocusChange(void)
{
if (OledOperValue.uiPageNum == (Uint16)IDX_OLED_PAGE_MAINTENANCE)
{
if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_3)
if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_2)
{
OledOperValue.uiFocusLine = (Uint16)IDX_OLED_LINE_FOCUS_3;
OledOperValue.uiFocusLine = (Uint16)IDX_OLED_LINE_FOCUS_2;
}
else
{
CMoveFocusLine(3U, DIR_DOWN);
CMoveFocusLine(2U, DIR_DOWN);
}
}
}
@@ -1158,16 +1162,12 @@ static void CProcessEnterPassword(void)
static void CProcessEnterMaintenance(void)
{
if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_1)
{
GeneralOperValue.Maintenance.ManualCranking = (GeneralOperValue.Maintenance.ManualCranking == 1U) ? 0U : 1U;
}
else if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_2)
{
GeneralOperValue.Maintenance.LampTest = (GeneralOperValue.Maintenance.LampTest == 1U) ? 0U : 1U;
}
else
{
if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_3)
if (OledOperValue.uiFocusLine == (Uint16)IDX_OLED_LINE_FOCUS_2)
{
GeneralOperValue.Maintenance.KeyTest = (GeneralOperValue.Maintenance.KeyTest == 1U) ? 0U : 1U;
OledOperValue.uiPageNum = (Uint16)IDX_OLED_PAGE_KEY_TEST;
@@ -1294,3 +1294,10 @@ static void CKeyBattleModeProcess(void)
{
KeyOperValue.KeyList.BattleMode = KeyOperValue.KeyList.BattleMode ^ 1U;
}
static inline Uint16 CIsBitSet(Uint32 value, Uint16 bitNumber)
{
Uint32 ulMask = 1UL << (Uint32)bitNumber;
return (((value & ulMask) != 0UL) ? 1U : 0U);
}