/*
 * @Description: RTC模块-svc层
 * @Author: yangsw
 * @Date: 2021-05-19 17:20:33
 * @LastEditTime: 2022-06-11 11:50:57
 * @LastEditors: yangsw
 * @Reference:
 */
#include "svc_rtc.h"
#include "../../util/util_data.h"
#include "../../log/svc/svc_log.h"
#include "../../cloud/svc/svc_cloud_protocol.h"
#include "../../cloud/svc/svc_cloud.h"
#include "../../flash/svc/svc_flash.h"

/**
 * @brief: RTC模块初始化
 * @param  {void}
 * @return {void}
 * @note:
 * @see:
 */
void Svc_Rtc_Init(void)
{
    Bsp_Rtc_Init();
}

/**
 * @brief: 获取时间
 * @return
 * @note:
 * @see:
 * @param
 */
E_Result_State Svc_Rtc_Get_Time(gw_u32 *Now, gw_u32 *Last)
{
    gw_u32 NowData;
    gw_u32 LastData;
    S_Cloud *ps_cloud_data;
    ps_cloud_data = Svc_Cloud_Get_Data();
    NowData = ps_cloud_data->s_manage.u32SystemTime;
    LastData = ps_cloud_data->s_manage.u32LastSystemTime;
    if ((LastData > NowData) && ((LastData - NowData) == 1))
    {
        NowData = LastData;
    }
    *Now = NowData;
    *Last = LastData;
    return E_STATE_SUCCESS;
}

void Svc_Rtc_Updata_Time(void)
{
    S_Cloud *ps_cloud_data;
    ps_cloud_data = Svc_Cloud_Get_Data();
    ps_cloud_data->s_manage.u32SystemTime++;
    if (ps_cloud_data->s_manage.u32SystemTime > ps_cloud_data->s_manage.u32LastSystemTime)
    { /*如果时间校准导致时间倒走，上一次的系统时间将不再更新，直到当前时间大于上一次系统时间*/
        ps_cloud_data->s_manage.u32LastSystemTime = ps_cloud_data->s_manage.u32SystemTime;
    }
    Svc_Cloud_Refresh_Time();
}
