X2UWaterWmbusEEI/hardinterface/inc/UWater_rtcc_driver.h

151 lines
4.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
* @Copyright (c) :(C)2020, Qingdao ieslab Co., Ltd
* @FileName :hc32_rtcc_driver.h
* @Author :Kv-L
* @Version :V1.0
* @Date :2020年7月1日 16:06:02
* @Description :the function of the entity of GP22Gas_rtcc_driver.h
*******************************************************************************/
#ifndef __UWater_RTCC_DRIVER_H
#define __UWater_RTCC_DRIVER_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "ddl.h"
#include "type.h"
#include "time.h"
#define difftime(t1, t0) ((double)((time_t)(t1)-(time_t)(t0)))
#define RTC_TIMER_EN 1
/*RTCC定时器当量选择*/
#define RTC_TIMER_RPT_SEC 1 //1s当量 1:选择 0不选择
#define RTC_TIMER_RPT_MIN 0 //1min
#define RTC_TIMER_RPT_HOUR 0 //1hour
#define RTC_TIMER_RPT_DAY 0 //1day
#define RTC_TIMER_RPT_WEEK 0 //1week
#define RTC_TIMER_RPT_MON 0 //1mon
#define RTC_TIM_MAX_NUM 15
#define RTCC_TIMER_BAT_NUM 0 //3s
#define RTCC_TIMER_LCD_NUM 1 //60s
#define RTCC_TIMER_LCD_METSTATUES 2 //1s
#define RTCC_TIMER_GP30_NUM 3 //小时
//#define TIMER_RTCC_DELAY_UPLOAD 4 //1s
#define TIMER_DATE_SAVE_MONITOR 5 //1min------------------------
#define TIMER_RTCC_TEST_SELF 6
#define RTCC_MIJI_WAIT_TIME 7
#define RTCC_GP30_INTERRUPT_TIME 8
#define RTCC_TOF_CALIBERATE_TIME 9 // 反算单程时间校准超时防护
#define RTCC_CARD_KEY_TIME 10
#define RTCC_CARD_SEARCH_TIME 11
#define FLOW_DETECT_TIME 12// 5s---流速度检测定时
#define RTCC_TIMER_CLKTRIM_TOTAL 13
#define RTCC_BLE_ACTIVE_TIME 14
typedef union
{
struct
{
u8 year;
u8 month;
u8 day;
u8 weekday;
u8 hour;
u8 minute;
u8 second;
} s; //日历和时间结构体
u8 b[7]; // BYTE access
} DateTime;
typedef union
{
struct
{
u8 year;
u8 month;
u8 day;
u8 hour;
u8 minute;
u8 second;
} s; //日历和时间结构体
u8 b[6]; // BYTE access
} DateTime_noweek;
typedef union
{
struct
{
u8 year;
u8 month;
u8 day;
u8 weekday;
} s; //日历结构体
u8 b[4]; // BYTE access
} Date;
typedef union
{
struct
{
u8 hour;
u8 minute;
u8 second;
} s; //时间结构体
u8 b[3]; // BYTE access
} Time;
#define RTCC_TIMEOUT_US 1000 //timeout time 1000us
u8 RtccInit(void);
void RtccSetDateTime(DateTime *pDT);
u8 RtccGetDateTime(DateTime *pDT);
void RtccGetDate(Date *pD);
void RtccGetTime(Time *pT);
void RtccAdjustDateTime(u8 adjust, u32 sec);
void RtccSetTimer(u8 rtcc_timenum, u16 rtcc_timespan);
u16 RtccCheckTimer(u8 rtcc_timenum);
void RtccSetAlrm(DateTime *pDT);
//void RtccSetAlrm(u8 count, u32 cycle);
void RtccGetAlrm(DateTime *pDT);
u8 RtccCheckMsg(void);
void RtccClearMsg(u8 bit);
//void RtccGetAlrmTimeAfter(DateTime *pDT);
u8 Rtcc_Check_DateTime(DateTime *pDT);
s32 RtcccalculateDiffTime(const DateTime *newpD, const DateTime *oldpD);
void RtccAutoWakeupTimerEnable(u16 span_ms);
void RtccAutoWakeupTimerDisable(void);
u8 RtccWakeupCheckMsg(void);
void RtccWakeupClearMsg(void);
u8 RtccIfSleep(void);
void RtccPreSleep(void);
void RtccWakeSleep(void);
long RtccCalculateDiffTime(const DateTime *newpD, const DateTime *oldpD);
time_t get_mktime (DateTime *time_GMT);//标准时间准换为绝对秒数
time_t get_mktime_noweek (DateTime_noweek *time_GMT);//标准时间准换为绝对秒数
u8 RTC_ClkSource(void);
#if RTC_TIMER_EN
#if (1 != (RTC_TIMER_RPT_SEC + RTC_TIMER_RPT_MIN + RTC_TIMER_RPT_HOUR + RTC_TIMER_RPT_DAY + RTC_TIMER_RPT_WEEK + RTC_TIMER_RPT_MON))
#error "Rtcc timer config error!"
#endif
#endif
#ifdef __cplusplus
}
#endif
#endif
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/