#include "GUI_Display\GUI_Display.h"
#include "SEG_DISPLAY\SEG_DISPLAY.h"
#include "Application.h"

uint8_t SOC_1_Flag_Count = 0;
uint8_t SOC_1_Count = 0;
uint8_t SOC_2_Flag_Count = 0;
uint8_t SOC_2_Count = 0;
// void Gauge_Power_1_SOC_Display(void)//得改
// {
//    uint8_t Signal1 = Get_CAN_CH0_ID_18203220_Sig_MBMS_StatBattWorkState();
//    uint8_t powernum1 = Get_CAN_CH0_ID_18200A20_Sig_MBMS_Soc();
//    uint8_t powernum2 = Get_CAN_CH0_ID_18200A21_Sig_MBMS_Soc();
//    if(Signal1 == 0x0 || Signal1 == 0x3 || Signal1 == 0x6)
//    {
//        SOC_1_Flag_Count = 0;
//        if(powernum1 > 1)
//        {

//        }
//        else
//        {

//        }
//    }
//    else if(Signal1 == 0x1)
//    {
//        SOC_1_Flag_Count++;
//        if(SOC_1_Flag_Count == 10)
//        {
//            SOC_1_Flag_Count = 0;
//            SOC_1_Count++;
//            if(SOC_1_Count > powernum1)
//            {
//                SOC_1_Count = 0;
//            }
//        }
//    }
//    else if(Signal1 == 0x7)
//    {
//        SOC_1_Flag_Count++;
//        if(SOC_1_Flag_Count == 10)
//        {
//            SOC_1_Flag_Count = 0;
//            SOC_1_Count++;
//            if(SOC_1_Count > powernum1)
//            {
//                SOC_1_Count = 0;
//            }
//        }
//    }

// }
// void Gauge_Power_2_SOC_Display(void)
// {
//    uint8_t Signal1 = Get_CAN_CH0_ID_18203220_Sig_MBMS_StatBattWorkState();
//    uint8_t powernum = Get_CAN_CH0_ID_18200A21_Sig_MBMS_Soc();
//    if(Signal1 == 0x0 || Signal1 == 0x3 || Signal1 == 0x6)//放电
//    {
//        SOC_Flag = 0;
//        if(powernum > 1)
//        {

//        }
//        else
//        {

//        }
//    }
//    else if(Signal1 == 0x4)//充电
//    {
//        SOC_Flag = 1;
//        SOC_Flag_Count++;
//        if(SOC_Flag_Count == 10)
//        {
//            SOC_Flag_Count = 0;
//            SOC_1_Count++;
//            if(SOC_1_Count > powernum)
//            {
//                SOC_1_Count = 0;
//            }
//        }
//    }
// }
// void Gauge_VSpeed_Display(void)
// {
//     uint16_t VSpeedDisplayValue = 0;
//     if ( Common_Get_IG_Sts( ) == COMMON_POWER_ON )
//     {
//         if ( Get_VechileSpeedValid( ) == 1u )
//         {
//             VSpeedDisplayValue = Get_DispVechileSpeed( ) / 10u;
//             SEG_SET_VSpeed_NUM(1u, VSpeedDisplayValue);
//         }
//         else
//         {
//             VSpeedDisplayValue = 0u;
//             SEG_SET_VSpeed_NUM(1u, VSpeedDisplayValue);
//         }
//     }
//     else
//     {
//         VSpeedDisplayValue = 0u;
//         SEG_SET_VSpeed_NUM(0u, 0u);
//     }

// }
void Gauge_Clock_Display(void)
{
    uint8_t PageType_DIS = 0;
    // if (Common_Get_IG_Sts( ) == COMMON_POWER_ON)
    // {
    //     // PageType_DIS = Get_Current_PageType();

    //     if ( PageType_DIS == 1 )
    //     {
    //         if(FLASH_SYNC_1Hz)
    //         {
    //             SEG_SET_Clock(Get_Dis_Hour_Time(), Get_Dis_Minute_Time(), 1, 1, 1);
    //         }
    //         else
    //         {
    //             SEG_SET_Clock(Get_Dis_Hour_Time(), Get_Dis_Minute_Time(), 1, 0, 1);
    //         }

    //     }
    //     else if ( PageType_DIS == 2 )
    //     {
    //         if(FLASH_SYNC_1Hz)
    //         {
    //             SEG_SET_Clock(Get_Dis_Hour_Time(), Get_Dis_Minute_Time(), 1, 1, 1);
    //         }
    //         else
    //         {
    //             SEG_SET_Clock(Get_Dis_Hour_Time(), Get_Dis_Minute_Time(), 1, 1, 0);
    //         }
    //     }
    //     else
    //     {
    //         SEG_SET_Clock(Get_Dis_Hour_Time(), Get_Dis_Minute_Time(), FLASH_SYNC_1Hz, 1, 1);
    //     }
    // }
    // else
    // {
    //     SEG_SET_Clock(0, 0, 0, 0, 0);
    // }
}

