
#include "MCU_Core_Protocol.h"
#include "Components.h"
typedef struct
{
    uint8_t  SOC_St; /*系统启动状态  0启动中 1启动成功 2启动超时*/
    uint8_t  AnimStatus;
    uint32_t Time_out;
    uint8_t  Restart;
} Core_Monitor_t;

typedef struct
{
    uint8_t u8POPEn;
    uint8_t u8BlueToothEn;
    uint8_t u8Logo;    
    uint8_t u8Car;    
    uint8_t u8SingleLane;    
}CoreDispCtrl_st_t;

CoreDispCtrl_st_t g_stCoreDispCtrl;


volatile uint8_t g_u8SOC_Online = 0U;
uint32_t g_u32SOC_Online_Time = 0U;
uint8_t g_u8Soc_Request_Valid = 0U;
static uint16_t  SocStartupCnt = 0u;
static Core_Monitor_t Core_Monitor;
static Rec_ID_12_Struct RecID12;
Rec_0x012_un_t g_unRec_0x012;
static void Core_Poweroff_Service();
uint8_t g_u8AvgSpeedOFFValid = 0U;

uint8_t SOC_Online_Status_Get(void)
{
    return g_unRec_0x012.Sig.u8Resv3;
}
uint8_t SOC_Online_Valid(void)
{
    return g_u8Soc_Request_Valid;
}
void MCU_SOC_Commnuication(void)
{
    Protocol_Service( );

    if ( Core_Monitor.SOC_St == Soc_Startup )
    {
        Core_Monitor.Time_out++;
        if ( Core_Monitor.Time_out > CORE_Timeout_CNT )
        {
            Core_Monitor.SOC_St = Soc_Timeout;
            //Protocol_Send(0x50, Protocol_NULL, 0);
        }
    }
    else
    {
        Core_Monitor.Time_out = 0u;
    }
#if 1
//***************************************************************************************
//************************12心跳报文掉线监控和重启***************************************
//***************************************************************************************
    if (SOC_Online_Status_Get() == 1U)
    {       
        g_u32SOC_Online_Time = 0U; 
        g_u8Soc_Request_Valid = 1u;     
    }
    
    if (g_u8Soc_Request_Valid == 1U)
    {
        g_u32SOC_Online_Time = 0U;
        if (SOC_Online_Status_Get() == 2U)
        {
            g_u8Soc_Request_Valid = 0U; 
        }
    }
        

    

//心跳超时计时器     
    if (g_u32SOC_Online_Time < 0xFFFFFFFFul)
    {
        if(g_u8SOC_Online == 0U)//无核心板12数据
        {
            g_u32SOC_Online_Time++;//(scale 20ms)++
        }
        else
        {
            g_u32SOC_Online_Time = 0U;
        }
        g_u8SOC_Online = 0U;
    }
    
/*重启*/
    if(g_u32SOC_Online_Time > 500ul)//500*20=10000ms
    {
        //当12报文超时10s时给SOC断电3s 之后重新启动核心板
        if((g_u32SOC_Online_Time >= 500ul) && ( g_u32SOC_Online_Time < 504ul))
        {
            // GPIO_OUT_PORT08_PIN09 = 0; //SOC EN
        }
        else if((g_u32SOC_Online_Time >= 504ul) && ( g_u32SOC_Online_Time < 654ul))
        {
            // GPIO_OUT_APORT00_PIN07 = 1;//SOC5V下电
        } 
        else
        {       
            // GPIO_OUT_APORT00_PIN07 = 0U;//SOC5V供电
            // GPIO_OUT_PORT08_PIN09  = 1U;/* 使能核心板 */     
            g_u32SOC_Online_Time = 0u; //重置
        }               
    }   
    else
    {
        
    }
#endif
}

void Core_Startup_Handle(uint8_t status)
{
    if ( status == 1 )
    {
        // Core_Monitor.SOC_St = Soc_Run;
        Core_Monitor.SOC_St = Soc_Startup;
        SocStartupCnt = 0U;
        //Protocol_Send(MCU_SOC_PROTOCOL_ID, Protocol_NULL, 0);
    }
    else
    {
        Core_Monitor.SOC_St = Soc_Startup;
    }
}

void Core_Heart_Handle(const uint8_t *pData, uint8_t len)
{
    uint8_t i = 0;
    if ( SocStartupCnt >= 95 )
    {
        Core_Monitor.SOC_St = Soc_Run;
    }
    else
    {
        SocStartupCnt++;
    }
    if (len == 2)
    {            
        g_u8SOC_Online = 1U;    
        for ( i = 0; i < len; i++ )
        {
            g_unRec_0x012.u8Msg [ i ] = pData [ i ];            
        }
    }
    
}

uint8_t Get_Core_StartStatus(void)
{
    return Core_Monitor.SOC_St;
}
uint32_t g_u32CoreDelayCnt;
uint8_t g_u8IGN_OFF_DispState;
uint8_t g_u8IGN_OFF_DelayCnt;
void Core_WinData_Service(void)
{/*Task 20ms */
    if ( Get_Core_StartStatus( ) )//bug 21467 休眠唤醒后先显示待机界面，再显示报警
    {
        Core_Poweroff_Service();
    }
}

