/**************************************************************************//**
  * \file     Tasks.c
  * \brief    Task list
  * \details
  * \author   Zhang Xuan
  * \version  V1.0.0
  * \date     07-Sep-2018
  * \par      History:
  *           V1.0.0 Initial release
  * \par      Copyright:
  *           (c) Heilongjiang TYW Electronics co., LTD
******************************************************************************/
#include "r_typedefs.h"
#include "Sys_Scheduler.h"
#include "rh850_macros.h"

#include "Analog_Signals.h"
#include "RTC.h"


#include "Watchdog.h"

#include "debugger.h"
#include "Emulated_EEPROM.h"

#include "r_ddb_api.h"
#include "r_wm_api.h"
#include "Graphic.h"

#include "CAN_Communication_Matrix.h"

#include "PowerManagement.h"
#include "System_Monitor.h"
#include "Common_Interface.h"


#include "Services_ODO_User.h"
#include "Data_CoolantTemperature.h"
#include "Data_VehicleSpeed.h"
#include "Data_EngineSpeed.h"
#include "AC_TEMP.h"
#include "Data_Time.h"
#include "Data_Gear.h"
#include "Data_AdBule.h"
#include "Data_ADAS.h"
#include "Data_Voltmeter.h"
#include "Data_WET.h"
#include "Data_DrivingSupport.h"
#include "Data_AirPressure.h"
#include "Data_Fuel_User.h"
#include "Services_Mileage.h"
//#include "Services_ODO.h"
#include "Services_Mileage.h"
//#include "Services_Trip.h"
#include "Speed_PPK_Out.h"
#include "Service_TPMS.h"
#include "Service_OFF_Time.h"

#include "Flash_synchronizer.h"
#include "Line_in.h"
#include "Telltales.h"
#include "DisplaySch.h"
#include "GUI.h"
#include "Key.h"
#include "Menu.h"

#include "GUI_Interface.h"
#include "Popup_Scheduler.h"
#include "Popups.h"

#include "GaugesInterface.h"
#include "DisplaySch_user.h"

#include "Sound_Scheduler.h"
#include "Sound_Player.h"
#include "BGLInterface.h"
#include "BackLight_APP.h"
#include "CD4051.h"
#include "dr7f701441.dvf.h"
#include "GPIO.h"
#include "DoCAN_ISO15765.h"
#include "UDS_ISO14229_Server.h"
#include "Maintenance.h"
#include "Data_FuelConsump.h"

#include "IS31FL3236.h"
#include "Individual_ECU_Comm.h"
#include "TimerB.h"

#include "BU98R10.h"
#include "SEG_DISPLAY.h"

#include "Buzzer.h"

/*******************************************************************************
*                                                                              *
*   系统常规运行模式(SYS_MODE_OFF / SYS_MODE_ON / SYS_MODE_STANDBY )任务列表   *
*                                                                              *
*******************************************************************************/

/*==============================================================================
伪实时任务
------------------------------------------------------------------------------*/

void Sys_Run_Mode_Pseudo_Real_Time_Tasks(void)
{
    Power_Management_Service();
    DoCAN_Communication_Service();
    UDS_Server_Application_Service();
    IS31_Service();
    BU98R10_Update_Service();


}
/*============================================================================*/



/*==============================================================================
2ms周期执行任务
------------------------------------------------------------------------------*/
void Sys_Run_Mode_2ms_Tasks(void)
{
    UDS_KL15_init();
    Analog_Signal_Conv_Service();
    Sys_Status_Update_Service();
    Common_Input_Para();
    Gauges_Time_Xms_Count(2);
    UDS_10ms_Service();
    CD4051_GetInputStatusProc();

}
/*============================================================================*/
/*==============================================================================
10ms周期执行任务
------------------------------------------------------------------------------*/
void Sys_Run_Mode_5ms_Tasks(void)
{
    COM_RX_Process();
    Flash_Sync_Signal_Generation_Service();
}

/*==============================================================================
10ms周期执行任务
------------------------------------------------------------------------------*/
void Sys_Run_Mode_10ms_Tasks(void)
{
    loc_Display_Service();
    Data_Mileage_Write_EEPROM();
    Line_In_Debounce_Service();
    Telltales_Management();
    //Test_LED_AllLight();
    Key_Service();
    CAN_BUSOFF_Recover();
    DisplayServices();    
    /*表头调度函数 added by yutian*/
    UserGaugeSchedule();/*在主循环中调用*/
    /*end*/
    Sound_Play_Service();

    Can_BusOff_Fun();

    Fuel_User_KL15_ON_Processing_Service();
}
/*============================================================================*/


