Files
m241Neelima/components/ip_net2-6.9/vxcoreip/include/sntpsLib.h
T
2026-07-30 11:19:44 +05:30

151 lines
4.3 KiB
C

/* sntpsLib.h - SNTP server backward-compatible APIs library */
/*
* Copyright (c) 1997-2013 Wind River Systems, Inc.
*
* The right to copy, distribute or otherwise make use of this software
* may be licensed only pursuant to the terms of an applicable Wind River
* license agreement. No license to Wind River intellectual property rights
* is granted herein. All rights not licensed by Wind River are reserved
* by Wind River.
*/
/*
Modification history
--------------------
01b,13sep13,rjq Fix for WIND00431901.
01a,13oct09,rjq written
*/
#ifndef __INCsntpsh
#define __INCsntpsh
/*
****************************************************************************
* 1 DESCRIPTION
****************************************************************************
* Public header file of SNTP server APIs.
*/
/*
DESCRIPTION
This library contains the backward-compatible APIs provided by the WindRiver SNTP server.
INCLUDE FILES: ipcom_type.h, ipcom_time.h
*/
/* defines */
#define S_sntpsLib_INVALID_PARAMETER (M_sntpsLib | 1)
#ifdef __cplusplus
extern "C" {
#endif
/* Values for "request" parameter to clock hook routine. */
#define IPSNTPS_ID 1
#define IPSNTPS_RESOLUTION 2
#define IPSNTPS_TIME 3
typedef struct sntpsTimeData
{
ULONG seconds;
ULONG fraction;
} SNTP_TIMESTAMP;
IMPORT int ipsntpsGetTime(Ip_u32 *sec, Ip_u32 *frac);
/*******************************************************************************
*
* sntpsClockSet - assign a routine to access the reference clock
*
* This routine installs a hook routine that is called to access the
* reference clock used by the SNTP server. This hook routine must use the
* following interface:
* .CS
* STATUS sntpsClockHook (int request, void *pBuffer);
* .CE
* The hook routine should copy one of three settings used by the server to
* construct outgoing NTP messages into <pBuffer> according to the value of
* the <request> parameter. If the requested setting is available, the
* installed routine should return OK (or ERROR otherwise).
*
* This routine calls the given hook routine with the <request> parameter
* set to SNTPS_ID to get the 32-bit reference identifier in the format
* specified in RFC 1769. It also calls the hook routine with <request>
* set to SNTPS_RESOLUTION to retrieve a 32-bit value containing the clock
* resolution in nanoseconds. That value will be used to determine the 8-bit
* signed integer indicating the clock precision (according to the format
* specified in RFC 1769). Other library routines will set the <request>
* parameter to SNTPS_TIME to retrieve the current 64-bit NTP timestamp
* from <pBuffer> in host byte order. The routine sntpsNsecToFraction() will
* convert a value in nanoseconds to the format required for the NTP
* fractional part.
*
* Parameters:
* \is
* \i <pClockHookRtn>
* A pointer to the new interface to reference clock.
* \ie
*
* RETURNS: \is
* \i 'OK'.
* successful.
* \i 'ERROR'
* unsuccessful.
* \ie
*
* ERRNO:
*/
STATUS sntpsClockSet
(
FUNCPTR pClockHookRtn
);
/*******************************************************************************
*
* sntpsNsecToFraction - convert portions of a second to NTP format
*
* This routine is provided for convenience in fulfilling an SNTPS_TIME request
* to the clock hook. It converts a value in nanoseconds to the fractional part
* of the NTP timestamp format. The routine is not designed to convert
* non-normalized values greater than or equal to one second. Although the NTP
* time format provides a precision of about 200 pico-seconds, rounding errors
* in the conversion process decrease the accuracy as the input value increases.
* In the worst case, only the 24 most significant bits are valid, which reduces
* the precision to tenths of a micro-second.
*
* INTERNAL
* Floating-point calculations can't be used because some boards (notably
* the SPARC architectures) disable software floating point by default to
* speed up context switching. These boards abort with an exception when
* floating point operations are encountered.
*
* Parameters:
* \is
* \i <nsecs>
* nanoseconds to convert to binary fraction.
* \ie
*
* RETURNS: Value for NTP fractional part in host-byte order.
*
* ERRNO:
*/
ULONG sntpsNsecToFraction
(
ULONG nsecs
);
#ifdef __cplusplus
}
#endif
#endif /* __INCsntpsh */