#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_ */