Files
K2_DCU/.staticdata/.previous/20260113_090354/K2DCU/fs/04be57c6b3426465d39a97a8ea69ad75
2026-04-14 00:56:31 +09:00

181 lines
4.9 KiB
Plaintext

#ifndef SOURCE_STATE_H_
#define SOURCE_STATE_H_
#define ALARM_UNDER_CHECK (0U)
#define ALARM_OVER_CHECK (1U)
#define PI2 (6.283185f)
#define ADC_FREQ (10000.0f) // 10kHz = 0.0001sec
#define ADC_LPF_COFF_TEMP (0.2f)
#define ADC_LPF_GAIN_TEMP (0.00012566f) //(PI2 * ADC_LPF_COFF_TEMP * (1.0f / ADC_FREQ))
#define ADC_LPF_COFF (30.0f)
#define ADC_LPF_GAIN (0.01884955f) //(PI2 * ADC_LPF_COFF * (1.0f / ADC_FREQ))
#define LONG_KEY_TIME (1000UL)
#define KEY_POWER_MASK (0x00000001UL)
#define COMM_TIME_OUT_COUNT (30U)
enum
{
IDX_ADC_ENGINE_HEATER_I = 0U, // 0
IDX_ADC_GLOW_PLUG_I, // 1
IDX_ADC_SOLENOID_I, // 2
IDX_ADC_FUEL_PUMP_I, // 3
IDX_ADC_COOLANT_PUMP_I, // 4
IDX_ADC_FAN1_I, // 5
IDX_ADC_FAN2_I, // 6
IDX_ADC_MAX
};
typedef enum
{
IDX_FAULT_CAR_COMM = 0U, // 0
IDX_FAULT_GCU_COMM, // 1
IDX_FAULT_ECU_COMM, // 2
IDX_FAULT_RPM_ERR, // 3
IDX_FAULT_ENGINE_HEAT_OC, // 4
IDX_FAULT_GLOW_PLUG_OC, // 5
IDX_FAULT_SOLENOID_OC, // 6
IDX_FAULT_FUEL_PUMP_OC, // 7
IDX_FAULT_COOLANT_PUMP_OC, // 8
IDX_FAULT_FAN1_OC, // 9
IDX_FAULT_FAN2_OC, // 10
IDX_FAULT_ENGINE_HEAT_LINE_OPEN, // 11
IDX_FAULT_GLOW_PLUG_LINE_OPEN, // 12
IDX_FAULT_SOLENOID_LINE_OPEN, // 13
IDX_FAULT_FUEL_PUMP_LINE_OPEN, // 14
IDX_FAULT_COOLANT_PUMP_LINE_OPEN, // 15
IDX_FAULT_FAN1_LINE_OPEN, // 16
IDX_FAULT_FAN2_LINE_OPEN, // 17
IDX_FAULT_MAX
} ALARM_TYPE;
typedef struct ClassAdcOperValue
{
Uint16 uiAdcOffsetIndex;
Uint16 uiOffsetAdjustStart;
} CAdcOperValue;
typedef struct ClassAdcCalcValue
{
float32 fOffset;
float32 fLpfValue;
float32 fSampledValue;
float32 fGain;
float32 fSampledSum;
float32 fTempAdcOffset;
int16 iAdcValue;
Uint16 uiSamplingCount;
} CAdcCalcValue;
typedef union ClassFaultBitValue
{
Uint32 ulTotal;
struct
{
Uint16 CarCommTimeout : 1;
Uint16 GcuCommTimeout : 1;
Uint16 EcuCommTimeOut : 1;
Uint16 RpmError : 1;
Uint16 EngineHeatOverCurrent : 1;
Uint16 GlowPlugOverCurrent : 1;
Uint16 SolenoidOverCurrent : 1;
Uint16 FuelPumpOverCurrent : 1;
Uint16 CoolantPumpOverCurrent : 1;
Uint16 Fan1OverCurrent : 1;
Uint16 Fan2OverCurrent : 1;
Uint16 EngineHeatOpen : 1;
Uint16 GlowPlugOpen : 1;
Uint16 SolenoidOpen : 1;
Uint16 FuelPumpOpen : 1;
Uint16 CoolantPumpOpen : 1;
Uint16 Fan1Open : 1;
Uint16 Fan2Open : 1;
Uint16 rsvd_padding1 : 6;
Uint16 rsvd_padding2 : 8;
} bit;
} CFaultBitValue;
typedef struct ClassWarningOperValue
{
float32 fCheckLimit; // 경고 한계 값
Uint16 uiWarning; // 0: 정상, 1: 경고 발생 중
Uint16 uiDetectCount; // 경고 검출 카운터
Uint16 uiReleaseCount; // 경고 해제 카운터
Uint16 uiCheckTime;
} CWarningOperValue;
typedef struct ClassAlarmOperValue
{
float32 fCheckLimit;
float32 fFaultValue;
Uint16 uiCheck;
Uint16 uiCheckCount;
Uint16 uiCheckTime;
} CAlarmOperValue;
typedef enum
{
IDX_KEY_MAIN_POWER = 0U,
IDX_KEY_ARR_UP,
IDX_KEY_ARR_DOWN,
IDX_KEY_ENTER,
IDX_KEY_MENU,
IDX_KEY_ENG_START_STOP,
IDX_KEY_EMERGENCY,
IDX_KEY_MAX
} EKeyIndex;
typedef struct ClassKeyHandler
{
EKeyIndex eKey;
void (*pAction) (void);
} CKeyHandler;
typedef union ClassKeyList
{
Uint16 uiTotal;
struct
{
Uint16 MainPower : 1;
Uint16 ArrowUp : 1;
Uint16 ArrowDown : 1;
Uint16 Enter : 1;
Uint16 Menu : 1;
Uint16 EngineStartStop : 1;
Uint16 Emergency : 1;
} bit;
} CKeyList;
typedef struct ClassKeyOperValue
{
Uint16 uiKeyWaitCount;
Uint16 uiPreviousKey;
Uint16 uiKeyWait;
CKeyList KeyList;
} CKeyOperValue;
interrupt void CAdcInterrupt(void);
void CAlarmProcedure(void);
void CInitAdc(void);
void CKeyCheckProcedure(void);
void CKeyWaitCount(void);
void CDisplayAlarmPopup(void);
extern CAdcCalcValue Adc_EngineHeater_I;
extern CAdcCalcValue Adc_GlowPlug_I;
extern CAdcCalcValue Adc_Solenoid_I;
extern CAdcCalcValue Adc_FuelPump_I;
extern CAdcCalcValue Adc_CoolantPump_I;
extern CAdcCalcValue Adc_Fan1_I;
extern CAdcCalcValue Adc_Fan2_I;
extern CAdcOperValue AdcOperValue;
extern CFaultBitValue FaultBitValue;
extern CKeyOperValue KeyOperValue;
#endif /* SOURCE_STATE_H_ */