void Gauge_Trip_Display(void)
{
    if (Common_Get_IG_Sts() == COMMON_POWER_ON)
    {
        SEG_SET_TRIP_NUM(1u, Get_Trip_Value());
    }
    else
    {
        SEG_SET_TRIP_NUM(0u, 0u);
    }
}

void Gauge_ODO_Display(void)
{
    if (Common_Get_IG_Sts() == COMMON_POWER_ON)
    {
        SEG_SET_ODO_NUM(1u, Get_ODO_Value() / 10u);
    }
    else
    {
        SEG_SET_ODO_NUM(0u, 0u);
    }
}
void Gauge_EspeedDial_Display(void)
{
    if (Common_Get_IG_Sts() == COMMON_POWER_ON)
    {
        // SEG_SET_EspeedDial(1,  Get_DispEngineSpeed()/1000, Get_DispEngineSpeed());
    }
    else
    {
        // SEG_SET_EspeedDial(0,  0,  0);
    }
}
void Gauge_Frame_Display(void)
{
    if (Common_Get_IG_Sts() == COMMON_POWER_ON)
    {
        SEG_SET_Frame(1);
    }
    else
    {
        SEG_SET_Frame(0);
    }
}

void Clear_Bu98(void)
{
    uint8_t i = 0;
    for (i = 0; i < BU98R10_DDRAM_SIZE; i++)
    {
        BU98R10Chip0DDRAM.Byte[i] = 0;
        BU98R10Chip1DDRAM.Byte[i] = 0;
    }
}

void Gauge_Service(void)
{
    uint8_t i = 0;
    Gauge_Frame_Display();
    if (0)
    {
        if (Common_Get_IG_Sts() == COMMON_POWER_ON)
        {
            Check_SEG_Display();
        }
        else
        {
            Clear_Bu98();
        }
    }
    else
    {
        if (Common_Get_IG_Sts() == COMMON_POWER_ON && ADC_Read_Signal(ADC_CH_KL30_VOLTAGE) <= 16000 && ADC_Read_Signal(ADC_CH_KL30_VOLTAGE) >= 9000)
        {
            if (Get_CAN_Power_State() != PKEY_ON )
            {
                if (Common_GetIgnOnTime() >= 3000)
                {
                    // Gauge_Power_1_SOC_Display();
                    // Gauge_Power_2_SOC_Display();
                    Checkself_Init();
                    Gauge_ODO_Display();
                    Gauge_Clock_Display();
                    Gauge_Trip_Display();
                    Gauge_EspeedDial_Display();
                    SEG_SET_Clock(22, 22, 1, 1, 1);
                    SEG_SET_Fault_Code(0, 2222);
                    SEG_SET_EleDial(1, 10, 22);
                    SEG_SET_FuelDial(0, 8);
                    SEG_SET_GEAR(1, 1);
                    SEG_SET_Cutterhead(1, 2);
                    SEG_SET_Frame(1);
                    interact_PWM_Low_Duty = 0;
                }
                else
                {
                    Checkself_SEG_Display();
                }
            }
            else
            {
                // Clear_Bu98();
                // for (i = 0; i < LampCh0_MAX; i++)
                // {
                //     LED_Driver_Channel_Set(LampChannel_0, i, LED_OFF);
                // }
                interact_PWM_Low_Duty = 50;
                //蜂鸣器
            }
        }
        else
        {
            Clear_Bu98();
            for (i = 0; i < LampCh0_MAX; i++)
            {
                LED_Driver_Channel_Set(LampChannel_0, i, LED_OFF);
            }
        }
    }
}