static void Core_Poweroff_Service(void)
{
    uint32_t i;

    /* 系统刚上电 或 刚从休眠唤醒的瞬间 什么事情都不需要做 */

    Protoco_Display_Info_un_t unDisplayInfo;
    for (uint8_t i = 0;i<20;i++)
    {
        unDisplayInfo.u8Msg[i] = 0U;
    }  
    unDisplayInfo.u8Speed          = 0u; /**< 显示车速 */
    unDisplayInfo.u8ESpeedH        = 0u; /**< 转速高字节 */
    unDisplayInfo.u8ESpeedColore   = 0u; /**< 转速显示颜色 */
    unDisplayInfo.u8SpeedUnit      = 0u; /**< 车速单位 */
    unDisplayInfo.u8ESpeedL        = 0u; /**< 转速低字节 */
    unDisplayInfo.u8CoolantSeg     = 0u; /**< 水温段 */
    unDisplayInfo.u8CoolantSegSign = 0u; /**< 水温段开短路标志 */
    unDisplayInfo.u8FuelSeg        = 0u; /**< 燃油段 */
    unDisplayInfo.u8FuelSegSign    = 0u; /**< 燃油段开短路标志 */
    unDisplayInfo.u8Resv1          = 0u; /**< 占位 */
    unDisplayInfo.u8Resv2          = 0u; /**< 占位 */
    unDisplayInfo.u8MileageH       = 0u; /**< TOTAL里程高4位 */ 
    unDisplayInfo.u8MileageUnit    = 0u; /**< 里程单位 */ 
    unDisplayInfo.u8MileageMode    = 0u; /**< 里程显示 */ 
    unDisplayInfo.u8MileageC       = 0u; /**< TOTAL里程中8位 */ 
    unDisplayInfo.u8MileageL       = 0u; /**< TOTAL里程低8位 */ 
    unDisplayInfo.u8TripAH         = 0u; /**< 小计里程A高字节 */ 
    unDisplayInfo.u8TripAL         = 0u; /**< 小计里程A低字节 */ 
    unDisplayInfo.u8TripBH         = 0u; /**< 小计里程B高字节 */ 
    unDisplayInfo.u8TripBL         = 0u; /**< 小计里程B低字节 */ 
    unDisplayInfo.u8PhoneH         = 0u; /**< 来电号码高字节 */ 
    unDisplayInfo.u8PhoneC         = 0u; /**< 来电号码中字节 */ 
    unDisplayInfo.u8EasyNavigation = 0u; /**< 简易导航是否显示 */ 
    unDisplayInfo.u8BlueDisplay    = 0u; /**< 蓝牙电话控制显示 */ 
    unDisplayInfo.u8PhoneL         = 0u; /**< 来电号码低字节 */ 
    unDisplayInfo.u8TimeFormat     = 0u; /**< 时间制式 */ 
    unDisplayInfo.u8TimeAM_PM      = 0u; /**< AM/PM */ 
    unDisplayInfo.u8Colon          = 0u; /**<  “:”亮灭 */
    unDisplayInfo.u8Hour           = 0u; /**<  小时数字 */
    unDisplayInfo.u8Minute         = 0u; /**<  分钟数字 */
    if ( Core_Monitor.SOC_St > Soc_Startup )
    {
        Protocol_Send(WIN_DATA_PROTOCOL_ID, unDisplayInfo.u8Msg, sizeof(unDisplayInfo.u8Msg));
    }
    TPMS_Display_Info_un_t unTPMSDisplayInfo;
    for (uint8_t i = 0;i<8;i++)
    {
        unTPMSDisplayInfo.u8Msg[i] = 0U;
    }  
    unTPMSDisplayInfo.u8TPMSDisplay  = 0u;
    unTPMSDisplayInfo.u8PressUnit    = 0u;
    unTPMSDisplayInfo.u8PressPopup   = 0u;
    unTPMSDisplayInfo.u8PressureFH   = 0u;
    unTPMSDisplayInfo.u8PressureFL   = 0u;
    unTPMSDisplayInfo.u8PressureRH   = 0u;
    unTPMSDisplayInfo.u8PressureRL   = 0u;
    unTPMSDisplayInfo.u8TemperatureF = 0u;
    unTPMSDisplayInfo.u8TemperatureR = 0u;
    if ( Core_Monitor.SOC_St > Soc_Startup )
    {
        Protocol_Send(TPMS_PROTOCOL_ID, unDisplayInfo.u8Msg, sizeof(unDisplayInfo.u8Msg));
    }
}

