1132451Sroberto/***********************************************************************
2132451Sroberto *
3132451Sroberto *  Module:  ttime_api.h
4132451Sroberto *
5132451Sroberto *  Author:  SIS  1998
6132451Sroberto *           LM NE&SS 2001
7132451Sroberto *
8132451Sroberto *  Description
9132451Sroberto *
10132451Sroberto *      This header file contains data necessary for the API to the
11132451Sroberto *      True Time board. This contains all of the structure definitions
12132451Sroberto *      for the individual registers.
13132451Sroberto *
14132451Sroberto ***********************************************************************/
15132451Sroberto#ifndef TTIME_API_H
16132451Sroberto#define TTIME_API_H
17132451Sroberto
18132451Sroberto#ifdef CPP
19132451Srobertoextern "C" {
20132451Sroberto#endif
21132451Sroberto
22132451Sroberto#include <time.h>
23132451Sroberto
24132451Srobertotypedef struct
25132451Sroberto{
26132451Sroberto    unsigned int	micro_sec;
27132451Sroberto    unsigned int	milli_sec;
28132451Sroberto    struct tm		gps_tm;
29132451Sroberto} gps_time_t;
30132451Sroberto
31132451Srobertotypedef struct
32132451Sroberto{
33132451Sroberto    unsigned char reserved_1;
34132451Sroberto    unsigned unit_ms		: 4;
35132451Sroberto    unsigned filler_0		: 4;
36132451Sroberto    unsigned hun_ms		: 4;
37132451Sroberto    unsigned tens_ms		: 4;
38132451Sroberto    unsigned tens_sec		: 4;
39132451Sroberto    unsigned unit_sec		: 4;
40132451Sroberto
41132451Sroberto    unsigned tens_min		: 4;
42132451Sroberto    unsigned unit_min		: 4;
43132451Sroberto    unsigned tens_hour		: 4;
44132451Sroberto    unsigned unit_hour		: 4;
45132451Sroberto    unsigned tens_day		: 4;
46132451Sroberto    unsigned unit_day		: 4;
47132451Sroberto    unsigned filler_1		: 4;
48132451Sroberto    unsigned hun_day		: 4;
49132451Sroberto
50132451Sroberto    unsigned tens_year		: 4;
51132451Sroberto    unsigned unit_year		: 4;
52132451Sroberto    unsigned thou_year		: 4;
53132451Sroberto    unsigned hun_year		: 4;
54132451Sroberto    unsigned char reserved_2[2];
55132451Sroberto} preset_time_reg_t;
56132451Sroberto
57132451Srobertotypedef struct
58132451Sroberto{
59132451Sroberto    unsigned n_d0			: 2;
60132451Sroberto    unsigned antenna_short_stat		: 1; /* 0 = fault */
61132451Sroberto    unsigned antenna_open_stat		: 1; /* 0 = fault */
62132451Sroberto    unsigned n_d1			: 1;
63132451Sroberto    unsigned rate_gen_pulse_stat	: 1;
64132451Sroberto    unsigned time_cmp_pulse_stat	: 1;
65132451Sroberto    unsigned ext_event_stat		: 1;
66132451Sroberto
67132451Sroberto} hw_stat_reg_t;
68132451Sroberto
69132451Srobertotypedef struct
70132451Sroberto{
71132451Sroberto    unsigned tens_us		: 4;
72132451Sroberto    unsigned unit_us		: 4;
73132451Sroberto    unsigned unit_ms		: 4;
74132451Sroberto    unsigned hun_us		: 4;
75132451Sroberto    unsigned char hw_stat;	/* hw_stat_reg_t hw_stat; */
76132451Sroberto    unsigned char reserved_3;
77132451Sroberto
78132451Sroberto    unsigned hun_ms		: 4;
79132451Sroberto    unsigned tens_ms		: 4;
80132451Sroberto    unsigned tens_sec		: 4;
81132451Sroberto    unsigned unit_sec		: 4;
82132451Sroberto    unsigned tens_min		: 4;
83132451Sroberto    unsigned unit_min		: 4;
84132451Sroberto    unsigned tens_hour		: 4;
85132451Sroberto    unsigned unit_hour		: 4;
86132451Sroberto
87132451Sroberto    unsigned tens_day		: 4;
88132451Sroberto    unsigned unit_day		: 4;
89132451Sroberto    unsigned status		: 4;
90132451Sroberto    unsigned hun_day		: 4;
91132451Sroberto    unsigned tens_year		: 4;
92132451Sroberto    unsigned unit_year		: 4;
93132451Sroberto    unsigned thou_year		: 4;
94132451Sroberto    unsigned hun_year		: 4;
95132451Sroberto} time_freeze_reg_t;
96132451Sroberto
97132451Srobertotypedef struct
98132451Sroberto{
99132451Sroberto    unsigned char off_low;
100132451Sroberto    unsigned char off_high;
101132451Sroberto    unsigned char reserved_4[2];
102132451Sroberto} sync_gen_off_reg_t;
103132451Sroberto
104132451Srobertotypedef struct
105132451Sroberto{
106132451Sroberto    unsigned tens_min		: 4;
107132451Sroberto    unsigned unit_min		: 4;
108132451Sroberto    unsigned tens_hour		: 4;
109132451Sroberto    unsigned unit_hour		: 4;
110132451Sroberto    unsigned char sign_ascii;	/* '+' or '-' */
111132451Sroberto    unsigned char reserved_5;
112132451Sroberto} local_off_t;
113132451Sroberto
114132451Sroberto/*
115132451Sroberto *  This structure can be used for both the position freeze
116132451Sroberto *  and position preset registers.
117132451Sroberto */
118132451Srobertotypedef struct
119132451Sroberto{
120132451Sroberto    unsigned lat_tens_degee		: 4;
121132451Sroberto    unsigned lat_unit_degee		: 4;
122132451Sroberto    unsigned filler_0			: 4;
123132451Sroberto    unsigned lat_hun_degree		: 4;
124132451Sroberto    unsigned lat_tens_min		: 4;
125132451Sroberto    unsigned lat_unit_min		: 4;
126132451Sroberto    unsigned char lat_north_south;	/* 'N' or 'S' */
127132451Sroberto
128132451Sroberto    unsigned filler_1			: 4;
129132451Sroberto    unsigned lat_tenth_sec		: 4;
130132451Sroberto    unsigned lat_tens_sec		: 4;
131132451Sroberto    unsigned lat_unit_sec		: 4;
132132451Sroberto    unsigned long_tens_degree		: 4;
133132451Sroberto    unsigned long_unit_degree		: 4;
134132451Sroberto    unsigned filler_2			: 4;
135132451Sroberto    unsigned long_hun_degree		: 4;
136132451Sroberto
137132451Sroberto    unsigned long_tens_min		: 4;
138132451Sroberto    unsigned long_unit_min		: 4;
139132451Sroberto    unsigned char long_east_west;	/* 'E' or 'W' */
140132451Sroberto    unsigned filler_3			: 4;
141132451Sroberto    unsigned long_tenth_sec		: 4;
142132451Sroberto    unsigned long_tens_sec		: 4;
143132451Sroberto    unsigned long_unit_sec		: 4;
144132451Sroberto
145132451Sroberto    unsigned elv_tens_km		: 4;
146132451Sroberto    unsigned elv_unit_km		: 4;
147132451Sroberto    unsigned char elv_sign;		/* '+' or '-' */
148132451Sroberto    unsigned elv_unit_m			: 4;
149132451Sroberto    unsigned elv_tenth_m		: 4;
150132451Sroberto    unsigned elv_hun_m			: 4;
151132451Sroberto    unsigned elv_tens_m			: 4;
152132451Sroberto} pos_reg_t;
153132451Sroberto
154132451Srobertotypedef struct
155132451Sroberto{
156132451Sroberto    unsigned char prn1_tens_units;
157132451Sroberto    unsigned char prn1_reserved;
158132451Sroberto    unsigned char lvl1_tenths_hundredths;
159132451Sroberto    unsigned char lvl1_tens_units;
160132451Sroberto
161132451Sroberto    unsigned char prn2_tens_units;
162132451Sroberto    unsigned char prn2_reserved;
163132451Sroberto    unsigned char lvl2_tenths_hundredths;
164132451Sroberto    unsigned char lvl2_tens_units;
165132451Sroberto
166132451Sroberto    unsigned char prn3_tens_units;
167132451Sroberto    unsigned char prn3_reserved;
168132451Sroberto    unsigned char lvl3_tenths_hundredths;
169132451Sroberto    unsigned char lvl3_tens_units;
170132451Sroberto
171132451Sroberto    unsigned char prn4_tens_units;
172132451Sroberto    unsigned char prn4_reserved;
173132451Sroberto    unsigned char lvl4_tenths_hundredths;
174132451Sroberto    unsigned char lvl4_tens_units;
175132451Sroberto
176132451Sroberto    unsigned char prn5_tens_units;
177132451Sroberto    unsigned char prn5_reserved;
178132451Sroberto    unsigned char lvl5_tenths_hundredths;
179132451Sroberto    unsigned char lvl5_tens_units;
180132451Sroberto
181132451Sroberto    unsigned char prn6_tens_units;
182132451Sroberto    unsigned char prn6_reserved;
183132451Sroberto    unsigned char lvl6_tenths_hundredths;
184132451Sroberto    unsigned char lvl6_tens_units;
185132451Sroberto
186132451Sroberto    unsigned char flag;
187132451Sroberto    unsigned char reserved[3];
188132451Sroberto} sig_levels_t;
189132451Sroberto
190132451Srobertotypedef struct
191132451Sroberto{
192132451Sroberto    unsigned tens_us		: 4;
193132451Sroberto    unsigned unit_us		: 4;
194132451Sroberto    unsigned unit_ms		: 4;
195132451Sroberto    unsigned hun_us		: 4;
196132451Sroberto    unsigned hun_ms		: 4;
197132451Sroberto    unsigned tens_ms		: 4;
198132451Sroberto    unsigned tens_sec		: 4;
199132451Sroberto    unsigned unit_sec		: 4;
200132451Sroberto
201132451Sroberto    unsigned tens_min		: 4;
202132451Sroberto    unsigned unit_min		: 4;
203132451Sroberto    unsigned tens_hour		: 4;
204132451Sroberto    unsigned unit_hour		: 4;
205132451Sroberto    unsigned tens_day		: 4;
206132451Sroberto    unsigned unit_day		: 4;
207132451Sroberto    unsigned stat		: 4;
208132451Sroberto    unsigned hun_day		: 4;
209132451Sroberto
210132451Sroberto    unsigned tens_year		: 4;
211132451Sroberto    unsigned unit_year		: 4;
212132451Sroberto    unsigned thou_year		: 4;
213132451Sroberto    unsigned hun_year		: 4;
214132451Sroberto    unsigned char reserved_5[2];
215132451Sroberto} ext_time_event_reg_t;
216132451Sroberto
217132451Srobertotypedef struct
218132451Sroberto{
219132451Sroberto    unsigned tens_us	: 4;
220132451Sroberto    unsigned unit_us	: 4;
221132451Sroberto    unsigned unit_ms	: 4;
222132451Sroberto    unsigned hun_us	: 4;
223132451Sroberto    unsigned hun_ms	: 4;
224132451Sroberto    unsigned tens_ms	: 4;
225132451Sroberto    unsigned tens_sec	: 4;
226132451Sroberto    unsigned unit_sec	: 4;
227132451Sroberto
228132451Sroberto    unsigned tens_min	: 4;
229132451Sroberto    unsigned unit_min	: 4;
230132451Sroberto    unsigned tens_hour	: 4;
231132451Sroberto    unsigned unit_hour	: 4;
232132451Sroberto    unsigned tens_day	: 4;
233132451Sroberto    unsigned unit_day	: 4;
234132451Sroberto    unsigned mask	: 4;
235132451Sroberto    unsigned hun_day	: 4;
236132451Sroberto} time_cmp_reg_t;
237132451Sroberto
238132451Srobertotypedef struct
239132451Sroberto{
240132451Sroberto    unsigned char err_stat;
241132451Sroberto    unsigned char no_def;
242132451Sroberto    unsigned char oscillator_stat[2];
243132451Sroberto} diag_reg_t;
244132451Sroberto
245132451Srobertotypedef struct
246132451Sroberto{
247132451Sroberto    unsigned res		:2;
248132451Sroberto    unsigned rate_int_mask	:1;
249132451Sroberto    unsigned cmp_int_mask	:1;
250132451Sroberto    unsigned ext_int_mask	:1;
251132451Sroberto    unsigned rate_stat_clr	:1;
252132451Sroberto    unsigned cmp_stat_clr	:1;
253132451Sroberto    unsigned ext_stat_clr	:1;
254132451Sroberto    unsigned char reserved[3];
255132451Sroberto} hw_ctl_reg_t;
256132451Sroberto
257132451Srobertotypedef struct
258132451Sroberto{
259132451Sroberto    unsigned  preset_pos_rdy	:1;
260132451Sroberto    unsigned  sel_pps_ref	:1;
261132451Sroberto    unsigned  sel_gps_ref	:1;
262132451Sroberto    unsigned  sel_time_code	:1;
263132451Sroberto    unsigned  gen_stp_run	:1;
264132451Sroberto    unsigned  preset_time_rdy	:1;
265132451Sroberto    unsigned  dst		:1;
266132451Sroberto    unsigned  mode_sel		:1;
267132451Sroberto
268132451Sroberto    unsigned  ctl_am_dc		:1;
269132451Sroberto    unsigned  reserved		:3;
270132451Sroberto    unsigned  input_code	:4;
271132451Sroberto
272132451Sroberto    unsigned char rate_reserved;
273132451Sroberto
274132451Sroberto    unsigned  rate_flag		:4;
275132451Sroberto    unsigned  rate_reserved1	:4;
276132451Sroberto} conf_reg_t;
277132451Sroberto
278132451Srobertotypedef struct
279132451Sroberto{
280132451Sroberto     unsigned char	mem_reserved[0xf8];
281132451Sroberto
282132451Sroberto     hw_ctl_reg_t	hw_ctl_reg;
283132451Sroberto
284132451Sroberto     time_freeze_reg_t  time_freeze_reg;
285132451Sroberto
286132451Sroberto     pos_reg_t		pos_freeze_reg;
287132451Sroberto
288132451Sroberto     conf_reg_t		conf_reg;
289132451Sroberto
290132451Sroberto     diag_reg_t		diag_reg;
291132451Sroberto
292132451Sroberto     local_off_t	local_offset;
293132451Sroberto
294132451Sroberto     sync_gen_off_reg_t sync_gen_offset;
295132451Sroberto
296132451Sroberto     unsigned char 	reserved[4];
297132451Sroberto
298132451Sroberto     unsigned char 	config_reg2_ctl;
299132451Sroberto
300132451Sroberto     unsigned char      reserved2[11];
301132451Sroberto
302132451Sroberto     time_cmp_reg_t	time_compare_reg;
303132451Sroberto
304132451Sroberto     unsigned char 	reserved3[24];
305132451Sroberto
306132451Sroberto     preset_time_reg_t	preset_time_reg;
307132451Sroberto
308132451Sroberto     pos_reg_t		preset_pos_reg;
309132451Sroberto
310132451Sroberto     ext_time_event_reg_t extern_time_event_reg;
311132451Sroberto
312132451Sroberto     unsigned char 	reserved4[24];
313132451Sroberto
314132451Sroberto     sig_levels_t	signal_levels_reg;
315132451Sroberto
316132451Sroberto     unsigned char	reserved5[12];
317132451Sroberto} tt_mem_space_t;
318132451Sroberto
319132451Sroberto#define TTIME_MEMORY_SIZE 0x200
320132451Sroberto
321132451Sroberto/*
322132451Sroberto *  Defines for register offsets
323132451Sroberto */
324132451Sroberto#define HW_CTL_REG		0x0f8
325132451Sroberto#define TIME_FREEZE_REG		0x0fc
326132451Sroberto#define HW_STAT_REG		0x0fe
327132451Sroberto#define POS_FREEZE_REG		0x108
328132451Sroberto#define CONFIG_REG_1		0x118
329132451Sroberto#define DIAG_REG		0x11c
330132451Sroberto#define LOCAL_OFF_REG		0x120
331132451Sroberto#define SYNC_GEN_OFF_REG	0x124
332132451Sroberto#define CONFIG_REG_2		0x12c
333132451Sroberto#define TIME_CMP_REG		0x138
334132451Sroberto#define PRESET_TIME_REG		0x158
335132451Sroberto#define PRESET_POS_REG		0x164
336132451Sroberto#define EXT_EVENT_REG		0x174
337132451Sroberto#define SIG_LVL_PRN1		0x198
338132451Sroberto#define SIG_LVL_PRN2		0x19c
339132451Sroberto#define SIG_LVL_PRN3		0x1a0
340132451Sroberto#define SIG_LVL_PRN4		0x1a4
341132451Sroberto#define SIG_LVL_PRN5		0x1a8
342132451Sroberto#define SIG_LVL_PRN6		0x1ac
343132451Sroberto#define SIG_LVL_FLAG		0x1b0
344132451Sroberto
345132451Sroberto/*
346132451Sroberto *  Defines for accessing the hardware status register.
347132451Sroberto */
348132451Sroberto#define HW_STAT_ANTENNA_SHORT		0	/* access the antenna short bit */
349132451Sroberto#define HW_STAT_ANTENNA_OPEN		1	/* access the antenna open bit */
350132451Sroberto#define HW_STAT_RATE_GEN_PULSE_STAT	2	/* access the rate gen pulse bit */
351132451Sroberto#define HW_STAT_TIME_CMP_PULSE_STAT	3	/* access the time cmp bit */
352132451Sroberto#define HW_STAT_EXT_EVENT_STAT		4	/* access the external event bit */
353132451Sroberto
354132451Sroberto/*
355132451Sroberto *  Defines for accessing the hardware control register
356132451Sroberto */
357132451Sroberto
358132451Sroberto#define HW_CTL_RATE_INT_MASK		0	/* access rate generator int mask */
359132451Sroberto#define HW_CTL_CMP_INT_MASK		1	/* access compare interrupt mask */
360132451Sroberto#define HW_CTL_EXT_INT_MASK		2	/* access external event interrupt mask */
361132451Sroberto#define HW_CTL_RATE_GEN_INT_CLEAR	3	/* access rate gen. interrupt clear field */
362132451Sroberto#define HW_CTL_TIME_CMP_INT_CLEAR	4	/* access time cmp interrupt clear field */
363132451Sroberto#define HW_CTL_EXT_EVENT_INT_CLEAR	5	/* access external event int clear field */
364132451Sroberto
365132451Sroberto/*
366132451Sroberto *  Defines for configuration register bit fields.
367132451Sroberto */
368132451Sroberto#define PRESET_POS_RDY_BIT		0	/* access the preset pos. rdy. bit */
369132451Sroberto#define SEL_1_PPS_REF_BIT		1	/* access the select 1 pps reference bit */
370132451Sroberto#define SEL_GPS_REF_BIT			2	/* access the select gps reference bit */
371132451Sroberto#define SEL_TIME_CODE_REF_BIT		3	/* access the select time code reference bit */
372132451Sroberto#define GEN_STOP_BIT			4	/* access the generator start/stop bit */
373132451Sroberto#define PRESET_TIME_RDY_BIT		5	/* access the preset time ready bit */
374132451Sroberto#define DST_BIT				6	/* access the DST bit */
375132451Sroberto#define MODE_SEL_BIT			7	/* access the mode select bit */
376132451Sroberto#define AM_DC_BIT			8	/* access the code bits AM/DC bit */
377132451Sroberto#define IN_CODE_SEL_BIT			9	/* access the input code select bit */
378132451Sroberto#define FLAG_BIT			10	/* access the flag bit */
379132451Sroberto
380132451Sroberto/*
381132451Sroberto * The following defines are used to set modes in the
382132451Sroberto * configuration register.
383132451Sroberto */
384132451Sroberto
385132451Sroberto#define CONF_SET_AM			0	/* Set code to AM   */
386132451Sroberto#define CONF_SET_DC			1	/* Set code to DC   */
387132451Sroberto#define CONF_SET_IRIG_B			0	/* Set code IRIG B  */
388132451Sroberto#define CONF_SET_IRIG_A			1	/* Set code IRIG A  */
389132451Sroberto
390132451Sroberto#define CONF_FLAG_DISABLE		0	/* Disable pulse        */
391132451Sroberto#define CONF_FLAG_10K_PPS		1	/* Set rate to 10k PPS  */
392132451Sroberto#define CONF_FLAG_1K_PPS		2	/* Set rate to 1k PPS   */
393132451Sroberto#define CONF_FLAG_100_PPS		3	/* Set rate to 100 PPS  */
394132451Sroberto#define CONF_FLAG_10_PPS		4	/* Set rate to 10 PPS   */
395132451Sroberto#define CONF_FLAG_1_PPS			5	/* Set rate to 1 PPS    */
396132451Sroberto
397132451Sroberto/*
398132451Sroberto *  Defines for read commands
399132451Sroberto */
400132451Sroberto
401132451Sroberto#define TT_RD_FREEZE_REG	0x01
402132451Sroberto#define TT_RD_HW_CTL_REG	0x02
403132451Sroberto#define TT_RD_CNFG_REG		0x03
404132451Sroberto#define TT_RD_DIAG_REG		0x04
405132451Sroberto#define TT_RD_LCL_OFFSET	0x05
406132451Sroberto#define TT_RD_SYNC_GEN_OFF	0x06
407132451Sroberto#define TT_RD_CNFG_REG_2	0x07
408132451Sroberto#define TT_RD_TIME_CMP_REG	0x08
409132451Sroberto#define TT_RD_PRESET_REG	0x09
410132451Sroberto#define TT_RD_EXT_EVNT_REG	0x0a
411132451Sroberto#define TT_RD_SIG_LVL_REG	0x0b
412132451Sroberto
413132451Sroberto/*
414132451Sroberto *  Defines for write commands
415132451Sroberto */
416132451Sroberto#define TT_WRT_FREEZE_REG	0x0c
417132451Sroberto#define TT_WRT_HW_CTL_REG	0x0d
418132451Sroberto#define TT_WRT_CNFG_REG		0x0e
419132451Sroberto#define TT_WRT_DIAG_REG		0x0f
420132451Sroberto#define TT_WRT_LCL_OFFSET	0x10
421132451Sroberto#define TT_WRT_SYNC_GEN_OFF	0x11
422132451Sroberto#define TT_WRT_CNFG_REG_2	0x12
423132451Sroberto#define TT_WRT_TIME_CMP_REG	0x13
424132451Sroberto#define TT_WRT_PRESET_REG	0x14
425132451Sroberto#define TT_WRT_EXT_EVNT_REG	0x15
426132451Sroberto#define TT_WRT_SIG_LVL_REG	0x16
427132451Sroberto
428132451Sroberto/*
429132451Sroberto *  Define the length of the buffers to move (in 32 bit words).
430132451Sroberto */
431132451Sroberto
432132451Sroberto#define HW_CTL_REG_LEN		1
433132451Sroberto#define CNFG_REG_1_LEN		1
434132451Sroberto#define DIAG_REG_LEN		1
435132451Sroberto#define LCL_OFFSET_LEN		1
436132451Sroberto#define SYNC_GEN_OFF_LEN	1
437132451Sroberto#define CNFG_REG_2_LEN		1
438132451Sroberto
439132451Sroberto#define TIME_CMP_REG_LEN	2
440132451Sroberto#define PRESET_TIME_REG_LEN	3
441132451Sroberto#define PRESET_POS_REG_LEN	4
442132451Sroberto#define PRESET_REG_LEN		(PRESET_TIME_REG_LEN+PRESET_POS_REG_LEN)
443132451Sroberto#define TIME_FREEZE_REG_LEN	3
444132451Sroberto#define POSN_FREEZE_REG_LEN	4
445132451Sroberto#define FREEZE_REG_LEN		(TIME_FREEZE_REG_LEN+POSN_FREEZE_REG_LEN)
446132451Sroberto#define EXT_EVNT_REG_LEN	3
447132451Sroberto#define	SIG_LVL_REG_LEN		7
448132451Sroberto#define	GPS_TIME_LEN		7
449132451Sroberto
450132451Sroberto/*
451132451Sroberto * Define BCD - INT - BCD macros.
452132451Sroberto */
453132451Sroberto
454132451Sroberto#define BCDTOI(a)	( ( ( ( (a) & 0xf0 ) >> 4 ) * 10 )  + ( (a) & 0x0f ) )
455132451Sroberto#define ITOBCD(a)	( ( ( (           (a) ) / 10) << 4 ) + ( (           (a) ) % 10) )
456132451Sroberto#define LTOBCD(a)	( ( ( ( (uint64_t)(a) ) / 10) << 4 ) + ( ( (uint64_t)(a) ) % 10) )
457132451Sroberto
458132451Srobertoextern int  init_560                  (                      );
459132451Srobertoextern void close_560                 (                      );
460132451Srobertoextern int  write_hw_ctl_reg          (hw_ctl_reg_t         *);
461132451Srobertoextern int  write_hw_ctl_reg_bitfield (int, int              );
462132451Srobertoextern int  read_conf_reg             (conf_reg_t           *);
463132451Srobertoextern int  read_conf_reg_bitfield    (int                   );
464132451Srobertoextern int  write_conf_reg            (conf_reg_t           *);
465132451Srobertoextern int  write_conf_reg_bitfield   (int, unsigned char    );
466132451Srobertoextern int  read_hw_stat_reg_bitfield (int                   );
467132451Srobertoextern int  read_local_offset_reg     (local_off_t          *);
468132451Srobertoextern int  write_local_offset_reg    (local_off_t          *);
469132451Srobertoextern int  read_sync_offset_reg      (sync_gen_off_reg_t   *);
470132451Srobertoextern int  write_sync_offset_reg     (sync_gen_off_reg_t   *);
471132451Srobertoextern int  read_time_cmp_reg         (time_cmp_reg_t       *);
472132451Srobertoextern int  write_time_cmp_reg        (time_cmp_reg_t       *);
473132451Srobertoextern int  read_preset_time_reg      (preset_time_reg_t    *);
474132451Srobertoextern int  write_preset_time_reg     (preset_time_reg_t    *);
475132451Srobertoextern int  reset_time                (                      );
476132451Srobertoextern int  set_new_time              (preset_time_reg_t    *);
477132451Srobertoextern int  read_preset_position_reg  (pos_reg_t            *);
478132451Srobertoextern int  write_preset_position_reg (pos_reg_t            *);
479132451Srobertoextern int  read_external_event_reg   (ext_time_event_reg_t *);
480132451Srobertoextern int  read_signal_level_reg     (sig_levels_t         *);
481132451Srobertoextern int  freeze_time               (                      );
482132451Srobertoextern int  snapshot_time             (time_freeze_reg_t    *);
483132451Srobertoextern int  read_position_freeze_reg  (pos_reg_t            *);
484132451Srobertoextern int  read_diag_reg             (diag_reg_t           *);
485132451Sroberto
486132451Sroberto#ifdef CPP
487132451Sroberto}
488132451Sroberto#endif
489132451Sroberto#endif
490