File: ts2phc_pps_source.h

package info (click to toggle)
linuxptp 4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,536 kB
  • sloc: ansic: 26,119; sh: 92; makefile: 87
file content (56 lines) | stat: -rw-r--r-- 1,595 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/**
 * @file ts2phc_pps_source.h
 * @note Copyright (C) 2019 Richard Cochran <richardcochran@gmail.com>
 * @note SPDX-License-Identifier: GPL-2.0+
 */
#ifndef HAVE_TS2PHC_PPS_SOURCE_H
#define HAVE_TS2PHC_PPS_SOURCE_H

#include <time.h>

struct config;

/**
 * Opaque type
 */
struct ts2phc_private;
struct ts2phc_pps_source;

/**
 * Defines the available PPS sources.
 */
enum ts2phc_pps_source_type {
	TS2PHC_PPS_SOURCE_GENERIC,
	TS2PHC_PPS_SOURCE_NMEA,
	TS2PHC_PPS_SOURCE_PHC,
};

/**
 * Create a new instance of a PPS source.
 * @param priv	Pointer to the program's data structure.
 * @param dev   Name of the source or NULL.
 * @param type	The type of the clock to create.
 * @return	A pointer to a new PPS source on success, NULL otherwise.
 */
struct ts2phc_pps_source *ts2phc_pps_source_create(struct ts2phc_private *priv,
						   const char *dev,
						   enum ts2phc_pps_source_type type);

/**
 * Destroy an instance of a PPS source.
 * @param src Pointer to a source obtained via @ref ts2phc_pps_source_create().
 */
void ts2phc_pps_source_destroy(struct ts2phc_pps_source *src);

/**
 * Returns the time on the PPS source device at which the most recent
 * PPS event was generated.
 * @param src    Pointer to a source obtained via @ref ts2phc_pps_source_create().
 * @param ts     Buffer to hold the time of the last PPS event.
 * @return       Zero if the reported time is valid, non-zero otherwise.
 */
int ts2phc_pps_source_getppstime(struct ts2phc_pps_source *src, struct timespec *ts);

struct ts2phc_clock *ts2phc_pps_source_get_clock(struct ts2phc_pps_source *src);

#endif