sntp.h
浏览该文件的文档.
1 /*
2  * Copyright (C) 2017 XRADIO TECHNOLOGY CO., LTD. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the
12  * distribution.
13  * 3. Neither the name of XRADIO TECHNOLOGY CO., LTD. nor the names of
14  * its contributors may be used to endorse or promote products derived
15  * from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29 
30 #ifndef _NET_SNTP_H_
31 #define _NET_SNTP_H_
32 
33 #include <stdint.h>
34 #include "lwip/sockets.h"
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif
39 
44 #define SNTP_PORT 123
45 #define SNTP_SUPPORT_MULTIPLE_SERVERS 1
46 #if SNTP_SUPPORT_MULTIPLE_SERVERS
47 #define SNTP_MAX_SERVERS 3
48 #endif
49 #ifndef SNTP_RECV_TIMEOUT
50 #define SNTP_RECV_TIMEOUT 3000 /* ms */
51 #endif
52 #define SNTP_RETRY_TIMEOUT SNTP_RECV_TIMEOUT
53 #define SNTP_RETRY_TIMES 3
54 
55 #define SNTP_SERVER_ADDRESS "pool.ntp.org"
56 
57 typedef struct {
58  char *server_name; /* remote server name, if this is not NULL, this will be preferred. */
59  int recv_timeout; /* the receive timeout from ntp server */
60  uint8_t retry_times; /* the retry times when receiver timeout */
61 } sntp_arg;
62 
63 typedef struct {
64  uint8_t sec;
65  uint8_t min;
66  uint8_t hour;
67  uint8_t day;
68  uint8_t mon;
69  uint8_t week;
70  uint8_t year;
71 } sntp_time;
72 
73 int sntp_request(void *arg);
75 
76 int sntp_get_time(sntp_arg *arg, struct timeval *ntp_time);
77 #if SNTP_SUPPORT_MULTIPLE_SERVERS
78 int sntp_set_server(uint8_t idx, char *server_name);
79 #endif
80 
81 /*
82 * check if last sntp query is OK
83 * @param: None
84 * @retval: 0 success -1 fail
85 */
87 
88 /*
89 * set system calender time directly
90 * @param: current time in millisecond
91 * @retval: 0 success -1 fail
92 */
93 int sntp_set_time_direct(long long now_ms);
94 
95 #ifdef USE_RECORD_CALENDAR_TIME
96 /*
97 * update calendar time from file
98 * @param: none
99 * @retval: none
100 */
101 void update_calendar_time_from_file(void);
102 
103 /*
104 * record calendar time to file
105 * @param: current time in millisecond
106 * @retval: none
107 */
108 void record_calendar_time(long long ms);
109 #endif
110 
111 #ifdef __cplusplus
112 }
113 #endif
114 
115 #endif /* _NET_SNTP_H_ */
116 
sntp_time * sntp_obtain_time(void)
uint8_t retry_times
Definition: sntp.h:60
char * server_name
Definition: sntp.h:58
uint8_t week
Definition: sntp.h:69
int sntp_last_query_status(void)
uint8_t day
Definition: sntp.h:67
int sntp_set_server(uint8_t idx, char *server_name)
uint8_t year
Definition: sntp.h:70
int sntp_request(void *arg)
int recv_timeout
Definition: sntp.h:59
int sntp_get_time(sntp_arg *arg, struct timeval *ntp_time)
uint8_t mon
Definition: sntp.h:68
uint8_t min
Definition: sntp.h:65
uint8_t sec
Definition: sntp.h:64
int sntp_set_time_direct(long long now_ms)
uint8_t hour
Definition: sntp.h:66
Definition: sntp.h:57
Definition: sntp.h:63