#include "app.h"
#include "app_timer.h"
#include "stdio.h"
#include "string.h"

#include "bsp_Uart.h"
#include "bsp_Wdg.h"
#include "bsp_Led.h"
#include "bsp_74HC4067.h"
#include "bsp_Flash.h"

#include "proto_modbus_master_tdlas.h"
#include "proto_modbus_slave_ex.h"

#include "gui_tjc_hmi.h"

const char *HwVersion = "V1.0";
char SwVersion[24] = "V0.001.0";
void task_idle(void); 
void task_10ms(void);
void task_50ms(void);
void task_100ms(void);
void task_200ms(void);
void task_500ms(void);
void task_1s(void);
void task_2s(void);

#define APP_TIMER_TASK_NUM (sizeof(app_timer_task) / sizeof(app_timer_class_t))

/*定义任务*/
app_timer_class_t app_timer_task[] = 
{
    {0,  1,   1,    task_idle  },   /*空闲任务一直执行*/
    {0,  3,   10,   task_10ms  },
    {0,  7,   50,   task_50ms  },
    {0,  11,  100,  task_100ms },
    {0,  13,  200,  task_200ms },
    {0,  17,  500,  task_500ms },
    {0,  19,  1000, task_1s    },
    {0,  23,  2000, task_2s    },
};

/******************************************
 * 函数: AppInit
 * 功能: 初始化
 * 参数: 无
 * 返回: 无
 * 描述: 无
 ******************************************/
void app_init(void)
{
    Usr_Flash.Init();
    
    /*串口初始化*/
    com_uart1.init(&com_uart1);
    com_uart2.init(&com_uart2);
    com_uart4.init(&com_uart4);
    
    UartCH_Config.init();

    app_timer.init(APP_TIMER_TASK_NUM,app_timer_task);      /*分时复用，时间片轮询*/
    tjc_hmi.init();
    led.init();
    
    //Wdg.Init(); 
}

/******************************************
 * 函数: App_task
 * 功能: 分时复用
 * 参数: 无
 * 返回: 无
 * 描述: 主循环中调用
 ******************************************/
void app_task(void)
{
    app_timer.task();
    task_idle(); 
}
/*空闲执行的函数*/
void task_idle(void)
{
    com_uart1.rx_task(&com_uart1);
    com_uart2.rx_task(&com_uart2);
    com_uart4.rx_task(&com_uart4);
}

void task_10ms(void)
{
}

void task_50ms(void)
{

}

void task_100ms(void)
{

}

void task_200ms(void)
{
    
}

void task_500ms(void)
{
    led.task();
}
    

void task_1s(void)
{
    
}

void task_2s(void)
{
    
}