void Core_TelltalesData_Service(void)
{
    Protoco_Telltales_un_t unTelltaleInfo;

    for (uint8_t i = 0;i<30;i++)
    {
        unTelltaleInfo.u8Msg[i] = 0U;
    }  

    unTelltaleInfo.stSig.u8Interface     = 0u;/**< 显示界面 */
    unTelltaleInfo.stSig.u8SelfCheck     = 0u;/**< 自检 (0-自检开始 1-自检结束) */
    unTelltaleInfo.stSig.u8Language      = 0u;/**< 语言 (0-中文 1-英文) */
    unTelltaleInfo.stSig.u8Theme         = 0u;/**< 主题 */
    unTelltaleInfo.stSig.u8ThemeColour  = 0u;/**< 手机互联模式 */

    unTelltaleInfo.stSig.u8LowFuel       = 0u;/**< 燃油低指示灯 */
    unTelltaleInfo.stSig.u8ABS           = 0u;/**< ABS/HBB故障 */
    unTelltaleInfo.stSig.u8SmartLock     = 0u;/**< 智能锁指示灯 */
    unTelltaleInfo.stSig.u8EfiFault      = 0u;/**< 电喷故障指示灯 */
    unTelltaleInfo.stSig.u8HiBeam        = 0u;/**< 远光灯 */
    unTelltaleInfo.stSig.u8Position      = 0u;/**< 位置灯 */
    unTelltaleInfo.stSig.u8Right         = 0u;/**< 右转灯 */
    unTelltaleInfo.stSig.u8Left          = 0u;/**< 左转灯 */

    unTelltaleInfo.stSig.u8AutoStartStop = 0u;/**< 自动启停 */
    unTelltaleInfo.stSig.u8LowPower      = 0u;/**< 电池电压低报警灯 */
    unTelltaleInfo.stSig.u8TCS           = 0u;/**< TCS指示灯 */
    unTelltaleInfo.stSig.u8TPMS          = 0u;/**< 胎压报警灯 */    
    unTelltaleInfo.stSig.u8BlueTooth     = 0u;/**< 蓝牙显示*/
    unTelltaleInfo.stSig.u8Gears         = 0u;/**< 1~6挡位指示灯*/
    unTelltaleInfo.stSig.u8NeutralLight  = 0u;/**< 空挡指示灯*/
    unTelltaleInfo.stSig.u8HiTemp        = 0u;/**< 水温指示灯 */

    unTelltaleInfo.stSig.u8SentryKey     = 0u;/**< 钥匙防盗 */
    unTelltaleInfo.stSig.u8WIFI          = 0u;/**< WIFI */
    
    unTelltaleInfo.stSig.u8BlueControl   = 0u;/**<  蓝牙控制 */
    unTelltaleInfo.stSig.u8ZoneB_B       = 0u;/**<  指示灯B区位置B预留 */
    unTelltaleInfo.stSig.u8ZoneB_C       = 0u;/**<  指示灯B区位置C预留 */

    unTelltaleInfo.stMenu.u8MenuStair    = 0u;/**<  一级菜单光标位置 */
    unTelltaleInfo.stMenu.u8MenuGrade    = 0u;/**<  菜单级别 */
    switch (unTelltaleInfo.stMenu.u8MenuStair)
    {
        case 1: /* 主题模式 */
            unTelltaleInfo.stMenu.stSubject_Mode.u8Subject = 0u;
            unTelltaleInfo.stMenu.stSubject_Mode.u8Mode    = 0u;
            break;
        case 2: /* 单位设置 */
            unTelltaleInfo.stMenu.stUnits_Setup.u8UnitsSetup = 0u;
            break;
        case 3: /* 时钟信息 */
            unTelltaleInfo.stMenu.stClock.u8Clock      = 0u; 
            unTelltaleInfo.stMenu.stClock.u8TimeAM_PM  = 0u;
            unTelltaleInfo.stMenu.stClock.u8TimeFormat = 0u;
            unTelltaleInfo.stMenu.stClock.u8Hour       = 0u;
            unTelltaleInfo.stMenu.stClock.u8Minute     = 0u;
            unTelltaleInfo.stMenu.stClock.u8Colon      = 0u;
            break;
        case 4: /* 亮度设置 */
            unTelltaleInfo.stMenu.stBacklight_Class.u8Backlight = 0u;
            break;
        case 5: /* 胎压学习 */
            unTelltaleInfo.stMenu.stTPMS_Study.u8TPMSPosition     = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8TPMSUnit         = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8FrontStudyStatus = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8BackStudyStatus  = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8FrontHPressure   = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8FrontLPressure   = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8BackHPressure    = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8BackLPressure    = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8SensorHID        = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8SensorHCID       = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8SensorLCID       = 0u;
            unTelltaleInfo.stMenu.stTPMS_Study.u8SensorLID        = 0u;
            break;
        case 6: /* 语言设置 */
            unTelltaleInfo.stMenu.stLanguage.u8Language = 0u;
            break;
        case 7: /* 蓝牙设置 */
            unTelltaleInfo.stMenu.stBlue_Tooth.u8Option   = 0u;
            unTelltaleInfo.stMenu.stBlue_Tooth.u8Link     = 0u;
            unTelltaleInfo.stMenu.stBlue_Tooth.u8LinkName = 0u;
            break;
        case 8: /* DVR */
            unTelltaleInfo.stMenu.stDVR.u8DVRSetTowLevel   = 0u; 
            unTelltaleInfo.stMenu.stDVR.u8DVRSetThreeLevel = 0u;
            unTelltaleInfo.stMenu.stDVR.u8DVRSet           = 0u;   
            unTelltaleInfo.stMenu.stDVR.u8DVRSetStatus     = 0u;       
            unTelltaleInfo.stMenu.stDVR.u8DVRSetFourLevel  = 0u;
            break;
        case 9: /* 版本信息 */
            unTelltaleInfo.stMenu.stVersion.u8Version         = 0u;    
            unTelltaleInfo.stMenu.stVersion.u8SoftYearH       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftYearL       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftMonth       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftDay         = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftVDisplay    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftVersionH    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftDotHDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftVersionC    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftDotCDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8SoftVersionL    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardYearH       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardYearL       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardMonth       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardDay         = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardVDisplay    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardVersionH    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardDotHDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardVersionC    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardDotCDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8HardVersionL    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueYearH       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueYearL       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueMonth       = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueDay         = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueVDisplay    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueVersionH    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueDotHDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueVersionC    = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueDotCDisplay = 0u;
            unTelltaleInfo.stMenu.stVersion.u8BlueVersionL    = 0u;
            break;
        case 10: /* 恢复出厂设置 */
            unTelltaleInfo.stMenu.stFactory_Reset.u8Factory_Reset = 0u;
            break;
        case 11: /* 手机互联 */
            unTelltaleInfo.stMenu.stQR_Code.u8Code = 0u;
            break;
        default:
            break;
    }

    if ( Core_Monitor.SOC_St > Soc_Startup )
    {
        Protocol_Send(TEL_DATA_PROTOCOL_ID, unTelltaleInfo.u8Msg, sizeof(unTelltaleInfo.u8Msg));
    }
    
}

