TIME (v1.1)¶
tiny_time.h¶
```c /** * @file tiny_time.h * @author SHUAIWEN CUI (SHUAIWEN001@e.ntu.edu.sg) * @brief Submodule for TinyToolbox - header file * @version 1.1 * @date 2025-04-10 * @copyright Copyright © 2025 * */
pragma once¶
/* ================================ DEPENDENCIES ================================ */
include ¶
include ¶
include ¶
include ¶
include ¶
include ¶
include "esp_log.h"¶
include "esp_timer.h"¶
include "esp_sntp.h"¶
include "node_rtc.h"¶
include "freertos/FreeRTOS.h"¶
include "freertos/semphr.h"¶
ifdef __cplusplus¶
extern "C" {
endif¶
/* ================================ DEFINITIONS ================================= */
typedef int64t TinyTimeMarkt;
typedef struct TinyDateTimet { int year; int month; int day; int hour; int minute; int second; int32t microsecond; } TinyDateTime_t;
typedef struct TinyNtpSynct { uint32t unixsec; uint64t localusanchor; uint64t lastsynctimeus; uint8t syncquality; bool issynced; } TinyNtpSynct;
/* ================================ FUNCTIONS =================================== */
/* LOCAL RUNNING TIME */ TinyTimeMarkt tinygetrunningtime(void);
/* WORLD CURRENT TIME - SNTP */ void synctimewithtimezone(const char *timezonestr);
/* WORLD CURRENT TIME - GET */ TinyDateTimet tinygetcurrentdatetime(bool print_flag);
/* UNIX TIMESTAMP CONVERSION */ bool tinyunixtodatetime(uint32t unixsec, TinyDateTimet *dt); bool tinyunixustodatetime(uint64t unixus, TinyDateTimet *dt); uint32t tinydatetimetounix(const TinyDateTimet *dt); bool tinyisvaliddatetime(const TinyDateTimet *dt);
static inline bool tinyisleapyear(uint16t year) { return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); }
/* TIME FORMATTING AND DISPLAY */ int tinyformatdatetimeiso8601(const TinyDateTimet *dt, char *buf, sizet buflen); int tinyformatdatetimeus(const TinyDateTimet *dt, char *buf, sizet buflen); int tinyformatdatetimems(const TinyDateTimet *dt, char *buf, sizet buflen); int tinyformatunixsec(uint32t unixsec, char *buf, sizet buflen); int tinyformatunixus(uint64t unixus, char *buf, sizet buflen); int tinyformatdurationus(uint64t durationus, char *buf, size_t buflen);
/* NTP SYNCHRONIZATION HOOK / void tinyntpsetsynchook(bool (hook)(uint32t unixsec));
/* NTP SYNCHRONIZATION */ bool tinyntprecordsync(uint32t unixsec); uint64t tinyntpgetworldtimeus(void); bool tinyntpgetsyncinfo(TinyNtpSynct *syncinfo); bool tinyntpissynced(void); void tinyntpsetquality(uint8t quality); bool tinyntpgetdatetimeus(TinyDateTime_t *dt);
ifdef __cplusplus¶
}