Zephyr API Documentation 4.1.99
A Scalable Open Source RTOS
 4.1.99
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
sntp.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Linaro Limited
3 * Copyright (c) 2019 Intel Corporation
4 *
5 * SPDX-License-Identifier: Apache-2.0
6 */
7
13#ifndef ZEPHYR_INCLUDE_NET_SNTP_H_
14#define ZEPHYR_INCLUDE_NET_SNTP_H_
15
16#include <zephyr/net/socket.h>
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
33struct sntp_time {
36#if defined(CONFIG_SNTP_UNCERTAINTY)
37 uint64_t uptime_us;
38 uint32_t uncertainty_us;
39#endif
40};
41
43struct sntp_ctx {
44
46 struct {
47 struct zsock_pollfd fds[1];
48 int nfds;
49 int fd;
50 } sock;
58};
59
69int sntp_init(struct sntp_ctx *ctx, struct sockaddr *addr,
70 socklen_t addr_len);
71
82int sntp_query(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts);
83
94int sntp_recv_response(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts);
95
101void sntp_close(struct sntp_ctx *ctx);
102
115int sntp_init_async(struct sntp_ctx *ctx, struct sockaddr *addr, socklen_t addr_len,
116 const struct net_socket_service_desc *service);
117
125int sntp_send_async(struct sntp_ctx *ctx);
126
140
146void sntp_close_async(const struct net_socket_service_desc *service);
147
161int sntp_simple(const char *server, uint32_t timeout,
162 struct sntp_time *ts);
163
179int sntp_simple_addr(struct sockaddr *addr, socklen_t addr_len, uint32_t timeout,
180 struct sntp_time *ts);
181
182#ifdef __cplusplus
183}
184#endif
185
190#endif
size_t socklen_t
Length of a socket address.
Definition net_ip.h:172
void sntp_close(struct sntp_ctx *ctx)
Release SNTP context.
int sntp_simple(const char *server, uint32_t timeout, struct sntp_time *ts)
Convenience function to query SNTP in one-shot fashion.
int sntp_query(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts)
Perform SNTP query.
int sntp_init_async(struct sntp_ctx *ctx, struct sockaddr *addr, socklen_t addr_len, const struct net_socket_service_desc *service)
Initialise SNTP context for async operation.
int sntp_simple_addr(struct sockaddr *addr, socklen_t addr_len, uint32_t timeout, struct sntp_time *ts)
Convenience function to query SNTP in one-shot fashion using a pre-initialized address struct.
int sntp_recv_response(struct sntp_ctx *ctx, uint32_t timeout, struct sntp_time *ts)
Attempt to receive an SNTP response after issuing a query.
int sntp_init(struct sntp_ctx *ctx, struct sockaddr *addr, socklen_t addr_len)
Initialize SNTP context.
int sntp_send_async(struct sntp_ctx *ctx)
Send the SNTP query.
int sntp_read_async(struct net_socket_service_event *event, struct sntp_time *ts)
Read the result of the SNTP query.
void sntp_close_async(const struct net_socket_service_desc *service)
Release SNTP context.
BSD Sockets compatible API definitions.
BSD Socket service API.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
Main structure holding socket service configuration information.
Definition socket_service.h:70
This struct contains information which socket triggered calls to the callback function.
Definition socket_service.h:49
SNTP context.
Definition sntp.h:43
struct sntp_time expected_orig_ts
Timestamp when the request was sent from client to server.
Definition sntp.h:57
Time as returned by SNTP API, fractional seconds since 1 Jan 1970.
Definition sntp.h:33
uint64_t seconds
Second value.
Definition sntp.h:34
uint32_t fraction
Fractional seconds value.
Definition sntp.h:35
Generic sockaddr struct.
Definition net_ip.h:408
Definition of the monitored socket/file descriptor.
Definition socket_poll.h:31