uint8_t Get_Animation_Status(void)
{
    return g_unRec_0x012.Sig.u8AnimStatus;
}





// typedef struct
// {
//     uint8_t u8PwrStatus;
//     uint8_t u8DispSN;
//     uint8_t u8FullNavi;
//     uint8_t u8FirstFullNavi;
//     uint8_t u8TBTNavi;
//     uint32_t u32SendCnt;
//     uint8_t u8BlueFaceEn;

//     uint8_t u8BlueToothValid;
//     uint32_t u32BT_Timer;
//     uint8_t  RollingCounterF2Back;
//     uint16_t u16F2_TimeoutCnt;
    
//     uint8_t  u8MusicValid;
//     uint32_t u32Music_Timer;

//     uint8_t  u8RadioValid;
//     uint32_t u32Radio_Timer;
// }WinLeftCtrl_st_t;


// WinLeftCtrl_st_t g_stWinLeftCtrl;


// typedef struct
// {
//     uint8_t MediaPage;  
//     uint8_t BTSubFunc_CallRecrod;
//     uint8_t NaviSubFunc_ServZone;
//     uint8_t NaviSubFunc_LaneNum;
//     uint8_t u8Music[100U];
//     uint8_t u8Radio[8U];
//     uint8_t u8BlueTooth[102U];
//     uint8_t u8TBTNavi[102U];
// }WinLeftInfo_st_t;

// WinLeftInfo_st_t g_stWinLeftInfo;

// #define WIN_LEFT_DISP_SN_NONE         (0x00U)
// #define WIN_LEFT_DISP_SN_MUSIC        (0x01U)
// #define WIN_LEFT_DISP_SN_RADIO        (0x02U)
// #define WIN_LEFT_DISP_SN_NAVI         (0x03U)
// #define WIN_LEFT_DISP_SN_BLUETOOTH    (0x04U)

// #define BULETOOTH_SUB_ID_INCOMMING   (0x01U)  /*来电信息 */
// #define BULETOOTH_SUB_ID_CALL_INFO   (0x02U)  /*通话信息,时间 */
// #define BULETOOTH_SUB_ID_CALL_RECORD (0x03U)  /*通话记录 */

// #define NAVI_SUB_ID_PLAN         (0x01U)
// #define NAVI_SUB_ID_SERVICE_ZONE (0x02U)
// #define NAVI_SUB_ID_LANE_NUM     (0x03U)

// #define DisplayHintTime         2000u/10u
// #define SEND_TO_CORE_SUBCYCLE   4U
// #define SEND_TO_CORE_CYCLE      108U/2U


// void BuleTooth_Incomming_Valid_Set(uint8_t u8Valid);
// void BuleTooth_CallInfo_Valid_Set(uint8_t u8Valid);
// void BuleTooth_CallRecord_Valid_Set(uint8_t u8Valid);
// void BuleTooth_SubInfo_Set(uint8_t u8Data);

// void Navi_SubInfo_Set(uint8_t u8Data);
// void Navi_LaneNum_Valid_Set(uint8_t u8Valid);
// void Navi_ServiceZone_Valid_Set(uint8_t u8Valid);
// void Navi_Plan_Valid_Set(uint8_t u8Valid);

// void BuleTooth_Incomming_Valid_Set(uint8_t u8Valid)
// {/* BIT0 来电信息 */
//     if(u8Valid)
//     {
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xF0U;
//         g_stWinLeftInfo.u8BlueTooth[0U] |= 0x01U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xFEU;
//     }
// }
// void BuleTooth_CallInfo_Valid_Set(uint8_t u8Valid)
// {/* BIT1 通话信息 */
//     if(u8Valid)
//     {
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xF0U;
//         g_stWinLeftInfo.u8BlueTooth[0U] |= 0x02U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xFDU;
//     }
// }
// void BuleTooth_CallRecord_Valid_Set(uint8_t u8Valid)
// {/* BIT2 通话记录 */
//     if(u8Valid)
//     {        
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xF0U;
//         g_stWinLeftInfo.u8BlueTooth[0U] |= 0x04U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8BlueTooth[0U] &= 0xFBU;
//     }
// }