/*==============================================================================
20ms周期执行任务
------------------------------------------------------------------------------*/
uint32_t heed;
void Sys_Run_Mode_20ms_Tasks(void)
{
    Individual_ECU_Comm_Processing_Service();
    Coolant_Processing_Service();
    Tacho_Processing_Service();
    Speed_Processing_Service();
    Telltales_Left_Right_Management_Service();
    AdBule_Processing_Service();
    ADAS_Processing_Service();
    DrivingSupport_Processing_Service();
    AirPressure_Processing_Service();
    Voltmeter_Processing_Service();

    Buzzer_Track_Play_Service();
    Sound_Management_Service();

    Seg_Display_Service();
    Seg_Buffer_Commit();
    BU98R10_Update_Request();


}
/*============================================================================*/


/*==============================================================================
50ms周期执行任务
------------------------------------------------------------------------------*/

void Sys_Run_Mode_50ms_Tasks(void)
{
    
    Data_Time_Calibration();
    Data_Service_Gear_Processing();
    Speed_PPK_Processing();
    Sound_Scheduling_Service();
    //BGTask();
    IS31_Scan_Refresh();
}
/*============================================================================*/


/*==============================================================================
100ms周期执行任务
------------------------------------------------------------------------------*/
void Sys_Run_Mode_100ms_Tasks(void)
{

    BL_Management_service();
    RTE_RTC_Services_100Ms_Cbk();
    Data_ODO_Processing();
    Data_Trip_Processing();
    //Data_Avg_Speed_Processing();
    Data_TPMS_Value_Processing();
    Data_Service_Gear_Processing();
    Data_Ambient_Temperature_Processing();

    //Display_Schedule_Service();/*显示函数入口*/
    //Menu_Display_Service();
    //External_Influence_ENERGY_RECOVERY_LEVEL_Select();
    //LongTimeNoKey_Operation();
    //Menu_Get_Battery_Sts_Exist();
    Popups_Management_Service();
    Popup_Scheduling_Service();
    /*综合油耗信息*/
    Data_FuelCounsComprehensive();
    /*小计油耗信息*/
    Data_FuelCounsumpTrip();
    /*本次油耗信息*/
    Data_FuelCounsumpThisTime();
    /*加油后行车信息*/
    Data_Info_Last_Refueling();

}
/*============================================================================*/

/*******************************************************************************
*                                                                              *
*                     系统休眠模式(SYS_MODE_SLEEP)任务列表                     *
*                                                                              *
*******************************************************************************/
/*==============================================================================
休眠模式下执行的后台任务
------------------------------------------------------------------------------*/
void Sys_Sleep_Mode_Tasks(void)
{

}
/*============================================================================*/

/*******************************************************************************
*                                                                              *
*                           精确的50us计时任务列表                             *
*                                                                              *
*******************************************************************************/
/*==============================================================================
精确的50us计时任务 禁止添加修改列表中的任务
------------------------------------------------------------------------------*/
void Sys_Exact_50us_Tasks(void)
{
    static uint16_t PerCounter = 0u;
    Sys_Rolling();
    COM_NM_Process();
    COM_TX_Process();
    DoCAN_Timer_Update(50);
    //TimerB_Fre_Timeout(50);
    Cal_Veh_Cycle(SPEED_SIGNAL_MCU_IN);
    PerCounter++;
    if (PerCounter >= 20 * 5)
    {
        PerCounter = 0u;
        SEG_LCD_Window_Control_Service();
    }
    Buzzer_Play_ISR();
}
/*============================================================================*/

/*******************************************************************************
*                                                                              *
*                           精确的100ms计时任务列表                            *
*                                                                              *
*******************************************************************************/
/*==============================================================================
精确的100ms计时任务 禁止添加修改列表中的任务
------------------------------------------------------------------------------*/
void Sys_Exact_100ms_Tasks(void)
{
    Data_Mileage_ISR();
    Service_OFF_Timing_Process();
    Fuel_User_KL15_OFF_Processing_Service();
}
/*============================================================================*/


void APP_Startup_Init (uint8_t startMode)
{
    Power_Management_Init(startMode);
}