MeterLogger
unix_time.c
Go to the documentation of this file.
1 #include <esp8266.h>
2 #include "debug.h"
3 #include "unix_time.h"
4 #include <sntp.h>
5 
7 
8 uint32_t init_time = 0;
11 
12 uint64_t boot_time;
13 
15 
16 ICACHE_FLASH_ATTR void static sntp_check_timer_func(void *arg) {
18 
19  if (current_unix_time == 0) {
21  os_timer_arm(&sntp_check_timer, 2000, 0);
22  } else {
24  // save init time for use in get_uptime()
25  if (init_time == 0) { // only set init_time at boot
26  os_timer_disarm(&ntp_offline_second_counter_timer); // stop offline second counter
27 
29  }
30  }
31 }
32 
35 }
36 
38  // init sntp
39  sntp_setservername(0, "dk.pool.ntp.org"); // set server 0 by domain name
40  sntp_setservername(1, "us.pool.ntp.org"); // set server 1 by domain name
41  sntp_set_timezone(0); // UTC time
42  sntp_init();
43 
44  // start timer to make sure we go ntp reply
47  os_timer_arm(&sntp_check_timer, 2000, 0);
48 
52  os_timer_arm(&ntp_offline_second_counter_timer, 1000, 1); // every seconds
53 }
54 
57 
58  return current_unix_time;
59 }
60 
61 ICACHE_FLASH_ATTR uint32_t get_uptime(void) {
63  if (init_time == 0) {
65  }
66  else {
68  }
69 }
static os_timer_t ntp_offline_second_counter_timer
Definition: unix_time.c:14
ICACHE_FLASH_ATTR uint32_t get_unix_time(void)
Definition: unix_time.c:55
void sntp_init(void)
#define os_timer_t
Definition: os_type.h:34
#define os_timer_disarm
Definition: osapi.h:51
uint32 sntp_get_current_timestamp()
#define NULL
Definition: def.h:47
#define ICACHE_FLASH_ATTR
Definition: c_types.h:99
#define os_timer_func_t
Definition: os_type.h:35
ICACHE_FLASH_ATTR static void ntp_offline_second_counter_timer_func(void *arg)
Definition: unix_time.c:33
uint64_t boot_time
Definition: unix_time.c:12
ICACHE_FLASH_ATTR uint32_t get_uptime(void)
Definition: unix_time.c:61
#define os_timer_setfn
Definition: osapi.h:52
uint32_t init_time
Definition: unix_time.c:8
ICACHE_FLASH_ATTR static void sntp_check_timer_func(void *arg)
Definition: unix_time.c:16
void sntp_setservername(u8_t idx, char *server)
static os_timer_t sntp_check_timer
Definition: unix_time.c:6
#define os_timer_arm(a, b, c)
Definition: osapi.h:50
uint32_t ntp_offline_second_counter
Definition: unix_time.c:10
bool sntp_set_timezone(sint8 timezone)
ICACHE_FLASH_ATTR void init_unix_time(void)
Definition: unix_time.c:37
uint32_t current_unix_time
Definition: unix_time.c:9