// void BuleTooth_SubInfo_Set(uint8_t u8Data)
// {/* BIT4 --- BIT7 */   

//     g_stWinLeftInfo.u8BlueTooth[0U] = 0x00U;
//     g_stWinLeftInfo.u8BlueTooth[0U] |= (1 << (u8Data - 1));
//     g_stWinLeftInfo.u8BlueTooth[0U] |= ((u8Data & 0x0F) << 4U);

// }

// void Navi_Plan_Valid_Set(uint8_t u8Valid)
// {/* BIT0  */
//     if(u8Valid)
//     {   
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xF0U;     
//         g_stWinLeftInfo.u8TBTNavi[0U] |= 0x01U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xFEU;
//     }
// }

// void Navi_ServiceZone_Valid_Set(uint8_t u8Valid)
// {/* BIT1  */
//     if(u8Valid)
//     {        
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xF0U;  
//         g_stWinLeftInfo.u8TBTNavi[0U] |= 0x02U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xFDU;
//     }
// }

// void Navi_LaneNum_Valid_Set(uint8_t u8Valid)
// {/* BIT2  */
//     if(u8Valid)
//     {        
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xF0U;  
//         g_stWinLeftInfo.u8TBTNavi[0U] |= 0x04U;
//     }
//     else
//     {
//         g_stWinLeftInfo.u8TBTNavi[0U] &= 0xFBU;
//     }
// }

// void Navi_SubInfo_Set(uint8_t u8Data)
// {/* BIT4 --- BIT7 */   
//     g_stWinLeftInfo.u8TBTNavi[0U] &= 0x0FU;
//     g_stWinLeftInfo.u8TBTNavi[0U] |= ((u8Data & 0x0F) << 4U);
// }
// uint8_t Navi_Menu_Status_Get(void);
// uint8_t Navi_Menu_Status_Get(void)
// {
//     uint8_t ret;
//     if (Menu_Item_Select_Get(MENU_ITEM_FullScreenNavi_Open))
//     {
//         ret = 1u;
//     }
//     else
//     {
//         ret = 0u;
//     }
//     return ret;
// }
// void Navi_Menu_Status_Set(uint8_t u8Data);
// void Navi_Menu_Status_Set(uint8_t u8Data)
// {
//     if (u8Data == 1u)
//     {
//         Menu_Set_Seclect_FullScreenNavi_Sw(MENU_ITEM_FullScreenNavi_Open);
//     }
//     else
//     {
//         Menu_Set_Seclect_FullScreenNavi_Sw(MENU_ITEM_FullScreenNavi_Close);
//     }
    
// }
// uint8_t Navi_FULL_Get(void)
// {
//     return g_stWinLeftCtrl.u8FullNavi;
// }
// void WinLeft_Data_Service(void)
// {/* Task 10ms */
//     uint8_t u8MMI_WorkMode;
//     uint16_t u16PopupMsg;
//     uint8_t u8PopupValid;
//     uint8_t u8KeyOKValid;
//     uint8_t u8NaviPathSuccCur;
//     uint8_t u8NaviMenuStatus;
//     uint8_t u8BluetoothStatus,CallStatus;
//     uint8_t MusicStatus = 0u;
//     uint8_t MusicRollingCounter = 0u;
//     uint32_t i = 0U;
//     uint8_t u8Length;
    
//     g_stWinLeftInfo.NaviSubFunc_LaneNum = 1u;
//     g_stWinLeftInfo.NaviSubFunc_ServZone = 0U;
//     g_stWinLeftInfo.BTSubFunc_CallRecrod = 0U;

//     if (Common_Get_IG_Sts() == COMMON_POWER_ON)
//     {
//         g_stWinLeftCtrl.u8PwrStatus = 1U;
        
//     } 
//     else
//     {
//         g_stWinLeftCtrl.u8PwrStatus = 0U;
//     }

//     if (g_stWinLeftCtrl.u8PwrStatus)
//     {
//         u8BluetoothStatus = get_F2_BluetoothConnectionStatus();
//         if(u8BluetoothStatus == 1u)
//         {            
                     
//             BuleTooth_Incomming_Valid_Set(1U);            
//             CallStatus = get_F2_CallStatus();            
//             if((CallStatus == 1u) || (CallStatus == 2u) || (CallStatus == 3u) || (CallStatus == 5u))
//             {
//                 g_stWinLeftCtrl.u32BT_Timer = 0u;
//                 g_stWinLeftCtrl.u32Music_Timer = 0u;              
//                 g_stWinLeftCtrl.u8BlueToothValid = 1U;
//                 g_stWinLeftCtrl.RollingCounterF2Back = 1u;  
//                 g_stWinLeftCtrl.u16F2_TimeoutCnt = 0;              
//             }
//             else
//             {
//                 g_stWinLeftCtrl.u16F2_TimeoutCnt = 0;
//                 Clr_F2_BluetoothConnectionStatus();
//                 g_stWinLeftCtrl.u8BlueToothValid = 0U;
//                 g_stWinLeftCtrl.RollingCounterF2Back = 0u;
//                 g_stWinLeftCtrl.u8BlueFaceEn = 0U;                
//             }

