Implement SNTP client

PUBLISHED_FROM=ac54bcbc81a9ee688e8b90e261172be76a9fbacd
This commit is contained in:
Alexander Alashkin authored and Cesanta Bot committed 2016-11-24 09:51:58 +00:00
1 parent 1ff61837ac
commit 9e517fde00
4 files changed
+406

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
PROG = sntp_client
MODULE_CFLAGS = -DMG_ENABLE_SNTP
include ../examples.mk
+51
View File
@@ -0,0 +1,51 @@
/*
* Copyright (c) 2016 Cesanta Software Limited
* All rights reserved
*/
#include "mongoose.h"
static int s_exit_flag = 0;
static const char *s_default_server = "pool.ntp.org";
static void ev_handler(struct mg_connection *c, int ev, void *ev_data) {
struct mg_sntp_message *sm = (struct mg_sntp_message *) ev_data;
time_t t;
(void) c;
switch (ev) {
case MG_SNTP_REPLY:
t = time(NULL);
fprintf(stdout, "Local time: %s", ctime(&t));
t = (time_t) sm->time;
fprintf(stdout, "Time from %s: %s", s_default_server, ctime(&t));
s_exit_flag = 1;
break;
case MG_SNTP_FAILED:
fprintf(stderr, "Failed to get time\n");
s_exit_flag = 1;
break;
}
}
int main() {
struct mg_mgr mgr;
struct mg_connection *c;
mg_mgr_init(&mgr, NULL);
c = mg_sntp_get_time(&mgr, ev_handler, s_default_server);
if (c == NULL) {
fprintf(stderr, "Failed to connect to %s\n", s_default_server);
return -1;
}
while (s_exit_flag == 0) {
mg_mgr_poll(&mgr, 1000);
}
mg_mgr_free(&mgr);
return 0;
}