#include "Telltales_Lib.h"
#include "Telltales_user.h"
#include "Line_In\Line_In_user.h"
#include "Application.h"
#include "CAN_APP\CAN_CH0_CAN_Communication_Matrix.h"
#include "Components.h"
#include "LED_Driver_Interface.h"


static Tellib_uint16_t LED_High_Beam_Judgement(void);
static void            LED_High_Beam_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_FAULT_ELECTROSPRAY_Judgement(void);
static void            LED_FAULT_ELECTROSPRAY_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_ABS_Judgement(void);
static void            LED_ABS_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Oil_Pressure_Judgement(void);
static void            LED_Oil_Pressure_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Fuel_Judgement(void);
static void            LED_Fuel_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Coolant_Judgement(void);
static void            LED_Coolant_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Bluetooth_Judgement(void);
static void            LED_Bluetooth_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_TCS_Judgement(void);
static void            LED_TCS_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Auto_Start_Judgement(void);
static void            LED_Auto_Start_Execution(Tellib_uint16_t led_status);
//static Tellib_uint16_t LED_Keys_Judgement(void);
//static void            LED_Keys_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Maintain_Judgement(void);
static void            LED_Maintain_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Low_Batt_Judgement(void);
static void            LED_Low_Batt_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Lateral_Strut_Judgement(void);
static void            LED_Lateral_Strut_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Tire_Pressure_Judgement(void);
static void            LED_Tire_Pressure_Execution(Tellib_uint16_t led_status);
//static Tellib_uint16_t LED_Navigato_Judgement(void);
//static void            LED_Navigato_Execution(Tellib_uint16_t led_status);


//Led_HighBeam_Count HighBeam_Timer;
Tellib_uint16_t LED_Battery_Voltage = 0;
Tellib_uint16_t Battery_Voltage_valid = 0;
const LED_Attribute_st LED_Attribute [ LED_Max ] = {
    /*  指示灯索引                  是否自检          外部信号自检           工作电源状态       自检开始时间    自检持续时间       指示灯点亮条件                           指示灯执行函数               */
    
    {em_LED_High_Beam,              SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_High_Beam_Judgement,            LED_High_Beam_Execution},
    {em_LED_FAULT_ELECTROSPRAY,     SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_FAULT_ELECTROSPRAY_Judgement,   LED_FAULT_ELECTROSPRAY_Execution},
    {em_LED_ABS,                    SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_ABS_Judgement,                  LED_ABS_Execution},
    {em_LED_Oil_Pressure,           SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Oil_Pressure_Judgement,         LED_Oil_Pressure_Execution},
    {em_LED_Fuel,                   SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Fuel_Judgement,                 LED_Fuel_Execution},
    {em_LED_Coolant,                SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Coolant_Judgement,              LED_Coolant_Execution},
    {em_LED_Bluetooth,              SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Bluetooth_Judgement,            LED_Bluetooth_Execution},
    {em_LED_TCS,                    SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_TCS_Judgement,                  LED_TCS_Execution},
    {em_LED_Auto_Start_Stop,        SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Auto_Start_Judgement,           LED_Auto_Start_Execution},
    //{em_LED_Keys,                   SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Keys_Judgement,                 LED_Keys_Execution},
    {em_LED_Maintain,               SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Maintain_Judgement,             LED_Maintain_Execution},
    {em_LED_Low_Batt_Vol,           SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Low_Batt_Judgement,             LED_Low_Batt_Execution},
    {em_LED_Lateral_Strut,          SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Lateral_Strut_Judgement,        LED_Lateral_Strut_Execution},
#if(IC_Current == TY200_080000b_ty)
    {em_LED_Tire_Pressure_Alarm,    SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Tire_Pressure_Judgement,        LED_Tire_Pressure_Execution},
#endif
    //{em_LED_Navigator,              SelfCheck,     NoExterNalCheck,        LED_IGN_ON,             0u,         3000ul,         LED_Navigato_Judgement,             LED_Navigato_Execution},

};


Tellib_uint8_t Tel_Mem [ Tel_MEM_Block_Size * LED_Max + Tel_MEM_Block_Addition ];

void Telltales_Init(void)
{
    TelExtPara m_ExtPara;
    m_ExtPara.TotalLength           = LED_Max;
    m_ExtPara.LED_PowerOFF_TimerCbk = Common_GetIgnOffTime;
    m_ExtPara.LED_PowerON_TimerCbk  = Common_GetIgnOnTime;
    m_ExtPara.LED_PowerCbk          = Common_Get_IG_Sts;    
    Telltales_KL30_Wakeup_Init(Tel_Mem, LED_Attribute, &m_ExtPara);
    
}
void Telltales_UserInit(void)
{
    //HighBeam_Timer.LED_Turnon       = 0;
    //HighBeam_Timer.LED_Turnoff      = 0;
    LED_Battery_Voltage             = 0;
    Battery_Voltage_valid           = 0;
}
  