//             if (getRollingCounterF5() != 0u)
//             {
//                 BuleTooth_CallInfo_Valid_Set(1U);
//             }
//         }
//         else
//         {
//             g_stWinLeftCtrl.u8BlueToothValid = 0U;
//             BuleTooth_Incomming_Valid_Set(0U);
//             BuleTooth_CallInfo_Valid_Set(0U);
//             BuleTooth_CallRecord_Valid_Set(0U);  
//             g_stWinLeftCtrl.u16F2_TimeoutCnt = 0;        
//             g_stWinLeftCtrl.RollingCounterF2Back = 0;    
//             g_stWinLeftCtrl.u8BlueFaceEn = 0U;                
//         }
//     }
//     else
//     {
//         g_stWinLeftCtrl.u8BlueToothValid = 0U;             
//         g_stWinLeftCtrl.u16F2_TimeoutCnt = 0;        
//         g_stWinLeftCtrl.RollingCounterF2Back = 0; 
//         g_stWinLeftCtrl.u8BlueFaceEn = 0U;
//     }
// }


// void WinLeft_Disp_Service(void)
// {/* Task 2ms */
//     uint8_t u8Length = 0U;
//     if ((g_stWinLeftCtrl.u8PwrStatus == 1U) && (Get_HMI_Sys_Type() == DISP_RUN))
//     {/* IGN ON */
        
//         if (g_stWinLeftCtrl.u8BlueToothValid == 1U)
//         {
//             if (g_stWinLeftCtrl.u8DispSN != WIN_LEFT_DISP_SN_BLUETOOTH)
//             {
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//                 g_stWinLeftCtrl.u8DispSN = WIN_LEFT_DISP_SN_BLUETOOTH;            
//                 g_stWinLeftInfo.MediaPage = WIN_LEFT_DISP_SN_BLUETOOTH;           
                
//             }        
//         }
//         else if (g_stWinLeftCtrl.u8TBTNavi == 1U)
//         {
//             if (g_stWinLeftCtrl.u8DispSN != WIN_LEFT_DISP_SN_NAVI)
//             {
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//                 g_stWinLeftCtrl.u8DispSN = WIN_LEFT_DISP_SN_NAVI;
//                 g_stWinLeftInfo.MediaPage = WIN_LEFT_DISP_SN_NAVI;                
//             }        
//         }
//         else  if (g_stWinLeftCtrl.u8MusicValid == 1U)
//         {
//             if (g_stWinLeftCtrl.u8DispSN != WIN_LEFT_DISP_SN_MUSIC)
//             {
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//                 g_stWinLeftCtrl.u8DispSN = WIN_LEFT_DISP_SN_MUSIC;
//                 g_stWinLeftInfo.MediaPage = WIN_LEFT_DISP_SN_MUSIC;                
//             }
//         }
//         else if (g_stWinLeftCtrl.u8RadioValid == 1U)
//         {
//             if (g_stWinLeftCtrl.u8DispSN != WIN_LEFT_DISP_SN_RADIO)
//             {
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//                 g_stWinLeftCtrl.u8DispSN = WIN_LEFT_DISP_SN_RADIO;
//                 g_stWinLeftInfo.MediaPage = WIN_LEFT_DISP_SN_RADIO;                
//             }
//         }
//         else
//         {
//             if (g_stWinLeftCtrl.u8DispSN != WIN_LEFT_DISP_SN_NONE)
//             {
//                 g_stWinLeftCtrl.u8DispSN = WIN_LEFT_DISP_SN_NONE;
//                 g_stWinLeftInfo.MediaPage = WIN_LEFT_DISP_SN_NONE;
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//             }            
//         }
       

