/*************************************************************************************
 * @File Name: main.c
 * @brief    
 * @Version : 1.0
 * @Create Date : 2024-12-02
 * @Author : TianyunV1 email : 3026007337@qq.com
 * 
 * @copyright Copyright (c) 2024 Tianyun Mountain
 * 
 * modification history :
 * Date:   Version:  Author:  Description:   
 *************************************************************************************/
/* 系统级 或 内部库函数 */
#include "misc.h"
/* 应用端 */
#include "app_led.h"
#include "app_motor.h"
#include "app_ir_controller.h"
#include "app_global.h"
#include "app_rt_tem_humidity.h"
#include "app_rtc.h"
/* 中间件 */
#include "mw_led.h"
#include "mw_bluetooth.h"
#include "mw_ir_controller.h"
#include "mw_debug_log.h"
#include "mw_dht11.h"
#include "mw_rtc.h"
#include "mw_rtc_define.h"
#include "mw_oled.h"
/* 板级支持包 */
#include "bsp_timer.h"
#include "bsp_usart.h"
#include "bsp_motor.h"
#include "bsp_oled.h"
#include "bsp_flash.h"

/*************************************************************************************
 * @brief    bsp init.
 * 
 * @warning  
 * @note     
 *************************************************************************************/
void bsp_init(void)
{
    /* Timer 定时器初始化 */
    bsp_timer_init();
    /*  usart 初始化 */
    //      全局变量初始化
    bsp_usartTotalInit();
    //      debug初始化
    bsp_usart_debug_init();

    DEBUG_LOG("Init start ======>>>  \n");
    DEBUG_LOG("bsp init well >>>");
}
/*************************************************************************************
 * @brief    【描述】
 * 
 * @warning  【不可重入,阻塞等警告】
 * @note     【重大修改】
  *************************************************************************************/
void middleware_init(void)
{
    /* led 驱动初始化 */
    mw_led_init();
    // /* <2> 红外控制器 驱动初始化 */
    // mw_ir_controller_init();
    // /* <3> dht11 温湿度传感器初始化 */
    // mw_dht11_init();
    // /* <4> rtc 初始化 */
    // mw_rtc_init();
    DEBUG_LOG("middleware init well >>>");
}
/*************************************************************************************
 * @brief    app 应用类 初始化函数
 * 
 * @warning  【不可重入,阻塞等警告】
 * @note     【重大修改】
  *************************************************************************************/
void app_init(void)
{
    app_led_init();
// #if DHT11_ENABLE > 0
//     app_rt_tem_humd_init();
// #endif
    // app_motor_init();
// #if RTCTYPE_DEFINE != RTCTYPE_NULL
//     app_rtc_init();
// #endif
    DEBUG_LOG("application init well >>> init finish! \n");
}
/*************************************************************************************
 * @brief    main函数
 * @return int         【返回值注释】
 * 
 * @warning  【不可重入,阻塞等警告】
 * @note     【重大修改】
  *************************************************************************************/
int main(void)
{
    /* 配置NVIC优先组 */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    /* bsp 板级初始化 */
    bsp_init();
    /* mw 中间件驱动初始化 */
    middleware_init();
    /* app 应用层初始化 */
    app_init();
    /* 主程序运行 */
    // DEBUG_LOG("running ...  \n");
    while (1)
    {
        /* led运行指示器 运行函数 */
        // app_led_runMode_indicator_mainProcess();
        app_led_indicator_task();
        // bsp_pwm_test_loop();
    // /* motor电机 运行程序 */
    // #if MOTOR_DRV_ENABLE > 0
    //     app_motor_mainProcess();
    // #endif
    
    // /* IR 红外控制器 运行程序 */
    // #if IR_COMM_ENABLE > 0
    //     app_irControllerProcess();
    // #endif

    // /* RGB三色灯 运行程序 */
    // #if LED_RGB_ENABLE > 0
    //     app_RGB_process();
    // #endif

    // /* 温湿度读取 */
    // #if DHT11_ENABLE > 0
    //     app_get_realtime_tem_humidity();
    // #endif
    
    // /* RTC 读取 */
    // #if RTCTYPE_DEFINE != RTCTYPE_NULL
    //     app_read_rtc_process();
    // #endif
    }
}