static Tellib_uint16_t LED_High_Beam_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Line_In_Get_Status(LINE_IN_HighBeam))
    {
        LED_STATE = 1;
        //if(HighBeam_Timer.LED_Turnon < 10 )
        //{
        //    HighBeam_Timer.LED_Turnon ++;
        //}
        //else 
        //{
        //    HighBeam_Timer.LED_Turnon = 10;
        //    HighBeam_Timer.LED_Turnoff = 0;
        //}
        
    }
    else
    {
        LED_STATE = 0;
        //if(HighBeam_Timer.LED_Turnoff < 10 )
        //{
        //    HighBeam_Timer.LED_Turnoff ++;
        //}
        //else 
        //{
        //    HighBeam_Timer.LED_Turnoff = 10;
        //    HighBeam_Timer.LED_Turnon = 0;
        //}
        
    }
    return LED_STATE;
}
static void LED_High_Beam_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_High_Beam, LED_ON);
        SEG_SET_LED_STS(em_SEG_High_Beam, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_High_Beam, LED_OFF);
        SEG_SET_LED_STS(em_SEG_High_Beam, 0);
    }
}
static Tellib_uint16_t LED_FAULT_ELECTROSPRAY_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Line_In_Get_Status(LINE_IN_FAULT_ELECTROSPRAY))
    {
        LED_STATE = 1;
    }
    else
    {
        LED_STATE = 0;
    }
    return LED_STATE;
}
static void LED_FAULT_ELECTROSPRAY_Execution(Tellib_uint16_t led_status)
{
    if (led_status == 1u)
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_32_Fault_Diagnosis, LED_ON);
        SEG_SET_LED_STS(em_SEG_FAULT_ELECTROSPRAY, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_32_Fault_Diagnosis, LED_OFF);
        SEG_SET_LED_STS(em_SEG_FAULT_ELECTROSPRAY, 0);
    }
}
static Tellib_uint16_t LED_ABS_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x120_Msg_Count) == CAN_SIG_LOST) )
    {
        LED_STATE = 1;
    }
    else
    {
        if (Line_In_Get_Status(LINE_IN_Fault_ABS))
        {
            LED_STATE = 0;
        }
        else
        {
            LED_STATE = 1;
        }
    }
    
    return LED_STATE;
}
static void LED_ABS_Execution(Tellib_uint16_t led_status)
{
    if (led_status == 1u)
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_12_ABS_Alarm, LED_ON);
        SEG_SET_LED_STS(em_SEG_ABS, 1);
    }    
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_12_ABS_Alarm, LED_OFF);
        SEG_SET_LED_STS(em_SEG_ABS, 0);
    }
}
static Tellib_uint16_t LED_Oil_Pressure_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Line_In_Get_Status(LINE_IN_Oil_Pressure))
    {
        LED_STATE = 1;
    }
    else
    {
        LED_STATE = 0;
    }
    return LED_STATE;
}
static void LED_Oil_Pressure_Execution(Tellib_uint16_t led_status)
{
    if (led_status == 1u)
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_22_Oil_Pressure, LED_ON);
        SEG_SET_LED_STS(em_SEG_Oil_Pressure, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_22_Oil_Pressure, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Oil_Pressure, 0);
    }
}
static Tellib_uint16_t LED_Fuel_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Common_GetIgnOnTime() >= 3000)
    {
        if(Get_Fuel_Sensor_State() == FuelSensorNormal)
        {
            if(Get_CurFuelSetp() > 1)
            {
                LED_STATE = 3;//白灯
            }
            else 
            {
                LED_STATE = 2;//格小于等于1,黄灯闪
            }
        }
        else
        {
            LED_STATE = 2;//开路,黄灯闪
        }
    }
    else
    {
        LED_STATE = 1;   //黄灯常亮
    }
    return LED_STATE;
}
static void LED_Fuel_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 3u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_21_Fuel_W, LED_ON);  
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_20_Fuel_Y, LED_OFF);  
        SEG_SET_LED_STS(em_SEG_Fuel,1);      
    }
    else if ( led_status == 2u )
    {
        if (FLASH_SYNC_1Hz)
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_20_Fuel_Y, LED_ON);
            SEG_SET_LED_STS(em_SEG_Fuel,1);
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_20_Fuel_Y, LED_OFF);
            SEG_SET_LED_STS(em_SEG_Fuel,0);
        }
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_21_Fuel_W, LED_OFF);  
        
    }
    else if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_20_Fuel_Y, LED_ON);
        SEG_SET_LED_STS(em_SEG_Fuel,1);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_21_Fuel_W, LED_OFF);  
    }
    else 
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_21_Fuel_W, LED_OFF); 
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_20_Fuel_Y, LED_OFF);
        //SEG_SET_LED_STS(em_SEG_Fuel,0);
    }
}
static Tellib_uint16_t LED_Coolant_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if(ClearODO_Flag == 1)
    {
        LED_STATE = 1;
    }
    else if (GET_DataCollantTempWarnflg() == 1)
    {
        LED_STATE = 3;
    }
    else if(GET_DataCollantTempWarnflg() == 2)
    {
        LED_STATE = 2;
    }
    else
    {
        LED_STATE = 4;
    }
    return LED_STATE;
}
static void LED_Coolant_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 2u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_OFF);
        if (FLASH_SYNC_1Hz)
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_ON);
            SEG_SET_LED_STS(em_SEG_Coolant, 1);
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_OFF);
            SEG_SET_LED_STS(em_SEG_Coolant, 0);
        }
    }
    else if ( led_status == 3u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_OFF);
        if (FLASH_SYNC_1Hz)
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_ON);
            SEG_SET_LED_STS(em_SEG_Coolant, 1);
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_OFF);
            SEG_SET_LED_STS(em_SEG_Coolant, 0);
        }
    }
    else if ( led_status == 4u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_ON);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Coolant, 1);
    } 
    else if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_OFF);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_ON);
        SEG_SET_LED_STS(em_SEG_Coolant, 1);
    }  
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_13_Temp_AlarmW, LED_OFF);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_11_Temp_AlarmR, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Coolant, 0);
    }
}
static Tellib_uint16_t LED_Bluetooth_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (BlueTooth.BLE_St)
    {
        LED_STATE = 1u;
    }
    else
    {
        LED_STATE = 0u;
    }
    return LED_STATE;
}
static void LED_Bluetooth_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_23_Bluetooth, LED_ON);
        SEG_SET_LED_STS(em_SEG_Bluetooth, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_23_Bluetooth, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Bluetooth, 0);
    }

}
static Tellib_uint16_t LED_TCS_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Get_Dis_Tcs_Val() == 1)
    {
        if((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x120_Msg_Count) == CAN_SIG_LOST) )
        {
            LED_STATE = 1; 
        }
        else
        {
            
            if((Get_CAN_CH0_ID_120_Sig_TCSStatus() == 1) || (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 2) || (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 3) || (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 5))
            {
               LED_STATE = 1; 
            }
            else if (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 4)
            {
                LED_STATE = 2;  //1HZ闪烁
            }
            else if (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 6)
            {
                LED_STATE = 3;  //2HZ闪烁
            }
            else if ((Get_CAN_CH0_ID_120_Sig_TCSStatus() == 0) || (Get_CAN_CH0_ID_120_Sig_TCSStatus() == 7))
            {
                LED_STATE = 0;
            }
            
        }
    }
    else
    {
        LED_STATE = 0;
    }
    
    
    return LED_STATE;
}
static void LED_TCS_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_ON);
        SEG_SET_LED_STS(em_SEG_TCS, 1);
    }
    else if ( led_status == 2u )
    {
        if (FLASH_SYNC_1Hz)
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_ON);
            SEG_SET_LED_STS(em_SEG_TCS, 1);
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_OFF);
            SEG_SET_LED_STS(em_SEG_TCS, 0);
        }
    }
    else if ( led_status == 3u )
    {
        if (FLASH_SYNC_2Hz)
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_ON);
            SEG_SET_LED_STS(em_SEG_TCS, 1);
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_OFF);
            SEG_SET_LED_STS(em_SEG_TCS, 0);
        }
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_25_TCS_Alarm, LED_OFF);
        SEG_SET_LED_STS(em_SEG_TCS, 0);
    }
}
static Tellib_uint16_t LED_Auto_Start_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if (Line_In_Get_Status(LINE_IN_Auto_Start_Stop))
    {
        LED_STATE = 1;
    }
    else
    {
        LED_STATE = 0;
    }
    return LED_STATE;
}
static void LED_Auto_Start_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_28_Auto_Star_Stop, LED_ON);
        SEG_SET_LED_STS(em_SEG_Auto_Start_Stop, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_28_Auto_Star_Stop, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Auto_Start_Stop, 0);
    }
}
//static Tellib_uint16_t LED_Keys_Judgement(void)
//{
//    Tellib_uint16_t LED_STATE = 0u;
//    return LED_STATE;
//}
//static void LED_Keys_Execution(Tellib_uint16_t led_status)
//{
//    ;
//}
static Tellib_uint16_t LED_Maintain_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if(Get_Data_Maintenace_Interval_Processing() == 0)
    {
        LED_STATE = 1;
    }
    else
    {
        LED_STATE = 0;
    }
    return LED_STATE;
}
static void LED_Maintain_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_33_Upkeep, LED_ON);
        SEG_SET_LED_STS(em_SEG_Upkeep, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_33_Upkeep, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Upkeep, 0);
    }
}
static Tellib_uint16_t LED_Low_Batt_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    Tellib_uint16_t Battery_Voltage = 0u;
    
    Battery_Voltage = Get_CAN_CH0_ID_401_Sig_ECU_Battery_Voltage();
    if((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x401_Msg_Count) == CAN_SIG_LOST) )
    {
        LED_Battery_Voltage = 1; 
        Battery_Voltage_valid = 0;
    }
    else
    {
        if(Battery_Voltage_valid == 1)
        {
            Battery_Voltage_valid = 1;
            if (Get_Battery_Voltage() < 118)
            {
                LED_Battery_Voltage = 1; 
            }
            else if (Get_Battery_Voltage() >= 120)
            {
                LED_Battery_Voltage = 0;
            }
            else
            {
                ;
            }
        }
        else
        {
            Battery_Voltage_valid = 1;
            if (Get_Battery_Voltage() < 118)
            {
                LED_Battery_Voltage = 1; 
            }
            else
            {
                LED_Battery_Voltage = 0; 
            }
        }
        
    }
    LED_STATE = LED_Battery_Voltage;
    return LED_STATE;
}
static void LED_Low_Batt_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_31_Low_Voltage, LED_ON);
        SEG_SET_LED_STS(em_SEG_Low_Batt_Vol, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_31_Low_Voltage, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Low_Batt_Vol, 0);
    }
}
static Tellib_uint16_t LED_Lateral_Strut_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    Tellib_uint16_t SideStand = 0u;
    Tellib_uint16_t SideStand_State = 0u;
    SideStand = Get_CAN_CH0_ID_111_Sig_ISG_SideStand();
    SideStand_State = Get_CAN_CH0_ID_111_Sig_ISG_SideStand_State();
    if((CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x111_Msg_Count) == CAN_SIG_LOST) )
    {
        LED_STATE = 0; 
    }
    else
    {
        if ( SideStand_State == 1)
        {
            LED_STATE = 0;
        }
        else
        {
            if (SideStand == 1)
            {
                LED_STATE = 1;
            }
            else
            {
                LED_STATE = 0;
            }
        }
    }
    return LED_STATE;
}
static void LED_Lateral_Strut_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_Lateral_Support, LED_ON);
        SEG_SET_LED_STS(em_SEG_Lateral_Strut, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_Lateral_Support, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Lateral_Strut, 0);
    }
}
static Tellib_uint16_t LED_Tire_Pressure_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    if(ClearODO_Flag == 1)
    {
        LED_STATE = 1;
    }
    else if((Get_Front_FirstLearn_Flag() == 2) || (Get_Rear_FirstLearn_Flag() == 2))
    {
        if(Get_Led_TPMS_Waring() == 1)
        {
            LED_STATE = 1;
        }
        else
        {
            LED_STATE = 2;
        }
    }
    else
    {
        LED_STATE = 2;
    }
    
    return LED_STATE;
}
static void LED_Tire_Pressure_Execution(Tellib_uint16_t led_status)
{
    if ( led_status == 1u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_27_Tire_PressureY, LED_ON);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_26_Tire_PressureW, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Tire_Pressure_Alarm, 1);
    }
    else if ( led_status == 2u )
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_26_Tire_PressureW, LED_ON);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_27_Tire_PressureY, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Tire_Pressure_Alarm, 1);
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_26_Tire_PressureW, LED_OFF);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_27_Tire_PressureY, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Tire_Pressure_Alarm, 0);
    }

}
static Tellib_uint16_t LED_Navigato_Judgement(void)
{
    Tellib_uint16_t LED_STATE = 0u;
    return LED_STATE;
}
static void LED_Navigato_Execution(Tellib_uint16_t led_status)
{
    ;
}



void Turn_Left_Right_Lamp(void)
{
    if ( SYS_OPR_STAT_IGN_ON )
    {
        if ((Common_GetIgnOnTime() >= 3000) && (ClearODO_Flag == 0))
        {
            if (Line_In_Get_Status(LINE_IN_TurnLeft))
            {
                LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
                SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
            }
            else
            {
                LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
                SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
            }
            if (Line_In_Get_Status(LINE_IN_TurnRight))
            {
                LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
                SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
            }
            else
            {
                LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
                SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
            }
        }
        else
        {
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
            SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
            LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
            SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
        }
    }
    else
    {
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
        LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
        SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
    }
}