//         switch (g_stWinLeftCtrl.u8DispSN)
//         {
//             case WIN_LEFT_DISP_SN_BLUETOOTH:
//                 g_stWinLeftCtrl.u32SendCnt++;
//                 if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE + SEND_TO_CORE_SUBCYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {/*F2*/
//                     g_stWinLeftCtrl.u32SendCnt = 0U;
//                     g_stWinLeftCtrl.u8BlueFaceEn = 1U;
//                     BuleTooth_SubInfo_Set(BULETOOTH_SUB_ID_INCOMMING);                
//                     u8Length = getF2Data(&g_stWinLeftInfo.u8BlueTooth[2U]); 
//                     if (u8Length > 0U)
//                     {                   
//                         Protocol_Send(WIN_LEFT_BLUETOOTH_ID, &g_stWinLeftInfo.u8BlueTooth[0U], u8Length + 2);
//                     }
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE  + SEND_TO_CORE_SUBCYCLE)
//                 {/*F5*/
//                     BuleTooth_SubInfo_Set(BULETOOTH_SUB_ID_CALL_INFO); 
//                     u8Length = getF5Data(&g_stWinLeftInfo.u8BlueTooth[2U]); 
//                     if (u8Length > 0U)
//                     {
//                         Protocol_Send(WIN_LEFT_BLUETOOTH_ID, &g_stWinLeftInfo.u8BlueTooth[0U], u8Length + 2);
//                     }                   
//                 }         
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {/*F6*/      
//                     if (g_stWinLeftInfo.BTSubFunc_CallRecrod == 1U)
//                     {
//                         BuleTooth_SubInfo_Set(BULETOOTH_SUB_ID_CALL_RECORD); 
//                         u8Length = getF6Data(&g_stWinLeftInfo.u8BlueTooth[2U]); 
//                     }          
//                     else 
//                     {
//                         u8Length = 0U;
//                     }
//                     if (u8Length > 0U)
//                     {
//                         Protocol_Send(WIN_LEFT_BLUETOOTH_ID, &g_stWinLeftInfo.u8BlueTooth[0U], u8Length);
//                     }                   
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE)
//                 {
//                     Protocol_Send(WIN_LEFT_SWITCH_ID, &g_stWinLeftInfo.MediaPage, 1U);    
//                 }
//                 else
//                 {
//                     /*nothing*/
//                 }
//                 break;
//             case WIN_LEFT_DISP_SN_NAVI:
//                 g_stWinLeftCtrl.u32SendCnt++;
//                 if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE + SEND_TO_CORE_SUBCYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {/*F9*/
//                     g_stWinLeftCtrl.u32SendCnt = 0U;
//                     if (g_stWinLeftInfo.NaviSubFunc_ServZone == 1U)
//                     {
//                         Navi_SubInfo_Set(NAVI_SUB_ID_SERVICE_ZONE);                
//                         u8Length = getF9Data(&g_stWinLeftInfo.u8TBTNavi[2U]); 
//                     }
//                     else
//                     {
//                         u8Length = 0U;
//                     }
//                     if (u8Length > 0U)
//                     {                   
//                         Protocol_Send(WIN_LEFT_NAVI_ID, &g_stWinLeftInfo.u8TBTNavi[0U], u8Length);
//                     }
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {/*FB*/  
//                     if (g_stWinLeftInfo.NaviSubFunc_LaneNum == 1U)
//                     {
//                         Navi_SubInfo_Set(NAVI_SUB_ID_LANE_NUM);                
//                         u8Length = getFBData(&g_stWinLeftInfo.u8TBTNavi[2U]); 
//                     } 
//                     else
//                     {
//                         u8Length = 0U;
//                     }        
//                     if (u8Length > 0U)
//                     {                   
//                         Protocol_Send(WIN_LEFT_NAVI_ID, &g_stWinLeftInfo.u8TBTNavi[0U], u8Length);
//                     }
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {/*F3*/
//                     Navi_SubInfo_Set(NAVI_SUB_ID_PLAN); 
//                     u8Length = getF3Data(&g_stWinLeftInfo.u8TBTNavi[2U]); 
//                     if (u8Length > 0U)
//                     {
//                         Protocol_Send(WIN_LEFT_NAVI_ID, &g_stWinLeftInfo.u8TBTNavi[0U], u8Length);
//                     }                   
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE)
//                 {
//                     Protocol_Send(WIN_LEFT_SWITCH_ID, &g_stWinLeftInfo.MediaPage, 1U);    
//                 }
//                 else
//                 {
//                     /*nothing*/
//                 }
//                 break;
//             case WIN_LEFT_DISP_SN_MUSIC:
//                 g_stWinLeftCtrl.u32SendCnt++;
//                 if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {
//                     g_stWinLeftCtrl.u32SendCnt = 0U;
//                     if (getRollingCounterF7() != 0U)
//                     {
//                         u8Length = getF7Data(&g_stWinLeftInfo.u8Music[0U]); 
//                     }
//                     if (getF1_SongType() == 0U)
//                     {
//                         u8Length = getF1_0Data(&g_stWinLeftInfo.u8Music[8U]); 
//                     }
//                     else if (getF1_SongType() == 1U)
//                     {
//                         u8Length = getF1_0Data(&g_stWinLeftInfo.u8Music[8U]); 
//                     }
//                     else if (getF1_SongType() == 2U)
//                     {
//                         u8Length = getF1_0Data(&g_stWinLeftInfo.u8Music[8U]); 
//                     }
//                     else
//                     {

//                     }

//                     if (u8Length > 0U)
//                     {
//                         Protocol_Send(WIN_LEFT_MUSIC_ID, &g_stWinLeftInfo.u8Music[0U], u8Length + 8U);
//                     } 
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE)
//                 {
//                     Protocol_Send(WIN_LEFT_SWITCH_ID, &g_stWinLeftInfo.MediaPage, 1U);    
//                 }
//                 else
//                 {
//                     /*nothing*/
//                 }
//                 break;
//             case WIN_LEFT_DISP_SN_RADIO:
//                 g_stWinLeftCtrl.u32SendCnt++;
//                 if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE + SEND_TO_CORE_SUBCYCLE)
//                 {
//                     g_stWinLeftCtrl.u32SendCnt = 0U;
//                     u8Length = getF1_0Data(&g_stWinLeftInfo.u8Radio[0U]);
//                     Protocol_Send(WIN_LEFT_RADIO_ID, &g_stWinLeftInfo.u8Radio[0U], 4U);                    
//                 }
//                 else if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE)
//                 {
//                     Protocol_Send(WIN_LEFT_SWITCH_ID, &g_stWinLeftInfo.MediaPage, 1U);    
//                 }
//                 else
//                 {
//                     /*nothing*/
//                 }
//                 break;
//             case WIN_LEFT_DISP_SN_NONE:
//                 g_stWinLeftCtrl.u32SendCnt++;
//                 if (g_stWinLeftCtrl.u32SendCnt >= SEND_TO_CORE_CYCLE)
//                 {
//                     g_stWinLeftCtrl.u32SendCnt = 0U;
//                     Protocol_Send(WIN_LEFT_SWITCH_ID, &g_stWinLeftInfo.MediaPage, 1U);    
//                 }
//             break;
             
