1/******************************************************************************
2 *
3 *  Copyright (C) 2001-2012 Broadcom Corporation
4 *
5 *  Licensed under the Apache License, Version 2.0 (the "License");
6 *  you may not use this file except in compliance with the License.
7 *  You may obtain a copy of the License at:
8 *
9 *  http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 *
17 ******************************************************************************/
18
19/******************************************************************************
20 *
21 *  This file contains timer definitions from WIDCOMM's Universal Embedded
22 *  Drivers API.
23 *
24 ******************************************************************************/
25
26#ifndef UTIMER_H
27#define UTIMER_H
28
29/*******************************************************************************
30** Timer APIs
31*******************************************************************************/
32
33/**** Timer IDs ****/
34
35#define UTIMER_ID_1               0
36#define UTIMER_ID_2               1
37#define UTIMER_ID_3               2
38#define UTIMER_ID_4               3
39
40#define UTIMER_NUM_TIMERS         4     /* Number of timers supported */
41
42typedef UINT8 tUTIMER_ID;
43
44/**** Timer types ****/
45
46#define UTIMER_TYPE_PERIODIC      0
47#define UTIMER_TYPE_ONESHOT       1
48
49typedef UINT8 tUTIMER_TYPE;
50
51
52/**** Timer time ****/
53
54typedef UINT32 tUTIMER_TIME;
55
56
57/**** Timer configuration ****/
58
59typedef struct
60{
61    tUTIMER_TIME period;
62    tUTIMER_TYPE type;
63} tUTIMER_CFG;
64
65
66/**** Timer feature types ****/
67#define UTIMER_FEAT_ID_1          0
68#define UTIMER_FEAT_ID_2          1
69#define UTIMER_FEAT_ID_3          2
70#define UTIMER_FEAT_ID_4          3
71#define UTIMER_FEAT_TYPE_PERIODIC 4
72#define UTIMER_FEAT_TYPE_ONESHOT  5
73
74typedef UINT8 tUTIMER_FEATURE;
75
76
77/**** Callback for timer expiration ****/
78typedef void (tUTIMER_CBACK)(tUTIMER_ID);
79
80
81/*******************************************************************************
82** Function Prototypes
83*******************************************************************************/
84#ifdef __cplusplus
85extern "C" {
86#endif
87
88UDRV_API extern void    UTIMER_Init(void *);
89UDRV_API extern void    UTIMER_Start(tUTIMER_ID, tUTIMER_CFG *, tUTIMER_CBACK *);
90UDRV_API extern void    UTIMER_Read(tUTIMER_ID, tUTIMER_TIME *);
91UDRV_API extern void    UTIMER_Stop(tUTIMER_ID);
92UDRV_API extern BOOLEAN UTIMER_Feature(tUTIMER_FEATURE);
93
94#ifdef __cplusplus
95}
96#endif
97
98#endif /* UTIMER_H */
99