DeterministicESPAsyncWebServer v6.27.1
Zero-allocation, bounded-execution async HTTP server for ESP32
Loading...
Searching...
No Matches
time_source.cpp File Reference

Multi-source time fallback matrix - implementation. More...

Go to the source code of this file.

Functions

bool detws_time_source_add (const char *, uint8_t, TimeSourceFn)
 Register a time source.
 
uint32_t detws_time_now (void)
 Current best time.
 
const char * detws_time_source_active (void)
 Name of the source that satisfied the last detws_time_now(), or nullptr.
 
void detws_time_source_reset (void)
 Clear all registered sources.
 
size_t detws_time_http_date (char *out, size_t out_cap)
 The current best time (detws_time_now, any registered NTP / GPS / RTC / ... source) formatted as an RFC 7231 IMF-fixdate into out.
 

Detailed Description

Multi-source time fallback matrix - implementation.

A fixed BSS table of sources queried in ascending priority. See time_source.h.

Definition in file time_source.cpp.

Function Documentation

◆ detws_time_source_add()

bool detws_time_source_add ( const char *  name,
uint8_t  priority,
TimeSourceFn  fn 
)

Register a time source.

Parameters
namestable label (referenced by pointer; must outlive the source - point it at a string literal / static, like the rest of the lib).
prioritylower value = higher priority (queried first).
fnthe source callback.
Returns
true if registered; false if fn is null or the table is full.

Definition at line 101 of file time_source.cpp.

◆ detws_time_now()

uint32_t detws_time_now ( void  )

Current best time.

Queries registered sources in ascending priority and returns the first nonzero epoch (stopping at the first valid source). Returns 0 if none have valid time.

Definition at line 105 of file time_source.cpp.

Referenced by detws_time_http_date().

◆ detws_time_source_active()

const char * detws_time_source_active ( void  )

Name of the source that satisfied the last detws_time_now(), or nullptr.

Definition at line 109 of file time_source.cpp.

◆ detws_time_source_reset()

void detws_time_source_reset ( void  )

Clear all registered sources.

Definition at line 113 of file time_source.cpp.

◆ detws_time_http_date()

size_t detws_time_http_date ( char *  out,
size_t  out_cap 
)

The current best time (detws_time_now, any registered NTP / GPS / RTC / ... source) formatted as an RFC 7231 IMF-fixdate into out.

Returns
bytes written, or 0 with an empty out when no source currently has a valid time.

This is what lets the HTTP Date: header be fed by whatever time source is enabled, not just NTP: register RTC / GPS / NTP via detws_time_source_add() and the header follows the priority.

Definition at line 122 of file time_source.cpp.

References detws_http_date(), and detws_time_now().