blob: 979348383f207efc9cd04818c5822f07573c8be6 [file] [log] [blame]
/*
* Copyright (c) 2017 Linaro Limited
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef __SNTP_PKT_H
#define __SNTP_PKT_H
#include <zephyr/types.h>
#define SNTP_LI_MASK 0xC0
#define SNTP_VN_MASK 0x38
#define SNTP_MODE_MASK 0x07
#define SNTP_LI_SHIFT 6
#define SNTP_VN_SHIFT 3
#define SNTP_MODE_SHIFT 0
#define SNTP_GET_LI(x) ((x & SNTP_LI_MASK) >> SNTP_LI_SHIFT)
#define SNTP_GET_VN(x) ((x & SNTP_VN_MASK) >> SNTP_VN_SHIFT)
#define SNTP_GET_MODE(x) ((x & SNTP_MODE_MASK) >> SNTP_MODE_SHIFT)
#define SNTP_SET_LI(x, v) (x = x | (v << SNTP_LI_SHIFT))
#define SNTP_SET_VN(x, v) (x = x | (v << SNTP_VN_SHIFT))
#define SNTP_SET_MODE(x, v) (x = x | (v << SNTP_MODE_SHIFT))
struct sntp_pkt {
uint8_t lvm; /* li, vn, and mode in big endian fashion */
uint8_t stratum;
uint8_t poll;
uint8_t precision;
uint32_t root_delay;
uint32_t root_dispersion;
uint32_t ref_id;
uint32_t ref_tm_s;
uint32_t ref_tm_f;
uint32_t orig_tm_s; /* Originate timestamp seconds */
uint32_t orig_tm_f; /* Originate timestamp seconds fraction */
uint32_t rx_tm_s; /* Receive timestamp seconds */
uint32_t rx_tm_f; /* Receive timestamp seconds fraction */
uint32_t tx_tm_s; /* Transmit timestamp seconds */
uint32_t tx_tm_f; /* Transmit timestamp seconds fraction */
} __packed;
#endif