/**
 * @file time_clock.h
 * @author Chen Jihang (embedded@eseaoptics.com)
 * @brief 提供与时间和时钟相关函数
 * @version 0.1
 * @date 2022-07-18
 * 
 * @copyright ESEA (c) 2020
 * 
 */
#ifndef TIME_CLOCK_H_
#define TIME_CLOCK_H_
#include "stdint.h"
#include "time.h"
struct time_clock_time
{
    uint64_t time_s;
    uint32_t time_ms;
};
struct time_clock_date
{
    uint8_t sec;
    uint8_t min;
    uint8_t hour;
    uint8_t mday;
    uint8_t wday;
    uint8_t mon;
    uint16_t year;
    uint16_t yday;
};

uint64_t time_clock_get_time_s(void);
uint32_t time_clock_get_time_ms(void);
struct time_clock_time *time_clock_get_time(struct time_clock_time *ptime);
int64_t time_clock_get_time_offset_ms(struct time_clock_time *ptime);
int64_t time_clock_get_time_offset_s(uint64_t time_s);
void time_clock_set_time(struct time_clock_time *ptime_to_set,struct time_clock_time *ptime);
struct time_clock_date *time_clock_time_to_date(uint64_t time_s,struct time_clock_date *date,int8_t time_zone);
uint64_t time_clock_date_to_time(struct time_clock_date *date,int8_t time_zone);
uint32_t time_clock_get_time_str(char *buf,int8_t time_zone);
void time_clock_tick_callback(void);
#endif