#include "app_rtc.h"

#include "mw_rtc.h"
#include "mw_soft_timer.h"
#include "bsp_oled.h"

#define RTC_READ_PERIOD_MS      (250u)

/* 测试rtc设置功能 */
rtc_time_infor test_set_rtc_time;
/* 测试 rtc 获取时间功能 */
rtc_time_infor test_get_rtc_time;

uint8_t test_set_rtc_time_flag = 0;
/* 测试 rtc写入时间 结果 */
uint8_t test_set_rtc_result = RET_ERROR;
/*************************************************************************************
 * @brief    app应用端 初始化rtc 
 * 
 * @warning  【不可重入,阻塞等警告】
 * @note     【重大修改】
  *************************************************************************************/
void app_rtc_init(void)
{
    /* 初始化定义读取rtc的周期 */
    mw_softTimer_rtcRead_config(RTC_READ_PERIOD_MS);
}

/*************************************************************************************
 * @brief    周期读取RTC的值
 * 
 * @warning  【不可重入,阻塞等警告】
 * @note     【重大修改】
  *************************************************************************************/
void app_read_rtc_process(void)
{
    rtc_time_infor tmp_rtc_time_infor;

    if(mw_softTimer_get_rtcRead_timeUp_flag() > 0)
    {
        /* 重新配置读取rtc时间功能 */
        mw_softTimer_rtcRead_config(RTC_READ_PERIOD_MS);
        /* 读取时间有效 */
        if(mw_get_rtc_time(&tmp_rtc_time_infor) == RET_OK)
        {
            test_get_rtc_time = tmp_rtc_time_infor;
        }
        
        OLED_ShowHexNum(3, 1, 0x20, 2);
        OLED_ShowHexNum(3, 3, test_get_rtc_time.year, 2);
        OLED_ShowString(3, 5, "-");
        OLED_ShowHexNum(3, 6, test_get_rtc_time.month, 2);
        OLED_ShowString(3, 8, "-");
        OLED_ShowHexNum(3, 9, test_get_rtc_time.day, 2);
        // OLED_ShowHexNum(3, 1, 0x20, 2);
        OLED_ShowHexNum(4, 3, test_get_rtc_time.hour, 2);
        OLED_ShowString(4, 5, ":");
        OLED_ShowHexNum(4, 6, test_get_rtc_time.minute, 2);
        OLED_ShowString(4, 8, ":");
        OLED_ShowHexNum(4, 9, test_get_rtc_time.second, 2);

    }
    /* 触发 设置rtc时间 */
    if(test_set_rtc_time_flag > 0)
    {
        test_set_rtc_time_flag = 0;
        test_set_rtc_result = mw_set_rtc_time(test_set_rtc_time);
    }

}

