Newer
Older
Tardis / include / Clock.h
/*
SPDX-License-Identifier: MIT
Copyright (c) 2023 John Watts and the LuminaSensum contributors
*/

#ifndef CLOCK_H
#define CLOCK_H

#include "NetworkInterface.h"
#include "mbed.h"
#include "sntp.h"
#include <chrono>
#include <time.h>

typedef std::chrono::time_point<Kernel::Clock> kernel_timepoint;

struct timeval microseconds_to_timeval(std::chrono::microseconds val);
std::chrono::microseconds timeval_to_microseconds(struct timeval val);

void clock_setup(void);
std::chrono::microseconds clock_time(kernel_timepoint time);
kernel_timepoint kernel_time(std::chrono::microseconds time);
std::chrono::microseconds clock_now(void);

SNTPError clock_sync(NetworkInterface &net);

const char *clock_timestring(struct timeval time, const char *format);
const char *clock_iso8601string(void);

#endif