original files of m241
This commit is contained in:
@@ -0,0 +1,442 @@
|
||||
/* tsnClkLib.h - Wind River tsn clock library */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2017 Wind River Systems, Inc.
|
||||
*
|
||||
* The right to copy, distribute, modify or otherwise make use
|
||||
* of this software may be licensed only pursuant to the terms
|
||||
* of an applicable Wind River license agreement.
|
||||
*/
|
||||
/*
|
||||
modification history
|
||||
--------------------
|
||||
25jan17,xxy Init version
|
||||
*/
|
||||
|
||||
#ifndef __INCtsnClkLibh
|
||||
#define __INCtsnClkLibh
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 1 DESCRIPTION
|
||||
****************************************************************************
|
||||
* Public header file of TSN clock.
|
||||
*/
|
||||
|
||||
/*
|
||||
DESCRIPTION
|
||||
This library contains the APIs provided by the WindRiver TSN clock.
|
||||
INCLUDE FILES: base/b_struct_timespec.h
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 2 CONFIGURATION
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 3 INCLUDE FILES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/* typedef struct timespec */
|
||||
#include <base/b_struct_timespec.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 4 DEFINES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/*
|
||||
*===========================================================================
|
||||
* release
|
||||
*===========================================================================
|
||||
*/
|
||||
|
||||
|
||||
#define BILLION 1000000000 /* 1000 million nanoseconds / second */
|
||||
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* 5 TYPES
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockIdGet - get a TSN 1588 timer device ID.
|
||||
*
|
||||
* This routine get a timer ID using the 1588 clock timer for a timing base.
|
||||
* It returns a value in <pClockId> that identifies the timer in subsequent timer
|
||||
* requests
|
||||
*
|
||||
* The <timerNo> argument, refer to the 1588 clock device unit,0 or 1
|
||||
* The timestamp device can be used independently to get the 1588 clock.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <pName>
|
||||
* A pointer to the ethernet device name.
|
||||
* \i <unit>
|
||||
* Ethernet device index.
|
||||
* \i <timerNo>
|
||||
* 1588 clock timer number(0/1).
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* clock id, or 0 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
* SEE ALSO: tsnTimerAllocate(), tsnClockConnect(), tsnClockDisable(),
|
||||
* tsnClockRateSet(), tsnClockEnable(), tsnTimerRelease()
|
||||
*
|
||||
* SYNOPSIS
|
||||
* clockid_t tsnClockIdGet
|
||||
* (
|
||||
* char *pName,
|
||||
* int unit,
|
||||
* int timerNo
|
||||
* )
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
clockid_t tsnClockIdGet
|
||||
(
|
||||
char *pName, /*eth device name */
|
||||
int unit, /*eth device index */
|
||||
int timerNo /* 1588 clock timer nuber */
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockTimeGet - get the current time of the tsn clock
|
||||
*
|
||||
* This routine is to get the current time of the tsn clock.
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \i <tp>
|
||||
* A pointer to store current tsn clock time
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockTimeGet
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* struct timespec * tp
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockTimeGet
|
||||
(
|
||||
clockid_t clock_id, /* clock ID */
|
||||
struct timespec *tp /* where to store current time */
|
||||
);
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnTimerAllocate - Allocate a TSN 1588 timer.
|
||||
*
|
||||
* This routine allocate a timer using the 1588 clock for a timing base, and if
|
||||
* it is the first time to use the timer or the timer has been released by
|
||||
* tsnTimerRelease(), the timer has to be allocated first by tsnTimerAllocate()
|
||||
* before using the timer
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR) if the timer has already been allocated or the unit
|
||||
* number is invalid.
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
* SEE ALSO: tsnClockConnect(), tsnClockDisable(),tsnClockRateSet(),
|
||||
* tsnClockEnable(), tsnTimerRelease()
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnTimerAllocate
|
||||
* (
|
||||
* clockid_t clock_id
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnTimerAllocate
|
||||
(
|
||||
clockid_t clock_id /* 1588 time clock ID */
|
||||
);
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnTimerRelease - Release a TSN 1588 timer
|
||||
*
|
||||
* This routine Release a timer using the 1588 clock for a timing base.When a
|
||||
* a timer released, tsnTimerAllocate() need to be callled first before using
|
||||
* the timer.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
* SEE ALSO: tsnTimerAllocate(), tsnClockConnect(), tsnClockDisable(),
|
||||
* tsnClockRateSet(), tsnClockEnable()
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnTimerRelease
|
||||
* (
|
||||
* clockid_t clock_id
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
STATUS tsnTimerRelease
|
||||
(
|
||||
clockid_t clock_id /* 1588 time clock ID */
|
||||
);
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockConnect - connect a routine to the TSN 1588 clock cyclical(ticks)
|
||||
* or one shot interrupt.
|
||||
*
|
||||
* This routine specifies the interrupt service routine to be called at
|
||||
* each TSN 1588 clock cyclical(tick) or one shot interrupt. It does not
|
||||
* enable TSN 1588 clock interrupts. The timer should be first allocated before
|
||||
* doing the connection.
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \i <routine>
|
||||
* A pointer for the interrupt service routine.
|
||||
* \i <arg>
|
||||
* A value for the parameter of interrupt service routine.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockConnect
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* FUNCPTR routine,
|
||||
* _Vx_usr_arg_t arg
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockConnect
|
||||
(
|
||||
clockid_t clock_id, /* clock ID */
|
||||
FUNCPTR routine, /* routine called at each sys1588 clock interrupt */
|
||||
_Vx_usr_arg_t arg /* argument to TSN 1588 clock interrupt routine */
|
||||
);
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockDisable - turn off TSN 1588 clock cyclical(ticks) interrupts
|
||||
*
|
||||
* This routine disables TSN 1588 clock cyclical(ticks) interrupts.
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockDisable
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockDisable
|
||||
(
|
||||
clockid_t clock_id /* clock ID */
|
||||
);
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockEnable - turn on TSN 1588 clock cyclical or one shot interrupts
|
||||
*
|
||||
* This routine enables TSN 1588 clock cyclical or one shot interrupts.
|
||||
* If the clock rate is set to zero, it enable the one shot time interrupt,
|
||||
* otherwise enable cyclical interrupt.
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer .
|
||||
* \i <launch>
|
||||
* A pointer to the absolute time for start of the interrupt set by tsnClockConnect
|
||||
* if launch is NULL, start interrup at next second with zero ns
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockEnable
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* struct timespec * launch
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockEnable
|
||||
(
|
||||
clockid_t clock_id, /* clock ID */
|
||||
struct timespec * launch /* the absolute time for start of the interrupt */
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockRateGet - get the TSN 1588 cyclical(ticks) clock rate
|
||||
*
|
||||
* This routine returns the interrupt rate of the TSN 1588 cyclical(ticks) clock.
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer to be close.
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* ticks Per Second, or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockRateGet
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockRateGet
|
||||
(
|
||||
clockid_t clock_id /* clock ID */
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* tsnClockRateSet - set the TSN 1588 cyclical(ticks) clock rate
|
||||
*
|
||||
* This routine sets the interrupt rate of the TSN 1588 cyclical clock,It does
|
||||
* not enable TSN 1588 clock interrupts.If ticksPerSecond is set to be zero,one
|
||||
* shot interrupt would be generated by calling tsnClockEnable().
|
||||
*
|
||||
*
|
||||
* Parameters:
|
||||
* \is
|
||||
* \i <clock_id>
|
||||
* A value that identifies the timer ID of 1588 timer
|
||||
* \i <ticksPerSecond>
|
||||
* Number of ticks per second,to use one shot interrupt set to be zero
|
||||
* \ie
|
||||
*
|
||||
* RETURNS:
|
||||
* 0 (OK), or -1 (ERROR)
|
||||
*
|
||||
* ERRNO:
|
||||
*
|
||||
* SYNOPSIS
|
||||
* STATUS tsnClockRateSet
|
||||
* (
|
||||
* clockid_t clock_id,
|
||||
* UINT32 ticksPerSecond
|
||||
* )
|
||||
*
|
||||
*/
|
||||
|
||||
STATUS tsnClockRateSet
|
||||
(
|
||||
clockid_t clock_id, /* clock ID */
|
||||
UINT32 ticksPerSecond /* number of clock interrupts per second */
|
||||
);
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
****************************************************************************
|
||||
* END OF FILE
|
||||
****************************************************************************
|
||||
*/
|
||||
Reference in New Issue
Block a user