//             default:
//                 g_stWinLeftCtrl.u32SendCnt = 0U;
//                 break;        
//         }
//     }

// }


// uint8_t Mcu_BlueTooth_Get(void)
// {   
//     return g_stWinLeftCtrl.u8BlueFaceEn;
// }


  
// void Mcu_Disp_Priority(void)
// {/** Task 20ms */
//     uint8_t u8CurPOP;
//     uint8_t u8CurBlue;
//     uint16_t u16CurPop;

//     if (Common_Get_IG_Sts() == COMMON_POWER_ON)
//     {
//         u8CurPOP = Drive_CurPOP_Status();
//         u8CurBlue = Mcu_BlueTooth_Get();
//         if (Espeed_Start_Valid_Get())
//         {
//             g_stCoreDispCtrl.u8SingleLane = 1u;
//             g_stCoreDispCtrl.u8Logo = 0u;  
//             g_stCoreDispCtrl.u8Car = 1u;
//             if (u8CurPOP)
//             {
//                 g_stCoreDispCtrl.u8POPEn = 1u;
//                 g_stCoreDispCtrl.u8BlueToothEn = 0u;
//                 //if (Get_Door_Status())
//                 u16CurPop = Popup_Get_Current_Message( );
//                 if ((u16CurPop == POPUP_MSG_DoorOpen_FL)
//                     ||(u16CurPop == POPUP_MSG_DoorOpen_FR)
//                     ||(u16CurPop == POPUP_MSG_DoorOpen_RL)
//                     ||(u16CurPop == POPUP_MSG_DoorOpen_RR)
//                     ||(u16CurPop == POPUP_MSG_HoodtOpen)
//                     ||(u16CurPop == POPUP_MSG_TrunkOpen)
//                     || (u16CurPop == POPUP_MSG_SeatbeltWarning_DR)  
//                     || (u16CurPop == POPUP_MSG_SeatbeltWarning_PR)  
//                     || (u16CurPop == POPUP_MSG_SeatbeltWarning_LR)  
//                     || (u16CurPop == POPUP_MSG_SeatbeltWarning_MR)  
//                     || (u16CurPop == POPUP_MSG_SeatbeltWarning_RR) 
//                     || (u16CurPop == POPUP_MSG_SeatbeltFatal_DR)   
//                     || (u16CurPop == POPUP_MSG_SeatbeltFatal_PR)   
//                     || (u16CurPop == POPUP_MSG_SeatbeltFatal_LR)   
//                     || (u16CurPop == POPUP_MSG_SeatbeltFatal_MR)   
//                     || (u16CurPop == POPUP_MSG_SeatbeltFatal_RR))
//                 {                  
//                     g_stCoreDispCtrl.u8Car = 0u;
//                 }                      
//             }
//             else
//             {
//                 if (u8CurBlue)
//                 {
//                     g_stCoreDispCtrl.u8POPEn = 0u;
//                     g_stCoreDispCtrl.u8BlueToothEn = 1u;  
//                 }
//                 else
//                 {
//                     g_stCoreDispCtrl.u8POPEn = 0u;
//                     g_stCoreDispCtrl.u8BlueToothEn = 0u; 
//                 }
//             }
//         }
//         else 
//         {              
//             g_stCoreDispCtrl.u8Car = 0u;  
//             g_stCoreDispCtrl.u8SingleLane = 0u; 
//             if (u8CurPOP)
//             {
//                 g_stCoreDispCtrl.u8POPEn = 1u;
//                 g_stCoreDispCtrl.u8BlueToothEn = 0u;
//                 g_stCoreDispCtrl.u8Logo = 0u;        
//             }
//             else
//             {
//                 if (u8CurBlue)
//                 {
//                     g_stCoreDispCtrl.u8POPEn = 0u;
//                     g_stCoreDispCtrl.u8BlueToothEn = 1u;
//                     g_stCoreDispCtrl.u8Logo = 0u;  
//                 }
//                 else
//                 {
//                     g_stCoreDispCtrl.u8POPEn = 0u;
//                     g_stCoreDispCtrl.u8BlueToothEn = 0u;
//                     g_stCoreDispCtrl.u8Logo = 1u;  
//                     g_stCoreDispCtrl.u8Car = 0u;  
//                     g_stCoreDispCtrl.u8SingleLane = 0u; 
//                 }
//             }
//         }        
//     }
//     else
//     {
//         g_stCoreDispCtrl.u8POPEn = 0u;
//         g_stCoreDispCtrl.u8BlueToothEn = 0u;
//         g_stCoreDispCtrl.u8Logo = 0u;  
//         g_stCoreDispCtrl.u8Car = 0u;  
//         g_stCoreDispCtrl.u8SingleLane = 0u;  
//     }  

// }






